From eed61440429f35491be36640ce56a9a11196e9a5 Mon Sep 17 00:00:00 2001 From: Whatstone <166147148+whatston3@users.noreply.github.com> Date: Sun, 23 Aug 2026 20:08:30 +0000 Subject: [PATCH 001/197] Radial Sorting: add explicit order field (#45445) * allow for manual radial ordering * use order, not i * one third of a radial menu test * add a unit test for the radial menu comparer * Fildrance's suggestions, remove unused compare fn Co-authored-by: Fildrance <14752842+Fildrance@users.noreply.github.com> * comment order, return SortOptions to private I was planning to use this in an integration test, but settled on a unit test. * comments! --------- Co-authored-by: Fildrance <14752842+Fildrance@users.noreply.github.com> --- .../ChangelingTransformBoundUserInterface.cs | 13 ++-- .../RCD/RCDMenuBoundUserInterface.cs | 21 +++--- .../UI/DoorRemoteBoundUserInterface.cs | 3 +- .../StationAi/StationAiBoundUserInterface.cs | 5 +- .../StationAi/StationAiSystem.Airlock.cs | 9 ++- .../StationAi/StationAiSystem.Light.cs | 3 +- .../Controls/RadialMenuOptionComparer.cs | 46 +++++++++++++ .../Controls/SimpleRadialMenu.xaml.cs | 34 +++++---- .../Systems/Emotes/EmotesUIController.cs | 2 +- Content.Shared/RCD/RCDPrototype.cs | 8 +++ .../StationAi/SharedStationAiSystem.Held.cs | 27 +++++++- .../RadialMenuOptionComparerTest.cs | 69 +++++++++++++++++++ Resources/Prototypes/RCD/rcd.yml | 63 +++++++++++------ 13 files changed, 239 insertions(+), 64 deletions(-) create mode 100644 Content.Client/UserInterface/Controls/RadialMenuOptionComparer.cs create mode 100644 Content.Tests/Client/UserInterface/RadialMenuOptionComparerTest.cs diff --git a/Content.Client/Changeling/UI/ChangelingTransformBoundUserInterface.cs b/Content.Client/Changeling/UI/ChangelingTransformBoundUserInterface.cs index 5f96b536d9..2b0c5e34e1 100644 --- a/Content.Client/Changeling/UI/ChangelingTransformBoundUserInterface.cs +++ b/Content.Client/Changeling/UI/ChangelingTransformBoundUserInterface.cs @@ -33,12 +33,12 @@ public sealed partial class ChangelingTransformBoundUserInterface(EntityUid owne if (!EntMan.TryGetComponent(Owner, out var lingIdentity)) return; - + var manualDrop = true; if (EntMan.TryGetComponent(Owner, out var lingTransform)) manualDrop = lingTransform.ManualDrop; - + var models = ConvertToButtons(lingIdentity.ConsumedIdentities, lingIdentity.CurrentIdentity, manualDrop); _menu.SetButtons(models); @@ -64,7 +64,7 @@ public sealed partial class ChangelingTransformBoundUserInterface(EntityUid owne IconSpecifier = RadialMenuIconSpecifier.With(identity.Identity.Value), ToolTip = Loc.GetString("changeling-transform-bui-select-entity", ("entity", identity.Identity)), BackgroundColor = (currentIdentity == identity.Identity) ? SelectedOptionBackground : null, // mark as selected - HoverBackgroundColor = (currentIdentity == identity.Identity) ? SelectedOptionHoverBackground : null + HoverBackgroundColor = (currentIdentity == identity.Identity) ? SelectedOptionHoverBackground : null, }; buttons.Add(option); @@ -79,18 +79,19 @@ public sealed partial class ChangelingTransformBoundUserInterface(EntityUid owne ? Loc.GetString("changeling-transform-bui-drop-identity-cannot-drop") : Loc.GetString("changeling-transform-bui-drop-identity-entity", ("entity", identity.Identity)), BackgroundColor = (currentIdentity == identity.Identity) ? DisabledOptionBackground : null, // cannot drop your current identity - HoverBackgroundColor = (currentIdentity == identity.Identity) ? DisabledOptionHoverBackground : null + HoverBackgroundColor = (currentIdentity == identity.Identity) ? DisabledOptionHoverBackground : null, }; dropButtons.Add(dropOption); } - + if (canDrop) { // Menu category for dropping identities. var dropMenuButton = new RadialMenuNestedLayerOption(dropButtons) { IconSpecifier = RadialMenuIconSpecifier.With(new SpriteSpecifier.Texture(new("/Textures/Interface/VerbIcons/delete.svg.192dpi.png"))), - ToolTip = Loc.GetString("changeling-transform-bui-drop-identity-menu") + ToolTip = Loc.GetString("changeling-transform-bui-drop-identity-menu"), + Order = 0, // Explicit first option. }; buttons.Add(dropMenuButton); } diff --git a/Content.Client/RCD/RCDMenuBoundUserInterface.cs b/Content.Client/RCD/RCDMenuBoundUserInterface.cs index 8b0ddf7fcb..b0f6a48719 100644 --- a/Content.Client/RCD/RCDMenuBoundUserInterface.cs +++ b/Content.Client/RCD/RCDMenuBoundUserInterface.cs @@ -22,14 +22,14 @@ public sealed partial class RCDMenuBoundUserInterface : BoundUserInterface private const string TopLevelActionCategory = "Main"; - private static readonly Dictionary PrototypesGroupingInfo + private static readonly Dictionary PrototypesGroupingInfo = new() { - ["WallsAndFlooring"] = ("rcd-component-walls-and-flooring", new SpriteSpecifier.Texture(new ResPath("/Textures/Interface/Radial/RCD/walls_and_flooring.png"))), - ["WindowsAndGrilles"] = ("rcd-component-windows-and-grilles", new SpriteSpecifier.Texture(new ResPath("/Textures/Interface/Radial/RCD/windows_and_grilles.png"))), - ["Airlocks"] = ("rcd-component-airlocks", new SpriteSpecifier.Texture(new ResPath("/Textures/Interface/Radial/RCD/airlocks.png"))), - ["Electrical"] = ("rcd-component-electrical", new SpriteSpecifier.Texture(new ResPath("/Textures/Interface/Radial/RCD/multicoil.png"))), - ["Lighting"] = ("rcd-component-lighting", new SpriteSpecifier.Texture(new ResPath("/Textures/Interface/Radial/RCD/lighting.png"))), + ["WallsAndFlooring"] = ("rcd-component-walls-and-flooring", 0, new SpriteSpecifier.Texture(new ResPath("/Textures/Interface/Radial/RCD/walls_and_flooring.png"))), + ["WindowsAndGrilles"] = ("rcd-component-windows-and-grilles", 1, new SpriteSpecifier.Texture(new ResPath("/Textures/Interface/Radial/RCD/windows_and_grilles.png"))), + ["Airlocks"] = ("rcd-component-airlocks", 2, new SpriteSpecifier.Texture(new ResPath("/Textures/Interface/Radial/RCD/airlocks.png"))), + ["Electrical"] = ("rcd-component-electrical", 3, new SpriteSpecifier.Texture(new ResPath("/Textures/Interface/Radial/RCD/multicoil.png"))), + ["Lighting"] = ("rcd-component-lighting", 4, new SpriteSpecifier.Texture(new ResPath("/Textures/Interface/Radial/RCD/lighting.png"))), }; private SimpleRadialMenu? _menu; @@ -65,7 +65,8 @@ public sealed partial class RCDMenuBoundUserInterface : BoundUserInterface var topLevelActionOption = new RadialMenuActionOption(HandleMenuOptionClick, prototype) { IconSpecifier = RadialMenuIconSpecifier.With(prototype.Sprite), - ToolTip = GetTooltip(prototype) + ToolTip = GetTooltip(prototype), + Order = prototype.MenuOrder, }; topLevelActions.Add(topLevelActionOption); continue; @@ -83,7 +84,8 @@ public sealed partial class RCDMenuBoundUserInterface : BoundUserInterface var actionOption = new RadialMenuActionOption(HandleMenuOptionClick, prototype) { IconSpecifier = RadialMenuIconSpecifier.With(prototype.Sprite), - ToolTip = GetTooltip(prototype) + ToolTip = GetTooltip(prototype), + Order = prototype.MenuOrder, }; list.Add(actionOption); } @@ -96,7 +98,8 @@ public sealed partial class RCDMenuBoundUserInterface : BoundUserInterface models[i] = new RadialMenuNestedLayerOption(list) { IconSpecifier = RadialMenuIconSpecifier.With(groupInfo.Sprite), - ToolTip = Loc.GetString(groupInfo.Tooltip) + ToolTip = Loc.GetString(groupInfo.Tooltip), + Order = groupInfo.Order, }; i++; } diff --git a/Content.Client/Remotes/UI/DoorRemoteBoundUserInterface.cs b/Content.Client/Remotes/UI/DoorRemoteBoundUserInterface.cs index d2ed89c100..3c19858745 100644 --- a/Content.Client/Remotes/UI/DoorRemoteBoundUserInterface.cs +++ b/Content.Client/Remotes/UI/DoorRemoteBoundUserInterface.cs @@ -47,7 +47,8 @@ public sealed class DoorRemoteBoundUserInterface(EntityUid owner, Enum uiKey) : IconSpecifier = RadialMenuIconSpecifier.With(modeOption.Icon), ToolTip = Loc.GetString(modeOption.Tooltip), BackgroundColor = optionCustomColor, - HoverBackgroundColor = optionHoverCustomColor + HoverBackgroundColor = optionHoverCustomColor, + Order = i }; options.Add(option); } diff --git a/Content.Client/Silicons/StationAi/StationAiBoundUserInterface.cs b/Content.Client/Silicons/StationAi/StationAiBoundUserInterface.cs index a59f3b578b..c72139ef05 100644 --- a/Content.Client/Silicons/StationAi/StationAiBoundUserInterface.cs +++ b/Content.Client/Silicons/StationAi/StationAiBoundUserInterface.cs @@ -19,7 +19,7 @@ public sealed class StationAiBoundUserInterface(EntityUid owner, Enum uiKey) : B _menu.Track(Owner); var buttonModels = ConvertToButtons(ev.Actions); _menu.SetButtons(buttonModels); - + _menu.Open(); } @@ -32,7 +32,8 @@ public sealed class StationAiBoundUserInterface(EntityUid owner, Enum uiKey) : B models[i] = new RadialMenuActionOption(HandleRadialMenuClick, action.Event) { IconSpecifier = RadialMenuIconSpecifier.With(action.Sprite), - ToolTip = action.Tooltip + ToolTip = action.Tooltip, + Order = action.Order, }; } diff --git a/Content.Client/Silicons/StationAi/StationAiSystem.Airlock.cs b/Content.Client/Silicons/StationAi/StationAiSystem.Airlock.cs index d5bc764b34..f98868886c 100644 --- a/Content.Client/Silicons/StationAi/StationAiSystem.Airlock.cs +++ b/Content.Client/Silicons/StationAi/StationAiSystem.Airlock.cs @@ -30,7 +30,8 @@ public sealed partial class StationAiSystem Event = new StationAiBoltEvent { Bolted = !ent.Comp.BoltsDown, - } + }, + Order = 1, } ); } @@ -49,7 +50,8 @@ public sealed partial class StationAiSystem Event = new StationAiEmergencyAccessEvent { EmergencyAccess = !ent.Comp.EmergencyAccess, - } + }, + Order = 2, } ); } @@ -68,7 +70,8 @@ public sealed partial class StationAiSystem Event = new StationAiElectrifiedEvent { Electrified = !ent.Comp.Enabled, - } + }, + Order = 3, } ); } diff --git a/Content.Client/Silicons/StationAi/StationAiSystem.Light.cs b/Content.Client/Silicons/StationAi/StationAiSystem.Light.cs index cf2f613620..bc2ecf5a3c 100644 --- a/Content.Client/Silicons/StationAi/StationAiSystem.Light.cs +++ b/Content.Client/Silicons/StationAi/StationAiSystem.Light.cs @@ -26,7 +26,8 @@ public sealed partial class StationAiSystem Event = new StationAiLightEvent() { Enabled = !toggle.Activated - } + }, + Order = 4, }); } } diff --git a/Content.Client/UserInterface/Controls/RadialMenuOptionComparer.cs b/Content.Client/UserInterface/Controls/RadialMenuOptionComparer.cs new file mode 100644 index 0000000000..87de05783d --- /dev/null +++ b/Content.Client/UserInterface/Controls/RadialMenuOptionComparer.cs @@ -0,0 +1,46 @@ +namespace Content.Client.UserInterface.Controls; + +/// +/// A class to compare radial menu options. +/// Orders options in ascending order (null last!), then alphabetical tooltip (null last!). +/// +public sealed class RadialMenuOptionComparer : IComparer +{ + /// + /// Compares two RadialMenuOptionBase. + /// + /// + public int Compare(RadialMenuOptionBase? x, RadialMenuOptionBase? y) + { + if (ReferenceEquals(x, y)) + return 0; + + if (y == null) + return -1; + + if (x == null) + return 1; + + // First sort by order, then by tooltip. + // Any non-null order value comes before null. + if (y.Order != x.Order) + { + if (y?.Order is null) + return -1; + + if (x?.Order is null) + return 1; + + return x.Order < y.Order ? -1 : 1; + } + + // Sort by tooltip: non-null order values come before null ones. + if (y?.ToolTip is null) + return -1; + + if (x?.ToolTip is null) + return 1; + + return string.Compare(x.ToolTip, y.ToolTip, StringComparison.Ordinal); + } +} diff --git a/Content.Client/UserInterface/Controls/SimpleRadialMenu.xaml.cs b/Content.Client/UserInterface/Controls/SimpleRadialMenu.xaml.cs index bbd52a1cf9..a97b781990 100644 --- a/Content.Client/UserInterface/Controls/SimpleRadialMenu.xaml.cs +++ b/Content.Client/UserInterface/Controls/SimpleRadialMenu.xaml.cs @@ -16,6 +16,8 @@ namespace Content.Client.UserInterface.Controls; [GenerateTypedNameReferences] public sealed partial class SimpleRadialMenu : RadialMenu { + static readonly private RadialMenuOptionComparer Comparer = new(); + private EntityUid? _attachMenuToEntity; [Dependency] private IClyde _clyde = default!; @@ -86,13 +88,13 @@ public sealed partial class SimpleRadialMenu : RadialMenu switch (models) { case RadialMenuOptionBase[] asArray: - Array.Sort(asArray, CompareByTooltip); + Array.Sort(asArray, Comparer); return asArray; case List asList: - asList.Sort(CompareByTooltip); + asList.Sort(Comparer); return asList; default: - return models.OrderBy(x => x.ToolTip); + return models.Order(Comparer); } } @@ -251,20 +253,6 @@ public sealed partial class SimpleRadialMenu : RadialMenu } } - private static int CompareByTooltip(RadialMenuOptionBase x, RadialMenuOptionBase y) - { - if (ReferenceEquals(x, y)) - return 0; - - if (y?.ToolTip is null) - return 1; - - if (x?.ToolTip is null) - return -1; - - return string.Compare(x.ToolTip, y.ToolTip, StringComparison.Ordinal); - } - #region target entity tracking protected override void FrameUpdate(FrameEventArgs args) @@ -350,14 +338,24 @@ public sealed record RadialMenuEntityPrototypeIconSpecifier(EntProtoId ProtoId) /// Container for common options for radial menu button. public abstract class RadialMenuOptionBase { - /// Tooltip to be displayed when button is hovered. + /// + /// Tooltip to be displayed when button is hovered. + /// Used for ordering if no order is given. + /// public string? ToolTip { get; init; } + /// + /// The relative order of the option in the menu. + /// Lower values will be placed before higher values, and any null values will be ordered after. + /// + public int? Order { get; init; } + /// /// Color for button background. /// Is used only with sector radial (). /// public Color? BackgroundColor { get; set; } + /// /// Color for button background when it is hovered. /// Is used only with sector radial (). diff --git a/Content.Client/UserInterface/Systems/Emotes/EmotesUIController.cs b/Content.Client/UserInterface/Systems/Emotes/EmotesUIController.cs index ddd2692b96..6417dfa5bc 100644 --- a/Content.Client/UserInterface/Systems/Emotes/EmotesUIController.cs +++ b/Content.Client/UserInterface/Systems/Emotes/EmotesUIController.cs @@ -140,7 +140,7 @@ public sealed partial class EmotesUIController : UIController, IOnStateChanged> emotesByCategory = new(); foreach (var emote in emotePrototypes) { - if(emote.Category == EmoteCategory.Invalid) + if (emote.Category == EmoteCategory.Invalid) continue; // only valid emotes that have ways to be triggered by chat and player have access / no restriction on diff --git a/Content.Shared/RCD/RCDPrototype.cs b/Content.Shared/RCD/RCDPrototype.cs index 67c2f839f4..ba9c93251d 100644 --- a/Content.Shared/RCD/RCDPrototype.cs +++ b/Content.Shared/RCD/RCDPrototype.cs @@ -124,6 +124,14 @@ public sealed partial class RCDPrototype : IPrototype /// [DataField, ViewVariables(VVAccess.ReadOnly)] public RcdRotation Rotation { get; private set; } = RcdRotation.User; + + /// + /// The relative order to use in the rotary menu. + /// Lower numbers appear before higher numbers, which appear before null. + /// Defaults to null. + /// + [DataField] + public int? MenuOrder { get; private set; } } public enum RcdMode : byte diff --git a/Content.Shared/Silicons/StationAi/SharedStationAiSystem.Held.cs b/Content.Shared/Silicons/StationAi/SharedStationAiSystem.Held.cs index 13ec05762a..4c8859cfba 100644 --- a/Content.Shared/Silicons/StationAi/SharedStationAiSystem.Held.cs +++ b/Content.Shared/Silicons/StationAi/SharedStationAiSystem.Held.cs @@ -9,6 +9,7 @@ using System.Diagnostics.CodeAnalysis; namespace Content.Shared.Silicons.StationAi; +// Interaction handlers between the AI's held entity (its player-controlled entity within the frame) and the world. public abstract partial class SharedStationAiSystem { /* @@ -115,7 +116,7 @@ public abstract partial class SharedStationAiSystem return; ev.Event.User = ev.Actor; - RaiseLocalEvent(target.Value, (object) ev.Event); + RaiseLocalEvent(target.Value, (object)ev.Event); } private void OnMessageAttempt(Entity ent, ref BoundUserInterfaceMessageAttempt ev) @@ -220,11 +221,25 @@ public sealed class StationAiRadialMessage : BoundUserInterfaceMessage /// public sealed class StationAiRadial : BaseStationAiAction { + /// + /// The sprite to use as the icon for this menu item. + /// public SpriteSpecifier? Sprite; + /// + /// The string to display when the item is selected. + /// public string? Tooltip; + /// + /// The event type to raise when this action is selected. + /// public BaseStationAiAction Event = default!; + + /// + /// The relative order to show this item in the menu. + /// + public int? Order; } /// @@ -234,20 +249,26 @@ public sealed class StationAiRadial : BaseStationAiAction [Serializable, NetSerializable] public abstract class BaseStationAiAction { - [field:NonSerialized] + [field: NonSerialized] public EntityUid User { get; set; } } -// No idea if there's a better way to do this. /// /// Grab actions possible for an AI on the target entity. /// [ByRefEvent] public record struct GetStationAiRadialEvent() { + /// + /// The actions this interaction supports. + /// Handlers should add their own actions here. + /// public List Actions = new(); } +/// +/// Interface keys for the radial AI menu. +/// [Serializable, NetSerializable] public enum AiUi : byte { diff --git a/Content.Tests/Client/UserInterface/RadialMenuOptionComparerTest.cs b/Content.Tests/Client/UserInterface/RadialMenuOptionComparerTest.cs new file mode 100644 index 0000000000..f7a8eafc85 --- /dev/null +++ b/Content.Tests/Client/UserInterface/RadialMenuOptionComparerTest.cs @@ -0,0 +1,69 @@ +using System; +using Content.Client.UserInterface.Controls; +using NUnit.Framework; +using Robust.UnitTesting; + +namespace Content.Tests.Client.UserInterface; + +[TestFixture] +[TestOf(typeof(RadialMenu))] +public sealed class RadialMenuOptionComparerTest : RobustUnitTest +{ + public override UnitTestProject Project => UnitTestProject.Client; + + private sealed class TestRadialMenuOption : RadialMenuOptionBase; + private sealed class OtherTestRadialMenuOption : RadialMenuOptionBase; + + [Test] + [Description("Tests that radial menu options are sorted correctly.")] + public void TestSortingArray() + { + var comparer = new RadialMenuOptionComparer(); + + // Named based on their expected position in the returned array, for sanity. + var option1 = new TestRadialMenuOption + { + Order = 1, + ToolTip = "First.", + }; + var option2 = new OtherTestRadialMenuOption + { + Order = 2, + ToolTip = "Before Option3, despite the equal order!" + }; + var option3 = new TestRadialMenuOption + { + Order = 2 + }; + var option4 = new OtherTestRadialMenuOption + { + Order = null, + ToolTip = "Not last!" + }; + var option5 = new TestRadialMenuOption + { + Order = null + }; + + // Out of order. + var radialOptions = new RadialMenuOptionBase[] { + option3, + option4, + option1, + option5, + option2 + }; + + Array.Sort(radialOptions, comparer); + + Assert.That(radialOptions.Length, Is.EqualTo(5)); + using (Assert.EnterMultipleScope()) + { + Assert.That(radialOptions[0], Is.SameAs(option1)); + Assert.That(radialOptions[1], Is.SameAs(option2)); + Assert.That(radialOptions[2], Is.SameAs(option3)); + Assert.That(radialOptions[3], Is.SameAs(option4)); + Assert.That(radialOptions[4], Is.SameAs(option5)); + } + } +} diff --git a/Resources/Prototypes/RCD/rcd.yml b/Resources/Prototypes/RCD/rcd.yml index b173fa4157..c18d8e5db3 100644 --- a/Resources/Prototypes/RCD/rcd.yml +++ b/Resources/Prototypes/RCD/rcd.yml @@ -11,6 +11,7 @@ mode: Deconstruct prototype: EffectRCDDeconstructPreview rotation: Camera + menuOrder: -1 - type: rcd id: DeconstructLattice # Hidden prototype - do not add to RCDs @@ -30,7 +31,7 @@ rotation: Camera fx: EffectRCDDeconstruct4 -# Flooring +# region Walls and Flooring - type: rcd id: Plating name: rcd-component-plating @@ -44,6 +45,7 @@ rules: - CanBuildOnEmptyTile fx: EffectRCDConstruct1 + menuOrder: 0 - type: rcd id: FloorSteel @@ -58,6 +60,7 @@ rules: - CanBuildOnEmptyTile fx: EffectRCDConstruct1 + menuOrder: 1 - type: rcd id: Catwalk @@ -73,8 +76,8 @@ - IsCatwalk rotation: Fixed fx: EffectRCDConstruct1 + menuOrder: 2 -# Walls - type: rcd id: WallSolid category: WallsAndFlooring @@ -86,7 +89,10 @@ collisionMask: FullTileMask rotation: Fixed fx: EffectRCDConstruct2 + menuOrder: 3 +# endregion Walls and Flooring +# region Windows and Grilles - type: rcd id: Grille category: WindowsAndGrilles @@ -98,8 +104,8 @@ collisionMask: Impassable rotation: Fixed fx: EffectRCDConstruct2 + menuOrder: 0 -# Windows - type: rcd id: Window category: WindowsAndGrilles @@ -113,6 +119,22 @@ - IsWindow rotation: Fixed fx: EffectRCDConstruct2 + menuOrder: 1 + +- type: rcd + id: ReinforcedWindow + category: WindowsAndGrilles + sprite: /Textures/Interface/Radial/RCD/window_reinforced.png + mode: ConstructObject + prototype: ReinforcedWindow + cost: 4 + delay: 3 + collisionMask: Impassable + rules: + - IsWindow + rotation: User + fx: EffectRCDConstruct3 + menuOrder: 2 - type: rcd id: WindowDirectional @@ -129,20 +151,7 @@ rotation: User fx: EffectRCDConstruct1 allowMultiDirection: true - -- type: rcd - id: ReinforcedWindow - category: WindowsAndGrilles - sprite: /Textures/Interface/Radial/RCD/window_reinforced.png - mode: ConstructObject - prototype: ReinforcedWindow - cost: 4 - delay: 3 - collisionMask: Impassable - rules: - - IsWindow - rotation: User - fx: EffectRCDConstruct3 + menuOrder: 3 - type: rcd id: WindowReinforcedDirectional @@ -159,8 +168,10 @@ rotation: User fx: EffectRCDConstruct2 allowMultiDirection: true + menuOrder: 4 +# endregion Windows and Grilles -# Airlocks +# region Airlocks - type: rcd id: Airlock category: Airlocks @@ -172,6 +183,7 @@ collisionMask: FullTileMask rotation: Camera fx: EffectRCDConstruct4 + menuOrder: 0 - type: rcd id: AirlockGlass @@ -184,6 +196,7 @@ collisionMask: FullTileMask rotation: Camera fx: EffectRCDConstruct4 + menuOrder: 1 - type: rcd id: Firelock @@ -196,8 +209,10 @@ collisionMask: FullTileMask rotation: Camera fx: EffectRCDConstruct3 + menuOrder: 2 +# endregion Airlocks -# Lighting +# region Lighting - type: rcd id: TubeLight category: Lighting @@ -211,6 +226,7 @@ rotation: User fx: EffectRCDConstruct1 allowMultiDirection: true + menuOrder: 0 - type: rcd id: BulbLight @@ -225,8 +241,10 @@ rotation: User fx: EffectRCDConstruct1 allowMultiDirection: true + menuOrder: 1 +# endregion Lighting -# Electrical +# region Electrical - type: rcd id: LVCable category: Electrical @@ -239,6 +257,7 @@ - MustBuildOnSubfloor rotation: Fixed fx: EffectRCDConstruct0 + menuOrder: 0 - type: rcd id: MVCable @@ -252,6 +271,7 @@ - MustBuildOnSubfloor rotation: Fixed fx: EffectRCDConstruct0 + menuOrder: 1 - type: rcd id: HVCable @@ -265,6 +285,7 @@ - MustBuildOnSubfloor rotation: Fixed fx: EffectRCDConstruct0 + menuOrder: 2 - type: rcd id: CableTerminal @@ -277,3 +298,5 @@ collisionMask: Impassable rotation: User fx: EffectRCDConstruct0 + menuOrder: 3 +# endregion Electrical From 49e9ab64ffce0cd3654441ce7c277776a7635c9a Mon Sep 17 00:00:00 2001 From: Tiniest Shark Date: Sun, 23 Aug 2026 20:29:04 +0000 Subject: [PATCH 002/197] Sheep Plushie Inhand Fix (#45589) yaml fix --- .../Prototypes/Entities/Objects/Fun/Plushies/plushies.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Objects/Fun/Plushies/plushies.yml b/Resources/Prototypes/Entities/Objects/Fun/Plushies/plushies.yml index 970ce0a2f6..562fb469a4 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/Plushies/plushies.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Plushies/plushies.yml @@ -1189,7 +1189,7 @@ sprite: Objects/Fun/Plushies/sheep.rsi state: sheeptoy - type: Item - sprite: Objects/Fun/Plushies/carp.rsi + sprite: Objects/Fun/Plushies/sheep.rsi heldPrefix: sheeptoy storedRotation: -90 - type: EmitSoundOnUse @@ -1229,6 +1229,9 @@ - type: Sprite sprite: Objects/Fun/Plushies/sheep.rsi state: spacesheeptoy + - type: Item + sprite: Objects/Fun/Plushies/sheep.rsi + heldPrefix: spacesheeptoy - type: FoodSequenceElement entries: CottonBurger: SheepSpacePlushie From ff495df54922689b6d1c82bf0bef4effe9300f26 Mon Sep 17 00:00:00 2001 From: Fildrance Date: Mon, 24 Aug 2026 00:12:07 +0000 Subject: [PATCH 003/197] Injecting entity table conditions into context (#45231) * refactor: entity table condition injection and hierarhical condition checks * refactor: rename IsNotRepeatingCondition into ExcludeEntitiesFromContextCondition, simplify EntityTableSelectorWithChildrenBase.CheckConditions logic, + new test * refactor: fix test using old name of condition * refactor: renaming * refactor: fix no condition + RequireAll case and added test * refactor: GetSpawns no more virtual * refactor: more tests! * refactor: use ScopedConditionsRestore for child conditions in EntityTableSelectorWithChildrenBase, not for current type conditions --- .../Tests/EntityTable/EntityTableTest.cs | 255 +++++++++++++++++- .../ExcludeEntitiesFromContextCondition.cs | 33 +++ .../EntitySelectors/AllSelector.cs | 10 +- .../EntitySelectors/EntityTableSelector.cs | 43 ++- .../EntityTableSelectorWithNestedBase.cs | 97 +++++++ .../EntitySelectors/GroupSelector.cs | 17 +- .../EntitySelectors/NestedSelector.cs | 19 +- .../EntityTable/EntityTableSystem.cs | 18 ++ 8 files changed, 467 insertions(+), 25 deletions(-) create mode 100644 Content.Shared/EntityTable/Conditions/ExcludeEntitiesFromContextCondition.cs create mode 100644 Content.Shared/EntityTable/EntitySelectors/EntityTableSelectorWithNestedBase.cs diff --git a/Content.IntegrationTests/Tests/EntityTable/EntityTableTest.cs b/Content.IntegrationTests/Tests/EntityTable/EntityTableTest.cs index 98c1811230..3f55a423ff 100644 --- a/Content.IntegrationTests/Tests/EntityTable/EntityTableTest.cs +++ b/Content.IntegrationTests/Tests/EntityTable/EntityTableTest.cs @@ -1,10 +1,13 @@ -using System.Collections.Generic; -using System.Linq; using Content.IntegrationTests.Fixtures; using Content.IntegrationTests.Fixtures.Attributes; using Content.Shared.EntityTable; +using Content.Shared.EntityTable.Conditions; +using Content.Shared.EntityTable.EntitySelectors; +using Robust.Shared.GameObjects; using Robust.Shared.Prototypes; using Robust.Shared.Random; +using System.Collections.Generic; +using System.Linq; namespace Content.IntegrationTests.Tests.EntityTable; @@ -105,6 +108,17 @@ public sealed class EntityTableTest : GameTest - !type:HasBudgetCondition costOverride: 0 + - type: entityTable + id: EntityTableTestEntRequireAnyAllFail + table: !type:EntSelector + id: {EntProto1} + requireAll: false + conditions: + - !type:HasBudgetCondition + costOverride: 100 + - !type:HasBudgetCondition + costOverride: 200 + - type: entityTable id: EntityTableTestDeepComposition table: !type:AllSelector @@ -124,9 +138,78 @@ public sealed class EntityTableTest : GameTest id: EntityTableTestChainTable table: !type:NestedSelector tableId: EntityTableTestNestedTable + + - type: entityTable + id: EntityTableTestNotRepeating + table: !type:EntSelector + id: {EntProto1} + conditions: + - !type:ExcludeEntitiesFromContextCondition + + - type: entityTable + id: EntityTableTestAllNotRepeating + table: !type:AllSelector + conditionsForChildren: + - !type:ExcludeEntitiesFromContextCondition + children: + - id: {EntProto1} + - id: {EntProto2} + + - type: entityTable + id: EntityTableTestChainNotRepeating + table: !type:NestedSelector + tableId: EntityTableTestNestedTable + conditionsForChildren: + - !type:ExcludeEntitiesFromContextCondition + + - type: entityTable + id: EntityTableTestNestedTableWithCost + table: !type:EntSelector + id: {EntProtoWithCost} + conditions: + - !type:HasBudgetCondition + + - type: entityTable + id: EntityTableTestChainTableWithCost + table: !type:NestedSelector + tableId: EntityTableTestNestedTableWithCost + + - type: entityTable + id: EntityTableTestGroupWithCostlyNested + table: !type:GroupSelector + children: + - !type:NestedSelector + tableId: EntityTableTestNestedTableWithCost + weight: 1 + - id: {EntProto2} + weight: 1 + + - type: entityTable + id: EntityTableTestLocalizedChildConditions + table: !type:AllSelector + children: + - !type:AllSelector + conditionsForChildren: + - !type:ExcludeEntitiesFromContextCondition + children: + - id: {EntProto1} + - id: {EntProto2} + - id: {EntProto2} + + - type: entityTable + id: EntityTableTestSkipSelectorWithFailedChildren + table: !type:GroupSelector + children: + - !type:AllSelector + children: + - id: {EntProto1} + conditions: + - !type:AlwaysFailCondition + - id: {EntProto2} """; [Test] + [RunOnSide(Side.Server)] public void EntSelector_BasicSingleSpawn() { var result = Run(Table("EntityTableTestEntSelector")); @@ -134,6 +217,7 @@ public sealed class EntityTableTest : GameTest } [Test] + [RunOnSide(Side.Server)] public void EntSelector_AmountAndRollsCompose() { var result = Run(Table("EntityTableTestEntSelectorAmountRolls")); @@ -142,6 +226,7 @@ public sealed class EntityTableTest : GameTest } [Test] + [RunOnSide(Side.Server)] public void AllSelector_CombinesChildrenInOrder() { var result = Run(Table("EntityTableTestAllSelector")); @@ -150,6 +235,7 @@ public sealed class EntityTableTest : GameTest } [Test] + [RunOnSide(Side.Server)] public void NoneSelector_YieldsNothing() { var result = Run(Table("EntityTableTestNoneSelector")); @@ -157,6 +243,7 @@ public sealed class EntityTableTest : GameTest } [Test] + [RunOnSide(Side.Server)] public void GroupSelector_WeightedPick_DeterministicWithSeed() { // EntityTableTestNestedTable is a GroupSelector: Ent1 weight 1, Ent2 weight 2. @@ -177,6 +264,7 @@ public sealed class EntityTableTest : GameTest } [Test] + [RunOnSide(Side.Server)] public void GroupSelector_AllChildrenConditionsFail_ReturnsEmpty() { // No budget in context => condition fails => GroupSelector's child pool is empty. @@ -185,6 +273,7 @@ public sealed class EntityTableTest : GameTest } [Test] + [RunOnSide(Side.Server)] public void NestedSelector_ResolvesTransitively() { // EntityTableTestChainTable is a NestedSelector pointing at EntityTableTestNestedTable. @@ -194,6 +283,7 @@ public sealed class EntityTableTest : GameTest } [Test] + [RunOnSide(Side.Server)] public void HasBudgetCondition_GatesEntSelector() { // EntityTableTestEntSelectorWithCost reads cost 10 from the DynamicRuleCostComponent. @@ -208,6 +298,7 @@ public sealed class EntityTableTest : GameTest } [Test] + [RunOnSide(Side.Server)] public void RequireAllConditionSemantics() { // RequireAll = true, one fails => no spawns. @@ -219,6 +310,17 @@ public sealed class EntityTableTest : GameTest Assert.That(requireAnyResult, Is.EquivalentTo(new[] { new EntProtoId(EntProto1) })); } + [Test] + [RunOnSide(Side.Server)] + public void RequireAny_AllConditionsFail_ReturnsEmpty() + { + // RequireAll = false but every condition fails => no spawns. + // Regression test: previously the OR-ing was seeded with `true`, so + // RequireAll = false always passed regardless of the actual results. + var result = Run(Table("EntityTableTestEntRequireAnyAllFail"), ctx: new EntityTableContext(new() { ["Budget"] = 50f })); + Assert.That(result, Is.Empty); + } + [Test] [RunOnSide(Side.Server)] public void DeepComposition_ComplexTree() @@ -228,6 +330,137 @@ public sealed class EntityTableTest : GameTest Assert.That(result, Is.EqualTo(new[] { new EntProtoId(EntProto2), new EntProtoId(EntProto1) })); } + [Test] + [RunOnSide(Side.Server)] + public void ExcludeEntitiesFromContextCondition_GatesEntSelector() + { + // No UsedSpawns tracking in context => condition passes and the ent spawns. + var noTracking = Run(Table("EntityTableTestNotRepeating"), ctx: new EntityTableContext()); + Assert.That(noTracking, Is.EquivalentTo(new[] { new EntProtoId(EntProto1) })); + + // EntProto1 already recorded as spawned => blocked. + var used = new HashSet { new(EntProto1) }; + var blocked = Run(Table("EntityTableTestNotRepeating"), + ctx: new EntityTableContext(new() { [ExcludeEntitiesFromContextCondition.EntitiesToExclude] = used })); + Assert.That(blocked, Is.Empty); + + // Tracking enabled, but EntProto1 has not been spawned yet => allowed. + var allowed = Run(Table("EntityTableTestNotRepeating"), + ctx: new EntityTableContext(new() { [ExcludeEntitiesFromContextCondition.EntitiesToExclude] = new HashSet() })); + Assert.That(allowed, Is.EquivalentTo([new EntProtoId(EntProto1)])); + } + + [Test] + [RunOnSide(Side.Server)] + public void AllSelector_ConditionsForChildren_ApplyToChildren() + { + var used = new HashSet { new(EntProto1) }; + var result = Run(Table("EntityTableTestAllNotRepeating"), + ctx: new EntityTableContext(new() { [ExcludeEntitiesFromContextCondition.EntitiesToExclude] = used })); + Assert.That(result, Is.EqualTo(new[] { new EntProtoId(EntProto2) })); + } + + /// + /// EntityTableTestChainNotRepeating forwards the condition into EntityTableTestNestedTable. + /// EntProto1 already used => excluded from the GroupSelector pool, EntProto2 is picked. + /// + [Test] + [RunOnSide(Side.Server)] + public void NestedSelector_ConditionsForChildren_ApplyToNestedChildren() + { + var used = new HashSet { new(EntProto1) }; + var result = Run(Table("EntityTableTestChainNotRepeating"), SeededRand(1), + new EntityTableContext(new() { [ExcludeEntitiesFromContextCondition.EntitiesToExclude] = used })); + Assert.That(result, Is.EqualTo(new[] { new EntProtoId(EntProto2) })); + } + + /// + /// EntityTableTestChainTableWithCost points at a nested table whose EntSelector is gated by + /// HasBudgetCondition (cost 10). The NestedSelector itself has no conditions, but the nested + /// table's conditions still gate it. + /// + [Test] + [RunOnSide(Side.Server)] + public void NestedSelector_CheckConditions_IncludesNestedTable() + { + var poor = Run(Table("EntityTableTestChainTableWithCost"), ctx: new EntityTableContext(new() { ["Budget"] = 9f })); + Assert.That(poor, Is.Empty); + + var rich = Run(Table("EntityTableTestChainTableWithCost"), ctx: new EntityTableContext(new() { ["Budget"] = 10f })); + Assert.That(rich, Is.EquivalentTo(new[] { new EntProtoId(EntProtoWithCost) })); + } + + /// + /// The group contains a NestedSelector (cost 10) and EntProto2. With a budget of 9 the nested + /// selector fails CheckConditions and is excluded from the group's pool, so only EntProto2 can be picked. + /// + [Test] + [RunOnSide(Side.Server)] + public void GroupSelector_ExcludesNestedSelectorWithFailingConditions() + { + var result = Run(Table("EntityTableTestGroupWithCostlyNested"), SeededRand(1), new EntityTableContext(new() { ["Budget"] = 9f })); + Assert.That(result, Is.EqualTo(new[] { new EntProtoId(EntProto2) })); + } + + [Test] + [RunOnSide(Side.Server)] + public void ChildrenSelector_SkipDeadSelectors() + { + // to not re-init test, just repeat a lot of times, because probability can come into play + for (var i = 0; i < 100; i++) + { + var result = Run(Table("EntityTableTestSkipSelectorWithFailedChildren")); + Assert.That(result, Is.EquivalentTo([EntProto2])); + } + } + + /// + /// Demonstrates how injecting ExcludeEntitiesFromContextCondition through the context's + /// AdditionalConditionsKey can change the behavior of an otherwise unconstrained table. + /// + [Test] + [RunOnSide(Side.Server)] + public void AdditionalConditions_FromContext_ChangeBehavior() + { + var used = new HashSet { new(EntProto1) }; + + // Without the injected condition, the UsedSpawns tracking alone has no effect. + var unconstrained = Run(Table("EntityTableTestEntSelector"), + ctx: new EntityTableContext(new() { [ExcludeEntitiesFromContextCondition.EntitiesToExclude] = used })); + Assert.That(unconstrained, Is.EquivalentTo([new EntProtoId(EntProto1)])); + + // Injecting ExcludeEntitiesFromContextCondition gates the selector: EntProto1 is already used => blocked. + var ctx = new EntityTableContext(new() { [ExcludeEntitiesFromContextCondition.EntitiesToExclude] = used }); + ctx.SetData(EntityTableSelector.AdditionalConditionsKey, + new List { new ExcludeEntitiesFromContextCondition() }); + var blocked = Run(Table("EntityTableTestEntSelector"), ctx: ctx); + Assert.That(blocked, Is.Empty); + + // With the condition injected but EntProto1 not yet used, the spawn is allowed. + var fresh = new EntityTableContext(new() { [ExcludeEntitiesFromContextCondition.EntitiesToExclude] = new HashSet() }); + fresh.SetData(EntityTableSelector.AdditionalConditionsKey, + new List { new ExcludeEntitiesFromContextCondition() }); + var allowed = Run(Table("EntityTableTestEntSelector"), ctx: fresh); + Assert.That(allowed, Is.EquivalentTo([new EntProtoId(EntProto1)])); + } + + [Test] + [RunOnSide(Side.Server)] + public void AdditionalConditions_RemainLocal() + { + var used = new HashSet { new(EntProto2) }; + var ctx = new EntityTableContext(new() { [ExcludeEntitiesFromContextCondition.EntitiesToExclude] = used }); + + var result = Run(Table("EntityTableTestLocalizedChildConditions"), ctx: ctx); + + ctx.TryGetData(EntityTableSelector.AdditionalConditionsKey, out var empty); + using (Assert.EnterMultipleScope()) + { + Assert.That(empty, Is.Null); + Assert.That(result, Is.EquivalentTo([new EntProtoId(EntProto1), new EntProtoId(EntProto2)])); + } + } + private static IRobustRandom SeededRand(int seed) { var rand = new RobustRandom(); @@ -241,3 +474,21 @@ public sealed class EntityTableTest : GameTest => _sEntityTable.GetSpawns(proto, rand, ctx) .ToArray(); } + +/// +/// This condition always fails. Used mainly for integration tests. +/// Can be used with to always succeed for extra pointlessness. +/// +public sealed partial class AlwaysFailCondition : EntityTableCondition +{ + /// > + protected override bool EvaluateImplementation( + EntityTableSelector root, + IEntityManager entMan, + IPrototypeManager proto, + EntityTableContext ctx + ) + { + return false; + } +} diff --git a/Content.Shared/EntityTable/Conditions/ExcludeEntitiesFromContextCondition.cs b/Content.Shared/EntityTable/Conditions/ExcludeEntitiesFromContextCondition.cs new file mode 100644 index 0000000000..d7bdc9e59b --- /dev/null +++ b/Content.Shared/EntityTable/Conditions/ExcludeEntitiesFromContextCondition.cs @@ -0,0 +1,33 @@ +using Content.Shared.EntityTable.EntitySelectors; +using Robust.Shared.Prototypes; + +namespace Content.Shared.EntityTable.Conditions; + +/// +/// Condition for checking that selector is not going to spawn entity that is marked in current context as excluded . +/// Can be used to keep spawns unique (if no selector rolls more than 1). +/// +public sealed partial class ExcludeEntitiesFromContextCondition : EntityTableCondition +{ + /// + /// Context key used to track which entity prototypes should not be spawned. + /// + public const string EntitiesToExclude = "EntitiesToExclude"; + + /// > + protected override bool EvaluateImplementation( + EntityTableSelector root, + IEntityManager entMan, + IPrototypeManager proto, + EntityTableContext ctx + ) + { + if (!ctx.TryGetData>(EntitiesToExclude, out var used)) + return true; + + if (root is not EntSelector entSelector) + return true; + + return !used.Contains(entSelector.Id); + } +} diff --git a/Content.Shared/EntityTable/EntitySelectors/AllSelector.cs b/Content.Shared/EntityTable/EntitySelectors/AllSelector.cs index 6dcb7eee5a..66c52155cc 100644 --- a/Content.Shared/EntityTable/EntitySelectors/AllSelector.cs +++ b/Content.Shared/EntityTable/EntitySelectors/AllSelector.cs @@ -6,19 +6,15 @@ namespace Content.Shared.EntityTable.EntitySelectors; /// /// Gets spawns from all of the child selectors /// -public sealed partial class AllSelector : EntityTableSelector +public sealed partial class AllSelector : EntityTableSelectorWithChildrenBase { - /// - /// All children selectors to pick from. - /// - [DataField(required: true)] - public List Children; - protected override IEnumerable GetSpawnsImplementation(IRobustRandom rand, IEntityManager entMan, IPrototypeManager proto, EntityTableContext ctx) { + using var scoped = ScopedConditions(ctx); + foreach (var child in Children) { foreach (var spawn in child.GetSpawns(rand, entMan, proto, ctx)) diff --git a/Content.Shared/EntityTable/EntitySelectors/EntityTableSelector.cs b/Content.Shared/EntityTable/EntitySelectors/EntityTableSelector.cs index 6a0b168142..a85988f741 100644 --- a/Content.Shared/EntityTable/EntitySelectors/EntityTableSelector.cs +++ b/Content.Shared/EntityTable/EntitySelectors/EntityTableSelector.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Diagnostics.CodeAnalysis; using Content.Shared.EntityTable.Conditions; using Content.Shared.EntityTable.ValueSelector; using JetBrains.Annotations; @@ -10,6 +10,11 @@ namespace Content.Shared.EntityTable.EntitySelectors; [ImplicitDataDefinitionForInheritors, UsedImplicitly(ImplicitUseTargetFlags.WithInheritors)] public abstract partial class EntityTableSelector { + /// + /// Key for , under which additional scoped conditions should be stored. + /// + public const string AdditionalConditionsKey = "AdditionalConditions"; + /// /// The number of times this selector is run /// @@ -44,7 +49,8 @@ public abstract partial class EntityTableSelector /// /// Samples an output for this selector. /// - public IEnumerable GetSpawns(IRobustRandom rand, + public IEnumerable GetSpawns( + IRobustRandom rand, IEntityManager entMan, IPrototypeManager proto, EntityTableContext ctx) @@ -68,13 +74,14 @@ public abstract partial class EntityTableSelector /// /// Check if the condition for this selector are met. /// - public bool CheckConditions(IEntityManager entMan, IPrototypeManager proto, EntityTableContext ctx) + public virtual bool CheckConditions(IEntityManager entMan, IPrototypeManager proto, EntityTableContext ctx) { - if (Conditions.Count == 0) + // No conditions to evaluate (own or injected into the context) => always valid. + if (!TryGetConditions(ctx, out var conditions)) return true; var success = false; - foreach (var condition in Conditions) + foreach (var condition in conditions) { var res = condition.Evaluate(this, entMan, proto, ctx); @@ -130,4 +137,30 @@ public abstract partial class EntityTableSelector protected abstract IEnumerable<(EntProtoId spawn, double)> AverageSpawnsImplementation(IEntityManager entMan, IPrototypeManager proto, EntityTableContext ctx); + + /// + /// Gets the effective conditions for this selector, respecting conditions injected into the context. + /// Returns false when there are no conditions to evaluate. + /// + private bool TryGetConditions(EntityTableContext ctx, [NotNullWhen(true)] out List? conditions) + { + var hasAdditionalConditions = ctx.TryGetData>(AdditionalConditionsKey, out var additionalConditions); + + if (Conditions.Count == 0 && !hasAdditionalConditions) + { + conditions = null; + return false; + } + + if (!hasAdditionalConditions) + { + conditions = Conditions; + return true; + } + + conditions = new List(Conditions.Count + additionalConditions!.Count); + conditions.AddRange(Conditions); + conditions.AddRange(additionalConditions); + return true; + } } diff --git a/Content.Shared/EntityTable/EntitySelectors/EntityTableSelectorWithNestedBase.cs b/Content.Shared/EntityTable/EntitySelectors/EntityTableSelectorWithNestedBase.cs new file mode 100644 index 0000000000..2517ef9247 --- /dev/null +++ b/Content.Shared/EntityTable/EntitySelectors/EntityTableSelectorWithNestedBase.cs @@ -0,0 +1,97 @@ +using Content.Shared.EntityTable.Conditions; +using JetBrains.Annotations; +using Robust.Shared.Prototypes; + +namespace Content.Shared.EntityTable.EntitySelectors; + +/// +/// Base type for entity table selector that can have child selectors and properly apply entity table conditions for them. +/// +[ImplicitDataDefinitionForInheritors, UsedImplicitly(ImplicitUseTargetFlags.WithInheritors)] +public abstract partial class EntityTableSelectorWithChildrenBase : EntityTableSelectorWithNestedBase +{ + /// + /// The child entries of this selector. + /// + [DataField(required: true)] + public List Children = new(); + + /// + public override bool CheckConditions(IEntityManager entMan, IPrototypeManager proto, EntityTableContext ctx) + { + if (!base.CheckConditions(entMan, proto, ctx)) + return false; + + using var scoped = ScopedConditions(ctx); + + foreach (var selector in Children) + { + // If any child succeeds this is a valid node + if (selector.CheckConditions(entMan, proto, ctx)) + return true; + } + + return false; + } +} + +/// +/// Base type for entity table selector that can apply list of additional entity table conditions upon +/// nested entity table selectors. +/// When making type, derived from this one, please remember to use in your implementation of +/// , and inside +/// (if you override it). +/// +[ImplicitDataDefinitionForInheritors, UsedImplicitly(ImplicitUseTargetFlags.WithInheritors)] +public abstract partial class EntityTableSelectorWithNestedBase : EntityTableSelector +{ + /// + /// A list of conditions that must evaluate to 'true' for the selector to apply. + /// + [DataField] + public List ConditionsForChildren = new(); + + /// + /// Temporarily injects (merged with any conditions already + /// scoped in ) into the context so they are evaluated for every selector + /// below this one. The context is restored when the returned handle is disposed. + /// + protected IDisposable ScopedConditions(EntityTableContext ctx) + { + if (ConditionsForChildren.Count == 0) + return default(ScopedConditionsRestore); + + if (!ctx.TryGetData>(AdditionalConditionsKey, out var existingConditions)) + { + // Nothing was scoped before: our own list can be used directly, no copy. + ctx.SetData(AdditionalConditionsKey, ConditionsForChildren); + return new ScopedConditionsRestore(ctx, null); + } + + // Merge our conditions with whatever is already scoped in the context. + var combined = new List(ConditionsForChildren); + combined.AddRange(existingConditions); + ctx.SetData(AdditionalConditionsKey, combined); + return new ScopedConditionsRestore(ctx, existingConditions); + } + + /// + /// Restores the after a scoped-conditions block. + /// + protected readonly struct ScopedConditionsRestore( + EntityTableContext? ctx, + List? existingConditions + ) : IDisposable + { + public void Dispose() + { + if(ctx == null) + return; + + if (existingConditions is null) + ctx.RemoveData(AdditionalConditionsKey); + else + ctx.SetData(AdditionalConditionsKey, existingConditions); + } + } +} diff --git a/Content.Shared/EntityTable/EntitySelectors/GroupSelector.cs b/Content.Shared/EntityTable/EntitySelectors/GroupSelector.cs index 2cdb890139..33cca7bd90 100644 --- a/Content.Shared/EntityTable/EntitySelectors/GroupSelector.cs +++ b/Content.Shared/EntityTable/EntitySelectors/GroupSelector.cs @@ -8,19 +8,15 @@ namespace Content.Shared.EntityTable.EntitySelectors; /// /// Gets the spawns from one of the child selectors, based on the weight of the children /// -public sealed partial class GroupSelector : EntityTableSelector +public sealed partial class GroupSelector : EntityTableSelectorWithChildrenBase { - /// - /// The child entries of this selector. - /// - [DataField(required: true)] - public List Children = new(); - protected override IEnumerable GetSpawnsImplementation(IRobustRandom rand, IEntityManager entMan, IPrototypeManager proto, EntityTableContext ctx) { + using var scoped = ScopedConditions(ctx); + var children = new Dictionary(Children.Count); foreach (var child in Children) { @@ -32,11 +28,14 @@ public sealed partial class GroupSelector : EntityTableSelector } if (children.Count == 0) - return Array.Empty(); + yield break; var pick = SharedRandomExtensions.Pick(children, rand); - return pick.GetSpawns(rand, entMan, proto, ctx); + foreach (var spawn in pick.GetSpawns(rand, entMan, proto, ctx)) + { + yield return spawn; + } } protected override IEnumerable<(EntProtoId spawn, double)> ListSpawnsImplementation(IEntityManager entMan, IPrototypeManager proto, EntityTableContext ctx) diff --git a/Content.Shared/EntityTable/EntitySelectors/NestedSelector.cs b/Content.Shared/EntityTable/EntitySelectors/NestedSelector.cs index 4bbcb8a427..1ca91051af 100644 --- a/Content.Shared/EntityTable/EntitySelectors/NestedSelector.cs +++ b/Content.Shared/EntityTable/EntitySelectors/NestedSelector.cs @@ -7,7 +7,7 @@ namespace Content.Shared.EntityTable.EntitySelectors; /// Gets the spawns from the entity table prototype specified. /// Can be used to reuse common tables. /// -public sealed partial class NestedSelector : EntityTableSelector +public sealed partial class NestedSelector : EntityTableSelectorWithNestedBase { /// /// The prototype from which to draw random items. @@ -15,19 +15,34 @@ public sealed partial class NestedSelector : EntityTableSelector [DataField(required: true)] public ProtoId TableId; + /// > + public override bool CheckConditions(IEntityManager entMan, IPrototypeManager proto, EntityTableContext ctx) + { + using var scoped = ScopedConditions(ctx); + return base.CheckConditions(entMan, proto, ctx) && proto.Index(TableId).Table.CheckConditions(entMan, proto, ctx); + } + + /// > protected override IEnumerable GetSpawnsImplementation(IRobustRandom rand, IEntityManager entMan, IPrototypeManager proto, EntityTableContext ctx) { - return proto.Index(TableId).Table.GetSpawns(rand, entMan, proto, ctx); + using var scoped = ScopedConditions(ctx); + + foreach (var spawn in proto.Index(TableId).Table.GetSpawns(rand, entMan, proto, ctx)) + { + yield return spawn; + } } + /// > protected override IEnumerable<(EntProtoId spawn, double)> ListSpawnsImplementation(IEntityManager entMan, IPrototypeManager proto, EntityTableContext ctx) { return proto.Index(TableId).Table.ListSpawns(entMan, proto, ctx); } + /// > protected override IEnumerable<(EntProtoId spawn, double)> AverageSpawnsImplementation(IEntityManager entMan, IPrototypeManager proto, EntityTableContext ctx) { return proto.Index(TableId).Table.AverageSpawns(entMan, proto, ctx); diff --git a/Content.Shared/EntityTable/EntityTableSystem.cs b/Content.Shared/EntityTable/EntityTableSystem.cs index cd2e83974d..e75748cb66 100644 --- a/Content.Shared/EntityTable/EntityTableSystem.cs +++ b/Content.Shared/EntityTable/EntityTableSystem.cs @@ -110,4 +110,22 @@ public sealed class EntityTableContext value = castValueData; return true; } + + /// + /// Sets data into context using provided key. + /// + [PublicAPI] + public void SetData([ForbidLiteral] string key, T data) where T : notnull + { + _data[key] = data; + } + + /// + /// Removes data from the context, if the key exists. + /// + [PublicAPI] + public void RemoveData([ForbidLiteral] string key) + { + _data.Remove(key); + } } From 0506d9ed2a7711c164a04cf36fd6dc146337c309 Mon Sep 17 00:00:00 2001 From: Menshin Date: Mon, 24 Aug 2026 12:18:37 +0200 Subject: [PATCH 004/197] Fix client/server desync when changing emitter bolt types using signals (#45607) --- Content.Server/Singularity/EntitySystems/EmitterSystem.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Content.Server/Singularity/EntitySystems/EmitterSystem.cs b/Content.Server/Singularity/EntitySystems/EmitterSystem.cs index b0f7014358..65b0c43636 100644 --- a/Content.Server/Singularity/EntitySystems/EmitterSystem.cs +++ b/Content.Server/Singularity/EntitySystems/EmitterSystem.cs @@ -272,6 +272,7 @@ namespace Content.Server.Singularity.EntitySystems else if (component.SetTypePorts.TryGetValue(args.Port, out var boltType)) { component.BoltType = boltType; + Dirty(uid, component); } } } From f185220e26a2ffcd4915811052407252cc6a811f Mon Sep 17 00:00:00 2001 From: Whatstone <166147148+whatston3@users.noreply.github.com> Date: Mon, 24 Aug 2026 11:24:42 +0000 Subject: [PATCH 005/197] Add plastic floor tile sprites (#45561) * Add plastic floor sprites * make the white cross a touch darker --- .../Prototypes/Entities/Objects/Tiles/tiles.yml | 16 +++++++--------- .../Objects/Tiles/tile.rsi/dark-plastic.png | Bin 0 -> 478 bytes .../Textures/Objects/Tiles/tile.rsi/meta.json | 11 ++++++++++- .../Objects/Tiles/tile.rsi/steel-plastic.png | Bin 0 -> 515 bytes .../Objects/Tiles/tile.rsi/white-plastic.png | Bin 0 -> 515 bytes 5 files changed, 17 insertions(+), 10 deletions(-) create mode 100644 Resources/Textures/Objects/Tiles/tile.rsi/dark-plastic.png create mode 100644 Resources/Textures/Objects/Tiles/tile.rsi/steel-plastic.png create mode 100644 Resources/Textures/Objects/Tiles/tile.rsi/white-plastic.png diff --git a/Resources/Prototypes/Entities/Objects/Tiles/tiles.yml b/Resources/Prototypes/Entities/Objects/Tiles/tiles.yml index d2ea517e35..1cbc91103a 100644 --- a/Resources/Prototypes/Entities/Objects/Tiles/tiles.yml +++ b/Resources/Prototypes/Entities/Objects/Tiles/tiles.yml @@ -475,14 +475,12 @@ # TODO add a catwalk tile item once tile smoothing is supported - type: entity - name: plastic floor - parent: FloorTileItemBase + parent: FloorTileItemSteel id: FloorTileItemPlastic + name: plastic floor components: - type: Sprite - state: steel # TODO need plastic sprite - - type: Item - heldPrefix: plastic + state: steel-plastic - type: FloorTile outputs: - Plating @@ -491,12 +489,12 @@ stackType: FloorTileStackPlastic - type: entity - parent: FloorTileItemPlastic + parent: FloorTileItemDark id: FloorTileItemDarkPlastic name: dark plastic floor components: - type: Sprite - state: dark # TODO need dark plastic sprite + state: dark-plastic - type: FloorTile outputs: - Plating @@ -505,12 +503,12 @@ stackType: FloorTileStackDarkPlastic - type: entity - parent: FloorTileItemPlastic + parent: FloorTileItemWhite id: FloorTileItemWhitePlastic name: white plastic floor components: - type: Sprite - state: white # TODO need white plastic sprite + state: white-plastic - type: FloorTile outputs: - Plating diff --git a/Resources/Textures/Objects/Tiles/tile.rsi/dark-plastic.png b/Resources/Textures/Objects/Tiles/tile.rsi/dark-plastic.png new file mode 100644 index 0000000000000000000000000000000000000000..7435d881313f767b49d2023856a1afb87eae4c4f GIT binary patch literal 478 zcmV<40U`d0P)Px$m`OxIR9J=Wl}(a@Fc5{m24`c5!rVX);KFk5e+0Y%H;@Qbu1tD1Bn3Je)Tx@q z@HVNCpML$i^MDBxCj56uY{PoJ)>kjDsw#T_EEfE0zX!lNhw6|^S(fZ}I{?xo!8#Yl zkJ$`BV$_dVr^Le>@vStJBq+41wDllv$S1wk=tf-8AZ31ib9`d_Y7{)e!ty1)@C=yuHhOxm-dob3ZN? z3+R;iRRY$z-~*}}0{Rl9X*y^~kFiepaF?peX0y5bXYumiJ6=`QbFMUD!i2xTH#BK500000 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Tiles/tile.rsi/meta.json b/Resources/Textures/Objects/Tiles/tile.rsi/meta.json index e7a62bb16d..67ca1e6117 100644 --- a/Resources/Textures/Objects/Tiles/tile.rsi/meta.json +++ b/Resources/Textures/Objects/Tiles/tile.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c6e3401f2e7e1e55c57060cdf956a98ef1fefc24, additional attributions available in the Resources/Textures/Tiles/attributions.yml file. Ice tile and Snow tile modifications, Astreroid tile and in-hands created by Southbridge-fur (github), Astro-asteroid by kosticia (Github), Ironsands concrete variants modified from other concrete and inhands modified from generic inhands by SeaWyrm (github Aearo-Deepwater)", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c6e3401f2e7e1e55c57060cdf956a98ef1fefc24, additional attributions available in the Resources/Textures/Tiles/attributions.yml file. Ice tile and Snow tile modifications, Astreroid tile and in-hands created by Southbridge-fur (github), Astro-asteroid by kosticia (Github), Ironsands concrete variants modified from other concrete and inhands modified from generic inhands by SeaWyrm (github Aearo-Deepwater), *-plastic edited by whatston3", "size": { "x": 32, "y": 32 @@ -40,6 +40,9 @@ { "name": "dark-offset" }, + { + "name": "dark-plastic" + }, { "name": "desertsand" }, @@ -275,6 +278,9 @@ { "name": "steel-horizontal-slats" }, + { + "name": "steel-plastic" + }, { "name": "silver" }, @@ -317,6 +323,9 @@ { "name": "white-pavement-vertical" }, + { + "name": "white-plastic" + }, { "name": "monofloor" }, diff --git a/Resources/Textures/Objects/Tiles/tile.rsi/steel-plastic.png b/Resources/Textures/Objects/Tiles/tile.rsi/steel-plastic.png new file mode 100644 index 0000000000000000000000000000000000000000..15372842c2dc9f1106539640bd8b9862634d8d40 GIT binary patch literal 515 zcmV+e0{s1nP)Px$y-7qtR9J=WmeEeaKoCU_TbiOlVgw>-z<&{6^i^a0OvDe+e-YAXfS3@BF{M)< z>~0EZcLft4?0wm`vz@uUvv*P`QKH0uN5!_Ge|nm3oBaOa!J5BnD}Hl*4L~e{h^)kK z2Lmpzt^n|rA{H@gEeHTo8;L>!02R;UWi~VSaYmxiXaFE0%;)nJ0s#Kup)EB4%C;d* z5&*_g1iso|#z#3FRVaAS|JlzFZdSZ~wT1kxm-ad2Szy6yy} z6v6)fXR>P5xv)l|MQk&m*=jMHP74d{Y{UEeMfazqivbw_g#N_7yIh!TfplY?- zOeYgs?e@k&-HCvf{ku8fc^)ESivPL-T5kR2$DI!3?5GtuYBnKL!gUDYdIfrzY literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Tiles/tile.rsi/white-plastic.png b/Resources/Textures/Objects/Tiles/tile.rsi/white-plastic.png new file mode 100644 index 0000000000000000000000000000000000000000..93c504f2de19ff8f81c0fa20f754e01553da79b3 GIT binary patch literal 515 zcmV+e0{s1nP)Px$y-7qtR9J=Wmd$G8FcgKq$`VbUAQ*zd3ig>ZtBk#e|~xK*4IAr*=z=Y6``uC z-ufcT`1SY*fKdu7(muzd5kTz|p?nHe6tx5+V~C=NsQC>z5asr6-`{a5ofG?T>#unZ(2MCT0j>w!$Sq7@>FIm{R)kAu zt@$w6iP2hP%%SmiFREkkc8Y5zchCPe2LQ^l>^(yf)~d}da952c0)Xvy3qTyllx0aA z$H)nT$Sc5g|FJoswMIl*^8fCDv)i3~I-No@0qHm}nM|N@LIutMLYvTZ-i9KA?L;sh zk6Eo&yJGsIT<9eH=c}@=>x+lm+weg55b`}RV8DPc#~%;J#BYXM(Ifx>002ovPDHLk FV1lOo>oNcU literal 0 HcmV?d00001 From a06274e996f18a4283e2a5f022907f004d3847e8 Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Mon, 24 Aug 2026 13:58:06 +0000 Subject: [PATCH 006/197] Fix projectile grenades (stingers, shrapnel, incendiary) going through walls, and projectile distance (#41949) * Initial commit * Review * Review fix * Review fix --- .../Components/ProjectileGrenadeComponent.cs | 9 +++++---- .../EntitySystems/ProjectileGrenadeSystem.cs | 7 ++++--- Content.Server/Projectiles/ProjectileSystem.cs | 10 +++++++--- .../Guns/Projectiles/Explosives/explosives.yml | 1 - .../Weapons/Guns/Projectiles/Explosives/grenade.yml | 12 ++++-------- 5 files changed, 20 insertions(+), 19 deletions(-) diff --git a/Content.Server/Explosion/Components/ProjectileGrenadeComponent.cs b/Content.Server/Explosion/Components/ProjectileGrenadeComponent.cs index 20a73b46b5..f39cc808f1 100644 --- a/Content.Server/Explosion/Components/ProjectileGrenadeComponent.cs +++ b/Content.Server/Explosion/Components/ProjectileGrenadeComponent.cs @@ -1,4 +1,5 @@ using Content.Server.Explosion.EntitySystems; +using Content.Shared.Weapons.Ranged.Systems; using Robust.Shared.Containers; using Robust.Shared.Prototypes; @@ -35,16 +36,16 @@ public sealed partial class ProjectileGrenadeComponent : Component public bool RandomAngle = false; /// - /// The minimum speed the projectiles may come out at + /// The minimum speed the projectiles may come out at, to vary the spread. /// [DataField] - public float MinVelocity = 2f; + public float MinVelocity = 42f; /// - /// The maximum speed the projectiles may come out at + /// The maximum speed the projectiles may come out at, to vary the spread. /// [DataField] - public float MaxVelocity = 6f; + public float MaxVelocity = 46f; /// /// The trigger key that will activate the grenade. diff --git a/Content.Server/Explosion/EntitySystems/ProjectileGrenadeSystem.cs b/Content.Server/Explosion/EntitySystems/ProjectileGrenadeSystem.cs index 17590d4f74..ee0a8ec22c 100644 --- a/Content.Server/Explosion/EntitySystems/ProjectileGrenadeSystem.cs +++ b/Content.Server/Explosion/EntitySystems/ProjectileGrenadeSystem.cs @@ -1,4 +1,5 @@ -using Content.Server.Explosion.Components; +using System.Numerics; +using Content.Server.Explosion.Components; using Content.Server.Weapons.Ranged.Systems; using Content.Shared.Trigger; using Robust.Server.GameObjects; @@ -85,8 +86,8 @@ public sealed partial class ProjectileGrenadeSystem : EntitySystem // velocity is randomized to make the projectiles look // slightly uneven, doesn't really change much, but it looks better var direction = angle.ToVec().Normalized(); - var velocity = _random.NextVector2(component.MinVelocity, component.MaxVelocity); - _gun.ShootProjectile(contentUid, direction, velocity, null); + var velocity = _random.NextFloat(component.MinVelocity, component.MaxVelocity); + _gun.ShootProjectile(contentUid, direction, Vector2.Zero, null, speed: velocity); } } diff --git a/Content.Server/Projectiles/ProjectileSystem.cs b/Content.Server/Projectiles/ProjectileSystem.cs index 87b9c167ea..bdfd8c96ea 100644 --- a/Content.Server/Projectiles/ProjectileSystem.cs +++ b/Content.Server/Projectiles/ProjectileSystem.cs @@ -59,17 +59,21 @@ public sealed partial class ProjectileSystem : SharedProjectileSystem damageRequired = FixedPoint2.Max(damageRequired, FixedPoint2.Zero); } - if (_damageableSystem.TryChangeDamage((target, damageableComponent), ev.Damage, out var damage, component.IgnoreResistances, origin: component.Shooter) - && Exists(component.Shooter)) + if (_damageableSystem.TryChangeDamage((target, damageableComponent), ev.Damage, out var damage, component.IgnoreResistances, origin: component.Shooter)) { if (!Deleted(target)) { _color.RaiseEffect(Color.Red, new List { target }, Filter.Pvs(target, entityManager: EntityManager)); } + var shotByString = Exists(component.Shooter) + ? $"{ToPrettyString(component.Shooter!.Value):user}" + : "a now deleted entity (grenade?)"; + _adminLogger.Add(LogType.BulletHit, LogImpact.Medium, - $"Projectile {ToPrettyString(uid):projectile} shot by {ToPrettyString(component.Shooter!.Value):user} hit {otherName:target} and dealt {damage:damage} damage"); + $"Projectile {ToPrettyString(uid):projectile} shot by {shotByString} hit {otherName:target} and dealt {damage:damage} damage"); + component.ProjectileSpent = !TryPenetrate((uid, component), damage, damageRequired); } diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Explosives/explosives.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Explosives/explosives.yml index f6321e073b..9c38def9a9 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Explosives/explosives.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Explosives/explosives.yml @@ -53,7 +53,6 @@ layers: - state: grenade - type: Projectile - deleteOnCollide: false damage: types: Blunt: 1 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Explosives/grenade.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Explosives/grenade.yml index dc0794a8bb..49c6fc0050 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Explosives/grenade.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Explosives/grenade.yml @@ -5,14 +5,13 @@ name: pellet (ball, rubber) components: - type: Projectile - deleteOnCollide: false damage: types: Blunt: 4 - type: StaminaDamageOnCollide damage: 55 - type: TimedDespawn - lifetime: 0.25 + lifetime: 0.10 - type: entity parent: BaseBullet @@ -21,12 +20,11 @@ name: pellet (ball, lethal) components: - type: Projectile - deleteOnCollide: false damage: types: Piercing: 45 - type: TimedDespawn - lifetime: 0.25 + lifetime: 0.10 - type: entity parent: BaseBulletIncendiary @@ -35,7 +33,6 @@ name: pellet (ball, incendiary) components: - type: Projectile - deleteOnCollide: false damage: types: Blunt: 1 @@ -44,7 +41,7 @@ fireStacks: 1 count: 10 - type: TimedDespawn - lifetime: 0.25 + lifetime: 0.10 - type: entity parent: BaseBullet @@ -53,9 +50,8 @@ name: pellet (ball, less lethal) components: - type: Projectile - deleteOnCollide: false damage: types: Piercing: 5 - type: TimedDespawn - lifetime: 0.25 + lifetime: 0.10 From 70e5a4e40af5e30bc3a119ca55c078851975e479 Mon Sep 17 00:00:00 2001 From: Whatstone <166147148+whatston3@users.noreply.github.com> Date: Mon, 24 Aug 2026 15:27:59 +0000 Subject: [PATCH 007/197] Bugfix: Magboots only show an alert when worn (#45574) * Check equipped status on magboot toggle * ClothingSystem.IsEquipped: explicitly check null * MagbootsSystem: maintain order of event handlers * Address Fildrance's suggestions Co-authored-by: Fildrance <14752842+Fildrance@users.noreply.github.com> --------- Co-authored-by: Fildrance <14752842+Fildrance@users.noreply.github.com> --- .../Clothing/EntitySystems/ClothingSystem.cs | 5 ++++ Content.Shared/Clothing/MagbootsComponent.cs | 1 - Content.Shared/Clothing/MagbootsSystem.cs | 30 ++++++++++--------- .../Entities/Clothing/Shoes/magboots.yml | 4 +-- 4 files changed, 22 insertions(+), 18 deletions(-) diff --git a/Content.Shared/Clothing/EntitySystems/ClothingSystem.cs b/Content.Shared/Clothing/EntitySystems/ClothingSystem.cs index 1f9124e172..7bd74beeae 100644 --- a/Content.Shared/Clothing/EntitySystems/ClothingSystem.cs +++ b/Content.Shared/Clothing/EntitySystems/ClothingSystem.cs @@ -145,6 +145,11 @@ public abstract partial class ClothingSystem : EntitySystem if (!Resolve(item, ref item.Comp, false)) return false; + // If the entity is in a user's hand, or not on their body at all, + // the flag is null, and the bitwise and below returns null! + if (item.Comp.InSlotFlag == null) + return false; + if ((item.Comp.Slots & item.Comp.InSlotFlag) != SlotFlags.NONE) return true; diff --git a/Content.Shared/Clothing/MagbootsComponent.cs b/Content.Shared/Clothing/MagbootsComponent.cs index c0a8b40866..496e9e0eb3 100644 --- a/Content.Shared/Clothing/MagbootsComponent.cs +++ b/Content.Shared/Clothing/MagbootsComponent.cs @@ -1,5 +1,4 @@ using Content.Shared.Alert; -using Content.Shared.Inventory; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; diff --git a/Content.Shared/Clothing/MagbootsSystem.cs b/Content.Shared/Clothing/MagbootsSystem.cs index 249c46401f..9ec4f2bd3b 100644 --- a/Content.Shared/Clothing/MagbootsSystem.cs +++ b/Content.Shared/Clothing/MagbootsSystem.cs @@ -1,45 +1,45 @@ -using Content.Shared.Actions; using Content.Shared.Alert; using Content.Shared.Atmos.Components; using Content.Shared.Clothing.EntitySystems; using Content.Shared.Gravity; using Content.Shared.Inventory; -using Content.Shared.Item; using Content.Shared.Item.ItemToggle; using Content.Shared.Item.ItemToggle.Components; using Robust.Shared.Containers; namespace Content.Shared.Clothing; +/// +/// A system for enabling and disabling the effects of magboots. +/// The boots "force" gravity for the wearing entity when enabled and on a grid. +/// public sealed partial class SharedMagbootsSystem : EntitySystem { [Dependency] private AlertsSystem _alerts = default!; + [Dependency] private ClothingSystem _clothing = default!; [Dependency] private ItemToggleSystem _toggle = default!; [Dependency] private SharedContainerSystem _container = default!; [Dependency] private SharedGravitySystem _gravity = default!; - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnToggled); - SubscribeLocalEvent(OnGotEquipped); - SubscribeLocalEvent(OnGotUnequipped); - SubscribeLocalEvent(OnIsWeightless); - SubscribeLocalEvent>(OnIsWeightless); - } + [Dependency] private EntityQuery _movedByPressureQuery; + [SubscribeLocalEvent] private void OnToggled(Entity ent, ref ItemToggledEvent args) { - if (_container.TryGetContainingContainer((ent.Owner, null, null), out var container)) + if (_clothing.IsEquipped(ent.Owner) + && _container.TryGetContainingContainer((ent.Owner, null, null), out var container)) + { UpdateMagbootEffects(container.Owner, ent, args.Activated); + } } + [SubscribeLocalEvent] private void OnGotUnequipped(Entity ent, ref ClothingGotUnequippedEvent args) { UpdateMagbootEffects(args.Wearer, ent, false); } + [SubscribeLocalEvent] private void OnGotEquipped(Entity ent, ref ClothingGotEquippedEvent args) { UpdateMagbootEffects(args.Wearer, ent, _toggle.IsActivated(ent.Owner)); @@ -48,7 +48,7 @@ public sealed partial class SharedMagbootsSystem : EntitySystem public void UpdateMagbootEffects(EntityUid user, Entity ent, bool state) { // TODO: public api for this and add access - if (TryComp(user, out var moved)) + if (_movedByPressureQuery.TryComp(user, out var moved)) moved.Enabled = !state; _gravity.RefreshWeightless(user); @@ -59,6 +59,7 @@ public sealed partial class SharedMagbootsSystem : EntitySystem _alerts.ClearAlert(user, ent.Comp.MagbootsAlert); } + [SubscribeLocalEvent] private void OnIsWeightless(Entity ent, ref IsWeightlessEvent args) { if (args.Handled || !_toggle.IsActivated(ent.Owner)) @@ -72,6 +73,7 @@ public sealed partial class SharedMagbootsSystem : EntitySystem args.Handled = true; } + [SubscribeLocalEvent] private void OnIsWeightless(Entity ent, ref InventoryRelayedEvent args) { OnIsWeightless(ent, ref args.Args); diff --git a/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml b/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml index 708cd59ce1..b26836298c 100644 --- a/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml +++ b/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml @@ -128,12 +128,10 @@ sprite: Clothing/Shoes/Boots/magboots-ert.rsi - type: entity - parent: BaseAction + parent: BaseToggleAction id: ActionToggleMagboots name: Toggle Magboots description: Toggles the magboots on and off. components: - type: Action itemIconStyle: BigItem - - type: InstantAction - event: !type:ToggleActionEvent From cbbc65195798c58710dafa5e91fbf72f8e80236e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=81da?= Date: Mon, 24 Aug 2026 16:00:55 +0000 Subject: [PATCH 008/197] EntTable EmptyContainerCondition (#45583) * surprisingly easy * touchup * comment * refactor: cleanup ContainerFillSystem.OnTableMapInit, more xml-doc for EmptyContainerCondition * tested --------- Co-authored-by: iaada Co-authored-by: Fildrance --- .../Tests/EntityTable/EntityTableTest.cs | 33 +++++++++++++++++++ .../Containers/ContainerFillSystem.cs | 21 ++++++++++-- .../EntityTableContainerFillComponent.cs | 7 ++++ .../Conditions/EmptyContainerCondition.cs | 30 +++++++++++++++++ 4 files changed, 88 insertions(+), 3 deletions(-) create mode 100644 Content.Shared/EntityTable/Conditions/EmptyContainerCondition.cs diff --git a/Content.IntegrationTests/Tests/EntityTable/EntityTableTest.cs b/Content.IntegrationTests/Tests/EntityTable/EntityTableTest.cs index 3f55a423ff..01c8ae0932 100644 --- a/Content.IntegrationTests/Tests/EntityTable/EntityTableTest.cs +++ b/Content.IntegrationTests/Tests/EntityTable/EntityTableTest.cs @@ -8,6 +8,7 @@ using Robust.Shared.Prototypes; using Robust.Shared.Random; using System.Collections.Generic; using System.Linq; +using Robust.Shared.Containers; namespace Content.IntegrationTests.Tests.EntityTable; @@ -17,6 +18,8 @@ public sealed class EntityTableTest : GameTest { [SidedDependency(Side.Server)] private readonly EntityTableSystem _sEntityTable = null!; + [SidedDependency(Side.Server)] + private readonly SharedContainerSystem _sContainer = null!; private const string EntProto1 = "EntityTableTestEnt1"; private const string EntProto2 = "EntityTableTestEnt2"; @@ -206,6 +209,14 @@ public sealed class EntityTableTest : GameTest conditions: - !type:AlwaysFailCondition - id: {EntProto2} + + - type: entityTable + id: EntityTableTestContainerCondition + table: !type:AllSelector + children: + - id: {EntProto1} + conditions: + - !type:EmptyContainerCondition """; [Test] @@ -461,6 +472,28 @@ public sealed class EntityTableTest : GameTest } } + [Test, Description("Tests each possibility for EntityTableContext EmptyContainerCondition.")] + [RunOnSide(Side.Server)] + public void TestEmptyContainerCondition() + { + // No context results in failure. + var result = Run(Table("EntityTableTestContainerCondition")); + Assert.That(result, Is.Empty); + + // An empty container succeeds. + var container = _sContainer.MakeContainer(SSpawn(EntProto1), "containerId"); + var ctx = new EntityTableContext(new() { [EmptyContainerCondition.ContainerContextKey] = container }); + + result = Run(Table("EntityTableTestContainerCondition"), ctx: ctx); + Assert.That(result, Is.EquivalentTo(new [] { EntProto1 })); + + // A non-empty container fails. + _sContainer.Insert(SSpawn(EntProto1), container, force: true); + + result = Run(Table("EntityTableTestContainerCondition"), ctx: ctx); + Assert.That(result, Is.Empty); + } + private static IRobustRandom SeededRand(int seed) { var rand = new RobustRandom(); diff --git a/Content.Shared/Containers/ContainerFillSystem.cs b/Content.Shared/Containers/ContainerFillSystem.cs index 184eb02c0c..0ccc6a7192 100644 --- a/Content.Shared/Containers/ContainerFillSystem.cs +++ b/Content.Shared/Containers/ContainerFillSystem.cs @@ -1,9 +1,12 @@ -using System.Linq; -using System.Numerics; using Content.Shared.EntityTable; +using Content.Shared.EntityTable.Conditions; using Content.Shared.Item; using Robust.Shared.Containers; using Robust.Shared.Map; +using Robust.Shared.Prototypes; +using System; +using System.Linq; +using System.Numerics; namespace Content.Shared.Containers; @@ -71,7 +74,19 @@ public sealed partial class ContainerFillSystem : EntitySystem continue; } - var spawns = _entityTable.GetSpawns(table).ToList(); + EntityTableContext? ctx = null; + if (ent.Comp.ContextContainers) + { + // Pass in the container being filled so conditions can look at it + ctx = new EntityTableContext( + new Dictionary + { + [EmptyContainerCondition.ContainerContextKey] = container, + } + ); + } + + var spawns = _entityTable.GetSpawns(table, ctx: ctx).ToList(); if (ent.Comp.Sort) { diff --git a/Content.Shared/Containers/EntityTableContainerFillComponent.cs b/Content.Shared/Containers/EntityTableContainerFillComponent.cs index 199c737c98..6d19e309be 100644 --- a/Content.Shared/Containers/EntityTableContainerFillComponent.cs +++ b/Content.Shared/Containers/EntityTableContainerFillComponent.cs @@ -1,3 +1,4 @@ +using Content.Shared.EntityTable; using Content.Shared.EntityTable.EntitySelectors; namespace Content.Shared.Containers; @@ -17,4 +18,10 @@ public sealed partial class EntityTableContainerFillComponent : Component /// [DataField] public bool Sort; + + /// + /// When true the container will be passed into the table with an . + /// + [DataField] + public bool ContextContainers; } diff --git a/Content.Shared/EntityTable/Conditions/EmptyContainerCondition.cs b/Content.Shared/EntityTable/Conditions/EmptyContainerCondition.cs new file mode 100644 index 0000000000..a8b9bd00b2 --- /dev/null +++ b/Content.Shared/EntityTable/Conditions/EmptyContainerCondition.cs @@ -0,0 +1,30 @@ +using Content.Shared.EntityTable.EntitySelectors; +using Robust.Shared.Containers; +using Robust.Shared.Prototypes; + +namespace Content.Shared.EntityTable.Conditions; + +/// +/// Condition that passes when a container has nothing in it. +/// +public sealed partial class EmptyContainerCondition : EntityTableCondition +{ + /// + /// Key for to store container that should be checked by this condition. + /// + public const string ContainerContextKey = "Container"; + + /// > + protected override bool EvaluateImplementation( + EntityTableSelector root, + IEntityManager entMan, + IPrototypeManager proto, + EntityTableContext ctx + ) + { + if (!ctx.TryGetData(ContainerContextKey, out var container)) + return false; + + return container.Count == 0; + } +} From 967c45c1c5eee1a9d232b0b4c87a53a53ef76109 Mon Sep 17 00:00:00 2001 From: Errant <35878406+Errant-4@users.noreply.github.com> Date: Mon, 24 Aug 2026 18:02:46 +0000 Subject: [PATCH 009/197] High security door fixes (#45611) * door inheritance fix * wip comments * cleanup 1 * move static price up the tree * some comments * undo name change * cleanup * more tweaks * formatting --- .../Components/LayerChangeOnWeldComponent.cs | 3 + .../Doors/Airlocks/base_structureairlocks.yml | 132 +++++++++--------- .../Structures/Doors/Airlocks/highsec.yml | 115 +-------------- 3 files changed, 77 insertions(+), 173 deletions(-) diff --git a/Content.Shared/Tools/Components/LayerChangeOnWeldComponent.cs b/Content.Shared/Tools/Components/LayerChangeOnWeldComponent.cs index 165cd41e69..5e999e2dd2 100644 --- a/Content.Shared/Tools/Components/LayerChangeOnWeldComponent.cs +++ b/Content.Shared/Tools/Components/LayerChangeOnWeldComponent.cs @@ -4,6 +4,9 @@ using Robust.Shared.GameStates; namespace Content.Shared.Tools.Components; +/// +/// This component changes the collision layer of airlocks when they are welded, so rats can't crawl under them +/// [RegisterComponent, NetworkedComponent] [Access(typeof(WeldableSystem))] public sealed partial class LayerChangeOnWeldComponent : Component diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml index c046705ea9..a34d91014f 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml @@ -1,8 +1,13 @@ -- type: entity - parent: [ BaseStructure, StructureHealthDoor ] - id: Airlock +# Feature-reduced parent, compatible with the requirements of the High Security Door +# You probably want to inherit from Airlock rather than this +- type: entity + abstract: true + parent: BaseStructure + id: BaseAirlockIndestructible name: airlock description: It opens, it closes, and maybe crushes you. + placement: + mode: SnapgridCenter components: - type: Anchorable flags: @@ -56,8 +61,6 @@ visible: false - type: IconSmooth key: walls - additionalKeys: - - woods mode: NoSprite - type: AnimationPlayer - type: Physics @@ -71,13 +74,13 @@ mask: - FullTileMask layer: - - AirlockLayer - - type: LayerChangeOnWeld - unWeldedLayer: AirlockLayer - weldedLayer: WallLayer + - WallLayer # Unlike airlocks, this blocks LowImpassable (mice, rat king etc) - type: ContainerFill containers: board: [ DoorElectronics ] + - type: ContainerContainer + containers: + board: !type:Container - type: AccessReader containerAccessProvider: board - type: Door @@ -90,9 +93,6 @@ path: /Audio/Machines/airlock_close.ogg denySound: path: /Audio/Machines/airlock_deny.ogg - - type: ContainerContainer - containers: - board: !type:Container - type: Weldable fuel: 5 time: 3 @@ -121,26 +121,6 @@ - type: Wires boardName: wires-board-name-airlock layoutId: Airlock - - type: DoorSignalControl - - type: DeviceNetwork - deviceNetId: Wireless - receiveFrequencyId: BasicDevice - - type: WirelessNetworkConnection - range: 200 - - type: DeviceLinkSink - ports: - - Open - - Close - - Toggle - - AutoClose - - DoorBolt - - type: DeviceLinkSource - ports: - - DoorStatus - lastSignals: - DoorStatus: false - - type: SoundOnOverload - - type: SpawnOnOverload - type: UserInterface interfaces: enum.AiUi.Key: @@ -152,13 +132,62 @@ - type: RadiationBlocker resistance: 3 - type: Occluder - polygon: - - "-0.5, 0.5" - - "0.5, 0.5" - - "0.5, -0.5" - - "-0.5, -0.5" - type: Damageable damageModifierSet: SteelMod + - type: Construction + graph: Airlock + node: airlock + containers: + - board + - type: PlacementReplacement + key: walls + - type: LightningTarget + priority: 1 + - type: Tag + tags: + - Airlock + # This tag is used to navigate the Airlock construction graph. It's needed because the construction graph is shared between Airlock, AirlockGlass, and HighSecDoor + - DoorRemoteWhitelist + # This tag is used by door remotes to allow or not a door remote to normally be able to interact with a door + - type: BlockWeather + - type: GuideHelp + guides: + - Airlocks + - WirePanels + - type: StaticPrice + price: 150 + - type: StructureAligner + - type: StructureAlignerPylon + +- type: entity + parent: [ BaseAirlockIndestructible, StructureHealthDoor ] + id: Airlock + name: airlock + description: It opens, it closes, and maybe crushes you. + components: + - type: LayerChangeOnWeld + unWeldedLayer: AirlockLayer + weldedLayer: WallLayer + - type: DoorSignalControl + - type: DeviceNetwork + deviceNetId: Wireless + receiveFrequencyId: BasicDevice + - type: WirelessNetworkConnection + range: 200 + - type: DeviceLinkSink + ports: + - Open + - Close + - Toggle + - AutoClose + - DoorBolt + - type: DeviceLinkSource + ports: + - DoorStatus + lastSignals: + DoorStatus: false + - type: SoundOnOverload + - type: SpawnOnOverload - type: RCDDeconstructable cost: 6 delay: 8 @@ -173,48 +202,26 @@ - !type:PlaySoundBehavior sound: collection: MetalSlam - - type: Construction - graph: Airlock - node: airlock - containers: - - board - - type: PlacementReplacement - key: walls - type: Paintable group: AirlockStandard - - type: StaticPrice - price: 150 - - type: LightningTarget - priority: 1 - - type: Tag - tags: - - Airlock - # This tag is used to nagivate the Airlock construction graph. It's needed because the construction graph is shared between Airlock, AirlockGlass, and HighSecDoor - - DoorRemoteWhitelist - # This tag is used by door remotes to allow or not a door remote to normally be able to interact with a door - type: PryUnpowered - - type: BlockWeather - type: GuideHelp guides: - Airlocks - WirePanels - Networking - - type: StructureAligner - - type: StructureAlignerPylon - placement: - mode: SnapgridCenter - type: entity - id: AirlockRCDResistant - parent: Airlock abstract: true + parent: Airlock + id: AirlockRCDResistant components: - type: RCDDeconstructable deconstructable: false - type: entity - id: AirlockGlass parent: Airlock + id: AirlockGlass name: glass airlock components: - type: MeleeSound @@ -227,7 +234,6 @@ enabled: false - type: Sprite sprite: Structures/Doors/Airlocks/Glass/airlock-base.rsi - - type: AnimationPlayer - type: Fixtures fixtures: fix1: diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/highsec.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/highsec.yml index 2e3091e2d0..0c1ed023c7 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/highsec.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/highsec.yml @@ -1,124 +1,24 @@ - type: entity - parent: [ BaseStructure, StructureHealthDoorStrong ] + parent: [ BaseAirlockIndestructible, StructureHealthDoorStrong ] id: HighSecDoor name: high security door description: Keeps the bad out and keeps the good in. - placement: - mode: SnapgridCenter components: - - type: Anchorable - flags: - - Anchorable - - type: Rotatable - - type: StationAiWhitelist - - type: InteractionOutline - type: Sprite sprite: Structures/Doors/Airlocks/Standard/airlock-vault.rsi - layers: - - state: closed - map: ["enum.DoorVisualLayers.Base"] - - state: closed_unlit - shader: unshaded - sprite: Structures/Doors/Airlocks/Effects/airlock-effects-vault.rsi - map: ["enum.DoorVisualLayers.BaseUnlit"] - visible: true - - state: welded - sprite: Structures/Doors/Airlocks/Effects/airlock-effects-vault.rsi - map: ["enum.WeldableLayers.BaseWelded"] - - state: bolted_unlit - shader: unshaded - sprite: Structures/Doors/Airlocks/Effects/airlock-effects-vault.rsi - map: ["enum.DoorVisualLayers.BaseBolted"] - - state: emergency_unlit - sprite: Structures/Doors/Airlocks/Effects/airlock-effects-vault.rsi - map: ["enum.DoorVisualLayers.BaseEmergencyAccess"] - shader: unshaded - - state: panel_open - sprite: Structures/Doors/Airlocks/Effects/airlock-effects.rsi - map: ["enum.WiresVisualLayers.MaintenancePanel"] - - state: electrified_ai - sprite: Interface/Misc/ai_hud.rsi - shader: unshaded - visible: false - map: ["enum.ElectrifiedLayers.HUD"] - - state: electrified - sprite: Effects/electricity.rsi - shader: unshaded - visible: false - map: ["enum.ElectrifiedLayers.Sparks"] - - state: sparks - sprite: Structures/Doors/Airlocks/Effects/airlock-effects.rsi - map: ["enum.DoorVisualLayers.BaseEmagging"] - shader: unshaded - visible: false - - type: AnimationPlayer - - type: Physics - - type: Fixtures - fixtures: - fix1: - shape: - !type:PhysShapeAabb - bounds: "-0.49,-0.49,0.49,0.49" # don't want this colliding with walls or they won't close - density: 100 - mask: - - FullTileMask - layer: - - WallLayer - - type: ContainerFill - containers: - board: [ DoorElectronics ] - - type: ContainerContainer - containers: - board: !type:Container - type: Door crushDamage: types: Blunt: 50 - openSound: - path: /Audio/Machines/airlock_open.ogg - closeSound: - path: /Audio/Machines/airlock_close.ogg - denySound: - path: /Audio/Machines/airlock_deny.ogg - type: Weldable fuel: 10 time: 10 - - type: Airlock - openUnlitVisible: true - - type: NavMapDoor - - type: DoorBolt - - type: AccessReader - containerAccessProvider: board - - type: Appearance - - type: GenericVisualizer - visuals: - enum.ElectrifiedVisuals.ShowSparks: - enum.ElectrifiedLayers.Sparks: - True: { visible: True } - False: { visible: False } - - type: WiresVisuals - - type: ElectrocutionHUDVisuals - - type: ApcPowerReceiver - powerLoad: 20 - - type: ExtensionCableReceiver - - type: Electrified - enabled: false - usesApcPower: true - - type: WiresPanel - type: WiresPanelSecurity securityLevel: maxSecurity - type: Wires boardName: wires-board-name-highsec layoutId: HighSec alwaysRandomize: true - - type: UserInterface - interfaces: - enum.AiUi.Key: - type: StationAiBoundUserInterface - enum.WiresUiKey.Key: - type: WiresBoundUserInterface - - type: Airtight - - type: Occluder - type: Damageable damageModifierSet: PlasteelMod - type: Destructible @@ -142,12 +42,7 @@ node: highSecDoor - type: Tag tags: - - HighSecDoor - # This tag is used to nagivate the Airlock construction graph. It's needed because this construction graph is shared between Airlock, AirlockGlass, and HighSecDoor - - DoorRemoteWhitelist - # This tag is used by door remotes to allow or not a door remote to normally be able to interact with a door - - type: IconSmooth - key: walls - mode: NoSprite - - type: StructureAligner - - type: StructureAlignerPylon + - HighSecDoor + # This tag is used to nagivate the Airlock construction graph. It's needed because this construction graph is shared between Airlock, AirlockGlass, and HighSecDoor + - DoorRemoteWhitelist + # This tag is used by door remotes to allow or not a door remote to normally be able to interact with a door From a9bcdbb357fdd794c6bd938f756fee03ff2ae551 Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Mon, 24 Aug 2026 18:05:04 +0000 Subject: [PATCH 010/197] Make counter tables block crawling underneath (#45612) Initial commit --- .../Structures/Furniture/Tables/base_structuretables.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/Prototypes/Entities/Structures/Furniture/Tables/base_structuretables.yml b/Resources/Prototypes/Entities/Structures/Furniture/Tables/base_structuretables.yml index 56ea104445..07bc8f2fc7 100644 --- a/Resources/Prototypes/Entities/Structures/Furniture/Tables/base_structuretables.yml +++ b/Resources/Prototypes/Entities/Structures/Furniture/Tables/base_structuretables.yml @@ -55,3 +55,4 @@ - TableMask layer: - TableLayer + - LowImpassable From fada4ff458d4ccd1f8335ef87dae49bf8b5972de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=81da?= Date: Mon, 24 Aug 2026 18:37:06 +0000 Subject: [PATCH 011/197] Station Map Construction Graph Improvements (#45584) * commit * surprisingly easy * graph improvements * new sounds * all the sounds * redo the sounds and also microbal * Revert "surprisingly easy" This reverts commit b0b0f8aa6b07ac7a0bfe915a50c0e3294e05d68a. * Early merge container fill PR * context * refactor: cleanup ContainerFillSystem.OnTableMapInit, more xml-doc for EmptyContainerCondition * remove stray edge and add a few more comments * microbalance and better construction behavior --------- Co-authored-by: iaada Co-authored-by: Fildrance --- .../Completions/EmptyContainer.cs | 2 +- .../Containers/ContainerFillSystem.cs | 2 - Resources/Audio/Construction/attributions.yml | 30 +++++ .../Construction/place_electronics_1.ogg | Bin 0 -> 9946 bytes .../Construction/place_electronics_2.ogg | Bin 0 -> 12057 bytes .../Audio/Construction/place_glass_1.ogg | Bin 0 -> 7212 bytes .../Audio/Construction/place_glass_2.ogg | Bin 0 -> 6812 bytes .../Audio/Construction/place_glass_3.ogg | Bin 0 -> 7665 bytes .../Audio/Construction/place_metal_1.ogg | Bin 0 -> 9814 bytes .../Audio/Construction/place_metal_2.ogg | Bin 0 -> 12743 bytes .../Audio/Construction/place_metal_3.ogg | Bin 0 -> 8497 bytes .../Audio/Construction/place_metal_4.ogg | Bin 0 -> 9552 bytes .../Audio/Construction/place_wires_1.ogg | Bin 0 -> 12933 bytes .../Audio/Construction/place_wires_2.ogg | Bin 0 -> 13621 bytes .../WallmountMachines/station_map.yml | 80 +++++++------ .../Graphs/utilities/station_maps.yml | 110 ++++++++++++++---- .../SoundCollections/construction.yml | 26 +++++ .../Wallmounts/station-map.rsi/frame2.png | Bin 1685 -> 1762 bytes .../Wallmounts/station-map.rsi/frame3.png | Bin 0 -> 1750 bytes .../Wallmounts/station-map.rsi/meta.json | 6 +- 20 files changed, 198 insertions(+), 58 deletions(-) create mode 100644 Resources/Audio/Construction/attributions.yml create mode 100644 Resources/Audio/Construction/place_electronics_1.ogg create mode 100644 Resources/Audio/Construction/place_electronics_2.ogg create mode 100644 Resources/Audio/Construction/place_glass_1.ogg create mode 100644 Resources/Audio/Construction/place_glass_2.ogg create mode 100644 Resources/Audio/Construction/place_glass_3.ogg create mode 100644 Resources/Audio/Construction/place_metal_1.ogg create mode 100644 Resources/Audio/Construction/place_metal_2.ogg create mode 100644 Resources/Audio/Construction/place_metal_3.ogg create mode 100644 Resources/Audio/Construction/place_metal_4.ogg create mode 100644 Resources/Audio/Construction/place_wires_1.ogg create mode 100644 Resources/Audio/Construction/place_wires_2.ogg create mode 100644 Resources/Prototypes/SoundCollections/construction.yml create mode 100644 Resources/Textures/Structures/Wallmounts/station-map.rsi/frame3.png diff --git a/Content.Server/Construction/Completions/EmptyContainer.cs b/Content.Server/Construction/Completions/EmptyContainer.cs index 6d26bb5da1..4455d1d79a 100644 --- a/Content.Server/Construction/Completions/EmptyContainer.cs +++ b/Content.Server/Construction/Completions/EmptyContainer.cs @@ -34,7 +34,7 @@ namespace Content.Server.Construction.Completions foreach (var ent in containerSys.EmptyContainer(container, true, reparent: !pickup)) { if (pickup) - handSys.PickupOrDrop(userUid, ent, handsComp: hands); + handSys.PickupOrDrop(userUid, ent, dropNear: true, handsComp: hands); } } } diff --git a/Content.Shared/Containers/ContainerFillSystem.cs b/Content.Shared/Containers/ContainerFillSystem.cs index 0ccc6a7192..e3849db824 100644 --- a/Content.Shared/Containers/ContainerFillSystem.cs +++ b/Content.Shared/Containers/ContainerFillSystem.cs @@ -3,8 +3,6 @@ using Content.Shared.EntityTable.Conditions; using Content.Shared.Item; using Robust.Shared.Containers; using Robust.Shared.Map; -using Robust.Shared.Prototypes; -using System; using System.Linq; using System.Numerics; diff --git a/Resources/Audio/Construction/attributions.yml b/Resources/Audio/Construction/attributions.yml new file mode 100644 index 0000000000..89c26dafa1 --- /dev/null +++ b/Resources/Audio/Construction/attributions.yml @@ -0,0 +1,30 @@ +- files: ["place_electronics_1.ogg", "place_electronics_2.ogg"] + license: "CC0-1.0" + copyright: "Foley by izzl on freesound.org. Mixed by iaada (GitHub)." + source: "https://freesound.org/people/izzl/sounds/790525/" + +- files: ["place_glass_1.ogg"] + license: "CC-BY-3.0" + copyright: "By lsprice on freesound.org." + source: "https://freesound.org/people/lsprice/sounds/88851/" + +- files: ["place_glass_2.ogg"] + license: "CC-BY-3.0" + copyright: "By lsprice on freesound.org." + source: "https://freesound.org/people/lsprice/sounds/88852/" + +- files: ["place_glass_3.ogg"] + license: "CC-BY-3.0" + copyright: "By lsprice on freesound.org." + source: "https://freesound.org/people/lsprice/sounds/88853/" + +- files: ["place_metal_1.ogg", "place_metal_2.ogg", "place_metal_3.ogg", "place_metal_4.ogg"] + license: "CC-BY-4.0" + copyright: "Foley by jerry.berumen on freesound.org. Mixed by iaada (GitHub)." + source: "https://freesound.org/people/jerry.berumen/sounds/770810/" + +- files: ["place_wires_1.ogg", "place_wires_2.ogg"] + license: "CC-BY-4.0" + copyright: "Foley by Clearwavsound and SiriusBizdness on freesound.org. Mixed by iaada (GitHub)." + source: ["https://freesound.org/people/Clearwavsound/sounds/541035/", + "https://freesound.org/people/SiriusBizdness/sounds/565193/"] diff --git a/Resources/Audio/Construction/place_electronics_1.ogg b/Resources/Audio/Construction/place_electronics_1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..6fa8b7b830668e762986d02882d1d77c2be66ad6 GIT binary patch literal 9946 zcmaiZ2UJwc((WE|mdt<%1CoYtUFvLwkMS#r)96eQ;y zRkBD>1VlvN2F|_ry!+nz|Gj#8)$Z!9>Z4Ha`Hn zJj9XN>xyLDJ5u5^PxXi_sX+A@N*OV! zZC=_!VD!v&2)U8^cSn3-2MpYcECHhhr7Y38_+WTmA_f$7X%-Cd1eQKYiO!yfseb9j)hx@dLw_akPLA|$LeW1ZipwV%lDKzNs_QQMm z_`F@14ub$0*OBon@GN$wtWU@+Tx?J=4q$Qa5*Tp|J3J;^G0)1b)HbEorl{7jzmmVd zlI&s%7+k#b-2fT3$$9@zv(k&V{NJ0jO%E?14f^uE3-fyy4tX@kdkjC}g@=0pFs9OI z{w|EDf~)9zS4prbxXJa#DGz>EzVfdioQE9%q!G+rF3i24H_!s(7%?4JscBc0Y0wqt z9{HaizYDy8hOnhs#oPH3iA0%RxWyL~3(X|DOLnOVoDiJ33QHbIJ{Uw&B(G%@(58%c zglML4HxwkMTtv`eh;apsCA=@GDy;fEIId*dP1E-SW++sjxlbeQgkz#g7a+0 zk_iiDb-}fIBgyOe4YVK?5|_eV)1Y}N?{8QXJWL(xKz;;Qgv_PbHxL_v)QLsv?jZ5` z*nh)E8jPFi475AVALboNU`ET9#}>=t_L3qt1JMJ|VTp*mhbjnALo;&cy7^yN4g&xz zGS2rp;7SM%Zvhp3bTlkAz-{nlAuIPAN&oN75@y}KF2WCwb6gH;jhf<)SO@&6&BDC zkU!L|}o{lhP2>Nee{X262Fln$CIT>dbj(DFM@IaRMGQj`J z92eU6(agQk97>fODr5YE-$YdpL`P}l)kRe_=!{0`+{fuHHEtM6qSx$Ob&emEQ z)OqXG{+%$FX|p`-{*TN#PZ4%xt9;xSqsYha?vyrEe8v zk^EQY*o3}G41E(Ex)B`76B2J5l3du3<{*gKD2~2vq+*0*1$hTw%AJ9B>a>@Y_ zoZ^u%^3FU%#kHG6;IW4Xr~`m6q6hH~iWySu&5#>H5U0iUAh~m6#}wfL@lX*sXCAfr zN^16)VsB0yR4FtqhuS=(1Y86Vf|_<9t&53$CKMj_v% zY78NXu3`HS1Ze@3@LXn%A^3Y{?10Q#YQTsL4*dDzN7O<-z;& zias|MG&VYIH@XbeIx=S$es1OM?=0`D+}myxtafKp*K%KsGg{FB?Qk^qOgA_VtaQB9 zR&v@03K;u=9Cl`I0GCxcT?NOw5BTnw-i*w(P6l^cSdvm$v|Z`M_qKRjR$a^6=#}NN zxRD-%)3SJ^!E{7c;pax){#H;CVxilaxk-rGX#NJsNUJO%^)~N0CLXq*?{+zrSUGaf zE+Zp;{}RLoux%04r03Tr5!yl5^z+UGxT#pmGg+vAij}bB2MV)Ks!7s$^;c9RV`T9a|=opYHw3ax*)D?kTg9 zbLG4huVO&u>vQ_y$ha{xP*e;$99&`G(2y5z2Qre;VKwV>t`1^H6Z*yHI+VaKgzL+O zLv8TX@x=wCeTgkI&X17uw3P`)4=LJGVg``B#IgfO?gEUmEF7*iAVb7iGlYc0yQYvt zoVoN$yaHX?_Ha08g#cK0T%;|5N=O%kgj|mpkOQ;08wQ>`1dO@RfDvd8tvMxoE)tABI`cxK`NPtMOw6p}DA?jF1w78ipC)qy4zV8}q< zb!ne7;`G13KxjCKc~F9|>ej!DD(TX-FJ;S}GAkCF20>i2o@|c-8TNw>0I+~h2$bVq zmA}CaCFT{ixG=&O2D&jE5kzYiir7fKO9byq1Z$i;=y~Y@eq_(NnS%wxlX(|~Zu zE*69ar*zGj6(e%S&|rQ-&5OYV(zge93yO4FbtPt*r;A z0;(4jG26MjE+(^Gu05{>L5Sj>pTgHSIkNlM9YjBN;;Py7pa5So0C1VH+lEi|z`9bg z@k-bz45is$ROnEoLWSjh#xCe&93q!i18u*VY8I}pnr4ndye*E?M)5@Zk70^yJO;q4 zC5#9VqGS{ClZMbjdq724JUEb1-adjb#KT*q7A7Ghd5?7+v&97{u{~tb!MbGBG=+Xy zW)gs|p-B&+FIhxHbr|WUa67)yf;$Wg!($8Xg3w0!2GBS?{zR@?-$5)PpG$FZ6aD}I zEC3Kg4r6CeMn+P+yb?tjO%+2OOA`me7XZp3zE=QW4*cNYV5`XNw=1|Dau(Q}cdK}u z7wq$ni0JaFf_Fh*-jt>9U$W0{%I9kAA-}CT1qB2;JG;2xT-;oOe+_hWzwaIAhI4aq zaq|lcBM?h7pFT`Y4!d1bDtTiyu+)(jN}*<|Ci&O*E~2dk6Y;dKZHsZgkYS^$OnF7o z-w(fyUWvE`!I@wzD?t_V(l@`JmX=U%+prK#N|!Fc75L8at=ikiw8V3m%_=sgh5Xmc z>#rbqC{Kke0Ciq#-vfzff11sgRf8;l7wIbxPH~9%jM%+AFrO(%)&4F0ML+pe&nsww z1EZ`ReqYy8lI*m3UG2zW`Mzn-BQ0gx0*mXo%IquC$*Rd$uRLm$5^w+MZE*Ozv(=b= zm!;7-D@<;8AXjOGUSeT(E_h(Kb6>VNe@f$8A`jW`*sjSBB6$0p?iI<;`x@SGu~L$s ziJ+d;x}x6V0u4sJjnoD|e%iO*=28hwOiNNl@9&eWSFHGa*^vx^aw+^Mu}xG~iSQI7 z?X!9!3@MKLy3|F z`jqq4#=EFW{H3jkg7O-kWA8fmhZTy6UQf4gwb?rcxN9DAf20rMaRl@e8tbSs9)Hek zHm0L?qFd9ODU}!+Y#AC*=W!MH{Ae&X8{$BAsE$l7gNVsxRXjVE=-j-z%DWOuC6E3= zJi)}w5UZU|N;SHO*x3%^dZ~-(h*`)c%3`0kYxr<<^_DtOedFV|H*HtdT<*o_GU^H4Oz@?sd$pb#ttAcV zKV9zHif#3^U0(a{l4td$bnp7w;`^7=uHh~QrI4k*x6Ny2+qNpONB6z59N_G)FoJRn zNfyTPUh)3&Bkn)n*&hcp{x0>Teq$Lt{{(@vL9!#;d=(-W&lNZLIwvQACWPy%WIftj z!YV(!IsN_~eW-XjVCYknCSgs=VOJTAe&)xt_>LCp9C7O%fKaW(l}=qt;_HLr1C`a&b{IY%4fx5KsXZL#&y6|;PICV%~O>gbB8f_#B1 zrC2*@rMdOr-f$s(-7RYS^LVSFIvew$|pzGyM}+umP@)l5>M0FCM_AQ zl(~u?AFfh%jqY4vEJu=snE7Xqo6D2FeD3}W2~qgydY}VXSLSkOICn&kwC=RT4cZI1 zZHhKjf3h+;mG?3$m1mtYuqb>-EvHRN{R#a3dASC>vp{GoB;xRe&s*x>X{apH5zFr0 zmGr|p-^_ja_^Xqkv=+4xo#Fi?-|M2#^_nMx+y*|D3x2iPFXcrmXj)%Xzhi0i!v-Go zYT#PR>T89VoAp?K*r*T)aC&g+m^b_<;gieF`JI)cS>rjyq5O5zSno*Atk1%6Wt>m9 zoYl{Uj_Z zJlz?`n#rIY+-PaAQE8h+Ctb{#b5ClWZaZx_KJP7QZe1p+au67xKf>6$=Xj z$tZbg!h!bUM_Otp;#mOMkEcz<4-=~0!i) zUVx{?^SqYi@1zD|Iz`WiUpCzPOr@38!bkPwj;AfbDpy4W9}_EM%SYTV?rA;2SUM5k zps7-6`Fd0Fno-U1Pct^(Z+_h_)kBjdf1c2d4c2+McKjq~huz+G50@73+!fSJG8Rsi z?;>l<-=DkEtRRSo$;j5i71~#qFu!ZP;$*|hfD|&p#QR6nhJOmkTUe&{Hoo#Pp+oUz z70*0HSUFCUguH7EfzON8L%iZEx;od_KI&d0%Yn=2JKiEB_ruZ(5Kpw*^ww7&-~90E zn~%B4hMmv$QhjdKzY13Z<0Ejm`sBi@ViD! za4Wd_-bt5s8_*PM*8W(TfmR@n=aEp6Np>CUVH>R8}Bh**$eQ(|a!GJm-wz&Ne zX;oSmL-w)Wi)9Pj>e#%s3%vqp%BOyHY+)#U*&&QQ>bQz4 zbcMDojg4U+Vo^ zO~1R`?{c?}R^k6Ha>IeR4B??WT^k^jObj$*2ZmDa`MK{+Ui+%5tp!J)UWv(?h>!n}vL7Eav9Y}5yi6F?O;SPJ zFqQ&9rHeGc*l(ipF8obVv4qtAnDHp2i_Ya;s#n zc6DGKq=Mo9!3Vvah+>SqaVT+edkPzVdP~WpU5log=hNgz150meBVQIi}N3M@Od5d>qr|_Mp3C zIxx*|61<~Y-#06p7p~pr&uY-Cp#kRdei6z8rifGmCgUa=;l1#=uZ_AxgewG5H$voS z^2gd`mSv1jA0N~ln$@mV1YB>}-+kT7yM5#JZ$hG*t!%v?2ognHO8XN119e=w<47ht z_lZBfwtuWy^&|viG-A&}Hc0qqMPf@)So*=)_cFdIo4ThSj&CRK{W{!%4%+OoZYy3n zVK9J{qzof?ALjYn{(5xZBs(uo+4(hFr61RGepIn`v@K3jS#rgP%-#EW_kl)MbhI7w7+cfc2%PYd;ijxX zIZ(c`ulU_n+t>AL!%ewC%ZL%5C%&D-`S<-e8}U2h6c!KWydXakbKd5f_PUY*WtLm7 zy&kqMkFM(LI?-Rt3lCGPVnVdzSsbYgN(y9kOL)1QmL|AXXMa5W^~-@v1A~(>B?YAC zGgCk*@k7HuJ+H?-Il3 zRxyGDipz*EAIIYjFte-=d?7x%1F}Rajd<; z<7i6jw^T?8J<3)PX7isH7{Hw9z5rU$nm!`?Uz(3X_jSd%c*0Av?Z1npH_m5Wq13;j zYR_PwJGZl_Jxfy#7J-S0C!Oai)?Wn#04qdJX|`l@$%?2 z*>uKS6VL4JrX?P>*3`Bh_3;xJoVA2=K)UbtmijZ*H&|xhXd{nIxe7^7Ad@Bwk=_#) zY2#-1GGzd~9o~+23x1@Q-y-*BWHsFSTHn}GcF1$MVpJJF_<|#;YJfq^Gm66`f^Ne- zn1?M-M{^3ds5-^<-JhYmxORuW;ZKCT$&%hw%O||=U^+R{d`oo(H~cy)eugvuC`5FQ z)%li>SWsIvBZo~t{Uf^^_{2|(TF+Y!u<_-15@eg)eZEgOLzb#r$$wu#`z7H#{>}1n z#N%q3mLrWR~+OOAQU|jWo3_ap(nQMD|Ar`2@dc(HN<*-z@c~5#Mu7T zkfRc`rpWcItn7OpkfU0lCcjNtprrb?GA8WTXg+<7e4sC>KHa#-EIzE?OU*;g1o!ga z`*;Sn|M{Z@E=Ur0wA~{fc-Qf+qqMZD{&xZvLBJ3tB+{rgN(z|kn-AF`3y73!Ys0mK z^4eOR&b&Ep4Hd8Nsrp#$R^Ahx=lzR1I>Mc4aLzWj0q^-?l+6g<%u;Z>vl&+=eIX*jCYqQ~BFj1@1pYf7vOY`}&^LHdP@UEp_nL z>D%y4U)^9s$1NNE#hx}(A`fEK7|}v?^AitzE9YaO18JG10g??zhNo@9juuXTWklpN zq`tW45uo78b&EdvtS|m-q^Gi4{<`k%7aS_YEI_cTGbv^9ilST*$+NPOBZirZjfXh~Ur=o&)riLe|!6II=OC<2P(4R z9=<&7;t#XNWfuj1----!Rt?x=j6{Y5ZI~7Q)Avmh@3c?N{16d@uD43V*4(M^q5+>5 z9EU9P%#;~l3n+EVi^NQd5vh}b*sqL_!p7esn~&_cj1rf;nJ7IYv&5KumJxp)@}V_Q>XUS;Gqb@i1E)>L z{-N6QYmWAn5Q71OCMzFaHN`ZgFgxKi70WD{Tq6%AlEr)nRui}8f)I`Hyv|WkS0hWR z!WVY2_^BO%CJn*E&nr(=-2xmAV}E2VSB%9pJi~WRv&w*Y>(t}6zIbOzA|(xBGG@@7 zks~oFt|hmy+bc5R#klH!yi{#F7PX zgfyAC4u_VWAil@W*fi^-uNLo_81~y2m4s7|^5OJZ>CvSehVuMiZ;x+ck-5J4r&*e9 zQ=jlfkiOpi-7O6|&Cao#Ne| zj5rBsV5zJNxFzJp{^i8~4*ypg0}{0S3sxCDR`H0OuD|lI<)L~r`Za(u@bE>BS*T4% z21Mnk0jC_^t5{>6ZeeBWr+ycO`F5|aGOD|K|45_%%v#_pdgkZc`?_zQ2Tb|9(lfvm z3spb&98M)`NSir}eFTqTWg>GNc`Ii+@dySFSpX(f)4l9G(Zb&_AwpWn10umP<1 zwO5lKxrs^xZb15r99v=$=?;#G)gUZcqR>?09y3i+PJ8Yj>+o9Tk;8#io18t2MX^fW67?U){8dEcF z;{P;>v;o&t-n48|KT|&oHl%+!sZVc^5e7(S^(Gq!Fz)sm4H3CC5c8-^SqP58 Q?jQX8$U>hOlQ{|eA8mT5Q2+n{ literal 0 HcmV?d00001 diff --git a/Resources/Audio/Construction/place_electronics_2.ogg b/Resources/Audio/Construction/place_electronics_2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..0e5b2199b4afc04a241d430149914c567d9a81f2 GIT binary patch literal 12057 zcmaiZ2UHYKv+pb!1VmUABrOQSl5-LT5fm0sauk%Dk&NUVB?${IQPP4$k)%Y)Ifq@z zAP6ENIY^K<;Qzbd_wIY=-Z{N}db+x+x~hIvQ#1R-(ozG!0sgt5YJUe6P6LV%Mu__h zXA^6eiz!Gz{Xa`QAeVzrkS7;A|LeNgc|nP1j^?M3JO96~9^Ai-gh9HlwWAg96K6}9 zowbSfC3~16OpsrYpI?k$7{;M)Zsulc?O+L$cW}3Me&Jwm?%)c)5CXyf%L6X^KpO%O zfinWiu#SM?cr5^+0D$MLaPmY8MK~In&EbhcDqM^@_#;us$POCQXo1dubueKwY5>3k z0yv0cb5|5?1|=+M*khfuB&;8c7r+Rk)D|R&Tla69I^B!W4N2JFJ=ox7O}(w#{--(>}n2zJAQl?B)G5+6&hy~~Z2{J~K*EPI8gY80U? zFrjT))<|IJ<1#3*n*L8me5nTvJc}#=tr>+Z(FOYmcs|M*Wc61q7!Uxe2|RiYRr~<$ z`#?W1!un)~Ta8L&L`YskQ$-8B+zfTx&9UxoSa)ANRH(rxU%gME246xA4?~So{+1UZ(&nromOL2Tw~u? z!QEFudbtF2F5bmyfGq3O{Qsv}=p~!~?@h+4n-h=$ZQ12S-{r(Aug==#%uRS{;cfu* zsf;>zhqLe_7vU}!DX=|qmFqz&59}#l{g)Fi+ztRT0`whD^gW<8)Op67MRZ*5VqH|Q zpeZga@;_gJmv{jcVa~8fwh15-iZ{MAO9050CY$I1>0e3Uf{5&8Sn6=bI;y zXxdmyq-Gj>Z6PY{(t~z`v`e5b;k_vxSt-M*E`y4ssp!8WPs%jH(!x=2j&?Pjypz@# zTxUI+N?16l3+~k$PF;Cd3k64!$TarqTFt-w{((iIQTkwu#3HyOaw^TXme>#+{WeSg zH9&kZ_ut_o1NzPQ3r%N65X?80zy!*i&z#8U8b_X(CD0AeV~mM?h$swJRi|Y~y9Qlq z4g-J?ic1v#tGk5qUlivhL~-_VRQ3z@abI*LZG)2Q29KN;a^K z2=ZtM-PO|6(s8%fd*e3!G1Tyj+dS5H9vk!QM%aG`)_+9~00vFSWlSPXq6NCrgCENh z|8?-cBF72Z^_srtHLFqutI8<%z>e^fUEvWbc{O1b4Qj&?YPYfL<{F}gV{Ib4dPMou_q5nqZE~qM`;>a3T^@j!QYka;dp9@3={xNNYzQ;p-A;X_)5Hb zufR8Yb%aDgy2hXc5kp9?06|7D1sqMUF$nLX59z=EEj@VnJ_i86njzp%mP6P~9-v?c z793fJ5`~qZY)Vw}Lr`-pl?paVctBW0O;f9nN^3$>Yx=s1Rt=j9m5R!qrWTdF7PZz` zvWix<{gANvq^8#Fb*+gS^Xcn;I>~PHLMnRTEe52zVUvBIVeAc2|FBYlUa}I^!q$kW zxoW9tnd@n4>A9Qh9ct-de3d||hRP(hmR60{3XNr zdL6${KD;l#_(xq~U7f>vol}2}J$-J`k0#E(*7Dwp&GkCIDmP{|Ew@>u;gSxhhy62; zOoPMF3i~^sOHX=12BSw3LoeuS!EKcebl_a)E|;{icr4m76+CHCX*wdVYGtX;F}nQBiuu*R=bPc*u6T z)9FNV>A)@bJt=Wl9Ec6b1vaR9WwM#Ma00|300HwVRD*)E1LjJh{sWe$DL}yN@)*%U zk5on2FeAq~J7Jo!irwjnln5(0a#Wo#8?B14%|>F>Z9n9Xn{2@Ht|P2@kfZuGg`MO2 z(br5V1XuIS1{I0XRTl)1)oNBAxhw*m2USAwX!nCa&Ko$WarJRf2jnxWmA%Hb2=0B&4dps$Q9Lu@gBM*Dtw{ zp#(l5T;gi?wZW_tfD6b35SwRRq>ziSy&s`IsAx^$+%LgNEZZ-^Ug)eW3x{j<-zQ?L z9+ZH?J1`PNZ0PGsoID-cws1J81rJzvT!t-yN@NFwgiMbZkOQN*69(oT0$Map@Gwmt z)Rck+O#}J`4K)RAOXET=%SmfGc%K6vqKe>zhf*LE+0bC6OF|FUb9Tc>U3&09fAh$5 zQWH{vFqo^RAm_CZWdwU+AZXE2HxLTwj(&Zc(yA{qM5Un^K_xa23Kpg9D19yf_z529 z=VcyY1L6q*8Jb*Bu7o9pNx#H*dSNg#(ua_9cBTiD%Mww8#{i#I{SshDAqx_~dM`T| z?9j;33xYag4F=A^(XJN+q&f)za5{n&QMsC#OVH~qFlXWbo)MCBL4pbterS(ch~4A?4+*sog(CI_mH3f7I;% zuHOHrk%4U~2)Y040GZDugupo=o%SPf_{}Ta7dldqgN0rj3Oq3ZLr56>dtM0Wp6mw* z2@W<8C2%+hA26bk`iK-4b#+cQbn->&7}rPefV>IW&=_?aP>LiGx@!DF)R+4Ta5P5$ z6%QD42=LYs41qCuC4$kv z0xUQ<0s#u;PGL!Tm8~NSm%e5Oi*4CUYhSz=sDr-9xWw8@pY{gZz>P7$oqyXUb z#bzCj>4tTrha@Y7#5+@%@Lp4ol6dsNT!FTOW&$aIhH9wWeor@vR(q0RiV$ckL24s7 zUI&djmsGp=gRhn_B7mQQStw8j0;TB&1%=?jfvoc8VS%T3c*~T6B%~x=AuglVxBx{+ zH|gsLT~bP_qQD#zNkI4M^KQZb(wLa4S699ZHsc%4xWPhTc+3$U5NLcrFqOm0uVha? zwGd0nqscGdgcksS5dad%U@R=D60ziQSK}#OUrV4&q(Xx51%Pr$z*QiC6+a>(!Xh@e zZ3&lE&MYLaeHoAKl6=t-5&eBt!Mhy)eNzrl{Y$=hQ@#)*s8T}9z{lNFUsc-DR9*h5 zrk{_WZ(^|T^GH|U@NGB;oPC+u9FI4rmBAx`^aJVen$Tq3?QpceQt5oQ)kgZ-v&j37 zh-wPG@B8$FPsKJr0YBMN@H+(=I6K&xWNw$tSmxX5^~*h4@9KUR^y+b%R}N8}U3rS5 zXQ%*z((C3MGdP>8agU0@Aoj9IMsL;Sq9k4(4Udk72^sMS8YdrRbW z+w{k%or^-^BI`=|D~U5M{*6e2f{D%t((L6V1!M)yIt*9jWc4k@+b}){R~c1ry8e<| zf!7>ElUW}5nFjq4)tk9*dCU7`+s2&)#l}-|+z(s2S&?=x^Zjol_i1xu+?z9TNkBA- zeVWOf5m$U!&_Rn3J2O4Qxtv^5B9${mP3}rts{)s(u_v2~O5&6A-YUQf=t8TX(5dKilteyR@}AWgO23{>1J&Su`*8qv*A+!u=L7 zOWrF>wAc@coklGcYEeeoy4FT)^E}-RE6X!i9v>RFQnS}wH@19vHY@phq|Qh!-MI;# zJDbF@K3!)_OI7>W(!15P;O3)+$O>ku=XKOBKChh&SYP4TBzMNxbfiz4=@bX((KOnk z2EEk2+*m0{;EOJPB$HNLxPDb3_OR-CPD)WSgQ{LbBg8Mfq!1qmN?c2@$I9t)KR{q3 z!S22w9YGV*A5`)cp4VR9C#zNN&kRyi8Zli1eW$;E7u*w|sADR92HZ7Yg;;gQM zr7Dc&nJG?FnD7S+3Ic`UmpUD?Tv=nYsuxA6ER?coWLqVh%C7%=o~T&|Kb}GBgVkfh)~afD{s3lw=-q2c z%#RFZIJ$#zmax}IrGYnfcdJQ>HU}$hJ;=3L8s4ScFQlri_ToMh8(_qHk8`?j`FV=u z7io+7i^(oiv224hODxxS^49awYsz1CMIlXZ_NwKO@kUwwJ6?7N`vh57g4E;`HcDKn z=hAood^{KQpSint=6Mp|<3Aa!_jM#2TXk*6QfL4Te1hkU3R5bkS80x+t^E}cWwQ_K zeWkSoN~!LbdNhlo%4*3~pHDLDI*r({N0tG=7%EZy-Ki>gCfRo^^qI*(EjSs(Ujygz`Q zta@!@EvvxD!oSXRn;<4HN=&4OHU)S*qQD0j!(E#Q zJ%$5rZ{`O69A=dXFHj3rK!Wv1EVz$SIIDSfx;&J-bouiWK?sQIXaSOPYSgG(T$-c1*hE;2xgO$NpB_ z@zBlhFWwSnWhYy^U-4>4Xt%N7x=S=*Gqw-`xGW;&>uSpR(Bog77sa&lDw}KeOtcK8Ov5TkHzbjNdHKxGaeh6@>9Ni6@sDr6m)d2T1guF6+C zuhMC&WV%=xK-;vE zBhlXTMy8&|xb|rwnrHqR4C0vGTnd2UdqmA794>s+mOEP;zcPdp&^qnn(vcn2v!LBm zGW8TnYVW_TB6nO>x_oN(eCpI)ug)ttsz>VOo5r{wa8jpJH}ae0#F^ngtMQ@GXe%E> zQJh^I%Fe3M@5Fr-_;O2YdZ9jv*sn^1c?ljEy9V=neG!|Yyq;-mUP6v-rRfyUv23$p zg5=?HKaG>t6IER(_T}H3%kIE7??3tm>y=kN!x+C0sV_Ye?0MpDw)cDc*1)G058oGY z9n*U&GRqz$fL@sGH=tafdK zfmT&SBz@tF~Wl2l|U1QmVm|{lB^Eri_UiE!721 zx@v9Kdc4CEekfmyCWwB3ANs7oQZ%62=Myns?4D8#@9*WFlGc9S`JMJ`i1FGuDs-ht zjN?SD{Ogtqp3h@F9+EU@sjTsK*$+2h?il+h-*jQ~#F1)r9+-s%Boi1u1+Is&I?k3l z4#e00pr_61J;DX}A!9YE$uTT81X5)V0u<%nmTdV{P>82KX(Ww8ihirhP156(4o&q3 zqi;A?%EkgjXNObA*y_ivc?P1pT^&El)bWm}l9;tH74#0Am*0pxi$0KfxSre}8?o=J zI>5NY z#@&6aLG7jfOFyk*aBjvw7Vkq#etn;khz9!85yHg!oAT!a%eWTD9D;UcdHj$JZR7e= zGZ}q{+4*aMdIevldJBG`t|!)5Ufq~RMTo}u$?qn+*Ad;)#DVhmeX@Mlc+)L~-8atl zrPGTHF)87RmABFqk9P0uV_Jeri$yoMTWhOc>^?{s{VJxceTK_%p_2`srRD znWzDGp&1!tcV1m_vA-KO`xdL6OhEFdPM;8==|uCI+IcANljNO- z<*lJ0iA@6TSRI)OJ~5A|rIk~w^Qe)D=+6|O&< znhz~1M1%n~qjeqP_A%PnY7b%~4aGratmJ^R)nnpzwoN>NGYUTd&D=m=nzVo zGEwmdJF|}G28SQ1S4#bU?|h5<`?J9w`e|iaX)_;whkPND>Ytf3H)emDnfE84toE$T z;LJ^)r9w71(J%8_ub;?yuk(eHL=f<(>GIPr3g|$V_32rgg`T#RZGU~hNZ96cbKQoN zjew|2hXb)>!}W5R{o685l1k~gJG{``@KLS@Yu_n!L4Y^9nv8LCp|Y(Rn=$Fk(y~E= zH%i^$Qh4@dxVmo>Sy38Twi6ZLBvzkL9Du%SUKmD@*`?W$szPIG)6yEb?!e>+laW*$ zbskJe#!JS!toFQl=Ksm(pyB1h6sCTAwxizjOcs%lO^#h036J1)fAdMDt%`Q1*m~+F zn*^J&$sALJp{1PfF%CiG$q`-K0h_|D!;ysBJ*EvsDtPL3>yYx4pY6wk<{g0WJs>_< zVrOi=KiszGUpe?y>QKT)cur)&HX!d&je>=aZ#issv386U_592!(Atcb$fwb@Ov^kSCzcL3i z8@f2{2{{OQsZUmp?`d&mKy70uiPm;WrpTNDk@vm?+an<|Y2Kzmdv<@U%bsPn*94VI zdPEApK$7j5$n2oNO*w`P}i^mx{GTq8Jd4IhoRr=&=;WNhFoI~@i z-twerCp2~3Z_2%eux^B<1)NJs2!&$w*PnfG(1wa{zcxi*A8PMei63{nVjPu6?h}K;p_u2nN;Q78;Zj1|KF0JFN<-4d zXO8^EqTZS=di`fPQ8 zo|yFz1~8%Y6n&ZGx42R$!?7pFl8l4lUtA!{G;MzG5_u-^xwme6Yi5ieewZ|-{}VsA zyDbK-Gv!zVVAaBX4KM^@a2Nh_It zMJ=KM*9l!?h*k_7LABJ$|nh!VFdnmL@W^+XzhG8i?CSDSA@4dCQF$XR` zCE#IR|NBz{E;w|Y=%~9XD99%^KRx?(VS1O7i%UdYU}YFP*wbIz*!-0G{XlA?+v_!s z?Q^=UR`H%5N6q)iwJW#YrTV_cK;62R&zD*F+r;!Os#MhMIc_Ec4cGc0-o<8Ra)`-B zFFC@q~YfINQdhVSx!uuI~{B+K3y%rMCtzT?QSqBtM z`)?LU>kbvJ6Dt?1zG|3n^yJ-YR8_b?LqwdRt}tF+3O~o2hZVb;2*_04iDIHxRZ^h`t$uK$Gr;N z^%%5iN<}EGx88EWK4p%Ii#rm$R@9Q1`?jR>Zqlq&l*f_mLv2a}JzNoPh%)Gx+)%Bz zoSA#mABZQ3!!qqAC6X;*Preql9J3RXUu1;j&Z;LdOxJ7(&6KV-z3C4i8i(LR|9E>s0vvT3wU5lE`d*K2`1-xv@#S&w@>{54 z;`6z;*3zd@v%PI|ypx=vZa;699VylWBJxmcFHZ? zLc6LeuV|lZ*;EC276zaBIQ*~65d!=K*=lT&#(UlSF>gk5y+a^Gi@ZcR<=2ROuuFR`wXl#BUkVPpT(r89w^aqmlk>&vf)X1Y>5tr^N|AUSIy`NE=QRMu%@#(#} zt0E&Fvd5V*{wtq9Ri5~G9#q<6f8`k+)_<IFpiDrx6Mv%2nkA4Y&7;F|Bnp*D4(Y?%&+lsr$i8G#9(} z1ez@#A47*X6Y)g$NF?mU*0F13+<_vTsH({!D>o&cc&pKM6EGKRUVcYU6YTBG$qjr6 zcX_E*ma@Qc`g+&9tJ2%a+m=m1+BslRpp^{?(YA29cd!^5lD@rW)u^QMT}X-nH`AkE z9@iAeA4CQI`8auF10_TEs}xAuEzx9+)O$)9**})iw-Wu$s^RcQXzBIh0iCA`zJekL z-xIa+>yPdkH4PL#?!yFx_Ep~YEAmL8DAGQY;cPj&l_3Euugt#-Z5AsECFn;!XUuy> zF!T7Q%pt^%{b@qnTVx0uJB#H|ii$Z;PFT>q5&KA8OyIY~hM_8>VFO}q�UJf-2& zxf?vM6}0obRlme6>AR5l8%WC-MVc0@FPKGcSfI(in&?a?Eq|K&g6Z&a=xWiP;I(hH zeNjcqu+Cy}=uF1WR4#{#g6uy-$F!!Y0SDEVRjOC9`30-XF*v!%M zyZA@;tipJP26Rm%yMGXDX7b|1lxl})S9v;7_Zg0{0BRU8e-)4!gbQd(2ACqIWSXe+ zTz}1=bkv%sD#~u0-`i?#n5`F15fHO{6Hf&Fc^vm6b#?)}sy%nld^2jPY)vY|!s|rk zZM}!s)~ihX6n$=g`WZwZG9t~WC`Ib^_GvVBM&s%UtB|(8bUVi}YrapHpyQFFXg%wl zoo1$rFz5Qa6pLnZip_TnRzu$IS3>Z3h?n`PZLfY(3M~n3&&x1w!je9}Dmu4ME~zyU z;=5^|v_BV0zxp7V==pP-&!qPPMzPp88vQJhJyAwo-Q0fwU%tuMNfI3rV@!)=nTF0QE#MFd^a`V9xA-GV-x@1}}Df_D%{zMxjRRT)Z_F^2g zupV2&;YD4@>ARbEWc05EdL*263ht31ag)xKiABzlwYcVM!jueX(g z{ImxKw`Ek?JZayy=|+ucP_9Sq`nvby&%SHiKA>X0X{*m?#>HN=1Q+A(`-Q|w$c2g&Bs+ZU4HO@kd0Zof594Cz;DAMIv zUt`rl%jvk|((y5y*fyQWsa&Q7LT!yrJr-#5h)AAC&JDj$A!MnRGw*_6Ld0A+<8m(^ z-B|KcxbtW*kleZ>>YFu{qTX@6B;y>~Wwkoy%`C)te(G17#qRP;ZB=AYh$3S~=iDg6g>EV!>-8djUZ!8SCqoT3aP})^BrI40TyZ!_gXfc-{3$ z{*8{!YoVXIum0|x=@L{|Ghouhr8mqsaWUv3OBW}UV&j^ub5DNMii28Hsv7y zXO0Z*z|>yF9n%^yzuyU@iMkgrri?!~wja3}f!%z-U=;{)FaL3)m%4eJs7lnu_WK>` zGm@unjk=C(bL>E7IB6hI1%Xsyl?o;yGl? z{H2vse+xd5D7WZJQvaau(x7O?d~1%+Xq#Q@)^>V+?;M$A1a6LQaF%7(B7tdQv`XvV*}+>K=`#bn zAI})1RhSs2J{kn)=M6Gerqqc#T6gAo)Q4BzBZlsNeVb=+A0M~m{3p)@$(71(A+q%+K@3bA?Y$ZR%eTR)ab_90Y8CO9Z49lo6dOzy3XD_v2+F^V;+6{o zUPntB6~5FpwDmtre5d#xzp85Y(|=EWeNHhrH-p`WpTa&+{i9h4Q*3c;R^z-0nvU8l z;l|!IS=StCUJate<{u^ZfBC%}Z6@e4>}Lx=7{Wy{tCXL9zxJLFGfLaW??B<$`IY{T zNk{6i@7Q`V9&r+$+8Ruwmdx2zY&SmQ;a9HZ%Q)9k$*DWhC_k+osLX3sq;Z`lbJu-y zts*{6Fl4Ie^joj{bztsIyJTku5a0{#8zf70wHwp!`d&?ppW|&-H*xpMvIEnmjz!y6 zSKG&5=J1cwUSr32V+M=MP#;Zfpp?ZGUb$~xHtx+rrJ=2Mo+6sTe!dx4$p$(Nb4OB| zkHfbQ-<q1vgNwD&@|r7u#C+i&n;Rd^_=DZHM)u|lc`Zq zofpsR2z$u5EBnKn?Y4H}++qU--@Yr=j@n9Dn&3cMj3@7xGhG{g-o)Mz%1*Y5pr1mbTYj`77P|aUHJIELGBZN4HYzbZWcyMVV7EMJgyJRyJreBn7#2;uT zyZNK+UwyYhT2q}olz)FiG4Sp>2SeQSDX;D~aXFr6L+{bjkQ;S$4>QBf>hfDBfx#j7 zg)kz#toN*OY^X*#we}ZH`Z_=Ic`ys1wTfat7F&|95Weldl4@k{>viYVLgr%3w6Fzd z_ripU+0m1ZKvlS^pxo-xuv}2Nz*nK2p$hFa=2~jS_As4n!8A594}-VyXHReA;4)c? z2}Lwz^ehGAblNVWO`a+bzxO(t6u@9)Q3juX43#o=3IC+s&0c@>Xnt6EgP1G&Vd=oh zEN7}0V^C19p>B<*XEk^Gxr$6c-k%g8GZgyn#>YDwluMdRIbmzW(?`=pGEJ<7`nc4`W)7a+!<_{4w8X9tNdcXQKQ+XSP OtKp~2lX`Oj3H%=v{P(&5 literal 0 HcmV?d00001 diff --git a/Resources/Audio/Construction/place_glass_1.ogg b/Resources/Audio/Construction/place_glass_1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ad575bb318641b4ee962546e681b3c2c5cbf9725 GIT binary patch literal 7212 zcmai22Ut^0vpzrwRYX9V5rfh~Q33%8iULvtCt{_dCNC_=~w1f@<0s;ym z(t8a>RBWJNL6BlW?voN;$Ig&3i~o` z3Jf9)7tRGZc?Qy^7(yTZwd5iLebC5ohPLxx4{axnlJk&k$!-7Ve?7fSJB%=ZZt3ao zarjJtJJQF~$(+s}sgG2USCE%KDvv=*;ay#Vojv{Bk=lM2JOj@8`MUZAp=ifr13%Mq zZb26v16$($Cgp;BxKg$w##Ls)k~$%KGBtmkQ!VkAqf z$vl>=eODNImZlByfgy;e|2nhJ&@omns6Z( zZcSDi`)E{AMgU;7qZSeh1!_XNNqqV>eEl_u!BMd@tFk7%N~4O}re;P2@C4ggTyUMb z5Il9^x>ZJ`P2+W|#z>p#NW0BQN5QDS+Sc`#o3ut(9mxRY9m1x)K@}VnE_jVCV2X&U zV1!&~CPA_#A4DY=>KD0rRe5GLc$7Ez_Seex*K*RA0Jp2s1OJEO}ySuB;MV_;5bF`KJP$Pujb93!!m&RBxIRwJZ^k|sVdiXmo6);F2$@cRoE zrS{oFPq44Rj+ogj?CVGb0h>saMMxzcSncv4vNXivC@4~_XiaEWocc-(;?O6 z>ZjbNIMD#bvPuBOx9b<~23BG9yeaimYZ(d=k3&&*A__Pa>5`}c7orDAR7OA_su)DY zKOMIsHoRy5=s()OXQBt;x3I;J+j1JYRPbqBlv*pjOOiOm=V;b7l=Q%ByXHF*4n2 zH@Y`?oZr<{*=}6Pb)4WjdBJt2!PVx$b*qNI0%j*{UQPx7BXVdVauA#FMlTum@5srM zN_ef3a7aH{%qm&pa+-S#sWkKMhtdM}|A-uq*y4=X;^^4L=me>lG|w1PSyO>eU)6H+ z|J(i*Il2L2pn=HI4iNiCu^@@J|OoP+KCW0X>hH;N>Rq zN|Sgwf|=TXj~GCm#2AfZfMHW1NC<)s0VhXr#|9*7`l(s6q8G%N^Re*!4#9|GZbeS) zu7g2|8j@;_$=IiyYx8)iy;_Fhx5bYpAa}JF+3LSjVFhUq2AM!mD7pvTAs8^E-;8y7G(0Dq8%05w4xzdc5d#|UvcpF-q#y{{ z#sGerQWzI)h+7hx_ZJ&Z!5Hv~8}Mom^SMs(8cn5Q1~Ez|W`urT!lW7D8NU&sLEMPf z$mp9HfmfTbmoT1YM5y;2#<nY{!;17T*}mymY-RS?0>!gXeo zV8wsKW-9X4#`RZ%G|p3#!GP*Wb#;6Y{8Gx3t0q>(N}w~yvk=8P^(JHYGupHWXo$SewN8DHVwpurbWShmzE-QQl_SNmnT`AA)`s0ktX zInnNo1<=FS;o@DJ&B$8cV~;C;_5lWCTiD@qh$gV@zTZAD*R>{d(orRW;!Xl5Evw8b zD_^ellX+UPtZ72HZkOu%@~EAafZxlb2{u!=3(A(7rTbffAoN_{jBT!Pt`XY!G-rY*}CrlY%tKU!P}>vFDkqHQZabBXt3F$7RS%Q8~b_x&914SIev*c5Zao+hvD&D)MXu|0elFX0u zlp~H=dzE%gSjX>i=2loFyA0{GQR-*}z-lp%%%zE=kogR7a^?d7$c1AXdZlC@Q~lC< zz=}fVH^8AA_-y>pR0P;T=CRR7b@7?{%5{+rbs+((UYc;ajCUDCz$!C58HcM(O~wyo zr_fl1C*br^4aqn|a4H1a-RF(DS-d>em zK)5(X&;VCc&+qMrUJ%B4R?>u*cJkXK0O6+IN<~yJ8o|a_jYLyJ9)`FU$t|C~Ztw zSI}e_fG0d z;`KvV6snVoWfiCJ8%WD_ntP*AKnpogchJKYZWPnWz`o0h4blQp+=T>r2QEYr3?C6B z^Eq=LqzD4PQ23mIZ3P3lG^K@{hcu*65ym)aR3tY}Uz`GpOm+mQ=X^$pmI!d5ojh`u z(}@!ug$y!Nklqtvh?6Y62`pL}44^>i9I*DPteaM6t&F597>ENXxK(y!Sj#}rM{uBz z^gJRCC9**3f`vdX)}7mF0Q(++0htjI!6n_59nPi6x)&S+e5(eqpySpA1W@nghl7qn z9HSBNxDQA$hoS`02t+(P1WEgYim2MeB`_>059CZn=rS#5;;=0FL>*KYl9-GK;($t} z0i3{go#r$G(fT72K*LAr0yltFm-Q)JWv8Wgl_-VkRG~BlKwQ5-^2Pyz_h1tQ%`vk; z)lB=el_dq)q%kgZB|?$FjPd9wKBrjpV)iLkRA&aLaf$?Kr3d)P(&~?RKme~@fPh^@ z(7Novgnt(%{~m$z{r@OY3hJyq=HP4HCAg1urz+Rsp}#u&{8gl9?7aS?X8(8f{@+G6 z-jx7y|Lh?3$LuW7AC`UQx+*AP4q2Lx++3j0dzt}G4BsCSg?dkp0Pe{@g~LjT1C*dp z06rk1iPpHxKs;VroRUUM9TV0#Il!AmoI=HW0V%4il)4F;sA&y76oqOXCkH|f2VR}x zm7?%qN$0dv1)4mD2k|NBTmb^e+8Z3*TMkuEb&9VC_6He)>J+C$wdR24{rsU&z3TH( zspR|Zqw{oMi-KZXlWuL=#Q+a{kw-&|s1^>OiiQ!<2;hdDxroGn&2g(P?m!CwYH?>B z(O8oXE!KQ6huRN7CPg2KgAv_Xh=B9X9FYgepqF<pjB`Dw3Z6txH0nH`a45Rn+b z?R0n#J{GH6Xk)gU3r0pDVWQEU419^9;kxlJgw0jdDM-_}ZqCw0NBf7jQUujKW|C!d^rKBjxD zCj7$dTY`4xGP@WbDLFj-N^=XVyP4}6|;cwMrsXEv(W zE_NgzYCbW?68{CV?wV8an?3C8gs=6w^iAL#XG_qXaQHbzc*3pSZP3=rhSJ$^Hk5+c z6TZcx!y(%__qU7n2U=GK>MqtN9gSz%-P&p$Rc96HJz#9jMDeXzD1`kXrZSeq?Pi|p z*{*}sl@6WeD)xm`>VGWd-g?cSsO?c6a$E=MkUa3Ekr8$$v@&PoML}8ni!--aPRNL1 z-fkE730Of;*kZRe+4s*+2WDtxTV@jK@yeqf8L%8)wqk;|2J@8|p!(%@&vMTsPE5vj z4qwp`$~%Uw!mlr?li+!u&oEcZbDfp6kDBAQ?QUQnotqeY%XXA?+6|J25WEE+^41n1 zL~ojql)xLsZmt2$_J>{xrXssPt@eeNofX!6lya@B*!>%N>o?pf>x?tI#~@4lmWQH! z$;ynEU_Gr4LTdc-r*%VlzOW%3Zv2*DZ9GsO6SCWd#jCl++Q8p!)o;&l&WbmluOHme zoNz!7mOS}Y$u{P zI~5x4hni$phDkj9YD(~TWt@j38jq_I8CkbDpp71c;>zOmuiuFFZ@HJgwxy@zZ~VMe z+i$vbbGFUNCth$eg$T(N7H4KQ+$?Joa*_E|$8I#VZ~aJ59(2Z?-i#DT@QHH#YkSxr; zAFR=rmEYxDbldLCUx0YhU=0eJtHR|*W&LaktDSaC4Uu&N2hq7V-O}cRO3>dQ)$|{) zuTuZh3`6cWX5Pi}o{cr&azA2>b1S_wvLr6t?$sW}AS>(S?->R@V%aJ)95CyNSXWu- zTQ2IUjRmE|hTrmw=7+Jr-ox5C=Wn1q#8J=j!}!?V_?sj42aRSQ z$;Rb&dOfkIW1&8XVvwpTIKWi(i(}Zl?NuaUq-oc&)05&Rs-_6Dh#Lnb4+nSKoV;Jg zzfoe4eDd-xw6ZMjrCnoz=kvqsed-K#`wbfRJn3PILow+sE-ZPbj|<)t(baDCedjl8 zJ9@j>agFPIT|X@On?vWQ9At~XsBkP#fcMJ?>f6o-oc?PDrzqL$;p+h1m*5FgyUbhVDE2m2I@1M_;Pw?O4 zN55PbqN;EiII>lRU$S&%5*BzacGs0vvsi#2_Tp+zOUFnqxJt6JxP_j8`mQmWd$7Vi z0)!yErs}7@;VT||wgDk3pFdwbdu?O3_?Bx(Kx*3alC*pE`8v5D_CykTgQX(Kd6$*d z)>fz7pB1HhEJ^!I)R-cPPX$EDUOby`e|~$z;tca=er+4y1M|1+c!>FI84&2*o|_3vbTBBIk;E#35NyTpJ{$UPu>}(0J-?pMa@qBl6Kg7 zcu~g7X68j}kgqADqVu0uQgzB#ZBlx_j<88gs&`prnem=gl{nPCps{R-)sZ<=$}D2z z7XM|{fGo@it)JK}(HqTJ-4ith*Nl0znB&qe8>I7Fia9_?s`oKM4YE1t&o+IP&*t}g zFVcCUL)D0a3`RZ97e0*$Nbt`LF?YoyX^rjtW2`52|t0g)&7tRgL})7pf&~@ z9jc41tK-SB-?433tzyp^pyD~gyhxqE&7u>7K8xO#kVw?Ps7Th)0_8#apnhkB@hczzjH6V2P=3E_%VpT8PU)_sGBuoaW$a@`*7J(Dos+N^$$Kt>Bj3*q_XyjAB3O*B)C zO#0*dHB0&LhO+NSk^&;;Rz$=qrIPhDL)^op;(cXNeoUt3?mSj*K^>0#lS}+bE(?aD zD(mKIGTeL6A`ahp-!?5=XyRpzALFtyJg%2*A$={VRMYz_d`akS0NacR=GUuZoGB`` zCXX7TrsMPSS@7DARk}k8u@DRMf`q--$mnZlPB0Q^=}L*KP0v{QhP&38(1-5KT3%WG zGm|U*zbqnp1&kgJx|ux9;;lNHuH1T}w7#_cd+ZU%^330i&q<15J{7xXW?CbIbiW9g zCMkV0!C)h24%~^WoAs)%utFp6y^}p+o<6|DL|xp+a-?PDcBW%)&OM^~uPKq=u~+}N zWlFDxbeB^SzGYr!+^r``$z1Jp!(6@9!4p`J9$&e8ifZ*%#d|(-pDugG5z*o>g@lgd zOs}M~`xeeT^U^6xFy!R;CBI%HHC9(GuIo13{l2);x zp5h6)ZGTnL`B}S@$%tu*0i4nSywSIX*-vVfQ7QRa{7X0V!Wfg%#%*1Hs@+tyecxWl zKl$U_kH=q2;H4>XABg z;~i}i=08@8OIdH-bfVgx<*1)n$itD*F+z>W+lhFxZPODM?OPY0*{3Y!L^c~gHsLgD z5paFX1%NYmXLZ_1xz5lmJcUH1ObbdgJ)3vc|)RW5zkoSZ7Z)@9#( zp-`dMR}`_1t3TH7!^Sz&e`eq{J% zwe6O%+GbMb>b(ER14Oyo9eEbd=$0(y*TaUwkIWesZC~=dh literal 0 HcmV?d00001 diff --git a/Resources/Audio/Construction/place_glass_2.ogg b/Resources/Audio/Construction/place_glass_2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..37ac6bb339c57cc686d839e38b44eaddd64621e7 GIT binary patch literal 6812 zcmai22Ut_f@;{+>LyJM92BZZ62}OxDG=)%vKq6J8iF6H3y`oVF0wN*=gbNbkUB;#j+1?>Zi#uFis0gAnZG(ofgWgZ7IQHb zKe)LBpM4^xB%1n_wj&;kXc{IhkHPJjKX3QWqhV0~MqJhlOrhGE!f9NgaC}0g z5ah=<30g8;4U=AEQ*t<{DloV4NJV34U!87Wos3`!aJvZqG*EsZqvSu@VYe**|K0FM zx^*Btuw~aVRM#s8g zb_l{_Q60xnJ-`}7y-|wE{)n9u5%v?n6nu;P_v@?xFF+C1yu(>RR0*RrZ-H5;fGx5> z!a`<65?GK}@Dj}!Vk`{cB!F+VnlFl zWEiZK(FuiIaZdRNm{XZ$%5|!EgLQ!;4Ds>@u3)d*5M!pSSqY4i=($=A%`Pkae!-&r z0F!$c_Z;jl9*lTlL>u~QQl53Wx5cVPV; zIS>e%ctK3keNwPp%s2;g$rT6x6*6$090+JZzIalA57fStG&OrA|l)lSL^Ok%K`3qyLV=34$| z`#W;>Qq(~Mkz++s|3~E9!J;fcG}YGe zC+d-0cK-K>0n~A0`%zK(C$TQR7b}(*2gk5b&Rk3vD!$+B6*F$gOdEpGcVOT) z*EaUEg5X-vv!m*R8OF9s8n%j7gG&AriuMzk#skJCPA;TAMbfwn=@G)7)Tm*vXm9`7 zg`{XjQYMXN*^?SV2aWw7xR9P8NaKzEj}WK#XGKjJ*}H*99-u}|WW^rjg?eTGVr8!+ zV6}xb(P-inNpd3jySb3uqW#?#N&9)Rwt(tv|3H~UY9u}Q5=zR7eI7~j+VB5hk>rLr z?J+@n{x$YFlFxZ!JPJ^~dH&uvqNcP18G%8CWo(8vn_bRs3}shwJPKd43)#JO0qm;E z-n#0Fs*pKAttw;J>9X0n6?K(MY~8uWGIk56x2`6)s$#D3y>z?oT+2~*RaHgZJfGUa znd>|@*J5z01k+bi@wTPBr6p{xO!~Q<}CFB1|#2agW;%VucTd) zSI(I`kz&0v{in8ixvdVH+M4Pyaj}s7wne9}4G6+M?hHq@8lb!$Z2^S5I*xR#Z}+0) zVDO{PV@um!e2prqmXYkb1h4_)V?(hQU!b~4h-wOh#8hXMoZ&hh=twy6ExOnRE2bLZ zK z2@Mv)R!6Uc9E`yLE%ZR$AqZPB`=kz-l&qU1WC^0U6Aki?m=zghv(u zxwrthPe1N8${1uuRJ@!{Co@jYTtXQf1H7yHaiD{n0|Kb`3gSS=qL1(iM8X?1n8UCl z`2;#q3W9Wwf{Lid$uHvE<$RDcg`gAsoJqim7tr@$I??oWA`k~uDyPT*+jWrn1iJe? z8bBk&BpME2)#+|Q;B>eKSE;giK9wdD0K^S5j9>yF1P?Sr&|^_?s783L)fO$Jq>izl zKnW@um@x&LpyZQ`on=}`U^=ovjZ=c;mmc6H%dbCD00BI90s?Lp#qXFAssAcW{xt&S z`+q1=4(cpf@BtA`cPHdT5Q#b( ztSo-&7;`7+0p8*oEFLikNZBUAsvqNvnl!V6rAX#1@Yb zL3|>8D?tFc2ZN&r>tPyrJ}C{r{vbo}d@h*q+@+ysVMigVbR4oYrReX%7#sfF3%*ChuJqO=5y8b94nDLr~t)iF`x?)9?ubs0v1ss(f<^7OSr8<=27$ zqQd+vyz#YqQLkEv@$-Aajz_u)5LE_(j!g#5VR+r>4rY9oZG0L9?xQbHOvdf4^|w~( zK#tR~EG1`R@N1?|iqpP4Ujnwhl1?UQUp_ZNsceYu2Ophi3CIAhYIGJ4Q$ltFLGdCO zD8J^;5Y|&fEa3ePnwQf-km zvDE1rhSp5gQ#>t-9Mx6Ita~va)OzbyuwmgU&plrb{C2&T)S0qa098KE`Y5&c;`NR1 zt20KAwLSZ3^k=DC?8&q$<4>sjS6_21p&jmhBCFJ!%4FL;Zh2o0(yrMp{%(BnWM=M< zKkn{vaGug4Y`8|>ns>a?fpxC218t<5%AIEzK!4);c3j=Pg`I)Vc~>FKw$bioPN`oJ zc_Op!6O!(`ZU=3dTu~WX`)JqdH@o&1-zEv4>bl5^5q46QHg;V#6+ z3eAC!%{LM_c;K@C09xklkJrCNIfAf{%Su{OJ5 zcT%?-f|{N3?d8w&<U8^!rFZP|!9Z$5I7@Bl&SdEju1JQmDEaB} zK=<|0GlPD_CWC=Ul|xIPo)>v|ie?Y0F0p0ivC!D7VYsP-GIeTq@Ak~*Kjxti6Es-_ zwEjG5#|~y4WAu_vPH9DCE@?oiJ%63b&cn3OB`3rHtfi&QmjUvJhCQ{b^==3g*?`GTRW;- zBth8C3c~+b-sB?*H5o}P^lrW#Sqr>H{bQjr+2Ed9c!x;J4FdRy^zGoz)2QvMbGGxQ z$oF(=<|3dv@~W>{3QN0;y~IY&4da(;HBb@aZM4VecMm+3+4U#zDOTh3Q?k2cp{1Ei z!UzN5mN+5k9>Yqu20F5xEaUjYUGr1z2ke_|9^0LxFP^~{h;LYzD#|%RJ89SqP48&- zT*x=R^doOST$W+Y{CHzvX7c(2@{XHth`~ed!c;_?-IkVcIQ;qhB*zq$9=P{8=Tnrb+8%LT=gwg7EfEV zg{qNq*|?dDvof?&eEOF5`|Cbq(c+XHt^=(tHa@N44b!b--w;}wc-_F34YMVpN-vu? zxgacBZ%E00T2%2T)2<~-Cg)MOm~T=}2R96$E_jMA{2`66yJnFALppqHd%7#;t*m-Q zBlDay!Q}RL9jcwkAp^oy9+w-H3LOuD`+oN*TqE_gyT0QJ0;z1HVkBmA_Jp_*>nXW$ zvUSgi^sj3}4>nhLX;W%79gHDFg2_3er zZL4Myg(lzs_z<6$Q$Z`u<}DvLiST#)lo+6C@Ch^Tk%8F0PYo}v8dX=vC6bKUKQ20! zZR~l2SpC+UthRge)Qn9b_-%B@NG0Gws_MmEn9P1gZ_7KQVXq?5BA;>XGs@51hrWdT z=JqAVZQZGNhqcnwdp^my)YrcAeO3`YZZu!MeAM;4K~l&ja%9yhNzD1UCws$9#oF*Z z`O(3zD*D4J8?KSMUO)&Xy}m7N{()qBBmL9SRQa@s5l&L_W!bF4)~q*8)*VG(*pHKW2V6dsKO4orny^R&!hYn9<_L{VI@s z&1~N>;eE`l&J_hI6FbR5Yi#`;Yxc83F+_3ZX=clQ0 z>6>t?W{bx?n%@<&u%Qa?t+u);#VsDB#=TLIS(ETmZXpFXouN4v&--|z)O)COXspH= zGI)Tm6RN);G?W+rdA}X?Rn$+n_PfU$%OAf#wP1R>(!(aF6Yzr8-| zmjc(4f)2QBZ*7c?RzQIl_TmB0d>t3^Ty;(Kx7(F>?pp-2qfRCz-VMssXN6v-Rm-{L zH!O~3R)Rm#jP=K(4}Gtb)6DN_r~foxI560pvKoRu+*ByO{Xy?$ERHM-IY!@$Qmk78 z)oqw+80^ceRD-Nkr$)scbupOoK1!{`sG3WR&_+|aCfND}dc@S-4?T#WRELcAPEBjH z@aqLft13@Lw_0dRf0uFK!{w#-hS<Llt%&e%+KbGw)HnpF&>n` zoi7#d{5nfMo$(}V?iRPvQ>wirb+L@IaimZGV3u%T#{#8zP~z?eotDv4Y9>Xm4;=k{ zTfbX(YR~Aqb5=#yVx&*Dsd*nMzHsJ(MeiS{M%|-POzEf%`fGU1(+!mqDQXf>yN_HV zGtuaa8Wi^62(!EE=_!0*+l^Cg7*8zk5_w9S?=yuL z7f7p~SXXJHHes(Hg-2)Ja&@@wgI->E{ARIhi+%d(yBj9$x!lHZPlJaqKlrudHNKCC z{!D%-?YRuEpemkrfT3x-?;gG|CN=#7F&-pLpVnU&bDpjwnWMS70=u`?^S}qe$QZI(l&6g}c&(3{RdFX4Y@wD!01_q5(e*E0W{D{u? z<5!7X0;Ohb$9>1)w&t=w77s=!MEIJv(f({od3-m{Y8K6rUBx?or@oWogh&=@I%<|> zY4`NZ2X}XepQo~0zfYUkdf|?btv>qY^2yQ?qKpKy0}M|(}~z;asBltUF)hah~}ist*^YZ8RixrKEFFo zPP=yY(}+SC^4!&QNq3G=8lxvpZng4bXoadPbcphBV9m0 z>>J{<wj!yq^y;Vd!j)V_2Q1R){ls1jBz^O!l7 zK`T&;&ZZsUj@q@8vuVlgXpajx_TL>w*HaRL_#mp9P+HNXxnD2d8?Bl~$;bO1+);`V zOtBfm3$-q)cm$Q)Eb$NO#VW%^9r+<(I->*f2`D1Bb5D{_M1$^}9Hm3PG>;;zUY37W zSf>LMXQ}hPIP;*v`?8`mgBi7(eI_DWH~R^exIuf5s=ETtr^0&iQ+a=NLaTaUz*$TL zq&<-)a4!2KY)Li+uv$|K15tsR(Edv(^IBAQt=!|MN{7B^+DPa<-DYNMXGH=}gtJ4W z*HC1{P-Ki_c7ju5jALVh)AI!9r35#0;$Lk!W^{?$R#nHqpnOGq);P9ML8kC6zK}OQ zv62V!{+B$2|>{?@KTFKkb-fme>E^ zjC?xOAtPYRN1<|$LY2&jN{=X-f~ywpfPhbph??yb-Th&@kHU6=wm;molV8Y&>3r^Xz^S@R(U^|lb*^GV@tb%b-w*{!SWY}!CuEc`ea!X3XGCzxvKR|c5D3p zfXIC}HKu|n#6~%vdt59A;adAe9dY9Ub9-VGYZdcjX zYcN~WhTMz50TgTM0Tid!PhJbF!XNNw)N{xh3>uMuWvoRMa4N<#-B>_+HAoV(DP7o7 z5EcJ)+`Q70^&6l5qdoa7XCtl*+EX1Z+iive%_|=%CxnICN%8NT_BDCh zwX&6TekvI;AmwGd-FZOIYk=f680qz*!OQ7ZjAO%J0kal1qeBt@h#YQ+DB#n^4`lHD zJ96^X(%$Y!Q#8*|a?DVP&hk#Cm*-r2UtTEuACcpeQktDonv^n?l%|%P<(o`rHWdbR zRn0d4zwKX2KQz+>sL57FnxJf1c0=z)MLv(y8 zavK6Kst}%TtZLYpfp0@Bj1ko&O)cY6mG#pwqOB!I%qMohLE7VkY#@k=>%cukQ+mxi z^G$nkLRV=WcvVJbzd2Sb3%w1iTq5o$aw-dRjTTclhq7WYVIflZJg_=yzsrAxw$ zP!QyfAPQp>XvALZWIC}6Hz7wP;7jvtd-3p%@m)B9t8qvyL(aAr`$#Un$9N(yuFqHv zf-o&G@H0`<^)!Q!s?b=7(vwVG3zV{jgxM36*N}wO&}H4nx_UNtq;3h)pdD#M%8JyW zY$ai3_0^6fVMdZ94P;r7>I0wXdcCkCy^62$cG6ITo=rH(hUDdFM{-gq>WZp>SwO8SW7cUhnVJ=Kl|Px9vkhg;W>!~SO>R}iY{Ms!HqF`Q5N1_X zMcoH3wV5@`4xMe*K2?J4E~%JlE^lrQnr#m4X$X`nV$R%C?{2N>s{1tCy!B>;ybUSh z70r3v0q7Cv8gNh@6UMy~FUS1Da zF^Z)u2)G86QxJ|L2X+*TJDFqIDBD0SHeHd80jxT?!dGQXWYYkvoVW}Efps~9*prvZ zWfhl3Fvm7z5G=u|2!z@MA~^uZ$s-2nfl~oi8H4~WHrdItJ_1P=Sv?i2-rnDj#RkHa z8E6YaZM~F#5N=Y2;LG9)FK?G}N&~`e{q;&Xeq4f6pdp7IMqqKC5mN!dBk=AZ{p6>= zHFx*ZVsqSCT;b}qmotFy$zk#ZJgwgyu*x7_06Uxlno6?#0D(?CUq3k<7NGa-8M%@x z!vcIE!Y(!~+Jme^<%Nu>LSFgY6v7Q#<0N9Qxi6B^gI5A|a(Q!GueSW=HMT)Dm% zkHxlg@Ni{@l!dxhyS+aa3$)Mzb;oMh3Roq#!-Pd0g&g(ez39991fJIpm01Axu9^tN}qEz=1xj<`HEm zT@W%t7Xi6=Z=`z#uQeMj3ty|s_ld8*dIbDcq-U?a{-b99clG|?Mo#`L0J(p5 zkkNf%L1;x#)_(sEtc-{zS4X56DD>L0!HESn#wTK@i{pWN3icB4YRUj5SS)}Kh-ey_ zkP}8Esw*?HxT)hAnVL_Z+K0M5Aij4SH7@c}G@Lq4wsLXH4l-7n}R62X%8 z=kArb;(j8CPqarR2q3aQIJ&8v)4FR!7QUB(zq*t%5OL9F%f2zg;T*4|;S4TqfTyw21 zmS5Y;tpx!@dAV6waayUUOCdn_O)IapPX_^_A|NRAx!)|7(}8Kvi_fx%Pp2T=x2z|o z;P=;h9guEE57KZ9lr7PJI?w%r&7rFv1YBDs&7Pok>1;oxvOcm0TskpuNE<1??Tir& zh3)`?;`y*peoads?g$^>J8>Ohgz%&Iuzp`&2pQjjxRi7lAuho@Q|N909X@ijLy(F{ zO}%+uWLl?%-}z+(CLY5lpVSURrBmZ1f{woxJ=FL>$iR#twt7b%gP=_ilp%^yP@v<} z#4fH&M_yW=A)YBg1Mr2Q8W?pQL{;KXN=iDGR@64mt7PgKU;OYLpYkf1+ri;$R~5e1 z@#-C#Z{CPYfgtW3nkz=jONFAeO?%sGRaF%gEN<(zNmUhPRc-yPI6a*Y&s*Dj+nQ@` zG#2^5G!?qHL}E46-F@yGF>T`Kd>OMWHy8ZHO8b@YyQ6jERuUnm{ z{BZ`-w6B(iVJz5A=O4E!P25@bxw2F__igi+d6}M&gSW0$_;*Ek^xcuuz9=CXxEb>j zLb!AX^d+8Ke#=&2?oWspJ76BSYoHA+(|B=i*+!Q<6mb+~JuR{16q0;L={1n)T!lQ`?KHfYa5?u zVOlc=r@sXBR{Oa4jD}@q?h;v4(wZCCef*+v0b=7x2i+6>{q)a@rNOr3Zr0(CUY=$@ z19H8TKjYr%ng|`QR8in5{QN8G)wPZ7!wq>xFzLZX!MNnjEg!DW?a91!r2cjm??%h> z8spAaO@3dbi#{>v8bk0G#)PZ?(cI_wF-jdKh@*63^^s`y6BVQI(~|-gwpN6t4Z;Ef z)v;Q0E<)O{CY~|vST$e}lWN3XiMo3#O6HZx?fc?MF7OWBitk@M>7f42BEnZ=!~1thrtiuTWwj=0>3oSH?6AE^1Vy?r}nF-9*L1YYrUNNeY^+pCe;?9jNLY3q14?u zxggX&$Wv+TDxEyRES4_KYrZHeEf6>I05NLiH8iUz_v~IczI>6UdSWrSsJQJ94#jfb zK=plwuhwgTB}?C^&^Tl15}SIWaZZs^)Q~>gdu!}Vfk<`m)u+c1V$X);(|>OxF9~?! zVxLcB)M#uN@LK6S8zj#D_y_;_{nuyh)2CO&JLI`PoM5d?9b8PP1?r3ZY@V1-xe0` zKS@|=auUd5#6HDDO}*bP%e*sba_o`Y9oJ5X*IYipcMsOtY&~oOvGbx+C40Ow{wV~V zEQC$McQ)b)$nMb^zOq(m50mNM_US<8?rtczsFg`xy7729ISPS71q62}n7ybB(udEv z@W@6t)`^DdP|uoKv(FrT$Mc=U3ms8*wSuLH>kn8CB8&<{zK(DI86Di65UZ1GpDb&e zbzbp7>oC<`#8N)iQy5dQxyKuk#AodC$u^dU^T>`NoDAoatmUK#=KMkvOVOsvE7z_; zzmB4-m8u?IaHxJ!Nl)rFpOJS~sof~asfTE0jsvh=%C51;6Sb!=>Mjb!!S}3;d>t&W~gOV7Bk6r#Dss^eAjqe%~tAmZ9U%g^9Me3-zsfLPF*-Z*FEb|h|(`z zmRMPeX%B!uk28R^Ob$2SHi$v&B6llZ3(=y9D{R)YPMldOLTmND8F@5aHeY-8#4dr| zQr~MYZM}Y}wZdfA(>s}0Jqf>Q`-8(LJJ#R4NHkHt?__UzVC3*dh3EP)ziwLY+32!C z&$YZ~;P8V%)Qc&pZ%3dHHq}>*Ju=Qiey{2`A>-2D&hXw?;z%e)U7Om&P)%(r67#1$ z-Y;0I;4|HM>g2RTR13}(lC!UNyOz;{#OeHC&22SOczp6xt&(BR_udJbPiCjEhu-j4 zcCE~(>z`*XwP(!odj>)>lP`Oub6^j7{GzLSHnjCFSr!^&!i?n_f|_A5wi}I2s!w?R{uc&(UQ=RrS>`xa3LJ7HHz>_!;H z+fsmCEER-if1om@Tc)?JtATuMb4lWm`3@JoKONpT%xCsSU-^URJ%8Hm^o+xZYV?rY z0^`Kx^;ZH1lP=k2xest|Rs>{zF{7$jeY?0{4d(N>;7!y;RhVuaq4{gdOIQm{U+B7` z?-XB)b@ln#L%O%luE=2TV@^rKMeMCd5HNmM81xO@wDO}OyC*{MgXzn%Kf9rba{}q8 zT^s3NJ-*r6^OkH{Z$goSrsvHrCO`irrA(db ztg;H?`I8{`0F9ZF2E8=nWn>OG44t@0A=#m`c zYPFUS70%g}t<;o;D*C4>cHWD)uTZ ztCoe$m3Eo_);*mMgu^XRWyN{bc{MFP{-YWc?B|gcdPYa=o>vOF>vmPeR)1?9?swuL z71asx@96eFeqliKzGTReiTBJpYmNQGUK8@(89T?c9jk8D=^|2!8LB85p}E49YfP5C zb@7*m>f88w%R_Qn;wh)76r=^oDk67Qi%xwJWKbf!_vu8{Hyqkl^&DO@~&*6U(Py_wvG;p=ChwF>2 zf_iclA&q%42vgpFjZ>Vz9J(`1_592G;Vr3K2R1z+Z`w3|{lGWPvDZPb zdCU4wd%^Ob+*z&LSE(QZ5!Wt z1*3PPcbpd&+zvwrKlMdS}rb-RG_}xh}med&k%LmA(#NUn4Tp#o;YRra2!Sigq9G z`^0uySvNHt>2eFUDN)lyuIvn-u4C0vibvyRLsqI+$?^G7k?(D+SCpSgITk19&FqdW zpCDJFq?}J`rP1exgS#dO0tZaQHC?0a<|`sTYrk^n7rae2qRvZ^Z|iG_w+Nw^kK{a! z6TPp)(?xAFMo|tVH}W&9(ehivU zEWc8ze3vYX;X_JlyOstisH-aYc<+>&ZOMUd^z9J781!a~2fyd8W_s|w{UT%U-5xF< zKX-j=C{Lf`w#V8yBi=vj*2y%eTQ$80O^!Xgw%_x*blrYH;?EkI%u20L{wlYR7;3Gu`?y-qmgta1H|TkWt) zQ)Hu3U%h0X8zVj+dh5u%v-^{QZOr`r5r^3Dd_=+FXu&=9&Ibw9dJ27DVjxk=EXGxk zqF$YuWIPgkUjhpc@IJ|BySsMxoO1Cst(~(nAAYpv*eVtCEZ->}*>(TNyF&Q$47aQA zH!O8Cc+K;5qdJykuz48E6B-+Md9&4hb4PN%gxYJk+7)Uq7fgQpqbpcfU}AV#*5Gx* z%TpuA%Qwy^(hIB9FXn*%NR*8~r));@NF3j)=j4C8ucj>TRKqPDeXr60zD<=zD{mD} z7+4+sqO$nhZbZi^zHsnu#_!qI)CqCBGyFR}u<}QseNwT`2T99~XWqd3YR0N%w<{{G G6Z;>+(iV;Y literal 0 HcmV?d00001 diff --git a/Resources/Audio/Construction/place_metal_1.ogg b/Resources/Audio/Construction/place_metal_1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..80c0e29c64a36c800beda23f33a7736e3cc8f048 GIT binary patch literal 9814 zcmaiY2Ut_h^7je7cQGJp=!7OEAOS%@X#oU6lOR$f9i@qd5~K(Sh!Bz9Bs2+4ihu|R zq4$ocbdcg}qbY*l3B32-_q*Ts{Qu|K?6YTQcV=hiH*;oVvjeaTZ0T;tzM0w70&R}dre&VN7Ton%U4s1=&+@}K|f>83npgaGMRU2nNa z8~HfHJX{?tj@ZNWU~)2YGBW375HK+`*2&+|)yo;C<#pTD=cbn@*2@o076PF@<^k8d zWB~!_z!_Ns7zsC&U=9Fm0AMEsXGyxD2Pfcj#qOryb;%==Omqr9ngn%>mF@Uf2SYfW z001fgCq^Itd_~V~0O<@BjrYkxx?WK#gwe*B%pvLDZi_g26;v0vdkw&a>6opk0nk9| zy8IDbXmaNe#UBX;yN7%}UHpX^J`CbTIS&}*x?o`ja%=fXSCrR^p2sV%i&YP4GD=mC zpbTWkEgZ|5Xlw#~2au~7e|PjpdceT5XwvXFv1!tg*+;<(QhY#G$7;a<9H=Is^Mp&U zlB>6puYXv`=)0r|r^2wjmZ_PcIr#Y7Sl-4?-u9oo9b}afVf`w|>Q#jGRD{iLggrF! z@3t2-yGw3Is>2{ajvz955uPW&o40_>qYRHMr2w4BCV|l>3cwSe>lNH^D|1b+b$LQ2?$RX=sDrlb^ycgI7Scisb^1us9$B~x z0DY>CmL&NgbbJw=z8Aoz<9E3mZ_vMG!1^yIklhXd>au(!Z@zBO8fd9e9|cQa)k$B& zNzfEzi~P?|=n-B(MffvsB)j40x)y;k38rxz_SSY65f+a%1Iqc^BvG*N+TSP?sBBl5{pN`IiA%FmJS|! zaGmQ&8g23PRdBD>P})jSJr_8N#;1$c)SDgi`x_R;*E0rMk@Mh==y&Pv_4GF2=%-W0 zU;Xstx&MZbI_Nk1DQHLL16WWzjRO~d0e{jNzsD>|IkH{w{4;U!+Nk0%V>FK_!SBJ5 z<}d&VXFEdizq%tRAEP)wF-E*c>}8)^uOzuEZ5vSDsAyxm#3T!%SW*E*aa_$xmTwtS z*PT!^fsr8K(I`0KIHEwO!kiK`Xn2l-Br?UP2VMw9#XlYQRcMg?^zc90;5R-K4q>nj z%SoBatD2jcTi*7xdgeb<7hyByKRX#TI~iwtGV;HH_3y|5z@P~~ib=dftZZjS*cDCs zV+a2$a=f`ZpYU}*5z?;`G8~cY|Bf*Fff(l0GC>%cp0F7{;XlfaHC413Rlts#W5;h} zr)#m+bwO6Oe+SHQ*vwA)|08n9AtHc`U(`*c`cLHKh{Z1`#S7{s3RxwJ+)Z|lPAg8$ zS}V?D_^-%ui78BpDU6C)jfxkGPIiq>E2+=(=qcN1_+Q(yEBYJSDWT-q` zxPZfPG2{7&UUxnosvnb?&*2zN1UCV+;EyqPDB%P|oeKaQn9vOH2t0ZKzLJ3MkzM9P zqmYFerUOX2)8Rd`G?`&+Z~~v{0KAhgyia2}BWy@R3;_01SXa&AbfK>m<4Q{L!|4;|=C$V2+n(mhLGym*HkR1wU2`k$VC%_<`JJG7D4Fx* zxIaj>pTOGJ`Ok{Ern$Q16_uokm6Q~h)Owbb5v}t+mE@K5R5_QFmG)GXzbNzA0I6j~ zB~_9oC6X_yO7}}7H)@MY8i+kr73pO!Hfp~xwn=U@+$t$6dr`GXrZx~aI=nX;WC9D| zy#+7U8;TnmyfzxV`)WP;o|mk@5$}Cl(Npzhqv2e&Kfj5&{|CIyq9v$@r)@x%^=?F! zr%E$%zXxP6vWFbJ$yX03DAT}UmY;g9d=kiNX;FKT$4gV^aDVsP6=EsI!hvl2e((wCUL6P|I#wa&_ z{FrzL%q(87Dmlmbjx@mz7|5!dEc{5uata<~l^T|aLJ^-PqWdzE$gINRQF`#&M3ez| zDio?R0*&#Ioyb6YD1fH|StX)8q&hIx1~vX{7{;Sh5o;{m-H08aaA5*eA5~ey?d~PJ z!i#bxl7$zOxUJ(s;im2i1ru&$g0-jWM4B&(I5CEf0|}0vP2*|zzx+#c2REsX2?rus zxOnB$L{Rw3J4`GRKjHwgN<_zkJFGqG3zFSHLK^x}&B{Ap4~3mEOetB0KKO<3eO$k7 z0cIT>C7_O@$L5ez2svyuqR<0+u53PiNO5}2KBQ=|kAWr}Zr-OsCtNdtgu_V_NIGEx zx4yU($-*5D2eps_>yD$ar7?^qK^T~==z+^%6nDVDyhFo7fQAi0^SK<^1PD;jF9a?} z(6&%t7EN&;#{ms7c(^f293H`j(i0|tl`aDxSkHM3;ji+62RhCpc1#XTvXL-9GdXeg za08TRaVTg}qCW@)0;vzd@z) zT%-pdUGI|6=$OhBX7VBj2_ z;72Cl(F_0}ehaLKDomVwA3Vtcb0!6Fmz*SpnGyJp^#$2AWGnH5I$f;<1wgI zUo=`=n2=0P9b*`j6v&%am@t8M1Ena_5vs??qNX%-;e-jyBPlTCP~fXWtU@FjTtb?1 zD3#40L4)xLbu0w~2;&YO-CYV^GvN?h1KJ<=f%8 zBVY4_#kS^=waFI)H0X;QGFtdAqd-)VF~T1Xy5V>(JmKGSY|5+0&;kLqdb|#Ata$`2 zx?FG$ei{Us*wIKB9MK;aa7SPa=KxDNJjnTY4$lF~I4bY(Xfh%}(~t>AP(2#a^OMbW zw3z>RFS!;3AxcTk!h)ZKp7#iNAm-mv8oP9%02~tlcu%=)z$dz3q>S)n{qO`IHV0{T zbPQ6b606HYf{x>530$UV_fHuPu_i{Djwso-QoIF9?8$=>pVFG!ec;s+MhD2S@ymy* zL%5(_prCLnIFM7(G9-JAifV~Nj)94xGu(H?l@eeJ?_zoqb(M*Ovm`XnK^eGu&8~|U z#}pS={fP0CTnn|$dw*CsjEX;s1mQ}+g>ib_SztDL)k?3dMPNC)3C{t*8So~{3=0=sOcwJ=Mnx7T+Wn@Zxpx?WSbp8R{CVYrgoL=bm^fTPaijU19OB&s z75tGXqB!j@Y}|?`g*Ns1``(IPTIC$W#zbTB=*9~(WpmhoSuyH{2t?J*7GP-a*L1-3 z6;(gy0C`uae(!+R$v7ad`oS}=-ws#S`$!j&E*sw(s+Wb&+ooq^?p_L`JWyPa&v%LQ z`&Pz%!FTZ@>XSH&t{0UY)ir6_y2`>!JDN8Z@~tkV3vLW*5ATEzeed{H7Vo_9zMerQ zwD{YOW8KibtNoRae!Y0Ly&5)gCTIXX{Ubs|tf<2g7h`BKBJo>ILIm9ilNTM4Y~^|p zl9`=fMu~fTvqJECN+C z)b@%qmtBN%zF6m5JMckj7uw}!zoo6vsCL+jitD{|ipe<5Yh&D;Z&{#ebU@Q0FL3b- zBmKN*exu9+tm^!j?7qs~6jN(-ETOkVZA4Se!4I}S+g$=(j^|s8?XrGhb}oJBJ@;j$ zsc7z?N<{PF3MG&gx!FJi1$YNzNkWj{+R4juK6xj!4k}N3xclC@rF|VOwTmuj?(Z({ zL9Cu9jTdcS-!VFX_un9$=&kc`Jh&ZcHS_pZs0ylaT-8eOvAYegm=6b9QuD0xmG64; zG*UHF-N^c+vzxLnF>A`tEN+Rmnz9tu(15s8O)3-X+h~qOgOf4@l#aVb_cDLMrU+ya`;M7|8iXESUU3}J?pfw@k?pF4~CUWGbyJ;-_p8o zmsKEtE@;hd1iuwjVh-!-St#k=k|KRG7a%^E$_eSZ)wiy8y)AXscKC)JQ$M%!0JU82 zjneFDE`6$K5#9FavKyC1y}I7z(y~*rND006;jS_MVo@nFGSUqUa7h3Y5r{IHOF1tj zGiC$Tnm3IvSVS7)WVatcqO`l>3PX7g@7{LjX!OntlImL8URru-eKYNiuidMW1OKRp z#HHXB{pupekJ`Fv-G?wG1llyr4BEP=TKFZVyN_ga>*B@2pgYe(?}ePew#Iq9@X<;| z^Fcl{v{_PA^s|1va`CW^G@qHH&udfA)*1fs&ro@OFn5Yb4UyJDzX}q+*A?B8pE%7N zvA$@{5n5TF_paGSUe&8~@{#VdSGok1*&mm9)-+829GY}z2#4#qHr+mO0VtTbNkyAy ztNg@(l(_(kBALBc-A-}_jy{DGqYk+zL$kO84#qT$SSg79p^_2hfBtl_033W6Ml8>i zXm)wrt3Q+2HNcoNXE*KBLAZrQw#OiYPnUAFk;b&``KTmgwMWhlP*PyrezS5)yES`6 z$!n^e40~C`#egp#n^c@OF0@OxAoeH|sD_eKAPG*`9CeeF)vBL5BBY;&%W$N1z1c^y!)N)S)fClz_f|} zQOjs|9D6tU_=LW*d;o2g+ex5rb@||2^F73GpK*w~{jOj-@T(ExvTOO^+_ORd6Y52( z($6}(XsRX{fU%j2rIOF)eWqi8mQYHLy{pu>AkX{1K-9D9!-9Saap}hh*VyA~qwKyL zKhMv1azov2Mo<+Ky3ce{9Cr9!*AXhF34QfF-_fewDGhSZ_#F1!k8 z5i8A1kw7=4^hif7MTt{yYO*dwv`651uoxCX8UDWC{2fmqzv0J?*LJDfIIWfZ^S7Qf z%L};P)R)7aNeN`C{`qMldAF#_jCjUEtLo#EmWtPz{X;%dOV1DcBcwdR3t4W)2g2q+=+sZ8n_>7r>>eIsG9eMC+2M7#q@Kil~pad%K8gXN9X+* zp}b#}CfCi*F0aU8eHki=&!vp%+H^{HuE8b2BD~? ze03zo^<2}+=dn1LF=B$F+hD=w+LNwkM*z23@MS64_RXs+E(^6B@;MJe$D0W{FYPVI zAjV%8BDuEh_a_A*QD@J7t!`Xn84#q{pl+S{Dld{6-ma8wN_m$FN1OJ1gyK0zi*iGX z^Yw@a)W1*W&ajrbG)(AS=ys|S0MC{o|RwBgI z{Wp~xj7{qE{gd>RY-NtC<*bK+xsfh7*`@ufK7vX9uMlnQVw~6NcBdu1A1ABW@uvbf zKO5VV-X_Wq9^KrLb_cqNFHYd0gPtDEIA(Dk0aV}Lg+YHc0L`G@7cs_FB(_iPLiMb40gpL}se2S_>bmnpEv9|qnkQnrMK z{;66dQoae4i?xT%o_Sd%D{|pfK8k7c%7G6sF+p*o?!jQa_@8@E?`NlTVB4Cen)f~v z2n{L15{oK=s+9Sb)_sSutM_`6v9|T`SpA2$a$_C(ay!i;G!IWuYi{hTx!tw2zZ1(v zg#ohS?`Uc31z9kmOVU4dR%fe4`{QKq)JDEcWi$rKKr2w+LO%*EET7A{6*=wlfSa z`7zRC7)t!o@lRsSs?yv^c*2h#o^;NptKOg%GTt&R3f^t zBKb?7yU;FSswfS<=zJ+CkQ(=OoUP#OJaff;qh-H!dM>CNpZZ6-*F5E6E%&6LpI%$u z2iTcMzp%co8yS)IZ40<3Y^#X+pb?SGOP8wckj)2K(g-N7vL7L`fBN{l9cbcsJSaLk z&0!W@PVaFrwft#|ao(&wWQV06_Yv6C2pQ_~=8!){m;LyvjQI84ekn>nis~fwGbIr& z!jwzMz30?&6g9~fz?ezMkiJR9UrToGtbiG+6u4)dx^R&6uJx5p?P+>Vw8azZ%ACm0 z1%?0>+IIBQ%RYvOT?b9Te4*2 zUxl1xQTv_$bW~{3L8!`JrOy-U;fnrQAgl#YB0bkrZ7CW|F#n8~! z+any3Sf9%=Zx{WCl_tdo2hUC)wEqHrn*{K#m@wb#e9ea86onLBf$+pF>U6&JOME$~ zSj@!SHTbkxbg}o#6g%;=w6#I?yH|V_Y_CCcp<12AY+4cr%c3EV*IOL?KBrtN$T(E0 zerQx+GWjL??s}Hf%p+%#q)k1eek;;z7SEhk(3f4w7pCvKtJlmns9XAc_wbc3w8tJ> zkOFD+1C(+?^?#+g5z=WB((IYIrr!)+(a^|>^F??Xj{in9{oI_sIC#Cj3cfM^jyhxq zQ%esBIZCU{7SrjDxz%~_j-VJavRV6u9JfS>O(AzgG}CV~-<d{LT%c7o((3vB@IpGRiHeYX%e_?GE!YwXXTFI;N%1ligqO`7N|!8iIffNe z);41I8!THpEj{wqDPZ^PQ&=w3i#deE^-Ee4B|qK1Tk^OFUQ)LhU;Lm4;QpM} z-=bu60Pq_|ilstgyUykk5?&%3PCq$o{oIr)n(ciNh=)hRVxPFSl}yiw`Npn%*Xi?n{rG zc?E{=PvK+6yKTdKt)pdKG>E&PuJER3va2a*EuoN3ALbtQSiVz>0IUdHi6?;eJ?8?Q=5 zBPg~;{HS3PPlWFP71ad{wGo6js(Y8@hlj1l(>=X+lSMJZ^Ns#hJY6Q#r+@>mHK&I+;Hzf zV0nf`sT8f)Ty^l?4DI`@3>YnGp#if>V*rSmkviF$mFaQRcuw%L)o1W5MP^0+9$Vqe zhrL4}Jc3H5(SX(iAT%(kKX!WTfV`#96SHbLxUJg!N;bOxx4lHF&RFbI5*Q@9U*}GU7_wdq}}-K^43yxiW@^#FK>{~1EO8%!h9yyw-%!- zc6aM>YZ9Hh--ckoY?^!!4URv0Tv4VzqB;Lh<`}-tQICbvN7cn{^-x7o2A8hoSJBW) zw|AbXV|OulKAEZvGs>YfVU~OCbYI`$MAgeHjZ-%k??dA1+h*sp=7jl%m4TywJg8Wm z|MQOrB{=M4YAd2^ZX&fbH8zwSMlN+)^B8{q+A3I5(BU-A=VYv`r@CsDs2byLncQ1< zz1i=M>Bn48?sO1>GuFk2pnj7BfBhXHuhg^;cet0XdnkWkRCj;p(W1^7Q&XBqRpFg+ zS0C}LH_}*VjoiI-r*MxtJq}EaxMzBi&Pqn?_!Eae(UeUb>iq*!RO$)khnz#4k4uYnp7D9D4d5iuCfkUEs)m*)!6H^O@K!)HN9eiJPKyLV{`TkhJVSB!tST z;K>&wF);t+Jh=z+Wm>1XV%*%b9Zd?AmJr-1r$<)W;s=|aSo+{dC-3yNzCA;m;!Tmd z9jqWTtf=IvgqxNeY1#er&XRlmt)GvI=eKX~ZmtFkIPPhtE)f?ZvfiJ2$9wmWP*io( z$NoUw(zwr>k(KwCb_BAOE+=pH^7vh}82U>KSyIK<6HMP!WU*kN+m>0#4=6&P)V7Rh^0*FQA0D}#vOz4 z+Js+x8^w90OcPMLd!I7ey)socE_OwDk*+=iBL{KV#Uv7#ppoQ`K;YJYcbr=+byQ!y zpm!xW_|@xo$|3uo8eMy}?l!}}XrhynWlMj2w-Sp?9-@(CRj3=+*~*~at#;w$V5{6` zj1H075s~5*d?{!4)pK=si@ja=l8@Np;~{1_72N%{(NgDM9k4ZqX4@*#*6aI8U4GG# zCEjA5+yaZF&4)Z1rn(7Xjc4=zx&i)KIq`y!vOe zKUFnpqxJTQMe3VAfa<-4rX<70xA$|ZSUtFj*HZ`F*5rR~M07gwOg27FtJdO8I<@xO z%9*xWAPK*j#Pq!D_VdtD1%AYK_P1gZ%@*~l)?2!sf(7aIB_x-EIAa^_#iFSm)cx|j zYUuMnoKyUPUaMCXHE(G>EhGNGV-Ebk$M>5=j0;4&=SILRiDD00RQ@74bw>PP4vsW% zWr&01bjx8QCoPoVt2$C#2_Jm?s-&(dudexI-3{R}-O1ITsT$L>$y=y$CX8?gPcUSb zhhwAzZzdNN+y8j*U|NpTSACy$$K*B9D(GeDNdu)*U(8RA6e%Z&)%S>xTh0|eGVq)goVaYeRTB8H&bkggYLx#TwQ%O zlbf8(R|B@Q{p2Y+9CYezdGKcl9(Yv-bC^pa6xhbgjMYiXleVi1Mkk1 z`ixrDJ9F{nG&UZV9@dHPO`n=IF%LCyap`0W2jgZ2XJQ4Lsj7{f8eEn?NiRQ}H7IbR zGoPZO_V~f5yfZo1{;EzK_+kzg+qx z%=h;~3F#K6@z&1m6<6z^;g~l*+2W6xIu^Gc&GpZ;zwT3J+$0Fd^F?`au1sTM?#x^X zndhtOYUBB)cA9tZ*c50j z)*yINx;(uTKfVC6-Y0Fx!hb4oG1jF}2&Y^NHr$x5kj;h1EKL2_aBw|5iK7>}BV}lC cmC}pZwDG>cIcBI6>(}Nv?eT$TFCpOn0FQ}rx&QzG literal 0 HcmV?d00001 diff --git a/Resources/Audio/Construction/place_metal_2.ogg b/Resources/Audio/Construction/place_metal_2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..47a0b27a035192513675da2f5f00516ad69e62e1 GIT binary patch literal 12743 zcmaia2UHYKv+pc9XAlr@LDG_B36dm(z>;$oC1)fff}kK-B;m)m8PYnwmMQZeybjpaK6}C)$4poY*s65C({si<`Nf z`}Gtgu;rg6-jJI?BSigr=YL(-JFh9Zl6CYXa##P?)sOy{kpM_HuzPCDqwZz{b+j|r zyI~Jig7We5@$w4s3P9PltSmh(?3`_&^3Gm%ZZ6JFR?Z%egz#=^izs-{zdERZB_#l00D=@c8+J2*G?c*;L~~* z6|GpNe(ob8TN(d!xHo!0!L!I<(O8nm;9Rp0gP~H~KvsX%f&zh{nt(zqh0;5U!FP1S zFy*yzqrYL}YvZ}srpK?JP>1}}PW)Go zuiK64PzaE7S0rg2md8Y!_gN$lJvgKc4Y0g62^2Su2^N>HgtE4;uuHGEEvqi1C4*yY6&;2h0X22l^q6L6i~ zL>hMSyaBk^a4c=JsEGm`g(sx5)ivq-<@XOPiXUZ+bc%cecZ4sbJ2c^%f}>N*jPJv^ z*K_|JK2o6Hp3G7AWWIv>M`M{&Frpaa89d$+#pl5LU06<3*sU;2H0zc_y)PIyRxnk(cP*p5?KN`h+-~55XEomHnZF-L=+v6 zbu&hs$OJ6}4EZ;rK&L`2W2CWYZh|Bv#ccpq2u8(!I_?MaC@KB;f3(q`bed!=U>oP- z*5()2)zQ`WaxzTzTx@u4I_J4M>%Tht#_U$ee+SloMGgQ4P4G=jCYVRTdozO6WN`mF z_+OFZO3@oj*B{HQT+OUH!8QC#K>a{qoLpX0KvkR4bez(2lFCZ^zUic()ugV~w3pR< zy_Io;zhV790rNL(R%bo`BXX`ogh?cNT`>;h-;tBU9{pK3`mRzOvtb95kqh{H_0V004Bv5Gdc|5lt=bX)VENEpA;M@&7quKZAZ@ z*hB!J0f4)plY>bj++t*$#SL)ao6MNGB3QW}se=ni_z6S^nLJ{o*~A;;M7jtL*0k6u zd#C&Gq|pHPBvCsFgm zSWsjZ>lyhIO8o^1)XEW=1!NZC<=`d&8~owtj>S+yq$mKuoInc?_Bugp1hyHYH2~kB z(?W<8W@wLy;LryTz_BueNMJ}h?GacnUGR|fMn=$>G&=x5J0RdshF!o?9w1=@)}Att z#tSG@uqczuk5X98lB>=p3JePfYU=0?lIu?E=q^&J>ejQUlB=p7>gbZo>r(1YCaLPy zIgJWf&FkncQ|V6ETP;$(&`4G*;@WL~T2fI_TD^BoZ7$#Kaoug^ z^+Ul1QKdW0#m&vmyUngc^-gs8B|B{#gCD8}s`q!B@6~!TYU+9}Cz!75gL*ibd1o0P zzpi!?YcD?^02xf2h>W_>HG$h|oNt43JqMhUPlTh9Hfi8VOUlzrN_VTBIlIbsWi)mD zO%ttFg-i`^Ij;&u8_&MUE7@u07;FOt!Iyem=vsK`Oc(Eigv{!4e1D6+W86`P#U9sl z(e)$G{7M4c-nSq&AlKL+ACSsr8v09kG26cEWEkOdUV2yVS05Xkux(u&0eWZFu_bs#Hb0hKZWUQc1{ z44QiI|Ui1NfZt)YzgYgR$g2qjp3 z96|*=6$0_@wU&`1d?rK7Q4l;8$SMxu$lYUPtWxJmVuXKls`5HL2mA6KP&f;cS{d=K zj>^FqzDbL)E58M-M z-7{leel48iU1A(4d~?AlN+e;z9Ap)z6$S1vc5Ff=*@J{Mt;o8~1$RfmqbZ}ZYZ=Pm z6Tja_$Qh~TuIoB!VI&7uGv__QdNZf`*IB;c#MA(YmRAgW<-63flmbwuU z7_56n1cwDlrOd(It>*xPfm(2bb;nKEVyT9AL+}USf0xUCK}0e*l;APIXVs7h*pbM91hC%A4FWr4 z!o)Q}3-J{S&cTo#*MtNuJOJQ$3RXl_nwIXbVspTpi3U8o&Y1`i?A(NhupVeaoE9h! zRH@jF0JL4V-Zde?Xb%cP!%@(S1cX(Oku0LT+rXiM5jkUCCO8X%xNbAe0Ra*mhMNFj z2@@NrLccA4pN$%qL%{Mzi9jf5#wd6Qg?R*gD?=6s)|~>@I4J7t(gS?RUe_N{AOXDX z0SO{obk|*md-T5xlYftJ|369;gLM|E9{9BGp}vjtw<>=~c5`dt_)n3Z^7r;XYW9Cu z@Bh=t*r6PR+<$g}R68CvaD{zaPeB+)i_dkfBMA{$=yj!lC&r==4uNeK1cUC$l|_iK zvw$dp!9e(c5uIR!NOjlJ;$T50U8jyIBLp|d8=D0=qh$|D5ye5)PF;(dlU9TwXN)4b z!H`3Mx8_lTAzI*)?m6=^c)^4g7@yP@WncgqIejCrKsj1fMt z=KK^0RIG9hNi3-OFur!l1R;ukorUjiGv^O5ISPFGfUaTNhX4Wz0Kj$5 zeit^=2kp)XPErnzaU(J3A=QcyQFv#iNYhO{od8EtXlpraXP8H6s%Kgt;9X@2dI1^^5I5Jw1QVoDQ0Kyjlsvv>HKp-<_SXh{Kbbi-5 zIkbF!@2d*N&G_$|vXt^)^7WhYwHW**QWkoa51oCp3nP7lFb)_y zCyZ494xgK!T%224-CF!2$MSNLH_zKPVv{P6^r`e8!;hI?NKL(xV+m|rQoT$!d#$FY zA!mtEC~qi){nLf{i|;R{eEDUzF`^bysPiZFAT`Mi{N<{H@~!(-igV>>qn*chPDBrXL!-<- z)u_Bj@W6SSpe3BjobK%zzx>-~45cKfrL$3S3w}WfUHq%YTXie8w{55DME47XfXraMp7WrAtwdek8=7c=XVE;$mqr%fJ03s^zP7X=p^DPK;Z-Gv#b%Yh_>ePV=YZ z=nC&bqRNG;r)f}%HK*;=4NRpT_(ZAPeVb)R*zXnh2jl8zg$BHww2B{b2QQb&U?PLW zbI-U5HN(X9)cog1Hh#vT#%)_&#Y#w*zj}E6;Ww{knpGMTytlGHd^#0sQqD^U#;o8}gwm*_*9VBsIh zDc;6ouZlmbr|nzff2JDZ#)n{6e`%MF z0!SMVF!L3S?H?8EXJagO0r?_k~OF*ObwOAw=zsGJ#?4tNwbd((a#-{O=J3n-;3-3<}04g2Jm_$ktiR6#sAy5*yxyK9f2SYxwt~5@T>~Ptlj2i;Hf<9vHW6V2!eRcB~ZD~ z{8DH9*4I9SSEhMvTOtYeFyAc*3{jAG<+>B?XAzd|DV}9Y8DIbhaxRgYagc{Wiwulk zvY2rje>_|1+KFncjlH+#5uiUei(nS%-8KZGRUQBqXbqO=Kvq)i8>Qe^5`2n_+XM;$ zxq;k3Jf_AWvduG%TmC!ZtkuN&Vryb)DaupGDtVNc-ZTf)_!3jX@~4DE;@24D1Epuw2atGj1FGjIt37o-xV@~PqqL@V< zgcTpBjCY(hmrlu7<%#<)oBm?%(SAn%;fBdhKz7-pcG>MGu|6U=6!2*z%dbC#3lD2x zsd*%6@LuaOiumqEb^Zc(sr#S+Cb*am!eFTpB;xy8B9z1@@z1 zvT_D~L}N{vkE1AkaTf4r+WCuXRDIHyFVnt){=R(d)`hHHIgKyR+zu{<0%XEhf`V>Q z*q*-+|C%>QHZu`wtXC1%=71g>yOpUm4otH>zbk{w`bpELRpdV6pu<*hW&#=R$ zl4f)rN4=O$48Us{<7{r9fr&mC>FWtp)eE9JIvp=L7UVERoAqGsdPMN!tl9T@$)xyt z=M&kAv?)C74DEN7G(S9+-$|_Y%L80R*m5+3w~a)RAz3oeeZv{Ouc?x*Yc*Z&RbJR>p()7*i&jdcg)b=GhWX07M-8P=ss%#AiM@#wm zqrouJJ%i?Q9-c_@^02Av!U6E@EOP?=Z{Roq~=+3y;Ww_5I4eZ-7CfM!XmoF^!H zx8UT{a3+R{g*J(jY~h@X&oe}WmT=gT|J2vC_P4y8@`N6gk!0%0o0RgR@{TKzZS;4i z&gveq5yxQyJHmH}gP$b8aLB1=*_=>!iRoy(t#dlwA=~MpOa_J>udxT0Q5-n>4?Y!| z+P@!1EFQv#<#)6t5u%Qi_;+16lt}ajn~05MoWwH?+uP$)V}jM4qZLvbF9AC7}pVYd`3?{XOpk zvpNnYHBz?hbtb>=dr4o2v+&o>bL)ZtjTO`CKFM_XKZ|5lrANKvq|IXJz~gG_qi47= zj+cWR989t`I2xEtxbJra7N6oI6y0K58%%?D*>;lU*ONsV*4(GNN=O9W-7!jA8CXnx zrp8w>=MdDPBl!x;ke(U4b<_h@n zl)|$`Vy>J+l4pHX!WTWH9uPzIa1(I{oQVNX4a= z?_m(*k4qOVQQmn8+dIM(L$&+ZkCK*rsv(y#FCf3XTTs0Zlhhw$X~aM43XFIUyiGPh zxwl_@9xUbFFZp)b#hk@`XXT2IPoQVcBcRT9`1#vfJ|nAd)Q42$Ayud6#y(6zb+{=s!>xxy$R8yW6rg`$zRZ)iJNXVH@Ckf^ zc2VYEy$`FbEAUuf+Ffk;e(B9Q9NOPoYZf5x;PU%%-qHfAHa4026Lv2PE?zpj^c)+x zukm(5<@Di;R;eb=?yoa z#I|W0(-Qx}SLn}0yf##x%RD`cK^8~Puq0p!7kZ^i|J0t1jVynBxQ@CS=NU8Jti032 z*{14Z(DX`nt<_sz!mbSJ7sqq-_0N&8_w&_Hyl4=16E$o49t9xez@CsHnE(UJ?$+1j zGFs|0=XBHKWgJvG>NH`F!#JEQSn}kD$+;YAWQCtWSb)EE?M5CGY96OQXE>}6Ydh4t?b%m__fs->_V42+>{>$GJbqy{KO10ZBWxa!9bDoEV&6Sc7AU5(#n&HgF&ZLCT0V6mr;#&|XJyr$Q08(PP<8BINJ zRPE5EjN39_Lcef;_`_hqw2Be9#VAzoV6=Igl#t^7VK4Ukk71+K=+olZ?-E~*ZJrkS z{%+Q6=4i(*I0-1-C)=$&ob7+WJ5sH=F0e?jkqg69BPL70aa|Rm$$RwZ?&{3) z@e`R7g$GAjqs>0-0Y_b&b^bF)*!yiP3BQETePvSYOFL;NdhR_EGKKU#D@*KRMhyj| z@|hY}z}hHj=Uq$awa5L&04^0*$w+$)%s>uwKzBHz?kG$83s;wg5}W|&GtMK8dG&Ur zmPL z-NisryOz(JDJ&OIVaW3spP7r&sS2H+x83l%=yt_#v8Ek6Lsw+}($sh~-iP-{Xt_~< zRQ5S%x=>YC8CX^}3uk6Ot#yK~`b2!aHCSi3?<_7h)%f(s_ws=CPJH8g3tHVn9(oZ6 z=(8weaq&=ViBY$S1CKfreRf50&O+bRM#pw`k6)5Rv{K3ky2@k_t9kiKS;CGXPYkRM zU~+j}AM1_8{posLE#-6%D*b6fV1U(=z9;YA?cJ9cB+nDiJs*ejsH7N7xsCA`T}@X$ zsO_mnJweBrAE3Z3kx^6*7rq}AbxWjUYVvW7?~Xx*CN587GPg@_2jSJ}D*q}K#sh+Z z$NK`g6oD8F$4e z{Ngk_JL+u_@K>(;pbN_KKM3_ z6UNEO3BSj`Ju%qP+|toh*U{72_5MSa_t0$&J@%j8=rtbMc(1yFdWA$9G{Zz(DfLZ+Ya8Oq}&E#EW>#x_=v}exBvV z&=FlAe_S3mnlJyHTh`Y<>yIeb5F{tL_ULVK$eQ|oe6@0_r&&#!w3Fb*>6=}pmd&_5 zf4U))VUl{*r7F#;@t;pT=rr+qcX7o+jUBx5?`W+10D!W6j*gTJ(=bAo`xGa8wU9^B zMiNi8aewnx(tI(Ks>M!??Fj`7p}N+$50bMVbM;;UV~;Kxlyd&~-KWb*>$r34N}@cD zr`hI>iL=7&YYfYA?)Ty*&HMmo6_$xC`9*afO>h}syJTrxTx8JDPeoFD`XES-d0H~@ zmdRdK8xO^j`&~FSfD-ZI!KOp&wLDI{MCqUCw-b?o_4~o80>r?k(;1~b-IUts?}dZH zy?ndX=$0}js{f-f9basDl_ArI1lS`Tylp+io2b21$p-kbs6PDVBc~#`^<*zU^}T9w zpb5%sdE}%YB>Vfml15nr>0F7{?^_az?1uf$c5>fo*2l1bqyBF_ zGk++p9k}~0-$*|ur>JElNuKD*=t_hLWMlrW8H;>$XWVsLfNC|N^+FSq+yk@nDT#nc zu+>U%2=4<$?RX*D1_;~cM<)i(_dVUeK3F1~XcW!cIPD$~nmN3D9y$c8xE<&wm_v|r zwv$4#Re147U}-j6MMZ$BnVx=i1U+{j8!&;GxfCP~hnnY0ecK`wW(vO3O1H(rYAf(7 zo3L_YekZL9L+ufzBqe$Vq*C2HV+TcgCw%c|CnCdGj#*?O;xN>%X1Au`wHRfHNxKE_A*HgI%Qk7_<@RdNyY zX5H&6hT*lK?4&3W-lM=fd zMPpCaMSqKLL#GXYe;Hvc+OQ&{17{PXh9pQ(|n<+n5XHH-QO<#p4o9VsYiQeScJ88H38sy0xBVdALIqwfqyoH+-Iklw9k;^oer5C{xYHK$?XF>I zXi1|OAdx)8L)j=v_Jl?6q(Yw91qVynfk~_caxvPum190jG(OHge)axb+|j^U z1rm`wDv5rO{y|qL?o#*LhZpfvh@=NWg`0Il?I}`Wf%quK!L+KobrOpAJex%KT}3RE z0qM=-rT}4ux_}AJ`Oz1(kC+2}tus1(IeSn6^s0mR$Wxr)hJehO*vPL6E~pgRSX_}? zrZ-Fcw_6wj%#xXq>>yR@Z#*TOYDiLcOv6$#v;cZPZ=o2KjvtkpzwDzXIVfV3+Kp;d z0xIeQ{qC8CRyp?{)0t)Zrhp91?{JMhCNBL*j&Z7*OA*0KdIz5pgJiP6_dLt5 zPrI8BWjl6i(-P7uj8G?D=;W{3i^9s@7$FP`RPlpo)%&GB+*&A~;$<-tw}@DlesDW( zRwk+ra4HGmlTR#uN3iyy$z4^hx6B6Tfdj+IXT$ubyCaqReV714sAFBIId5Rd?m49F zKA@|aIIYA)(QQ_4ag@H{mZrK`-D-SfU5b?oipsF0otFY-Zi-uY7woDd;1I)Cc)5>F*I6t(pJx9UiPjM1id9Pmi~@{4AS{w&=i6Dl!0}? zh4;4=xSzmRIXKPiM6iw&@F+CHfp`QMYkVLVw#UJJKF*JT3}$o%wUf_#Cp$bpJ21Yg zU)iD1{6xn^P2t!!QIu`*D2=p5$)R0f{MS8$Acrp9t+a!jUIFEg%aNwdkEhD-dkwIm z`(Av_`>A7BQT4N-PAau_V9&3*sHl`tTEC8jI1fuwp`g1i}=MdVJWoMpimf+;ZF10HzX+i%Ywop{l_?7TAHeOx*zxf7%=$I&V~Y{HP- zw6c6JcCFPPhe$f>y;pB)L0kcNENgFlN0yAshw#8%h1Tx@pV| zqeD@M1a0DF!Zimg5^q-L)z+mfllxzN_o!7Ctq-5*(x@Pb#>cH_(*E!v8k8$-d!oHC zyZl|X6Mn3zf&$>2CVw#y)*Qe(DA?RhTaz9SlyjTO_B5I>?w;3q^Mxv zS=Lhq?b@lAcZG_tGW^AV+nfL18ycO+${dh1p0O(9mi>8m-K;iJLk6X^V2M++!zl53 zX`n%ttX4Cvaw=t3rXUTxdZDLQJcHu0^WcyvZR^DEZnz55bphtma7{&MKI8KFjM%nxx7 zxVL>rSk!byCjqB4@Fyh06c+~&;8CCdffw6TB);`PoxfXjQ~dJz!CLE8c9gar!v%BF zmV0KA!sOI8;aJMLk6q-+a+&LyK4p4Tsn&!mwTNfc!n@+p1oxwsJ-x1AvI7sr2Tq@g zG0gTd8&_W{BuLRvBEA=HH>4~@r!Cczb!1*Ty*D8sD&C;BHETPrj411{oMp>2z>4MK zA4$>CQDgC}s$)aGqg8N|A7DZhc2*oT!7Ldf5+hLZjr0^PW57yChF|0d5a?Wtr8MHI zGH!9g`I*R*k@J`^_p4{#R^m_3B;_Y6uDq{&T79!C6a3)V2fn(qSDVYOrV-Bqhr zXmGvx$&4o2oR>=B$Y0pd|OQ_Z4olJtPsHIrZ?9`N9^=M^=J8EC-UVp*;RQTtS9Jy=WzyzN5gH=Y4 ztQJcrQXlm}Z($BcK{%WWwodN>@5~1pU12f2Qi`bx>i*8i?e%1I%dKxQQGaFu}Z#W0%D^4|Qa; z=LvU-q#}Qo9I}vMIf0npt44OI0B^kIU6jxdPs59U^~cmv{QlMd^h9tz{j11s!`)fy zR`-K%);)c-s9;Wqc$+jybbBeJVAFhV#9rQxKfYn_El!hcP>~(-?N{* zy9j^mwjk;(O&~>!A?KAnk$Jnp15S6G-d^sAWZsuXfTJ&e$4N773?VtqQ1>9Z(VIJsWQK-xIaHAN0&G# z*5X#m(e<^F{ZIGHx5egThfLmFnoIs{v+WKCg#EfH-$*r{27gI=yNjn%Px}0$1$Dbb z?H(-xHTaN@;#6l)(^$;7=2g!(QL1t^>h~zAt#j8e6~}=@m0f05Q_@OpdMB*&^#jzw zm0D9SLRLos$pjLI=a#+r3Z+@4 z=q#~17S{$XjudY4G4=SKeO{6I+YdQhY#qe<>c}#^L=XaMeo@W`0$X`F4znLoLUSf* z86mwIR?ftG)?)?XLfS>Q_Qc$YwuksGi#Om*;&)8H54&p(m3(@_`x3G5noG%YrpEDw$E9IA`mwkXECHvxmyc8Wnr7ZL!8a3Y zd1b`uC0i*RnH=xfn8A}uwl_+9C9U(u{QYg?@rk#|MkJ}q@@&h2Uf4}5 zmnJA62qLIh0I|T`f$yC2-E;5r|NB{4&)RF&nprdR&g|Jcmt9;;01Dvm%h>98(8+Ki z0>TFgyy0u_>PMb};GX=w%yg_q@|=3q-5b@7$?U72Ujl__$9AESKk|6o=#r=2(l0e^)U~G zx`r79paW-+`tTmySOOLRSODOf5P~_`SrOU08WfPu5eA)Z3N{46OHrDL%A9%mcVJFjh9gL&v!%|yowu&-MvN-!gNd))BtE8 zRUQ5ab_}_*f5;yR1G@*jzJ2^9*}e?orFr)mr2F7u`qCRk$%aZBrG;@yAH*8Q)EOlk zCeZrGDKm$vb{gwozY)}W_TL@-ksfgHEb25|jx6eQWcCjc#p%8vt7Em`01i|W&`xC6 ztz{pqDCWTa{~8)Afob z&%rv0!8+*C641F+h(TxKozuQuMcmpkI*HIP_M59?U9B1 z0MMtZ7>OQVS#3YrUcU=q)ArZw$LkM&*FW(uCy?C^0IEpd9v|L*&>9%YNnbg0Kjj%e zgBj2iWQ+XI*S#aWfQs>g3ttm$UafFeN@OUQvJj%{4a^{YbZ zxDy(uEzc707&L-#98sWC;f@JvG+akP5}EEhfG7c@;-8M&78*Tydi)=4^b4;st1#Hc zr6o;dl(D8*^FU9Fw1D~M2>e@6}g22J=;OycchkiFSqhU)ak z4*pl<_^|gT^7bbR>D37tOh^oWmA(8;cAV{!v8;g!hxIr|z$B-WiM;isoYN%MX)4fZ zuF1)&ImDvr?|?ZDo5h)ce?$&BL_M3|B0MDvADO2ae}%@LKaCPw^LoBGRrb@ zH_8ea{ws2>N0+2WmpqJKe;6kgmFgOmS>9UUF;KPH_P@4&M~=3y5ZJ)Tx#TPKkI3ml z@@jz5R3~BZ?N~?UanPXtmrniD0RYgI0M$FnBgPoXDU93{MiOhP{69wwNS%^3n3M$# zn*sn_03ZlDIh-ZhH$mM?`3fC!O^7-lMU(#m7GA<414S_j_$R1|Dz_w|x}o2eFk&2< z`eCuc3UP3z=fzib-zn08X^#pp1^^tg5BUP-JEGg4r#XV8&%yVhL5-jj4$N0K5wV{?x@}9WMbaqQH{3&}g!( z9=os}+oe%>wL<$`m`#X@G4KHefR__-=}2yM*PyPNo`Q8$Cy5 zo#srjuQ{<(O-}Qiq2{Rpi!ufl;O#U>4VXy{v7Pp`PXC*g0s9dvdF)J+oUuRF80%zV zinR!Ive?6#PlxD%R1)%r(>1t)R3#Q>?tath~vyyozX5@V>mDe4x&yysC1buDYViV-uuSm6q2@ zl$T3X)K&f}m)LA7EpHIp2;euy2E4{wub6{+c-r2~wc3lQ^Zcum z_-g=UF!2L5dV{wW+*a?!1J04YoxNzM7)Nl)1W#H{%qp+gtn)hCUAd`lj193)aavTc zwm9Xrs1Rp06I)RJp-p_S0~CZ@Al=}7BE@SxFAoxO>WGXX4t;y{qwe!0pI=HVy8(sO zQ2O3@5E~FOHrNJK^ZCzG;1nSM4gWg335$3S+@A&W0bXQ^q~Z57MECIGjnHoV_?O}& zxM`ejUv@Gp`Z@wXfuYSO7@^(s@zWUh+Txe?AK^uuXje)6gr!><>7`}NNe33`^&-a+ zU3x+TnEEc{5uyL3FrDkCfjjV7ifVTQ7k$*jWS(7K4GB(y$wDm1z_ z0%PfcoX*C0$bqKF$MG<3_s@ z$->KeIIZG9;U?~K#nWzNf|aN8bfzDgIQ zN^=Cdx#m)b!G7#LW$F>51~ZMeD&242<(s=op9p_3W4aEM$riqIQ7IO zd(7Ms2v7@2ubbWB0zwFej%_sfVPGC zF{_JnIgF@@A;OK&;)nQ0z zVn2j>&npXNM&58{aZ+{|vpO9Icnt7aHG~2?7IlyS)_eJ3U`N1DkO>&{1{|D25d6sm zJca=P#J$0asK(gQ?|xz)m@_GW+vJ>yM$zWuwGbpYJ_!Sg163;Xg@U&0F(VW3mRoQT z8Xj_iEFi2%mKtbc&lUG7e!{eUrQ8e%;>NX1cQi$Xbz^63{#zS{pm20sc-8y*uU8JWU-~OX!|4;S)KaH&1i6G?u*#WAZ479)@ zEsvSDB7&Pyf~+G8Gg#<#r-LV^IUOE}cwZC_x+h-)jS>?EQG!5#@Bt$lZ;8(E!(haP z3901N@zN443G${DCQM`8Kq*Regoc-7QL}0~2*R}GBS|pi(BQ3oj9erJT+%aZUx_T5 zz<}`ybEpIZ$kH7=y1OKzaoRqn5wt&;A*Ssg$xT}_0!v=r08XdICo-j|{`vUQk+1o| zVq5*l+T<4l4CsqIGFtdG(IBeG7~u~G-Ece?p78HE7NzxLXn}xQKVFA7Qa^$gT|PL6 zI1PeK>}Vtmj_8jIxFaxzvx21@9^`yHhi3(49F=!?3>lH2X~={ls2+{z`N`%wTFigE zms|^i5Tzt%VZrx8g#!W}vdhmYjjs2h0UQ(nd}iG?5z~F}p6u{cz3>EI7W;E2G0`aP zS|=T@9@rEfNnkg@xWCV~k1@WSMJR(`L*UJ1Bz^;#b-4jLQV z@QCrfbQiVtLI6A*PR0MQ2g06!3uE)T^_J;!%QJeVO9bYlH{m4!-~)gpCb)n=CMu3O z{zL*x;>je|WHvkqUjV3q;7$NIA?k+@A3DbscCSzhX*z}%y;!9ZJ|dGlI=bUm6{@50 z@td-$?lGDCrc4&oly>?wT=+?wh_H~Lkg%kb%zE#Oq1nDRAz^VD)YjbEyPnqP9T(&x zG8PP~6eNm&LSXcdP_D?aoVL&i{fNYe0b1t?5X-C%LkM@|)qz`(40yO!Y~MGBa}&nA zc7GKzUbD}Z(F&B7NhnF*`1Q`^n_uNJf39L{H3S2l`pgQ(ElD&lT&6K+~M=9FrwI02o8@oD4=f| z_z-ukVf3@V-%{f`V-o;yMrQx~J}Z#$!bsFjH8;0e+P3glgEy|oGELJVgG=YmTwS%= zUx!VLmIgQGy@Hjlk5O+X*|JXQ`RDj3nvATTd3j3R$0X~{xRB>U&VeXw%|nM}>&E28 z^$tHJ;tu=)IyHal>LYFAvnFrm_m~HieLqimxY=t-5LV693C8V{nS1`EROtNjQ{7@# z8KFmLOhuT^*1%nMil}nn%HE%q4=J_t8PB6FdoX`pe7TVFe6d~OY*wGMC_@$%JF*8W zpPUvalU>g}hERLC(J-Q8d;lGBRWr3v+KFc+wo;F)uzi;(b8hI7=KAy7p0caZh*6P6 zIKYRFZMJ)VH{S56Oynmm+qV!QWFmuf8lxfC4G0X9rg9?Fb4>I-&&(4#&3i8{sk8=M zcdms9N!n4S*cp?YufrfWMis1eSaq%5=LDVeHIKQ2AcRt^p=l)$x-<-&&!1+9EQtln zYVrteilO#ef2Q3z4UZ&_^;p|o8j^uZmZ>qP2nilUS0~|4)+CG2@UWy8FjW*?J;~9x zYGx;@HM~RN$W=|_KuPEA;tzN&|Cmc~=vG{D#(sM9dpYu#1V{DzHkr~M4hur^-b|Dn z!YhEaD=$5oY02ilJbJI)6o4quJMAel`= z#N3w3&ikl)jIHccw?Z!~Ls1R)nCuI~tk`PosQkKS8T46OYpfu?kZ5{A^E0Hgw_|R# zEL^sJmvdh~33hgE@tE_yVDMXNwk~HdS>iVLp3MyW@<$A3ViGWnpN5o}T!_E+@L?%? z;_h~XgIRoxh@~|vx3}!4@1I!n-tMIB$v=hO+|2%=Q!}&_4?J&VeKKbyOQByj-YLDQ zDZ~F~zKxAY<5b^`hy+YbL~2dm>8#mCUu&3)qLv+1OumO5aG5&rXa;8AZBYtzsWggj zII6xGtl=(^G1?0g267{KzuqA^<3|*H7V?8abKbMo@Qzgh1}EFE0ZHjDaF&Lw4DpMd zsJ?T%nj1PPI}s12f3ccXczAqKK_6x)*ji3lmennFqZ}CDu(P~or4ux`i-y1cDVCbG zz(M(9yVGAinPKIJzN*#w`x3|w%j*lFZc9(CsUA(qN9)5Kk*KPzrIda38}f}O_REov zK8U|tqT#<#CR5*ygLC9O=;M546LHTPl0QD8kkT!CE%YxY09Y&fl0whfNcX~pc*vr= zs6-!1TDbPQ-Wqbi;Me7o6*AMUkjL{!zK@ZHMbrJ>Bys!O*6zZuNm|i;moxR&#TSFy zRK6LVeJlOi!Gtui`DBerYCGt;W%lM7rpT0%1L9*rZ9y7U_eTc?7oIu_;-XwVMzb0n zKc4RUk<~&ubV@o@LZ^w^AKrWlvN{vkDwfA_WKvoM1xPN!Y{& z1V^TPhA;bTh^8{9{}io@e}Yx)Tg{Mff+boPQjS~e6>KkSC^KBA33aBNSnF9^{xUui zsG{bu|I->3!9)sL9);2UA)IjXPPu2pm4Ao0=^4H7%zAv2?XH8^pTTv_G?KiO)60cH zTIabE`3K^wpC~~e)$Ckt&^no*5jJeyO)*bpq&#;*Ozp}*roDLZ!TDhqhlA(KGjYK_ ziiyzuh|PTY5lOX~10fp1Bg$HC-*Hg#PhZX#;OYTjPGenI#;=_4|T96p5B-zzn@) zOgISyMl@_n`a|j;83}$>k%#u~x_(oH@{Q5lmP979MsmI9$c;8$ZN9ys^^|{K&0}$r zuik<9AoZk0dlRXF@y7=rkFf#+8f&FIjqKlTLtdA*;-!DoUc2_-fl+bjt*Apt`^QhqOvawKVpWj$GVRXxe2;pf| z>a6Ma3l;5Ndg})%k#AS8Kh^i3`q$$oNNbzFK$|l$50XV|D%q3V1hnhVdTY_c*mFMx z>8+v#xSG?m+9(u1DII7jL;ZnODLs)6Ylc%23V>i9RBA@ikAZnmysUY08)Bo-3rU() z%Ethvs14e_YtI`GnBl^68EU#g(usz961g(ip<9v&=CWrW=l9EVj*$kCI(y1K)6TUWm&U0#Pz=LK|ab$M@=BP(|O4|v=MMJj8Hllio>x_m8TZfx$I+8-97fZVRAr-Ue_ zE?j?kpP}gD`;^5yq79+vM{cZq@xFNh7AY%q&D5cV?yN2l>&R{9|K%^98QI`~P==CQ zw@=(1J#j|m_tJRS0~c-LwAtfa>5&)x{$HOxIFp^*ktMHXnK0x07CPy6_f+?nu?KmE zilh5&Wie$*Zo_pZvD*~VRv4aYn^Ks>_FP&neU^DSuyFRa7GgilnybSSmIB*O+x!Xu z>E>omEl-|2NW*VA7Pv7NKU+~-c@(Wm>E;A9`?*tJJDKyE-CM&>nz{>$-L$Q^Vh3!` z5aj^eW z1w#26UEUhFYFXjCZ~wgcTz6=fl_oyU^&1W5tM@FL>=j;s)X!BN4lC(Jbw-vYU+`Jjr*F8>LRxunp7nYemC|Yu*kzXf` zz4Y*dDiWHxqI}`U#UIA``WtUP8u9YcCoy#CG@MWI_(+h^wBm$P0eoo-R5H_p)X!|5 z1)U9uC8qYPUacPX&J&)$mlF0;0i*w5zH=a*r{h*LZ*aEK?z_+Hep_`bK{cDp&@-NAC|QT) zW3lq0j#j&GqqM_O$nW)uOS$KLn0|B!RytQykt)spEc~LZt|~-(-orM3Lyle7&J=i6 zagK=!2PA$r>EtF-@X-p~|GZ)*PS^X;(6!I*JmEFBP}XZKS07jUBl|*|M>x4?Vk+k^ zbxWp$SmDDQ8X+cm801YVZ-03MnFqJ$hU$lwC>5u9mF09E zI*b@*DZD8UUOD(ZiukoY>Dm+tT>Vk+Nk!)r868D!$F*ba_0pv!S&b+e8EKsJ(PT1IuZT`uA zVX28q!UFhS&hf14N}Pq!mCz!swZq4A{!8yx+_v_{8==wc`bMp=^qa>83`6XR|lXatEJu=c1&nxosbsce(BBlZ0AHlgKyEOXCo;7tUgE)&z85flJty1?a@u-d zf*$5TfX#LUn60(v9xN}vz*yyWoW3>n=6yzq!y<{HwBGeTiBDGL3A0|571i%R=4;Y2 z+P4{37>wXfQ^q(ow+a?0~k{C~yWlR0A=q~ZAMoPMAj{Kc) z_tOndduQ_u-j&VwMkEc(EN*Ety3{5&+s+x5Zk5*NdA@dz7~ehB+~BosJ$&vq=kR?$ zZWi$1MIX8EBPv8H#EFPj%-eCuE9X}yu~J4gSZHwP!Og=(^YcSNbzh|K21UAt_)MN`kcX*I0x(k7brtGM%8GUytd z_@?=7z1IdOSNp+=+QY-l2jShOenrON@r5=CV^Y0HN8kLx?c9hwJ>{|4zIL~PtOtjx z@^|Fk3eXk)iTxZhony#dw)jTA^qHl(ee9GewXEOn^+7h+&Ko9%W-dS_veL;w+`j59 zx1&edNtAGTgmzf@h)joHBG;_dpS}5@n;D%!+q+#}NjEOmB2{iV?I+A}FDaZTrsqkp z`0j9bwmfJiEjny;%8Sv3;j~kqLXXK!#Hz1t`(*B6Y>r(Fn{BPuo!;?`jdSb|(McHJ z2|_#NNTyJ&Sb~ekqKCozDy=lW)@GzeOaET%m(sr4a^tm$nPT>uPln3~ol1-XGrFluKWxa)XOjq$}-Umv5EL<1RQ-tpz^u=pN|NX;P5948;s&<^+ANb&k4i4 zdzON}7qd87$0i2={Ee6|?39x?N1LA}zueE-mFB&~nsWFOZ_XOIT6xRsiFsjs@`|{K zlG(XWgEYG1e$yqcvOlm5oDzR95d`L)S;69@mWIDv;fx_Rr1&USk%4T+f#<9my87a3 zb6=Vw0}CXtjwUFYPu+?6PSj43!eRR!SKj1F$=tAQuGziSe_V(6;HnU$VhamxGEq~l1?y2wZRYERh&!E^J6Gv)O9e~-H&7Gef z)>L`=2DP>Z29TOx9JJ*se7!*3hZTu)6u5o6_j=bXHSgwQ3r1I>ayo3PXX0lzTXqAm zkhQyf125TE9&ks$BGMQJKVfR%5fMWmpHUKcMUlK6kzF!gdrN1^ZQGFl10({) AD*ylh literal 0 HcmV?d00001 diff --git a/Resources/Audio/Construction/place_metal_4.ogg b/Resources/Audio/Construction/place_metal_4.ogg new file mode 100644 index 0000000000000000000000000000000000000000..cd09e321c962621401c75c1d74ff6fd291375650 GIT binary patch literal 9552 zcmaiZ2|SeF_y05YWyo5T7_yBhqd_BOi7+U}P9pohQ?fKMgzP4JLW3-0r_f>@LiR00 zWy_XqNs9k7d_Ldr=l}ivUf5p4Gor#-ZA z2LSq15hLE_g;euKwtLHiP0dH;9bW7Gme#Sqoj`Uw04O4O+B|vQf!4rC40=f$d0!s& z)*b~-LAJ<$zaAXo1yqFpiCwZ2mhM9Q?L)I*LAG2ubXTEAlE4Qda%N%aed(L;QOxOc z*@YY#gH4h886tIssTqeJbm`%q0euPYOl!+d>r40U(SWAs9gY0iGH8i~1K=F@LMAhb z`!@KT<3KuX;Rj=Itw~?{{PQ{va1@Ep5UHutKjQZnEDCRB_B5eBgDWD(Go0(_&B4*G zP3E`v^yIn!gpVTVx7%Y}q$eS;pja9!4*q=pBwn95=A>*y2b{ng6MGF^7^;Ke7RmDo zIn*2m063OI6#v~FLiq^Agv2PZPSL7vsV;GHSJKiWw_M)BautdIQ7kSEqBy2zKFhll zrS6qxG)y=&}ic ztzSw)@4{sReFGyuSCbUqi5Fq!W4_a)LDQo#7AM006IlO>8~_X&++j@Ot)da_nW5K} z>5m-zcjS0-v?uVqOAyqo6x1FNf4_mev5D+wSJg#o>v5X*bNUV*x7Cv|AC$HoG_W1^ zv;9zOYxW|@r1r0XISQNUQQv<=4mm^wP_Z-WiB$iNoNUq9FBfCaXe0`nBntZ{+efAs zre!S_<}&<8BrU^G>VYi}Ouc)1@msE_K2e>wmF8snjwhj~O7BQcDT9>z!*=wJTt5d%_(k=lbu z(6EmIfExhLfKJA-M0v$4yInS>L(B_O=b&hETDfoqEEk|CCIO##C6UW76HzVD%}*Fn zP8F@t7$MnM7*lipO^vyWbYR+}0(1cYi|9bKa(VS=yvtVULC`rA&MLTU5fjh&x_JUi;4=1YF&#;iDtQ9i*k!PEA5L)OFApdic4LV zL2BvqqDt|iBJtwNlD#7F<=W>(^~BD~@{H2r<=QpI7V+hJkD}7j;>r~=wVt?4@?5T$ z49tgjYH~-yR2I1470Id#7R!|5*y`MF>E{zrdl#BGv};VZkiH2>J*be(&q(HXghV z+KC@OBu0Yi$7*zBCb6L%;P?RyZBCvJ+BpY5f^n|MAF^775ssrBCGZ2LPKBf)(`Z&} z7O4e-O^*hBUNxBjvRcR{Fe{_;2ppPd3Bzs>$j=6p)C&o0dK!f_AgesWaZNO$mcz^q zF~S3`Ah4Nfz)2i>t`em5Gb9+u>K$45p^UjyJjg07G!cy^K2F4RXC{$Zg~p;a;I)Zp zEpS(8bVV4()CDn;iE)tzcLlOaM7v0kOwF`vd|6Bx4|heZF?4n!l0e}?d0d+4ikjoj zZixAlXh$MhcwyUdvsh5Lp0jlRh!dG$=6ZP~-5X6D8N$SX1Z&sV!|4HQe`{{#BtaUn zB9euRRXk1vh0l+hMx*cpRv@cHOfVPG<$2UNf)Cc(hGL&KfN723x|;IL*9$m0V2 zlE+~U+Lp_kSy_zRx<^SAj?+Pl!NXY48bWzsrOUtr)^jd>cw-)LLq~bU5^4oSgu{IF zrNmfqT4<5N2cSiXz91Cx+PY1hh}C0?bi}X`DNP{|3URu0Ntd0(eUT38)1ga+m2H z`|rZ!-y{0}MTtVN&SEtL-_|6qQ*=jF`8Bq~TWgoUiuBZ@+ke#T|E}Ku+sMqB2tw|k z9iaG@ffhKRJ!PnN5q^?UoU9`YGg#=gq=Gx9IgJa4eEyv_L>D96g8E zQ9gtgT@E-0KMjIR^l&5uj_8jHxI-}F*uYW_4{|=5!?S@h4$C_{hKxwiG-SddR1Zh= z{A6<-KFoi#mRt*h5Tzt%;WJ+apLGhjAU`)#>Ns?u0W1^%Jja}t;UgWewoF{ICNAEK z#p)a@CJLoiVXMyF#x;yboWEvTMeE*pVvR<$l;91~q6r}bUL`et-Qdv@Mh8f; z@LzbK2;t!B00rTw;6QeHV;|xs71b=86a$o@9p^pZNC~juI-m&=#!xo)q6fKFa)9wo z%MMyBG$y9{5#v{>Mr!j(UlN#egsXl`Ya?9Z>!t9Kh`608iP8lYAU z9BAp^$g50kh?jf8uju24+MbEfh+oXHy4 z;+Wwvew80hvb?XhOe{TuI6pL}*)l#hdo#;!JJ}oxxh>pp=9tJG=&kr&PT)E!6wnl3 zvCv6*ZP_Jzm2kDI&!M1_Qs}CH2ltowP+;YGLG#64`XZ?|nhV$4^j|11o@@@hZA}?A z8_A)$z3=7N_^SBfxIyq%;`0k#zBYA+YeNa19lt#XPhX6C6LJ~|g}SXnZUP*A5vEvpwz z`@{vOWJqc`RB0jY4F-BRvgMnO#k zL3+*rQzTyblTlVvO93=mN3YLRl_fnC@np-X$&PBZ)3}AfFogGQEforV_Sc}ERo%B} zagx<;f@1Fq+pNZ&Egs>EvQ%L<>k{3+Ur9h7^IM%rDHTsk-qYuf=&qg1h$OTlG z%A^|Fw~$rmS7|=c<)9T4a9K=YLebBoY-Xkn?%ZEJwdwvv>i)X9Jdg>|MAR<&ALp*ixWK1{p|Encg#tMQXPp*42=ex8UWfQQ`iXi1K7kT)xOor~AG%bV6gUBOW#?f+6B zg||xlDIX*H&XZEN^pe61ixN9&Kq`6ir;P1|grVIg0~xI{-cyUb3)xKAYxNjKA^Pp1#`7G+1;=!2)qi*A~_b-_VOX0RR5BB;_i|Q!OtP<|o*q04X z>S%c}7&a|#Nt9vOoF1_>n!e?B*vVAlva94UXUB%fJYO+uJI-I-j!S5kHDjL7797i> zeGK%?1n{O`<$(2{h+eXq^4yqEo$8piYNW71zWKFOlcD}`y@@}-Q;L_)GOnzPcKNrgPal}+eK`nuFd^@l4VhivJqTEpopii!S>68r5mTX`HqAvM&$+q~ z;T9!CR#30|?5b*2OvBHe)KpePK~s?$UEG_;>|t7 zPfNVy?I=8kE#jme*FgWk@fi;E6YM?j?Ta7ubKfX<^wum0{&p=e$VN(|o=;1x7+Hw8 zrn8;8rEmcua69u!Aj&8*N#g-*jn?T;Gf)yfBeG{ARkn~$HOAjU3hz>N^!(+V^8})= zRkLP)EQOzm##zAvZVAY{Qlojr^Rg+*r_0j87yl@ee7QR7_r1noMlN=nZx#Hdzke>R zxG;Zw%>YQ+7##}{aA?Dswy>LLHfCfSS5j=KqsCQr7?^l$97wDjC8plS+MQ`od_=keA&W9c`T-D<>*g(W$l*Di_`^h<8})#sjC z~<$hc`hLZdS%Rmfp}_ zy3uUt*Mwm(whSU7jcv^T^1R-Z}7(LXu9E@2R>oPsrzOf&)<+udd zb_Mk5Ei&+kVo?X}`vM(-LM4^*j^E3RYfBzIF|(t8@12Kz>h8rm3AxE+k&?EM;zm81 zAq#}ExG^lX3trcGeJ&;=&R1t8fScZT?X|t^ONbVeg&ETg1(?9tSwI^TudtsT#gE!d zI#si05@QYAnMUTMsMtKF$8q2BlV`l_kKbCGGFGv^tRNj*OE}lRd9mjVl%NhQeND;?941iz{DFkxFfD zpgD1qNYnw+lX=|GUUZz9j`K!0Iueew z$Cg45dT;@v9*Rwr^`Ttj-Rm7zjQcH*IxvG)R9>+^oH++-zljvORRg(cxXj*tH{1mxDYTkM(jRFg8-JI z4XPekFRrD@r2XM9c@dTGKo3vUOWY)Npd8b^9qrtGXSZ+K zZd1{OKd+xG@8_J7t?sr20^t^OymsE#<~T9VQh-JB`dlN2k(2+-h)n+#e?8o(MOzb_+PBfk48006a)qb)!Kq*PAZrNhcWFrx3kky*=jF@ z)OAb4x>38B&N9I-r48741oO%kP1ye)qKwSK+`rFD%f8#u9^&ST4FSLhk!(wd$UF(LucDn_W;K!*JI1}X}g0HG?H2OD^w{e zfVD5BatukRq>6i(Ifa?C!N~blrLr6w;X*;+;>|V*a*bl9C zEeiXat8>4V&F10kP~|)|^Z8f`LVRR|HM>2cSpNb?rKt;(Ywz_JDGF~+njk1)RlP#7 z0>ZbLoQ7?X##&?SE71Lif+9~`)q2i13=qs8o?vHVLVAR0oM)nqq{cq~%GL0GobYR7 zvrdM+Vh{d);Z^XKcmi^wx4`=WGG0E5V?7GFs46L~9>Th}^|}e;noq^;*)>AM{k}iv zF$onM`yEvlp_d^OpHqS_6=7WKduFIGl=A&$tc$~44AnxN1Ng7nrUh@U^m^^1UcC>K zUD(s47Y|*{dn`Mdvt4bViY5ouRI7@{>nrQY^cPc;UwoQzf-MNeT%-z+Q}%PD%g))E z4wgN0hdKn3-F&W0o>9J-e@YFI0p2{UzLw6R-`3p}@AGr`gY-L5_Jr2W~Ed+0F9ElR!+Ee=zY$v38RcEHrqs!{Ky37yw^)ZukZ z2R*K6uWq3&8CUEN3vcaDvXo3&cJFg9Qkee1XGERFs?a{xY#(ABm*>+2_$EfMrg@wt zyTB}As=QkF_Xl@YigFsa&0k#)BRiWSs}ZLaZ@pxeC~`kn6co}Re~03>PnFZRanap_ zc0~s4z=Oo5hPplejPj0mF6E<;sfSd>5we9|VPDccq$%Gt^{t;Sr^38^0m0v40d&N3 zM0sgl70OTgNNiWWco8s@aOS+7h1|}*4|}jA_l%8B{!c;f2ZpzkztDjnuIpTh(s7={ zPTLEYH1(eg3$geLU8xHQlnd|qM6vPo%KSI*WB>u6HS+-)9YF^XpP`mY)Y(DXcBbs$ zDg967l2;v+A9!xj3Jnm7-K}9-z!xg|$F4YB zQ3qbe8#JzVE8XyZ%1gU{Up3PxNn%|m>S-^Eivkijm90z{adp*PTHm}~P~Zh^LlmYI z$&(4V*9lydPQY$ZFNB??(1Bii{ma9dMpgLgTC~8(D^={8$t2U#TkUF}HNMAeh2lY~ ze)V!uEgE4&Gh3q6ttqbz|M)p8+jCF1%xs;A$d#VWTP5dCwU}X}1@-8akBf3$GLnw_ zBmKGcWZlkARlZ_Gk;*{lqWw*P_u)`b+5-=M_jl_vKGE9qN7^%!lDO{EZ|d5fO{Ko^ zmGVp8H@DPtO9B4x)kK2tUuUxP-@5pN*F?M5SVU7TmVVV7Ykz;o?u^?+kReYTuFc|A z88GaD9+ytW@2arYEO>BJq9w(}tYMio3g-__rT@ zrPUwX6_mU8`R*UIb(cuQ(aJ9LV^nwiiv5;@%1?+? z_P;_(?EI8E5#~bqXleSMF|%KE-^S(04a%R$)j=E5R>wY1ebA{XYo+J}b^p;{t)}7J z^Kv6}uF|sks&mE7u?e#%wnzarWnz*F%wF07Ye;A)k(4blU!#BWAu75CugS{z2AV$1 zU*>x6?XTK18hbId=~Zr%ZW=wp)$6g9;}fRbas4Ag`(e?!!Z-UKoIDv3)YEfhqxisnyS$7rzOfE z%{4)peN!R#5sJ8M(<`hbU;tBq8h%Hc8Fo%CsnI{MmzMHJb!VthlzH}D3K;kru-5k> z+Wld<_L_ja;Y8vsbs#I;CQt2S{7R!y>L^Li#D`gtDCl5D&u=^ez4>N$`jhFH#KDa> zSDxhS$>#m;%oE;WCQS~WC3faH2fB`gVec6|Pq~uzS~O2qG{XAN^y6a3?$1v0a;u5d zArH@M$0JQAOv8UCIxi!|uN_NUfrVL!+NsfST(X6s&xL{&U2a@{%bW5CoL;zRe)OL$ zD-*U5LI>iMhP6LO`Bi2-W8YkQz(TR-^4a0IO3SH!>0(Oa$0lfhy*h^)9!aGyEfi-bfm%7)RD zut=+U)!N%i;}gx!Rl4YN#qEZAU#}cb5f=hV@H|!1)Z>23M(@Y4^rwN~aB(?O1_jJX z{(XrwujKk*pmHLCRm=0|2PN;_hOV96cMUN&YPt9H?gU_3w92EGZC0HM9~6hRwvL54 zr(dWkKYN3@h{@Us!?8O%{q(DB>#v7z-b{H|eHpy=2rm@*`crkqR7H_#D}D=f84Mja zF0eo;RL-rJ5ee-r2l76<&;5~v*xSM9Gt6V)?Edo+gOi0)zMUo4&m}w>ZQEOhH1J{4 zIjoCl?zrFJbImXQF(EHeusumC$6s+59sFgX#3Tp{!-@dMm!V8(?=)57Q1(^fNzmW>!@eloVdPOw-fD@>e@b8CE6U&%s-RC zL%~0s%kr-)_`BX&P+wZuUZs_dZtJs83ohTw-FP;|S8(Qy;?VfCqPb3r<{Ae?`Dk{>EE+rt+q$@Rm6h%=K>Aj19 zpeP`qsDP-T+y{LB<$U*^?>=YQv)S35*`4{#?Cc&4Jv>YS65yY2;nLs69Is0zgbNaS zDbU#~=%fn*gh5V8$KZF;cnC2(nfdSUWah~TiHMm!291+Z|M>=>e;G-G^ow2ro@WdL zJMrM2U^oV)GP3kzn`0bF!n?UgzPU5teUz7 z1fV#Pq=)W_8qY8X00sbX6BXExxmOrSC49dmhDx#@9jhn#u_D_*;p6@CbcIc!mT@&|v6e}^ zp2UoWOG78j?t0Lu{CeR(73JwZ(BN9sU`SU6HHs7ViP);VK#5pHPbf-zYsgiP`A0zkh#zZtGsxdhY?l}<85BW+a1I^u_gRd zenc!EoRrh8qai>EuYB$*wv30p?45iWG%lfz1aLi337RsC2b)!{Q|0d6;8oD(S=;6} z)GRvGOmjK}G%o4MYJd{2{Hp(}xLf7A{r`)KXTLC@0_w8wGOF(~pQZ_4U!W-YsfPOj z(55OTqCJ7qT0zo%L5g6}3f34P=#A{@(f`W`CuRo#6$w<&Wz+zu4HL1cK%8Ze(p-@K z9H@#Djr{Ll^eJAzjbMu0bG@S|q%xdN)e;4=WhE3%S>2ZbICOAd*iRCV2>3R{ic4C*uzAc{qCAd1sk*NTH0 zzg9%CJ-T0EN-SUc2hXFDRZ}( zP`CLuH=FhdtG0g}=C9i<&xQP#=bX3*k9_*7b{6S>Jf}n`{heGouTB=9RhB?_u18XS z^_}96)n!!w!*e{7@8u=mOH5u*OczSZ^-9XGc~s^**s#^{|1JOa9IZe;uz;SU8OZlv zp3^0PQU|@MSyX@b?;e#VK!pZtvi`RL0H7;_M)x$17@LUAnBZni#LUf<{&$Z7sWa00 zQ_`Sfa{vGd0KA});~0_yGt~T*E>cLW@sX9v!%APW#oc3&qLHWN3C>UzRC<^t-%Yc- zVj_gl(2GsumrY00zNoU*`5;FDhCNci7yzOq`Xyen1&-goq-Ahn{IMZ1(QosJva#<2mh!`$1@NR6*vGm)0j|U;|V6C*tHCk zL5UA26TJMrLeo)s3eLDe30P4q1GW-nI*RQ>#SN=|D2yFf6#@Ws7Xol6Y-wFMzb>=p7~E}+S${4^dPEv$Y-T>hY(8UVzQCey-o~%btgpXkX3nf>jxe9f z)i-bT8NbGZ=?vwn7Y|FF`BpR$rMpKHSz z2b&w4yIGl;TZOt=9hh6rM(Bc6Q~h~_xp|xU{Jx)gZp7PQb3047`2%w+mK!#6@o&FJ zyk$G#JU0^pQk`bqoZ3T{g}m~;yvy#_{czoefT+q z726!dH~XD?R)07MGMM}!KXwWA2%Pr7p9Adc-4!|SB$r<4kq@r4roN!2cB|Q6q`PiQ z&DcD`F2`+I*3OF6e_1x&W-hI)X0tajS=Zb1el6gAgVN4WGKP>%U5 z^jxw zDx(X7QuLatST#5bny~x za2tP#Srj;reY&dpRtq2R`d&~tepTZt8=pn)N;**!U^U<_F>HXQxflK!S^3=S=>!oqz4z z*;}l4*17&fxNuWW7ASn}wRNgIVbU37m1U9&&am-)RF&%u67o$_TGw6&`QpA$Ti2b) z&;?J3pj(gjEx@P~1qD>1DBVgUc2(4$BKustwBvRtM^-VX@}JsucXK zqw-j6&#XKJestRG_jPSzPcm})m`MVJpTtbOJb5YM0=5@T$T9)N zfm^B$qycr;V{t+tSZ||2X!znn89-R|TC3yhdoKDkU@B*w>u_@*h+Eh4eefW`XXFt8 zERvA}jZh9v89_EmVQJUXO+=wVHKs}=z@3vN)(h1suswNTj#I^Ul6ruL>`DHS3KGDd zy&yq;9d%L_2BrTeG5Jr6^8c}kYB0}Yv;a@*UN#PjzghVOrqiD;zW*fYd4GTYSI+*Q z?EQah+4$6hko)fnP(^ z5d&Qg5B_vc#U+@4Lwa60*GW`Nnt=Yv=28bbkhKrEbRRKn>#TEXE2w`kLd-g+;AX9< zfffG%AWFOOazakUgBKGkr?$p`$+p_5wofhwCZH`!PSAqUz=Nnd!3ZV}G{fJ%xQu`I zF(|D6g%${?^}pi?MrxR$_7Rvs8K>zT z!Q=#yplVJCr%*j@QDRQibvhXHckW3p2tpKk5`}p;_{s-)e5K#MfEs!BQ1!(HO?p8AhPZy3 z%*2Z{Ow2XWWzGt~MO(*y@+g|Lw3Za=4aqJtyTuT69GVo9*aLxQM8z`uUwKDs`0zQU zf@US%=}kBa0Js1kix$nplP{l6cZ)uQA(JtSDVv!9!WRHmfGBz(ijOQYG0{D}yn7YO zr{Nk`@$x+>|0(&TqM-PDRUtiX|Gg}qm1iZCfHOF9LBEqkST@Sn#7#bAF z#g5|OK(V7SnDA>T9v%!o3XS0niD5@_uyY_WJZL0}oeRl{;pOJx!*GDBV@Gpy^F(lh zR1ORe7Y93vn;Xr8MlT|UsEZi~IZK|9zFKy6HhU>uOK&y!&M(^a;IPGtz4h!7Qg^S| zypO}S)ExQ{_tSGiddI8U`)PN5^awps(dia>{)NRKb(&+ERt=kxykr%TKvaO&`h3gc z46Lgq&8lH%Bda|2X{&NhW#VsVl7_wd=qn3d&x*p8rFv-LT1kt8UheIFH7=_x>$-d#Wta8))twMdt&U_g-oN{7S(O};-d)*~ZpVyhY4x!WpT`6G8?Twj~__i;en>hWZB z<2SsD9KKMj(xl=E8N-bfod;PJGNh1x(iK(ZAJT|ktJ!vR^^?bLGOawo3=gWyG@;s{)AFG87mtRD~2nuj4m|ZJ->tlPcnO(k*{rLgtEE;&BOkzfA@3APvN)j8h z!`7wzrG=Eu^sbv=5A9c{+4EY3(;-SD6_=j7r72b&tG}oHb{lwwT<}fgU$j`w5A7Cq zbpNtGD!MaeetC-#i!0IOUD~*3)-I2*#;u_!Oy2TnEr!_k+;xvumB$he-YEIC_{#By z8Cok44ER5zrvtY%0vn`A(Tw+W}*;6MAx( z0T(f@K7`!OaiZpK6wbuf-^msCJ>MEp1{allfqj@h{Ed0MpE$3{Da6_`GNr`DIQdg8 zIB&R02&Tj7MKCiW%~SUKR&PG=nWGBbCj=DBE=D~_Vg#Z_>I4ajtvnU`dpYE17A~3! zB>eny**1a^J*xOEK;EY__%>JBU8JuIOL#2k83XoMMaiWVq&ZHHLKlFx+1pKItho!oNyO9CNL$##GON~P`uFXUlRygo=g3iot@6=!ZY@} zPHOBTG&ix^Z~W~Bg_*99G=G&i-}u8x!Uh)kJKe)^^Y@CU9`SY+&)NI$bvNBJu!lHf zN@W?8n(z&IK;{Czt_G^os!)N*o?|+GO>AqG8e8!B)$%auq7LQpU^qpnUit`T>cs_R z9xq$O*`ZCwbU9jqGaMjZiTr! zZ%k*KYtFHtM%U?U(!{i~^Pju8KV%5slX(B;seGuO`Lx;u!@i7#!$3gO;{sul*uuud zpD_$c_hIyvK5@4nnTn_Flc#;qI)f)sqzz*Y@AXVX0ebu@j~$a7aqth3Gr6xbT@B9- zklWIRZ76xlkc*o}iRMfn=Dft|Cj4gB40ffmr5(Edo$VYXwhAK@W{^?$!|QD^nuj?{ z?5i6PN2}XeY^fNN4oFj8ew$?@FS2@*rjxE1W&-HZ4zY%3(aNom0hg6z?1jzx4XILe zr)p>xpstKVtn3UIcHnxH45q)!L`6Ovh`Pp)2T-@O&{oifRB~B1cSA;aGzOy>Ysn(q zlub%KtJUY9P*USuSgfPSI=jf%>avq|jSZCLlC1=s*R#DowuS)1st&PN=sZ`deCKB( z=e1bJh|k@MYWkJ)UG`@Ap~!0_t_TOM@PsnHLaFbt<;PE~nFgHdaA{v2#^26eeMD{T zO?wrG;u2PLjZ(YVcq{P{sY+{7pZ#KA0lmqiMb@sm8KFT}Sy=B^qoHE*Ub#l3SiJ!u zp4?*!HJs2Ca^a1Y4?oRA&lgjpMI7IX6Y{d!y7pU>!=DSOd^7o6nfvOHK7}8pyd>kj z_3?XsoBhln^C?%T&m<;MZ7DXo+S&eSlHoFNcu6)tN)Go77csmUsz)1^SnNWeqzxij zxfHYtX0R6coKATqaq9sxUj#MT*b=`EJ?Y*oC1;~$kj`3s`^ZmAInCnCdFW<&KXwmC z1jaJAg`%%MfgN=e!RgAH$a?Vx^DH0CkKhLN-!SR2yW`$C2Y7!plN1Gg@KiwM_cx zm^&kUfkkr%O(i2T+UtD$yzP(C=br_C=ZiRw9Ev5Urp*ieIYhc>95%(Jz*Io$J#$s{ zPv_QQhqc`+u{!JXf8@&9NO$wg#Q_D}qFhczn>^5EUml%Pq|(EtGjh}uPJS@7dEIkF z60^d&o?~a~bAGtuzMLQj4SVFhBceB9ZtW^v#L)Af)QV5_a{TN`96AD`)fqN$4mm$M zl5s&M(mmtHl-7lc;`0`x>nYL0rx$VpQI{i@t~Sj7TC z%PX>Ers-9sSsw}<_0&<}a}4&%<fENzqdEFbunk{tKFSl+Fcb1|PsDoPruEruABJvNKvTE+#=bP{y?B^X0qNye zSUH{KU!T*YOSKCbb)zu=kpFg^OF;mkMUQDCcAQ6(wi8IMBZkzWz4PiShKc2UR)@h8 z6-H`VXhC{P&{EJe{|!i?oO;wlu;XVyLtjV&v!}Y-H`BZ@2$>wJB14uXcHCo;41ULP`$+zktNU1x)96u(udTiF6-fNr94s7*W{bvCG^Pj zx!|GW6oV?kp$=h|sm^b;Y+t4>wm{+#M9s949hM9YBcjSd2fx(tm|+>g=o@Nt)H~pZ z3yC7af%i&+kElwvN+inH_(^Mcl5EHJ8$7_rNc5(RaKtc(lL2#mo@|ma*&X<^*z{P7TN4y{B}eeC73?e1b&Wkw}{U z_%5d&;>$Q>+NRtJQORZ~_*2?sV~v-z;?aGg1$9LXMR{-nCG;v^g4(r8WuIMy$y2|c z;c-d}Duz^m>Mn2D&bvIJw{q8R{tMK!*?5<`{d3Ug@TqfeWOA`BnhxrU-3*2+nzc|h zCnLipS&N}Pj)Ix2GQm!S%6O^~u61o`LFx>k zhagVPm%|h5D`C>R_e5DTCH5Q$;TsL$RgMfLTu|SEK`f=sdOWhW1tg z`<}!5A%T1MvM1Qj-CE!1fpiYvYlj88p$q^nYBmPpS3`c%&=T)_s+l#ZXXnBN1v@01 zu024~F?z_DP@;I-*n9RCFVw%9US-noy@lreMq{kN;dX7SJ49$t|D5a7YZl3E#r&6p z2UQNq@@;;dJD`uqlg5qEGl&Kf~`teCb@bo7_Wz^Uq z(qw^C76RoOu?8Ej*Tft5nfz=S!_;_luaj`RgL{T_xjL{udb2EPdTwPJuSbd?YC%=* zGGBQ<$@lW3fNpBO*f${sp1WO&AUbrhGW@)-ynNw6N9AIZu%X^T;UoH-KXjKH-Ka0) zVl+699mg21z*y9-(*F6GKh%HiutU`>Ogj@Sy$0=ph zFY?#hdzPI>nC1P0w|EAXskm1k^^Xx z_uHOPV@>0H#>@WRgv6FHMfw^QmNCv#q2+e$YhfSWhs(si8--d+Q>2Q>Fm+lhD#vc! zs6&cA0|l8;s_wn&$DG#=Yu9+!bwDynEHEC$N=f>am5CTUh&Xt!iX~e=;7j@(ehXrz7P*G$UT82r& z#8H*lEp=8jr`i4%T)!@^Vw{tG+pQT3{PP0w;6E=AP_XHY+tiN&9}mFC1@OrM&CZ3v zT;XKrMWavpz*h(~8inQ#WoKst-y}FNXbd|ynv^;24JR_k zG`q<}X%|wygve`7IL+b@pK%Wwmhy=*hItlyPrv|u&KIK$ytBzThnG6}DzX+3X+#Rn zF!j0%L?7b(wDe=Spdz&jyS}Ar377uydvkvVN&}v2v82O5iB8E>d$S)>M3|$6%~t178e+!z`@Sk0 z@3hK}c=*)w!mEbd_Z0mXU)OFzf4*D-_z;orfW|}8j}4SpmaOQ`bniR%JpKCY^Tl#5 z)X!NVeOg<@5M`TDHMS8K@`Lqzf{nqvX-~UYT$k}D-!QGoNjQ*Y-a;V+NW4cs;t_B& zE`|U!gj)Eq}}ehR&3#?=bEiDe$<}7K6NmN2_+Q!>PV_S z?>G_#S3Xo;JXJx9dhrg9R#vL3x8(l*>u^WRveBRuM#D*bM=DHEdNpo_`BTu#UfV3W z-`b+%*h&JPIi9NS6)wFR-cRp{)6>_<$^;i)o$NSX&cCG#4VAja2L_(Vi;Y`LTqI}b zE|F9ndrEe4-y=V=IJ#GmPEKvA$D+rm8^XndEOA%cQ7LY2NEJ*GEa~_l;<2RXrh6PC z?4^MSy9Tv#wo&mlMW5xO=y=#R85;NJWh_$qJvdd97XTvI2+Hd|_YGaE+;7Ho;+}Zl zAVDE?mA=1drl9dPC3#t6rAJx6fr?hWeUFn30%ikA#q#Ju6)2v(oi;^u!0kKk^3yxj zU^GSyO+Z>2xDG61Nb>J$vkJHcnh!&Jb#tSg(imbQ zu6H)H&>GdFblR47XQ#^RxkGX6a&V}!L|P7+n8lc#Lu5( zcnGs1GDXwSsuI!#2Qo)Y;l*-&-W<%wEEWv_97%)}Kk(&^62PpzVHnORzq%h}DyJ5# z3%GJp8$supfqdb{)}=TZ>`z6#w}~R6B;YLzt8d+%KB8$FOQBPqAjz(qsWed?CvE}J zIEh&oz0O|F%a0o#+L#D-nUE4QBKVC(8-|cLTB7qg+%OkxB<{1sGSggA-tXRH>mR@7+&wS- zZj=GfS_dae@kU_c+v;krH7=asz43EpaED3ii>MQD1V8`sWpwE~w1FD-Y>+w6ZpzON z50^}iS|%`L85z!eBcBu~8xg;6GWjy;mizGgs}cha@28P|7xJl&E_+*BUXZrD_S!A2(mePOQYH@C zZiqVcA>>P$<%*LFYoC{)mCV%nukXhqz24fd_+A5C!E8qzP8M)6U&HnIV!dpz+`eID zP1|~Ln2ZqpXI1wTkH*>}n2 zd_MuW>ow_`JpW?@rnEDfW?_N(sKuI11LotaT-s~MC;=xrE}e#E=1#MF&mI!D>+?&u zvlH)u(4&rbtc%e^O;JaU&II3ON@K5Wug1QbGb6}H`so1DoVtt!mhSIiiF%Y3Nev`- zXe(B@wQ`kQU#F+nifKbgkwY&@i(fHz*#ci_&(rG6YsMfX;< z=>@MymwqtPI(fGmrav4>cpV1=Kt!`4H4i_4I7qQTC9)d|maR?wd}N*}We3>K@?P zivd7`Q#Wc!gqFp&Y$UG1PWSTwTXwQo-O)#AYS^1v8)=9ra;QAi=@lnGojr-3q2Q=% z2Sv+b@#3{__U;s0Gqw5vic=SRShxWzLBgb@8qfdY%f}s*1fkNn$inPvDURSNrGjq< zKSxKux&>I*U8MP0!9stgu&i8#G3~?oU(h}HknwYhUTJLcbP1%1BQMVALNGs<--6s= zHULL-wyd{#g+gEClLXuRaZ80O8rl!Kvt0r~8}W)4IOq6@^L0<~gB`I|u1a70OeF7F zhv~Z()S^h@^Y1#JWC2r>BT3G7rEYJ!kFkF|w6xr+M663{8-!4tL#3e)Rn@vcv^)f? z={~?zm17fp<}QC5T8hU*;0WE2V&i_!s4Cdk4#HY4mBo3<4rQbhBbZ?kwV1nK%Xs8X z?)|!V_jldhZ^y@XLvyOltExzpI)OTh$V|t&UnrC`u3vUYzpywx+v9j*^X>Y&?JG+x z0EU0@=Z1r-kL=&ZM%eZh+yU+QM%Wd=`L+aSqOEM*txlgoQ3`jeAQcVXvh?uPLcH*a!c&)O{3!y=z7>{W?LigS> zm?B++ny{8W^Dj112?_SVOE?ijskZqz?c^LR=75Lf{#ZY-4)bWr+yeICDH(AW>A9k+ zR1^)eZCQ?11D!u`PJ<=`&HX}d+tZT+GVWERokq?ZkwM5!8G$Xrb>m1CUid$fLcJ?c zfQPyFgvjJ=~fuLwyL<2C}0C>+!mcw1@pHfaB>I2O@QxeW`|i{?ueF+aU;@2vsh zL!@Y&1KLQdlo_Jeh_#u84m|IY)()Uwo_jS1UMC^tqz)-gO4AEalLFLs`!Z6pQd%9` zSvfcOL=j{~eRA3~Y;4zJC##eOY32FPJ822lC#jHu&PmIOQq@=kS z4goxHB7M8hDE!KF>^HkNrJ0w$weI1q-TAY9JGzS1DVk}o-}y!!Tv^*_W-8LqH{4ax zq1>+?8Qo+>1|@OmouOLKhl$%NSyo%>>;H^)S=!pa9)HDq@Yep(QJs?{4o3!r`iM!V z{2G>GZdfPsyN%(<7U4q}Rq0ntE|>~PrsO@>m;#Aa>WB0Jw*ioni7s3!hU8O?U-uHQ zw(Gb|TmCfR*$GGqoH1<0m)96QNI2RD!c(4J4D%eb5T`*zyp*Ckrwlo)QhAa;QSPHA zCeYt=AJ|v_O!ycvtD#z7S|S@^WHat9KnfD*fl zvRr(4U1M;cx*yR1M~NWe%!1>D5CiUP4+Sy)l>HT)N+nipXY1F=Ohq~< zK1?p^`q%uR0`q^2Dn&CygMIvWu}-iQWzj+Z|WvTIJm##eppyH94H;Z9nLC|yOAbJlW89hoZ~i~RXA!B9=)D* z-!fcE;V7LQy3Gb&B4wdVP>pNR2Y2uf94@Z$(%n%OFjW%ckEjy`NIApCzkBD9I#0kU z3QW<36(S-$p}U%SqQD{we0fjx4p2ccEHtpYY^OYN^H6$hZ4?0mjUKh$MOQ%PVj4dg zHIdLMfD7E`MCluwqE2gK4fnC=JOUQJ2j%(Ebz!%tl)K3uRVbUuktgtxC!$X2SWRXLsvNZ))re0(qH+fgPDb5I6l z3;gUbvy$UoNEK65FTu@@kj`K&z~Atl`ea_IN6EYrosX1;qr-x1CaylK#F<*=3*{o4 z!}H?)UZwuTD!K)S>!UmD)jvO=ce#PV3SR>6m!UG~o;?-t3v3$CN@ zIDS+{F8=Z00jB!zGX-huv;RC(ocseti>0a>874Hy+jST`-XTn!7pzo>yb7IOI(mYu z!2$TguDDOJ6kpCf!vPBBe5vnw7Y2otyKjC|RxpqXA`#}E)##0IdDHC>GWSBL>WtOm z0_+y=5}By_>pdl(n8wd--nh4+Dy65SCsvz=HAU)-zDG*1cP+FAX!2MJT>#>J%mPG z@SrgpNm$Rq-RGf7wjLS!G`IHWsy>h8orb=Nui}d?B#S|}>PhsedY)-mt;U7XXIRZ% vY!>*macx@CF)M56+9i%y%J&gEwEjOu2ZMu~M3mA?HKAVwbazF*%LD%hYXjd6 literal 0 HcmV?d00001 diff --git a/Resources/Audio/Construction/place_wires_2.ogg b/Resources/Audio/Construction/place_wires_2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..987599fe38fbc9ecbe8f70f6afb39aa1dd111bdd GIT binary patch literal 13621 zcmaib1z1$i_xD|vE{R=WVSz;!VF{&6y1TnsN>XVMP>>FhZjcs`E&&xmq#LAB1Vmaa zLNVUE`2EH6f8Xc--e(x*&Y3x9=A6$tbM8E#>*8Vv-~svpoWRzH7yPDXq`gF}+Qz`rV#up=A*@PTkH zlH{@v>TVMfE)1N>KE)EQI^vH|L<#!uBuHK!UvcoNY^`+nn!s=nQ z4)xCotwVh$B(@9wsYovNfdbc}K!|XpQXs~$kHb{v_<*ebZVLs3gWCjDQ(@{&u+b*u z_%vGg3$H${$h45Mp^>&R`1o6!1~@GQ_%8&6ndd}Xc7&OCL|ZOKTc1YTGsOH;&cfDC zaphv`CMK0xD+Lx+Kc(Ret?_SKm;Pl0oY?_DP5{~OjT{EGVZb-*BVy_+z2K|80IC9~ zk^lXPxWEgz5w=3-EVpoCp%nWIwS%d=6-<*)R98I%_93ooey?;luH+Z0UnO00u3;+ON?J4vj;)_2E(kK-h` zzW)gyInZwQiwpyW_fTQUgjg6`C0ja+-vi3@Vu2w{Im`WI6^-ghJp%-1h2Oo4oudFC zis}Nz|Eeya{1?ULX$jmTTrFdQqrAAPwr@gmzp;->kz4>oF|P=S;`?nMihS!O)Z8oD z<}G+CG7K~@6@NVnG%Ct5MV=6G;UqCRJ|mb%pjZ62;Xa`!shOw$t4w}I>eFz5Wm=HW zP)OR?$k;T%(>&XM;lqW{`L*xJH|cOW2M}=8Dg9jnAv;EcFzy(** zioDMumW-l!S!t!dB~A>6J$yhP0Kx@^1YR-tOsEeRD@_QH6lM%ba8{(xsAKrD7=$n! zl{5~U1!Xhp!{r$anhAyFG!F4~;3R+u{2?ouN`XV-i z7uJMvXwoWA!kiXpwHGpl$Av}ojf_WWjpvMvSLn2j+c~spwY9$)8Ph5o!;NRNw2j+5 zCxxAsjEvvV8PByltu&GKIp(l!TQ=RvCfLROgVyr*@}KdiK27pz2$7urSi{fzaE zoy?7l%>$gwPmN9I!!$vvq4pBo*tp$z>DbdaD{S4**xJ-->D1Vq?vCX`^!iEIIs=aL z!kj-ywV!vgf8xK!<(lW}R$5h)$5m5PUDNJaQ(tFUx>HkHGt%r*Q(rsM-0-;GV;`i} zSJgE0*3|GmZmvDA;oWbqs_Cj5X>QD~f4tv*MApZ<-*u~|zW#CZ0gl>Lw?E*$-^CwV zi5abYyw_FT)#bI{*gMP**MaCwBL2D)t^n@*#Aw2^`dr?%1~X?8lQ)r_;ItMmCa`bdE03(bcyfhH9=Ot)y8N2Q`^{cFeYN`v`o>|_ znNDkB*5>qHYhuZk3-?QF_PV%7yFoz$s{=QYPx+D7E21Ewu(^&b%wg!1WYT?Q!24Ws z^TfZbft+OU0f-F<4jZ&1awTj$c;Vs@fRJq)W=O@|kMg53*h7^Y2@taR>S**MGxRjv z*fL&o51@>a)rShwX*6zNGG+{jN-Fd;+)Fa%4cwb5UtJzqZq);?Et04m zs06pm9VgUDDq3*_kkxi^Ii-R|MLA4UgU@6P1ajGoyjpcRjiGvV8_24noK90ipdDuE zB`}W!XOz=es$&LVhMs%_dF%rykkv3w_=SwEoD7gvZe*Hp&aHw zb-988v`Yod0n{ynFQo!E!eK(53lpWM!HtQg(opB905e@uB$&^6Ol6oM!3F(|BX;Ci za)B6>pOGLpb(EF{XLSUq(K>$+3Kjih7H)N|i*m$u(er|u93T{&>t5wp@BqL8xS)fJ zIKly>5CL)wWuROM7b@(S#12vzjEu-AO74MzNJ<4_IJgY(tQwO5D=Gz$0OorokziGk zF@qx*XzZfEK1_ulj*wwM3IN=KI--_iG8YB3ly@ql1l%+!z|D#=j644^X73_x+< zma2WoLEZJ6;0PHO2PhC49wGr$Agl%~6gBGl&D`tRD(11ZA`2jh+dkyEYk&mz@lF6( zB_IMCp-jr6oD3w~!j2c42uFcxOcIEJVG{(l3lxbl{W)NcQ^|l!J-|a2mwzOI1n_kL zBuH!{aaDnD@_!PO|FlT{ADgHK^DJr;@U$LaU?TpTm8;NPygGRNlceYTef_VT{Xg0J z|JJf}uLB|X-xVPDf|LmOL&RjFDvn_!uX@Z%~6qs3mva5H26T?L>v|K25z7fN#csu*Ems&@@klhd5c6o z(B(A1S8S3kh`7mws*rYa4|6qie$0mx*TaW?o zylw&EYK`78ndL1nr{7)Jnhi|06)v=m`!Fy7ZBdLv3!9P#h$fnJ1#>{;R0I3C14+h83Y;EMT-M$k^D{IF2EQ?1Ez8rAm_h*88o1bi}WtT z0Eb9WH8{crR4-a2Y&dmY3}*W~7nciy5QXBRF#8U=Y~-?s@cK)r-i;v*Ae=%69cSDRs?!IgS% z#;3L|U<~}UL=gl0RBS>Kau6895GW`L9|IIO_Dl&_;p4xj5hNui9gOmwafJd@QA6aZ zac1N+v^5c>SV_Rl%5I1#oc#X%)u7I&B6BUjTRqgkJ)}(FAdEan8wQeVb6U zl4Df)tM~XE7i3&TO#Js#1^=S`_e)vs;zJq$a9_$eF*jS!WE3x>Lc`<21H(eSgM0!4 z{BODXdipUUm{80tL4m#jj7&%-CL}BBG7}qXFam*MN1<3)Sy3#EjLeLzY-|W-BnlPn zAtQbJQl?fuQPvge=fhJWeB_suRkjb0XM^J<3U426LxE5QGJOuB>%bWqDnv6=&^U%$ zR^!?brGTdc^zw7s2uL0=GfPU!eF8>8{F5S&U*CuDZ=`>LyFT(ErQd`GI}ae-3`C29 z91qW$+l4+g(%54gjTeOH&a%ZNGbA5AbBSDe^UI!dJ}5BPwex- zSwho9A7hP2sVc>-7c#S@L{ZoAk9Js}@ZX4?6t5lJZB(aZ*;zd+AYCL$z>Dx>J!nt{ zjEu1&i~cL6QQv>nk5yO#5?R}2cgB5xeocY z>ayk#Zx^m!ws^~=9YNzf<98URtLWPD!qZQKXvn@aCuuskC7QbRs}8y_JD>wy(R+(# zwch!krw@u^mNEI9Q`-Amx60P{@A(Oj>46eQ&8#hDC-*Og>#Kr z{qh!ksqx`gk3E=o!`&i{81zfd6;d757;Y>BBgM$L43rS&Q&d1(6mb|_xjyxqcp0xyD|9{9uS?ON;>33b6qHIC;5>JNkV{sbl}dh8pl)Y>_83zTOlZ zJNH)EwX~uc)g}Ws{f5HDk8Lqu+bBH)r^J_>?NSe^u>NValYuB_hbT>P_9;0P}SU z7wySq$P>j&f86=EO&s^E0BgbR4|aa5XtN#vK=H<{*~xw*mx{2THg3AE+K(r*ezT0o z5;)#0UM?HGWn3d;YWXqkk9Sf+81UN^32@8gQMMCmocCn+<5kgcb62fYC3a@vkmsY)nJ$q>O#df1*Zc?lE%l)J0wI38v>(g4N zJW~pHAG#fO&IdfarliIDTcb3ZP5%b0t>^g-{k|3EBGWMx%i0i?95;E%^Y@>vfFur1 zg>bss!k_W+B?Xs7WRrhTCJP2*d}rna9d|bS)NiD)_9SRJ89tYz5}@z0yf0AY{}C(A znKFfJJy&VTD6bTeQPUn}M8!+g+8eh_Q zEWJ#;@noCwj%llSG=shz#Iq%VkXt>$>Fm4D>_h&!3AJ3aOBTq^h1@Ww3AB`B+-YjL zz^6Lp7`rzw4dWjx4~IOsOs<-lVY-d_{l4^LN1Ce8yA8YM93wN^GCWmcI$BKO(IEFd zJOt~T_OI&i#4BHRsJ<7(ynutladuNesbVjOwYRS{6j?!t}C(L{MN1W zIT<_0E7vHW%(=?%?C;QAOqXO_qu{6Gi3wRy>YSBA;n7{9B!I9<66a9mJaMv zw@GV?YSI#rM;4Xs6(qNnD6*b%CiHXT=ZX0Z32DBt4>lQjO(M-I>-B*x7~fyP)`Jy2 zWW7r7o-$V*NiXtwpxc*Iq@ML{oQCpg$+ohzY*aIBkQG1W@_kUbmp3wAcV2w5TR9Mq zoxJ7dn0}8FxMN~O{NPd_aUQ)|{XDzgmcl)St~cl>PwfWyuYGvae!QhwF)QlssCtW) zf+pMME!|2i_p_?O!bkE0mJo+EgI{WwogGgw%r2f1s zSY}?dyK%Rso|_f8V?0(vqQ*288vary=rW|LrV2xxE+ZYwzME!cO`qMJRC_AtRa#IY zF6G<%gT#xHqHgw=^Ob3)J-gL_$>Z*-q6Z9){Fmhy*~{9#sm&~TYC0?Ba`3`Uq6jyM znTg}YxM_RDP)Td8_T;)DijsPrs&H^`=;FaAeT3w!#U17(RP_c4yKhdu{>qK@H7GAP zpnj4hdcZxj3k{4ax$;#Tn>uuJMsD3q5T9#`!RoMwur=|{ z9RntO2^~#GNw25-jVfchc~9oIlb7dTxjEbhPK?GLQ~R_)R$}d8r+WzU4|k_~I^BIAGDaq7}x z?>U3DV7tG_n*DTU6=lxUC*w(PhB@NBRD0-(QJZYKtu&hx;E~CpWd$Gg4e82DfW%-R zJKdTY3>pVNQ!vjEym+B-vI;yqC456b$z07yyG-rCn8#$mQh+5C9)@Cw;u54)e1=Co zuFRMEN>W-^%Q-P76JHoUs)bh*wg%n3C0*j_q2p!7E#M(ytU_Mn_0&0V2sn^$@GVLi z0Z?0q5N2CR%hzEO4;tDVmIXt8eP(?oVmm73a2ro9@8*N6H;+UJPS2M^0CRzp^@xCdylO2p>Fvfs>)YzNlD7MIrPi^L znN5QYJI?dXH$u9Sq)InI6YeBfLc6 zFr>)PkUxqbp65fXiXU>~XFACVbr;o-;gRQW>PDzv-n)^UNA6B(NXOZU6cA5>H7@Wsc;cXk~hHKBY5zP{(5?`&fwvs)aA6=?*yV)I{+1jRD+amOpgNAdBQKJ^F< z-BMI1JO31A5F6tkfMw&Rq+OHPSoy%QT8+3`&~q%j8^Nd^KwdDjZB>o)32AM6`$Ev)F#60Q9E0rzI2jVLVa2EDXJF!D^ETqqN>+*k1G4B zQkH&~lL($Y>!yb)5DHI}j_3EQ>Y=fP$X#0M(d14@b_~BQbuS6Zzz#cO{thk_0x-eC&rri6>Dv9_+0x_ z;|kyXugcl{kR*7Z!3meWP;s>!COaUyz3JHMLHTcuB~J`cPHj6VTyBV*+UJk`k}v(F zsmWV%xUSIm_f7Zq7K?>He_AoNgHoDv;g{v5xI=%`aQ{YS_L(w@bRKq$tLs|YfpxCy`pmw)&xU(C1jY%~kGNj1^)V)C(VG@$-56w<(kEHIrecul zGHv7Tc)Ok~dhPT$BTAq>wL0Y0L+PSCQUJeyLx{g(lFs)bVPJ`d)la8Xi{d+rJY2Ka z7dTcijZ4c{e!nkHN~5lYYZkkF6ooD3;rSI_5zee?br?_!eQFH6hD(=b0EnP`$*6IU ztoEv_lxS*ljz^NfGq`_-w3{hMDfuG zV?y@Qcnp6lob1N=L1{+;;q8}NvN^Q}NvTx(i_KydGsd@e3xt4jI2mRV!qs>j-Wgi= z!IZ?ID+c!51y%IoR56{W?-g4EqzHoHhtjbAEJ&X8wS4W_w^`YJtoFxHveyk-&S9G< zJyiaRqL>qJ``{7hT(gT24J!wC=L>2_ffd49l0bkRU~E(YrYO=$yoKgDw|S`VXpx_< z9QfHcb>k^f+rp)8+6^sI$%a<}Qht{GDk=d_IlRkPV>C@fGbl8p02S!78*WsWq)ZYs z_u)EeUuC||dP71fK=7ymc>E6GGkNK?zEL#1p;gS*`W2*B1c5i?p9_#u&ES8EJQ|o0 z_4+hYzcWFKZldQ0wBQYTCk!SX&#(hPlU)H7cdAI>n}qiaZ=gsL+e=U*jtJsPykc5a zWzpdq_x>O^K5MKzI5F-<5?E0;&>wOY;~{pK*Lf@*1RZQ2TUa{U4D5>^T^AfJFNGSx z10C|OUq^XT9nub*Eb?D@ukc=|lR3|cS^H31`i&dty@|rQW)ws^h7gM^s;Bk2eLH4| zH`GgFj_^_TTDbGeX}P^}1f_S8D>mot9qfnmV~A-9#0U|FP2plhZwL`-=VegJx<*sD z2rjt{HuIsuAkq+cVh6|(Jrq*CYBTZOC`Hv}7J4j;Jy1Fq5_G{6Cb=7jwgZnAL%Ta# zy1EnF{Xt)3{f#0K0i{VQPmsVDqp`0UA|5{Ey^58zEu4?Us0E-=4&u{IVaWHC^vw$% zFZn}N#@;M3$yRAnU1jO$|Ft#fpzmmb_`1|CGax>f_cr}R9g=M({pO?8Qv1F=d$!fR zCdoEvj$+|;?AN%kwp$+YC69N0#|kg*o4jJlkwPmBy)`zsSIjuih%7cqN#%VR7V^(M z!~pJw;_p2K6#Q-2c_J6e%8a5%FfuYSfwv1j!Ay)ORu+cKtgJ{T@VbG4?J^1pzMxQS ztW3B;EGSk61S1P;Ac~C*oPq#nv9dBTf)$Dt6@=r#hG1hwfm~25Oehp9f*FNk25I0V zMkW+1D>$Exg`JHN>_Vdgy``8FsV^B@mO=BPWce3}ue;7}o9u#wSMl?R;t4q?j6?ZjSk7hBzGk7 zfQOB}g;*kzp0l6nMhXsVt7gk18)U3sifwxrHR201|3N`sHcF&KP)e@I_l+AeZDI$% zu}Ek%``C+u%TR)Yz8tRKa|qe=b(az9EdRiG?N`aW!bb?Qe@LXJ1D_VL>zO}%&*`k>Gd+VD(X2*SMtYi63XUQ zDtDKdHRduC7#iFOO3qHK+VyO=iY0H3%{!t$^g~v)#g8|*)P*Np3Gt+3IJy&{2njGY zA|BQjy|=+`r1lY0&nzfnS1bB?r!J>OvhC0AbNA4vu@}Vu$Z;Q3y)y$#|YV3%X=h9$Mu{#_yID=`^&SnoeqF zYoYor!2RapI4eWjuNDV000|GIx_-~;RX7H+7j{2NoPq;c%T8+jgmVp|1Q!wR(eVhe z^Qe&%;$<@nvm)HRH0gZu9n{`&+_vyUOy438vCLiUn|X8DQ{p4>tglZh5%MXffE9Bf z50e`a$n!VHYbD|1pwILTFMf%&2jZ7@G#*lGfhP}Sfh+t0&~;l5I$&ph*YlO{;`K*D zdfcIf5Gy#DD+PqNQCK9d#sBfhH^KJDV~0$pSB&7cO+6iX9Q?=Y{E-Jf`=d-uOoQql zK1Y9j5xZCrxv+NEirRMT#FLR@1CTCGG;QV!fvl`Q5Z$=tz*_Mgdk><;JZjHA0|ZU) z_rxx3qO&>a4;%x?FdLE@Mo&KWvIrvrON)r}BQ#fy@X&``7+0$=vZW)>c&0M&0ABbg zWYSwNd>sx%SzDv4Y4|#RQ<6#WL|?(vf|H?L*>GxV-ytdQv-qd? zZXMn1S_5;i?8#GFG-8xQ6hPf`7H@jKm*f-26~x7k4@HEhWpL+thm&g4&;#e&?# z+olrbu6_Jb@#pA|z$;S{DeA!K1Wa0aC&p7S%CLfb5>CHm-esZcXWwBxkn9?tTH zMd6&o@fFoCtt3*cSG9_`Wls);473&N^G%qcXha}efLd1s>t{INibh?ouo*ksa#!}l zn#Vw3hz6G;Jx_qlUK{><)p-dS8=r82}hst{)5H5dEjmSP1;!fkI68QpFW+;7w33bv!FEEOQv=yu&m= z=`E|QIl{mTw;hz$SC67^JXSh;L6pAP+y;6z z_s)#Cld#|R_(!^phB>oqs<^<2&qP6N_t8I!bqFCK^4z42C3Q>C#`J9{~VSoUFV&$BN8Qepf~%Q7ArtI!g+3Yc(#_|^t`%^v61n5 zJYvob@G&;3dT*zq_e>%BrA+-JN;bgLSnGz%@31dx!6AzugolFebGi4LRGU09XD8)N z{;irZN`LRl6(!e%7=l*l!$ptH6jZ;T%nPl-79qYzhfSSmmeI4C;B}#7yy$1Gt;01> z%zR>dN4ER49-JDf0%%_DltSn?@F;4Kr!b@GAIud5`WRLu^Bo1}PL5)WWl8S0H=Mdb zl_+fGg;!I6Rzkd=i*s2yMe6O}zdMV$<-B{5zpO~yg9n2LmZ{jIc||LAA9+dYQ*Q3PvATl-H6j@2%?!L@RjroKuwfM8S@T+Rw{b zke{$Xg^>IVPcY{VpSRlk98>^1y&d{yzSf6%&0-qlDI1r%>k3Rgo|@F%{atQC_e8CO zKKL$qZ;pHvghrS-km{Wlgth4!q?>t5q{~hB#uuo2NW6Oc9l1<4DCo;rb~n_zpfEgV z4*8I=U}pY@(`w+voK&C~R~RdRCb1=gMKQcf!r*;cH(MHCPN+WYeX;u7ZueoDI$;9n zh*-WFBMqn_E3q%eQ)~M5`?^)i=1l(mDeXWyT7-`=8uOl$N$y)h%9Up>H~Xjf2>4Bu zHP@2wJjhp_CR+}LR_oGc1z1+s@LRV%aP4FwYEZ~Hkt?pE3z2*!*~5EYn>KRms$g%7 z$^08C-OWgq%cU=WZrM$jciJYH7>ty=o)*bp)iXN(h2<_@9=3wY2o?6fz5WyrbV*2L zAt9khT!R*nm~fAl!=05rCT!&uB@7PTkOkKt0gTYRsj#RkRbaF4+6^D6up;p@`ucCW9!y-Dm|}a z+E107-~bv<7LSG<(3x2p%YAa42@2@W=KDH2WjO2gY{fa*L;_WHGiUh25SgpQ7dF_JdwQjN9x0muAA?5tW{UO8+hH7U1|2`1CxzWCdF#e z7PgVa$5U-WuDSG$$=|0{#+c5Bm~FMdcukhWY>=vJ9N@g*K80N#7S47;++-9}jSB2e zD}M_*f@YKagVfL4ibAkgy{(c5-I@uq^3Bc&4*(yo8Npde!=57PK{}PFO7jsOWhY&l z`4$acDLhvh*>^4>XL%m;?&Tv*5`n7&>IKBIDNW1KT->R+?cNt`@eYc~Ry~?}QR!7b zFidb?0)8h>e?N&%p8)s?(~PHhw8^sg9RHmUQ{+^lD}!#kN658SRgMSEpn(#bn9aX3 zGw+TW;!R~fqlvmLsxfT;v#k^t_S;Cgj{-@6Mp4N4$L4-Rn!f7SPr0_#ugm@}tpjiA z$Qm!FWduZLSJ>M~`{ZFELxs~uF?HFc>#nr!vn7RBPwBWjYks=a zyTM;sI4|ge%8>4%i)IMy7}JKf&)HmezBK>z_KA`PpAKD!o4lP-uf3M;1}Lv$NZk zg2wsbH{vD1rL3$=d;2;e->Q&cjwE8&#}G^yL^9EnTD5_7+5GVZh!hw9|S5?wi7W%BFGec$1=B$V+=l|cCy zvt!~C0OGbHR*QGiU6kdyT$t~2o1;+J;lAk4-C(n@%Shb0rO0k*4;6NZ>-R!q+?)gacU zClqJXa87h}h}8^Y(>YMLEp(o7b~+W_#sz>5?qqq@dyx%T=bcRsdndY0RON0S5lU0y!)>9Sq{W1@y5VXCD{PKgbSt|W>}FD1^O`Xvs<9AW zgr+bwg{dI!L~?9B@nF*9b;=)V;^20JFKKUKRG`%oo1)MN=)?O>3sgVfC^j!Tue@7) za({Cl26+OxIePK=7-0{@3H!hMSg|#?YE(M$`K)Vl`m6Cx-6A|*>IO&}1lSP~zBP?J z5B=KbdFSobtJtXXADcR|f4&PcYeHTl8)ifk7~~&uek72iU#WJxon;>O)VP*fpIg~% zUEK$Cvr#|MG?Jbf^4Rw52CPGa?sC}AcZ%u^&{bHVfUaCQ7&RDMuSce@X;psE-gB?~ zNb!I)anuiY`myuUEGEQPV2Iz!7#iL$m|obiDXa_D&%D<*Cq;;cCq~2wdYFBpM!h^P zxn>b#URmU6<&f32s9~;2CEsbDpYV)UNs%)sRWu0_eb2~06uEwv` z^SC#|nB4`vM=9*%tsk^KVa6gYdr3%HqSNX%V6hz)sg^z&erMgfhie*^eC$%s39&Ik z7UK=6=t=Qnhbx9+ML%CwcOU(;9+zpEdFs=WinWHUHd8;LlM=)jEZE_HUkb{b`~a2o zMLEA$Y>%=_UA%U=_U%{8htGZu1>P;DPE7um7{7XxfwHCU!8%1wKe6~`eOo0fLdR0V zv0LXSYuy3m#nlIX`sT&W$Hkvu;QlltcW(d1rN97Y@J}pIKE6Q+R_4F}7NapJF+XsX z%Eo4w2u_?`D)mcb-#et6?DnC;k2~KE9MM&2bSL86ikzoQuHzAVg8s8K&ga)j(T40s z%Evr@Hg;-el$J_KO@u9auGg-Q<`1@H1DV4jlfP0qoMo8HhI)6eCCk;KGanD`lHo@m zJZaL8f4G95W&FN^3aCN$e&SJRd^9oLme!IBOexGS|O0=xpV znoAi2HqKWH#k&Q7r#sqp8EMReCN-A^!IPG(lY;$`3qFfBfraR-@cjPVNX$*oUvw-- zwIvD=82m+f>I7Z5-?sD1bl*Ho2;aOXYr^wiBW6K|pVsjKFjpiBAhxL`d-eLYUAaX- zj)lv~(`udV?$CE{A(`IL+eYMEo4v`XGbe(Ry@jesd?R>ubuAq!`)6VvH3H*$9kZHr z_P4X=N#!xb*QreeEGODF;hc?82xi5^U%$X-q<+fr&x@SQC6PE0EH9W+gFRqN*Z}WL%F{mg(0xL%Wt^^$ z`NwI?Rb;+Lo!-=5iER3H*GdIerv)9n&Dg2>2`fMPxxmu&^G;(xG;_U^XZJXsIfi5t z-&wA3xy=Be^kU0AEnhSl5?0Tg(ezADTPI7)*okBBFVqeBIzIHH^tr<=vcR_Oxj{K9 zDMs8u8OKbu#l}&q4QYS4ywg+{8ofSaT>$VR8l3RNSb;povDBv<_HJ(6ORQevwAH!^ z%iurr$ifh|?DCfhfoqT}{7T(nQ9o<((R94uVP#v+fnh%g} zBP}6XAbDk9Z@MF9dvD=7@qQJ-vDu|1Yo>3<@5(qwdu3Q_y7j%e9Fj{6NeQ{M0V`P8hMp`Rn%cei2Vo^nSp^3fr5DR_ zWTj~kEoFL`o%KpuX|=nfSf%CM}SRfOl~H23-u?+@{U$LB-)$xgJMI$?T^XG>2IU0uZ5@^ZmvDwY8N z@L=*L!e7q`@CJ!1J)w-h{^oBar!oM5#=#l@Q2tiK-_#0^&sX#tA8@C-%ny9sC8-hTorMzFS2RI~)BA;lts%jqWJ`8ffpAi+vNxNi#(EHnb&QxTtyIndV@ z$85|&U)s@M_dmk`0Fde~172h)$mT=4XujAC05}KW^uxGt-{vF3+d%;(C{s-aT>W;O zw4dzcMtF2}5jVcOV#?yUoNgkiT67<$<7qd+9&q84-G992u_w1BK$8JhwJ%SIb`er) zzxA(;(FwZMfMR0migoI%eF8G#XibV_^HC-jhJSdmb zO{BWZaDSyIz}icDEx2{$xzZ~0G7(liI*-o>kIzSdIB;g106)=*GXTzvlQ@8@XjfV~ zIbi6UhOK}UiwN+7a@y9C-FiW!{vQCynwp(ggBTha<*I|)mpT!ipVOQxjRDs-s0P*$ zy*#L&Ia(@-*@&(#ntRd2db$ko_wP19-6pmsO4h!`VAf=sfi43Q zTM3{JV7_=F4WLdQM@vo%rG)`gbdboEKyzc8f7SD#=e?seC79Z8*)j01je#k@Y0$fPVk@Dz zrhny#>XZW|D?!$>V~|Kw<#*+`Kk?|!CIBEBa-gd}im?#Aj<)Z7T5kF+!;lhmIVXq| ziwNiE9Aq}+z!;L~>yKmRX)ORC8F`5rXDyPEm-OYP*0OKFDoWM??0V_%=_NByUnrZL zamt&QLsD9ysY-_7kQlS`TCups!5YIMsegk;Q3)6t8O7~KKg!DNtNaHp7VopDY$c;0 z1J;(8>2-Lr{6su{{8;ICb#-xFQ*XV3&Pqf5F;f3|BX(aUq1EQ1&~v-5lDgTMgG5on z-bZSxiYlt8qKYc2sG^Dkf+;VJWse_B-Zb^mLiIXkqew#|qoy;^rs@M&_Sj4URevwv zXeO6vC5vRaK*C4@b!cQ1Ys<@Ms6R$>?+EN3VN|lLCSSQ!h%k|+*`WlaSVZvm^pa@9 z8*H=i7=YWSPUv2*TTh*!g;6qGPB#(lBEs`?g1Qe*<#gOjWbVGJ$EGbnunt7K-f$rm387V0i5ej9fjDm{<+_%YRavj)2zNqJle=#cnxf1j>UVq^H1qZoz zBWJON4V8|tt^>G8!0>iZ7~T#F(;XSyI`SOD+d%;U&RuL)Dmjhj3zAbA%!V9rr6-ii zFjsm4{-Z%E4V5YZKnq}NAxs)(L;o1o18Qbn+G_#UfdN~9U=RC!04yhI1zZ@we(_vC zfGWi!fQcI3#=#o&wZ+l=%YTO$|MIZ5AAm~n1LQLqPSNTSAb_yvI*{7H`Ti?P`m9ti zX3adU1@3GDciX9yl|cgdREx7S$?Eu2xYrvOI)42EpFR9o8Pl@@$*GK{&S*Zgi|LMx zqH}nV&W8csAjzuD^#%z`qr04LqOKc4fqa8{Ol>-6LyoMvqr_GME`O(+lv)d{2X6l_ zAjKkre{GC9j?G-(EngEi>uk0aN=V15S=y7{@n-XKwQfEQVPqh6aj)jk_@ z;JQXJG%xUBfNYbstU&fJ^@l03o$ko&TLB#ALNWsv2B@#4qFq$V2f_hTY3V& zy0T;^{~J8(k1R95NIpP<)e0200v-}wUF2I~t^-pHU>o64PM-@iYql?SR(v5w6;)JG bMMdIYEcsDaR7Nd+00000NkvXXu0mjfaMCu^ delta 1655 zcmV--28j9M4V4X$F@H}|AatNhDM7+rMQ0&P=AmA>DhuvV3CYP>>)BLF=(ZueKC8Ks1 zvw=$R;Pfz=>F(S4vorHFE1eI7nSJl~{{807`~BX$Ux5EP%zsvQz>1yqyA?9+@BCkk z({!sgs!{>HM^BUu#4D*}!f>qb(Qb$qZSC!7J=B5EzC7T%jt5ion46x&Oge2UQ?&{J zfN#Iq9_nz}?Q-U(C-KAJMaLGWHn0n0 zcYnoV-~w6-Ls$%40D3+LdVrRKpkNL7?)|(fd^fL`JAb#6HVhTub@ipi z_}Cq=EQ{d!Srh;S*Uth!t9jgkc3@Ur3l`=}SNVY&8CVC##}?4m-fr23p#pAPzk;@D z>w-?OGDCJ4Er5V(*ZUg!l~gjp1cO1vPTma5HQ>tS0n@y$?qmA>!h9OJT+UF=&J5X6 z$x2?_wtrba%&=VqNi(F~OBqRj*NWvdve~TT&XCwBPx%wTCA50-8f_Io4qjt%No3H_ ztSl~xOfVQ!$ieeG?^*$;&YY*Z2DMIgAeBrQ=GiKM9K7B8r48Q6dq^@jJ?Xlv)A}m% z1B?dWd-Q~YS@o)|!ZZdCz?I2#OGTbwHk&OOlz-fK4N^t|07w}LgRhV1`CbSAwy{(| zSNAc##XjB0vfws*nfLJV6Hn@@F`$~RCu}`VQ7vE|u6`(mGq$P+( zqkqcs$||%)@VBN95s$}p8BIQy%b~mXt2fqp8aOtC01%JI5vUCUXvW1q{=ql%<%54$ zsK^Q!?X$JTZ~0ZdE<^6y-vw+HVC3Ne>eRnl_YfloH}t&XGVjVvuzdx{&4}jS7W)CD z%jI15~?%QoGY!BfRWbJqJjT2dLVo@b$vevTq4DZ%tq(oyN}k-G2(X zN6_{Wt%o|wVuQlrFlqz40H{ai#dtk@r4k~;vaJ3mWhA7M2}TeEuq=ykI1H9$0aW&+ zG#RZN%d!vz0jXqykup+QonE0HBlP3Tdi>PTufNM=?2Z#k${ik776TWI^E^OB0d}47 z@_kUR`(8iOQW)}F9|;u&m_21LPk*Uwki-n2r37j-z^FrJiZS{~LZ+3~d9R--&Z7mj z82|u-uaD^G1j{R{hVgrV@s}ntO)Dn|0%AL&db-?rjp{4l*$j4dAJZM1k)s=ml##Hw zBr?4?q4eE;gfCtn!AM}EB(&9zrak+?g*c>=31;oZE2THIiWGpB!jPJNPk&|rIziP` z0wwiTe-;3mfre%Uv%oU81NiR@!3k1EQtMq)>+K`&0gPb7bKj{b;PkU${fX!^p!oiv zdhY}-!~wHvB0DBC!xKe;N5HJ4+V1}DITcPx*kV!;ARCt{2n_p;CR~*N`x6V;?G`e0J?=ZR9tTAlU!cA-UvT8e8A7p4ZWO3|C z@xh=EA_~grLm3k)!-q*6hnGz=S?jgC? zmPIrg%}Zb58~}j!9glG%rwq%oQki@A?rF*| zc>|Ejvn&ga;}8f0s4I4#fWaD6eEBZ=`ug&eCk>`VNgKfH^@8I#a2%JH9++$b5C8zw zzMVwvuSuZ2J+BPMao~AgvkqAUoa;C*)HO7jYkdyW6QlUP^Q>-6JNjD1@X$@rG!16? zBvJsF<&(hAnLOvtMqmnXx}2Du$sgrAD&oL0Fg!Gi`o>1pI%ExS_0k2@PpChr2Q@dO zh1>v$tY1H9_X)v)eu`ljL94tHs$;-~^BszL%`N++``MXsBoYbPa$0Uki(*Fd+`5(8 zp@iljNV*~MJ{E~d-&$@tk!UokyD=mh#uFX`IEOk@QKO~-NaaOB4|xi9w-9>BQw+lh zr1C7w8aBX@?L8o1 zDsvS_VJnmeV8~?}rJ|TZ(P%VJskq}JVv!gCAQp+Cb7i-bZ&vx&jj92fTlOIyk5h5S z#mx2aAmWDy0dWk-xyIvh%2vf>%4Pp@Jw>UaFBBg9O)+cO(JJ6M07t6;0L^oQCAro> zqH2KU)KmEVegPN->a$k>fk2=@x$B>A%lqxeHldhUe6>+EfEa|3p1|+-3*kpkAP$1} zw`OKzAlzmmkw8n^{#UJoDRjF*0O;%MgRP1I;KteCpW*A7Lgn8Sit++-^X$cj4fwWo z0l)khmdcRx_BVl|B0-T{KR?gU0RVcpzk@YM7byRx^aM=D4!4WMo9T-?K+~CD@2eEqRK; z%BJcqLN#53WMTnwR}!Ui$;5)@?#ybU+OXHLHC3ienKEU{lqpkYl`s^giMz*FFI_NH zsnU5Jqi2JT96xP%2inm20CD%&$Ofv`Myb|rt{i4|kxUMa5}M-b-`bq!4gXM?<6FRE;tf$WxfE@n4hi&_%Xf~INdFBXX*IM7dV90!`F z;q`h!(=<@zn-a^2&(Smuj^hv<=%-?lSb3X(1MgA@q=^+HgSl>O?JYIgH-fXLzyfDq7~o4iDnpX{^+)!_uugXmdS5 z5P&Du1*gl2;N3U{iw;#=a!^tl^``*94cOfRrhqUi@zc2ofV3`o3*9fvpIUMQQ@}yH zPrwph-UGOH)cpA$x$)hLUgj=zI?)9gVjTOWa^0k&w;=?AX}|r^_kuJTIk* z*9T)WnzF<)xiWd4mx7+*p;;@MEMeLJY6}wN0V(mUfU*~;7p5mhRb?7kF;c^j0YpX2 s{2zc4Mr78FHI@89j51})lqpI61H Date: Mon, 24 Aug 2026 21:27:56 +0000 Subject: [PATCH 012/197] Revert "Station Map Construction Graph Improvements (#45584)" (#45620) This reverts commit fada4ff458d4ccd1f8335ef87dae49bf8b5972de. Co-authored-by: iaada --- .../Completions/EmptyContainer.cs | 2 +- .../Containers/ContainerFillSystem.cs | 2 + Resources/Audio/Construction/attributions.yml | 30 ----- .../Construction/place_electronics_1.ogg | Bin 9946 -> 0 bytes .../Construction/place_electronics_2.ogg | Bin 12057 -> 0 bytes .../Audio/Construction/place_glass_1.ogg | Bin 7212 -> 0 bytes .../Audio/Construction/place_glass_2.ogg | Bin 6812 -> 0 bytes .../Audio/Construction/place_glass_3.ogg | Bin 7665 -> 0 bytes .../Audio/Construction/place_metal_1.ogg | Bin 9814 -> 0 bytes .../Audio/Construction/place_metal_2.ogg | Bin 12743 -> 0 bytes .../Audio/Construction/place_metal_3.ogg | Bin 8497 -> 0 bytes .../Audio/Construction/place_metal_4.ogg | Bin 9552 -> 0 bytes .../Audio/Construction/place_wires_1.ogg | Bin 12933 -> 0 bytes .../Audio/Construction/place_wires_2.ogg | Bin 13621 -> 0 bytes .../WallmountMachines/station_map.yml | 80 ++++++-------- .../Graphs/utilities/station_maps.yml | 104 +++--------------- .../SoundCollections/construction.yml | 26 ----- .../Wallmounts/station-map.rsi/frame2.png | Bin 1762 -> 1685 bytes .../Wallmounts/station-map.rsi/frame3.png | Bin 1750 -> 0 bytes .../Wallmounts/station-map.rsi/meta.json | 6 +- 20 files changed, 55 insertions(+), 195 deletions(-) delete mode 100644 Resources/Audio/Construction/attributions.yml delete mode 100644 Resources/Audio/Construction/place_electronics_1.ogg delete mode 100644 Resources/Audio/Construction/place_electronics_2.ogg delete mode 100644 Resources/Audio/Construction/place_glass_1.ogg delete mode 100644 Resources/Audio/Construction/place_glass_2.ogg delete mode 100644 Resources/Audio/Construction/place_glass_3.ogg delete mode 100644 Resources/Audio/Construction/place_metal_1.ogg delete mode 100644 Resources/Audio/Construction/place_metal_2.ogg delete mode 100644 Resources/Audio/Construction/place_metal_3.ogg delete mode 100644 Resources/Audio/Construction/place_metal_4.ogg delete mode 100644 Resources/Audio/Construction/place_wires_1.ogg delete mode 100644 Resources/Audio/Construction/place_wires_2.ogg delete mode 100644 Resources/Prototypes/SoundCollections/construction.yml delete mode 100644 Resources/Textures/Structures/Wallmounts/station-map.rsi/frame3.png diff --git a/Content.Server/Construction/Completions/EmptyContainer.cs b/Content.Server/Construction/Completions/EmptyContainer.cs index 4455d1d79a..6d26bb5da1 100644 --- a/Content.Server/Construction/Completions/EmptyContainer.cs +++ b/Content.Server/Construction/Completions/EmptyContainer.cs @@ -34,7 +34,7 @@ namespace Content.Server.Construction.Completions foreach (var ent in containerSys.EmptyContainer(container, true, reparent: !pickup)) { if (pickup) - handSys.PickupOrDrop(userUid, ent, dropNear: true, handsComp: hands); + handSys.PickupOrDrop(userUid, ent, handsComp: hands); } } } diff --git a/Content.Shared/Containers/ContainerFillSystem.cs b/Content.Shared/Containers/ContainerFillSystem.cs index e3849db824..0ccc6a7192 100644 --- a/Content.Shared/Containers/ContainerFillSystem.cs +++ b/Content.Shared/Containers/ContainerFillSystem.cs @@ -3,6 +3,8 @@ using Content.Shared.EntityTable.Conditions; using Content.Shared.Item; using Robust.Shared.Containers; using Robust.Shared.Map; +using Robust.Shared.Prototypes; +using System; using System.Linq; using System.Numerics; diff --git a/Resources/Audio/Construction/attributions.yml b/Resources/Audio/Construction/attributions.yml deleted file mode 100644 index 89c26dafa1..0000000000 --- a/Resources/Audio/Construction/attributions.yml +++ /dev/null @@ -1,30 +0,0 @@ -- files: ["place_electronics_1.ogg", "place_electronics_2.ogg"] - license: "CC0-1.0" - copyright: "Foley by izzl on freesound.org. Mixed by iaada (GitHub)." - source: "https://freesound.org/people/izzl/sounds/790525/" - -- files: ["place_glass_1.ogg"] - license: "CC-BY-3.0" - copyright: "By lsprice on freesound.org." - source: "https://freesound.org/people/lsprice/sounds/88851/" - -- files: ["place_glass_2.ogg"] - license: "CC-BY-3.0" - copyright: "By lsprice on freesound.org." - source: "https://freesound.org/people/lsprice/sounds/88852/" - -- files: ["place_glass_3.ogg"] - license: "CC-BY-3.0" - copyright: "By lsprice on freesound.org." - source: "https://freesound.org/people/lsprice/sounds/88853/" - -- files: ["place_metal_1.ogg", "place_metal_2.ogg", "place_metal_3.ogg", "place_metal_4.ogg"] - license: "CC-BY-4.0" - copyright: "Foley by jerry.berumen on freesound.org. Mixed by iaada (GitHub)." - source: "https://freesound.org/people/jerry.berumen/sounds/770810/" - -- files: ["place_wires_1.ogg", "place_wires_2.ogg"] - license: "CC-BY-4.0" - copyright: "Foley by Clearwavsound and SiriusBizdness on freesound.org. Mixed by iaada (GitHub)." - source: ["https://freesound.org/people/Clearwavsound/sounds/541035/", - "https://freesound.org/people/SiriusBizdness/sounds/565193/"] diff --git a/Resources/Audio/Construction/place_electronics_1.ogg b/Resources/Audio/Construction/place_electronics_1.ogg deleted file mode 100644 index 6fa8b7b830668e762986d02882d1d77c2be66ad6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9946 zcmaiZ2UJwc((WE|mdt<%1CoYtUFvLwkMS#r)96eQ;y zRkBD>1VlvN2F|_ry!+nz|Gj#8)$Z!9>Z4Ha`Hn zJj9XN>xyLDJ5u5^PxXi_sX+A@N*OV! zZC=_!VD!v&2)U8^cSn3-2MpYcECHhhr7Y38_+WTmA_f$7X%-Cd1eQKYiO!yfseb9j)hx@dLw_akPLA|$LeW1ZipwV%lDKzNs_QQMm z_`F@14ub$0*OBon@GN$wtWU@+Tx?J=4q$Qa5*Tp|J3J;^G0)1b)HbEorl{7jzmmVd zlI&s%7+k#b-2fT3$$9@zv(k&V{NJ0jO%E?14f^uE3-fyy4tX@kdkjC}g@=0pFs9OI z{w|EDf~)9zS4prbxXJa#DGz>EzVfdioQE9%q!G+rF3i24H_!s(7%?4JscBc0Y0wqt z9{HaizYDy8hOnhs#oPH3iA0%RxWyL~3(X|DOLnOVoDiJ33QHbIJ{Uw&B(G%@(58%c zglML4HxwkMTtv`eh;apsCA=@GDy;fEIId*dP1E-SW++sjxlbeQgkz#g7a+0 zk_iiDb-}fIBgyOe4YVK?5|_eV)1Y}N?{8QXJWL(xKz;;Qgv_PbHxL_v)QLsv?jZ5` z*nh)E8jPFi475AVALboNU`ET9#}>=t_L3qt1JMJ|VTp*mhbjnALo;&cy7^yN4g&xz zGS2rp;7SM%Zvhp3bTlkAz-{nlAuIPAN&oN75@y}KF2WCwb6gH;jhf<)SO@&6&BDC zkU!L|}o{lhP2>Nee{X262Fln$CIT>dbj(DFM@IaRMGQj`J z92eU6(agQk97>fODr5YE-$YdpL`P}l)kRe_=!{0`+{fuHHEtM6qSx$Ob&emEQ z)OqXG{+%$FX|p`-{*TN#PZ4%xt9;xSqsYha?vyrEe8v zk^EQY*o3}G41E(Ex)B`76B2J5l3du3<{*gKD2~2vq+*0*1$hTw%AJ9B>a>@Y_ zoZ^u%^3FU%#kHG6;IW4Xr~`m6q6hH~iWySu&5#>H5U0iUAh~m6#}wfL@lX*sXCAfr zN^16)VsB0yR4FtqhuS=(1Y86Vf|_<9t&53$CKMj_v% zY78NXu3`HS1Ze@3@LXn%A^3Y{?10Q#YQTsL4*dDzN7O<-z;& zias|MG&VYIH@XbeIx=S$es1OM?=0`D+}myxtafKp*K%KsGg{FB?Qk^qOgA_VtaQB9 zR&v@03K;u=9Cl`I0GCxcT?NOw5BTnw-i*w(P6l^cSdvm$v|Z`M_qKRjR$a^6=#}NN zxRD-%)3SJ^!E{7c;pax){#H;CVxilaxk-rGX#NJsNUJO%^)~N0CLXq*?{+zrSUGaf zE+Zp;{}RLoux%04r03Tr5!yl5^z+UGxT#pmGg+vAij}bB2MV)Ks!7s$^;c9RV`T9a|=opYHw3ax*)D?kTg9 zbLG4huVO&u>vQ_y$ha{xP*e;$99&`G(2y5z2Qre;VKwV>t`1^H6Z*yHI+VaKgzL+O zLv8TX@x=wCeTgkI&X17uw3P`)4=LJGVg``B#IgfO?gEUmEF7*iAVb7iGlYc0yQYvt zoVoN$yaHX?_Ha08g#cK0T%;|5N=O%kgj|mpkOQ;08wQ>`1dO@RfDvd8tvMxoE)tABI`cxK`NPtMOw6p}DA?jF1w78ipC)qy4zV8}q< zb!ne7;`G13KxjCKc~F9|>ej!DD(TX-FJ;S}GAkCF20>i2o@|c-8TNw>0I+~h2$bVq zmA}CaCFT{ixG=&O2D&jE5kzYiir7fKO9byq1Z$i;=y~Y@eq_(NnS%wxlX(|~Zu zE*69ar*zGj6(e%S&|rQ-&5OYV(zge93yO4FbtPt*r;A z0;(4jG26MjE+(^Gu05{>L5Sj>pTgHSIkNlM9YjBN;;Py7pa5So0C1VH+lEi|z`9bg z@k-bz45is$ROnEoLWSjh#xCe&93q!i18u*VY8I}pnr4ndye*E?M)5@Zk70^yJO;q4 zC5#9VqGS{ClZMbjdq724JUEb1-adjb#KT*q7A7Ghd5?7+v&97{u{~tb!MbGBG=+Xy zW)gs|p-B&+FIhxHbr|WUa67)yf;$Wg!($8Xg3w0!2GBS?{zR@?-$5)PpG$FZ6aD}I zEC3Kg4r6CeMn+P+yb?tjO%+2OOA`me7XZp3zE=QW4*cNYV5`XNw=1|Dau(Q}cdK}u z7wq$ni0JaFf_Fh*-jt>9U$W0{%I9kAA-}CT1qB2;JG;2xT-;oOe+_hWzwaIAhI4aq zaq|lcBM?h7pFT`Y4!d1bDtTiyu+)(jN}*<|Ci&O*E~2dk6Y;dKZHsZgkYS^$OnF7o z-w(fyUWvE`!I@wzD?t_V(l@`JmX=U%+prK#N|!Fc75L8at=ikiw8V3m%_=sgh5Xmc z>#rbqC{Kke0Ciq#-vfzff11sgRf8;l7wIbxPH~9%jM%+AFrO(%)&4F0ML+pe&nsww z1EZ`ReqYy8lI*m3UG2zW`Mzn-BQ0gx0*mXo%IquC$*Rd$uRLm$5^w+MZE*Ozv(=b= zm!;7-D@<;8AXjOGUSeT(E_h(Kb6>VNe@f$8A`jW`*sjSBB6$0p?iI<;`x@SGu~L$s ziJ+d;x}x6V0u4sJjnoD|e%iO*=28hwOiNNl@9&eWSFHGa*^vx^aw+^Mu}xG~iSQI7 z?X!9!3@MKLy3|F z`jqq4#=EFW{H3jkg7O-kWA8fmhZTy6UQf4gwb?rcxN9DAf20rMaRl@e8tbSs9)Hek zHm0L?qFd9ODU}!+Y#AC*=W!MH{Ae&X8{$BAsE$l7gNVsxRXjVE=-j-z%DWOuC6E3= zJi)}w5UZU|N;SHO*x3%^dZ~-(h*`)c%3`0kYxr<<^_DtOedFV|H*HtdT<*o_GU^H4Oz@?sd$pb#ttAcV zKV9zHif#3^U0(a{l4td$bnp7w;`^7=uHh~QrI4k*x6Ny2+qNpONB6z59N_G)FoJRn zNfyTPUh)3&Bkn)n*&hcp{x0>Teq$Lt{{(@vL9!#;d=(-W&lNZLIwvQACWPy%WIftj z!YV(!IsN_~eW-XjVCYknCSgs=VOJTAe&)xt_>LCp9C7O%fKaW(l}=qt;_HLr1C`a&b{IY%4fx5KsXZL#&y6|;PICV%~O>gbB8f_#B1 zrC2*@rMdOr-f$s(-7RYS^LVSFIvew$|pzGyM}+umP@)l5>M0FCM_AQ zl(~u?AFfh%jqY4vEJu=snE7Xqo6D2FeD3}W2~qgydY}VXSLSkOICn&kwC=RT4cZI1 zZHhKjf3h+;mG?3$m1mtYuqb>-EvHRN{R#a3dASC>vp{GoB;xRe&s*x>X{apH5zFr0 zmGr|p-^_ja_^Xqkv=+4xo#Fi?-|M2#^_nMx+y*|D3x2iPFXcrmXj)%Xzhi0i!v-Go zYT#PR>T89VoAp?K*r*T)aC&g+m^b_<;gieF`JI)cS>rjyq5O5zSno*Atk1%6Wt>m9 zoYl{Uj_Z zJlz?`n#rIY+-PaAQE8h+Ctb{#b5ClWZaZx_KJP7QZe1p+au67xKf>6$=Xj z$tZbg!h!bUM_Otp;#mOMkEcz<4-=~0!i) zUVx{?^SqYi@1zD|Iz`WiUpCzPOr@38!bkPwj;AfbDpy4W9}_EM%SYTV?rA;2SUM5k zps7-6`Fd0Fno-U1Pct^(Z+_h_)kBjdf1c2d4c2+McKjq~huz+G50@73+!fSJG8Rsi z?;>l<-=DkEtRRSo$;j5i71~#qFu!ZP;$*|hfD|&p#QR6nhJOmkTUe&{Hoo#Pp+oUz z70*0HSUFCUguH7EfzON8L%iZEx;od_KI&d0%Yn=2JKiEB_ruZ(5Kpw*^ww7&-~90E zn~%B4hMmv$QhjdKzY13Z<0Ejm`sBi@ViD! za4Wd_-bt5s8_*PM*8W(TfmR@n=aEp6Np>CUVH>R8}Bh**$eQ(|a!GJm-wz&Ne zX;oSmL-w)Wi)9Pj>e#%s3%vqp%BOyHY+)#U*&&QQ>bQz4 zbcMDojg4U+Vo^ zO~1R`?{c?}R^k6Ha>IeR4B??WT^k^jObj$*2ZmDa`MK{+Ui+%5tp!J)UWv(?h>!n}vL7Eav9Y}5yi6F?O;SPJ zFqQ&9rHeGc*l(ipF8obVv4qtAnDHp2i_Ya;s#n zc6DGKq=Mo9!3Vvah+>SqaVT+edkPzVdP~WpU5log=hNgz150meBVQIi}N3M@Od5d>qr|_Mp3C zIxx*|61<~Y-#06p7p~pr&uY-Cp#kRdei6z8rifGmCgUa=;l1#=uZ_AxgewG5H$voS z^2gd`mSv1jA0N~ln$@mV1YB>}-+kT7yM5#JZ$hG*t!%v?2ognHO8XN119e=w<47ht z_lZBfwtuWy^&|viG-A&}Hc0qqMPf@)So*=)_cFdIo4ThSj&CRK{W{!%4%+OoZYy3n zVK9J{qzof?ALjYn{(5xZBs(uo+4(hFr61RGepIn`v@K3jS#rgP%-#EW_kl)MbhI7w7+cfc2%PYd;ijxX zIZ(c`ulU_n+t>AL!%ewC%ZL%5C%&D-`S<-e8}U2h6c!KWydXakbKd5f_PUY*WtLm7 zy&kqMkFM(LI?-Rt3lCGPVnVdzSsbYgN(y9kOL)1QmL|AXXMa5W^~-@v1A~(>B?YAC zGgCk*@k7HuJ+H?-Il3 zRxyGDipz*EAIIYjFte-=d?7x%1F}Rajd<; z<7i6jw^T?8J<3)PX7isH7{Hw9z5rU$nm!`?Uz(3X_jSd%c*0Av?Z1npH_m5Wq13;j zYR_PwJGZl_Jxfy#7J-S0C!Oai)?Wn#04qdJX|`l@$%?2 z*>uKS6VL4JrX?P>*3`Bh_3;xJoVA2=K)UbtmijZ*H&|xhXd{nIxe7^7Ad@Bwk=_#) zY2#-1GGzd~9o~+23x1@Q-y-*BWHsFSTHn}GcF1$MVpJJF_<|#;YJfq^Gm66`f^Ne- zn1?M-M{^3ds5-^<-JhYmxORuW;ZKCT$&%hw%O||=U^+R{d`oo(H~cy)eugvuC`5FQ z)%li>SWsIvBZo~t{Uf^^_{2|(TF+Y!u<_-15@eg)eZEgOLzb#r$$wu#`z7H#{>}1n z#N%q3mLrWR~+OOAQU|jWo3_ap(nQMD|Ar`2@dc(HN<*-z@c~5#Mu7T zkfRc`rpWcItn7OpkfU0lCcjNtprrb?GA8WTXg+<7e4sC>KHa#-EIzE?OU*;g1o!ga z`*;Sn|M{Z@E=Ur0wA~{fc-Qf+qqMZD{&xZvLBJ3tB+{rgN(z|kn-AF`3y73!Ys0mK z^4eOR&b&Ep4Hd8Nsrp#$R^Ahx=lzR1I>Mc4aLzWj0q^-?l+6g<%u;Z>vl&+=eIX*jCYqQ~BFj1@1pYf7vOY`}&^LHdP@UEp_nL z>D%y4U)^9s$1NNE#hx}(A`fEK7|}v?^AitzE9YaO18JG10g??zhNo@9juuXTWklpN zq`tW45uo78b&EdvtS|m-q^Gi4{<`k%7aS_YEI_cTGbv^9ilST*$+NPOBZirZjfXh~Ur=o&)riLe|!6II=OC<2P(4R z9=<&7;t#XNWfuj1----!Rt?x=j6{Y5ZI~7Q)Avmh@3c?N{16d@uD43V*4(M^q5+>5 z9EU9P%#;~l3n+EVi^NQd5vh}b*sqL_!p7esn~&_cj1rf;nJ7IYv&5KumJxp)@}V_Q>XUS;Gqb@i1E)>L z{-N6QYmWAn5Q71OCMzFaHN`ZgFgxKi70WD{Tq6%AlEr)nRui}8f)I`Hyv|WkS0hWR z!WVY2_^BO%CJn*E&nr(=-2xmAV}E2VSB%9pJi~WRv&w*Y>(t}6zIbOzA|(xBGG@@7 zks~oFt|hmy+bc5R#klH!yi{#F7PX zgfyAC4u_VWAil@W*fi^-uNLo_81~y2m4s7|^5OJZ>CvSehVuMiZ;x+ck-5J4r&*e9 zQ=jlfkiOpi-7O6|&Cao#Ne| zj5rBsV5zJNxFzJp{^i8~4*ypg0}{0S3sxCDR`H0OuD|lI<)L~r`Za(u@bE>BS*T4% z21Mnk0jC_^t5{>6ZeeBWr+ycO`F5|aGOD|K|45_%%v#_pdgkZc`?_zQ2Tb|9(lfvm z3spb&98M)`NSir}eFTqTWg>GNc`Ii+@dySFSpX(f)4l9G(Zb&_AwpWn10umP<1 zwO5lKxrs^xZb15r99v=$=?;#G)gUZcqR>?09y3i+PJ8Yj>+o9Tk;8#io18t2MX^fW67?U){8dEcF z;{P;>v;o&t-n48|KT|&oHl%+!sZVc^5e7(S^(Gq!Fz)sm4H3CC5c8-^SqP58 Q?jQX8$U>hOlQ{|eA8mT5Q2+n{ diff --git a/Resources/Audio/Construction/place_electronics_2.ogg b/Resources/Audio/Construction/place_electronics_2.ogg deleted file mode 100644 index 0e5b2199b4afc04a241d430149914c567d9a81f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12057 zcmaiZ2UHYKv+pb!1VmUABrOQSl5-LT5fm0sauk%Dk&NUVB?${IQPP4$k)%Y)Ifq@z zAP6ENIY^K<;Qzbd_wIY=-Z{N}db+x+x~hIvQ#1R-(ozG!0sgt5YJUe6P6LV%Mu__h zXA^6eiz!Gz{Xa`QAeVzrkS7;A|LeNgc|nP1j^?M3JO96~9^Ai-gh9HlwWAg96K6}9 zowbSfC3~16OpsrYpI?k$7{;M)Zsulc?O+L$cW}3Me&Jwm?%)c)5CXyf%L6X^KpO%O zfinWiu#SM?cr5^+0D$MLaPmY8MK~In&EbhcDqM^@_#;us$POCQXo1dubueKwY5>3k z0yv0cb5|5?1|=+M*khfuB&;8c7r+Rk)D|R&Tla69I^B!W4N2JFJ=ox7O}(w#{--(>}n2zJAQl?B)G5+6&hy~~Z2{J~K*EPI8gY80U? zFrjT))<|IJ<1#3*n*L8me5nTvJc}#=tr>+Z(FOYmcs|M*Wc61q7!Uxe2|RiYRr~<$ z`#?W1!un)~Ta8L&L`YskQ$-8B+zfTx&9UxoSa)ANRH(rxU%gME246xA4?~So{+1UZ(&nromOL2Tw~u? z!QEFudbtF2F5bmyfGq3O{Qsv}=p~!~?@h+4n-h=$ZQ12S-{r(Aug==#%uRS{;cfu* zsf;>zhqLe_7vU}!DX=|qmFqz&59}#l{g)Fi+ztRT0`whD^gW<8)Op67MRZ*5VqH|Q zpeZga@;_gJmv{jcVa~8fwh15-iZ{MAO9050CY$I1>0e3Uf{5&8Sn6=bI;y zXxdmyq-Gj>Z6PY{(t~z`v`e5b;k_vxSt-M*E`y4ssp!8WPs%jH(!x=2j&?Pjypz@# zTxUI+N?16l3+~k$PF;Cd3k64!$TarqTFt-w{((iIQTkwu#3HyOaw^TXme>#+{WeSg zH9&kZ_ut_o1NzPQ3r%N65X?80zy!*i&z#8U8b_X(CD0AeV~mM?h$swJRi|Y~y9Qlq z4g-J?ic1v#tGk5qUlivhL~-_VRQ3z@abI*LZG)2Q29KN;a^K z2=ZtM-PO|6(s8%fd*e3!G1Tyj+dS5H9vk!QM%aG`)_+9~00vFSWlSPXq6NCrgCENh z|8?-cBF72Z^_srtHLFqutI8<%z>e^fUEvWbc{O1b4Qj&?YPYfL<{F}gV{Ib4dPMou_q5nqZE~qM`;>a3T^@j!QYka;dp9@3={xNNYzQ;p-A;X_)5Hb zufR8Yb%aDgy2hXc5kp9?06|7D1sqMUF$nLX59z=EEj@VnJ_i86njzp%mP6P~9-v?c z793fJ5`~qZY)Vw}Lr`-pl?paVctBW0O;f9nN^3$>Yx=s1Rt=j9m5R!qrWTdF7PZz` zvWix<{gANvq^8#Fb*+gS^Xcn;I>~PHLMnRTEe52zVUvBIVeAc2|FBYlUa}I^!q$kW zxoW9tnd@n4>A9Qh9ct-de3d||hRP(hmR60{3XNr zdL6${KD;l#_(xq~U7f>vol}2}J$-J`k0#E(*7Dwp&GkCIDmP{|Ew@>u;gSxhhy62; zOoPMF3i~^sOHX=12BSw3LoeuS!EKcebl_a)E|;{icr4m76+CHCX*wdVYGtX;F}nQBiuu*R=bPc*u6T z)9FNV>A)@bJt=Wl9Ec6b1vaR9WwM#Ma00|300HwVRD*)E1LjJh{sWe$DL}yN@)*%U zk5on2FeAq~J7Jo!irwjnln5(0a#Wo#8?B14%|>F>Z9n9Xn{2@Ht|P2@kfZuGg`MO2 z(br5V1XuIS1{I0XRTl)1)oNBAxhw*m2USAwX!nCa&Ko$WarJRf2jnxWmA%Hb2=0B&4dps$Q9Lu@gBM*Dtw{ zp#(l5T;gi?wZW_tfD6b35SwRRq>ziSy&s`IsAx^$+%LgNEZZ-^Ug)eW3x{j<-zQ?L z9+ZH?J1`PNZ0PGsoID-cws1J81rJzvT!t-yN@NFwgiMbZkOQN*69(oT0$Map@Gwmt z)Rck+O#}J`4K)RAOXET=%SmfGc%K6vqKe>zhf*LE+0bC6OF|FUb9Tc>U3&09fAh$5 zQWH{vFqo^RAm_CZWdwU+AZXE2HxLTwj(&Zc(yA{qM5Un^K_xa23Kpg9D19yf_z529 z=VcyY1L6q*8Jb*Bu7o9pNx#H*dSNg#(ua_9cBTiD%Mww8#{i#I{SshDAqx_~dM`T| z?9j;33xYag4F=A^(XJN+q&f)za5{n&QMsC#OVH~qFlXWbo)MCBL4pbterS(ch~4A?4+*sog(CI_mH3f7I;% zuHOHrk%4U~2)Y040GZDugupo=o%SPf_{}Ta7dldqgN0rj3Oq3ZLr56>dtM0Wp6mw* z2@W<8C2%+hA26bk`iK-4b#+cQbn->&7}rPefV>IW&=_?aP>LiGx@!DF)R+4Ta5P5$ z6%QD42=LYs41qCuC4$kv z0xUQ<0s#u;PGL!Tm8~NSm%e5Oi*4CUYhSz=sDr-9xWw8@pY{gZz>P7$oqyXUb z#bzCj>4tTrha@Y7#5+@%@Lp4ol6dsNT!FTOW&$aIhH9wWeor@vR(q0RiV$ckL24s7 zUI&djmsGp=gRhn_B7mQQStw8j0;TB&1%=?jfvoc8VS%T3c*~T6B%~x=AuglVxBx{+ zH|gsLT~bP_qQD#zNkI4M^KQZb(wLa4S699ZHsc%4xWPhTc+3$U5NLcrFqOm0uVha? zwGd0nqscGdgcksS5dad%U@R=D60ziQSK}#OUrV4&q(Xx51%Pr$z*QiC6+a>(!Xh@e zZ3&lE&MYLaeHoAKl6=t-5&eBt!Mhy)eNzrl{Y$=hQ@#)*s8T}9z{lNFUsc-DR9*h5 zrk{_WZ(^|T^GH|U@NGB;oPC+u9FI4rmBAx`^aJVen$Tq3?QpceQt5oQ)kgZ-v&j37 zh-wPG@B8$FPsKJr0YBMN@H+(=I6K&xWNw$tSmxX5^~*h4@9KUR^y+b%R}N8}U3rS5 zXQ%*z((C3MGdP>8agU0@Aoj9IMsL;Sq9k4(4Udk72^sMS8YdrRbW z+w{k%or^-^BI`=|D~U5M{*6e2f{D%t((L6V1!M)yIt*9jWc4k@+b}){R~c1ry8e<| zf!7>ElUW}5nFjq4)tk9*dCU7`+s2&)#l}-|+z(s2S&?=x^Zjol_i1xu+?z9TNkBA- zeVWOf5m$U!&_Rn3J2O4Qxtv^5B9${mP3}rts{)s(u_v2~O5&6A-YUQf=t8TX(5dKilteyR@}AWgO23{>1J&Su`*8qv*A+!u=L7 zOWrF>wAc@coklGcYEeeoy4FT)^E}-RE6X!i9v>RFQnS}wH@19vHY@phq|Qh!-MI;# zJDbF@K3!)_OI7>W(!15P;O3)+$O>ku=XKOBKChh&SYP4TBzMNxbfiz4=@bX((KOnk z2EEk2+*m0{;EOJPB$HNLxPDb3_OR-CPD)WSgQ{LbBg8Mfq!1qmN?c2@$I9t)KR{q3 z!S22w9YGV*A5`)cp4VR9C#zNN&kRyi8Zli1eW$;E7u*w|sADR92HZ7Yg;;gQM zr7Dc&nJG?FnD7S+3Ic`UmpUD?Tv=nYsuxA6ER?coWLqVh%C7%=o~T&|Kb}GBgVkfh)~afD{s3lw=-q2c z%#RFZIJ$#zmax}IrGYnfcdJQ>HU}$hJ;=3L8s4ScFQlri_ToMh8(_qHk8`?j`FV=u z7io+7i^(oiv224hODxxS^49awYsz1CMIlXZ_NwKO@kUwwJ6?7N`vh57g4E;`HcDKn z=hAood^{KQpSint=6Mp|<3Aa!_jM#2TXk*6QfL4Te1hkU3R5bkS80x+t^E}cWwQ_K zeWkSoN~!LbdNhlo%4*3~pHDLDI*r({N0tG=7%EZy-Ki>gCfRo^^qI*(EjSs(Ujygz`Q zta@!@EvvxD!oSXRn;<4HN=&4OHU)S*qQD0j!(E#Q zJ%$5rZ{`O69A=dXFHj3rK!Wv1EVz$SIIDSfx;&J-bouiWK?sQIXaSOPYSgG(T$-c1*hE;2xgO$NpB_ z@zBlhFWwSnWhYy^U-4>4Xt%N7x=S=*Gqw-`xGW;&>uSpR(Bog77sa&lDw}KeOtcK8Ov5TkHzbjNdHKxGaeh6@>9Ni6@sDr6m)d2T1guF6+C zuhMC&WV%=xK-;vE zBhlXTMy8&|xb|rwnrHqR4C0vGTnd2UdqmA794>s+mOEP;zcPdp&^qnn(vcn2v!LBm zGW8TnYVW_TB6nO>x_oN(eCpI)ug)ttsz>VOo5r{wa8jpJH}ae0#F^ngtMQ@GXe%E> zQJh^I%Fe3M@5Fr-_;O2YdZ9jv*sn^1c?ljEy9V=neG!|Yyq;-mUP6v-rRfyUv23$p zg5=?HKaG>t6IER(_T}H3%kIE7??3tm>y=kN!x+C0sV_Ye?0MpDw)cDc*1)G058oGY z9n*U&GRqz$fL@sGH=tafdK zfmT&SBz@tF~Wl2l|U1QmVm|{lB^Eri_UiE!721 zx@v9Kdc4CEekfmyCWwB3ANs7oQZ%62=Myns?4D8#@9*WFlGc9S`JMJ`i1FGuDs-ht zjN?SD{Ogtqp3h@F9+EU@sjTsK*$+2h?il+h-*jQ~#F1)r9+-s%Boi1u1+Is&I?k3l z4#e00pr_61J;DX}A!9YE$uTT81X5)V0u<%nmTdV{P>82KX(Ww8ihirhP156(4o&q3 zqi;A?%EkgjXNObA*y_ivc?P1pT^&El)bWm}l9;tH74#0Am*0pxi$0KfxSre}8?o=J zI>5NY z#@&6aLG7jfOFyk*aBjvw7Vkq#etn;khz9!85yHg!oAT!a%eWTD9D;UcdHj$JZR7e= zGZ}q{+4*aMdIevldJBG`t|!)5Ufq~RMTo}u$?qn+*Ad;)#DVhmeX@Mlc+)L~-8atl zrPGTHF)87RmABFqk9P0uV_Jeri$yoMTWhOc>^?{s{VJxceTK_%p_2`srRD znWzDGp&1!tcV1m_vA-KO`xdL6OhEFdPM;8==|uCI+IcANljNO- z<*lJ0iA@6TSRI)OJ~5A|rIk~w^Qe)D=+6|O&< znhz~1M1%n~qjeqP_A%PnY7b%~4aGratmJ^R)nnpzwoN>NGYUTd&D=m=nzVo zGEwmdJF|}G28SQ1S4#bU?|h5<`?J9w`e|iaX)_;whkPND>Ytf3H)emDnfE84toE$T z;LJ^)r9w71(J%8_ub;?yuk(eHL=f<(>GIPr3g|$V_32rgg`T#RZGU~hNZ96cbKQoN zjew|2hXb)>!}W5R{o685l1k~gJG{``@KLS@Yu_n!L4Y^9nv8LCp|Y(Rn=$Fk(y~E= zH%i^$Qh4@dxVmo>Sy38Twi6ZLBvzkL9Du%SUKmD@*`?W$szPIG)6yEb?!e>+laW*$ zbskJe#!JS!toFQl=Ksm(pyB1h6sCTAwxizjOcs%lO^#h036J1)fAdMDt%`Q1*m~+F zn*^J&$sALJp{1PfF%CiG$q`-K0h_|D!;ysBJ*EvsDtPL3>yYx4pY6wk<{g0WJs>_< zVrOi=KiszGUpe?y>QKT)cur)&HX!d&je>=aZ#issv386U_592!(Atcb$fwb@Ov^kSCzcL3i z8@f2{2{{OQsZUmp?`d&mKy70uiPm;WrpTNDk@vm?+an<|Y2Kzmdv<@U%bsPn*94VI zdPEApK$7j5$n2oNO*w`P}i^mx{GTq8Jd4IhoRr=&=;WNhFoI~@i z-twerCp2~3Z_2%eux^B<1)NJs2!&$w*PnfG(1wa{zcxi*A8PMei63{nVjPu6?h}K;p_u2nN;Q78;Zj1|KF0JFN<-4d zXO8^EqTZS=di`fPQ8 zo|yFz1~8%Y6n&ZGx42R$!?7pFl8l4lUtA!{G;MzG5_u-^xwme6Yi5ieewZ|-{}VsA zyDbK-Gv!zVVAaBX4KM^@a2Nh_It zMJ=KM*9l!?h*k_7LABJ$|nh!VFdnmL@W^+XzhG8i?CSDSA@4dCQF$XR` zCE#IR|NBz{E;w|Y=%~9XD99%^KRx?(VS1O7i%UdYU}YFP*wbIz*!-0G{XlA?+v_!s z?Q^=UR`H%5N6q)iwJW#YrTV_cK;62R&zD*F+r;!Os#MhMIc_Ec4cGc0-o<8Ra)`-B zFFC@q~YfINQdhVSx!uuI~{B+K3y%rMCtzT?QSqBtM z`)?LU>kbvJ6Dt?1zG|3n^yJ-YR8_b?LqwdRt}tF+3O~o2hZVb;2*_04iDIHxRZ^h`t$uK$Gr;N z^%%5iN<}EGx88EWK4p%Ii#rm$R@9Q1`?jR>Zqlq&l*f_mLv2a}JzNoPh%)Gx+)%Bz zoSA#mABZQ3!!qqAC6X;*Preql9J3RXUu1;j&Z;LdOxJ7(&6KV-z3C4i8i(LR|9E>s0vvT3wU5lE`d*K2`1-xv@#S&w@>{54 z;`6z;*3zd@v%PI|ypx=vZa;699VylWBJxmcFHZ? zLc6LeuV|lZ*;EC276zaBIQ*~65d!=K*=lT&#(UlSF>gk5y+a^Gi@ZcR<=2ROuuFR`wXl#BUkVPpT(r89w^aqmlk>&vf)X1Y>5tr^N|AUSIy`NE=QRMu%@#(#} zt0E&Fvd5V*{wtq9Ri5~G9#q<6f8`k+)_<IFpiDrx6Mv%2nkA4Y&7;F|Bnp*D4(Y?%&+lsr$i8G#9(} z1ez@#A47*X6Y)g$NF?mU*0F13+<_vTsH({!D>o&cc&pKM6EGKRUVcYU6YTBG$qjr6 zcX_E*ma@Qc`g+&9tJ2%a+m=m1+BslRpp^{?(YA29cd!^5lD@rW)u^QMT}X-nH`AkE z9@iAeA4CQI`8auF10_TEs}xAuEzx9+)O$)9**})iw-Wu$s^RcQXzBIh0iCA`zJekL z-xIa+>yPdkH4PL#?!yFx_Ep~YEAmL8DAGQY;cPj&l_3Euugt#-Z5AsECFn;!XUuy> zF!T7Q%pt^%{b@qnTVx0uJB#H|ii$Z;PFT>q5&KA8OyIY~hM_8>VFO}q�UJf-2& zxf?vM6}0obRlme6>AR5l8%WC-MVc0@FPKGcSfI(in&?a?Eq|K&g6Z&a=xWiP;I(hH zeNjcqu+Cy}=uF1WR4#{#g6uy-$F!!Y0SDEVRjOC9`30-XF*v!%M zyZA@;tipJP26Rm%yMGXDX7b|1lxl})S9v;7_Zg0{0BRU8e-)4!gbQd(2ACqIWSXe+ zTz}1=bkv%sD#~u0-`i?#n5`F15fHO{6Hf&Fc^vm6b#?)}sy%nld^2jPY)vY|!s|rk zZM}!s)~ihX6n$=g`WZwZG9t~WC`Ib^_GvVBM&s%UtB|(8bUVi}YrapHpyQFFXg%wl zoo1$rFz5Qa6pLnZip_TnRzu$IS3>Z3h?n`PZLfY(3M~n3&&x1w!je9}Dmu4ME~zyU z;=5^|v_BV0zxp7V==pP-&!qPPMzPp88vQJhJyAwo-Q0fwU%tuMNfI3rV@!)=nTF0QE#MFd^a`V9xA-GV-x@1}}Df_D%{zMxjRRT)Z_F^2g zupV2&;YD4@>ARbEWc05EdL*263ht31ag)xKiABzlwYcVM!jueX(g z{ImxKw`Ek?JZayy=|+ucP_9Sq`nvby&%SHiKA>X0X{*m?#>HN=1Q+A(`-Q|w$c2g&Bs+ZU4HO@kd0Zof594Cz;DAMIv zUt`rl%jvk|((y5y*fyQWsa&Q7LT!yrJr-#5h)AAC&JDj$A!MnRGw*_6Ld0A+<8m(^ z-B|KcxbtW*kleZ>>YFu{qTX@6B;y>~Wwkoy%`C)te(G17#qRP;ZB=AYh$3S~=iDg6g>EV!>-8djUZ!8SCqoT3aP})^BrI40TyZ!_gXfc-{3$ z{*8{!YoVXIum0|x=@L{|Ghouhr8mqsaWUv3OBW}UV&j^ub5DNMii28Hsv7y zXO0Z*z|>yF9n%^yzuyU@iMkgrri?!~wja3}f!%z-U=;{)FaL3)m%4eJs7lnu_WK>` zGm@unjk=C(bL>E7IB6hI1%Xsyl?o;yGl? z{H2vse+xd5D7WZJQvaau(x7O?d~1%+Xq#Q@)^>V+?;M$A1a6LQaF%7(B7tdQv`XvV*}+>K=`#bn zAI})1RhSs2J{kn)=M6Gerqqc#T6gAo)Q4BzBZlsNeVb=+A0M~m{3p)@$(71(A+q%+K@3bA?Y$ZR%eTR)ab_90Y8CO9Z49lo6dOzy3XD_v2+F^V;+6{o zUPntB6~5FpwDmtre5d#xzp85Y(|=EWeNHhrH-p`WpTa&+{i9h4Q*3c;R^z-0nvU8l z;l|!IS=StCUJate<{u^ZfBC%}Z6@e4>}Lx=7{Wy{tCXL9zxJLFGfLaW??B<$`IY{T zNk{6i@7Q`V9&r+$+8Ruwmdx2zY&SmQ;a9HZ%Q)9k$*DWhC_k+osLX3sq;Z`lbJu-y zts*{6Fl4Ie^joj{bztsIyJTku5a0{#8zf70wHwp!`d&?ppW|&-H*xpMvIEnmjz!y6 zSKG&5=J1cwUSr32V+M=MP#;Zfpp?ZGUb$~xHtx+rrJ=2Mo+6sTe!dx4$p$(Nb4OB| zkHfbQ-<q1vgNwD&@|r7u#C+i&n;Rd^_=DZHM)u|lc`Zq zofpsR2z$u5EBnKn?Y4H}++qU--@Yr=j@n9Dn&3cMj3@7xGhG{g-o)Mz%1*Y5pr1mbTYj`77P|aUHJIELGBZN4HYzbZWcyMVV7EMJgyJRyJreBn7#2;uT zyZNK+UwyYhT2q}olz)FiG4Sp>2SeQSDX;D~aXFr6L+{bjkQ;S$4>QBf>hfDBfx#j7 zg)kz#toN*OY^X*#we}ZH`Z_=Ic`ys1wTfat7F&|95Weldl4@k{>viYVLgr%3w6Fzd z_ripU+0m1ZKvlS^pxo-xuv}2Nz*nK2p$hFa=2~jS_As4n!8A594}-VyXHReA;4)c? z2}Lwz^ehGAblNVWO`a+bzxO(t6u@9)Q3juX43#o=3IC+s&0c@>Xnt6EgP1G&Vd=oh zEN7}0V^C19p>B<*XEk^Gxr$6c-k%g8GZgyn#>YDwluMdRIbmzW(?`=pGEJ<7`nc4`W)7a+!<_{4w8X9tNdcXQKQ+XSP OtKp~2lX`Oj3H%=v{P(&5 diff --git a/Resources/Audio/Construction/place_glass_1.ogg b/Resources/Audio/Construction/place_glass_1.ogg deleted file mode 100644 index ad575bb318641b4ee962546e681b3c2c5cbf9725..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7212 zcmai22Ut^0vpzrwRYX9V5rfh~Q33%8iULvtCt{_dCNC_=~w1f@<0s;ym z(t8a>RBWJNL6BlW?voN;$Ig&3i~o` z3Jf9)7tRGZc?Qy^7(yTZwd5iLebC5ohPLxx4{axnlJk&k$!-7Ve?7fSJB%=ZZt3ao zarjJtJJQF~$(+s}sgG2USCE%KDvv=*;ay#Vojv{Bk=lM2JOj@8`MUZAp=ifr13%Mq zZb26v16$($Cgp;BxKg$w##Ls)k~$%KGBtmkQ!VkAqf z$vl>=eODNImZlByfgy;e|2nhJ&@omns6Z( zZcSDi`)E{AMgU;7qZSeh1!_XNNqqV>eEl_u!BMd@tFk7%N~4O}re;P2@C4ggTyUMb z5Il9^x>ZJ`P2+W|#z>p#NW0BQN5QDS+Sc`#o3ut(9mxRY9m1x)K@}VnE_jVCV2X&U zV1!&~CPA_#A4DY=>KD0rRe5GLc$7Ez_Seex*K*RA0Jp2s1OJEO}ySuB;MV_;5bF`KJP$Pujb93!!m&RBxIRwJZ^k|sVdiXmo6);F2$@cRoE zrS{oFPq44Rj+ogj?CVGb0h>saMMxzcSncv4vNXivC@4~_XiaEWocc-(;?O6 z>ZjbNIMD#bvPuBOx9b<~23BG9yeaimYZ(d=k3&&*A__Pa>5`}c7orDAR7OA_su)DY zKOMIsHoRy5=s()OXQBt;x3I;J+j1JYRPbqBlv*pjOOiOm=V;b7l=Q%ByXHF*4n2 zH@Y`?oZr<{*=}6Pb)4WjdBJt2!PVx$b*qNI0%j*{UQPx7BXVdVauA#FMlTum@5srM zN_ef3a7aH{%qm&pa+-S#sWkKMhtdM}|A-uq*y4=X;^^4L=me>lG|w1PSyO>eU)6H+ z|J(i*Il2L2pn=HI4iNiCu^@@J|OoP+KCW0X>hH;N>Rq zN|Sgwf|=TXj~GCm#2AfZfMHW1NC<)s0VhXr#|9*7`l(s6q8G%N^Re*!4#9|GZbeS) zu7g2|8j@;_$=IiyYx8)iy;_Fhx5bYpAa}JF+3LSjVFhUq2AM!mD7pvTAs8^E-;8y7G(0Dq8%05w4xzdc5d#|UvcpF-q#y{{ z#sGerQWzI)h+7hx_ZJ&Z!5Hv~8}Mom^SMs(8cn5Q1~Ez|W`urT!lW7D8NU&sLEMPf z$mp9HfmfTbmoT1YM5y;2#<nY{!;17T*}mymY-RS?0>!gXeo zV8wsKW-9X4#`RZ%G|p3#!GP*Wb#;6Y{8Gx3t0q>(N}w~yvk=8P^(JHYGupHWXo$SewN8DHVwpurbWShmzE-QQl_SNmnT`AA)`s0ktX zInnNo1<=FS;o@DJ&B$8cV~;C;_5lWCTiD@qh$gV@zTZAD*R>{d(orRW;!Xl5Evw8b zD_^ellX+UPtZ72HZkOu%@~EAafZxlb2{u!=3(A(7rTbffAoN_{jBT!Pt`XY!G-rY*}CrlY%tKU!P}>vFDkqHQZabBXt3F$7RS%Q8~b_x&914SIev*c5Zao+hvD&D)MXu|0elFX0u zlp~H=dzE%gSjX>i=2loFyA0{GQR-*}z-lp%%%zE=kogR7a^?d7$c1AXdZlC@Q~lC< zz=}fVH^8AA_-y>pR0P;T=CRR7b@7?{%5{+rbs+((UYc;ajCUDCz$!C58HcM(O~wyo zr_fl1C*br^4aqn|a4H1a-RF(DS-d>em zK)5(X&;VCc&+qMrUJ%B4R?>u*cJkXK0O6+IN<~yJ8o|a_jYLyJ9)`FU$t|C~Ztw zSI}e_fG0d z;`KvV6snVoWfiCJ8%WD_ntP*AKnpogchJKYZWPnWz`o0h4blQp+=T>r2QEYr3?C6B z^Eq=LqzD4PQ23mIZ3P3lG^K@{hcu*65ym)aR3tY}Uz`GpOm+mQ=X^$pmI!d5ojh`u z(}@!ug$y!Nklqtvh?6Y62`pL}44^>i9I*DPteaM6t&F597>ENXxK(y!Sj#}rM{uBz z^gJRCC9**3f`vdX)}7mF0Q(++0htjI!6n_59nPi6x)&S+e5(eqpySpA1W@nghl7qn z9HSBNxDQA$hoS`02t+(P1WEgYim2MeB`_>059CZn=rS#5;;=0FL>*KYl9-GK;($t} z0i3{go#r$G(fT72K*LAr0yltFm-Q)JWv8Wgl_-VkRG~BlKwQ5-^2Pyz_h1tQ%`vk; z)lB=el_dq)q%kgZB|?$FjPd9wKBrjpV)iLkRA&aLaf$?Kr3d)P(&~?RKme~@fPh^@ z(7Novgnt(%{~m$z{r@OY3hJyq=HP4HCAg1urz+Rsp}#u&{8gl9?7aS?X8(8f{@+G6 z-jx7y|Lh?3$LuW7AC`UQx+*AP4q2Lx++3j0dzt}G4BsCSg?dkp0Pe{@g~LjT1C*dp z06rk1iPpHxKs;VroRUUM9TV0#Il!AmoI=HW0V%4il)4F;sA&y76oqOXCkH|f2VR}x zm7?%qN$0dv1)4mD2k|NBTmb^e+8Z3*TMkuEb&9VC_6He)>J+C$wdR24{rsU&z3TH( zspR|Zqw{oMi-KZXlWuL=#Q+a{kw-&|s1^>OiiQ!<2;hdDxroGn&2g(P?m!CwYH?>B z(O8oXE!KQ6huRN7CPg2KgAv_Xh=B9X9FYgepqF<pjB`Dw3Z6txH0nH`a45Rn+b z?R0n#J{GH6Xk)gU3r0pDVWQEU419^9;kxlJgw0jdDM-_}ZqCw0NBf7jQUujKW|C!d^rKBjxD zCj7$dTY`4xGP@WbDLFj-N^=XVyP4}6|;cwMrsXEv(W zE_NgzYCbW?68{CV?wV8an?3C8gs=6w^iAL#XG_qXaQHbzc*3pSZP3=rhSJ$^Hk5+c z6TZcx!y(%__qU7n2U=GK>MqtN9gSz%-P&p$Rc96HJz#9jMDeXzD1`kXrZSeq?Pi|p z*{*}sl@6WeD)xm`>VGWd-g?cSsO?c6a$E=MkUa3Ekr8$$v@&PoML}8ni!--aPRNL1 z-fkE730Of;*kZRe+4s*+2WDtxTV@jK@yeqf8L%8)wqk;|2J@8|p!(%@&vMTsPE5vj z4qwp`$~%Uw!mlr?li+!u&oEcZbDfp6kDBAQ?QUQnotqeY%XXA?+6|J25WEE+^41n1 zL~ojql)xLsZmt2$_J>{xrXssPt@eeNofX!6lya@B*!>%N>o?pf>x?tI#~@4lmWQH! z$;ynEU_Gr4LTdc-r*%VlzOW%3Zv2*DZ9GsO6SCWd#jCl++Q8p!)o;&l&WbmluOHme zoNz!7mOS}Y$u{P zI~5x4hni$phDkj9YD(~TWt@j38jq_I8CkbDpp71c;>zOmuiuFFZ@HJgwxy@zZ~VMe z+i$vbbGFUNCth$eg$T(N7H4KQ+$?Joa*_E|$8I#VZ~aJ59(2Z?-i#DT@QHH#YkSxr; zAFR=rmEYxDbldLCUx0YhU=0eJtHR|*W&LaktDSaC4Uu&N2hq7V-O}cRO3>dQ)$|{) zuTuZh3`6cWX5Pi}o{cr&azA2>b1S_wvLr6t?$sW}AS>(S?->R@V%aJ)95CyNSXWu- zTQ2IUjRmE|hTrmw=7+Jr-ox5C=Wn1q#8J=j!}!?V_?sj42aRSQ z$;Rb&dOfkIW1&8XVvwpTIKWi(i(}Zl?NuaUq-oc&)05&Rs-_6Dh#Lnb4+nSKoV;Jg zzfoe4eDd-xw6ZMjrCnoz=kvqsed-K#`wbfRJn3PILow+sE-ZPbj|<)t(baDCedjl8 zJ9@j>agFPIT|X@On?vWQ9At~XsBkP#fcMJ?>f6o-oc?PDrzqL$;p+h1m*5FgyUbhVDE2m2I@1M_;Pw?O4 zN55PbqN;EiII>lRU$S&%5*BzacGs0vvsi#2_Tp+zOUFnqxJt6JxP_j8`mQmWd$7Vi z0)!yErs}7@;VT||wgDk3pFdwbdu?O3_?Bx(Kx*3alC*pE`8v5D_CykTgQX(Kd6$*d z)>fz7pB1HhEJ^!I)R-cPPX$EDUOby`e|~$z;tca=er+4y1M|1+c!>FI84&2*o|_3vbTBBIk;E#35NyTpJ{$UPu>}(0J-?pMa@qBl6Kg7 zcu~g7X68j}kgqADqVu0uQgzB#ZBlx_j<88gs&`prnem=gl{nPCps{R-)sZ<=$}D2z z7XM|{fGo@it)JK}(HqTJ-4ith*Nl0znB&qe8>I7Fia9_?s`oKM4YE1t&o+IP&*t}g zFVcCUL)D0a3`RZ97e0*$Nbt`LF?YoyX^rjtW2`52|t0g)&7tRgL})7pf&~@ z9jc41tK-SB-?433tzyp^pyD~gyhxqE&7u>7K8xO#kVw?Ps7Th)0_8#apnhkB@hczzjH6V2P=3E_%VpT8PU)_sGBuoaW$a@`*7J(Dos+N^$$Kt>Bj3*q_XyjAB3O*B)C zO#0*dHB0&LhO+NSk^&;;Rz$=qrIPhDL)^op;(cXNeoUt3?mSj*K^>0#lS}+bE(?aD zD(mKIGTeL6A`ahp-!?5=XyRpzALFtyJg%2*A$={VRMYz_d`akS0NacR=GUuZoGB`` zCXX7TrsMPSS@7DARk}k8u@DRMf`q--$mnZlPB0Q^=}L*KP0v{QhP&38(1-5KT3%WG zGm|U*zbqnp1&kgJx|ux9;;lNHuH1T}w7#_cd+ZU%^330i&q<15J{7xXW?CbIbiW9g zCMkV0!C)h24%~^WoAs)%utFp6y^}p+o<6|DL|xp+a-?PDcBW%)&OM^~uPKq=u~+}N zWlFDxbeB^SzGYr!+^r``$z1Jp!(6@9!4p`J9$&e8ifZ*%#d|(-pDugG5z*o>g@lgd zOs}M~`xeeT^U^6xFy!R;CBI%HHC9(GuIo13{l2);x zp5h6)ZGTnL`B}S@$%tu*0i4nSywSIX*-vVfQ7QRa{7X0V!Wfg%#%*1Hs@+tyecxWl zKl$U_kH=q2;H4>XABg z;~i}i=08@8OIdH-bfVgx<*1)n$itD*F+z>W+lhFxZPODM?OPY0*{3Y!L^c~gHsLgD z5paFX1%NYmXLZ_1xz5lmJcUH1ObbdgJ)3vc|)RW5zkoSZ7Z)@9#( zp-`dMR}`_1t3TH7!^Sz&e`eq{J% zwe6O%+GbMb>b(ER14Oyo9eEbd=$0(y*TaUwkIWesZC~=dh diff --git a/Resources/Audio/Construction/place_glass_2.ogg b/Resources/Audio/Construction/place_glass_2.ogg deleted file mode 100644 index 37ac6bb339c57cc686d839e38b44eaddd64621e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6812 zcmai22Ut_f@;{+>LyJM92BZZ62}OxDG=)%vKq6J8iF6H3y`oVF0wN*=gbNbkUB;#j+1?>Zi#uFis0gAnZG(ofgWgZ7IQHb zKe)LBpM4^xB%1n_wj&;kXc{IhkHPJjKX3QWqhV0~MqJhlOrhGE!f9NgaC}0g z5ah=<30g8;4U=AEQ*t<{DloV4NJV34U!87Wos3`!aJvZqG*EsZqvSu@VYe**|K0FM zx^*Btuw~aVRM#s8g zb_l{_Q60xnJ-`}7y-|wE{)n9u5%v?n6nu;P_v@?xFF+C1yu(>RR0*RrZ-H5;fGx5> z!a`<65?GK}@Dj}!Vk`{cB!F+VnlFl zWEiZK(FuiIaZdRNm{XZ$%5|!EgLQ!;4Ds>@u3)d*5M!pSSqY4i=($=A%`Pkae!-&r z0F!$c_Z;jl9*lTlL>u~QQl53Wx5cVPV; zIS>e%ctK3keNwPp%s2;g$rT6x6*6$090+JZzIalA57fStG&OrA|l)lSL^Ok%K`3qyLV=34$| z`#W;>Qq(~Mkz++s|3~E9!J;fcG}YGe zC+d-0cK-K>0n~A0`%zK(C$TQR7b}(*2gk5b&Rk3vD!$+B6*F$gOdEpGcVOT) z*EaUEg5X-vv!m*R8OF9s8n%j7gG&AriuMzk#skJCPA;TAMbfwn=@G)7)Tm*vXm9`7 zg`{XjQYMXN*^?SV2aWw7xR9P8NaKzEj}WK#XGKjJ*}H*99-u}|WW^rjg?eTGVr8!+ zV6}xb(P-inNpd3jySb3uqW#?#N&9)Rwt(tv|3H~UY9u}Q5=zR7eI7~j+VB5hk>rLr z?J+@n{x$YFlFxZ!JPJ^~dH&uvqNcP18G%8CWo(8vn_bRs3}shwJPKd43)#JO0qm;E z-n#0Fs*pKAttw;J>9X0n6?K(MY~8uWGIk56x2`6)s$#D3y>z?oT+2~*RaHgZJfGUa znd>|@*J5z01k+bi@wTPBr6p{xO!~Q<}CFB1|#2agW;%VucTd) zSI(I`kz&0v{in8ixvdVH+M4Pyaj}s7wne9}4G6+M?hHq@8lb!$Z2^S5I*xR#Z}+0) zVDO{PV@um!e2prqmXYkb1h4_)V?(hQU!b~4h-wOh#8hXMoZ&hh=twy6ExOnRE2bLZ zK z2@Mv)R!6Uc9E`yLE%ZR$AqZPB`=kz-l&qU1WC^0U6Aki?m=zghv(u zxwrthPe1N8${1uuRJ@!{Co@jYTtXQf1H7yHaiD{n0|Kb`3gSS=qL1(iM8X?1n8UCl z`2;#q3W9Wwf{Lid$uHvE<$RDcg`gAsoJqim7tr@$I??oWA`k~uDyPT*+jWrn1iJe? z8bBk&BpME2)#+|Q;B>eKSE;giK9wdD0K^S5j9>yF1P?Sr&|^_?s783L)fO$Jq>izl zKnW@um@x&LpyZQ`on=}`U^=ovjZ=c;mmc6H%dbCD00BI90s?Lp#qXFAssAcW{xt&S z`+q1=4(cpf@BtA`cPHdT5Q#b( ztSo-&7;`7+0p8*oEFLikNZBUAsvqNvnl!V6rAX#1@Yb zL3|>8D?tFc2ZN&r>tPyrJ}C{r{vbo}d@h*q+@+ysVMigVbR4oYrReX%7#sfF3%*ChuJqO=5y8b94nDLr~t)iF`x?)9?ubs0v1ss(f<^7OSr8<=27$ zqQd+vyz#YqQLkEv@$-Aajz_u)5LE_(j!g#5VR+r>4rY9oZG0L9?xQbHOvdf4^|w~( zK#tR~EG1`R@N1?|iqpP4Ujnwhl1?UQUp_ZNsceYu2Ophi3CIAhYIGJ4Q$ltFLGdCO zD8J^;5Y|&fEa3ePnwQf-km zvDE1rhSp5gQ#>t-9Mx6Ita~va)OzbyuwmgU&plrb{C2&T)S0qa098KE`Y5&c;`NR1 zt20KAwLSZ3^k=DC?8&q$<4>sjS6_21p&jmhBCFJ!%4FL;Zh2o0(yrMp{%(BnWM=M< zKkn{vaGug4Y`8|>ns>a?fpxC218t<5%AIEzK!4);c3j=Pg`I)Vc~>FKw$bioPN`oJ zc_Op!6O!(`ZU=3dTu~WX`)JqdH@o&1-zEv4>bl5^5q46QHg;V#6+ z3eAC!%{LM_c;K@C09xklkJrCNIfAf{%Su{OJ5 zcT%?-f|{N3?d8w&<U8^!rFZP|!9Z$5I7@Bl&SdEju1JQmDEaB} zK=<|0GlPD_CWC=Ul|xIPo)>v|ie?Y0F0p0ivC!D7VYsP-GIeTq@Ak~*Kjxti6Es-_ zwEjG5#|~y4WAu_vPH9DCE@?oiJ%63b&cn3OB`3rHtfi&QmjUvJhCQ{b^==3g*?`GTRW;- zBth8C3c~+b-sB?*H5o}P^lrW#Sqr>H{bQjr+2Ed9c!x;J4FdRy^zGoz)2QvMbGGxQ z$oF(=<|3dv@~W>{3QN0;y~IY&4da(;HBb@aZM4VecMm+3+4U#zDOTh3Q?k2cp{1Ei z!UzN5mN+5k9>Yqu20F5xEaUjYUGr1z2ke_|9^0LxFP^~{h;LYzD#|%RJ89SqP48&- zT*x=R^doOST$W+Y{CHzvX7c(2@{XHth`~ed!c;_?-IkVcIQ;qhB*zq$9=P{8=Tnrb+8%LT=gwg7EfEV zg{qNq*|?dDvof?&eEOF5`|Cbq(c+XHt^=(tHa@N44b!b--w;}wc-_F34YMVpN-vu? zxgacBZ%E00T2%2T)2<~-Cg)MOm~T=}2R96$E_jMA{2`66yJnFALppqHd%7#;t*m-Q zBlDay!Q}RL9jcwkAp^oy9+w-H3LOuD`+oN*TqE_gyT0QJ0;z1HVkBmA_Jp_*>nXW$ zvUSgi^sj3}4>nhLX;W%79gHDFg2_3er zZL4Myg(lzs_z<6$Q$Z`u<}DvLiST#)lo+6C@Ch^Tk%8F0PYo}v8dX=vC6bKUKQ20! zZR~l2SpC+UthRge)Qn9b_-%B@NG0Gws_MmEn9P1gZ_7KQVXq?5BA;>XGs@51hrWdT z=JqAVZQZGNhqcnwdp^my)YrcAeO3`YZZu!MeAM;4K~l&ja%9yhNzD1UCws$9#oF*Z z`O(3zD*D4J8?KSMUO)&Xy}m7N{()qBBmL9SRQa@s5l&L_W!bF4)~q*8)*VG(*pHKW2V6dsKO4orny^R&!hYn9<_L{VI@s z&1~N>;eE`l&J_hI6FbR5Yi#`;Yxc83F+_3ZX=clQ0 z>6>t?W{bx?n%@<&u%Qa?t+u);#VsDB#=TLIS(ETmZXpFXouN4v&--|z)O)COXspH= zGI)Tm6RN);G?W+rdA}X?Rn$+n_PfU$%OAf#wP1R>(!(aF6Yzr8-| zmjc(4f)2QBZ*7c?RzQIl_TmB0d>t3^Ty;(Kx7(F>?pp-2qfRCz-VMssXN6v-Rm-{L zH!O~3R)Rm#jP=K(4}Gtb)6DN_r~foxI560pvKoRu+*ByO{Xy?$ERHM-IY!@$Qmk78 z)oqw+80^ceRD-Nkr$)scbupOoK1!{`sG3WR&_+|aCfND}dc@S-4?T#WRELcAPEBjH z@aqLft13@Lw_0dRf0uFK!{w#-hS<Llt%&e%+KbGw)HnpF&>n` zoi7#d{5nfMo$(}V?iRPvQ>wirb+L@IaimZGV3u%T#{#8zP~z?eotDv4Y9>Xm4;=k{ zTfbX(YR~Aqb5=#yVx&*Dsd*nMzHsJ(MeiS{M%|-POzEf%`fGU1(+!mqDQXf>yN_HV zGtuaa8Wi^62(!EE=_!0*+l^Cg7*8zk5_w9S?=yuL z7f7p~SXXJHHes(Hg-2)Ja&@@wgI->E{ARIhi+%d(yBj9$x!lHZPlJaqKlrudHNKCC z{!D%-?YRuEpemkrfT3x-?;gG|CN=#7F&-pLpVnU&bDpjwnWMS70=u`?^S}qe$QZI(l&6g}c&(3{RdFX4Y@wD!01_q5(e*E0W{D{u? z<5!7X0;Ohb$9>1)w&t=w77s=!MEIJv(f({od3-m{Y8K6rUBx?or@oWogh&=@I%<|> zY4`NZ2X}XepQo~0zfYUkdf|?btv>qY^2yQ?qKpKy0}M|(}~z;asBltUF)hah~}ist*^YZ8RixrKEFFo zPP=yY(}+SC^4!&QNq3G=8lxvpZng4bXoadPbcphBV9m0 z>>J{<wj!yq^y;Vd!j)V_2Q1R){ls1jBz^O!l7 zK`T&;&ZZsUj@q@8vuVlgXpajx_TL>w*HaRL_#mp9P+HNXxnD2d8?Bl~$;bO1+);`V zOtBfm3$-q)cm$Q)Eb$NO#VW%^9r+<(I->*f2`D1Bb5D{_M1$^}9Hm3PG>;;zUY37W zSf>LMXQ}hPIP;*v`?8`mgBi7(eI_DWH~R^exIuf5s=ETtr^0&iQ+a=NLaTaUz*$TL zq&<-)a4!2KY)Li+uv$|K15tsR(Edv(^IBAQt=!|MN{7B^+DPa<-DYNMXGH=}gtJ4W z*HC1{P-Ki_c7ju5jALVh)AI!9r35#0;$Lk!W^{?$R#nHqpnOGq);P9ML8kC6zK}OQ zv62V!{+B$2|>{?@KTFKkb-fme>E^ zjC?xOAtPYRN1<|$LY2&jN{=X-f~ywpfPhbph??yb-Th&@kHU6=wm;molV8Y&>3r^Xz^S@R(U^|lb*^GV@tb%b-w*{!SWY}!CuEc`ea!X3XGCzxvKR|c5D3p zfXIC}HKu|n#6~%vdt59A;adAe9dY9Ub9-VGYZdcjX zYcN~WhTMz50TgTM0Tid!PhJbF!XNNw)N{xh3>uMuWvoRMa4N<#-B>_+HAoV(DP7o7 z5EcJ)+`Q70^&6l5qdoa7XCtl*+EX1Z+iive%_|=%CxnICN%8NT_BDCh zwX&6TekvI;AmwGd-FZOIYk=f680qz*!OQ7ZjAO%J0kal1qeBt@h#YQ+DB#n^4`lHD zJ96^X(%$Y!Q#8*|a?DVP&hk#Cm*-r2UtTEuACcpeQktDonv^n?l%|%P<(o`rHWdbR zRn0d4zwKX2KQz+>sL57FnxJf1c0=z)MLv(y8 zavK6Kst}%TtZLYpfp0@Bj1ko&O)cY6mG#pwqOB!I%qMohLE7VkY#@k=>%cukQ+mxi z^G$nkLRV=WcvVJbzd2Sb3%w1iTq5o$aw-dRjTTclhq7WYVIflZJg_=yzsrAxw$ zP!QyfAPQp>XvALZWIC}6Hz7wP;7jvtd-3p%@m)B9t8qvyL(aAr`$#Un$9N(yuFqHv zf-o&G@H0`<^)!Q!s?b=7(vwVG3zV{jgxM36*N}wO&}H4nx_UNtq;3h)pdD#M%8JyW zY$ai3_0^6fVMdZ94P;r7>I0wXdcCkCy^62$cG6ITo=rH(hUDdFM{-gq>WZp>SwO8SW7cUhnVJ=Kl|Px9vkhg;W>!~SO>R}iY{Ms!HqF`Q5N1_X zMcoH3wV5@`4xMe*K2?J4E~%JlE^lrQnr#m4X$X`nV$R%C?{2N>s{1tCy!B>;ybUSh z70r3v0q7Cv8gNh@6UMy~FUS1Da zF^Z)u2)G86QxJ|L2X+*TJDFqIDBD0SHeHd80jxT?!dGQXWYYkvoVW}Efps~9*prvZ zWfhl3Fvm7z5G=u|2!z@MA~^uZ$s-2nfl~oi8H4~WHrdItJ_1P=Sv?i2-rnDj#RkHa z8E6YaZM~F#5N=Y2;LG9)FK?G}N&~`e{q;&Xeq4f6pdp7IMqqKC5mN!dBk=AZ{p6>= zHFx*ZVsqSCT;b}qmotFy$zk#ZJgwgyu*x7_06Uxlno6?#0D(?CUq3k<7NGa-8M%@x z!vcIE!Y(!~+Jme^<%Nu>LSFgY6v7Q#<0N9Qxi6B^gI5A|a(Q!GueSW=HMT)Dm% zkHxlg@Ni{@l!dxhyS+aa3$)Mzb;oMh3Roq#!-Pd0g&g(ez39991fJIpm01Axu9^tN}qEz=1xj<`HEm zT@W%t7Xi6=Z=`z#uQeMj3ty|s_ld8*dIbDcq-U?a{-b99clG|?Mo#`L0J(p5 zkkNf%L1;x#)_(sEtc-{zS4X56DD>L0!HESn#wTK@i{pWN3icB4YRUj5SS)}Kh-ey_ zkP}8Esw*?HxT)hAnVL_Z+K0M5Aij4SH7@c}G@Lq4wsLXH4l-7n}R62X%8 z=kArb;(j8CPqarR2q3aQIJ&8v)4FR!7QUB(zq*t%5OL9F%f2zg;T*4|;S4TqfTyw21 zmS5Y;tpx!@dAV6waayUUOCdn_O)IapPX_^_A|NRAx!)|7(}8Kvi_fx%Pp2T=x2z|o z;P=;h9guEE57KZ9lr7PJI?w%r&7rFv1YBDs&7Pok>1;oxvOcm0TskpuNE<1??Tir& zh3)`?;`y*peoads?g$^>J8>Ohgz%&Iuzp`&2pQjjxRi7lAuho@Q|N909X@ijLy(F{ zO}%+uWLl?%-}z+(CLY5lpVSURrBmZ1f{woxJ=FL>$iR#twt7b%gP=_ilp%^yP@v<} z#4fH&M_yW=A)YBg1Mr2Q8W?pQL{;KXN=iDGR@64mt7PgKU;OYLpYkf1+ri;$R~5e1 z@#-C#Z{CPYfgtW3nkz=jONFAeO?%sGRaF%gEN<(zNmUhPRc-yPI6a*Y&s*Dj+nQ@` zG#2^5G!?qHL}E46-F@yGF>T`Kd>OMWHy8ZHO8b@YyQ6jERuUnm{ z{BZ`-w6B(iVJz5A=O4E!P25@bxw2F__igi+d6}M&gSW0$_;*Ek^xcuuz9=CXxEb>j zLb!AX^d+8Ke#=&2?oWspJ76BSYoHA+(|B=i*+!Q<6mb+~JuR{16q0;L={1n)T!lQ`?KHfYa5?u zVOlc=r@sXBR{Oa4jD}@q?h;v4(wZCCef*+v0b=7x2i+6>{q)a@rNOr3Zr0(CUY=$@ z19H8TKjYr%ng|`QR8in5{QN8G)wPZ7!wq>xFzLZX!MNnjEg!DW?a91!r2cjm??%h> z8spAaO@3dbi#{>v8bk0G#)PZ?(cI_wF-jdKh@*63^^s`y6BVQI(~|-gwpN6t4Z;Ef z)v;Q0E<)O{CY~|vST$e}lWN3XiMo3#O6HZx?fc?MF7OWBitk@M>7f42BEnZ=!~1thrtiuTWwj=0>3oSH?6AE^1Vy?r}nF-9*L1YYrUNNeY^+pCe;?9jNLY3q14?u zxggX&$Wv+TDxEyRES4_KYrZHeEf6>I05NLiH8iUz_v~IczI>6UdSWrSsJQJ94#jfb zK=plwuhwgTB}?C^&^Tl15}SIWaZZs^)Q~>gdu!}Vfk<`m)u+c1V$X);(|>OxF9~?! zVxLcB)M#uN@LK6S8zj#D_y_;_{nuyh)2CO&JLI`PoM5d?9b8PP1?r3ZY@V1-xe0` zKS@|=auUd5#6HDDO}*bP%e*sba_o`Y9oJ5X*IYipcMsOtY&~oOvGbx+C40Ow{wV~V zEQC$McQ)b)$nMb^zOq(m50mNM_US<8?rtczsFg`xy7729ISPS71q62}n7ybB(udEv z@W@6t)`^DdP|uoKv(FrT$Mc=U3ms8*wSuLH>kn8CB8&<{zK(DI86Di65UZ1GpDb&e zbzbp7>oC<`#8N)iQy5dQxyKuk#AodC$u^dU^T>`NoDAoatmUK#=KMkvOVOsvE7z_; zzmB4-m8u?IaHxJ!Nl)rFpOJS~sof~asfTE0jsvh=%C51;6Sb!=>Mjb!!S}3;d>t&W~gOV7Bk6r#Dss^eAjqe%~tAmZ9U%g^9Me3-zsfLPF*-Z*FEb|h|(`z zmRMPeX%B!uk28R^Ob$2SHi$v&B6llZ3(=y9D{R)YPMldOLTmND8F@5aHeY-8#4dr| zQr~MYZM}Y}wZdfA(>s}0Jqf>Q`-8(LJJ#R4NHkHt?__UzVC3*dh3EP)ziwLY+32!C z&$YZ~;P8V%)Qc&pZ%3dHHq}>*Ju=Qiey{2`A>-2D&hXw?;z%e)U7Om&P)%(r67#1$ z-Y;0I;4|HM>g2RTR13}(lC!UNyOz;{#OeHC&22SOczp6xt&(BR_udJbPiCjEhu-j4 zcCE~(>z`*XwP(!odj>)>lP`Oub6^j7{GzLSHnjCFSr!^&!i?n_f|_A5wi}I2s!w?R{uc&(UQ=RrS>`xa3LJ7HHz>_!;H z+fsmCEER-if1om@Tc)?JtATuMb4lWm`3@JoKONpT%xCsSU-^URJ%8Hm^o+xZYV?rY z0^`Kx^;ZH1lP=k2xest|Rs>{zF{7$jeY?0{4d(N>;7!y;RhVuaq4{gdOIQm{U+B7` z?-XB)b@ln#L%O%luE=2TV@^rKMeMCd5HNmM81xO@wDO}OyC*{MgXzn%Kf9rba{}q8 zT^s3NJ-*r6^OkH{Z$goSrsvHrCO`irrA(db ztg;H?`I8{`0F9ZF2E8=nWn>OG44t@0A=#m`c zYPFUS70%g}t<;o;D*C4>cHWD)uTZ ztCoe$m3Eo_);*mMgu^XRWyN{bc{MFP{-YWc?B|gcdPYa=o>vOF>vmPeR)1?9?swuL z71asx@96eFeqliKzGTReiTBJpYmNQGUK8@(89T?c9jk8D=^|2!8LB85p}E49YfP5C zb@7*m>f88w%R_Qn;wh)76r=^oDk67Qi%xwJWKbf!_vu8{Hyqkl^&DO@~&*6U(Py_wvG;p=ChwF>2 zf_iclA&q%42vgpFjZ>Vz9J(`1_592G;Vr3K2R1z+Z`w3|{lGWPvDZPb zdCU4wd%^Ob+*z&LSE(QZ5!Wt z1*3PPcbpd&+zvwrKlMdS}rb-RG_}xh}med&k%LmA(#NUn4Tp#o;YRra2!Sigq9G z`^0uySvNHt>2eFUDN)lyuIvn-u4C0vibvyRLsqI+$?^G7k?(D+SCpSgITk19&FqdW zpCDJFq?}J`rP1exgS#dO0tZaQHC?0a<|`sTYrk^n7rae2qRvZ^Z|iG_w+Nw^kK{a! z6TPp)(?xAFMo|tVH}W&9(ehivU zEWc8ze3vYX;X_JlyOstisH-aYc<+>&ZOMUd^z9J781!a~2fyd8W_s|w{UT%U-5xF< zKX-j=C{Lf`w#V8yBi=vj*2y%eTQ$80O^!Xgw%_x*blrYH;?EkI%u20L{wlYR7;3Gu`?y-qmgta1H|TkWt) zQ)Hu3U%h0X8zVj+dh5u%v-^{QZOr`r5r^3Dd_=+FXu&=9&Ibw9dJ27DVjxk=EXGxk zqF$YuWIPgkUjhpc@IJ|BySsMxoO1Cst(~(nAAYpv*eVtCEZ->}*>(TNyF&Q$47aQA zH!O8Cc+K;5qdJykuz48E6B-+Md9&4hb4PN%gxYJk+7)Uq7fgQpqbpcfU}AV#*5Gx* z%TpuA%Qwy^(hIB9FXn*%NR*8~r));@NF3j)=j4C8ucj>TRKqPDeXr60zD<=zD{mD} z7+4+sqO$nhZbZi^zHsnu#_!qI)CqCBGyFR}u<}QseNwT`2T99~XWqd3YR0N%w<{{G G6Z;>+(iV;Y diff --git a/Resources/Audio/Construction/place_metal_1.ogg b/Resources/Audio/Construction/place_metal_1.ogg deleted file mode 100644 index 80c0e29c64a36c800beda23f33a7736e3cc8f048..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9814 zcmaiY2Ut_h^7je7cQGJp=!7OEAOS%@X#oU6lOR$f9i@qd5~K(Sh!Bz9Bs2+4ihu|R zq4$ocbdcg}qbY*l3B32-_q*Ts{Qu|K?6YTQcV=hiH*;oVvjeaTZ0T;tzM0w70&R}dre&VN7Ton%U4s1=&+@}K|f>83npgaGMRU2nNa z8~HfHJX{?tj@ZNWU~)2YGBW375HK+`*2&+|)yo;C<#pTD=cbn@*2@o076PF@<^k8d zWB~!_z!_Ns7zsC&U=9Fm0AMEsXGyxD2Pfcj#qOryb;%==Omqr9ngn%>mF@Uf2SYfW z001fgCq^Itd_~V~0O<@BjrYkxx?WK#gwe*B%pvLDZi_g26;v0vdkw&a>6opk0nk9| zy8IDbXmaNe#UBX;yN7%}UHpX^J`CbTIS&}*x?o`ja%=fXSCrR^p2sV%i&YP4GD=mC zpbTWkEgZ|5Xlw#~2au~7e|PjpdceT5XwvXFv1!tg*+;<(QhY#G$7;a<9H=Is^Mp&U zlB>6puYXv`=)0r|r^2wjmZ_PcIr#Y7Sl-4?-u9oo9b}afVf`w|>Q#jGRD{iLggrF! z@3t2-yGw3Is>2{ajvz955uPW&o40_>qYRHMr2w4BCV|l>3cwSe>lNH^D|1b+b$LQ2?$RX=sDrlb^ycgI7Scisb^1us9$B~x z0DY>CmL&NgbbJw=z8Aoz<9E3mZ_vMG!1^yIklhXd>au(!Z@zBO8fd9e9|cQa)k$B& zNzfEzi~P?|=n-B(MffvsB)j40x)y;k38rxz_SSY65f+a%1Iqc^BvG*N+TSP?sBBl5{pN`IiA%FmJS|! zaGmQ&8g23PRdBD>P})jSJr_8N#;1$c)SDgi`x_R;*E0rMk@Mh==y&Pv_4GF2=%-W0 zU;Xstx&MZbI_Nk1DQHLL16WWzjRO~d0e{jNzsD>|IkH{w{4;U!+Nk0%V>FK_!SBJ5 z<}d&VXFEdizq%tRAEP)wF-E*c>}8)^uOzuEZ5vSDsAyxm#3T!%SW*E*aa_$xmTwtS z*PT!^fsr8K(I`0KIHEwO!kiK`Xn2l-Br?UP2VMw9#XlYQRcMg?^zc90;5R-K4q>nj z%SoBatD2jcTi*7xdgeb<7hyByKRX#TI~iwtGV;HH_3y|5z@P~~ib=dftZZjS*cDCs zV+a2$a=f`ZpYU}*5z?;`G8~cY|Bf*Fff(l0GC>%cp0F7{;XlfaHC413Rlts#W5;h} zr)#m+bwO6Oe+SHQ*vwA)|08n9AtHc`U(`*c`cLHKh{Z1`#S7{s3RxwJ+)Z|lPAg8$ zS}V?D_^-%ui78BpDU6C)jfxkGPIiq>E2+=(=qcN1_+Q(yEBYJSDWT-q` zxPZfPG2{7&UUxnosvnb?&*2zN1UCV+;EyqPDB%P|oeKaQn9vOH2t0ZKzLJ3MkzM9P zqmYFerUOX2)8Rd`G?`&+Z~~v{0KAhgyia2}BWy@R3;_01SXa&AbfK>m<4Q{L!|4;|=C$V2+n(mhLGym*HkR1wU2`k$VC%_<`JJG7D4Fx* zxIaj>pTOGJ`Ok{Ern$Q16_uokm6Q~h)Owbb5v}t+mE@K5R5_QFmG)GXzbNzA0I6j~ zB~_9oC6X_yO7}}7H)@MY8i+kr73pO!Hfp~xwn=U@+$t$6dr`GXrZx~aI=nX;WC9D| zy#+7U8;TnmyfzxV`)WP;o|mk@5$}Cl(Npzhqv2e&Kfj5&{|CIyq9v$@r)@x%^=?F! zr%E$%zXxP6vWFbJ$yX03DAT}UmY;g9d=kiNX;FKT$4gV^aDVsP6=EsI!hvl2e((wCUL6P|I#wa&_ z{FrzL%q(87Dmlmbjx@mz7|5!dEc{5uata<~l^T|aLJ^-PqWdzE$gINRQF`#&M3ez| zDio?R0*&#Ioyb6YD1fH|StX)8q&hIx1~vX{7{;Sh5o;{m-H08aaA5*eA5~ey?d~PJ z!i#bxl7$zOxUJ(s;im2i1ru&$g0-jWM4B&(I5CEf0|}0vP2*|zzx+#c2REsX2?rus zxOnB$L{Rw3J4`GRKjHwgN<_zkJFGqG3zFSHLK^x}&B{Ap4~3mEOetB0KKO<3eO$k7 z0cIT>C7_O@$L5ez2svyuqR<0+u53PiNO5}2KBQ=|kAWr}Zr-OsCtNdtgu_V_NIGEx zx4yU($-*5D2eps_>yD$ar7?^qK^T~==z+^%6nDVDyhFo7fQAi0^SK<^1PD;jF9a?} z(6&%t7EN&;#{ms7c(^f293H`j(i0|tl`aDxSkHM3;ji+62RhCpc1#XTvXL-9GdXeg za08TRaVTg}qCW@)0;vzd@z) zT%-pdUGI|6=$OhBX7VBj2_ z;72Cl(F_0}ehaLKDomVwA3Vtcb0!6Fmz*SpnGyJp^#$2AWGnH5I$f;<1wgI zUo=`=n2=0P9b*`j6v&%am@t8M1Ena_5vs??qNX%-;e-jyBPlTCP~fXWtU@FjTtb?1 zD3#40L4)xLbu0w~2;&YO-CYV^GvN?h1KJ<=f%8 zBVY4_#kS^=waFI)H0X;QGFtdAqd-)VF~T1Xy5V>(JmKGSY|5+0&;kLqdb|#Ata$`2 zx?FG$ei{Us*wIKB9MK;aa7SPa=KxDNJjnTY4$lF~I4bY(Xfh%}(~t>AP(2#a^OMbW zw3z>RFS!;3AxcTk!h)ZKp7#iNAm-mv8oP9%02~tlcu%=)z$dz3q>S)n{qO`IHV0{T zbPQ6b606HYf{x>530$UV_fHuPu_i{Djwso-QoIF9?8$=>pVFG!ec;s+MhD2S@ymy* zL%5(_prCLnIFM7(G9-JAifV~Nj)94xGu(H?l@eeJ?_zoqb(M*Ovm`XnK^eGu&8~|U z#}pS={fP0CTnn|$dw*CsjEX;s1mQ}+g>ib_SztDL)k?3dMPNC)3C{t*8So~{3=0=sOcwJ=Mnx7T+Wn@Zxpx?WSbp8R{CVYrgoL=bm^fTPaijU19OB&s z75tGXqB!j@Y}|?`g*Ns1``(IPTIC$W#zbTB=*9~(WpmhoSuyH{2t?J*7GP-a*L1-3 z6;(gy0C`uae(!+R$v7ad`oS}=-ws#S`$!j&E*sw(s+Wb&+ooq^?p_L`JWyPa&v%LQ z`&Pz%!FTZ@>XSH&t{0UY)ir6_y2`>!JDN8Z@~tkV3vLW*5ATEzeed{H7Vo_9zMerQ zwD{YOW8KibtNoRae!Y0Ly&5)gCTIXX{Ubs|tf<2g7h`BKBJo>ILIm9ilNTM4Y~^|p zl9`=fMu~fTvqJECN+C z)b@%qmtBN%zF6m5JMckj7uw}!zoo6vsCL+jitD{|ipe<5Yh&D;Z&{#ebU@Q0FL3b- zBmKN*exu9+tm^!j?7qs~6jN(-ETOkVZA4Se!4I}S+g$=(j^|s8?XrGhb}oJBJ@;j$ zsc7z?N<{PF3MG&gx!FJi1$YNzNkWj{+R4juK6xj!4k}N3xclC@rF|VOwTmuj?(Z({ zL9Cu9jTdcS-!VFX_un9$=&kc`Jh&ZcHS_pZs0ylaT-8eOvAYegm=6b9QuD0xmG64; zG*UHF-N^c+vzxLnF>A`tEN+Rmnz9tu(15s8O)3-X+h~qOgOf4@l#aVb_cDLMrU+ya`;M7|8iXESUU3}J?pfw@k?pF4~CUWGbyJ;-_p8o zmsKEtE@;hd1iuwjVh-!-St#k=k|KRG7a%^E$_eSZ)wiy8y)AXscKC)JQ$M%!0JU82 zjneFDE`6$K5#9FavKyC1y}I7z(y~*rND006;jS_MVo@nFGSUqUa7h3Y5r{IHOF1tj zGiC$Tnm3IvSVS7)WVatcqO`l>3PX7g@7{LjX!OntlImL8URru-eKYNiuidMW1OKRp z#HHXB{pupekJ`Fv-G?wG1llyr4BEP=TKFZVyN_ga>*B@2pgYe(?}ePew#Iq9@X<;| z^Fcl{v{_PA^s|1va`CW^G@qHH&udfA)*1fs&ro@OFn5Yb4UyJDzX}q+*A?B8pE%7N zvA$@{5n5TF_paGSUe&8~@{#VdSGok1*&mm9)-+829GY}z2#4#qHr+mO0VtTbNkyAy ztNg@(l(_(kBALBc-A-}_jy{DGqYk+zL$kO84#qT$SSg79p^_2hfBtl_033W6Ml8>i zXm)wrt3Q+2HNcoNXE*KBLAZrQw#OiYPnUAFk;b&``KTmgwMWhlP*PyrezS5)yES`6 z$!n^e40~C`#egp#n^c@OF0@OxAoeH|sD_eKAPG*`9CeeF)vBL5BBY;&%W$N1z1c^y!)N)S)fClz_f|} zQOjs|9D6tU_=LW*d;o2g+ex5rb@||2^F73GpK*w~{jOj-@T(ExvTOO^+_ORd6Y52( z($6}(XsRX{fU%j2rIOF)eWqi8mQYHLy{pu>AkX{1K-9D9!-9Saap}hh*VyA~qwKyL zKhMv1azov2Mo<+Ky3ce{9Cr9!*AXhF34QfF-_fewDGhSZ_#F1!k8 z5i8A1kw7=4^hif7MTt{yYO*dwv`651uoxCX8UDWC{2fmqzv0J?*LJDfIIWfZ^S7Qf z%L};P)R)7aNeN`C{`qMldAF#_jCjUEtLo#EmWtPz{X;%dOV1DcBcwdR3t4W)2g2q+=+sZ8n_>7r>>eIsG9eMC+2M7#q@Kil~pad%K8gXN9X+* zp}b#}CfCi*F0aU8eHki=&!vp%+H^{HuE8b2BD~? ze03zo^<2}+=dn1LF=B$F+hD=w+LNwkM*z23@MS64_RXs+E(^6B@;MJe$D0W{FYPVI zAjV%8BDuEh_a_A*QD@J7t!`Xn84#q{pl+S{Dld{6-ma8wN_m$FN1OJ1gyK0zi*iGX z^Yw@a)W1*W&ajrbG)(AS=ys|S0MC{o|RwBgI z{Wp~xj7{qE{gd>RY-NtC<*bK+xsfh7*`@ufK7vX9uMlnQVw~6NcBdu1A1ABW@uvbf zKO5VV-X_Wq9^KrLb_cqNFHYd0gPtDEIA(Dk0aV}Lg+YHc0L`G@7cs_FB(_iPLiMb40gpL}se2S_>bmnpEv9|qnkQnrMK z{;66dQoae4i?xT%o_Sd%D{|pfK8k7c%7G6sF+p*o?!jQa_@8@E?`NlTVB4Cen)f~v z2n{L15{oK=s+9Sb)_sSutM_`6v9|T`SpA2$a$_C(ay!i;G!IWuYi{hTx!tw2zZ1(v zg#ohS?`Uc31z9kmOVU4dR%fe4`{QKq)JDEcWi$rKKr2w+LO%*EET7A{6*=wlfSa z`7zRC7)t!o@lRsSs?yv^c*2h#o^;NptKOg%GTt&R3f^t zBKb?7yU;FSswfS<=zJ+CkQ(=OoUP#OJaff;qh-H!dM>CNpZZ6-*F5E6E%&6LpI%$u z2iTcMzp%co8yS)IZ40<3Y^#X+pb?SGOP8wckj)2K(g-N7vL7L`fBN{l9cbcsJSaLk z&0!W@PVaFrwft#|ao(&wWQV06_Yv6C2pQ_~=8!){m;LyvjQI84ekn>nis~fwGbIr& z!jwzMz30?&6g9~fz?ezMkiJR9UrToGtbiG+6u4)dx^R&6uJx5p?P+>Vw8azZ%ACm0 z1%?0>+IIBQ%RYvOT?b9Te4*2 zUxl1xQTv_$bW~{3L8!`JrOy-U;fnrQAgl#YB0bkrZ7CW|F#n8~! z+any3Sf9%=Zx{WCl_tdo2hUC)wEqHrn*{K#m@wb#e9ea86onLBf$+pF>U6&JOME$~ zSj@!SHTbkxbg}o#6g%;=w6#I?yH|V_Y_CCcp<12AY+4cr%c3EV*IOL?KBrtN$T(E0 zerQx+GWjL??s}Hf%p+%#q)k1eek;;z7SEhk(3f4w7pCvKtJlmns9XAc_wbc3w8tJ> zkOFD+1C(+?^?#+g5z=WB((IYIrr!)+(a^|>^F??Xj{in9{oI_sIC#Cj3cfM^jyhxq zQ%esBIZCU{7SrjDxz%~_j-VJavRV6u9JfS>O(AzgG}CV~-<d{LT%c7o((3vB@IpGRiHeYX%e_?GE!YwXXTFI;N%1ligqO`7N|!8iIffNe z);41I8!THpEj{wqDPZ^PQ&=w3i#deE^-Ee4B|qK1Tk^OFUQ)LhU;Lm4;QpM} z-=bu60Pq_|ilstgyUykk5?&%3PCq$o{oIr)n(ciNh=)hRVxPFSl}yiw`Npn%*Xi?n{rG zc?E{=PvK+6yKTdKt)pdKG>E&PuJER3va2a*EuoN3ALbtQSiVz>0IUdHi6?;eJ?8?Q=5 zBPg~;{HS3PPlWFP71ad{wGo6js(Y8@hlj1l(>=X+lSMJZ^Ns#hJY6Q#r+@>mHK&I+;Hzf zV0nf`sT8f)Ty^l?4DI`@3>YnGp#if>V*rSmkviF$mFaQRcuw%L)o1W5MP^0+9$Vqe zhrL4}Jc3H5(SX(iAT%(kKX!WTfV`#96SHbLxUJg!N;bOxx4lHF&RFbI5*Q@9U*}GU7_wdq}}-K^43yxiW@^#FK>{~1EO8%!h9yyw-%!- zc6aM>YZ9Hh--ckoY?^!!4URv0Tv4VzqB;Lh<`}-tQICbvN7cn{^-x7o2A8hoSJBW) zw|AbXV|OulKAEZvGs>YfVU~OCbYI`$MAgeHjZ-%k??dA1+h*sp=7jl%m4TywJg8Wm z|MQOrB{=M4YAd2^ZX&fbH8zwSMlN+)^B8{q+A3I5(BU-A=VYv`r@CsDs2byLncQ1< zz1i=M>Bn48?sO1>GuFk2pnj7BfBhXHuhg^;cet0XdnkWkRCj;p(W1^7Q&XBqRpFg+ zS0C}LH_}*VjoiI-r*MxtJq}EaxMzBi&Pqn?_!Eae(UeUb>iq*!RO$)khnz#4k4uYnp7D9D4d5iuCfkUEs)m*)!6H^O@K!)HN9eiJPKyLV{`TkhJVSB!tST z;K>&wF);t+Jh=z+Wm>1XV%*%b9Zd?AmJr-1r$<)W;s=|aSo+{dC-3yNzCA;m;!Tmd z9jqWTtf=IvgqxNeY1#er&XRlmt)GvI=eKX~ZmtFkIPPhtE)f?ZvfiJ2$9wmWP*io( z$NoUw(zwr>k(KwCb_BAOE+=pH^7vh}82U>KSyIK<6HMP!WU*kN+m>0#4=6&P)V7Rh^0*FQA0D}#vOz4 z+Js+x8^w90OcPMLd!I7ey)socE_OwDk*+=iBL{KV#Uv7#ppoQ`K;YJYcbr=+byQ!y zpm!xW_|@xo$|3uo8eMy}?l!}}XrhynWlMj2w-Sp?9-@(CRj3=+*~*~at#;w$V5{6` zj1H075s~5*d?{!4)pK=si@ja=l8@Np;~{1_72N%{(NgDM9k4ZqX4@*#*6aI8U4GG# zCEjA5+yaZF&4)Z1rn(7Xjc4=zx&i)KIq`y!vOe zKUFnpqxJTQMe3VAfa<-4rX<70xA$|ZSUtFj*HZ`F*5rR~M07gwOg27FtJdO8I<@xO z%9*xWAPK*j#Pq!D_VdtD1%AYK_P1gZ%@*~l)?2!sf(7aIB_x-EIAa^_#iFSm)cx|j zYUuMnoKyUPUaMCXHE(G>EhGNGV-Ebk$M>5=j0;4&=SILRiDD00RQ@74bw>PP4vsW% zWr&01bjx8QCoPoVt2$C#2_Jm?s-&(dudexI-3{R}-O1ITsT$L>$y=y$CX8?gPcUSb zhhwAzZzdNN+y8j*U|NpTSACy$$K*B9D(GeDNdu)*U(8RA6e%Z&)%S>xTh0|eGVq)goVaYeRTB8H&bkggYLx#TwQ%O zlbf8(R|B@Q{p2Y+9CYezdGKcl9(Yv-bC^pa6xhbgjMYiXleVi1Mkk1 z`ixrDJ9F{nG&UZV9@dHPO`n=IF%LCyap`0W2jgZ2XJQ4Lsj7{f8eEn?NiRQ}H7IbR zGoPZO_V~f5yfZo1{;EzK_+kzg+qx z%=h;~3F#K6@z&1m6<6z^;g~l*+2W6xIu^Gc&GpZ;zwT3J+$0Fd^F?`au1sTM?#x^X zndhtOYUBB)cA9tZ*c50j z)*yINx;(uTKfVC6-Y0Fx!hb4oG1jF}2&Y^NHr$x5kj;h1EKL2_aBw|5iK7>}BV}lC cmC}pZwDG>cIcBI6>(}Nv?eT$TFCpOn0FQ}rx&QzG diff --git a/Resources/Audio/Construction/place_metal_2.ogg b/Resources/Audio/Construction/place_metal_2.ogg deleted file mode 100644 index 47a0b27a035192513675da2f5f00516ad69e62e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12743 zcmaia2UHYKv+pc9XAlr@LDG_B36dm(z>;$oC1)fff}kK-B;m)m8PYnwmMQZeybjpaK6}C)$4poY*s65C({si<`Nf z`}Gtgu;rg6-jJI?BSigr=YL(-JFh9Zl6CYXa##P?)sOy{kpM_HuzPCDqwZz{b+j|r zyI~Jig7We5@$w4s3P9PltSmh(?3`_&^3Gm%ZZ6JFR?Z%egz#=^izs-{zdERZB_#l00D=@c8+J2*G?c*;L~~* z6|GpNe(ob8TN(d!xHo!0!L!I<(O8nm;9Rp0gP~H~KvsX%f&zh{nt(zqh0;5U!FP1S zFy*yzqrYL}YvZ}srpK?JP>1}}PW)Go zuiK64PzaE7S0rg2md8Y!_gN$lJvgKc4Y0g62^2Su2^N>HgtE4;uuHGEEvqi1C4*yY6&;2h0X22l^q6L6i~ zL>hMSyaBk^a4c=JsEGm`g(sx5)ivq-<@XOPiXUZ+bc%cecZ4sbJ2c^%f}>N*jPJv^ z*K_|JK2o6Hp3G7AWWIv>M`M{&Frpaa89d$+#pl5LU06<3*sU;2H0zc_y)PIyRxnk(cP*p5?KN`h+-~55XEomHnZF-L=+v6 zbu&hs$OJ6}4EZ;rK&L`2W2CWYZh|Bv#ccpq2u8(!I_?MaC@KB;f3(q`bed!=U>oP- z*5()2)zQ`WaxzTzTx@u4I_J4M>%Tht#_U$ee+SloMGgQ4P4G=jCYVRTdozO6WN`mF z_+OFZO3@oj*B{HQT+OUH!8QC#K>a{qoLpX0KvkR4bez(2lFCZ^zUic()ugV~w3pR< zy_Io;zhV790rNL(R%bo`BXX`ogh?cNT`>;h-;tBU9{pK3`mRzOvtb95kqh{H_0V004Bv5Gdc|5lt=bX)VENEpA;M@&7quKZAZ@ z*hB!J0f4)plY>bj++t*$#SL)ao6MNGB3QW}se=ni_z6S^nLJ{o*~A;;M7jtL*0k6u zd#C&Gq|pHPBvCsFgm zSWsjZ>lyhIO8o^1)XEW=1!NZC<=`d&8~owtj>S+yq$mKuoInc?_Bugp1hyHYH2~kB z(?W<8W@wLy;LryTz_BueNMJ}h?GacnUGR|fMn=$>G&=x5J0RdshF!o?9w1=@)}Att z#tSG@uqczuk5X98lB>=p3JePfYU=0?lIu?E=q^&J>ejQUlB=p7>gbZo>r(1YCaLPy zIgJWf&FkncQ|V6ETP;$(&`4G*;@WL~T2fI_TD^BoZ7$#Kaoug^ z^+Ul1QKdW0#m&vmyUngc^-gs8B|B{#gCD8}s`q!B@6~!TYU+9}Cz!75gL*ibd1o0P zzpi!?YcD?^02xf2h>W_>HG$h|oNt43JqMhUPlTh9Hfi8VOUlzrN_VTBIlIbsWi)mD zO%ttFg-i`^Ij;&u8_&MUE7@u07;FOt!Iyem=vsK`Oc(Eigv{!4e1D6+W86`P#U9sl z(e)$G{7M4c-nSq&AlKL+ACSsr8v09kG26cEWEkOdUV2yVS05Xkux(u&0eWZFu_bs#Hb0hKZWUQc1{ z44QiI|Ui1NfZt)YzgYgR$g2qjp3 z96|*=6$0_@wU&`1d?rK7Q4l;8$SMxu$lYUPtWxJmVuXKls`5HL2mA6KP&f;cS{d=K zj>^FqzDbL)E58M-M z-7{leel48iU1A(4d~?AlN+e;z9Ap)z6$S1vc5Ff=*@J{Mt;o8~1$RfmqbZ}ZYZ=Pm z6Tja_$Qh~TuIoB!VI&7uGv__QdNZf`*IB;c#MA(YmRAgW<-63flmbwuU z7_56n1cwDlrOd(It>*xPfm(2bb;nKEVyT9AL+}USf0xUCK}0e*l;APIXVs7h*pbM91hC%A4FWr4 z!o)Q}3-J{S&cTo#*MtNuJOJQ$3RXl_nwIXbVspTpi3U8o&Y1`i?A(NhupVeaoE9h! zRH@jF0JL4V-Zde?Xb%cP!%@(S1cX(Oku0LT+rXiM5jkUCCO8X%xNbAe0Ra*mhMNFj z2@@NrLccA4pN$%qL%{Mzi9jf5#wd6Qg?R*gD?=6s)|~>@I4J7t(gS?RUe_N{AOXDX z0SO{obk|*md-T5xlYftJ|369;gLM|E9{9BGp}vjtw<>=~c5`dt_)n3Z^7r;XYW9Cu z@Bh=t*r6PR+<$g}R68CvaD{zaPeB+)i_dkfBMA{$=yj!lC&r==4uNeK1cUC$l|_iK zvw$dp!9e(c5uIR!NOjlJ;$T50U8jyIBLp|d8=D0=qh$|D5ye5)PF;(dlU9TwXN)4b z!H`3Mx8_lTAzI*)?m6=^c)^4g7@yP@WncgqIejCrKsj1fMt z=KK^0RIG9hNi3-OFur!l1R;ukorUjiGv^O5ISPFGfUaTNhX4Wz0Kj$5 zeit^=2kp)XPErnzaU(J3A=QcyQFv#iNYhO{od8EtXlpraXP8H6s%Kgt;9X@2dI1^^5I5Jw1QVoDQ0Kyjlsvv>HKp-<_SXh{Kbbi-5 zIkbF!@2d*N&G_$|vXt^)^7WhYwHW**QWkoa51oCp3nP7lFb)_y zCyZ494xgK!T%224-CF!2$MSNLH_zKPVv{P6^r`e8!;hI?NKL(xV+m|rQoT$!d#$FY zA!mtEC~qi){nLf{i|;R{eEDUzF`^bysPiZFAT`Mi{N<{H@~!(-igV>>qn*chPDBrXL!-<- z)u_Bj@W6SSpe3BjobK%zzx>-~45cKfrL$3S3w}WfUHq%YTXie8w{55DME47XfXraMp7WrAtwdek8=7c=XVE;$mqr%fJ03s^zP7X=p^DPK;Z-Gv#b%Yh_>ePV=YZ z=nC&bqRNG;r)f}%HK*;=4NRpT_(ZAPeVb)R*zXnh2jl8zg$BHww2B{b2QQb&U?PLW zbI-U5HN(X9)cog1Hh#vT#%)_&#Y#w*zj}E6;Ww{knpGMTytlGHd^#0sQqD^U#;o8}gwm*_*9VBsIh zDc;6ouZlmbr|nzff2JDZ#)n{6e`%MF z0!SMVF!L3S?H?8EXJagO0r?_k~OF*ObwOAw=zsGJ#?4tNwbd((a#-{O=J3n-;3-3<}04g2Jm_$ktiR6#sAy5*yxyK9f2SYxwt~5@T>~Ptlj2i;Hf<9vHW6V2!eRcB~ZD~ z{8DH9*4I9SSEhMvTOtYeFyAc*3{jAG<+>B?XAzd|DV}9Y8DIbhaxRgYagc{Wiwulk zvY2rje>_|1+KFncjlH+#5uiUei(nS%-8KZGRUQBqXbqO=Kvq)i8>Qe^5`2n_+XM;$ zxq;k3Jf_AWvduG%TmC!ZtkuN&Vryb)DaupGDtVNc-ZTf)_!3jX@~4DE;@24D1Epuw2atGj1FGjIt37o-xV@~PqqL@V< zgcTpBjCY(hmrlu7<%#<)oBm?%(SAn%;fBdhKz7-pcG>MGu|6U=6!2*z%dbC#3lD2x zsd*%6@LuaOiumqEb^Zc(sr#S+Cb*am!eFTpB;xy8B9z1@@z1 zvT_D~L}N{vkE1AkaTf4r+WCuXRDIHyFVnt){=R(d)`hHHIgKyR+zu{<0%XEhf`V>Q z*q*-+|C%>QHZu`wtXC1%=71g>yOpUm4otH>zbk{w`bpELRpdV6pu<*hW&#=R$ zl4f)rN4=O$48Us{<7{r9fr&mC>FWtp)eE9JIvp=L7UVERoAqGsdPMN!tl9T@$)xyt z=M&kAv?)C74DEN7G(S9+-$|_Y%L80R*m5+3w~a)RAz3oeeZv{Ouc?x*Yc*Z&RbJR>p()7*i&jdcg)b=GhWX07M-8P=ss%#AiM@#wm zqrouJJ%i?Q9-c_@^02Av!U6E@EOP?=Z{Roq~=+3y;Ww_5I4eZ-7CfM!XmoF^!H zx8UT{a3+R{g*J(jY~h@X&oe}WmT=gT|J2vC_P4y8@`N6gk!0%0o0RgR@{TKzZS;4i z&gveq5yxQyJHmH}gP$b8aLB1=*_=>!iRoy(t#dlwA=~MpOa_J>udxT0Q5-n>4?Y!| z+P@!1EFQv#<#)6t5u%Qi_;+16lt}ajn~05MoWwH?+uP$)V}jM4qZLvbF9AC7}pVYd`3?{XOpk zvpNnYHBz?hbtb>=dr4o2v+&o>bL)ZtjTO`CKFM_XKZ|5lrANKvq|IXJz~gG_qi47= zj+cWR989t`I2xEtxbJra7N6oI6y0K58%%?D*>;lU*ONsV*4(GNN=O9W-7!jA8CXnx zrp8w>=MdDPBl!x;ke(U4b<_h@n zl)|$`Vy>J+l4pHX!WTWH9uPzIa1(I{oQVNX4a= z?_m(*k4qOVQQmn8+dIM(L$&+ZkCK*rsv(y#FCf3XTTs0Zlhhw$X~aM43XFIUyiGPh zxwl_@9xUbFFZp)b#hk@`XXT2IPoQVcBcRT9`1#vfJ|nAd)Q42$Ayud6#y(6zb+{=s!>xxy$R8yW6rg`$zRZ)iJNXVH@Ckf^ zc2VYEy$`FbEAUuf+Ffk;e(B9Q9NOPoYZf5x;PU%%-qHfAHa4026Lv2PE?zpj^c)+x zukm(5<@Di;R;eb=?yoa z#I|W0(-Qx}SLn}0yf##x%RD`cK^8~Puq0p!7kZ^i|J0t1jVynBxQ@CS=NU8Jti032 z*{14Z(DX`nt<_sz!mbSJ7sqq-_0N&8_w&_Hyl4=16E$o49t9xez@CsHnE(UJ?$+1j zGFs|0=XBHKWgJvG>NH`F!#JEQSn}kD$+;YAWQCtWSb)EE?M5CGY96OQXE>}6Ydh4t?b%m__fs->_V42+>{>$GJbqy{KO10ZBWxa!9bDoEV&6Sc7AU5(#n&HgF&ZLCT0V6mr;#&|XJyr$Q08(PP<8BINJ zRPE5EjN39_Lcef;_`_hqw2Be9#VAzoV6=Igl#t^7VK4Ukk71+K=+olZ?-E~*ZJrkS z{%+Q6=4i(*I0-1-C)=$&ob7+WJ5sH=F0e?jkqg69BPL70aa|Rm$$RwZ?&{3) z@e`R7g$GAjqs>0-0Y_b&b^bF)*!yiP3BQETePvSYOFL;NdhR_EGKKU#D@*KRMhyj| z@|hY}z}hHj=Uq$awa5L&04^0*$w+$)%s>uwKzBHz?kG$83s;wg5}W|&GtMK8dG&Ur zmPL z-NisryOz(JDJ&OIVaW3spP7r&sS2H+x83l%=yt_#v8Ek6Lsw+}($sh~-iP-{Xt_~< zRQ5S%x=>YC8CX^}3uk6Ot#yK~`b2!aHCSi3?<_7h)%f(s_ws=CPJH8g3tHVn9(oZ6 z=(8weaq&=ViBY$S1CKfreRf50&O+bRM#pw`k6)5Rv{K3ky2@k_t9kiKS;CGXPYkRM zU~+j}AM1_8{posLE#-6%D*b6fV1U(=z9;YA?cJ9cB+nDiJs*ejsH7N7xsCA`T}@X$ zsO_mnJweBrAE3Z3kx^6*7rq}AbxWjUYVvW7?~Xx*CN587GPg@_2jSJ}D*q}K#sh+Z z$NK`g6oD8F$4e z{Ngk_JL+u_@K>(;pbN_KKM3_ z6UNEO3BSj`Ju%qP+|toh*U{72_5MSa_t0$&J@%j8=rtbMc(1yFdWA$9G{Zz(DfLZ+Ya8Oq}&E#EW>#x_=v}exBvV z&=FlAe_S3mnlJyHTh`Y<>yIeb5F{tL_ULVK$eQ|oe6@0_r&&#!w3Fb*>6=}pmd&_5 zf4U))VUl{*r7F#;@t;pT=rr+qcX7o+jUBx5?`W+10D!W6j*gTJ(=bAo`xGa8wU9^B zMiNi8aewnx(tI(Ks>M!??Fj`7p}N+$50bMVbM;;UV~;Kxlyd&~-KWb*>$r34N}@cD zr`hI>iL=7&YYfYA?)Ty*&HMmo6_$xC`9*afO>h}syJTrxTx8JDPeoFD`XES-d0H~@ zmdRdK8xO^j`&~FSfD-ZI!KOp&wLDI{MCqUCw-b?o_4~o80>r?k(;1~b-IUts?}dZH zy?ndX=$0}js{f-f9basDl_ArI1lS`Tylp+io2b21$p-kbs6PDVBc~#`^<*zU^}T9w zpb5%sdE}%YB>Vfml15nr>0F7{?^_az?1uf$c5>fo*2l1bqyBF_ zGk++p9k}~0-$*|ur>JElNuKD*=t_hLWMlrW8H;>$XWVsLfNC|N^+FSq+yk@nDT#nc zu+>U%2=4<$?RX*D1_;~cM<)i(_dVUeK3F1~XcW!cIPD$~nmN3D9y$c8xE<&wm_v|r zwv$4#Re147U}-j6MMZ$BnVx=i1U+{j8!&;GxfCP~hnnY0ecK`wW(vO3O1H(rYAf(7 zo3L_YekZL9L+ufzBqe$Vq*C2HV+TcgCw%c|CnCdGj#*?O;xN>%X1Au`wHRfHNxKE_A*HgI%Qk7_<@RdNyY zX5H&6hT*lK?4&3W-lM=fd zMPpCaMSqKLL#GXYe;Hvc+OQ&{17{PXh9pQ(|n<+n5XHH-QO<#p4o9VsYiQeScJ88H38sy0xBVdALIqwfqyoH+-Iklw9k;^oer5C{xYHK$?XF>I zXi1|OAdx)8L)j=v_Jl?6q(Yw91qVynfk~_caxvPum190jG(OHge)axb+|j^U z1rm`wDv5rO{y|qL?o#*LhZpfvh@=NWg`0Il?I}`Wf%quK!L+KobrOpAJex%KT}3RE z0qM=-rT}4ux_}AJ`Oz1(kC+2}tus1(IeSn6^s0mR$Wxr)hJehO*vPL6E~pgRSX_}? zrZ-Fcw_6wj%#xXq>>yR@Z#*TOYDiLcOv6$#v;cZPZ=o2KjvtkpzwDzXIVfV3+Kp;d z0xIeQ{qC8CRyp?{)0t)Zrhp91?{JMhCNBL*j&Z7*OA*0KdIz5pgJiP6_dLt5 zPrI8BWjl6i(-P7uj8G?D=;W{3i^9s@7$FP`RPlpo)%&GB+*&A~;$<-tw}@DlesDW( zRwk+ra4HGmlTR#uN3iyy$z4^hx6B6Tfdj+IXT$ubyCaqReV714sAFBIId5Rd?m49F zKA@|aIIYA)(QQ_4ag@H{mZrK`-D-SfU5b?oipsF0otFY-Zi-uY7woDd;1I)Cc)5>F*I6t(pJx9UiPjM1id9Pmi~@{4AS{w&=i6Dl!0}? zh4;4=xSzmRIXKPiM6iw&@F+CHfp`QMYkVLVw#UJJKF*JT3}$o%wUf_#Cp$bpJ21Yg zU)iD1{6xn^P2t!!QIu`*D2=p5$)R0f{MS8$Acrp9t+a!jUIFEg%aNwdkEhD-dkwIm z`(Av_`>A7BQT4N-PAau_V9&3*sHl`tTEC8jI1fuwp`g1i}=MdVJWoMpimf+;ZF10HzX+i%Ywop{l_?7TAHeOx*zxf7%=$I&V~Y{HP- zw6c6JcCFPPhe$f>y;pB)L0kcNENgFlN0yAshw#8%h1Tx@pV| zqeD@M1a0DF!Zimg5^q-L)z+mfllxzN_o!7Ctq-5*(x@Pb#>cH_(*E!v8k8$-d!oHC zyZl|X6Mn3zf&$>2CVw#y)*Qe(DA?RhTaz9SlyjTO_B5I>?w;3q^Mxv zS=Lhq?b@lAcZG_tGW^AV+nfL18ycO+${dh1p0O(9mi>8m-K;iJLk6X^V2M++!zl53 zX`n%ttX4Cvaw=t3rXUTxdZDLQJcHu0^WcyvZR^DEZnz55bphtma7{&MKI8KFjM%nxx7 zxVL>rSk!byCjqB4@Fyh06c+~&;8CCdffw6TB);`PoxfXjQ~dJz!CLE8c9gar!v%BF zmV0KA!sOI8;aJMLk6q-+a+&LyK4p4Tsn&!mwTNfc!n@+p1oxwsJ-x1AvI7sr2Tq@g zG0gTd8&_W{BuLRvBEA=HH>4~@r!Cczb!1*Ty*D8sD&C;BHETPrj411{oMp>2z>4MK zA4$>CQDgC}s$)aGqg8N|A7DZhc2*oT!7Ldf5+hLZjr0^PW57yChF|0d5a?Wtr8MHI zGH!9g`I*R*k@J`^_p4{#R^m_3B;_Y6uDq{&T79!C6a3)V2fn(qSDVYOrV-Bqhr zXmGvx$&4o2oR>=B$Y0pd|OQ_Z4olJtPsHIrZ?9`N9^=M^=J8EC-UVp*;RQTtS9Jy=WzyzN5gH=Y4 ztQJcrQXlm}Z($BcK{%WWwodN>@5~1pU12f2Qi`bx>i*8i?e%1I%dKxQQGaFu}Z#W0%D^4|Qa; z=LvU-q#}Qo9I}vMIf0npt44OI0B^kIU6jxdPs59U^~cmv{QlMd^h9tz{j11s!`)fy zR`-K%);)c-s9;Wqc$+jybbBeJVAFhV#9rQxKfYn_El!hcP>~(-?N{* zy9j^mwjk;(O&~>!A?KAnk$Jnp15S6G-d^sAWZsuXfTJ&e$4N773?VtqQ1>9Z(VIJsWQK-xIaHAN0&G# z*5X#m(e<^F{ZIGHx5egThfLmFnoIs{v+WKCg#EfH-$*r{27gI=yNjn%Px}0$1$Dbb z?H(-xHTaN@;#6l)(^$;7=2g!(QL1t^>h~zAt#j8e6~}=@m0f05Q_@OpdMB*&^#jzw zm0D9SLRLos$pjLI=a#+r3Z+@4 z=q#~17S{$XjudY4G4=SKeO{6I+YdQhY#qe<>c}#^L=XaMeo@W`0$X`F4znLoLUSf* z86mwIR?ftG)?)?XLfS>Q_Qc$YwuksGi#Om*;&)8H54&p(m3(@_`x3G5noG%YrpEDw$E9IA`mwkXECHvxmyc8Wnr7ZL!8a3Y zd1b`uC0i*RnH=xfn8A}uwl_+9C9U(u{QYg?@rk#|MkJ}q@@&h2Uf4}5 zmnJA62qLIh0I|T`f$yC2-E;5r|NB{4&)RF&nprdR&g|Jcmt9;;01Dvm%h>98(8+Ki z0>TFgyy0u_>PMb};GX=w%yg_q@|=3q-5b@7$?U72Ujl__$9AESKk|6o=#r=2(l0e^)U~G zx`r79paW-+`tTmySOOLRSODOf5P~_`SrOU08WfPu5eA)Z3N{46OHrDL%A9%mcVJFjh9gL&v!%|yowu&-MvN-!gNd))BtE8 zRUQ5ab_}_*f5;yR1G@*jzJ2^9*}e?orFr)mr2F7u`qCRk$%aZBrG;@yAH*8Q)EOlk zCeZrGDKm$vb{gwozY)}W_TL@-ksfgHEb25|jx6eQWcCjc#p%8vt7Em`01i|W&`xC6 ztz{pqDCWTa{~8)Afob z&%rv0!8+*C641F+h(TxKozuQuMcmpkI*HIP_M59?U9B1 z0MMtZ7>OQVS#3YrUcU=q)ArZw$LkM&*FW(uCy?C^0IEpd9v|L*&>9%YNnbg0Kjj%e zgBj2iWQ+XI*S#aWfQs>g3ttm$UafFeN@OUQvJj%{4a^{YbZ zxDy(uEzc707&L-#98sWC;f@JvG+akP5}EEhfG7c@;-8M&78*Tydi)=4^b4;st1#Hc zr6o;dl(D8*^FU9Fw1D~M2>e@6}g22J=;OycchkiFSqhU)ak z4*pl<_^|gT^7bbR>D37tOh^oWmA(8;cAV{!v8;g!hxIr|z$B-WiM;isoYN%MX)4fZ zuF1)&ImDvr?|?ZDo5h)ce?$&BL_M3|B0MDvADO2ae}%@LKaCPw^LoBGRrb@ zH_8ea{ws2>N0+2WmpqJKe;6kgmFgOmS>9UUF;KPH_P@4&M~=3y5ZJ)Tx#TPKkI3ml z@@jz5R3~BZ?N~?UanPXtmrniD0RYgI0M$FnBgPoXDU93{MiOhP{69wwNS%^3n3M$# zn*sn_03ZlDIh-ZhH$mM?`3fC!O^7-lMU(#m7GA<414S_j_$R1|Dz_w|x}o2eFk&2< z`eCuc3UP3z=fzib-zn08X^#pp1^^tg5BUP-JEGg4r#XV8&%yVhL5-jj4$N0K5wV{?x@}9WMbaqQH{3&}g!( z9=os}+oe%>wL<$`m`#X@G4KHefR__-=}2yM*PyPNo`Q8$Cy5 zo#srjuQ{<(O-}Qiq2{Rpi!ufl;O#U>4VXy{v7Pp`PXC*g0s9dvdF)J+oUuRF80%zV zinR!Ive?6#PlxD%R1)%r(>1t)R3#Q>?tath~vyyozX5@V>mDe4x&yysC1buDYViV-uuSm6q2@ zl$T3X)K&f}m)LA7EpHIp2;euy2E4{wub6{+c-r2~wc3lQ^Zcum z_-g=UF!2L5dV{wW+*a?!1J04YoxNzM7)Nl)1W#H{%qp+gtn)hCUAd`lj193)aavTc zwm9Xrs1Rp06I)RJp-p_S0~CZ@Al=}7BE@SxFAoxO>WGXX4t;y{qwe!0pI=HVy8(sO zQ2O3@5E~FOHrNJK^ZCzG;1nSM4gWg335$3S+@A&W0bXQ^q~Z57MECIGjnHoV_?O}& zxM`ejUv@Gp`Z@wXfuYSO7@^(s@zWUh+Txe?AK^uuXje)6gr!><>7`}NNe33`^&-a+ zU3x+TnEEc{5uyL3FrDkCfjjV7ifVTQ7k$*jWS(7K4GB(y$wDm1z_ z0%PfcoX*C0$bqKF$MG<3_s@ z$->KeIIZG9;U?~K#nWzNf|aN8bfzDgIQ zN^=Cdx#m)b!G7#LW$F>51~ZMeD&242<(s=op9p_3W4aEM$riqIQ7IO zd(7Ms2v7@2ubbWB0zwFej%_sfVPGC zF{_JnIgF@@A;OK&;)nQ0z zVn2j>&npXNM&58{aZ+{|vpO9Icnt7aHG~2?7IlyS)_eJ3U`N1DkO>&{1{|D25d6sm zJca=P#J$0asK(gQ?|xz)m@_GW+vJ>yM$zWuwGbpYJ_!Sg163;Xg@U&0F(VW3mRoQT z8Xj_iEFi2%mKtbc&lUG7e!{eUrQ8e%;>NX1cQi$Xbz^63{#zS{pm20sc-8y*uU8JWU-~OX!|4;S)KaH&1i6G?u*#WAZ479)@ zEsvSDB7&Pyf~+G8Gg#<#r-LV^IUOE}cwZC_x+h-)jS>?EQG!5#@Bt$lZ;8(E!(haP z3901N@zN443G${DCQM`8Kq*Regoc-7QL}0~2*R}GBS|pi(BQ3oj9erJT+%aZUx_T5 zz<}`ybEpIZ$kH7=y1OKzaoRqn5wt&;A*Ssg$xT}_0!v=r08XdICo-j|{`vUQk+1o| zVq5*l+T<4l4CsqIGFtdG(IBeG7~u~G-Ece?p78HE7NzxLXn}xQKVFA7Qa^$gT|PL6 zI1PeK>}Vtmj_8jIxFaxzvx21@9^`yHhi3(49F=!?3>lH2X~={ls2+{z`N`%wTFigE zms|^i5Tzt%VZrx8g#!W}vdhmYjjs2h0UQ(nd}iG?5z~F}p6u{cz3>EI7W;E2G0`aP zS|=T@9@rEfNnkg@xWCV~k1@WSMJR(`L*UJ1Bz^;#b-4jLQV z@QCrfbQiVtLI6A*PR0MQ2g06!3uE)T^_J;!%QJeVO9bYlH{m4!-~)gpCb)n=CMu3O z{zL*x;>je|WHvkqUjV3q;7$NIA?k+@A3DbscCSzhX*z}%y;!9ZJ|dGlI=bUm6{@50 z@td-$?lGDCrc4&oly>?wT=+?wh_H~Lkg%kb%zE#Oq1nDRAz^VD)YjbEyPnqP9T(&x zG8PP~6eNm&LSXcdP_D?aoVL&i{fNYe0b1t?5X-C%LkM@|)qz`(40yO!Y~MGBa}&nA zc7GKzUbD}Z(F&B7NhnF*`1Q`^n_uNJf39L{H3S2l`pgQ(ElD&lT&6K+~M=9FrwI02o8@oD4=f| z_z-ukVf3@V-%{f`V-o;yMrQx~J}Z#$!bsFjH8;0e+P3glgEy|oGELJVgG=YmTwS%= zUx!VLmIgQGy@Hjlk5O+X*|JXQ`RDj3nvATTd3j3R$0X~{xRB>U&VeXw%|nM}>&E28 z^$tHJ;tu=)IyHal>LYFAvnFrm_m~HieLqimxY=t-5LV693C8V{nS1`EROtNjQ{7@# z8KFmLOhuT^*1%nMil}nn%HE%q4=J_t8PB6FdoX`pe7TVFe6d~OY*wGMC_@$%JF*8W zpPUvalU>g}hERLC(J-Q8d;lGBRWr3v+KFc+wo;F)uzi;(b8hI7=KAy7p0caZh*6P6 zIKYRFZMJ)VH{S56Oynmm+qV!QWFmuf8lxfC4G0X9rg9?Fb4>I-&&(4#&3i8{sk8=M zcdms9N!n4S*cp?YufrfWMis1eSaq%5=LDVeHIKQ2AcRt^p=l)$x-<-&&!1+9EQtln zYVrteilO#ef2Q3z4UZ&_^;p|o8j^uZmZ>qP2nilUS0~|4)+CG2@UWy8FjW*?J;~9x zYGx;@HM~RN$W=|_KuPEA;tzN&|Cmc~=vG{D#(sM9dpYu#1V{DzHkr~M4hur^-b|Dn z!YhEaD=$5oY02ilJbJI)6o4quJMAel`= z#N3w3&ikl)jIHccw?Z!~Ls1R)nCuI~tk`PosQkKS8T46OYpfu?kZ5{A^E0Hgw_|R# zEL^sJmvdh~33hgE@tE_yVDMXNwk~HdS>iVLp3MyW@<$A3ViGWnpN5o}T!_E+@L?%? z;_h~XgIRoxh@~|vx3}!4@1I!n-tMIB$v=hO+|2%=Q!}&_4?J&VeKKbyOQByj-YLDQ zDZ~F~zKxAY<5b^`hy+YbL~2dm>8#mCUu&3)qLv+1OumO5aG5&rXa;8AZBYtzsWggj zII6xGtl=(^G1?0g267{KzuqA^<3|*H7V?8abKbMo@Qzgh1}EFE0ZHjDaF&Lw4DpMd zsJ?T%nj1PPI}s12f3ccXczAqKK_6x)*ji3lmennFqZ}CDu(P~or4ux`i-y1cDVCbG zz(M(9yVGAinPKIJzN*#w`x3|w%j*lFZc9(CsUA(qN9)5Kk*KPzrIda38}f}O_REov zK8U|tqT#<#CR5*ygLC9O=;M546LHTPl0QD8kkT!CE%YxY09Y&fl0whfNcX~pc*vr= zs6-!1TDbPQ-Wqbi;Me7o6*AMUkjL{!zK@ZHMbrJ>Bys!O*6zZuNm|i;moxR&#TSFy zRK6LVeJlOi!Gtui`DBerYCGt;W%lM7rpT0%1L9*rZ9y7U_eTc?7oIu_;-XwVMzb0n zKc4RUk<~&ubV@o@LZ^w^AKrWlvN{vkDwfA_WKvoM1xPN!Y{& z1V^TPhA;bTh^8{9{}io@e}Yx)Tg{Mff+boPQjS~e6>KkSC^KBA33aBNSnF9^{xUui zsG{bu|I->3!9)sL9);2UA)IjXPPu2pm4Ao0=^4H7%zAv2?XH8^pTTv_G?KiO)60cH zTIabE`3K^wpC~~e)$Ckt&^no*5jJeyO)*bpq&#;*Ozp}*roDLZ!TDhqhlA(KGjYK_ ziiyzuh|PTY5lOX~10fp1Bg$HC-*Hg#PhZX#;OYTjPGenI#;=_4|T96p5B-zzn@) zOgISyMl@_n`a|j;83}$>k%#u~x_(oH@{Q5lmP979MsmI9$c;8$ZN9ys^^|{K&0}$r zuik<9AoZk0dlRXF@y7=rkFf#+8f&FIjqKlTLtdA*;-!DoUc2_-fl+bjt*Apt`^QhqOvawKVpWj$GVRXxe2;pf| z>a6Ma3l;5Ndg})%k#AS8Kh^i3`q$$oNNbzFK$|l$50XV|D%q3V1hnhVdTY_c*mFMx z>8+v#xSG?m+9(u1DII7jL;ZnODLs)6Ylc%23V>i9RBA@ikAZnmysUY08)Bo-3rU() z%Ethvs14e_YtI`GnBl^68EU#g(usz961g(ip<9v&=CWrW=l9EVj*$kCI(y1K)6TUWm&U0#Pz=LK|ab$M@=BP(|O4|v=MMJj8Hllio>x_m8TZfx$I+8-97fZVRAr-Ue_ zE?j?kpP}gD`;^5yq79+vM{cZq@xFNh7AY%q&D5cV?yN2l>&R{9|K%^98QI`~P==CQ zw@=(1J#j|m_tJRS0~c-LwAtfa>5&)x{$HOxIFp^*ktMHXnK0x07CPy6_f+?nu?KmE zilh5&Wie$*Zo_pZvD*~VRv4aYn^Ks>_FP&neU^DSuyFRa7GgilnybSSmIB*O+x!Xu z>E>omEl-|2NW*VA7Pv7NKU+~-c@(Wm>E;A9`?*tJJDKyE-CM&>nz{>$-L$Q^Vh3!` z5aj^eW z1w#26UEUhFYFXjCZ~wgcTz6=fl_oyU^&1W5tM@FL>=j;s)X!BN4lC(Jbw-vYU+`Jjr*F8>LRxunp7nYemC|Yu*kzXf` zz4Y*dDiWHxqI}`U#UIA``WtUP8u9YcCoy#CG@MWI_(+h^wBm$P0eoo-R5H_p)X!|5 z1)U9uC8qYPUacPX&J&)$mlF0;0i*w5zH=a*r{h*LZ*aEK?z_+Hep_`bK{cDp&@-NAC|QT) zW3lq0j#j&GqqM_O$nW)uOS$KLn0|B!RytQykt)spEc~LZt|~-(-orM3Lyle7&J=i6 zagK=!2PA$r>EtF-@X-p~|GZ)*PS^X;(6!I*JmEFBP}XZKS07jUBl|*|M>x4?Vk+k^ zbxWp$SmDDQ8X+cm801YVZ-03MnFqJ$hU$lwC>5u9mF09E zI*b@*DZD8UUOD(ZiukoY>Dm+tT>Vk+Nk!)r868D!$F*ba_0pv!S&b+e8EKsJ(PT1IuZT`uA zVX28q!UFhS&hf14N}Pq!mCz!swZq4A{!8yx+_v_{8==wc`bMp=^qa>83`6XR|lXatEJu=c1&nxosbsce(BBlZ0AHlgKyEOXCo;7tUgE)&z85flJty1?a@u-d zf*$5TfX#LUn60(v9xN}vz*yyWoW3>n=6yzq!y<{HwBGeTiBDGL3A0|571i%R=4;Y2 z+P4{37>wXfQ^q(ow+a?0~k{C~yWlR0A=q~ZAMoPMAj{Kc) z_tOndduQ_u-j&VwMkEc(EN*Ety3{5&+s+x5Zk5*NdA@dz7~ehB+~BosJ$&vq=kR?$ zZWi$1MIX8EBPv8H#EFPj%-eCuE9X}yu~J4gSZHwP!Og=(^YcSNbzh|K21UAt_)MN`kcX*I0x(k7brtGM%8GUytd z_@?=7z1IdOSNp+=+QY-l2jShOenrON@r5=CV^Y0HN8kLx?c9hwJ>{|4zIL~PtOtjx z@^|Fk3eXk)iTxZhony#dw)jTA^qHl(ee9GewXEOn^+7h+&Ko9%W-dS_veL;w+`j59 zx1&edNtAGTgmzf@h)joHBG;_dpS}5@n;D%!+q+#}NjEOmB2{iV?I+A}FDaZTrsqkp z`0j9bwmfJiEjny;%8Sv3;j~kqLXXK!#Hz1t`(*B6Y>r(Fn{BPuo!;?`jdSb|(McHJ z2|_#NNTyJ&Sb~ekqKCozDy=lW)@GzeOaET%m(sr4a^tm$nPT>uPln3~ol1-XGrFluKWxa)XOjq$}-Umv5EL<1RQ-tpz^u=pN|NX;P5948;s&<^+ANb&k4i4 zdzON}7qd87$0i2={Ee6|?39x?N1LA}zueE-mFB&~nsWFOZ_XOIT6xRsiFsjs@`|{K zlG(XWgEYG1e$yqcvOlm5oDzR95d`L)S;69@mWIDv;fx_Rr1&USk%4T+f#<9my87a3 zb6=Vw0}CXtjwUFYPu+?6PSj43!eRR!SKj1F$=tAQuGziSe_V(6;HnU$VhamxGEq~l1?y2wZRYERh&!E^J6Gv)O9e~-H&7Gef z)>L`=2DP>Z29TOx9JJ*se7!*3hZTu)6u5o6_j=bXHSgwQ3r1I>ayo3PXX0lzTXqAm zkhQyf125TE9&ks$BGMQJKVfR%5fMWmpHUKcMUlK6kzF!gdrN1^ZQGFl10({) AD*ylh diff --git a/Resources/Audio/Construction/place_metal_4.ogg b/Resources/Audio/Construction/place_metal_4.ogg deleted file mode 100644 index cd09e321c962621401c75c1d74ff6fd291375650..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9552 zcmaiZ2|SeF_y05YWyo5T7_yBhqd_BOi7+U}P9pohQ?fKMgzP4JLW3-0r_f>@LiR00 zWy_XqNs9k7d_Ldr=l}ivUf5p4Gor#-ZA z2LSq15hLE_g;euKwtLHiP0dH;9bW7Gme#Sqoj`Uw04O4O+B|vQf!4rC40=f$d0!s& z)*b~-LAJ<$zaAXo1yqFpiCwZ2mhM9Q?L)I*LAG2ubXTEAlE4Qda%N%aed(L;QOxOc z*@YY#gH4h886tIssTqeJbm`%q0euPYOl!+d>r40U(SWAs9gY0iGH8i~1K=F@LMAhb z`!@KT<3KuX;Rj=Itw~?{{PQ{va1@Ep5UHutKjQZnEDCRB_B5eBgDWD(Go0(_&B4*G zP3E`v^yIn!gpVTVx7%Y}q$eS;pja9!4*q=pBwn95=A>*y2b{ng6MGF^7^;Ke7RmDo zIn*2m063OI6#v~FLiq^Agv2PZPSL7vsV;GHSJKiWw_M)BautdIQ7kSEqBy2zKFhll zrS6qxG)y=&}ic ztzSw)@4{sReFGyuSCbUqi5Fq!W4_a)LDQo#7AM006IlO>8~_X&++j@Ot)da_nW5K} z>5m-zcjS0-v?uVqOAyqo6x1FNf4_mev5D+wSJg#o>v5X*bNUV*x7Cv|AC$HoG_W1^ zv;9zOYxW|@r1r0XISQNUQQv<=4mm^wP_Z-WiB$iNoNUq9FBfCaXe0`nBntZ{+efAs zre!S_<}&<8BrU^G>VYi}Ouc)1@msE_K2e>wmF8snjwhj~O7BQcDT9>z!*=wJTt5d%_(k=lbu z(6EmIfExhLfKJA-M0v$4yInS>L(B_O=b&hETDfoqEEk|CCIO##C6UW76HzVD%}*Fn zP8F@t7$MnM7*lipO^vyWbYR+}0(1cYi|9bKa(VS=yvtVULC`rA&MLTU5fjh&x_JUi;4=1YF&#;iDtQ9i*k!PEA5L)OFApdic4LV zL2BvqqDt|iBJtwNlD#7F<=W>(^~BD~@{H2r<=QpI7V+hJkD}7j;>r~=wVt?4@?5T$ z49tgjYH~-yR2I1470Id#7R!|5*y`MF>E{zrdl#BGv};VZkiH2>J*be(&q(HXghV z+KC@OBu0Yi$7*zBCb6L%;P?RyZBCvJ+BpY5f^n|MAF^775ssrBCGZ2LPKBf)(`Z&} z7O4e-O^*hBUNxBjvRcR{Fe{_;2ppPd3Bzs>$j=6p)C&o0dK!f_AgesWaZNO$mcz^q zF~S3`Ah4Nfz)2i>t`em5Gb9+u>K$45p^UjyJjg07G!cy^K2F4RXC{$Zg~p;a;I)Zp zEpS(8bVV4()CDn;iE)tzcLlOaM7v0kOwF`vd|6Bx4|heZF?4n!l0e}?d0d+4ikjoj zZixAlXh$MhcwyUdvsh5Lp0jlRh!dG$=6ZP~-5X6D8N$SX1Z&sV!|4HQe`{{#BtaUn zB9euRRXk1vh0l+hMx*cpRv@cHOfVPG<$2UNf)Cc(hGL&KfN723x|;IL*9$m0V2 zlE+~U+Lp_kSy_zRx<^SAj?+Pl!NXY48bWzsrOUtr)^jd>cw-)LLq~bU5^4oSgu{IF zrNmfqT4<5N2cSiXz91Cx+PY1hh}C0?bi}X`DNP{|3URu0Ntd0(eUT38)1ga+m2H z`|rZ!-y{0}MTtVN&SEtL-_|6qQ*=jF`8Bq~TWgoUiuBZ@+ke#T|E}Ku+sMqB2tw|k z9iaG@ffhKRJ!PnN5q^?UoU9`YGg#=gq=Gx9IgJa4eEyv_L>D96g8E zQ9gtgT@E-0KMjIR^l&5uj_8jHxI-}F*uYW_4{|=5!?S@h4$C_{hKxwiG-SddR1Zh= z{A6<-KFoi#mRt*h5Tzt%;WJ+apLGhjAU`)#>Ns?u0W1^%Jja}t;UgWewoF{ICNAEK z#p)a@CJLoiVXMyF#x;yboWEvTMeE*pVvR<$l;91~q6r}bUL`et-Qdv@Mh8f; z@LzbK2;t!B00rTw;6QeHV;|xs71b=86a$o@9p^pZNC~juI-m&=#!xo)q6fKFa)9wo z%MMyBG$y9{5#v{>Mr!j(UlN#egsXl`Ya?9Z>!t9Kh`608iP8lYAU z9BAp^$g50kh?jf8uju24+MbEfh+oXHy4 z;+Wwvew80hvb?XhOe{TuI6pL}*)l#hdo#;!JJ}oxxh>pp=9tJG=&kr&PT)E!6wnl3 zvCv6*ZP_Jzm2kDI&!M1_Qs}CH2ltowP+;YGLG#64`XZ?|nhV$4^j|11o@@@hZA}?A z8_A)$z3=7N_^SBfxIyq%;`0k#zBYA+YeNa19lt#XPhX6C6LJ~|g}SXnZUP*A5vEvpwz z`@{vOWJqc`RB0jY4F-BRvgMnO#k zL3+*rQzTyblTlVvO93=mN3YLRl_fnC@np-X$&PBZ)3}AfFogGQEforV_Sc}ERo%B} zagx<;f@1Fq+pNZ&Egs>EvQ%L<>k{3+Ur9h7^IM%rDHTsk-qYuf=&qg1h$OTlG z%A^|Fw~$rmS7|=c<)9T4a9K=YLebBoY-Xkn?%ZEJwdwvv>i)X9Jdg>|MAR<&ALp*ixWK1{p|Encg#tMQXPp*42=ex8UWfQQ`iXi1K7kT)xOor~AG%bV6gUBOW#?f+6B zg||xlDIX*H&XZEN^pe61ixN9&Kq`6ir;P1|grVIg0~xI{-cyUb3)xKAYxNjKA^Pp1#`7G+1;=!2)qi*A~_b-_VOX0RR5BB;_i|Q!OtP<|o*q04X z>S%c}7&a|#Nt9vOoF1_>n!e?B*vVAlva94UXUB%fJYO+uJI-I-j!S5kHDjL7797i> zeGK%?1n{O`<$(2{h+eXq^4yqEo$8piYNW71zWKFOlcD}`y@@}-Q;L_)GOnzPcKNrgPal}+eK`nuFd^@l4VhivJqTEpopii!S>68r5mTX`HqAvM&$+q~ z;T9!CR#30|?5b*2OvBHe)KpePK~s?$UEG_;>|t7 zPfNVy?I=8kE#jme*FgWk@fi;E6YM?j?Ta7ubKfX<^wum0{&p=e$VN(|o=;1x7+Hw8 zrn8;8rEmcua69u!Aj&8*N#g-*jn?T;Gf)yfBeG{ARkn~$HOAjU3hz>N^!(+V^8})= zRkLP)EQOzm##zAvZVAY{Qlojr^Rg+*r_0j87yl@ee7QR7_r1noMlN=nZx#Hdzke>R zxG;Zw%>YQ+7##}{aA?Dswy>LLHfCfSS5j=KqsCQr7?^l$97wDjC8plS+MQ`od_=keA&W9c`T-D<>*g(W$l*Di_`^h<8})#sjC z~<$hc`hLZdS%Rmfp}_ zy3uUt*Mwm(whSU7jcv^T^1R-Z}7(LXu9E@2R>oPsrzOf&)<+udd zb_Mk5Ei&+kVo?X}`vM(-LM4^*j^E3RYfBzIF|(t8@12Kz>h8rm3AxE+k&?EM;zm81 zAq#}ExG^lX3trcGeJ&;=&R1t8fScZT?X|t^ONbVeg&ETg1(?9tSwI^TudtsT#gE!d zI#si05@QYAnMUTMsMtKF$8q2BlV`l_kKbCGGFGv^tRNj*OE}lRd9mjVl%NhQeND;?941iz{DFkxFfD zpgD1qNYnw+lX=|GUUZz9j`K!0Iueew z$Cg45dT;@v9*Rwr^`Ttj-Rm7zjQcH*IxvG)R9>+^oH++-zljvORRg(cxXj*tH{1mxDYTkM(jRFg8-JI z4XPekFRrD@r2XM9c@dTGKo3vUOWY)Npd8b^9qrtGXSZ+K zZd1{OKd+xG@8_J7t?sr20^t^OymsE#<~T9VQh-JB`dlN2k(2+-h)n+#e?8o(MOzb_+PBfk48006a)qb)!Kq*PAZrNhcWFrx3kky*=jF@ z)OAb4x>38B&N9I-r48741oO%kP1ye)qKwSK+`rFD%f8#u9^&ST4FSLhk!(wd$UF(LucDn_W;K!*JI1}X}g0HG?H2OD^w{e zfVD5BatukRq>6i(Ifa?C!N~blrLr6w;X*;+;>|V*a*bl9C zEeiXat8>4V&F10kP~|)|^Z8f`LVRR|HM>2cSpNb?rKt;(Ywz_JDGF~+njk1)RlP#7 z0>ZbLoQ7?X##&?SE71Lif+9~`)q2i13=qs8o?vHVLVAR0oM)nqq{cq~%GL0GobYR7 zvrdM+Vh{d);Z^XKcmi^wx4`=WGG0E5V?7GFs46L~9>Th}^|}e;noq^;*)>AM{k}iv zF$onM`yEvlp_d^OpHqS_6=7WKduFIGl=A&$tc$~44AnxN1Ng7nrUh@U^m^^1UcC>K zUD(s47Y|*{dn`Mdvt4bViY5ouRI7@{>nrQY^cPc;UwoQzf-MNeT%-z+Q}%PD%g))E z4wgN0hdKn3-F&W0o>9J-e@YFI0p2{UzLw6R-`3p}@AGr`gY-L5_Jr2W~Ed+0F9ElR!+Ee=zY$v38RcEHrqs!{Ky37yw^)ZukZ z2R*K6uWq3&8CUEN3vcaDvXo3&cJFg9Qkee1XGERFs?a{xY#(ABm*>+2_$EfMrg@wt zyTB}As=QkF_Xl@YigFsa&0k#)BRiWSs}ZLaZ@pxeC~`kn6co}Re~03>PnFZRanap_ zc0~s4z=Oo5hPplejPj0mF6E<;sfSd>5we9|VPDccq$%Gt^{t;Sr^38^0m0v40d&N3 zM0sgl70OTgNNiWWco8s@aOS+7h1|}*4|}jA_l%8B{!c;f2ZpzkztDjnuIpTh(s7={ zPTLEYH1(eg3$geLU8xHQlnd|qM6vPo%KSI*WB>u6HS+-)9YF^XpP`mY)Y(DXcBbs$ zDg967l2;v+A9!xj3Jnm7-K}9-z!xg|$F4YB zQ3qbe8#JzVE8XyZ%1gU{Up3PxNn%|m>S-^Eivkijm90z{adp*PTHm}~P~Zh^LlmYI z$&(4V*9lydPQY$ZFNB??(1Bii{ma9dMpgLgTC~8(D^={8$t2U#TkUF}HNMAeh2lY~ ze)V!uEgE4&Gh3q6ttqbz|M)p8+jCF1%xs;A$d#VWTP5dCwU}X}1@-8akBf3$GLnw_ zBmKGcWZlkARlZ_Gk;*{lqWw*P_u)`b+5-=M_jl_vKGE9qN7^%!lDO{EZ|d5fO{Ko^ zmGVp8H@DPtO9B4x)kK2tUuUxP-@5pN*F?M5SVU7TmVVV7Ykz;o?u^?+kReYTuFc|A z88GaD9+ytW@2arYEO>BJq9w(}tYMio3g-__rT@ zrPUwX6_mU8`R*UIb(cuQ(aJ9LV^nwiiv5;@%1?+? z_P;_(?EI8E5#~bqXleSMF|%KE-^S(04a%R$)j=E5R>wY1ebA{XYo+J}b^p;{t)}7J z^Kv6}uF|sks&mE7u?e#%wnzarWnz*F%wF07Ye;A)k(4blU!#BWAu75CugS{z2AV$1 zU*>x6?XTK18hbId=~Zr%ZW=wp)$6g9;}fRbas4Ag`(e?!!Z-UKoIDv3)YEfhqxisnyS$7rzOfE z%{4)peN!R#5sJ8M(<`hbU;tBq8h%Hc8Fo%CsnI{MmzMHJb!VthlzH}D3K;kru-5k> z+Wld<_L_ja;Y8vsbs#I;CQt2S{7R!y>L^Li#D`gtDCl5D&u=^ez4>N$`jhFH#KDa> zSDxhS$>#m;%oE;WCQS~WC3faH2fB`gVec6|Pq~uzS~O2qG{XAN^y6a3?$1v0a;u5d zArH@M$0JQAOv8UCIxi!|uN_NUfrVL!+NsfST(X6s&xL{&U2a@{%bW5CoL;zRe)OL$ zD-*U5LI>iMhP6LO`Bi2-W8YkQz(TR-^4a0IO3SH!>0(Oa$0lfhy*h^)9!aGyEfi-bfm%7)RD zut=+U)!N%i;}gx!Rl4YN#qEZAU#}cb5f=hV@H|!1)Z>23M(@Y4^rwN~aB(?O1_jJX z{(XrwujKk*pmHLCRm=0|2PN;_hOV96cMUN&YPt9H?gU_3w92EGZC0HM9~6hRwvL54 zr(dWkKYN3@h{@Us!?8O%{q(DB>#v7z-b{H|eHpy=2rm@*`crkqR7H_#D}D=f84Mja zF0eo;RL-rJ5ee-r2l76<&;5~v*xSM9Gt6V)?Edo+gOi0)zMUo4&m}w>ZQEOhH1J{4 zIjoCl?zrFJbImXQF(EHeusumC$6s+59sFgX#3Tp{!-@dMm!V8(?=)57Q1(^fNzmW>!@eloVdPOw-fD@>e@b8CE6U&%s-RC zL%~0s%kr-)_`BX&P+wZuUZs_dZtJs83ohTw-FP;|S8(Qy;?VfCqPb3r<{Ae?`Dk{>EE+rt+q$@Rm6h%=K>Aj19 zpeP`qsDP-T+y{LB<$U*^?>=YQv)S35*`4{#?Cc&4Jv>YS65yY2;nLs69Is0zgbNaS zDbU#~=%fn*gh5V8$KZF;cnC2(nfdSUWah~TiHMm!291+Z|M>=>e;G-G^ow2ro@WdL zJMrM2U^oV)GP3kzn`0bF!n?UgzPU5teUz7 z1fV#Pq=)W_8qY8X00sbX6BXExxmOrSC49dmhDx#@9jhn#u_D_*;p6@CbcIc!mT@&|v6e}^ zp2UoWOG78j?t0Lu{CeR(73JwZ(BN9sU`SU6HHs7ViP);VK#5pHPbf-zYsgiP`A0zkh#zZtGsxdhY?l}<85BW+a1I^u_gRd zenc!EoRrh8qai>EuYB$*wv30p?45iWG%lfz1aLi337RsC2b)!{Q|0d6;8oD(S=;6} z)GRvGOmjK}G%o4MYJd{2{Hp(}xLf7A{r`)KXTLC@0_w8wGOF(~pQZ_4U!W-YsfPOj z(55OTqCJ7qT0zo%L5g6}3f34P=#A{@(f`W`CuRo#6$w<&Wz+zu4HL1cK%8Ze(p-@K z9H@#Djr{Ll^eJAzjbMu0bG@S|q%xdN)e;4=WhE3%S>2ZbICOAd*iRCV2>3R{ic4C*uzAc{qCAd1sk*NTH0 zzg9%CJ-T0EN-SUc2hXFDRZ}( zP`CLuH=FhdtG0g}=C9i<&xQP#=bX3*k9_*7b{6S>Jf}n`{heGouTB=9RhB?_u18XS z^_}96)n!!w!*e{7@8u=mOH5u*OczSZ^-9XGc~s^**s#^{|1JOa9IZe;uz;SU8OZlv zp3^0PQU|@MSyX@b?;e#VK!pZtvi`RL0H7;_M)x$17@LUAnBZni#LUf<{&$Z7sWa00 zQ_`Sfa{vGd0KA});~0_yGt~T*E>cLW@sX9v!%APW#oc3&qLHWN3C>UzRC<^t-%Yc- zVj_gl(2GsumrY00zNoU*`5;FDhCNci7yzOq`Xyen1&-goq-Ahn{IMZ1(QosJva#<2mh!`$1@NR6*vGm)0j|U;|V6C*tHCk zL5UA26TJMrLeo)s3eLDe30P4q1GW-nI*RQ>#SN=|D2yFf6#@Ws7Xol6Y-wFMzb>=p7~E}+S${4^dPEv$Y-T>hY(8UVzQCey-o~%btgpXkX3nf>jxe9f z)i-bT8NbGZ=?vwn7Y|FF`BpR$rMpKHSz z2b&w4yIGl;TZOt=9hh6rM(Bc6Q~h~_xp|xU{Jx)gZp7PQb3047`2%w+mK!#6@o&FJ zyk$G#JU0^pQk`bqoZ3T{g}m~;yvy#_{czoefT+q z726!dH~XD?R)07MGMM}!KXwWA2%Pr7p9Adc-4!|SB$r<4kq@r4roN!2cB|Q6q`PiQ z&DcD`F2`+I*3OF6e_1x&W-hI)X0tajS=Zb1el6gAgVN4WGKP>%U5 z^jxw zDx(X7QuLatST#5bny~x za2tP#Srj;reY&dpRtq2R`d&~tepTZt8=pn)N;**!U^U<_F>HXQxflK!S^3=S=>!oqz4z z*;}l4*17&fxNuWW7ASn}wRNgIVbU37m1U9&&am-)RF&%u67o$_TGw6&`QpA$Ti2b) z&;?J3pj(gjEx@P~1qD>1DBVgUc2(4$BKustwBvRtM^-VX@}JsucXK zqw-j6&#XKJestRG_jPSzPcm})m`MVJpTtbOJb5YM0=5@T$T9)N zfm^B$qycr;V{t+tSZ||2X!znn89-R|TC3yhdoKDkU@B*w>u_@*h+Eh4eefW`XXFt8 zERvA}jZh9v89_EmVQJUXO+=wVHKs}=z@3vN)(h1suswNTj#I^Ul6ruL>`DHS3KGDd zy&yq;9d%L_2BrTeG5Jr6^8c}kYB0}Yv;a@*UN#PjzghVOrqiD;zW*fYd4GTYSI+*Q z?EQah+4$6hko)fnP(^ z5d&Qg5B_vc#U+@4Lwa60*GW`Nnt=Yv=28bbkhKrEbRRKn>#TEXE2w`kLd-g+;AX9< zfffG%AWFOOazakUgBKGkr?$p`$+p_5wofhwCZH`!PSAqUz=Nnd!3ZV}G{fJ%xQu`I zF(|D6g%${?^}pi?MrxR$_7Rvs8K>zT z!Q=#yplVJCr%*j@QDRQibvhXHckW3p2tpKk5`}p;_{s-)e5K#MfEs!BQ1!(HO?p8AhPZy3 z%*2Z{Ow2XWWzGt~MO(*y@+g|Lw3Za=4aqJtyTuT69GVo9*aLxQM8z`uUwKDs`0zQU zf@US%=}kBa0Js1kix$nplP{l6cZ)uQA(JtSDVv!9!WRHmfGBz(ijOQYG0{D}yn7YO zr{Nk`@$x+>|0(&TqM-PDRUtiX|Gg}qm1iZCfHOF9LBEqkST@Sn#7#bAF z#g5|OK(V7SnDA>T9v%!o3XS0niD5@_uyY_WJZL0}oeRl{;pOJx!*GDBV@Gpy^F(lh zR1ORe7Y93vn;Xr8MlT|UsEZi~IZK|9zFKy6HhU>uOK&y!&M(^a;IPGtz4h!7Qg^S| zypO}S)ExQ{_tSGiddI8U`)PN5^awps(dia>{)NRKb(&+ERt=kxykr%TKvaO&`h3gc z46Lgq&8lH%Bda|2X{&NhW#VsVl7_wd=qn3d&x*p8rFv-LT1kt8UheIFH7=_x>$-d#Wta8))twMdt&U_g-oN{7S(O};-d)*~ZpVyhY4x!WpT`6G8?Twj~__i;en>hWZB z<2SsD9KKMj(xl=E8N-bfod;PJGNh1x(iK(ZAJT|ktJ!vR^^?bLGOawo3=gWyG@;s{)AFG87mtRD~2nuj4m|ZJ->tlPcnO(k*{rLgtEE;&BOkzfA@3APvN)j8h z!`7wzrG=Eu^sbv=5A9c{+4EY3(;-SD6_=j7r72b&tG}oHb{lwwT<}fgU$j`w5A7Cq zbpNtGD!MaeetC-#i!0IOUD~*3)-I2*#;u_!Oy2TnEr!_k+;xvumB$he-YEIC_{#By z8Cok44ER5zrvtY%0vn`A(Tw+W}*;6MAx( z0T(f@K7`!OaiZpK6wbuf-^msCJ>MEp1{allfqj@h{Ed0MpE$3{Da6_`GNr`DIQdg8 zIB&R02&Tj7MKCiW%~SUKR&PG=nWGBbCj=DBE=D~_Vg#Z_>I4ajtvnU`dpYE17A~3! zB>eny**1a^J*xOEK;EY__%>JBU8JuIOL#2k83XoMMaiWVq&ZHHLKlFx+1pKItho!oNyO9CNL$##GON~P`uFXUlRygo=g3iot@6=!ZY@} zPHOBTG&ix^Z~W~Bg_*99G=G&i-}u8x!Uh)kJKe)^^Y@CU9`SY+&)NI$bvNBJu!lHf zN@W?8n(z&IK;{Czt_G^os!)N*o?|+GO>AqG8e8!B)$%auq7LQpU^qpnUit`T>cs_R z9xq$O*`ZCwbU9jqGaMjZiTr! zZ%k*KYtFHtM%U?U(!{i~^Pju8KV%5slX(B;seGuO`Lx;u!@i7#!$3gO;{sul*uuud zpD_$c_hIyvK5@4nnTn_Flc#;qI)f)sqzz*Y@AXVX0ebu@j~$a7aqth3Gr6xbT@B9- zklWIRZ76xlkc*o}iRMfn=Dft|Cj4gB40ffmr5(Edo$VYXwhAK@W{^?$!|QD^nuj?{ z?5i6PN2}XeY^fNN4oFj8ew$?@FS2@*rjxE1W&-HZ4zY%3(aNom0hg6z?1jzx4XILe zr)p>xpstKVtn3UIcHnxH45q)!L`6Ovh`Pp)2T-@O&{oifRB~B1cSA;aGzOy>Ysn(q zlub%KtJUY9P*USuSgfPSI=jf%>avq|jSZCLlC1=s*R#DowuS)1st&PN=sZ`deCKB( z=e1bJh|k@MYWkJ)UG`@Ap~!0_t_TOM@PsnHLaFbt<;PE~nFgHdaA{v2#^26eeMD{T zO?wrG;u2PLjZ(YVcq{P{sY+{7pZ#KA0lmqiMb@sm8KFT}Sy=B^qoHE*Ub#l3SiJ!u zp4?*!HJs2Ca^a1Y4?oRA&lgjpMI7IX6Y{d!y7pU>!=DSOd^7o6nfvOHK7}8pyd>kj z_3?XsoBhln^C?%T&m<;MZ7DXo+S&eSlHoFNcu6)tN)Go77csmUsz)1^SnNWeqzxij zxfHYtX0R6coKATqaq9sxUj#MT*b=`EJ?Y*oC1;~$kj`3s`^ZmAInCnCdFW<&KXwmC z1jaJAg`%%MfgN=e!RgAH$a?Vx^DH0CkKhLN-!SR2yW`$C2Y7!plN1Gg@KiwM_cx zm^&kUfkkr%O(i2T+UtD$yzP(C=br_C=ZiRw9Ev5Urp*ieIYhc>95%(Jz*Io$J#$s{ zPv_QQhqc`+u{!JXf8@&9NO$wg#Q_D}qFhczn>^5EUml%Pq|(EtGjh}uPJS@7dEIkF z60^d&o?~a~bAGtuzMLQj4SVFhBceB9ZtW^v#L)Af)QV5_a{TN`96AD`)fqN$4mm$M zl5s&M(mmtHl-7lc;`0`x>nYL0rx$VpQI{i@t~Sj7TC z%PX>Ers-9sSsw}<_0&<}a}4&%<fENzqdEFbunk{tKFSl+Fcb1|PsDoPruEruABJvNKvTE+#=bP{y?B^X0qNye zSUH{KU!T*YOSKCbb)zu=kpFg^OF;mkMUQDCcAQ6(wi8IMBZkzWz4PiShKc2UR)@h8 z6-H`VXhC{P&{EJe{|!i?oO;wlu;XVyLtjV&v!}Y-H`BZ@2$>wJB14uXcHCo;41ULP`$+zktNU1x)96u(udTiF6-fNr94s7*W{bvCG^Pj zx!|GW6oV?kp$=h|sm^b;Y+t4>wm{+#M9s949hM9YBcjSd2fx(tm|+>g=o@Nt)H~pZ z3yC7af%i&+kElwvN+inH_(^Mcl5EHJ8$7_rNc5(RaKtc(lL2#mo@|ma*&X<^*z{P7TN4y{B}eeC73?e1b&Wkw}{U z_%5d&;>$Q>+NRtJQORZ~_*2?sV~v-z;?aGg1$9LXMR{-nCG;v^g4(r8WuIMy$y2|c z;c-d}Duz^m>Mn2D&bvIJw{q8R{tMK!*?5<`{d3Ug@TqfeWOA`BnhxrU-3*2+nzc|h zCnLipS&N}Pj)Ix2GQm!S%6O^~u61o`LFx>k zhagVPm%|h5D`C>R_e5DTCH5Q$;TsL$RgMfLTu|SEK`f=sdOWhW1tg z`<}!5A%T1MvM1Qj-CE!1fpiYvYlj88p$q^nYBmPpS3`c%&=T)_s+l#ZXXnBN1v@01 zu024~F?z_DP@;I-*n9RCFVw%9US-noy@lreMq{kN;dX7SJ49$t|D5a7YZl3E#r&6p z2UQNq@@;;dJD`uqlg5qEGl&Kf~`teCb@bo7_Wz^Uq z(qw^C76RoOu?8Ej*Tft5nfz=S!_;_luaj`RgL{T_xjL{udb2EPdTwPJuSbd?YC%=* zGGBQ<$@lW3fNpBO*f${sp1WO&AUbrhGW@)-ynNw6N9AIZu%X^T;UoH-KXjKH-Ka0) zVl+699mg21z*y9-(*F6GKh%HiutU`>Ogj@Sy$0=ph zFY?#hdzPI>nC1P0w|EAXskm1k^^Xx z_uHOPV@>0H#>@WRgv6FHMfw^QmNCv#q2+e$YhfSWhs(si8--d+Q>2Q>Fm+lhD#vc! zs6&cA0|l8;s_wn&$DG#=Yu9+!bwDynEHEC$N=f>am5CTUh&Xt!iX~e=;7j@(ehXrz7P*G$UT82r& z#8H*lEp=8jr`i4%T)!@^Vw{tG+pQT3{PP0w;6E=AP_XHY+tiN&9}mFC1@OrM&CZ3v zT;XKrMWavpz*h(~8inQ#WoKst-y}FNXbd|ynv^;24JR_k zG`q<}X%|wygve`7IL+b@pK%Wwmhy=*hItlyPrv|u&KIK$ytBzThnG6}DzX+3X+#Rn zF!j0%L?7b(wDe=Spdz&jyS}Ar377uydvkvVN&}v2v82O5iB8E>d$S)>M3|$6%~t178e+!z`@Sk0 z@3hK}c=*)w!mEbd_Z0mXU)OFzf4*D-_z;orfW|}8j}4SpmaOQ`bniR%JpKCY^Tl#5 z)X!NVeOg<@5M`TDHMS8K@`Lqzf{nqvX-~UYT$k}D-!QGoNjQ*Y-a;V+NW4cs;t_B& zE`|U!gj)Eq}}ehR&3#?=bEiDe$<}7K6NmN2_+Q!>PV_S z?>G_#S3Xo;JXJx9dhrg9R#vL3x8(l*>u^WRveBRuM#D*bM=DHEdNpo_`BTu#UfV3W z-`b+%*h&JPIi9NS6)wFR-cRp{)6>_<$^;i)o$NSX&cCG#4VAja2L_(Vi;Y`LTqI}b zE|F9ndrEe4-y=V=IJ#GmPEKvA$D+rm8^XndEOA%cQ7LY2NEJ*GEa~_l;<2RXrh6PC z?4^MSy9Tv#wo&mlMW5xO=y=#R85;NJWh_$qJvdd97XTvI2+Hd|_YGaE+;7Ho;+}Zl zAVDE?mA=1drl9dPC3#t6rAJx6fr?hWeUFn30%ikA#q#Ju6)2v(oi;^u!0kKk^3yxj zU^GSyO+Z>2xDG61Nb>J$vkJHcnh!&Jb#tSg(imbQ zu6H)H&>GdFblR47XQ#^RxkGX6a&V}!L|P7+n8lc#Lu5( zcnGs1GDXwSsuI!#2Qo)Y;l*-&-W<%wEEWv_97%)}Kk(&^62PpzVHnORzq%h}DyJ5# z3%GJp8$supfqdb{)}=TZ>`z6#w}~R6B;YLzt8d+%KB8$FOQBPqAjz(qsWed?CvE}J zIEh&oz0O|F%a0o#+L#D-nUE4QBKVC(8-|cLTB7qg+%OkxB<{1sGSggA-tXRH>mR@7+&wS- zZj=GfS_dae@kU_c+v;krH7=asz43EpaED3ii>MQD1V8`sWpwE~w1FD-Y>+w6ZpzON z50^}iS|%`L85z!eBcBu~8xg;6GWjy;mizGgs}cha@28P|7xJl&E_+*BUXZrD_S!A2(mePOQYH@C zZiqVcA>>P$<%*LFYoC{)mCV%nukXhqz24fd_+A5C!E8qzP8M)6U&HnIV!dpz+`eID zP1|~Ln2ZqpXI1wTkH*>}n2 zd_MuW>ow_`JpW?@rnEDfW?_N(sKuI11LotaT-s~MC;=xrE}e#E=1#MF&mI!D>+?&u zvlH)u(4&rbtc%e^O;JaU&II3ON@K5Wug1QbGb6}H`so1DoVtt!mhSIiiF%Y3Nev`- zXe(B@wQ`kQU#F+nifKbgkwY&@i(fHz*#ci_&(rG6YsMfX;< z=>@MymwqtPI(fGmrav4>cpV1=Kt!`4H4i_4I7qQTC9)d|maR?wd}N*}We3>K@?P zivd7`Q#Wc!gqFp&Y$UG1PWSTwTXwQo-O)#AYS^1v8)=9ra;QAi=@lnGojr-3q2Q=% z2Sv+b@#3{__U;s0Gqw5vic=SRShxWzLBgb@8qfdY%f}s*1fkNn$inPvDURSNrGjq< zKSxKux&>I*U8MP0!9stgu&i8#G3~?oU(h}HknwYhUTJLcbP1%1BQMVALNGs<--6s= zHULL-wyd{#g+gEClLXuRaZ80O8rl!Kvt0r~8}W)4IOq6@^L0<~gB`I|u1a70OeF7F zhv~Z()S^h@^Y1#JWC2r>BT3G7rEYJ!kFkF|w6xr+M663{8-!4tL#3e)Rn@vcv^)f? z={~?zm17fp<}QC5T8hU*;0WE2V&i_!s4Cdk4#HY4mBo3<4rQbhBbZ?kwV1nK%Xs8X z?)|!V_jldhZ^y@XLvyOltExzpI)OTh$V|t&UnrC`u3vUYzpywx+v9j*^X>Y&?JG+x z0EU0@=Z1r-kL=&ZM%eZh+yU+QM%Wd=`L+aSqOEM*txlgoQ3`jeAQcVXvh?uPLcH*a!c&)O{3!y=z7>{W?LigS> zm?B++ny{8W^Dj112?_SVOE?ijskZqz?c^LR=75Lf{#ZY-4)bWr+yeICDH(AW>A9k+ zR1^)eZCQ?11D!u`PJ<=`&HX}d+tZT+GVWERokq?ZkwM5!8G$Xrb>m1CUid$fLcJ?c zfQPyFgvjJ=~fuLwyL<2C}0C>+!mcw1@pHfaB>I2O@QxeW`|i{?ueF+aU;@2vsh zL!@Y&1KLQdlo_Jeh_#u84m|IY)()Uwo_jS1UMC^tqz)-gO4AEalLFLs`!Z6pQd%9` zSvfcOL=j{~eRA3~Y;4zJC##eOY32FPJ822lC#jHu&PmIOQq@=kS z4goxHB7M8hDE!KF>^HkNrJ0w$weI1q-TAY9JGzS1DVk}o-}y!!Tv^*_W-8LqH{4ax zq1>+?8Qo+>1|@OmouOLKhl$%NSyo%>>;H^)S=!pa9)HDq@Yep(QJs?{4o3!r`iM!V z{2G>GZdfPsyN%(<7U4q}Rq0ntE|>~PrsO@>m;#Aa>WB0Jw*ioni7s3!hU8O?U-uHQ zw(Gb|TmCfR*$GGqoH1<0m)96QNI2RD!c(4J4D%eb5T`*zyp*Ckrwlo)QhAa;QSPHA zCeYt=AJ|v_O!ycvtD#z7S|S@^WHat9KnfD*fl zvRr(4U1M;cx*yR1M~NWe%!1>D5CiUP4+Sy)l>HT)N+nipXY1F=Ohq~< zK1?p^`q%uR0`q^2Dn&CygMIvWu}-iQWzj+Z|WvTIJm##eppyH94H;Z9nLC|yOAbJlW89hoZ~i~RXA!B9=)D* z-!fcE;V7LQy3Gb&B4wdVP>pNR2Y2uf94@Z$(%n%OFjW%ckEjy`NIApCzkBD9I#0kU z3QW<36(S-$p}U%SqQD{we0fjx4p2ccEHtpYY^OYN^H6$hZ4?0mjUKh$MOQ%PVj4dg zHIdLMfD7E`MCluwqE2gK4fnC=JOUQJ2j%(Ebz!%tl)K3uRVbUuktgtxC!$X2SWRXLsvNZ))re0(qH+fgPDb5I6l z3;gUbvy$UoNEK65FTu@@kj`K&z~Atl`ea_IN6EYrosX1;qr-x1CaylK#F<*=3*{o4 z!}H?)UZwuTD!K)S>!UmD)jvO=ce#PV3SR>6m!UG~o;?-t3v3$CN@ zIDS+{F8=Z00jB!zGX-huv;RC(ocseti>0a>874Hy+jST`-XTn!7pzo>yb7IOI(mYu z!2$TguDDOJ6kpCf!vPBBe5vnw7Y2otyKjC|RxpqXA`#}E)##0IdDHC>GWSBL>WtOm z0_+y=5}By_>pdl(n8wd--nh4+Dy65SCsvz=HAU)-zDG*1cP+FAX!2MJT>#>J%mPG z@SrgpNm$Rq-RGf7wjLS!G`IHWsy>h8orb=Nui}d?B#S|}>PhsedY)-mt;U7XXIRZ% vY!>*macx@CF)M56+9i%y%J&gEwEjOu2ZMu~M3mA?HKAVwbazF*%LD%hYXjd6 diff --git a/Resources/Audio/Construction/place_wires_2.ogg b/Resources/Audio/Construction/place_wires_2.ogg deleted file mode 100644 index 987599fe38fbc9ecbe8f70f6afb39aa1dd111bdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13621 zcmaib1z1$i_xD|vE{R=WVSz;!VF{&6y1TnsN>XVMP>>FhZjcs`E&&xmq#LAB1Vmaa zLNVUE`2EH6f8Xc--e(x*&Y3x9=A6$tbM8E#>*8Vv-~svpoWRzH7yPDXq`gF}+Qz`rV#up=A*@PTkH zlH{@v>TVMfE)1N>KE)EQI^vH|L<#!uBuHK!UvcoNY^`+nn!s=nQ z4)xCotwVh$B(@9wsYovNfdbc}K!|XpQXs~$kHb{v_<*ebZVLs3gWCjDQ(@{&u+b*u z_%vGg3$H${$h45Mp^>&R`1o6!1~@GQ_%8&6ndd}Xc7&OCL|ZOKTc1YTGsOH;&cfDC zaphv`CMK0xD+Lx+Kc(Ret?_SKm;Pl0oY?_DP5{~OjT{EGVZb-*BVy_+z2K|80IC9~ zk^lXPxWEgz5w=3-EVpoCp%nWIwS%d=6-<*)R98I%_93ooey?;luH+Z0UnO00u3;+ON?J4vj;)_2E(kK-h` zzW)gyInZwQiwpyW_fTQUgjg6`C0ja+-vi3@Vu2w{Im`WI6^-ghJp%-1h2Oo4oudFC zis}Nz|Eeya{1?ULX$jmTTrFdQqrAAPwr@gmzp;->kz4>oF|P=S;`?nMihS!O)Z8oD z<}G+CG7K~@6@NVnG%Ct5MV=6G;UqCRJ|mb%pjZ62;Xa`!shOw$t4w}I>eFz5Wm=HW zP)OR?$k;T%(>&XM;lqW{`L*xJH|cOW2M}=8Dg9jnAv;EcFzy(** zioDMumW-l!S!t!dB~A>6J$yhP0Kx@^1YR-tOsEeRD@_QH6lM%ba8{(xsAKrD7=$n! zl{5~U1!Xhp!{r$anhAyFG!F4~;3R+u{2?ouN`XV-i z7uJMvXwoWA!kiXpwHGpl$Av}ojf_WWjpvMvSLn2j+c~spwY9$)8Ph5o!;NRNw2j+5 zCxxAsjEvvV8PByltu&GKIp(l!TQ=RvCfLROgVyr*@}KdiK27pz2$7urSi{fzaE zoy?7l%>$gwPmN9I!!$vvq4pBo*tp$z>DbdaD{S4**xJ-->D1Vq?vCX`^!iEIIs=aL z!kj-ywV!vgf8xK!<(lW}R$5h)$5m5PUDNJaQ(tFUx>HkHGt%r*Q(rsM-0-;GV;`i} zSJgE0*3|GmZmvDA;oWbqs_Cj5X>QD~f4tv*MApZ<-*u~|zW#CZ0gl>Lw?E*$-^CwV zi5abYyw_FT)#bI{*gMP**MaCwBL2D)t^n@*#Aw2^`dr?%1~X?8lQ)r_;ItMmCa`bdE03(bcyfhH9=Ot)y8N2Q`^{cFeYN`v`o>|_ znNDkB*5>qHYhuZk3-?QF_PV%7yFoz$s{=QYPx+D7E21Ewu(^&b%wg!1WYT?Q!24Ws z^TfZbft+OU0f-F<4jZ&1awTj$c;Vs@fRJq)W=O@|kMg53*h7^Y2@taR>S**MGxRjv z*fL&o51@>a)rShwX*6zNGG+{jN-Fd;+)Fa%4cwb5UtJzqZq);?Et04m zs06pm9VgUDDq3*_kkxi^Ii-R|MLA4UgU@6P1ajGoyjpcRjiGvV8_24noK90ipdDuE zB`}W!XOz=es$&LVhMs%_dF%rykkv3w_=SwEoD7gvZe*Hp&aHw zb-988v`Yod0n{ynFQo!E!eK(53lpWM!HtQg(opB905e@uB$&^6Ol6oM!3F(|BX;Ci za)B6>pOGLpb(EF{XLSUq(K>$+3Kjih7H)N|i*m$u(er|u93T{&>t5wp@BqL8xS)fJ zIKly>5CL)wWuROM7b@(S#12vzjEu-AO74MzNJ<4_IJgY(tQwO5D=Gz$0OorokziGk zF@qx*XzZfEK1_ulj*wwM3IN=KI--_iG8YB3ly@ql1l%+!z|D#=j644^X73_x+< zma2WoLEZJ6;0PHO2PhC49wGr$Agl%~6gBGl&D`tRD(11ZA`2jh+dkyEYk&mz@lF6( zB_IMCp-jr6oD3w~!j2c42uFcxOcIEJVG{(l3lxbl{W)NcQ^|l!J-|a2mwzOI1n_kL zBuH!{aaDnD@_!PO|FlT{ADgHK^DJr;@U$LaU?TpTm8;NPygGRNlceYTef_VT{Xg0J z|JJf}uLB|X-xVPDf|LmOL&RjFDvn_!uX@Z%~6qs3mva5H26T?L>v|K25z7fN#csu*Ems&@@klhd5c6o z(B(A1S8S3kh`7mws*rYa4|6qie$0mx*TaW?o zylw&EYK`78ndL1nr{7)Jnhi|06)v=m`!Fy7ZBdLv3!9P#h$fnJ1#>{;R0I3C14+h83Y;EMT-M$k^D{IF2EQ?1Ez8rAm_h*88o1bi}WtT z0Eb9WH8{crR4-a2Y&dmY3}*W~7nciy5QXBRF#8U=Y~-?s@cK)r-i;v*Ae=%69cSDRs?!IgS% z#;3L|U<~}UL=gl0RBS>Kau6895GW`L9|IIO_Dl&_;p4xj5hNui9gOmwafJd@QA6aZ zac1N+v^5c>SV_Rl%5I1#oc#X%)u7I&B6BUjTRqgkJ)}(FAdEan8wQeVb6U zl4Df)tM~XE7i3&TO#Js#1^=S`_e)vs;zJq$a9_$eF*jS!WE3x>Lc`<21H(eSgM0!4 z{BODXdipUUm{80tL4m#jj7&%-CL}BBG7}qXFam*MN1<3)Sy3#EjLeLzY-|W-BnlPn zAtQbJQl?fuQPvge=fhJWeB_suRkjb0XM^J<3U426LxE5QGJOuB>%bWqDnv6=&^U%$ zR^!?brGTdc^zw7s2uL0=GfPU!eF8>8{F5S&U*CuDZ=`>LyFT(ErQd`GI}ae-3`C29 z91qW$+l4+g(%54gjTeOH&a%ZNGbA5AbBSDe^UI!dJ}5BPwex- zSwho9A7hP2sVc>-7c#S@L{ZoAk9Js}@ZX4?6t5lJZB(aZ*;zd+AYCL$z>Dx>J!nt{ zjEu1&i~cL6QQv>nk5yO#5?R}2cgB5xeocY z>ayk#Zx^m!ws^~=9YNzf<98URtLWPD!qZQKXvn@aCuuskC7QbRs}8y_JD>wy(R+(# zwch!krw@u^mNEI9Q`-Amx60P{@A(Oj>46eQ&8#hDC-*Og>#Kr z{qh!ksqx`gk3E=o!`&i{81zfd6;d757;Y>BBgM$L43rS&Q&d1(6mb|_xjyxqcp0xyD|9{9uS?ON;>33b6qHIC;5>JNkV{sbl}dh8pl)Y>_83zTOlZ zJNH)EwX~uc)g}Ws{f5HDk8Lqu+bBH)r^J_>?NSe^u>NValYuB_hbT>P_9;0P}SU z7wySq$P>j&f86=EO&s^E0BgbR4|aa5XtN#vK=H<{*~xw*mx{2THg3AE+K(r*ezT0o z5;)#0UM?HGWn3d;YWXqkk9Sf+81UN^32@8gQMMCmocCn+<5kgcb62fYC3a@vkmsY)nJ$q>O#df1*Zc?lE%l)J0wI38v>(g4N zJW~pHAG#fO&IdfarliIDTcb3ZP5%b0t>^g-{k|3EBGWMx%i0i?95;E%^Y@>vfFur1 zg>bss!k_W+B?Xs7WRrhTCJP2*d}rna9d|bS)NiD)_9SRJ89tYz5}@z0yf0AY{}C(A znKFfJJy&VTD6bTeQPUn}M8!+g+8eh_Q zEWJ#;@noCwj%llSG=shz#Iq%VkXt>$>Fm4D>_h&!3AJ3aOBTq^h1@Ww3AB`B+-YjL zz^6Lp7`rzw4dWjx4~IOsOs<-lVY-d_{l4^LN1Ce8yA8YM93wN^GCWmcI$BKO(IEFd zJOt~T_OI&i#4BHRsJ<7(ynutladuNesbVjOwYRS{6j?!t}C(L{MN1W zIT<_0E7vHW%(=?%?C;QAOqXO_qu{6Gi3wRy>YSBA;n7{9B!I9<66a9mJaMv zw@GV?YSI#rM;4Xs6(qNnD6*b%CiHXT=ZX0Z32DBt4>lQjO(M-I>-B*x7~fyP)`Jy2 zWW7r7o-$V*NiXtwpxc*Iq@ML{oQCpg$+ohzY*aIBkQG1W@_kUbmp3wAcV2w5TR9Mq zoxJ7dn0}8FxMN~O{NPd_aUQ)|{XDzgmcl)St~cl>PwfWyuYGvae!QhwF)QlssCtW) zf+pMME!|2i_p_?O!bkE0mJo+EgI{WwogGgw%r2f1s zSY}?dyK%Rso|_f8V?0(vqQ*288vary=rW|LrV2xxE+ZYwzME!cO`qMJRC_AtRa#IY zF6G<%gT#xHqHgw=^Ob3)J-gL_$>Z*-q6Z9){Fmhy*~{9#sm&~TYC0?Ba`3`Uq6jyM znTg}YxM_RDP)Td8_T;)DijsPrs&H^`=;FaAeT3w!#U17(RP_c4yKhdu{>qK@H7GAP zpnj4hdcZxj3k{4ax$;#Tn>uuJMsD3q5T9#`!RoMwur=|{ z9RntO2^~#GNw25-jVfchc~9oIlb7dTxjEbhPK?GLQ~R_)R$}d8r+WzU4|k_~I^BIAGDaq7}x z?>U3DV7tG_n*DTU6=lxUC*w(PhB@NBRD0-(QJZYKtu&hx;E~CpWd$Gg4e82DfW%-R zJKdTY3>pVNQ!vjEym+B-vI;yqC456b$z07yyG-rCn8#$mQh+5C9)@Cw;u54)e1=Co zuFRMEN>W-^%Q-P76JHoUs)bh*wg%n3C0*j_q2p!7E#M(ytU_Mn_0&0V2sn^$@GVLi z0Z?0q5N2CR%hzEO4;tDVmIXt8eP(?oVmm73a2ro9@8*N6H;+UJPS2M^0CRzp^@xCdylO2p>Fvfs>)YzNlD7MIrPi^L znN5QYJI?dXH$u9Sq)InI6YeBfLc6 zFr>)PkUxqbp65fXiXU>~XFACVbr;o-;gRQW>PDzv-n)^UNA6B(NXOZU6cA5>H7@Wsc;cXk~hHKBY5zP{(5?`&fwvs)aA6=?*yV)I{+1jRD+amOpgNAdBQKJ^F< z-BMI1JO31A5F6tkfMw&Rq+OHPSoy%QT8+3`&~q%j8^Nd^KwdDjZB>o)32AM6`$Ev)F#60Q9E0rzI2jVLVa2EDXJF!D^ETqqN>+*k1G4B zQkH&~lL($Y>!yb)5DHI}j_3EQ>Y=fP$X#0M(d14@b_~BQbuS6Zzz#cO{thk_0x-eC&rri6>Dv9_+0x_ z;|kyXugcl{kR*7Z!3meWP;s>!COaUyz3JHMLHTcuB~J`cPHj6VTyBV*+UJk`k}v(F zsmWV%xUSIm_f7Zq7K?>He_AoNgHoDv;g{v5xI=%`aQ{YS_L(w@bRKq$tLs|YfpxCy`pmw)&xU(C1jY%~kGNj1^)V)C(VG@$-56w<(kEHIrecul zGHv7Tc)Ok~dhPT$BTAq>wL0Y0L+PSCQUJeyLx{g(lFs)bVPJ`d)la8Xi{d+rJY2Ka z7dTcijZ4c{e!nkHN~5lYYZkkF6ooD3;rSI_5zee?br?_!eQFH6hD(=b0EnP`$*6IU ztoEv_lxS*ljz^NfGq`_-w3{hMDfuG zV?y@Qcnp6lob1N=L1{+;;q8}NvN^Q}NvTx(i_KydGsd@e3xt4jI2mRV!qs>j-Wgi= z!IZ?ID+c!51y%IoR56{W?-g4EqzHoHhtjbAEJ&X8wS4W_w^`YJtoFxHveyk-&S9G< zJyiaRqL>qJ``{7hT(gT24J!wC=L>2_ffd49l0bkRU~E(YrYO=$yoKgDw|S`VXpx_< z9QfHcb>k^f+rp)8+6^sI$%a<}Qht{GDk=d_IlRkPV>C@fGbl8p02S!78*WsWq)ZYs z_u)EeUuC||dP71fK=7ymc>E6GGkNK?zEL#1p;gS*`W2*B1c5i?p9_#u&ES8EJQ|o0 z_4+hYzcWFKZldQ0wBQYTCk!SX&#(hPlU)H7cdAI>n}qiaZ=gsL+e=U*jtJsPykc5a zWzpdq_x>O^K5MKzI5F-<5?E0;&>wOY;~{pK*Lf@*1RZQ2TUa{U4D5>^T^AfJFNGSx z10C|OUq^XT9nub*Eb?D@ukc=|lR3|cS^H31`i&dty@|rQW)ws^h7gM^s;Bk2eLH4| zH`GgFj_^_TTDbGeX}P^}1f_S8D>mot9qfnmV~A-9#0U|FP2plhZwL`-=VegJx<*sD z2rjt{HuIsuAkq+cVh6|(Jrq*CYBTZOC`Hv}7J4j;Jy1Fq5_G{6Cb=7jwgZnAL%Ta# zy1EnF{Xt)3{f#0K0i{VQPmsVDqp`0UA|5{Ey^58zEu4?Us0E-=4&u{IVaWHC^vw$% zFZn}N#@;M3$yRAnU1jO$|Ft#fpzmmb_`1|CGax>f_cr}R9g=M({pO?8Qv1F=d$!fR zCdoEvj$+|;?AN%kwp$+YC69N0#|kg*o4jJlkwPmBy)`zsSIjuih%7cqN#%VR7V^(M z!~pJw;_p2K6#Q-2c_J6e%8a5%FfuYSfwv1j!Ay)ORu+cKtgJ{T@VbG4?J^1pzMxQS ztW3B;EGSk61S1P;Ac~C*oPq#nv9dBTf)$Dt6@=r#hG1hwfm~25Oehp9f*FNk25I0V zMkW+1D>$Exg`JHN>_Vdgy``8FsV^B@mO=BPWce3}ue;7}o9u#wSMl?R;t4q?j6?ZjSk7hBzGk7 zfQOB}g;*kzp0l6nMhXsVt7gk18)U3sifwxrHR201|3N`sHcF&KP)e@I_l+AeZDI$% zu}Ek%``C+u%TR)Yz8tRKa|qe=b(az9EdRiG?N`aW!bb?Qe@LXJ1D_VL>zO}%&*`k>Gd+VD(X2*SMtYi63XUQ zDtDKdHRduC7#iFOO3qHK+VyO=iY0H3%{!t$^g~v)#g8|*)P*Np3Gt+3IJy&{2njGY zA|BQjy|=+`r1lY0&nzfnS1bB?r!J>OvhC0AbNA4vu@}Vu$Z;Q3y)y$#|YV3%X=h9$Mu{#_yID=`^&SnoeqF zYoYor!2RapI4eWjuNDV000|GIx_-~;RX7H+7j{2NoPq;c%T8+jgmVp|1Q!wR(eVhe z^Qe&%;$<@nvm)HRH0gZu9n{`&+_vyUOy438vCLiUn|X8DQ{p4>tglZh5%MXffE9Bf z50e`a$n!VHYbD|1pwILTFMf%&2jZ7@G#*lGfhP}Sfh+t0&~;l5I$&ph*YlO{;`K*D zdfcIf5Gy#DD+PqNQCK9d#sBfhH^KJDV~0$pSB&7cO+6iX9Q?=Y{E-Jf`=d-uOoQql zK1Y9j5xZCrxv+NEirRMT#FLR@1CTCGG;QV!fvl`Q5Z$=tz*_Mgdk><;JZjHA0|ZU) z_rxx3qO&>a4;%x?FdLE@Mo&KWvIrvrON)r}BQ#fy@X&``7+0$=vZW)>c&0M&0ABbg zWYSwNd>sx%SzDv4Y4|#RQ<6#WL|?(vf|H?L*>GxV-ytdQv-qd? zZXMn1S_5;i?8#GFG-8xQ6hPf`7H@jKm*f-26~x7k4@HEhWpL+thm&g4&;#e&?# z+olrbu6_Jb@#pA|z$;S{DeA!K1Wa0aC&p7S%CLfb5>CHm-esZcXWwBxkn9?tTH zMd6&o@fFoCtt3*cSG9_`Wls);473&N^G%qcXha}efLd1s>t{INibh?ouo*ksa#!}l zn#Vw3hz6G;Jx_qlUK{><)p-dS8=r82}hst{)5H5dEjmSP1;!fkI68QpFW+;7w33bv!FEEOQv=yu&m= z=`E|QIl{mTw;hz$SC67^JXSh;L6pAP+y;6z z_s)#Cld#|R_(!^phB>oqs<^<2&qP6N_t8I!bqFCK^4z42C3Q>C#`J9{~VSoUFV&$BN8Qepf~%Q7ArtI!g+3Yc(#_|^t`%^v61n5 zJYvob@G&;3dT*zq_e>%BrA+-JN;bgLSnGz%@31dx!6AzugolFebGi4LRGU09XD8)N z{;irZN`LRl6(!e%7=l*l!$ptH6jZ;T%nPl-79qYzhfSSmmeI4C;B}#7yy$1Gt;01> z%zR>dN4ER49-JDf0%%_DltSn?@F;4Kr!b@GAIud5`WRLu^Bo1}PL5)WWl8S0H=Mdb zl_+fGg;!I6Rzkd=i*s2yMe6O}zdMV$<-B{5zpO~yg9n2LmZ{jIc||LAA9+dYQ*Q3PvATl-H6j@2%?!L@RjroKuwfM8S@T+Rw{b zke{$Xg^>IVPcY{VpSRlk98>^1y&d{yzSf6%&0-qlDI1r%>k3Rgo|@F%{atQC_e8CO zKKL$qZ;pHvghrS-km{Wlgth4!q?>t5q{~hB#uuo2NW6Oc9l1<4DCo;rb~n_zpfEgV z4*8I=U}pY@(`w+voK&C~R~RdRCb1=gMKQcf!r*;cH(MHCPN+WYeX;u7ZueoDI$;9n zh*-WFBMqn_E3q%eQ)~M5`?^)i=1l(mDeXWyT7-`=8uOl$N$y)h%9Up>H~Xjf2>4Bu zHP@2wJjhp_CR+}LR_oGc1z1+s@LRV%aP4FwYEZ~Hkt?pE3z2*!*~5EYn>KRms$g%7 z$^08C-OWgq%cU=WZrM$jciJYH7>ty=o)*bp)iXN(h2<_@9=3wY2o?6fz5WyrbV*2L zAt9khT!R*nm~fAl!=05rCT!&uB@7PTkOkKt0gTYRsj#RkRbaF4+6^D6up;p@`ucCW9!y-Dm|}a z+E107-~bv<7LSG<(3x2p%YAa42@2@W=KDH2WjO2gY{fa*L;_WHGiUh25SgpQ7dF_JdwQjN9x0muAA?5tW{UO8+hH7U1|2`1CxzWCdF#e z7PgVa$5U-WuDSG$$=|0{#+c5Bm~FMdcukhWY>=vJ9N@g*K80N#7S47;++-9}jSB2e zD}M_*f@YKagVfL4ibAkgy{(c5-I@uq^3Bc&4*(yo8Npde!=57PK{}PFO7jsOWhY&l z`4$acDLhvh*>^4>XL%m;?&Tv*5`n7&>IKBIDNW1KT->R+?cNt`@eYc~Ry~?}QR!7b zFidb?0)8h>e?N&%p8)s?(~PHhw8^sg9RHmUQ{+^lD}!#kN658SRgMSEpn(#bn9aX3 zGw+TW;!R~fqlvmLsxfT;v#k^t_S;Cgj{-@6Mp4N4$L4-Rn!f7SPr0_#ugm@}tpjiA z$Qm!FWduZLSJ>M~`{ZFELxs~uF?HFc>#nr!vn7RBPwBWjYks=a zyTM;sI4|ge%8>4%i)IMy7}JKf&)HmezBK>z_KA`PpAKD!o4lP-uf3M;1}Lv$NZk zg2wsbH{vD1rL3$=d;2;e->Q&cjwE8&#}G^yL^9EnTD5_7+5GVZh!hw9|S5?wi7W%BFGec$1=B$V+=l|cCy zvt!~C0OGbHR*QGiU6kdyT$t~2o1;+J;lAk4-C(n@%Shb0rO0k*4;6NZ>-R!q+?)gacU zClqJXa87h}h}8^Y(>YMLEp(o7b~+W_#sz>5?qqq@dyx%T=bcRsdndY0RON0S5lU0y!)>9Sq{W1@y5VXCD{PKgbSt|W>}FD1^O`Xvs<9AW zgr+bwg{dI!L~?9B@nF*9b;=)V;^20JFKKUKRG`%oo1)MN=)?O>3sgVfC^j!Tue@7) za({Cl26+OxIePK=7-0{@3H!hMSg|#?YE(M$`K)Vl`m6Cx-6A|*>IO&}1lSP~zBP?J z5B=KbdFSobtJtXXADcR|f4&PcYeHTl8)ifk7~~&uek72iU#WJxon;>O)VP*fpIg~% zUEK$Cvr#|MG?Jbf^4Rw52CPGa?sC}AcZ%u^&{bHVfUaCQ7&RDMuSce@X;psE-gB?~ zNb!I)anuiY`myuUEGEQPV2Iz!7#iL$m|obiDXa_D&%D<*Cq;;cCq~2wdYFBpM!h^P zxn>b#URmU6<&f32s9~;2CEsbDpYV)UNs%)sRWu0_eb2~06uEwv` z^SC#|nB4`vM=9*%tsk^KVa6gYdr3%HqSNX%V6hz)sg^z&erMgfhie*^eC$%s39&Ik z7UK=6=t=Qnhbx9+ML%CwcOU(;9+zpEdFs=WinWHUHd8;LlM=)jEZE_HUkb{b`~a2o zMLEA$Y>%=_UA%U=_U%{8htGZu1>P;DPE7um7{7XxfwHCU!8%1wKe6~`eOo0fLdR0V zv0LXSYuy3m#nlIX`sT&W$Hkvu;QlltcW(d1rN97Y@J}pIKE6Q+R_4F}7NapJF+XsX z%Eo4w2u_?`D)mcb-#et6?DnC;k2~KE9MM&2bSL86ikzoQuHzAVg8s8K&ga)j(T40s z%Evr@Hg;-el$J_KO@u9auGg-Q<`1@H1DV4jlfP0qoMo8HhI)6eCCk;KGanD`lHo@m zJZaL8f4G95W&FN^3aCN$e&SJRd^9oLme!IBOexGS|O0=xpV znoAi2HqKWH#k&Q7r#sqp8EMReCN-A^!IPG(lY;$`3qFfBfraR-@cjPVNX$*oUvw-- zwIvD=82m+f>I7Z5-?sD1bl*Ho2;aOXYr^wiBW6K|pVsjKFjpiBAhxL`d-eLYUAaX- zj)lv~(`udV?$CE{A(`IL+eYMEo4v`XGbe(Ry@jesd?R>ubuAq!`)6VvH3H*$9kZHr z_P4X=N#!xb*QreeEGODF;hc?82xi5^U%$X-q<+fr&x@SQC6PE0EH9W+gFRqN*Z}WL%F{mg(0xL%Wt^^$ z`NwI?Rb;+Lo!-=5iER3H*GdIerv)9n&Dg2>2`fMPxxmu&^G;(xG;_U^XZJXsIfi5t z-&wA3xy=Be^kU0AEnhSl5?0Tg(ezADTPI7)*okBBFVqeBIzIHH^tr<=vcR_Oxj{K9 zDMs8u8OKbu#l}&q4QYS4ywg+{8ofSaT>$VR8l3RNSb;povDBv<_HJ(6ORQevwAH!^ z%iurr$ifh|?DCfhfoqT}{7T(nQ9o<((R94uVP#v+fnh%g} zBP}6XAbDk9Z@MF9dvD=7@qQJ-vDu|1Yo>3<@5(qwdu3Q_y|AatNhDM7+rMQ0&P=AmA>DhuvV3CYP>>)BLF=(ZueKC8Ks1 zvw=$R;Pfz=>F(S4vorHFE1eI7nSJl~{{807`~BX$Ux5EP%zsvQz>1yqyA?9+@BCkk z({!sgs!{>HM^BUu#4D*}!f>qb(Qb$qZSC!7J=B5EzC7T%jt5ion46x&Oge2UQ?&{J zfN#Iq9_nz}?Q-U(C-KAJMaLGWHn0n0 zcYnoV-~w6-Ls$%40D3+LdVrRKpkNL7?)|(fd^fL`JAb#6HVhTub@ipi z_}Cq=EQ{d!Srh;S*Uth!t9jgkc3@Ur3l`=}SNVY&8CVC##}?4m-fr23p#pAPzk;@D z>w-?OGDCJ4Er5V(*ZUg!l~gjp1cO1vPTma5HQ>tS0n@y$?qmA>!h9OJT+UF=&J5X6 z$x2?_wtrba%&=VqNi(F~OBqRj*NWvdve~TT&XCwBPx%wTCA50-8f_Io4qjt%No3H_ ztSl~xOfVQ!$ieeG?^*$;&YY*Z2DMIgAeBrQ=GiKM9K7B8r48Q6dq^@jJ?Xlv)A}m% z1B?dWd-Q~YS@o)|!ZZdCz?I2#OGTbwHk&OOlz-fK4N^t|07w}LgRhV1`CbSAwy{(| zSNAc##XjB0vfws*nfLJV6Hn@@F`$~RCu}`VQ7vE|u6`(mGq$P+( zqkqcs$||%)@VBN95s$}p8BIQy%b~mXt2fqp8aOtC01%JI5vUCUXvW1q{=ql%<%54$ zsK^Q!?X$JTZ~0ZdE<^6y-vw+HVC3Ne>eRnl_YfloH}t&XGVjVvuzdx{&4}jS7W)CD z%jI15~?%QoGY!BfRWbJqJjT2dLVo@b$vevTq4DZ%tq(oyN}k-G2(X zN6_{Wt%o|wVuQlrFlqz40H{ai#dtk@r4k~;vaJ3mWhA7M2}TeEuq=ykI1H9$0aW&+ zG#RZN%d!vz0jXqykup+QonE0HBlP3Tdi>PTufNM=?2Z#k${ik776TWI^E^OB0d}47 z@_kUR`(8iOQW)}F9|;u&m_21LPk*Uwki-n2r37j-z^FrJiZS{~LZ+3~d9R--&Z7mj z82|u-uaD^G1j{R{hVgrV@s}ntO)Dn|0%AL&db-?rjp{4l*$j4dAJZM1k)s=ml##Hw zBr?4?q4eE;gfCtn!AM}EB(&9zrak+?g*c>=31;oZE2THIiWGpB!jPJNPk&|rIziP` z0wwiTe-;3mfre%Uv%oU81NiR@!3k1EQtMq)>+K`&0gPb7bKj{b;PkU${fX!^p!oiv zdhY}-!~wHvB0DBC!xKe;N5HJ4+V1}DITc7j%e9Fj{6NeQ{M0V`P8hMp`Rn%cei2Vo^nSp^3fr5DR_ zWTj~kEoFL`o%KpuX|=nfSf%CM}SRfOl~H23-u?+@{U$LB-)$xgJMI$?T^XG>2IU0uZ5@^ZmvDwY8N z@L=*L!e7q`@CJ!1J)w-h{^oBar!oM5#=#l@Q2tiK-_#0^&sX#tA8@C-%ny9sC8-hTorMzFS2RI~)BA;lts%jqWJ`8ffpAi+vNxNi#(EHnb&QxTtyIndV@ z$85|&U)s@M_dmk`0Fde~172h)$mT=4XujAC05}KW^uxGt-{vF3+d%;(C{s-aT>W;O zw4dzcMtF2}5jVcOV#?yUoNgkiT67<$<7qd+9&q84-G992u_w1BK$8JhwJ%SIb`er) zzxA(;(FwZMfMR0migoI%eF8G#XibV_^HC-jhJSdmb zO{BWZaDSyIz}icDEx2{$xzZ~0G7(liI*-o>kIzSdIB;g106)=*GXTzvlQ@8@XjfV~ zIbi6UhOK}UiwN+7a@y9C-FiW!{vQCynwp(ggBTha<*I|)mpT!ipVOQxjRDs-s0P*$ zy*#L&Ia(@-*@&(#ntRd2db$ko_wP19-6pmsO4h!`VAf=sfi43Q zTM3{JV7_=F4WLdQM@vo%rG)`gbdboEKyzc8f7SD#=e?seC79Z8*)j01je#k@Y0$fPVk@Dz zrhny#>XZW|D?!$>V~|Kw<#*+`Kk?|!CIBEBa-gd}im?#Aj<)Z7T5kF+!;lhmIVXq| ziwNiE9Aq}+z!;L~>yKmRX)ORC8F`5rXDyPEm-OYP*0OKFDoWM??0V_%=_NByUnrZL zamt&QLsD9ysY-_7kQlS`TCups!5YIMsegk;Q3)6t8O7~KKg!DNtNaHp7VopDY$c;0 z1J;(8>2-Lr{6su{{8;ICb#-xFQ*XV3&Pqf5F;f3|BX(aUq1EQ1&~v-5lDgTMgG5on z-bZSxiYlt8qKYc2sG^Dkf+;VJWse_B-Zb^mLiIXkqew#|qoy;^rs@M&_Sj4URevwv zXeO6vC5vRaK*C4@b!cQ1Ys<@Ms6R$>?+EN3VN|lLCSSQ!h%k|+*`WlaSVZvm^pa@9 z8*H=i7=YWSPUv2*TTh*!g;6qGPB#(lBEs`?g1Qe*<#gOjWbVGJ$EGbnunt7K-f$rm387V0i5ej9fjDm{<+_%YRavj)2zNqJle=#cnxf1j>UVq^H1qZoz zBWJON4V8|tt^>G8!0>iZ7~T#F(;XSyI`SOD+d%;U&RuL)Dmjhj3zAbA%!V9rr6-ii zFjsm4{-Z%E4V5YZKnq}NAxs)(L;o1o18Qbn+G_#UfdN~9U=RC!04yhI1zZ@we(_vC zfGWi!fQcI3#=#o&wZ+l=%YTO$|MIZ5AAm~n1LQLqPSNTSAb_yvI*{7H`Ti?P`m9ti zX3adU1@3GDciX9yl|cgdREx7S$?Eu2xYrvOI)42EpFR9o8Pl@@$*GK{&S*Zgi|LMx zqH}nV&W8csAjzuD^#%z`qr04LqOKc4fqa8{Ol>-6LyoMvqr_GME`O(+lv)d{2X6l_ zAjKkre{GC9j?G-(EngEi>uk0aN=V15S=y7{@n-XKwQfEQVPqh6aj)jk_@ z;JQXJG%xUBfNYbstU&fJ^@l03o$ko&TLB#ALNWsv2B@#4qFq$V2f_hTY3V& zy0T;^{~J8(k1R95NIpP<)e0200v-}wUF2I~t^-pHU>o64PM-@iYql?SR(v5w6;)JG bMMdIYEcsDaR7Nd+00000NkvXXu0mjfaMCu^ diff --git a/Resources/Textures/Structures/Wallmounts/station-map.rsi/frame3.png b/Resources/Textures/Structures/Wallmounts/station-map.rsi/frame3.png deleted file mode 100644 index de139397904f98cd3e24b8052447357b77bbb628..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1750 zcmV;{1}XW8P)Px*kV!;ARCt{2n_p;CR~*N`x6V;?G`e0J?=ZR9tTAlU!cA-UvT8e8A7p4ZWO3|C z@xh=EA_~grLm3k)!-q*6hnGz=S?jgC? zmPIrg%}Zb58~}j!9glG%rwq%oQki@A?rF*| zc>|Ejvn&ga;}8f0s4I4#fWaD6eEBZ=`ug&eCk>`VNgKfH^@8I#a2%JH9++$b5C8zw zzMVwvuSuZ2J+BPMao~AgvkqAUoa;C*)HO7jYkdyW6QlUP^Q>-6JNjD1@X$@rG!16? zBvJsF<&(hAnLOvtMqmnXx}2Du$sgrAD&oL0Fg!Gi`o>1pI%ExS_0k2@PpChr2Q@dO zh1>v$tY1H9_X)v)eu`ljL94tHs$;-~^BszL%`N++``MXsBoYbPa$0Uki(*Fd+`5(8 zp@iljNV*~MJ{E~d-&$@tk!UokyD=mh#uFX`IEOk@QKO~-NaaOB4|xi9w-9>BQw+lh zr1C7w8aBX@?L8o1 zDsvS_VJnmeV8~?}rJ|TZ(P%VJskq}JVv!gCAQp+Cb7i-bZ&vx&jj92fTlOIyk5h5S z#mx2aAmWDy0dWk-xyIvh%2vf>%4Pp@Jw>UaFBBg9O)+cO(JJ6M07t6;0L^oQCAro> zqH2KU)KmEVegPN->a$k>fk2=@x$B>A%lqxeHldhUe6>+EfEa|3p1|+-3*kpkAP$1} zw`OKzAlzmmkw8n^{#UJoDRjF*0O;%MgRP1I;KteCpW*A7Lgn8Sit++-^X$cj4fwWo z0l)khmdcRx_BVl|B0-T{KR?gU0RVcpzk@YM7byRx^aM=D4!4WMo9T-?K+~CD@2eEqRK; z%BJcqLN#53WMTnwR}!Ui$;5)@?#ybU+OXHLHC3ienKEU{lqpkYl`s^giMz*FFI_NH zsnU5Jqi2JT96xP%2inm20CD%&$Ofv`Myb|rt{i4|kxUMa5}M-b-`bq!4gXM?<6FRE;tf$WxfE@n4hi&_%Xf~INdFBXX*IM7dV90!`F z;q`h!(=<@zn-a^2&(Smuj^hv<=%-?lSb3X(1MgA@q=^+HgSl>O?JYIgH-fXLzyfDq7~o4iDnpX{^+)!_uugXmdS5 z5P&Du1*gl2;N3U{iw;#=a!^tl^``*94cOfRrhqUi@zc2ofV3`o3*9fvpIUMQQ@}yH zPrwph-UGOH)cpA$x$)hLUgj=zI?)9gVjTOWa^0k&w;=?AX}|r^_kuJTIk* z*9T)WnzF<)xiWd4mx7+*p;;@MEMeLJY6}wN0V(mUfU*~;7p5mhRb?7kF;c^j0YpX2 s{2zc4Mr78FHI@89j51})lqpI61H Date: Mon, 24 Aug 2026 22:57:55 +0000 Subject: [PATCH 013/197] Allow the baseball burger to be caught like other balls (#45622) The best feature --- .../Prototypes/Entities/Objects/Consumable/Food/burger.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/burger.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/burger.yml index ab3a1f1aff..4b440ff51a 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/burger.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/burger.yml @@ -204,7 +204,7 @@ # Tastes like bun, bacon. - type: entity - parent: FoodBurgerBase + parent: [ FoodBurgerBase, BaseSportsBall ] id: FoodBurgerBaseball name: baseball burger description: It's still warm. The steam coming off of it smells kinda sweaty. From 59897687c3c64f39d03c473f851ad269243f7274 Mon Sep 17 00:00:00 2001 From: Mariano Date: Tue, 25 Aug 2026 23:33:48 +0000 Subject: [PATCH 014/197] Resprited MMI and recolored brain cakes (#45377) * Retextured brain cakes and mmi to fit brain item * Updated meta with new author and 4 spaced indentation * Changed tabs to 4 spaces --- .../Food/Baked/cake.rsi/brain-large.png | Bin 1374 -> 997 bytes .../Food/Baked/cake.rsi/brain-slice.png | Bin 482 -> 433 bytes .../Consumable/Food/Baked/cake.rsi/brain.png | Bin 948 -> 916 bytes .../Specific/Robotics/mmi.rsi/meta.json | 158 +++++++++--------- .../Specific/Robotics/mmi.rsi/mmi_alive.png | Bin 598 -> 669 bytes .../Specific/Robotics/mmi.rsi/mmi_brain.png | Bin 555 -> 448 bytes .../Robotics/mmi.rsi/mmi_brain_alien.png | Bin 457 -> 370 bytes .../Specific/Robotics/mmi.rsi/mmi_dead.png | Bin 599 -> 672 bytes .../Specific/Robotics/mmi.rsi/mmi_icon.png | Bin 912 -> 862 bytes .../Specific/Robotics/mmi.rsi/mmi_off.png | Bin 746 -> 667 bytes 10 files changed, 79 insertions(+), 79 deletions(-) diff --git a/Resources/Textures/Objects/Consumable/Food/Baked/cake.rsi/brain-large.png b/Resources/Textures/Objects/Consumable/Food/Baked/cake.rsi/brain-large.png index e191da93bd339effb906d989ba8b457ce0eb20aa..75ba8bb40753dc24b33d00b658b3f80b26ec920d 100644 GIT binary patch delta 976 zcmV;>126pE3grioBYyw^b5ch_0Itp)=>Px&pGibPR9J=WmcMHoXB@^q3TjtHJx4zx zUvNFORH~3J9*c|N(2}8e2^72(0;L*4&>9f>15D}Q66nwr?~ zvZ+<|$aN$Y{gD35^IINerwFyQMl83=pTGQsrdK4Xe;qiME!`6$0k(IV)EfseF$LFV z$uzyf?R)nF6`oi_Zr!mW?;)$4|B3NU*ejIIG6eH>X`Oj!!-3Xxb;?Oz)LXSNS)_O-Mu4u9Q)_ezu!e$+z(=o#aQ!n$k$(e639JQz!#r>&fotWqa+o~(;@msI*^o$ zITVXgob$D+F2|Ki)0Cr0f>(dMlFs^b!#G-iU&LsV0M3Cf`bHY}%tc8m*l!&GGS^d* ztbcplMM)|WGbII3B-WqXAA#GjQD67;jWn6-sQ_>^Nl;jchip`mip0*t%;K9b$AP0b zBi(7;d-vzeS zJ`cSMLJrg$2QhJNW>$kFBHr~A5#Rj%1WDl1YM;y8vwRERg#P(D)zwnJDMwC44Oa0000F>D~({Af`BfOj`zmz>on+poTw~ zwyDhMX8y<}TM~x4)>undT(7#-Tw66u9kyiEv@u<-^-m@$AtJ)PA_AL^xzbrG7eoc& zo_o%D`vdNc>%Euwqeg%D{B?HrywCUZe4lg9`yO%U;2lOYlz&lGe**A-05FX-(QeC? zBh9thtHr+pFjTa-z)JFxHQYY`6ZcPDKmv&$?gqeN-%jSC{j_{j9mlr&TraG^n!HU(xCRuV&D386K9fb-%D%N_r6-8Kmwit zyDe817g*W%<$p0c&NiUUOF;lrtZR|C9^k5~11V`ND#0QY`p-2HCKM(u%3{)@EOP97 z$vJd@I@^07VeQ136c<=Sj!=1Ad}C}JDH}E+rbhAX(id@S8VO~4Xe=rLDN&_CYgHxT z^V6^hh1ez8ScF1fwS%~YuLOmA@T)Th{&QE1=%4hVr+QINMD1cd{TbuA<>ehq*dj!$J!fZSc5 zP+eAv{D1QyrrH*AzB)+C8%3DTUqP83!|fB5gqcjZ&o^^*%e(YtCvn%)PfJBPeJ><| zlsMkrhENoGvl4N9y&vh(2s4>{jTGju;_#0rf;&)MR!VqwYRK-USl7~D(}YDRB$VyJ zt!aKE@!F4+1EU*stG}kn=b-m~P=MoIzmxUShJTRVH5Qc+W3muqvIK~T$&mpdUbkXQ z7L*y|xxTHGijMZs0Lx;ga_N^N!*(}z@mxHH5g^ifU%mu15B8gj;d?qkDre7=kHLZK}S^`sx*km&7l44aa3K$ zBaHwNgdpy~XCNgW!vHCLZf)K2D(c)s)-PW{e0a1UfZwOMv(|}300Z-_=xC?-Wh?h< zoZLNA@5{@!eN5ZwN{k!#n7LyoZKo@7?0zA*@RqOE84hdk+ zOrqyv3sG}Z=yY6V-SQQ%N?gv2i$e?Eqlg561u~%wNTC?jEA%rm*m04*+*O zeRS41P^FGr^Z3=~)E~hCR9(Z8k%+6lndqm?xXw8Vdp?Pkd3ikaf_WVRpP1{>fPc6* z2Lw?_EG9Ej^U$wrezk{&7u4Jk7YHO1veIzt z9v(Kf1znZC9?Wy% z@kj&HoOs;Qz^&_;=ES2K2HlR;49dDsSN>`gn}lGVRLY{(b(JRtNpm181Bbp=+-$qVjN>qXGQshyw?EU zs$)`T@u>M4V^U|~sBiFVDwM{s0HI(;5+gmBju_y-ic$YBcmgo$0Dl2*^wmqdb_Zhs O0000Px$Ye_^wR9J=WlCe(0P!xv0imooL1VUV# zm^A5SF}M<*puT~N3vqGM7jR>8U~x3*qHF{Q6RB~aH*qs@F=-l&w7!6m>i{&M30&gf za=-bU^Z)0Z9}EVA!C?4jES;iH*;D;i6W0~9&9;L|6Qm3gwSPJ)O#qNG#B~KyhU}jE zb2V0V4D?$~DhCbJ%M)R@gQ(R32)iACU*h>pf~R=&>WO%DX9dp>7G_KQc=+*51u+0^bMj@ z5CnnOpi_Q?&Rq(Et`QW}CGu1lYC$g&p=EEjwYHFH^rn~Cm;t3A+zo;b&F`{1!^89Y z&ocuCgTY`h{u<7RKewOI;xqGbxIN&lmh!&fbfBnap{5e>_<#L)IhW~vHj}2c`NJdz zHs&ficq0K$rWfE12Jjd^MLHa&G6MN0kTnUynM}C9xqz)kL~1LB?QB}Nx1j)~5IwZMaC1+h1`LP^S4%g4}W5#bVSzZXDo+M#Yls8AXjL~UH6;>JP;#0EEx zBRg1&#%L`OUw^;l;S(j@zEwu#ncG|XC09U3O{PKcP6Tie+QjVY5|qMoS$L|n+Ie7`g6DSe#k3wlSXA_E+cibdo96T!Y!A-{3 zzwM9K>8}ftPx&PDw;TR9J=WmQQHgW*EkQT764`7PQ*3 zorK`SSlAqhyj%(;bS#6l?!^=Wg}|U2g!NEH*`Z~S88+yx>!k$Nz*r$rD7m!hV1YuR zu!Cm@>_G}0#x&L+icJXtPUVqZ_Jb&*Wzk(r#7-ES38A>?N zT5ClfEUqqiulnxQ;-i6JVkL33fa2-`04s%atZm-)0KU0(6(ybF+5J0AB+~#?DrMqH z9oKfqoj!|_&hYcMHvqW3SqpFoF<}9(MM+;NoCEOIHt%|uFD|lN$l^H`o>|AW9Z3$z z`@NkKo>|8*a(@^`j^#p@%NG{`JirsC2GaBo8St)u^$|_mq`F(>%=rr_=?pK+kELrt z?ssk&xqvu7`WaDfwx0aEfKL-|dCP@tAZ8dj6g|b>PKn96c_{{FV;EXJRVdSLCcv7cnn|O}JRDOxAjem8X-M>TAHmOv~vIOM^_wdX* zQ~4#?Ba?IUy!*)|0QA@6ktK*lM*9y><$F&3?q+9ZnVg&NpDN+n4o%x6p49OiOFr)$ zxNL2#bLRX7W@l#m(b@n{WClL_;ydZc?`|TQ#)m;}oqj9+Z2Y;pKzZH+nz~Xxe+WT#^aSec4qboBa zaN~ztax4k{@dTh}G_upZR*RZ~$R?~cx};R3i0pKXlp2$Q04{y_ap0M-=>LjH0omyo zwT4Pc?exWT(8e`+4Pea00vQtI?fqV+td1(riu));O@Xrgu(yzed#j_;-fxpqJ6Ii6 z5_bzSk>XmTi`7xFI;xBb@_q>iN*+0eADlX+IQ2HQMpqK}iG?_;qslYlw=l6b-kYd} zlP3qrBNh3#VSkZ;ubBj)AO5(w4mGXhIdT_>?}5s(HJ$7b2x zIg&l~(EeeV!`btF|KE2ma~26Dlu$zdT2j1!UwxktskWws{eLB^R8#xJ(wSAA6+1`- zP+L>N+tnM(P=Dt(H$J*$J0_P`;p2^KnC4ywDcgbOox73do{#=#K1Vlgl=PefojGqZWWMwC~!BBuPf-c?ay0jESX1{BhNug6rZ1R85$U z>J7tr=rN0mmwym|jL+YFh{Kgz5!N)!K6Zi|lJO8T@aEA?BrkSyfXrpZ{5|-@iy2Ec zS>U#3&fqX3L0AB2ttp6-P_?YZ&y$iN8QWd?m{YX_c}pv}$+XI?$Zt5$+tQRYAsof* zSi9bwjXy6z;e~TZb~|~srZE|kG0AtW0n(&Y*kl>+cYhxQB#F0ai9~SRnF<;060n{i zlox)uF4bf1wp~z~Uqhanj^4(buqz6}&7F9=?+^xy^YB>>!GE;@gNyR`OnLVlfF#Qp zD9VBNavhke@fa#()Bp$eR|u=4jTm~?!K3SCaS>Z$e8F4`R+1ji;hSvU~^jWaY3G>DkD(rQqt9_mTeU4dr|fWu&Cy zds8cP*Sz69B>_L4`jF->#HYutSbFj_l<^L*-keJAzc%~2>~*S@-fin=Z7}v>Ey{$3+LeL?>2)3mm?Dy zMNWiu6~Xo{1U#=SW0L7(#0*H*;~$Y|6G}8yVWuOgFc&uGY^a8TZ!ceC$j~ul7)Wx? z;(zb2o(_aGZNxFAIl(jszd*F)!c(xKv{a&iUQY*9U4^Y+CRAoXDVT{cGZ5Bw-X^2( z-ZvwTQ4Jk7XAW9|pHbp=Tg-(-(YImrr!#l#IHcsy!a(P{NT4Fg(3lbFr#`dYJ=ibw zsq5?hGXRF~gy`}1vl1iI7r-uvFW9|B@xVq#*hiPdk>O}>S3YZ{TB)Jae3WPkNrWE<^Joo%#X^;;zM z)5N|#P4b18i-QDD*B=1;m$S{@$tc6x*}@ELqYbGCK+V&p5)d{T#uzciNKfi?__aMY zBdgz{H?KZYSjnYcj+OC(v|~%a7^7mz9JGJ@Yykkc$5CE2sk~~EZL~34n89cTB;4Zw zfX;b$&{r&(2!ApWxdf?n1}Ddt2KGK3;`5jH0D$IcQ^9`lnB~{&)Tmbg0KMKtRCr+0 zCfv2Rz&#G`adghRxc~eKxW}=*b1*iO?VST+jFGBpz*QA??JcCznMebX6?ph~e(>Jw zU7%rCP%N29Bog@c{r8xOV#&njhT$9c=ijfJ8|eN$8h^Y$yY~VBu(@H3864IHwWA1K zf@;kI00r+`{t0TWEJR2q6@iNG6lI(PubT5P=nN91d00P_0>5S;~?SLb*E6 zluBp7Jx;lN!8fK+uaHbAVT@6=X2Eq`I1Udq5O|CjW0cDmpsE@Yi3C=bvcB)Rd;w=? z9bezv+;Ahv-7gtV-l$hFYB1D5kcnZ+-yT0k|U}DlF{3%STf-_Ja7qARr8$^IgzON*Zxt2-RaXNjERXEkv+nB{{OT z4)<)*>HFU2)13rJBoc{4^1nd{;e-$_uI*uCt-&u>v-WB5%YRjS*jSs^S1=b1H_RFU zps1~Ivs2L-W2$JFB^&@4W2)Jy=tXUX1At-H5S5rqY9L@fQ+?lG;C!si8ZO{`toXja z!2HJnrV$hHyfzH8hF;f&qhD>0*eEw*qg+W@Y90^lb+c2^H_o>9qIDZ*TYF}wq8|_J z^^&sG6m^b%wSV2~x-iTdJg=Q@P6*-EZ$D!DRUe<1_HV87g5@RTsZu>>0<(v zQsvY>0010X%|K#zxoR`U)Q6ipXqpDx51)$ehtM<)4}UjzV2r7|%T-&1A6iWSz^Q!z zN@?sYB_1w92!H#ojK#$_C=?3#@c!`wc=fsn0C0c*N~{y7z1MYv0s8$uJg=QiAV~s1 zAVMisqWc-XC#Fsde^wwW0boLe8h<9A{rGYs7(i-xsz6u*Kulz3=Q99cbMsRy7?{5A ynFNFc04WF&aY&;?*VDo?Gwpvq>$*fDN#Y;nlQZ|XRwK#)00006|oo$ z65pdsJNO1Ri^OQL@CD2yXer7idbR2vC1{(bbxbUld&?kkp6TSA_kDlQNzMUVNw?-oYX6^c3!PH%8V#X79ejk4}%c&y{~)AbOn8q97}kD)D3-i6m#{ zxYCPw+V%m+KIPD_OROeSmLH+*Zxagz<>$IwE`2+<6JC=5KqTOoqaz&@iUoZAKJ;7N z_RW7J@G0RNXaJ}={KrHBei;e)rG-+3LZMJ7{w^O1ITD-@+oA0T00000NkvXXu0mjf DKUK*z delta 516 zcmV+f0{i{I1FHm(F@NPrL_t(oh3%C;NLx`9#(#?DJw=D0HGxOyB9f^cf)o^V6LiR; z;vh&tT!LVSxCnJ|@6ysip%f?AE>b863JO7D`z#LY<7*FkT%xqW|P?B@HX zb06p4?>pZ)oChI7ymYiQb14%`Isjiwr!68D=cm5a)(r9D>VFy$y#rRV&c`nsL^Pdt zO^3PZny~*WKoE~lPSL)T@?6H7X&cY_#t zyY{U(5GVR7#_`Wz49`px(R3o3PG##yEvJ8ZiBBupKoPBtkjumZo%<&MINQ5i{yCv! z6&@;@7zMz#3V*!+kVT#mH+Z%n6H7YjXaXK9m&sKad7C283EW(q(KC{QM>o>Z1c2k^ zgs%g|fp{IUk+6S1MVWE`DSjT-=1 z=cmmJkRPujkO|GQYkR8q6%zBaSQpO_;8wYCMQ(?iNPT_JWB@YxJSL#;fmHC_3 zsW+g^hAN(%<;f8^gt8db1vyW4K^7kb-z6b0A-8rMRLTr>_qmD|cg)d!XypP=Ud3`%>R-_-?^yzb2>I;wXrp-{LWBqrLdIWwH0<)N_hw=M0000z$qC-<*E;GxaV*?2ysdV;bbZ+1;B=E!hQ6DwYe1lgrDM3x$5V_ zejuwS<-jaW89Y7WY!{X;#G^6cWQvsxgLpJ%mZnk-NN=t1+|05~04{bah=)EO@3;Aa ztJ5(^b delta 418 zcmV;T0bTy`0?7lAF@J+eL_t(oh3%C+PQySDgUI$$ac;;eQ5To9zZRh|H;2q1bGlO{GqK1#O#8g4qtR*oEa{c|1VdrjvWX29jfn z%@zgxPB;PNOxtE@QUgAs_Inu6U|o8f_y;@>?SyQy z*`z)12Ld~@-+AvlZ{}@)n3$NDm0yr>H$#msHud6jfOEsj4{#^I_-XL z4eiM4I`sO*2O3p!sh4YIyfE$15irK6STcL#?>`&>0QWh{izby9O|p#^rVCRTtbm03 z901ThIq1z5OMfQ9Ohg_*GL^yM{+WR@{$ogZmuqlLOp-`T*SL*x1||+R4V|4l%|^)6&3s6}Id(BvYA41CbTDd;f9o zxzjmC!>*uMGNGy}zJA*qGEppwf?Jd3gf|e}8`Uo*&(M1^`%HF@_BG>%zuS zj68yB%>n=jArv8ma=7nce)bL0H`5S8C^C^uCUt|q{#apzR={;RG%by4&BDT5mV^+> zc|TJ!l>zrTx&JpxTj2f9RVBr5)e|0qU%((^b delta 561 zcmV-10?z%Q1=j?SF@F(BL_t(oh3%9-XxmT_#y^=3mKU|Fw?d&qp_9pA$Pl_DaXXZB zODGgdCwGg{Qpi$+pdsMeQ!oUajw%@(J3|N|6f_tO#^9~crSTMSHRRo!{5m*iWLc`C zt;73m@6X-$-My0ljYgxWx=lJ_5jY>-{$=C2_}2Cl{rcnHS&h(thQ(pSXtzf?%$ju}{EV2)`FsL_{VL znd9;JQ8!)z2UO>QLBrj z>H#2jxGc+3uitz?p|FB{K96^Aryszx=S2Y1r-_T>X&(-}SplQb2)^G-XCTf5fSHjX z2#o0G6yD>imx=$=K-2_)IU|1_KbgDx@Yl~dVE{|Tml_D00I*Px&7)eAyR9J=Wm0d_vVHn4Mi$0`+Ln@K0 zz?42T(TX+5vd|iaN~9RlMPaavZZaw$A9F-2A&31V%ct46p7`FNnTyo1c2A-V|QCV)BSUaa&HY0RD$fPI?5)X zpj^Uh^%1iN#Ouk|Da)ZtK$0W@VBTQna%(&Hx^4n+xqKNrUPYLQDpBn`3+HYlln~S5 zAp0gpS@UC*-sgF9_O0#Eg^(2)0994zk(pNlNs@%k?tj$Q{ci^VkQJG+>=U@ZmEg7d zC}>$nxak7^4?%{9-xCQd1eGA4zx*VYaBON^i(|7pwS%QqAco?yN+w3;2=sQm)RZ`| zD$Msw5c%~Jfae1rG@s!9dT=`c2m~Uj!s{y#j~?$`WJR7k{nR)c59~r#WOB~mVr$`Q zw&Z6~Rew>$mi#R8T03|U{))+D))edU-le##G9`hO3hXQ`*WLqx2p+Eko85`gXoTkb zWC1FW9ksF9om{_WP4Igc9{hU(VxRbRaMn6 zF)~1N^;OIp%-U@pA05(?#q5%w_*i<-Rlx6;F@KrNbi4XEbGk;Ts%nV#vnVdBL{?-` z-`JAi<8eDga+^t#B)VOFghCKpS+3ZgIep$B!CX+d#OITq1E{Q-oLdi&%FoO&-NX8%93}%F` SpG36)0000U1$?o7>1veWRhrg3~g;mT0|)Iuhc@LE0ySl zDE>e}*W%TRB6{IUm69T;>y2jVf-LxhNG($6NDWopa`!^S)H z`CEvOoIZnKv%?9m{L7`Q2v!>ws}1(n%0`8ljSz49aW|IxfAG)6CIIryR>nd>!cDCJ z)Hq65edaVAIXGt_rn!(;{jdhtU|3xnDJ#NJP)M)8ll6OQ5v(=@tBnsg@2N4R4M+L? zgg2vzoVk!|iGLN$d)Nnn+|k90fj-7U!Ot0O-v~fB6lC8qFWMe4RD#2W%jFtJ34F<1 zOP&nZV3-kL9`Jhj8F?G3;ENkIjuHSll@n@By~S7)ilQiMH+y^BLsVV{cb}7p z8TE(A*?(0^w62^tn?(R#{ngKss*2C={k)9f1~)moN-8)-VJ8-S`@t z2?To53y>tq)OM#yogZ-IBcAW$W7`nUt;H;ujNz=@MDe<6q>DePanFC0hYV3IN-=vkH}5L7!QW=csvk^eXV&UhR5S!JQyZ7 z5#vhBBbEGGYe&lLQ+|p?QIvP?K7`x77N^t6{=M4)SXEICK;_^|-A$;Bm2MyC?^Y8S z9djKe5a=-`U^WqeDnybbQ}S`rt|?h(BF}gkX+;1!A(HQ%KKA4y9kJ3&>B#4F8!94z z8A8sTI}3ouksF36igI%8jXcjHi!5ft|Moke9Mssw Q9smFU07*qoM6N<$f|V_`-v9sr diff --git a/Resources/Textures/Objects/Specific/Robotics/mmi.rsi/mmi_off.png b/Resources/Textures/Objects/Specific/Robotics/mmi.rsi/mmi_off.png index b5d0ebcf25bb7540d3b583e40b683eca044a50c3..9ac9223c771d3f929edf10666a569b3c18822948 100644 GIT binary patch delta 629 zcmV-*0*d|W1)BwsF@IG_L_t(oh3%C=YZ^fm$Nw98pKA~bJw-4@Dab-YFCxoAA_b}F zscC{Dy-5irf{o`)tiiOJeF41b;#isM=#(z4{L5fT^DY0PZ7*cqL==Ew1e%_2wyxYrE+8I*=D-1VRy9 zU$&=7jKdhC_a8nHV~m=^Hsz9KY7W~pY8TJZG3i|{S+?2d>VT-KmFZ$RxPn4HgHlC< z&*wv}-W>BURWuax87v1^EZfDeA5#mSnn1tT!OpV|0DoXZ-A2FHK_UOQ^+KrM>x`|N zm9dXdAS&dXOPq7*`m&7;bsO@c49>YEgoK#zbB@tiZn$>9G!2BqGHUfEHrH2)b1t3z zJd*%WAQXXdYfwCqwXJFBRT6>%#u(M=O$-JDn5N;Hfa|5f7^8S1i*Q(m&*#JD`l{`H zJdwrC&2E*=wzTvR4ZUi!jfyw)Dx3*U>;UInYUou0V0B`Yy}hFAK0E#H5}%lWTN1M{ z7z}LlyTmbR3r2CC-BLw^X&SCu5Dv?>Qz8nP7Ju#^$D})bRzVLB4<~;BZ8u3!JgKq0 P00000NkvXXu0mjfo@*{} delta 709 zcmV;$0y_Ph1?mNmF@K~bb68;$pUX2QzJB);6h&a21 z38Et8p-We3hYBx^cJQJ|kq85KsKdgG?jj;W3=|_BEC>?Hg9+P;xp(ioY1^-Zd&k`C z5)qPM-`o59^L#(w=Xv1=WtCM{S!G>7vMdW(mc^x+Gb6+s+JFB&gl^vB92Py!;R``j zoL0QBm_NDHza&R-OLjQh%wsrvk{bEZm+s0PLN;!m~By(lpJa7u3(0s?Eqx z%{Uz0I2_$Pk-uW9HlHvD&@|2D*_v|MJ9`Cy+cQTogrNh4(p1f)s%o_mSxH}OXlxOK z84UnMQBV{GfPcY^MnhvuzPJ!sNmbQqO+5}!N(O+<%?;e1Il`eJ%dWMFl$NSWX{o9{ zsVm@%`bVq-9b|@VIe-L;k^mqxWWzepfiLPG>65ww`n_e>+C(@M#O;}5b92K0aHa4g z9*;{4{#jwQ9vj%ceB|Zb&r|z9zDtYQmA==HU-@oa{eO*SuBBtto=<;!)P`iPrR`^u zchBGY7PBkA?o~M6>)i_H>M!_biO1toq35Y1(7WJGr}M3y8Jk{gmyW2cuVXtF;hN=o zegw^yR<>giD(mZLmyVbjn_kq-z3Ftx^rr&kx&VN8K9Gkv*g0ffWY~!8(`;!asU(QS zqQqiRl7C8qW=ks@k$u)hhJ&3$baU@~pk#W(2#UL4wc7B`2Y5K@giw$+>;Qb*+NGwZ zj_pq$0Jy~+B8lDH%`D+ikZ>-*-riox^Z*7TU9v2T`wt#rwc2QEY63V00orcb35S9w z&KIufsde*G>Hi8)3;`HGidAR~oN0b0Kp_NR06v+Vd;!4t_%nksl%D&!0CWfd9Yp_0 ri&eaTmif7L*7JL*&vRL2{kQr9oCH(ob00000NkvXXu0mjfdsSQh From ba446feb275c5f3b392880242754dc70c67fea6a Mon Sep 17 00:00:00 2001 From: Connor Huffine Date: Wed, 26 Aug 2026 17:52:03 +0000 Subject: [PATCH 015/197] Put parens back on generated name modifiers (#45669) Return parens --- Resources/Locale/en-US/name-identifier.ftl | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Resources/Locale/en-US/name-identifier.ftl b/Resources/Locale/en-US/name-identifier.ftl index 847fe84a70..ab2966a587 100644 --- a/Resources/Locale/en-US/name-identifier.ftl +++ b/Resources/Locale/en-US/name-identifier.ftl @@ -1,10 +1,10 @@ -name-identifier-format-monkey = MK-{$number} -name-identifier-format-kobold = KB-{$number} -name-identifier-format-holoparasite = HOLO-{$number} -name-identifier-format-mmi = MMI-{$number} -name-identifier-format-positronic-brain = PB-{$number} -name-identifier-format-silicon = Si-{$number} -name-identifier-format-xenoborg = Xi-{$number} -name-identifier-format-station-ai = AI-{$number} -name-identifier-format-telepad = TELE-{$number} +name-identifier-format-monkey = (MK-{$number}) +name-identifier-format-kobold = (KB-{$number}) +name-identifier-format-holoparasite = (HOLO-{$number}) +name-identifier-format-mmi = (MMI-{$number}) +name-identifier-format-positronic-brain = (PB-{$number}) +name-identifier-format-silicon = (Si-{$number}) +name-identifier-format-xenoborg = (Xi-{$number}) +name-identifier-format-station-ai = (AI-{$number}) +name-identifier-format-telepad = (TELE-{$number}) name-identifier-format-parens = ({$number}) From 24996fcbd343d83401963cbb70f98fd051d78462 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D0=BE=D0=BB=D1=83=D0=B1=D1=8C?= <124601871+Golubgik@users.noreply.github.com> Date: Wed, 26 Aug 2026 18:34:27 +0000 Subject: [PATCH 016/197] changeling store update (#45674) * ` * ups * ups2 * Update changeling.yml --- Content.Server/Store/Systems/StoreSystem.cs | 2 +- Content.Shared/Store/Components/StoreComponent.cs | 7 +++++++ Resources/Prototypes/Roles/Antags/changeling.yml | 1 + Resources/Prototypes/Store/presets.yml | 1 + 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Content.Server/Store/Systems/StoreSystem.cs b/Content.Server/Store/Systems/StoreSystem.cs index b8e92f10bf..3ffaff8b33 100644 --- a/Content.Server/Store/Systems/StoreSystem.cs +++ b/Content.Server/Store/Systems/StoreSystem.cs @@ -33,7 +33,7 @@ public sealed partial class StoreSystem : SharedStoreSystem // Add the bui key if it does not exist already (the check is needed to make sure that we don't overwrite existing InterfaceData). if (!UI.HasUi(uid, StoreUiKey.Key)) - UI.SetUi(uid, StoreUiKey.Key, new InterfaceData("StoreBoundUserInterface")); + UI.SetUi(uid, StoreUiKey.Key, new InterfaceData("StoreBoundUserInterface", requireInputValidation: component.InputValidation)); } private void OnStartup(EntityUid uid, StoreComponent component, ComponentStartup args) diff --git a/Content.Shared/Store/Components/StoreComponent.cs b/Content.Shared/Store/Components/StoreComponent.cs index 0d5b1952a5..7bf92c47ef 100644 --- a/Content.Shared/Store/Components/StoreComponent.cs +++ b/Content.Shared/Store/Components/StoreComponent.cs @@ -94,6 +94,13 @@ public sealed partial class StoreComponent : Component [DataField] public EntityUid? StartingMap; + /// + /// Whether the UI added to the store should require input validation. + /// Does nothing if the store UI is added seperately via + /// + [DataField] + public bool InputValidation = true; + #region audio /// /// The sound played to the buyer when a purchase is succesfully made. diff --git a/Resources/Prototypes/Roles/Antags/changeling.yml b/Resources/Prototypes/Roles/Antags/changeling.yml index 1a64b16429..e2a6c14e40 100644 --- a/Resources/Prototypes/Roles/Antags/changeling.yml +++ b/Resources/Prototypes/Roles/Antags/changeling.yml @@ -46,5 +46,6 @@ - ChangelingDNA balance: ChangelingDNA: 60 + inputValidation: false mindRoles: - MindRoleChangeling diff --git a/Resources/Prototypes/Store/presets.yml b/Resources/Prototypes/Store/presets.yml index 4744124012..722926a1ed 100644 --- a/Resources/Prototypes/Store/presets.yml +++ b/Resources/Prototypes/Store/presets.yml @@ -53,6 +53,7 @@ - ChangelingStoreUtility currencyWhitelist: - ChangelingDNA + inputValidation: false - type: entity parent: StorePresetUplink From 440449db650c8eaf21d8545de5c5dbb8fb409d4a Mon Sep 17 00:00:00 2001 From: Jane-Clay Date: Thu, 27 Aug 2026 08:56:43 +0000 Subject: [PATCH 017/197] Hushpup Spread Tweak (#45667) hushpup spread tweak --- .../Entities/Objects/Weapons/Guns/Shotguns/shotguns.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Shotguns/shotguns.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Shotguns/shotguns.yml index 0b74a46cf0..91a6943352 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Shotguns/shotguns.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Shotguns/shotguns.yml @@ -326,4 +326,4 @@ rolloffFactor: 1.3 fireRate: 2 - type: GunSpreadModifier - spread: 1.2 + spread: 0.8 From 637dcb18ad9ea97b62f1d3f016333fc6ad061e15 Mon Sep 17 00:00:00 2001 From: eoineoineoin Date: Thu, 27 Aug 2026 15:02:56 +0000 Subject: [PATCH 018/197] Fix bug where utility knife loses tool qualities (#45570) * Fix added ToolComponent being stomped on by net sync * Whitespace * Dirty tool component * One free bugfix with another non-dirtied component --- Content.Shared/Tools/Components/ToolComponent.cs | 12 ++++++------ .../Tools/Systems/SharedToolSystem.MultipleTool.cs | 2 ++ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/Content.Shared/Tools/Components/ToolComponent.cs b/Content.Shared/Tools/Components/ToolComponent.cs index be273c8c05..88733da017 100644 --- a/Content.Shared/Tools/Components/ToolComponent.cs +++ b/Content.Shared/Tools/Components/ToolComponent.cs @@ -5,20 +5,20 @@ using Robust.Shared.Prototypes; namespace Content.Shared.Tools.Components; -[RegisterComponent, NetworkedComponent] +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] [Access(typeof(SharedToolSystem))] public sealed partial class ToolComponent : Component { - [DataField] - public HashSet> Qualities = []; + [DataField, AutoNetworkedField] + public HashSet> Qualities = []; /// - /// For tool interactions that have a delay before action this will modify the rate, time to wait is divided by this value + /// For tool interactions that have a delay before action this will modify the rate, time to wait is divided by this value /// - [DataField] + [DataField, AutoNetworkedField] public float SpeedModifier = 1f; - [DataField] + [DataField, AutoNetworkedField] public SoundSpecifier? UseSound; } diff --git a/Content.Shared/Tools/Systems/SharedToolSystem.MultipleTool.cs b/Content.Shared/Tools/Systems/SharedToolSystem.MultipleTool.cs index 73bb348588..a00c02bddd 100644 --- a/Content.Shared/Tools/Systems/SharedToolSystem.MultipleTool.cs +++ b/Content.Shared/Tools/Systems/SharedToolSystem.MultipleTool.cs @@ -68,11 +68,13 @@ public abstract partial class SharedToolSystem var current = multiple.Entries[multiple.CurrentEntry]; tool.UseSound = current.UseSound; tool.Qualities = current.Behavior; + Dirty(uid, tool); // TODO: Replace this with a better solution later if (TryComp(uid, out var pryComp)) { pryComp.Enabled = current.Behavior.Contains("Prying"); + Dirty(uid, pryComp); } if (playSound && current.ChangeSound != null) From 17c2f5f42e492e9c41dc97391bf1ba418678464c Mon Sep 17 00:00:00 2001 From: JiyuSoftware Date: Thu, 27 Aug 2026 21:48:30 +0000 Subject: [PATCH 019/197] Sushi Station minor fixes (#45695) --- Resources/Maps/Shuttles/emergency_sushi.yml | 134 +-- Resources/Maps/sushi.yml | 939 ++++++++++---------- 2 files changed, 540 insertions(+), 533 deletions(-) diff --git a/Resources/Maps/Shuttles/emergency_sushi.yml b/Resources/Maps/Shuttles/emergency_sushi.yml index d8cdffa2a2..aaf7639ec0 100644 --- a/Resources/Maps/Shuttles/emergency_sushi.yml +++ b/Resources/Maps/Shuttles/emergency_sushi.yml @@ -4,8 +4,8 @@ meta: engineVersion: 289.0.0 forkId: "" forkVersion: "" - time: 08/23/2026 14:55:13 - entityCount: 1415 + time: 08/27/2026 21:07:06 + entityCount: 1407 maps: [] grids: - 1 @@ -66,7 +66,7 @@ entities: version: 7 -1,1: ind: -1,1 - tiles: AAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABgAAAAAAAAYAAAAAAAAEAAAAAAAACgAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAYAAAAAAAAGAAAAAAAABAAAAAAAAAoAAAAAAAALAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== + tiles: AAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABgAAAAAAAAYAAAAAAAAEAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAYAAAAAAAAGAAAAAAAABAAAAAAAAAsAAAAAAAALAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== version: 7 -2,1: ind: -2,1 @@ -86,11 +86,11 @@ entities: version: 7 -2,-1: ind: -2,-1 - tiles: AQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== + tiles: AQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAA== version: 7 -2,0: ind: -2,0 - tiles: AQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== + tiles: AQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== version: 7 - type: Broadphase - type: Physics @@ -400,11 +400,6 @@ entities: parent: 1 rot: -1.5707963267948966 rad pos: -7.5,-16.5 - - uid: 21 - components: - - type: Transform - parent: 1 - pos: -2.5,-12.5 - uid: 22 components: - type: Transform @@ -441,6 +436,12 @@ entities: parent: 1 rot: -1.5707963267948966 rad pos: -3.5,1.5 + - uid: 330 + components: + - type: Transform + parent: 1 + rot: 3.141592653589793 rad + pos: -6.5,-19.5 - proto: Ashtray entities: - uid: 28 @@ -896,11 +897,6 @@ entities: - type: Transform parent: 1 pos: -12.5,8.5 - - uid: 114 - components: - - type: Transform - parent: 1 - pos: -2.5,-12.5 - uid: 115 components: - type: Transform @@ -1653,6 +1649,11 @@ entities: pos: -0.5,18.5 - proto: CableHV entities: + - uid: 21 + components: + - type: Transform + parent: 1 + pos: -3.5,-14.5 - uid: 265 components: - type: Transform @@ -1698,11 +1699,6 @@ entities: - type: Transform parent: 1 pos: -4.5,-14.5 - - uid: 274 - components: - - type: Transform - parent: 1 - pos: -3.5,-14.5 - uid: 275 components: - type: Transform @@ -1970,46 +1966,11 @@ entities: - type: Transform parent: 1 pos: -4.5,-18.5 - - uid: 328 - components: - - type: Transform - parent: 1 - pos: -4.5,-17.5 - - uid: 329 - components: - - type: Transform - parent: 1 - pos: -4.5,-16.5 - - uid: 330 - components: - - type: Transform - parent: 1 - pos: -4.5,-15.5 - - uid: 331 - components: - - type: Transform - parent: 1 - pos: -4.5,-13.5 - uid: 332 components: - type: Transform parent: 1 - pos: -4.5,-14.5 - - uid: 333 - components: - - type: Transform - parent: 1 - pos: -3.5,-13.5 - - uid: 334 - components: - - type: Transform - parent: 1 - pos: -2.5,-13.5 - - uid: 335 - components: - - type: Transform - parent: 1 - pos: -2.5,-12.5 + pos: -6.5,-19.5 - uid: 336 components: - type: Transform @@ -5598,13 +5559,6 @@ entities: pos: -14.5,2.5 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 828 - components: - - type: Transform - parent: 1 - pos: -14.5,3.5 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 829 components: - type: Transform @@ -5810,6 +5764,14 @@ entities: color: '#0055CCFF' - proto: GasPipeTJunction entities: + - uid: 274 + components: + - type: Transform + parent: 1 + rot: -1.5707963267948966 rad + pos: -14.5,3.5 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 858 components: - type: Transform @@ -5931,6 +5893,14 @@ entities: color: '#0055CCFF' - proto: GasVentPump entities: + - uid: 329 + components: + - type: Transform + parent: 1 + rot: 1.5707963267948966 rad + pos: -15.5,3.5 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 873 components: - type: Transform @@ -6291,11 +6261,6 @@ entities: - type: Transform parent: 1 pos: -15.5,-13.5 - - uid: 935 - components: - - type: Transform - parent: 1 - pos: -15.5,-12.5 - uid: 936 components: - type: Transform @@ -6683,6 +6648,17 @@ entities: pos: -8.5,-6.5 - proto: Poweredlight entities: + - uid: 114 + components: + - type: Transform + parent: 1 + pos: -2.5,-13.5 + - uid: 331 + components: + - type: Transform + parent: 1 + rot: 1.5707963267948966 rad + pos: -14.5,-12.5 - uid: 525 components: - type: Transform @@ -6711,24 +6687,12 @@ entities: parent: 1 rot: 3.141592653589793 rad pos: -15.5,-5.5 - - uid: 996 - components: - - type: Transform - parent: 1 - rot: -1.5707963267948966 rad - pos: -2.5,-14.5 - uid: 997 components: - type: Transform parent: 1 rot: -1.5707963267948966 rad pos: -0.5,-4.5 - - uid: 998 - components: - - type: Transform - parent: 1 - rot: -1.5707963267948966 rad - pos: -13.5,-12.5 - uid: 999 components: - type: Transform @@ -7318,11 +7282,6 @@ entities: - type: Transform parent: 1 pos: -15.5,-13.5 - - uid: 1104 - components: - - type: Transform - parent: 1 - pos: -15.5,-12.5 - uid: 1105 components: - type: Transform @@ -8821,6 +8780,11 @@ entities: - type: Transform parent: 1 pos: 0.5,8.5 + - uid: 328 + components: + - type: Transform + parent: 1 + pos: -15.5,-12.5 - uid: 896 components: - type: Transform diff --git a/Resources/Maps/sushi.yml b/Resources/Maps/sushi.yml index adbb07bb8a..a842ea77db 100644 --- a/Resources/Maps/sushi.yml +++ b/Resources/Maps/sushi.yml @@ -4,19 +4,14 @@ meta: engineVersion: 289.0.0 forkId: "" forkVersion: "" - time: 08/23/2026 14:49:52 - entityCount: 25215 + time: 08/27/2026 20:54:37 + entityCount: 25220 maps: - 1 grids: - 2 orphans: [] nullspace: -- 25160 -- 25161 -- 25162 -- 25163 -- 25164 - 25165 - 25166 - 25167 @@ -68,6 +63,11 @@ nullspace: - 25213 - 25214 - 25215 +- 25216 +- 25217 +- 25218 +- 25219 +- 25220 tilemap: 0: Space 18: FloorArcadeBlue @@ -265,7 +265,7 @@ entities: version: 7 4,5: ind: 4,5 - tiles: AQAAAAAAACIAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAiAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAIgAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAACIAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAABsAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAbAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAABsAAAAAAAABAAAAAAAAJgAAAAAAACYAAAAAAAABAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAABsAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAAbAAAAAAAAAQAAAAAAACYAAAAAAAAmAAAAAAAAAQAAAAAAAAQAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAbAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAGwAAAAAAAAEAAAAAAAAmAAAAAAAAJgAAAAAAAAEAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABsAAAAAAAAGAAAAAAAAGwAAAAAAABsAAAAAAAANAAAAAAAADQAAAAAAABsAAAAAAAABAAAAAAAAJgAAAAAAACYAAAAAAAABAAAAAAAABAAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAACYAAAAAAAAmAAAAAAAAAQAAAAAAAAQAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAmAAAAAAAAJgAAAAAAAAEAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAHAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== + tiles: AQAAAAAAACIAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAiAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAIgAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAACIAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAABsAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAbAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAABsAAAAAAAABAAAAAAAAJgAAAAAAACYAAAAAAAABAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAABsAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAAbAAAAAAAAAQAAAAAAACYAAAAAAAAmAAAAAAAAAQAAAAAAAAQAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAbAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAGwAAAAAAAAEAAAAAAAAmAAAAAAAAJgAAAAAAAAEAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABsAAAAAAAAGAAAAAAAAGwAAAAAAABsAAAAAAAANAAAAAAAADQAAAAAAABsAAAAAAAABAAAAAAAAJgAAAAAAACYAAAAAAAABAAAAAAAABAAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAACYAAAAAAAAmAAAAAAAAAQAAAAAAAAQAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAmAAAAAAAAJgAAAAAAAAEAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAHAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== version: 7 4,6: ind: 4,6 @@ -289,7 +289,7 @@ entities: version: 7 5,3: ind: 5,3 - tiles: DAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAGwAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAAwAAAAAAAAiAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAMAAAAAAAAIgAAAAAAABsAAAAAAAAiAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAIgAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAIgAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAACIAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAiAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAIgAAAAAAAAwAAAAAAAAMAAAAAAAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAIAAAAAAAAAAAAAAAAAAAAUAAAAAAIAGwAAAAAAABsAAAAAAAAMAAAAAAAADAAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAACABQAAAAAAAAbAAAAAAAADAAAAAAAAAwAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAAwAAAAAAAAMAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAMAAAAAAAADAAAAAAAABsAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAADAAAAAAAAAwAAAAAAAAbAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAAwAAAAAAAAMAAAAAAAAGwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAIAAAAAAAACAAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAMAAAAAAAADAAAAAAAABsAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACAAAAAAAAAgAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAADAAAAAAAAAwAAAAAAAAbAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAAwAAAAAAAAMAAAAAAAAGwAAAAAAAA== + tiles: DAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAGwAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAAwAAAAAAAAiAAAAAAAAIgAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAMAAAAAAAAIgAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAIgAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAIgAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAACIAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAiAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAIgAAAAAAAAwAAAAAAAAMAAAAAAAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAIAAAAAAAAAAAAAAAAAAAAUAAAAAAIAGwAAAAAAABsAAAAAAAAMAAAAAAAADAAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAACABQAAAAAAAAbAAAAAAAADAAAAAAAAAwAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAAwAAAAAAAAMAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAMAAAAAAAADAAAAAAAABsAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAADAAAAAAAAAwAAAAAAAAbAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAAwAAAAAAAAMAAAAAAAAGwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAIAAAAAAAACAAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAMAAAAAAAADAAAAAAAABsAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACAAAAAAAAAgAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAADAAAAAAAAAwAAAAAAAAbAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAAwAAAAAAAAMAAAAAAAAGwAAAAAAAA== version: 7 5,4: ind: 5,4 @@ -2873,11 +2873,6 @@ entities: - type: GridSplitNode - type: ChunkContainer chunkEntities: - - 25160 - - 25161 - - 25162 - - 25163 - - 25164 - 25165 - 25166 - 25167 @@ -2929,6 +2924,11 @@ entities: - 25213 - 25214 - 25215 + - 25216 + - 25217 + - 25218 + - 25219 + - 25220 - proto: AcousticGuitarInstrument entities: - uid: 3 @@ -4744,7 +4744,7 @@ entities: - 15120 - 15294 - 11579 - - 11580 + - 240 - uid: 104 components: - type: MetaData @@ -5941,11 +5941,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 110.5,26.5 - - uid: 240 - components: - - type: Transform - parent: 2 - pos: 83.5,50.5 - uid: 241 components: - type: Transform @@ -6006,6 +6001,12 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 106.5,125.5 + - uid: 20414 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 82.5,49.5 - proto: AirlockEVAGlassLocked entities: - uid: 251 @@ -9648,30 +9649,6 @@ entities: - type: Transform parent: 2 pos: 124.5,82.5 -- proto: AlwaysPoweredLightLED - entities: - - uid: 734 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 81.5,49.5 - - uid: 735 - components: - - type: Transform - parent: 2 - pos: 74.5,47.5 - - uid: 736 - components: - - type: Transform - parent: 2 - pos: 81.5,47.5 - - uid: 737 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 74.5,49.5 - proto: AlwaysPoweredlightPink entities: - uid: 738 @@ -9718,6 +9695,22 @@ entities: pos: 127.369,75.844246 - proto: APCBasic entities: + - uid: 658 + components: + - type: MetaData + name: APC S.A.S.H.I.M.I. Engineering + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 62.5,50.5 + - uid: 737 + components: + - type: MetaData + name: APC S.A.S.H.I.M.I. Medical + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 92.5,50.5 - uid: 745 components: - type: MetaData @@ -10158,22 +10151,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 39.5,107.5 - - uid: 800 - components: - - type: MetaData - name: APC S.A.S.H.I.M.I. Engineering - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 63.5,50.5 - - uid: 801 - components: - - type: MetaData - name: APC S.A.S.H.I.M.I. Medical - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 92.5,50.5 - uid: 802 components: - type: MetaData @@ -10182,14 +10159,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 59.5,64.5 - - uid: 803 - components: - - type: MetaData - name: APC S.A.S.H.I.M.I. Entrance - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 73.5,50.5 - uid: 804 components: - type: MetaData @@ -10226,13 +10195,6 @@ entities: - type: AccessReader accessListsOriginal: - - Engineering - - uid: 808 - components: - - type: MetaData - name: APC Salvage Maints - - type: Transform - parent: 2 - pos: 93.5,47.5 - uid: 809 components: - type: MetaData @@ -10457,6 +10419,21 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 56.5,79.5 + - uid: 19603 + components: + - type: MetaData + name: APC S.A.S.H.I.M.I. Entrance + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 73.5,49.5 + - uid: 24194 + components: + - type: MetaData + name: APC Salvage Maints + - type: Transform + parent: 2 + pos: 92.5,47.5 - proto: APCElectronics entities: - uid: 832 @@ -13870,6 +13847,12 @@ entities: pos: 73.5,84.5 - proto: ButtonFrameCaution entities: + - uid: 808 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 107.5,29.5 - uid: 1164 components: - type: Transform @@ -14046,12 +14029,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 107.5,37.5 - - uid: 1197 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 112.5,28.5 - uid: 1198 components: - type: Transform @@ -14134,11 +14111,26 @@ entities: - type: Transform parent: 2 pos: 116.5,103.5 + - uid: 800 + components: + - type: Transform + parent: 2 + pos: 62.5,51.5 + - uid: 801 + components: + - type: Transform + parent: 2 + pos: 62.5,50.5 - uid: 839 components: - type: Transform parent: 2 pos: 84.5,118.5 + - uid: 1197 + components: + - type: Transform + parent: 2 + pos: 56.5,51.5 - uid: 1201 components: - type: Transform @@ -23548,7 +23540,7 @@ entities: components: - type: Transform parent: 2 - pos: 56.5,50.5 + pos: 74.5,50.5 - uid: 3102 components: - type: Transform @@ -24013,12 +24005,7 @@ entities: components: - type: Transform parent: 2 - pos: 73.5,50.5 - - uid: 3213 - components: - - type: Transform - parent: 2 - pos: 73.5,51.5 + pos: 75.5,50.5 - uid: 3214 components: - type: Transform @@ -24204,26 +24191,11 @@ entities: - type: Transform parent: 2 pos: 63.5,52.5 - - uid: 3251 - components: - - type: Transform - parent: 2 - pos: 63.5,51.5 - - uid: 3252 - components: - - type: Transform - parent: 2 - pos: 63.5,50.5 - uid: 3253 components: - type: Transform parent: 2 pos: 62.5,52.5 - - uid: 3254 - components: - - type: Transform - parent: 2 - pos: 61.5,52.5 - uid: 3255 components: - type: Transform @@ -24233,17 +24205,17 @@ entities: components: - type: Transform parent: 2 - pos: 61.5,50.5 + pos: 60.5,51.5 - uid: 3257 components: - type: Transform parent: 2 - pos: 60.5,50.5 + pos: 57.5,51.5 - uid: 3258 components: - type: Transform parent: 2 - pos: 57.5,50.5 + pos: 53.5,51.5 - uid: 3259 components: - type: Transform @@ -24454,11 +24426,6 @@ entities: - type: Transform parent: 2 pos: 97.5,50.5 - - uid: 3301 - components: - - type: Transform - parent: 2 - pos: 58.5,50.5 - uid: 3302 components: - type: Transform @@ -24916,11 +24883,6 @@ entities: - type: Transform parent: 2 pos: 93.5,46.5 - - uid: 3393 - components: - - type: Transform - parent: 2 - pos: 93.5,47.5 - uid: 3394 components: - type: Transform @@ -29836,6 +29798,11 @@ entities: - type: Transform parent: 2 pos: 56.5,80.5 + - uid: 6619 + components: + - type: Transform + parent: 2 + pos: 74.5,49.5 - uid: 6856 components: - type: Transform @@ -29901,6 +29868,11 @@ entities: - type: Transform parent: 2 pos: 87.5,87.5 + - uid: 11396 + components: + - type: Transform + parent: 2 + pos: 73.5,49.5 - uid: 11475 components: - type: Transform @@ -30026,6 +29998,11 @@ entities: - type: Transform parent: 2 pos: 19.5,35.5 + - uid: 19563 + components: + - type: Transform + parent: 2 + pos: 92.5,47.5 - uid: 19668 components: - type: Transform @@ -35837,6 +35814,16 @@ entities: pos: 20.54134,70.29931 - proto: CableMV entities: + - uid: 734 + components: + - type: Transform + parent: 2 + pos: 74.5,50.5 + - uid: 735 + components: + - type: Transform + parent: 2 + pos: 74.5,49.5 - uid: 753 components: - type: Transform @@ -35847,6 +35834,11 @@ entities: - type: Transform parent: 2 pos: 52.5,27.5 + - uid: 803 + components: + - type: Transform + parent: 2 + pos: 92.5,47.5 - uid: 2016 components: - type: Transform @@ -41132,11 +41124,6 @@ entities: - type: Transform parent: 2 pos: 83.5,49.5 - - uid: 6571 - components: - - type: Transform - parent: 2 - pos: 83.5,50.5 - uid: 6572 components: - type: Transform @@ -41372,11 +41359,6 @@ entities: - type: Transform parent: 2 pos: 63.5,51.5 - - uid: 6619 - components: - - type: Transform - parent: 2 - pos: 63.5,50.5 - uid: 6620 components: - type: Transform @@ -41456,7 +41438,7 @@ entities: components: - type: Transform parent: 2 - pos: 73.5,50.5 + pos: 81.5,50.5 - uid: 6636 components: - type: Transform @@ -41697,11 +41679,6 @@ entities: - type: Transform parent: 2 pos: 93.5,46.5 - - uid: 6684 - components: - - type: Transform - parent: 2 - pos: 93.5,47.5 - uid: 6685 components: - type: Transform @@ -42812,6 +42789,11 @@ entities: - type: Transform parent: 2 pos: 90.5,83.5 + - uid: 16214 + components: + - type: Transform + parent: 2 + pos: 81.5,49.5 - uid: 16904 components: - type: Transform @@ -42822,6 +42804,11 @@ entities: - type: Transform parent: 2 pos: 52.5,24.5 + - uid: 18050 + components: + - type: Transform + parent: 2 + pos: 73.5,49.5 - uid: 18104 components: - type: Transform @@ -42857,6 +42844,11 @@ entities: - type: Transform parent: 2 pos: 88.5,88.5 + - uid: 21527 + components: + - type: Transform + parent: 2 + pos: 82.5,49.5 - uid: 23988 components: - type: Transform @@ -42912,6 +42904,11 @@ entities: - type: Transform parent: 2 pos: 88.5,86.5 + - uid: 25163 + components: + - type: Transform + parent: 2 + pos: 62.5,50.5 - proto: CableMVStack10 entities: - uid: 6902 @@ -45206,6 +45203,29 @@ entities: - type: Transform parent: 2 pos: 83.5,118.5 + - uid: 3213 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 92.5,46.5 + - uid: 3251 + components: + - type: Transform + parent: 2 + pos: 133.5,60.5 + - uid: 3252 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 96.5,46.5 + - uid: 3254 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 95.5,46.5 - uid: 4293 components: - type: Transform @@ -45222,6 +45242,11 @@ entities: - type: Transform parent: 2 pos: 122.5,104.5 + - uid: 6571 + components: + - type: Transform + parent: 2 + pos: 133.5,63.5 - uid: 6881 components: - type: Transform @@ -53804,7 +53829,7 @@ entities: pos: 66.612854,88.45277 - proto: ChunkEntity entities: - - uid: 25160 + - uid: 25165 components: - type: ChunkEntity root: 2 @@ -53900,7 +53925,7 @@ entities: 190: 74,100 191: 74,101 192: 74,102 - - uid: 25161 + - uid: 25166 components: - type: ChunkEntity root: 2 @@ -54108,7 +54133,7 @@ entities: 259: 61,92 260: 62,92 261: 63,92 - - uid: 25162 + - uid: 25167 components: - type: ChunkEntity root: 2 @@ -54185,7 +54210,7 @@ entities: color: '#FFFF41FF' decals: 4605: 14,84 - - uid: 25163 + - uid: 25168 components: - type: ChunkEntity root: 2 @@ -54556,7 +54581,7 @@ entities: decals: 1019: 127,62 1026: 127,63 - - uid: 25164 + - uid: 25169 components: - type: ChunkEntity root: 2 @@ -54806,7 +54831,7 @@ entities: 1834: 98,87 1835: 102,87 5469: 103,87 - - uid: 25165 + - uid: 25170 components: - type: ChunkEntity root: 2 @@ -55121,7 +55146,7 @@ entities: color: '#FFFFFFFF' decals: 1827: 97,111 - - uid: 25166 + - uid: 25171 components: - type: ChunkEntity root: 2 @@ -55377,7 +55402,7 @@ entities: decals: 5587: 125.88849,107.376595 5588: 124.99786,105.532845 - - uid: 25167 + - uid: 25172 components: - type: ChunkEntity root: 2 @@ -55476,7 +55501,7 @@ entities: decals: 2549: 33,48 2550: 34,48 - - uid: 25168 + - uid: 25173 components: - type: ChunkEntity root: 2 @@ -55722,7 +55747,7 @@ entities: color: '#FFFFFFFF' decals: 3165: 123,81 - - uid: 25169 + - uid: 25174 components: - type: ChunkEntity root: 2 @@ -55763,7 +55788,7 @@ entities: color: '#EFB34196' decals: 2577: 31,48 - - uid: 25170 + - uid: 25175 components: - type: ChunkEntity root: 2 @@ -56055,7 +56080,7 @@ entities: color: '#FFFFFFFF' decals: 1017: 127,64 - - uid: 25171 + - uid: 25176 components: - type: ChunkEntity root: 2 @@ -56327,7 +56352,7 @@ entities: 53: 69,67 54: 70,67 55: 71,67 - - uid: 25172 + - uid: 25177 components: - type: ChunkEntity root: 2 @@ -56499,7 +56524,7 @@ entities: cleanable: True decals: 3888: 71.988,20.082733 - - uid: 25173 + - uid: 25178 components: - type: ChunkEntity root: 2 @@ -56826,7 +56851,7 @@ entities: cleanable: True decals: 4132: 97.00392,57.905205 - - uid: 25174 + - uid: 25179 components: - type: ChunkEntity root: 2 @@ -57182,7 +57207,7 @@ entities: decals: 1504: 100,76 5400: 98,76 - - uid: 25175 + - uid: 25180 components: - type: ChunkEntity root: 2 @@ -57452,7 +57477,7 @@ entities: angle: 0.3490658503988659 rad decals: 1934: 53.860146,67.85053 - - uid: 25176 + - uid: 25181 components: - type: ChunkEntity root: 2 @@ -57652,7 +57677,7 @@ entities: color: '#F9FFFEFF' decals: 5046: 17,74 - - uid: 25177 + - uid: 25182 components: - type: ChunkEntity root: 2 @@ -57857,7 +57882,7 @@ entities: color: '#FFFFFFFF' decals: 5441: 24,42 - - uid: 25178 + - uid: 25183 components: - type: ChunkEntity root: 2 @@ -58165,7 +58190,7 @@ entities: color: '#EFB34196' decals: 2861: 44,42 - - uid: 25179 + - uid: 25184 components: - type: ChunkEntity root: 2 @@ -58325,7 +58350,7 @@ entities: cleanable: True decals: 8: 141.03253,79.7838 - - uid: 25180 + - uid: 25185 components: - type: ChunkEntity root: 2 @@ -58484,7 +58509,7 @@ entities: 5635: 87,90 5636: 87,89 5637: 87,88 - - uid: 25181 + - uid: 25186 components: - type: ChunkEntity root: 2 @@ -58622,7 +58647,7 @@ entities: color: '#FFFFFFFF' decals: 4064: 117,120 - - uid: 25182 + - uid: 25187 components: - type: ChunkEntity root: 2 @@ -58764,7 +58789,7 @@ entities: color: '#FFFF41FF' decals: 4606: 16,84 - - uid: 25183 + - uid: 25188 components: - type: ChunkEntity root: 2 @@ -58960,7 +58985,7 @@ entities: 5181: 52,51 5204: 58,52 5205: 58,50 - - uid: 25184 + - uid: 25189 components: - type: ChunkEntity root: 2 @@ -59234,7 +59259,7 @@ entities: decals: 2847: 48,36 2865: 58,37 - - uid: 25185 + - uid: 25190 components: - type: ChunkEntity root: 2 @@ -59539,7 +59564,7 @@ entities: decals: 356: 74,47 357: 74,46 - - uid: 25186 + - uid: 25191 components: - type: ChunkEntity root: 2 @@ -59758,7 +59783,7 @@ entities: color: '#FFFFFFFF' decals: 1824: 95,110 - - uid: 25187 + - uid: 25192 components: - type: ChunkEntity root: 2 @@ -59856,7 +59881,7 @@ entities: color: '#FFFFFFFF' decals: 4833: 92,29 - - uid: 25188 + - uid: 25193 components: - type: ChunkEntity root: 2 @@ -60029,7 +60054,7 @@ entities: color: '#FFFFFFFF' decals: 5519: 92,33 - - uid: 25189 + - uid: 25194 components: - type: ChunkEntity root: 2 @@ -60143,7 +60168,7 @@ entities: decals: 5506: 18,27 5507: 28,27 - - uid: 25190 + - uid: 25195 components: - type: ChunkEntity root: 2 @@ -60215,7 +60240,7 @@ entities: 576: 97,30 577: 97,30 578: 97,29 - - uid: 25191 + - uid: 25196 components: - type: ChunkEntity root: 2 @@ -60286,7 +60311,7 @@ entities: 2407: 82,59 2408: 81,59 2409: 80,59 - - uid: 25192 + - uid: 25197 components: - type: ChunkEntity root: 2 @@ -60409,7 +60434,7 @@ entities: 2422: 69,61 2423: 69,62 2424: 69,63 - - uid: 25193 + - uid: 25198 components: - type: ChunkEntity root: 2 @@ -60570,7 +60595,7 @@ entities: 267: 69,92 268: 70,92 269: 71,92 - - uid: 25194 + - uid: 25199 components: - type: ChunkEntity root: 2 @@ -60596,7 +60621,7 @@ entities: color: '#52B4E950' decals: 4378: 136,110 - - uid: 25195 + - uid: 25200 components: - type: ChunkEntity root: 2 @@ -60689,7 +60714,7 @@ entities: color: '#FFFFFFFF' decals: 4072: 100,117 - - uid: 25196 + - uid: 25201 components: - type: ChunkEntity root: 2 @@ -60854,7 +60879,7 @@ entities: 105: 85,74 2008: 85,66 2014: 86,66 - - uid: 25197 + - uid: 25202 components: - type: ChunkEntity root: 2 @@ -61073,7 +61098,7 @@ entities: decals: 4191: 109,46 4192: 109,47 - - uid: 25198 + - uid: 25203 components: - type: ChunkEntity root: 2 @@ -61250,7 +61275,7 @@ entities: 1217: 119,45 1218: 118,45 1219: 117,45 - - uid: 25199 + - uid: 25204 components: - type: ChunkEntity root: 2 @@ -61311,7 +61336,7 @@ entities: color: '#FFFFFFFF' decals: 3272: 63,99 - - uid: 25200 + - uid: 25205 components: - type: ChunkEntity root: 2 @@ -61398,7 +61423,7 @@ entities: color: '#FFFFFFFF' decals: 321: 39,87 - - uid: 25201 + - uid: 25206 components: - type: ChunkEntity root: 2 @@ -61494,7 +61519,7 @@ entities: color: '#FFFFFFFF' decals: 786: 46,76 - - uid: 25202 + - uid: 25207 components: - type: ChunkEntity root: 2 @@ -61762,7 +61787,7 @@ entities: 4530: 12,75 4531: 12,76 4532: 12,77 - - uid: 25203 + - uid: 25208 components: - type: ChunkEntity root: 2 @@ -61841,7 +61866,7 @@ entities: color: '#FF0000FF' decals: 4183: 146,81 - - uid: 25204 + - uid: 25209 components: - type: ChunkEntity root: 2 @@ -61865,7 +61890,7 @@ entities: 4754: 15,62 4755: 13,62 4756: 13,63 - - uid: 25205 + - uid: 25210 components: - type: ChunkEntity root: 2 @@ -62082,7 +62107,7 @@ entities: cleanable: True decals: 3237: 52.997345,24.430504 - - uid: 25206 + - uid: 25211 components: - type: ChunkEntity root: 2 @@ -62133,7 +62158,7 @@ entities: 3877: 54,13 3878: 55,13 3879: 56,13 - - uid: 25207 + - uid: 25212 components: - type: ChunkEntity root: 2 @@ -62212,7 +62237,7 @@ entities: color: '#FFFFFFFF' decals: 4683: 15,107 - - uid: 25208 + - uid: 25213 components: - type: ChunkEntity root: 2 @@ -62428,7 +62453,7 @@ entities: 24: 142.17316,81.00255 25: 141.00128,82.12755 26: 139.9544,81.04942 - - uid: 25209 + - uid: 25214 components: - type: ChunkEntity root: 2 @@ -62635,7 +62660,7 @@ entities: decals: 3973: 140.60794,54.072556 3974: 139.76419,54.33818 - - uid: 25210 + - uid: 25215 components: - type: ChunkEntity root: 2 @@ -62726,7 +62751,7 @@ entities: color: '#79150096' decals: 4587: 29.500965,97.07767 - - uid: 25211 + - uid: 25216 components: - type: ChunkEntity root: 2 @@ -62761,7 +62786,7 @@ entities: color: '#FF0000FF' decals: 4171: 145,79 - - uid: 25212 + - uid: 25217 components: - type: ChunkEntity root: 2 @@ -62871,7 +62896,7 @@ entities: color: '#FFFFFFFF' decals: 4699: 138,33 - - uid: 25213 + - uid: 25218 components: - type: ChunkEntity root: 2 @@ -62911,7 +62936,7 @@ entities: color: '#EFB34196' decals: 2754: 33,29 - - uid: 25214 + - uid: 25219 components: - type: ChunkEntity root: 2 @@ -62937,7 +62962,7 @@ entities: color: '#FFFFFFFF' decals: 4698: 138,31 - - uid: 25215 + - uid: 25220 components: - type: ChunkEntity root: 2 @@ -64140,8 +64165,8 @@ entities: components: - type: Transform parent: 2 - rot: -1.5707963267948966 rad - pos: 75.5,67.5 + rot: 1.5707963267948966 rad + pos: 72.5,68.5 - proto: ClothingBackpackDuffelSurgeryFilled entities: - uid: 9071 @@ -77647,33 +77672,17 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 21.5,80.5 - - uid: 11300 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 30.5,35.5 - uid: 11301 components: - type: Transform parent: 2 - rot: 1.5707963267948966 rad - pos: 44.5,38.5 + rot: -1.5707963267948966 rad + pos: 46.5,38.5 - uid: 11302 components: - type: Transform parent: 2 pos: 20.5,29.5 - - uid: 11306 - components: - - type: Transform - parent: 2 - pos: 73.5,47.5 - - uid: 11307 - components: - - type: Transform - parent: 2 - pos: 82.5,47.5 - uid: 11308 components: - type: Transform @@ -77684,12 +77693,6 @@ entities: - type: Transform parent: 2 pos: 95.5,44.5 - - uid: 11310 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 107.5,44.5 - uid: 11311 components: - type: Transform @@ -77732,12 +77735,6 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 130.5,86.5 - - uid: 11320 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 73.5,95.5 - uid: 11321 components: - type: Transform @@ -77945,23 +77942,12 @@ entities: - type: Transform parent: 2 pos: 144.5,89.5 - - uid: 11363 - components: - - type: Transform - parent: 2 - pos: 12.5,81.5 - uid: 11364 components: - type: Transform parent: 2 rot: -1.5707963267948966 rad pos: 18.5,72.5 - - uid: 11365 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 24.5,40.5 - uid: 11366 components: - type: Transform @@ -77986,12 +77972,41 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 114.5,97.5 + - uid: 17681 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 75.5,90.5 - uid: 17738 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad pos: 105.5,81.5 + - uid: 17836 + components: + - type: Transform + parent: 2 + pos: 17.5,81.5 + - uid: 17837 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 29.5,35.5 + - uid: 17868 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 107.5,46.5 + - uid: 17895 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 22.5,40.5 - uid: 17973 components: - type: Transform @@ -78242,12 +78257,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 108.5,67.5 - - uid: 11396 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 67.5,41.5 - uid: 15847 components: - type: Transform @@ -78266,6 +78275,12 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 59.5,109.5 + - uid: 17860 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 66.5,41.5 - uid: 19125 components: - type: Transform @@ -79007,7 +79022,6 @@ entities: - 15035 - 599 - 15213 - - 11551 - 11760 - 11764 - 15214 @@ -79538,7 +79552,6 @@ entities: pos: 131.5,46.5 - type: DeviceList devices: - - 11551 - 11550 - 15221 - 616 @@ -79698,7 +79711,6 @@ entities: - 15120 - 15294 - 11579 - - 11580 - uid: 11497 components: - type: Transform @@ -79891,6 +79903,15 @@ entities: pos: 50.487995,17.561714 - proto: Firelock entities: + - uid: 240 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 82.5,49.5 + - type: DeviceNetwork + deviceLists: + - 103 - uid: 520 components: - type: Transform @@ -80230,17 +80251,6 @@ entities: - 11455 - 11485 - 127 - - uid: 11551 - components: - - type: Transform - parent: 2 - pos: 127.5,48.5 - - type: DeviceNetwork - deviceLists: - - 41 - - 11449 - - 11485 - - 127 - uid: 11552 components: - type: Transform @@ -80512,15 +80522,6 @@ entities: deviceLists: - 103 - 11496 - - uid: 11580 - components: - - type: Transform - parent: 2 - pos: 83.5,50.5 - - type: DeviceNetwork - deviceLists: - - 103 - - 11496 - uid: 11581 components: - type: Transform @@ -80785,6 +80786,15 @@ entities: - 11386 - 84 - 67 + - uid: 11551 + components: + - type: Transform + parent: 2 + pos: 127.5,48.5 + - type: DeviceNetwork + deviceLists: + - 127 + - 41 - uid: 11607 components: - type: Transform @@ -86024,14 +86034,6 @@ entities: pos: 60.5,63.5 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 12223 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 83.5,49.5 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 12224 components: - type: Transform @@ -86331,8 +86333,8 @@ entities: components: - type: Transform parent: 2 - rot: 1.5707963267948966 rad - pos: 83.5,52.5 + rot: 3.141592653589793 rad + pos: 81.5,49.5 - type: AtmosPipeColor color: '#0055CCFF' - uid: 12263 @@ -86790,6 +86792,14 @@ entities: pos: 84.5,116.5 - type: AtmosPipeColor color: '#990000FF' + - uid: 14239 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 81.5,52.5 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 14401 components: - type: Transform @@ -87345,6 +87355,13 @@ entities: pos: 85.5,111.5 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 3393 + components: + - type: Transform + parent: 2 + pos: 81.5,51.5 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 9162 components: - type: Transform @@ -87361,6 +87378,14 @@ entities: pos: 113.5,101.5 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 11310 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 83.5,49.5 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 11637 components: - type: Transform @@ -87409,6 +87434,14 @@ entities: pos: 83.5,109.5 - type: AtmosPipeColor color: '#990000FF' + - uid: 12223 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 82.5,52.5 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 12268 components: - type: Transform @@ -101519,20 +101552,12 @@ entities: pos: 92.5,52.5 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 14239 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 83.5,51.5 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 14240 components: - type: Transform parent: 2 - rot: 3.141592653589793 rad - pos: 83.5,50.5 + rot: 1.5707963267948966 rad + pos: 83.5,52.5 - type: AtmosPipeColor color: '#0055CCFF' - uid: 14241 @@ -104406,6 +104431,21 @@ entities: pos: 90.5,91.5 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 17777 + components: + - type: Transform + parent: 2 + pos: 81.5,50.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 19358 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 82.5,49.5 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 19392 components: - type: Transform @@ -111438,6 +111478,11 @@ entities: - type: Transform parent: 2 pos: 67.5,131.5 + - uid: 11580 + components: + - type: Transform + parent: 2 + pos: 83.5,50.5 - uid: 15340 components: - type: Transform @@ -115513,11 +115558,6 @@ entities: - type: Transform parent: 2 pos: 13.5,29.5 - - uid: 16214 - components: - - type: Transform - parent: 2 - pos: 13.5,28.5 - uid: 16216 components: - type: Transform @@ -117223,11 +117263,6 @@ entities: - type: Transform parent: 2 pos: 107.5,32.5 - - uid: 16582 - components: - - type: Transform - parent: 2 - pos: 107.5,29.5 - uid: 16583 components: - type: Transform @@ -117475,6 +117510,11 @@ entities: pos: 95.5,19.5 - proto: GrilleSpawner entities: + - uid: 15449 + components: + - type: Transform + parent: 2 + pos: 13.5,28.5 - uid: 16248 components: - type: Transform @@ -117650,11 +117690,6 @@ entities: - type: Transform parent: 2 pos: 35.5,6.5 - - uid: 16653 - components: - - type: Transform - parent: 2 - pos: 13.5,27.5 - uid: 16654 components: - type: Transform @@ -119413,6 +119448,14 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 123.5,52.5 + - type: DeviceLinkSource + linkedPorts: + 519: + - - Pressed + - Open + 517: + - - Pressed + - Open - proto: LockableButtonSecurity entities: - uid: 16938 @@ -123548,6 +123591,11 @@ entities: pos: 122.43808,80.57616 - proto: PoweredDimSmallLight entities: + - uid: 3301 + components: + - type: Transform + parent: 2 + pos: 95.5,48.5 - uid: 17595 components: - type: Transform @@ -123737,12 +123785,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 63.5,19.5 - - uid: 17629 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 94.5,47.5 - uid: 17630 components: - type: Transform @@ -123823,12 +123865,30 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 84.5,88.5 + - uid: 11300 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 39.5,35.5 + - uid: 11320 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 73.5,95.5 - uid: 11345 components: - type: Transform parent: 2 rot: 3.141592653589793 rad pos: 97.5,92.5 + - uid: 11365 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 24.5,40.5 - uid: 13778 components: - type: Transform @@ -123846,12 +123906,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 83.5,126.5 - - uid: 15449 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 79.5,100.5 - uid: 15838 components: - type: Transform @@ -123875,12 +123929,6 @@ entities: - type: Transform parent: 2 pos: 71.5,29.5 - - uid: 16218 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 105.5,48.5 - uid: 16229 components: - type: Transform @@ -123892,6 +123940,12 @@ entities: - type: Transform parent: 2 pos: 103.5,79.5 + - uid: 16489 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 105.5,49.5 - uid: 16502 components: - type: Transform @@ -123910,11 +123964,23 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 138.5,94.5 + - uid: 16582 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 79.5,98.5 - uid: 16652 components: - type: Transform parent: 2 pos: 96.5,81.5 + - uid: 16653 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 73.5,69.5 - uid: 16858 components: - type: Transform @@ -124107,8 +124173,8 @@ entities: components: - type: Transform parent: 2 - rot: 1.5707963267948966 rad - pos: 76.5,102.5 + rot: -1.5707963267948966 rad + pos: 79.5,101.5 - uid: 17660 components: - type: Transform @@ -124160,7 +124226,7 @@ entities: - type: Transform parent: 2 rot: 1.5707963267948966 rad - pos: 81.5,69.5 + pos: 70.5,99.5 - uid: 17669 components: - type: Transform @@ -124231,18 +124297,12 @@ entities: - type: Transform parent: 2 pos: 130.5,56.5 - - uid: 17681 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 48.5,88.5 - uid: 17683 components: - type: Transform parent: 2 rot: 3.141592653589793 rad - pos: 95.5,90.5 + pos: 93.5,90.5 - uid: 17684 components: - type: Transform @@ -124611,13 +124671,8 @@ entities: components: - type: Transform parent: 2 - rot: -1.5707963267948966 rad - pos: 74.5,102.5 - - uid: 17777 - components: - - type: Transform - parent: 2 - pos: 71.5,99.5 + rot: 3.141592653589793 rad + pos: 67.5,83.5 - uid: 17778 components: - type: Transform @@ -124628,7 +124683,8 @@ entities: components: - type: Transform parent: 2 - pos: 76.5,95.5 + rot: -1.5707963267948966 rad + pos: 35.5,69.5 - uid: 17780 components: - type: Transform @@ -124638,19 +124694,14 @@ entities: components: - type: Transform parent: 2 - pos: 95.5,94.5 + rot: 1.5707963267948966 rad + pos: 37.5,69.5 - uid: 17784 components: - type: Transform parent: 2 rot: 3.141592653589793 rad pos: 84.5,96.5 - - uid: 17785 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 66.5,83.5 - uid: 17786 components: - type: Transform @@ -124703,7 +124754,7 @@ entities: - type: Transform parent: 2 rot: 1.5707963267948966 rad - pos: 52.5,73.5 + pos: 44.5,39.5 - uid: 17799 components: - type: Transform @@ -124899,18 +124950,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 41.5,70.5 - - uid: 17836 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 37.5,71.5 - - uid: 17837 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 35.5,71.5 - uid: 17838 components: - type: Transform @@ -124926,8 +124965,8 @@ entities: components: - type: Transform parent: 2 - rot: 3.141592653589793 rad - pos: 26.5,40.5 + rot: -1.5707963267948966 rad + pos: 82.5,69.5 - uid: 17841 components: - type: Transform @@ -125038,11 +125077,6 @@ entities: - type: Transform parent: 2 pos: 56.5,26.5 - - uid: 17860 - components: - - type: Transform - parent: 2 - pos: 44.5,39.5 - uid: 17861 components: - type: Transform @@ -125084,12 +125118,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 38.5,31.5 - - uid: 17868 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 38.5,35.5 - uid: 17869 components: - type: Transform @@ -125100,7 +125128,8 @@ entities: components: - type: Transform parent: 2 - pos: 30.5,37.5 + rot: 3.141592653589793 rad + pos: 67.5,42.5 - uid: 17871 components: - type: Transform @@ -125221,12 +125250,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 73.5,66.5 - - uid: 17895 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 74.5,69.5 - uid: 17896 components: - type: Transform @@ -125279,12 +125302,6 @@ entities: - type: Transform parent: 2 pos: 66.5,44.5 - - uid: 17905 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 66.5,42.5 - uid: 17907 components: - type: Transform @@ -125510,11 +125527,6 @@ entities: - type: Transform parent: 2 pos: 114.5,115.5 - - uid: 17961 - components: - - type: Transform - parent: 2 - pos: 110.5,43.5 - uid: 17962 components: - type: Transform @@ -125638,12 +125650,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 43.5,98.5 - - uid: 18050 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 73.5,46.5 - uid: 18054 components: - type: Transform @@ -125679,6 +125685,11 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 71.5,126.5 + - uid: 18677 + components: + - type: Transform + parent: 2 + pos: 110.5,43.5 - uid: 18795 components: - type: Transform @@ -125696,12 +125707,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 92.5,38.5 - - uid: 19358 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 22.5,40.5 - uid: 19493 components: - type: Transform @@ -126102,12 +126107,23 @@ entities: pos: 37.5,79.5 - proto: PoweredlightLED entities: - - uid: 658 + - uid: 736 components: - type: Transform parent: 2 - rot: 1.5707963267948966 rad - pos: 73.5,90.5 + rot: 3.141592653589793 rad + pos: 74.5,49.5 + - uid: 11306 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 81.5,49.5 + - uid: 11307 + components: + - type: Transform + parent: 2 + pos: 73.5,47.5 - uid: 16512 components: - type: Transform @@ -126126,6 +126142,12 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 71.5,89.5 + - uid: 17905 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 73.5,90.5 - uid: 18051 components: - type: Transform @@ -126160,6 +126182,11 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 27.5,59.5 + - uid: 25161 + components: + - type: Transform + parent: 2 + pos: 82.5,47.5 - proto: PoweredLightPostSmall entities: - uid: 17736 @@ -129701,11 +129728,6 @@ entities: - type: Transform parent: 2 pos: 33.5,27.5 - - uid: 18677 - components: - - type: Transform - parent: 2 - pos: 107.5,29.5 - uid: 18678 components: - type: Transform @@ -132641,6 +132663,11 @@ entities: - type: Transform parent: 2 pos: 20.5,49.5 + - uid: 19360 + components: + - type: Transform + parent: 2 + pos: 83.5,50.5 - uid: 19671 components: - type: Transform @@ -132929,12 +132956,12 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 80.5,83.5 - - uid: 16489 + - uid: 17629 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad - pos: 104.5,49.5 + pos: 104.5,48.5 - uid: 17721 components: - type: Transform @@ -133068,11 +133095,6 @@ entities: - type: Transform parent: 2 pos: 96.5,45.5 - - uid: 19360 - components: - - type: Transform - parent: 2 - pos: 110.5,44.5 - uid: 19361 components: - type: Transform @@ -134612,6 +134634,17 @@ entities: 19465: - - Pressed - Toggle + - uid: 17961 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 107.5,29.5 + - type: DeviceLinkSource + linkedPorts: + 1058: + - - Pressed + - Toggle - uid: 19558 components: - type: Transform @@ -134690,17 +134723,6 @@ entities: 19717: - - Pressed - Toggle - - uid: 19563 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 112.5,28.5 - - type: DeviceLinkSource - linkedPorts: - 1058: - - - Pressed - - Toggle - uid: 19564 components: - type: Transform @@ -135111,12 +135133,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 59.5,62.5 - - uid: 19603 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 82.5,49.5 - proto: SignDirectionalBar entities: - uid: 19604 @@ -135302,6 +135318,17 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 141.5,111.5 + - uid: 25162 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 130.5,125.5 + - uid: 25164 + components: + - type: Transform + parent: 2 + pos: 141.5,123.5 - proto: SignDirectionalEvac entities: - uid: 19630 @@ -138189,6 +138216,13 @@ entities: - type: Transform parent: 2 pos: 103.5,100.5 +- proto: SpawnMobMonkeyPunpun + entities: + - uid: 25160 + components: + - type: Transform + parent: 2 + pos: 58.5,98.5 - proto: SpawnMobMouse entities: - uid: 20116 @@ -139939,6 +139973,17 @@ entities: pos: 113.5,104.5 - proto: SurveillanceCameraCommand entities: + - uid: 6684 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 70.5,75.5 + - type: SurveillanceCamera + nameSet: True + id: Captain's Bedroom + setupAvailableNetworks: + - SurveillanceCameraCommand - uid: 19332 components: - type: Transform @@ -139961,17 +140006,6 @@ entities: id: Bridge West setupAvailableNetworks: - SurveillanceCameraCommand - - uid: 20414 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 69.5,75.5 - - type: SurveillanceCamera - nameSet: True - id: Captain's Bedroom - setupAvailableNetworks: - - SurveillanceCameraCommand - uid: 20417 components: - type: Transform @@ -147911,7 +147945,7 @@ entities: components: - type: Transform parent: 2 - pos: 80.5,100.5 + pos: 107.5,29.5 - uid: 15486 components: - type: Transform @@ -147977,6 +148011,11 @@ entities: - type: Transform parent: 2 pos: 15.5,30.5 + - uid: 16218 + components: + - type: Transform + parent: 2 + pos: 80.5,100.5 - uid: 16591 components: - type: Transform @@ -149052,11 +149091,6 @@ entities: - type: Transform parent: 2 pos: 95.5,89.5 - - uid: 21527 - components: - - type: Transform - parent: 2 - pos: 82.5,49.5 - uid: 21528 components: - type: Transform @@ -162164,11 +162198,6 @@ entities: - type: Transform parent: 2 pos: 92.5,47.5 - - uid: 24194 - components: - - type: Transform - parent: 2 - pos: 93.5,47.5 - uid: 24196 components: - type: Transform @@ -164902,6 +164931,12 @@ entities: pos: 15.5,65.5 - proto: WindowDirectionalCorner entities: + - uid: 11363 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 104.5,45.5 - uid: 17991 components: - type: Transform @@ -165327,6 +165362,14 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 99.5,80.5 +- proto: WindowReinforcedDirectionalCorner + entities: + - uid: 17785 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 99.5,79.5 - proto: Wirecutter entities: - uid: 24771 From 6f3ed5d41223ac2f3293af42255d133f1b94f7ef Mon Sep 17 00:00:00 2001 From: Connor Huffine Date: Fri, 28 Aug 2026 15:20:35 +0000 Subject: [PATCH 020/197] Improve changeling chemical alert text alignment (#45697) Fix offset numbers --- Resources/Prototypes/Alerts/changeling.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Resources/Prototypes/Alerts/changeling.yml b/Resources/Prototypes/Alerts/changeling.yml index 4457fa55e3..48ec1492f3 100644 --- a/Resources/Prototypes/Alerts/changeling.yml +++ b/Resources/Prototypes/Alerts/changeling.yml @@ -36,8 +36,8 @@ layers: - map: [ "enum.AlertVisualLayers.Base" ] - map: [ "1" ] - offset: 0.425, 0.25 + offset: 0.4375, 0.25 - map: [ "10" ] - offset: 0.3, 0.25 + offset: 0.3125, 0.25 - map: [ "100" ] - offset: 0.175, 0.25 + offset: 0.1875, 0.25 From dc677112c03c75c19dc9030ac7d179c59044194d Mon Sep 17 00:00:00 2001 From: ProPeperos <61984624+ProPeperos@users.noreply.github.com> Date: Fri, 28 Aug 2026 20:01:20 +0000 Subject: [PATCH 021/197] Readds random rotation and offset to dev map (#45711) * Readds random rotation to dev map * readd random offset --- Resources/Prototypes/Maps/debug.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/Resources/Prototypes/Maps/debug.yml b/Resources/Prototypes/Maps/debug.yml index d98a78d365..8d4cc550a2 100644 --- a/Resources/Prototypes/Maps/debug.yml +++ b/Resources/Prototypes/Maps/debug.yml @@ -17,8 +17,6 @@ id: Dev mapName: Dev mapPath: /Maps/Test/dev_map.yml - maxRandomOffset: 0 - randomRotation: false minPlayers: 0 stations: Dev: From b54242164911daa41fdb2fe9c6468ecd317d791b Mon Sep 17 00:00:00 2001 From: Jessica M Date: Fri, 28 Aug 2026 23:49:20 +0000 Subject: [PATCH 022/197] Fix unlimited range defib spam (#45716) can't reach --- Content.Shared/Medical/SharedDefibrillatorSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Shared/Medical/SharedDefibrillatorSystem.cs b/Content.Shared/Medical/SharedDefibrillatorSystem.cs index 9d290d2c28..6d05fc5633 100644 --- a/Content.Shared/Medical/SharedDefibrillatorSystem.cs +++ b/Content.Shared/Medical/SharedDefibrillatorSystem.cs @@ -46,7 +46,7 @@ public abstract partial class SharedDefibrillatorSystem : EntitySystem [SubscribeLocalEvent] private void OnAfterInteract(Entity ent, ref AfterInteractEvent args) { - if (args.Handled || args.Target is not { } target) + if (args.Handled || args.Target is not { } target || !args.CanReach) return; args.Handled = TryStartZap(ent.AsNullable(), target, args.User); From a229b3c985b3db22ae4940718050f8d6aacc1495 Mon Sep 17 00:00:00 2001 From: Hitlinemoss <209321380+Hitlinemoss@users.noreply.github.com> Date: Sat, 29 Aug 2026 00:35:57 +0000 Subject: [PATCH 023/197] Add chameleonOutfit and startingGear prototypes for prisoners (#45701) * Add startingGear and chameleonOutfit prototypes for prisoners * gloves fix * ClearPDA * PrisonerPDA --- .../Entities/Objects/Devices/pda.yml | 10 ++++++ .../Prototypes/Roles/Jobs/Fun/prisoner.yml | 34 +++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 Resources/Prototypes/Roles/Jobs/Fun/prisoner.yml diff --git a/Resources/Prototypes/Entities/Objects/Devices/pda.yml b/Resources/Prototypes/Entities/Objects/Devices/pda.yml index 9d04ecf468..78300671c5 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/pda.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/pda.yml @@ -1082,9 +1082,18 @@ - type: Icon state: pda-clear +- type: entity + parent: ClearPDA + id: PrisonerPDA # This mostly just exists for the sake of the chameleon UI giving a clear PDA with a prisoner ID + suffix: Prisoner + components: + - type: Pda + id: PrisonerIDCard + - type: entity parent: ClearPDA id: VisitorPDA + suffix: Visitor components: - type: Pda id: VisitorIDCard @@ -1646,6 +1655,7 @@ - type: entity parent: ClearPDA id: ScurretPDA + suffix: Scurret description: A temporary PDA granted to scurret temps. Doesn't do much. Wawa! components: - type: Pda diff --git a/Resources/Prototypes/Roles/Jobs/Fun/prisoner.yml b/Resources/Prototypes/Roles/Jobs/Fun/prisoner.yml new file mode 100644 index 0000000000..4b73122789 --- /dev/null +++ b/Resources/Prototypes/Roles/Jobs/Fun/prisoner.yml @@ -0,0 +1,34 @@ +# Prisoner isn't an actual roundstart role, so these startingGear prototypes are mostly for use with the "Set Outfit" debug verb +- type: startingGear + id: PrisonerGear + equipment: + jumpsuit: ClothingUniformJumpsuitPrisoner + shoes: ClothingShoesColorBlack + id: PrisonerIDCard + +- type: startingGear + id: PrisonerMuzzledGear + equipment: + mask: ClothingMaskMuzzle + jumpsuit: ClothingUniformJumpsuitPrisoner + shoes: ClothingShoesColorBlack + id: PrisonerIDCard + +- type: chameleonOutfit + id: PrisonerChameleonOutfit + loadoutName: job-name-prisoner + name: job-name-prisoner + icon: "JobIconPrisoner" + equipment: # "real" prisoners obviously have limited access to clothing, so the head/eyes/outerClothing slots just use generic clothes to place *something* in that slot + head: ClothingHeadHatOrangesoft + eyes: ClothingEyesGlassesCheapSunglasses + ears: ClothingHeadsetGrey + mask: ClothingMaskMuzzle + outerClothing: ClothingOuterWinterColorOrange + jumpsuit: ClothingUniformJumpsuitPrisoner + neck: ClothingNeckBling + back: ClothingBackpack # we COULD use the eletropack, but it's probably more suspect to have an electropack that doesn't work and that security doesn't remember handing out + gloves: ClothingHandsGlovesColorBlack + shoes: ClothingShoesColorBlack + id: PrisonerPDA + From a0ebe115072a34c2b49dc44aaf3d853aef0aaa6b Mon Sep 17 00:00:00 2001 From: Whatstone <166147148+whatston3@users.noreply.github.com> Date: Sat, 29 Aug 2026 05:36:13 +0000 Subject: [PATCH 024/197] Fix duplicated scurret palette colour (#45712) the funny blue scurret --- Resources/Prototypes/Palettes/critters.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Palettes/critters.yml b/Resources/Prototypes/Palettes/critters.yml index af571840e0..ad91799957 100644 --- a/Resources/Prototypes/Palettes/critters.yml +++ b/Resources/Prototypes/Palettes/critters.yml @@ -50,7 +50,7 @@ Innocent: "#f6f439" # Monky Angry: "#dc5864" # Hunty Perceptive: "#222222" # Watchy - Eldritch: "#dc5864" + Eldritch: "#084678" Fat: "#fefcab" Violent: "#ab3430" Speedy: "#679cfe" From 1b19d3c05e5c88187be2bc17d439e3f345979423 Mon Sep 17 00:00:00 2001 From: taydeo Date: Sat, 29 Aug 2026 07:11:16 +0000 Subject: [PATCH 025/197] [FIX] Mice now eat and drink (#45719) * fix mice not eating despite being hungry * Update Content.Server/NPC/Systems/NPCUtilitySystem.cs Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com> * do same fix for thirst --------- Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com> --- Content.Server/NPC/Systems/NPCUtilitySystem.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Content.Server/NPC/Systems/NPCUtilitySystem.cs b/Content.Server/NPC/Systems/NPCUtilitySystem.cs index 17554beabf..65b7e6337a 100644 --- a/Content.Server/NPC/Systems/NPCUtilitySystem.cs +++ b/Content.Server/NPC/Systems/NPCUtilitySystem.cs @@ -175,7 +175,7 @@ public sealed partial class NPCUtilitySystem : EntitySystem // only eat when hungry or if it will eat anything if (TryComp(owner, out var satiation) && - _satiation.IsValueInRange((owner, satiation), SatiationSystem.Hunger, below: foodValueConsideration.HungerThreshold) && + _satiation.IsValueInRange((owner, satiation), SatiationSystem.Hunger, above: foodValueConsideration.HungerThreshold) && avoidBadFood) return 0f; @@ -197,7 +197,7 @@ public sealed partial class NPCUtilitySystem : EntitySystem // only drink when thirsty if (TryComp(owner, out var satiation) && - _satiation.IsValueInRange((owner, satiation), SatiationSystem.Thirst, below: drinkValueConsideration.ThirstThreshold)) + _satiation.IsValueInRange((owner, satiation), SatiationSystem.Thirst, above: drinkValueConsideration.ThirstThreshold)) return 0f; // no janicow don't drink the blood puddle From 4a035f50ed2d070a24d521a114141142a80ca035 Mon Sep 17 00:00:00 2001 From: TriviaSolari <154280615+TriviaSolari@users.noreply.github.com> Date: Sat, 29 Aug 2026 11:12:07 +0000 Subject: [PATCH 026/197] Make living tissue contain the changeling's DNA (#45729) OnDevourConsume now adds DNA to DevourSpill --- .../Changeling/Systems/ChangelingDevourSystem.cs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Content.Shared/Changeling/Systems/ChangelingDevourSystem.cs b/Content.Shared/Changeling/Systems/ChangelingDevourSystem.cs index bbcac88a4b..601aafb2c4 100644 --- a/Content.Shared/Changeling/Systems/ChangelingDevourSystem.cs +++ b/Content.Shared/Changeling/Systems/ChangelingDevourSystem.cs @@ -2,6 +2,8 @@ using Content.Shared.Actions; using Content.Shared.Administration.Logs; using Content.Shared.Armor; using Content.Shared.Atmos.Rotting; +using Content.Shared.Body.Components; +using Content.Shared.Body.Systems; using Content.Shared.Changeling.Components; using Content.Shared.Store; using Content.Shared.Damage.Systems; @@ -22,6 +24,7 @@ namespace Content.Shared.Changeling.Systems; public sealed partial class ChangelingDevourSystem : EntitySystem { + [Dependency] private BloodstreamSystem _bloodstream = default!; [Dependency] private DamageableSystem _damageable = default!; [Dependency] private EntityWhitelistSystem _whitelistSystem = default!; [Dependency] private INetManager _net = default!; @@ -187,7 +190,14 @@ public sealed partial class ChangelingDevourSystem : EntitySystem EnsureComp(target); if (ent.Comp.DevourSpill != null) - _puddle.TrySpillAt(target, ent.Comp.DevourSpill, out _, false); + { + // Spilled solution should have the same DNA as the changeling at the time of devouring + var spill = ent.Comp.DevourSpill.Clone(); + if (TryComp(ent, out var bloodstream)) + spill.SetReagentData(_bloodstream.GetEntityBloodData((ent, bloodstream))); + + _puddle.TrySpillAt(target, spill, out _, false); + } // Grants the DNA reward associated with a successful unique devour. if (willGrantDna && TryComp(ent, out var store)) From 1c7ebd24c5c36ac235c6122ebeedbc20bd44db3d Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Sat, 29 Aug 2026 16:59:11 +0000 Subject: [PATCH 027/197] Make metal foam preserve tile air (#45705) One line changes amirite --- Resources/Prototypes/Entities/Effects/chemistry_effects.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/Prototypes/Entities/Effects/chemistry_effects.yml b/Resources/Prototypes/Entities/Effects/chemistry_effects.yml index 3a61e5fcd2..561720085a 100644 --- a/Resources/Prototypes/Entities/Effects/chemistry_effects.yml +++ b/Resources/Prototypes/Entities/Effects/chemistry_effects.yml @@ -193,6 +193,7 @@ - type: Transform anchored: true - type: Airtight + noAirWhenFullyAirBlocked: false - type: ReplaceFloorOnSpawn replaceableTiles: - Plating From ea682420944eaeee33925f8c6d0c5588d0deaee9 Mon Sep 17 00:00:00 2001 From: Maciej Walendziuk <15122746+maciejwalendziuk@users.noreply.github.com> Date: Sun, 30 Aug 2026 07:08:36 +0300 Subject: [PATCH 028/197] SegmentedBarChart: clamp gap advance (#45744) --- Content.Client/UserInterface/Controls/SegmentedBarChart.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Client/UserInterface/Controls/SegmentedBarChart.cs b/Content.Client/UserInterface/Controls/SegmentedBarChart.cs index a8c8c80688..ec92d7cb70 100644 --- a/Content.Client/UserInterface/Controls/SegmentedBarChart.cs +++ b/Content.Client/UserInterface/Controls/SegmentedBarChart.cs @@ -333,7 +333,7 @@ public sealed class SegmentedBarChart : Control yield return (entry, xStart, xEnd); - xStart = xEnd + gapWidth; + xStart = MathF.Min(xEnd + gapWidth, chartWidth); } } From 8375450b5a278e4538ae1b6065a8b3dd1cbaf756 Mon Sep 17 00:00:00 2001 From: Cabin-keeper Date: Sun, 30 Aug 2026 13:59:46 +0000 Subject: [PATCH 029/197] Buff changeling devour and windup damage (resubmit of #45743) (#45749) * ling devour and windup buff fuck me * lower windup higher total --------- Co-authored-by: ScarKy0 --- .../Components/ChangelingDevourComponent.cs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Content.Shared/Changeling/Components/ChangelingDevourComponent.cs b/Content.Shared/Changeling/Components/ChangelingDevourComponent.cs index 59cfc92bcd..66d05175b3 100644 --- a/Content.Shared/Changeling/Components/ChangelingDevourComponent.cs +++ b/Content.Shared/Changeling/Components/ChangelingDevourComponent.cs @@ -91,9 +91,8 @@ public sealed partial class ChangelingDevourComponent : Component { DamageDict = new() { - { "Slash", 10}, - { "Piercing", 10 }, - { "Blunt", 5 }, + { "Slash", 15}, + { "Piercing", 15 }, }, }; @@ -105,9 +104,9 @@ public sealed partial class ChangelingDevourComponent : Component { DamageDict = new() { - { "Slash", 20}, - { "Piercing", 20 }, - { "Blunt", 10 }, + { "Slash", 60}, + { "Piercing", 60 }, + { "Caustic", 100 }, }, }; From 196167622e4c8ca3510c83740ca9bc89bb686c8e Mon Sep 17 00:00:00 2001 From: ProPeperos <61984624+ProPeperos@users.noreply.github.com> Date: Mon, 31 Aug 2026 17:47:27 +0000 Subject: [PATCH 030/197] Map Box - replace empty sink with full one (#45755) --- Resources/Maps/box.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Maps/box.yml b/Resources/Maps/box.yml index d35b1e5a42..f8c2a79c9a 100644 --- a/Resources/Maps/box.yml +++ b/Resources/Maps/box.yml @@ -4,7 +4,7 @@ meta: engineVersion: 289.0.0 forkId: "" forkVersion: "" - time: 08/22/2026 17:50:29 + time: 08/30/2026 10:30:27 entityCount: 28909 maps: - 780 @@ -155307,6 +155307,12 @@ entities: parent: 8364 rot: -1.5707963267948966 rad pos: -45.5,-11.5 + - uid: 16331 + components: + - type: Transform + parent: 8364 + rot: 1.5707963267948966 rad + pos: 18.5,-17.5 - uid: 19232 components: - type: Transform @@ -155355,12 +155361,6 @@ entities: - type: Transform parent: 8364 pos: -36.5,-54.5 - - uid: 16331 - components: - - type: Transform - parent: 8364 - rot: 1.5707963267948966 rad - pos: 18.5,-17.5 - uid: 20883 components: - type: Transform From 0b2245ff2c1b779f2ffdb384c807c817f1086f64 Mon Sep 17 00:00:00 2001 From: Whatstone <166147148+whatston3@users.noreply.github.com> Date: Mon, 31 Aug 2026 19:03:50 +0000 Subject: [PATCH 031/197] Bugfix: Station AI's Comms Console UI is missing a screen (#45663) * Add a default screen to the comms console BUI * Return to Screen, ScreenDummy is dead * margin adjustment --- .../CommunicationsConsoleComponent.cs | 2 +- .../UI/CommunicationsConsoleBoundUserInterface.cs | 4 ++++ .../UI/Widgets/MessagingControls.xaml | 14 ++++++++------ .../Wallmounts/WallmountMachines/screen.yml | 8 -------- 4 files changed, 13 insertions(+), 15 deletions(-) diff --git a/Content.Client/Communications/CommunicationsConsoleComponent.cs b/Content.Client/Communications/CommunicationsConsoleComponent.cs index d3db95d5bd..2c3f696653 100644 --- a/Content.Client/Communications/CommunicationsConsoleComponent.cs +++ b/Content.Client/Communications/CommunicationsConsoleComponent.cs @@ -15,5 +15,5 @@ public sealed partial class CommunicationsConsoleComponent : SharedCommunication /// If this isn't true, create a dummy entity or adjust the margins/scale in MessagingControls.xaml. /// [DataField] - public EntProtoId ScreenDisplayId = "ScreenDummy"; + public EntProtoId ScreenDisplayId = "Screen"; } diff --git a/Content.Client/Communications/UI/CommunicationsConsoleBoundUserInterface.cs b/Content.Client/Communications/UI/CommunicationsConsoleBoundUserInterface.cs index cc0e06c9da..f382de1e79 100644 --- a/Content.Client/Communications/UI/CommunicationsConsoleBoundUserInterface.cs +++ b/Content.Client/Communications/UI/CommunicationsConsoleBoundUserInterface.cs @@ -24,6 +24,8 @@ public sealed partial class CommunicationsConsoleBoundUserInterface(EntityUid ow [ViewVariables] private CommunicationsConsoleMenu? _menu; + private static readonly EntProtoId FallbackScreen = "Screen"; + /// protected override void Open() { @@ -38,6 +40,8 @@ public sealed partial class CommunicationsConsoleBoundUserInterface(EntityUid ow if (EntMan.TryGetComponent(Owner, out var console)) _menu.SetBroadcastDisplayEntity(console.ScreenDisplayId); + else + _menu.SetBroadcastDisplayEntity(FallbackScreen); } public void AlertLevelSelected(ProtoId level) diff --git a/Content.Client/Communications/UI/Widgets/MessagingControls.xaml b/Content.Client/Communications/UI/Widgets/MessagingControls.xaml index 284da9774d..4120b33fd2 100644 --- a/Content.Client/Communications/UI/Widgets/MessagingControls.xaml +++ b/Content.Client/Communications/UI/Widgets/MessagingControls.xaml @@ -25,12 +25,14 @@ - private void OnPacketReceived(EntityUid uid, DeviceLinkSinkComponent component, DeviceNetworkPacketEvent args) + [SubscribeLocalEvent] + private void OnSignalReceived(Entity ent, ref DeviceNetworkPacketEvent args) { - if (!args.Data.TryGetValue(InvokedPort, out string? port) || !(component.Ports?.Contains(port) ?? false)) + var (uid, component) = ent; + if (!component.Ports.Contains(args.Data.InvokedPort)) return; - var eventArgs = new SignalReceivedEvent(port, args.Sender, args.Data); - RaiseLocalEvent(uid, ref eventArgs); + var eventArgs = new SignalReceivedEvent(args.Data.InvokedPort, args.Sender); + RaiseLocalEvent(uid, ref eventArgs); } /// /// When linking from a port that currently has a signal being sent, invoke the new link with that signal. /// + [SubscribeLocalEvent] private void OnNewLink(Entity ent, ref NewLinkEvent args) { if (args.Source != ent.Owner) @@ -147,11 +224,12 @@ public sealed partial class DeviceLinkSystem : SharedDeviceLinkSystem if (!ent.Comp.LastSignals.TryGetValue(args.SourcePort, out var signal)) return; - var payload = new NetworkPayload() + var payload = new LogicStatePayload { - [DeviceNetworkConstants.LogicState] = signal ? SignalState.High : SignalState.Low + State = signal ? SignalState.High : SignalState.Low }; - InvokeDirect(ent, args.Sink, args.SourcePort, args.SinkPort, payload); + InvokeDirect(ent, args.Sink, args.SinkPort, ref payload); } + #endregion } diff --git a/Content.Server/DeviceLinking/Systems/DoorSignalControlSystem.cs b/Content.Server/DeviceLinking/Systems/DoorSignalControlSystem.cs index 39c84057d9..af3fe102d2 100644 --- a/Content.Server/DeviceLinking/Systems/DoorSignalControlSystem.cs +++ b/Content.Server/DeviceLinking/Systems/DoorSignalControlSystem.cs @@ -1,9 +1,7 @@ using Content.Server.DeviceLinking.Components; -using Content.Server.DeviceNetwork; using Content.Server.Doors.Systems; using Content.Shared.DeviceLinking; using Content.Shared.DeviceLinking.Events; -using Content.Shared.DeviceNetwork; using Content.Shared.Doors.Components; using Content.Shared.Doors; using JetBrains.Annotations; @@ -36,10 +34,38 @@ namespace Content.Server.DeviceLinking.Systems if (!TryComp(uid, out DoorComponent? door)) return; - var state = SignalState.Momentary; - args.Data?.TryGetValue(DeviceNetworkConstants.LogicState, out state); + if (args.Port == component.OpenPort) + { + if (door.State == DoorState.Closed) + _doorSystem.TryOpen(uid, door); + } + else if (args.Port == component.ClosePort) + { + if (door.State == DoorState.Open) + _doorSystem.TryClose(uid, door); + } + else if (args.Port == component.TogglePort) + { + _doorSystem.TryToggleDoor(uid, door); + } + else if (args.Port == component.InBolt) + { + if (!TryComp(uid, out var bolts)) + return; + // if its a pulse toggle, otherwise set bolts to high/low + var bolt = !bolts.BoltsDown; + _doorSystem.SetBoltsDown((uid, bolts), bolt); + } + } + [SubscribeLocalEvent] + private void OnSignalReceived(EntityUid uid, DoorSignalControlComponent component, ref SignalReceivedEvent args) + { + if (!TryComp(uid, out DoorComponent? door)) + return; + + var state = args.Data.State; if (args.Port == component.OpenPort) { if (state == SignalState.High || state == SignalState.Momentary) diff --git a/Content.Server/DeviceLinking/Systems/EdgeDetectorSystem.cs b/Content.Server/DeviceLinking/Systems/EdgeDetectorSystem.cs index 6e6fc18d0f..e5cb203368 100644 --- a/Content.Server/DeviceLinking/Systems/EdgeDetectorSystem.cs +++ b/Content.Server/DeviceLinking/Systems/EdgeDetectorSystem.cs @@ -1,7 +1,6 @@ using Content.Server.DeviceLinking.Components; using Content.Shared.DeviceLinking; using Content.Shared.DeviceLinking.Events; -using Content.Shared.DeviceNetwork; namespace Content.Server.DeviceLinking.Systems; @@ -14,7 +13,6 @@ public sealed partial class EdgeDetectorSystem : EntitySystem base.Initialize(); SubscribeLocalEvent(OnInit); - SubscribeLocalEvent(OnSignalReceived); } private void OnInit(EntityUid uid, EdgeDetectorComponent comp, ComponentInit args) @@ -23,25 +21,21 @@ public sealed partial class EdgeDetectorSystem : EntitySystem _deviceLink.EnsureSourcePorts(uid, comp.OutputHighPort, comp.OutputLowPort); } - private void OnSignalReceived(EntityUid uid, EdgeDetectorComponent comp, ref SignalReceivedEvent args) + [SubscribeLocalEvent] + private void OnSignalReceived(EntityUid uid, EdgeDetectorComponent comp, ref SignalReceivedEvent args) { - // only handle signals with edges - var state = SignalState.Momentary; - if (args.Data == null || - !args.Data.TryGetValue(DeviceNetworkConstants.LogicState, out state) || - state == SignalState.Momentary) - return; + var state = args.Data.State; if (args.Port != comp.InputPort) return; // make sure the level changed, multiple devices sending the same level are treated as one spamming - if (comp.State != state) - { - comp.State = state; + if (comp.State == state) + return; - var port = state == SignalState.High ? comp.OutputHighPort : comp.OutputLowPort; - _deviceLink.InvokePort(uid, port); - } + comp.State = state; + + var port = state == SignalState.High ? comp.OutputHighPort : comp.OutputLowPort; + _deviceLink.InvokePort(uid, port); } } diff --git a/Content.Server/DeviceLinking/Systems/LogicGateSystem.cs b/Content.Server/DeviceLinking/Systems/LogicGateSystem.cs index 4a09e3801a..8a555de291 100644 --- a/Content.Server/DeviceLinking/Systems/LogicGateSystem.cs +++ b/Content.Server/DeviceLinking/Systems/LogicGateSystem.cs @@ -1,8 +1,6 @@ using Content.Server.DeviceLinking.Components; -using Content.Server.DeviceNetwork; using Content.Shared.DeviceLinking; using Content.Shared.DeviceLinking.Events; -using Content.Shared.DeviceNetwork; using Content.Shared.Examine; using Content.Shared.Interaction; using Content.Shared.Popups; @@ -96,8 +94,26 @@ public sealed partial class LogicGateSystem : EntitySystem { // default to momentary for compatibility with non-logic signals. // currently only door status and logic gates have logic signal state. - var state = SignalState.Momentary; - args.Data?.TryGetValue(DeviceNetworkConstants.LogicState, out state); + + // update the state for the correct port + if (args.Port == comp.InputPortA) + { + comp.StateA = SignalState.Momentary; + _appearance.SetData(uid, LogicGateVisuals.InputA, false); //If A == High => Sets input A sprite to True + } + else if (args.Port == comp.InputPortB) + { + comp.StateB = SignalState.Momentary; + _appearance.SetData(uid, LogicGateVisuals.InputB, false); //If B == High => Sets input B sprite to True + } + + UpdateOutput(uid, comp); + } + + [SubscribeLocalEvent] + private void OnSignalReceived(EntityUid uid, LogicGateComponent comp, ref SignalReceivedEvent args) + { + var state = args.Data.State; // update the state for the correct port if (args.Port == comp.InputPortA) diff --git a/Content.Server/DeviceLinking/Systems/MemoryCellSystem.cs b/Content.Server/DeviceLinking/Systems/MemoryCellSystem.cs index 394ae0dddf..1faaffc895 100644 --- a/Content.Server/DeviceLinking/Systems/MemoryCellSystem.cs +++ b/Content.Server/DeviceLinking/Systems/MemoryCellSystem.cs @@ -1,7 +1,6 @@ using Content.Server.DeviceLinking.Components; using Content.Shared.DeviceLinking; using Content.Shared.DeviceLinking.Events; -using Content.Shared.DeviceNetwork; namespace Content.Server.DeviceLinking.Systems; @@ -46,7 +45,19 @@ public sealed partial class MemoryCellSystem : EntitySystem private void OnSignalReceived(Entity ent, ref SignalReceivedEvent args) { var state = SignalState.Momentary; - args.Data?.TryGetValue(DeviceNetworkConstants.LogicState, out state); + + if (args.Port == ent.Comp.InputPort) + ent.Comp.InputState = state; + else if (args.Port == ent.Comp.EnablePort) + ent.Comp.EnableState = state; + + UpdateOutput(ent); + } + + [SubscribeLocalEvent] + private void OnSignalReceived(Entity ent, ref SignalReceivedEvent args) + { + var state = args.Data.State; if (args.Port == ent.Comp.InputPort) ent.Comp.InputState = state; @@ -58,9 +69,6 @@ public sealed partial class MemoryCellSystem : EntitySystem private void UpdateOutput(Entity ent) { - if (!Resolve(ent, ref ent.Comp2)) - return; - if (ent.Comp1.EnableState == SignalState.Low) return; @@ -69,6 +77,6 @@ public sealed partial class MemoryCellSystem : EntitySystem return; ent.Comp1.LastOutput = value; - _deviceLink.SendSignal(ent, ent.Comp1.OutputPort, value, ent.Comp2); + _deviceLink.SendSignal((ent.Owner, ent.Comp2), ent.Comp1.OutputPort, value); } } diff --git a/Content.Server/DeviceNetwork/Systems/ApcNetworkSystem.cs b/Content.Server/DeviceNetwork/Systems/ApcNetworkSystem.cs index 34895e9bf8..a1c8d18cd6 100644 --- a/Content.Server/DeviceNetwork/Systems/ApcNetworkSystem.cs +++ b/Content.Server/DeviceNetwork/Systems/ApcNetworkSystem.cs @@ -27,13 +27,14 @@ namespace Content.Server.DeviceNetwork.Systems /// /// Checks if both devices are connected to the same apc /// - private void OnBeforePacketSent(EntityUid uid, ApcNetworkComponent receiver, BeforePacketSentEvent args) + private void OnBeforePacketSent(Entity ent, ref BeforePacketSentEvent args) { - if (!TryComp(args.Sender, out ApcNetworkComponent? sender)) return; + if (!TryComp(args.Sender, out ApcNetworkComponent? sender)) + return; - if (sender.ConnectedNode?.NodeGroup == null || !sender.ConnectedNode.NodeGroup.Equals(receiver.ConnectedNode?.NodeGroup)) + if (sender.ConnectedNode?.NodeGroup == null || !sender.ConnectedNode.NodeGroup.Equals(ent.Comp.ConnectedNode?.NodeGroup)) { - args.Cancel(); + args.Cancelled = true; } } diff --git a/Content.Server/DeviceNetwork/Systems/DeviceListSystem.cs b/Content.Server/DeviceNetwork/Systems/DeviceListSystem.cs index f12ed6d245..b551350251 100644 --- a/Content.Server/DeviceNetwork/Systems/DeviceListSystem.cs +++ b/Content.Server/DeviceNetwork/Systems/DeviceListSystem.cs @@ -1,4 +1,5 @@ using System.Linq; +using Content.Shared.DeviceNetwork; using Content.Shared.DeviceNetwork.Components; using Content.Shared.DeviceNetwork.Events; using Content.Shared.DeviceNetwork.Systems; @@ -11,6 +12,7 @@ namespace Content.Server.DeviceNetwork.Systems; public sealed partial class DeviceListSystem : SharedDeviceListSystem { [Dependency] private NetworkConfiguratorSystem _configurator = default!; + [Dependency] private EntityQuery _deviceNetworkQuery = default!; public override void Initialize() @@ -82,17 +84,18 @@ public sealed partial class DeviceListSystem : SharedDeviceListSystem /// /// Filters the broadcasts recipient list against the device list as either an allow or deny list depending on the components IsAllowList field /// - private void OnBeforeBroadcast(EntityUid uid, DeviceListComponent component, BeforeBroadcastAttemptEvent args) + private void OnBeforeBroadcast(Entity ent, ref BeforeBroadcastAttemptEvent args) { + var component = ent.Comp; //Don't filter anything if the device list is empty if (component.Devices.Count == 0) { if (component.IsAllowList) - args.Cancel(); + args.Cancelled = true; return; } - HashSet filteredRecipients = new(args.Recipients.Count); + HashSet filteredRecipients = new(args.Recipients.Count); foreach (var recipient in args.Recipients) { @@ -106,10 +109,10 @@ public sealed partial class DeviceListSystem : SharedDeviceListSystem /// /// Filters incoming packets if that is enabled /// - private void OnBeforePacketSent(EntityUid uid, DeviceListComponent component, BeforePacketSentEvent args) + private void OnBeforePacketSent(Entity ent, ref BeforePacketSentEvent args) { - if (component.HandleIncomingPackets && component.Devices.Contains(args.Sender) != component.IsAllowList) - args.Cancel(); + if (ent.Comp.HandleIncomingPackets && ent.Comp.Devices.Contains(args.Sender) != ent.Comp.IsAllowList) + args.Cancelled = true; } public void OnDeviceShutdown(Entity list, Entity device) diff --git a/Content.Server/DeviceNetwork/Systems/DeviceNetworkJammerSystem.cs b/Content.Server/DeviceNetwork/Systems/DeviceNetworkJammerSystem.cs index e5b75ec831..d4edd463d4 100644 --- a/Content.Server/DeviceNetwork/Systems/DeviceNetworkJammerSystem.cs +++ b/Content.Server/DeviceNetwork/Systems/DeviceNetworkJammerSystem.cs @@ -27,7 +27,7 @@ public sealed partial class DeviceNetworkJammerSystem : SharedDeviceNetworkJamme while (query.MoveNext(out var uid, out var jammerComp, out var jammerXform)) { - if (!_jammer.GetJammableNetworks((uid, jammerComp)).Contains(ev.NetworkId)) + if (!_jammer.GetJammableNetworks((uid, jammerComp)).Contains(ev.NetId)) continue; if (jammerComp.FrequenciesExcluded != null && @@ -37,10 +37,9 @@ public sealed partial class DeviceNetworkJammerSystem : SharedDeviceNetworkJamme if (_transform.InRange(jammerXform.Coordinates, ev.SenderTransform.Coordinates, jammerComp.Range) || _transform.InRange(jammerXform.Coordinates, xform.Comp.Coordinates, jammerComp.Range)) { - ev.Cancel(); + ev.Cancelled = true; return; } } } - } diff --git a/Content.Server/DeviceNetwork/Systems/DeviceNetworkRequiresPowerSystem.cs b/Content.Server/DeviceNetwork/Systems/DeviceNetworkRequiresPowerSystem.cs index 0dc1368809..98997189f7 100644 --- a/Content.Server/DeviceNetwork/Systems/DeviceNetworkRequiresPowerSystem.cs +++ b/Content.Server/DeviceNetwork/Systems/DeviceNetworkRequiresPowerSystem.cs @@ -1,5 +1,4 @@ using Content.Server.DeviceNetwork.Components; -using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; using Content.Shared.DeviceNetwork.Events; @@ -9,15 +8,15 @@ public sealed partial class DeviceNetworkRequiresPowerSystem : EntitySystem { public override void Initialize() { + base.Initialize(); SubscribeLocalEvent(OnBeforePacketSent); } - private void OnBeforePacketSent(EntityUid uid, DeviceNetworkRequiresPowerComponent component, - BeforePacketSentEvent args) + private void OnBeforePacketSent(Entity ent, ref BeforePacketSentEvent args) { - if (!this.IsPowered(uid, EntityManager)) + if (!this.IsPowered(ent, EntityManager)) { - args.Cancel(); + args.Cancelled = true; } } } diff --git a/Content.Server/DeviceNetwork/Systems/DeviceNetworkSystem.API.cs b/Content.Server/DeviceNetwork/Systems/DeviceNetworkSystem.API.cs new file mode 100644 index 0000000000..214987a6a0 --- /dev/null +++ b/Content.Server/DeviceNetwork/Systems/DeviceNetworkSystem.API.cs @@ -0,0 +1,232 @@ +using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork.Components; +using Content.Shared.DeviceNetwork.Events; +using JetBrains.Annotations; + +namespace Content.Server.DeviceNetwork.Systems; + +public sealed partial class DeviceNetworkSystem +{ + [PublicAPI] + public override bool SendPacket( + Entity ent, + string? address, + ref T data, + uint? frequency = null, + int? network = null) + { + if (!_deviceQuery.Resolve(ent.Owner, ref ent.Comp, false)) + return false; + + var device = ent.Comp; + if (device.Address == string.Empty) + return false; + + frequency ??= device.TransmitFrequency; + + if (frequency == null) + return false; + + network ??= device.DeviceNetId; + + var packet = new DeviceNetworkPacketEvent(network.Value, address, frequency.Value, device.Address, ent!, data); + SendPacket(ref packet); + return true; + } + + /// + /// Connect an entity with a DeviceNetworkComponent. Note that this will re-use an existing address if the + /// device already had one configured. If there is a clash, the device cannot join the network. + /// + [PublicAPI] + public bool ConnectDevice(Entity ent) + { + if (!_deviceQuery.Resolve(ent.Owner, ref ent.Comp, false)) + return false; + + if (!TryEnsureNetwork(ent.Comp.DeviceNetId, out var deviceNet)) + return false; + + var success = deviceNet.Add(ent!); + Dirty(ent); + return success; + } + + /// + /// Disconnect an entity with a DeviceNetworkComponent. + /// + /// The entity to disconnect from its network. + /// + /// If true, sets to false. + /// That way the device doesn't auto reconnect when a game state is loaded. + /// + /// True if the device was removed from the network successfully. + [PublicAPI] + public bool DisconnectDevice(Entity ent, bool preventAutoConnect = true) + { + if (!_deviceQuery.Resolve(ent.Owner, ref ent.Comp, false)) + return false; + + if (!TryGetNetwork(ent.Comp.DeviceNetId, out var deviceNet)) + return false; + + if (preventAutoConnect) + ent.Comp.AutoConnect = false; + + var result = deviceNet.Remove(ent!); + return result; + } + + /// + /// Checks if a device is already connected to its network. + /// + /// True if the device was found in the network with its corresponding network id. + [PublicAPI] + public bool IsDeviceConnected(Entity ent) + { + var (uid, deviceComp) = ent; + if (!_deviceQuery.Resolve(uid, ref deviceComp, false)) + return false; + + if (!_networks.TryGetValue(deviceComp.DeviceNetId, out var deviceNet)) + return false; + + var device = new Device(ent!); + return deviceNet.Devices.ContainsValue(device); + } + + /// + /// Checks if an address exists in the network with the given netId. + /// + [PublicAPI] + public bool IsAddressPresent(int netId, string? address) + { + if (address == null + || !_networks.TryGetValue(netId, out var network)) + return false; + + return network.Devices.ContainsKey(address); + } + + /// + /// Sets the receive frequency of an entity. + /// + /// The target device. + /// The new frequency. + [PublicAPI] + public void SetReceiveFrequency(Entity ent, uint? frequency) + { + if (!_deviceQuery.Resolve(ent.Owner, ref ent.Comp, false)) + return; + + if (ent.Comp.ReceiveFrequency == frequency) + return; + + if (!TryGetNetwork(ent.Comp.DeviceNetId, out var deviceNet)) + return; + + var oldFrequency = ent.Comp.ReceiveFrequency; + deviceNet.Remove(ent!); + ent.Comp.ReceiveFrequency = frequency; + deviceNet.Add(ent!); + + var ev = new DeviceReceiveFrequencyChangedEvent(oldFrequency, frequency); + RaiseLocalEvent(ent, ref ev); + + Dirty(ent); + } + + /// + /// Sets the transmit frequency of an entity. + /// + /// The target device. + /// The new frequency. + [PublicAPI] + public void SetTransmitFrequency(Entity ent, uint? frequency) + { + if (!_deviceQuery.Resolve(ent.Owner, ref ent.Comp, false)) + return; + + var oldFrequency = ent.Comp.TransmitFrequency; + ent.Comp.TransmitFrequency = frequency; + + var ev = new DeviceReceiveFrequencyChangedEvent(oldFrequency, frequency); + RaiseLocalEvent(ent, ref ev); + } + + /// + /// Sets the target device's ability to receive all network packets, regardless of the address. + /// + [PublicAPI] + public void SetReceiveAll(Entity ent, bool receiveAll) + { + if (!_deviceQuery.Resolve(ent.Owner, ref ent.Comp, false)) + return; + + if (ent.Comp.ReceiveAll == receiveAll) + return; + + if (!TryGetNetwork(ent.Comp.DeviceNetId, out var deviceNet)) + return; + + deviceNet.Remove(ent!); + ent.Comp.ReceiveAll = receiveAll; + deviceNet.Add(ent!); + + var ev = new DeviceReceiveAllChangedEvent(receiveAll); + RaiseLocalEvent(ent, ref ev); + + Dirty(ent); + } + + /// + /// Sets the address of the target device. + /// + [PublicAPI] + public void SetAddress(Entity ent, string address) + { + if (!_deviceQuery.Resolve(ent.Owner, ref ent.Comp, false)) + return; + + if (ent.Comp.Address == address && ent.Comp.CustomAddress) + return; + + if (!TryGetNetwork(ent.Comp.DeviceNetId, out var deviceNet)) + return; + + var oldAddress = ent.Comp.Address; + deviceNet.Remove(ent!); + ent.Comp.CustomAddress = true; + ent.Comp.Address = address; + deviceNet.Add(ent!); + + var ev = new DeviceAddressChangedEvent(oldAddress, address, ent.Comp.CustomAddress); + RaiseLocalEvent(ent, ref ev); + + Dirty(ent); + } + + /// + /// Randomizes the address of the target device. + /// + [PublicAPI] + public void RandomizeAddress(Entity ent) + { + if (!_deviceQuery.Resolve(ent.Owner, ref ent.Comp, false)) + return; + + if (!TryGetNetwork(ent.Comp.DeviceNetId, out var deviceNet)) + return; + + var oldAddress = ent.Comp.Address; + deviceNet.Remove(ent!); + ent.Comp.CustomAddress = false; + ent.Comp.Address = ""; + deviceNet.Add(ent!); + + var ev = new DeviceAddressChangedEvent(oldAddress, ent.Comp.Address, ent.Comp.CustomAddress); + RaiseLocalEvent(ent, ref ev); + + Dirty(ent); + } +} diff --git a/Content.Server/DeviceNetwork/Systems/DeviceNetworkSystem.cs b/Content.Server/DeviceNetwork/Systems/DeviceNetworkSystem.cs index aa58f568ff..83fa7bf50b 100644 --- a/Content.Server/DeviceNetwork/Systems/DeviceNetworkSystem.cs +++ b/Content.Server/DeviceNetwork/Systems/DeviceNetworkSystem.cs @@ -4,357 +4,224 @@ using Content.Shared.DeviceNetwork; using Content.Shared.DeviceNetwork.Components; using Content.Shared.DeviceNetwork.Events; using Content.Shared.DeviceNetwork.Systems; -using Content.Shared.Examine; -using JetBrains.Annotations; using Robust.Shared.Random; -namespace Content.Server.DeviceNetwork.Systems +namespace Content.Server.DeviceNetwork.Systems; + +/// +public sealed partial class DeviceNetworkSystem : SharedDeviceNetworkSystem { + [Dependency] private IRobustRandom _random = default!; + [Dependency] private SharedTransformSystem _transformSystem = default!; + [Dependency] private DeviceListSystem _deviceLists = default!; + [Dependency] private NetworkConfiguratorSystem _configurator = default!; + + [Dependency] private EntityQuery _deviceQuery = default!; + /// - /// Entity system that handles everything device network related. - /// Device networking allows machines and devices to communicate with each other while adhering to restrictions like range or being connected to the same powernet. + /// Basically a cache of devices to connect them together faster. /// - [UsedImplicitly] - public sealed partial class DeviceNetworkSystem : SharedDeviceNetworkSystem + private readonly Dictionary _networks = new(4); + + /// + /// Automatically attempt to connect some devices when a map starts. + /// + [SubscribeLocalEvent] + private void OnMapInit(Entity ent, ref MapInitEvent args) { - [Dependency] private IRobustRandom _random = default!; - [Dependency] private SharedTransformSystem _transformSystem = default!; - [Dependency] private DeviceListSystem _deviceLists = default!; - [Dependency] private NetworkConfiguratorSystem _configurator = default!; - - private readonly Dictionary _networks = new(4); - private readonly Queue _queueA = new(); - private readonly Queue _queueB = new(); - - /// - /// The queue being processed in the current tick - /// - private Queue _activeQueue = null!; - - /// - /// The queue that will be processed in the next tick - /// - private Queue _nextQueue = null!; - - - public override void Initialize() + var device = ent.Comp; + if (device.ReceiveFrequency == null + && device.ReceiveFrequencyId != null + && ProtoMan.TryIndex(device.ReceiveFrequencyId, out var receive)) { - SubscribeLocalEvent(OnMapInit); - SubscribeLocalEvent(OnNetworkShutdown); - SubscribeLocalEvent(OnExamine); - - _activeQueue = _queueA; - _nextQueue = _queueB; + device.ReceiveFrequency = receive.Frequency; } - public override void Update(float frameTime) + if (device.TransmitFrequency == null + && device.TransmitFrequencyId != null + && ProtoMan.TryIndex(device.TransmitFrequencyId, out var xmit)) { - - while (_activeQueue.TryDequeue(out var packet)) - { - SendPacket(packet); - } - - SwapQueues(); + device.TransmitFrequency = xmit.Frequency; } - public override bool QueuePacket(EntityUid uid, string? address, NetworkPayload data, uint? frequency = null, int? network = null, DeviceNetworkComponent? device = null) + if (device.AutoConnect) + ConnectDevice(ent.AsNullable()); + } + + /// + /// Automatically disconnect when an entity with a DeviceNetworkComponent shuts down. + /// + [SubscribeLocalEvent] + private void OnNetworkShutdown(Entity ent, ref ComponentShutdown args) + { + var component = ent.Comp; + foreach (var list in component.DeviceLists) { - if (!Resolve(uid, ref device, false)) - return false; + if (Deleted(list)) + return; - if (device.Address == string.Empty) - return false; + _deviceLists.OnDeviceShutdown(list, ent); + } - frequency ??= device.TransmitFrequency; + foreach (var list in component.Configurators) + { + if (Deleted(list)) + return; - if (frequency == null) - return false; + _configurator.OnDeviceShutdown(list, ent); + } - network ??= device.DeviceNetId; + if (TryGetNetwork(component.DeviceNetId, out var network)) + network.Remove(ent); + } - _nextQueue.Enqueue(new DeviceNetworkPacketEvent(network.Value, address, frequency.Value, device.Address, uid, data)); + /// + /// Try to find a device on a network using its address. + /// + private bool TryGetDevice(int netId, string address, [NotNullWhen(true)] out Device? device) + { + device = null; + if (!TryGetNetwork(netId, out var network) + || !network.Devices.TryGetValue(address, out var foundDevice)) + return false; + + device = foundDevice; + return true; + } + + /// + /// Tries to get an already existing device network, and creates a new network if it doesn't exist. + /// + /// False if the manager is not initialized. + /// + private bool TryEnsureNetwork(int netId, [NotNullWhen(true)] out DeviceNet? network) + { + network = null; + + if (_networks.TryGetValue(netId, out var deviceNet)) + { + network = deviceNet; return true; } - /// - /// Swaps the active queue. - /// Queues are swapped so that packets being sent in the current tick get processed in the next tick. - /// - /// - /// This prevents infinite loops while sending packets - /// - private void SwapQueues() - { - _nextQueue = _activeQueue; - _activeQueue = _activeQueue == _queueA ? _queueB : _queueA; - } + var newDeviceNet = new DeviceNet(netId, _random); + _networks[netId] = newDeviceNet; + network = newDeviceNet; + return true; + } - private void OnExamine(EntityUid uid, DeviceNetworkComponent device, ExaminedEvent args) + /// + /// Tries to get an already existing network. + /// + /// False if the manager is not initialized, or the network wasn't found. + private bool TryGetNetwork(int netId, [NotNullWhen(true)] out DeviceNet? network) + { + network = null; + + if (!_networks.TryGetValue(netId, out var deviceNet)) + return false; + + network = deviceNet; + return true; + } + + private void SendPacket(ref DeviceNetworkPacketEvent packet) where T : INetworkPayload + { + if (!TryEnsureNetwork(packet.NetId, out var network)) + return; + + if (packet.Address == null) { - if (device.ExaminableAddress) + // Broadcast to all listening devices + if (network.ListeningDevices.TryGetValue(packet.Frequency, out var devices) && CheckRecipientsList(packet, ref devices)) { - args.PushText(Loc.GetString("device-address-examine-message", ("address", device.Address))); + var deviceCopy = ArrayPool.Shared.Rent(devices.Count); + devices.CopyTo(deviceCopy); + SendToConnections(deviceCopy.AsSpan(0, devices.Count), packet); + ArrayPool.Shared.Return(deviceCopy); } } - - /// - /// Automatically attempt to connect some devices when a map starts. - /// - private void OnMapInit(EntityUid uid, DeviceNetworkComponent device, MapInitEvent args) + else { - if (device.ReceiveFrequency == null - && device.ReceiveFrequencyId != null - && ProtoMan.TryIndex(device.ReceiveFrequencyId, out var receive)) + var totalDevices = 0; + var hasTargetedDevice = false; + if (network.ReceiveAllDevices.TryGetValue(packet.Frequency, out var devices)) { - device.ReceiveFrequency = receive.Frequency; + totalDevices += devices.Count; } - if (device.TransmitFrequency == null - && device.TransmitFrequencyId != null - && ProtoMan.TryIndex(device.TransmitFrequencyId, out var xmit)) - { - device.TransmitFrequency = xmit.Frequency; - } - - if (device.AutoConnect) - ConnectDevice(uid, device); - } - - private DeviceNet GetNetwork(int netId) - { - if (_networks.TryGetValue(netId, out var deviceNet)) - return deviceNet; - var newDeviceNet = new DeviceNet(netId, _random); - _networks[netId] = newDeviceNet; - return newDeviceNet; - } - - /// - /// Automatically disconnect when an entity with a DeviceNetworkComponent shuts down. - /// - private void OnNetworkShutdown(EntityUid uid, DeviceNetworkComponent component, ComponentShutdown args) - { - foreach (var list in component.DeviceLists) - { - _deviceLists.OnDeviceShutdown(list, (uid, component)); - } - - foreach (var list in component.Configurators) - { - _configurator.OnDeviceShutdown(list, (uid, component)); - } - - GetNetwork(component.DeviceNetId).Remove(component); - } - - /// - /// Connect an entity with a DeviceNetworkComponent. Note that this will re-use an existing address if the - /// device already had one configured. If there is a clash, the device cannot join the network. - /// - public bool ConnectDevice(EntityUid uid, DeviceNetworkComponent? device = null) - { - if (!Resolve(uid, ref device, false)) - return false; - - return GetNetwork(device.DeviceNetId).Add(device); - } - - /// - /// Disconnect an entity with a DeviceNetworkComponent. - /// - public bool DisconnectDevice(EntityUid uid, DeviceNetworkComponent? device, bool preventAutoConnect = true) - { - if (!Resolve(uid, ref device, false)) - return false; - - // If manually disconnected, don't auto reconnect when a game state is loaded. - if (preventAutoConnect) - device.AutoConnect = false; - - return GetNetwork(device.DeviceNetId).Remove(device); - } - - /// - /// Checks if a device is already connected to its network - /// - /// True if the device was found in the network with its corresponding network id - public bool IsDeviceConnected(EntityUid uid, DeviceNetworkComponent? device) - { - if (!Resolve(uid, ref device, false)) - return false; - - if (!_networks.TryGetValue(device.DeviceNetId, out var deviceNet)) - return false; - - return deviceNet.Devices.ContainsValue(device); - } - - /// - /// Checks if an address exists in the network with the given netId - /// - public bool IsAddressPresent(int netId, string? address) - { - if (address == null || !_networks.TryGetValue(netId, out var network)) - return false; - - return network.Devices.ContainsKey(address); - } - - public void SetReceiveFrequency(EntityUid uid, uint? frequency, DeviceNetworkComponent? device = null) - { - if (!Resolve(uid, ref device, false)) + if (!TryGetDevice(packet.NetId, packet.Address, out var device)) return; - if (device.ReceiveFrequency == frequency) return; - - var deviceNet = GetNetwork(device.DeviceNetId); - deviceNet.Remove(device); - device.ReceiveFrequency = frequency; - deviceNet.Add(device); - } - - public void SetTransmitFrequency(EntityUid uid, uint? frequency, DeviceNetworkComponent? device = null) - { - if (Resolve(uid, ref device, false)) - device.TransmitFrequency = frequency; - } - - public void SetReceiveAll(EntityUid uid, bool receiveAll, DeviceNetworkComponent? device = null) - { - if (!Resolve(uid, ref device, false)) - return; - - if (device.ReceiveAll == receiveAll) return; - - var deviceNet = GetNetwork(device.DeviceNetId); - deviceNet.Remove(device); - device.ReceiveAll = receiveAll; - deviceNet.Add(device); - } - - public void SetAddress(EntityUid uid, string address, DeviceNetworkComponent? device = null) - { - if (!Resolve(uid, ref device, false)) - return; - - if (device.Address == address && device.CustomAddress) return; - - var deviceNet = GetNetwork(device.DeviceNetId); - deviceNet.Remove(device); - device.CustomAddress = true; - device.Address = address; - deviceNet.Add(device); - } - - public void RandomizeAddress(EntityUid uid, DeviceNetworkComponent? device = null) - { - if (!Resolve(uid, ref device, false)) - return; - var deviceNet = GetNetwork(device.DeviceNetId); - deviceNet.Remove(device); - device.CustomAddress = false; - device.Address = ""; - deviceNet.Add(device); - } - - /// - /// Try to find a device on a network using its address. - /// - private bool TryGetDevice(int netId, string address, [NotNullWhen(true)] out DeviceNetworkComponent? device) => - GetNetwork(netId).Devices.TryGetValue(address, out device); - - private void SendPacket(DeviceNetworkPacketEvent packet) - { - var network = GetNetwork(packet.NetId); - if (packet.Address == null) + if (!device.Value.ReceiveAll && + device.Value.ReceiveFrequency == packet.Frequency) { - // Broadcast to all listening devices - if (network.ListeningDevices.TryGetValue(packet.Frequency, out var devices) && CheckRecipientsList(packet, ref devices)) - { - var deviceCopy = ArrayPool.Shared.Rent(devices.Count); - devices.CopyTo(deviceCopy); - SendToConnections(deviceCopy.AsSpan(0, devices.Count), packet); - ArrayPool.Shared.Return(deviceCopy); - } + totalDevices += 1; + hasTargetedDevice = true; } - else + var deviceCopy = ArrayPool.Shared.Rent(totalDevices); + if (devices != null) { - var totalDevices = 0; - var hasTargetedDevice = false; - if (network.ReceiveAllDevices.TryGetValue(packet.Frequency, out var devices)) - { - totalDevices += devices.Count; - } - if (TryGetDevice(packet.NetId, packet.Address, out var device) && - !device.ReceiveAll && - device.ReceiveFrequency == packet.Frequency) - { - totalDevices += 1; - hasTargetedDevice = true; - } - var deviceCopy = ArrayPool.Shared.Rent(totalDevices); - if (devices != null) - { - devices.CopyTo(deviceCopy); - } - if (hasTargetedDevice) - { - deviceCopy[totalDevices - 1] = device!; - } - SendToConnections(deviceCopy.AsSpan(0, totalDevices), packet); - ArrayPool.Shared.Return(deviceCopy); + devices.CopyTo(deviceCopy); } + if (hasTargetedDevice) + { + deviceCopy[totalDevices - 1] = device.Value; + } + SendToConnections(deviceCopy.AsSpan(0, totalDevices), packet); + ArrayPool.Shared.Return(deviceCopy); } + } - /// - /// Sends the to the sending entity if the packets SendBeforeBroadcastAttemptEvent field is set to true. - /// The recipients is set to the modified recipient list. - /// - /// false if the broadcast was canceled - private bool CheckRecipientsList(DeviceNetworkPacketEvent packet, ref HashSet recipients) - { - if (!_networks.ContainsKey(packet.NetId) || !_networks[packet.NetId].Devices.ContainsKey(packet.SenderAddress)) - return false; - - var sender = _networks[packet.NetId].Devices[packet.SenderAddress]; - if (!sender.SendBroadcastAttemptEvent) - return true; - - var beforeBroadcastAttemptEvent = new BeforeBroadcastAttemptEvent(recipients); - RaiseLocalEvent(packet.Sender, beforeBroadcastAttemptEvent, true); - - if (beforeBroadcastAttemptEvent.Cancelled || beforeBroadcastAttemptEvent.ModifiedRecipients == null) - return false; - - recipients = beforeBroadcastAttemptEvent.ModifiedRecipients; + /// + /// Sends the to the sending entity if the packets SendBeforeBroadcastAttemptEvent field is set to true. + /// The recipients is set to the modified recipient list. + /// + /// false if the broadcast was canceled + private bool CheckRecipientsList(DeviceNetworkPacketEvent packet, ref HashSet recipients) where T : INetworkPayload + { + if (!packet.Sender.Comp.SendBroadcastAttemptEvent) return true; + + var beforeBroadcastAttemptEvent = new BeforeBroadcastAttemptEvent(recipients); + RaiseLocalEvent(packet.Sender, ref beforeBroadcastAttemptEvent, true); + + if (beforeBroadcastAttemptEvent.Cancelled || beforeBroadcastAttemptEvent.ModifiedRecipients == null) + return false; + + recipients = beforeBroadcastAttemptEvent.ModifiedRecipients; + return true; + } + + private void SendToConnections(ReadOnlySpan connections, DeviceNetworkPacketEvent packet) where T : INetworkPayload + { + if (Deleted(packet.Sender)) + { + return; } - private void SendToConnections(ReadOnlySpan connections, DeviceNetworkPacketEvent packet) + var xform = Transform(packet.Sender); + + var senderPos = _transformSystem.GetWorldPosition(xform); + + foreach (var connection in connections) { - if (Deleted(packet.Sender)) - { - return; - } + if (connection.Owner == packet.Sender.Owner) + continue; - var xform = Transform(packet.Sender); + var beforeEv = new BeforePacketSentEvent(packet.NetId, + packet.Address, + packet.Frequency, + packet.SenderAddress, + packet.Sender, + xform, + senderPos); + RaiseLocalEvent(connection.Owner, ref beforeEv); - var senderPos = _transformSystem.GetWorldPosition(xform); + if (beforeEv.Cancelled) + continue; - foreach (var connection in connections) - { - if (connection.Owner == packet.Sender) - continue; - - BeforePacketSentEvent beforeEv = new(packet.Sender, xform, senderPos, connection.NetIdEnum.ToString(), packet.Frequency); - RaiseLocalEvent(connection.Owner, beforeEv, false); - - if (!beforeEv.Cancelled) - RaiseLocalEvent(connection.Owner, packet, false); - else - beforeEv.Uncancel(); - } + RaiseLocalEvent(connection.Owner, ref packet); } } } diff --git a/Content.Server/DeviceNetwork/Systems/Devices/ApcNetSwitchSystem.cs b/Content.Server/DeviceNetwork/Systems/Devices/ApcNetSwitchSystem.cs index a432c10291..27ab0c6139 100644 --- a/Content.Server/DeviceNetwork/Systems/Devices/ApcNetSwitchSystem.cs +++ b/Content.Server/DeviceNetwork/Systems/Devices/ApcNetSwitchSystem.cs @@ -1,8 +1,8 @@ using Content.Server.DeviceNetwork.Components.Devices; -using Content.Shared.DeviceNetwork; using Content.Shared.DeviceNetwork.Events; using Content.Shared.Interaction; using Content.Shared.DeviceNetwork.Components; +using Content.Shared.DeviceNetwork.Payloads; namespace Content.Server.DeviceNetwork.Systems.Devices { @@ -15,43 +15,38 @@ namespace Content.Server.DeviceNetwork.Systems.Devices base.Initialize(); SubscribeLocalEvent(OnInteracted); - SubscribeLocalEvent(OnPackedReceived); } - /// - /// Toggles the state of the switch and sents a command with the - /// value set to state. - /// - private void OnInteracted(EntityUid uid, ApcNetSwitchComponent component, InteractHandEvent args) + private void OnInteracted(Entity ent, ref InteractHandEvent args) { - if (!TryComp(uid, out DeviceNetworkComponent? networkComponent)) return; + var (uid, component) = ent; + if (!TryComp(uid, out DeviceNetworkComponent? networkComponent)) + return; component.State = !component.State; if (networkComponent.TransmitFrequency == null) return; - var payload = new NetworkPayload + var payload = new ApcNetTogglePayload { - [DeviceNetworkConstants.Command] = DeviceNetworkConstants.CmdSetState, - [DeviceNetworkConstants.StateEnabled] = component.State, + Enabled = component.State, }; - _deviceNetworkSystem.QueuePacket(uid, null, payload, device: networkComponent); + _deviceNetworkSystem.SendPacket(uid, null, ref payload); args.Handled = true; } - /// - /// Listens to the command of other switches to sync state - /// - private void OnPackedReceived(EntityUid uid, ApcNetSwitchComponent component, DeviceNetworkPacketEvent args) + [SubscribeLocalEvent] + private void OnPackedReceived(Entity ent, ref DeviceNetworkPacketEvent args) { - if (!TryComp(uid, out DeviceNetworkComponent? networkComponent) || args.SenderAddress == networkComponent.Address) return; - if (!args.Data.TryGetValue(DeviceNetworkConstants.Command, out string? command) || command != DeviceNetworkConstants.CmdSetState) return; - if (!args.Data.TryGetValue(DeviceNetworkConstants.StateEnabled, out bool enabled)) return; + var (uid, component) = ent; + if (!TryComp(uid, out DeviceNetworkComponent? networkComponent) + || args.SenderAddress == networkComponent.Address) + return; - component.State = enabled; + component.State = args.Data.Enabled; } } } diff --git a/Content.Server/DeviceNetwork/Systems/SingletonDeviceNetServerSystem.cs b/Content.Server/DeviceNetwork/Systems/SingletonDeviceNetServerSystem.cs index b507284852..97098c75ad 100644 --- a/Content.Server/DeviceNetwork/Systems/SingletonDeviceNetServerSystem.cs +++ b/Content.Server/DeviceNetwork/Systems/SingletonDeviceNetServerSystem.cs @@ -103,10 +103,10 @@ public sealed partial class SingletonDeviceNetServerSystem : EntitySystem var connectedEvent = new DeviceNetServerConnectedEvent(); RaiseLocalEvent(uid, ref connectedEvent); - if (_deviceNetworkSystem.IsDeviceConnected(uid, device)) + if (_deviceNetworkSystem.IsDeviceConnected((uid, device))) return; - _deviceNetworkSystem.ConnectDevice(uid, device); + _deviceNetworkSystem.ConnectDevice((uid, device)); } /// @@ -122,7 +122,7 @@ public sealed partial class SingletonDeviceNetServerSystem : EntitySystem var disconnectedEvent = new DeviceNetServerDisconnectedEvent(); RaiseLocalEvent(uid, ref disconnectedEvent); - _deviceNetworkSystem.DisconnectDevice(uid, device, false); + _deviceNetworkSystem.DisconnectDevice((uid, device), false); } } diff --git a/Content.Server/DeviceNetwork/Systems/StationLimitedNetworkSystem.cs b/Content.Server/DeviceNetwork/Systems/StationLimitedNetworkSystem.cs index fbb8b2e35a..7120e452f9 100644 --- a/Content.Server/DeviceNetwork/Systems/StationLimitedNetworkSystem.cs +++ b/Content.Server/DeviceNetwork/Systems/StationLimitedNetworkSystem.cs @@ -2,7 +2,6 @@ using Content.Server.DeviceNetwork.Components; using Content.Server.Station.Systems; using Content.Shared.DeviceNetwork.Events; using JetBrains.Annotations; -using Robust.Shared.Map; namespace Content.Server.DeviceNetwork.Systems { @@ -54,14 +53,15 @@ namespace Content.Server.DeviceNetwork.Systems /// /// Checks if both devices are limited to the same station /// - private void OnBeforePacketSent(EntityUid uid, StationLimitedNetworkComponent component, BeforePacketSentEvent args) + private void OnBeforePacketSent(Entity ent, ref BeforePacketSentEvent args) { + var (uid, component) = ent; if (!component.StationId.HasValue) TrySetStationId(uid, component); if (!CheckStationId(args.Sender, component.AllowNonStationPackets, component.StationId)) { - args.Cancel(); + args.Cancelled = true; } } diff --git a/Content.Server/DeviceNetwork/Systems/WiredNetworkSystem.cs b/Content.Server/DeviceNetwork/Systems/WiredNetworkSystem.cs index f8258ecaf6..52700a175e 100644 --- a/Content.Server/DeviceNetwork/Systems/WiredNetworkSystem.cs +++ b/Content.Server/DeviceNetwork/Systems/WiredNetworkSystem.cs @@ -16,11 +16,11 @@ namespace Content.Server.DeviceNetwork.Systems /// /// Checks if both devices are on the same grid /// - private void OnBeforePacketSent(EntityUid uid, WiredNetworkComponent component, BeforePacketSentEvent args) + private void OnBeforePacketSent(Entity ent, ref BeforePacketSentEvent args) { - if (Transform(uid).GridUid != args.SenderTransform.GridUid) + if (Transform(ent).GridUid != args.SenderTransform.GridUid) { - args.Cancel(); + args.Cancelled = true; } } diff --git a/Content.Server/DeviceNetwork/Systems/WirelessNetworkSystem.cs b/Content.Server/DeviceNetwork/Systems/WirelessNetworkSystem.cs index 0506f1cce6..3b72a97d35 100644 --- a/Content.Server/DeviceNetwork/Systems/WirelessNetworkSystem.cs +++ b/Content.Server/DeviceNetwork/Systems/WirelessNetworkSystem.cs @@ -18,10 +18,10 @@ namespace Content.Server.DeviceNetwork.Systems /// /// Gets the position of both the sending and receiving entity and checks if the receiver is in range of the sender. /// - private void OnBeforePacketSent(EntityUid uid, WirelessNetworkComponent component, BeforePacketSentEvent args) + private void OnBeforePacketSent(Entity ent, ref BeforePacketSentEvent args) { var ownPosition = args.SenderPosition; - var xform = Transform(uid); + var xform = Transform(ent); // not a wireless to wireless connection, just let it happen if (!TryComp(args.Sender, out var sendingComponent)) @@ -30,7 +30,7 @@ namespace Content.Server.DeviceNetwork.Systems if (xform.MapID != args.SenderTransform.MapID || (ownPosition - _transformSystem.GetWorldPosition(xform)).Length() > sendingComponent.Range) { - args.Cancel(); + args.Cancelled = true; } } } diff --git a/Content.Server/Fax/AdminUI/AdminFaxEui.cs b/Content.Server/Fax/AdminUI/AdminFaxEui.cs index 21089befe0..9e5b5e0f17 100644 --- a/Content.Server/Fax/AdminUI/AdminFaxEui.cs +++ b/Content.Server/Fax/AdminUI/AdminFaxEui.cs @@ -1,5 +1,3 @@ -using Content.Server.Construction.Conditions; -using Content.Server.DeviceNetwork.Components; using Content.Server.EUI; using Content.Shared.Eui; using Content.Shared.Fax.Components; diff --git a/Content.Server/Fax/FaxConstants.cs b/Content.Server/Fax/FaxConstants.cs deleted file mode 100644 index 8578172381..0000000000 --- a/Content.Server/Fax/FaxConstants.cs +++ /dev/null @@ -1,34 +0,0 @@ -namespace Content.Server.Fax; - -public static class FaxConstants -{ - // Commands - - /** - * Used to get other faxes connected to current network - */ - public const string FaxPingCommand = "fax_ping"; - - /** - * Used as response to ping command - */ - public const string FaxPongCommand = "fax_pong"; - - /** - * Used when fax sending data to destination fax - */ - public const string FaxPrintCommand = "fax_print"; - - // Data - - public const string FaxNameData = "fax_data_name"; - public const string FaxPaperNameData = "fax_data_title"; - public const string FaxPaperLabelData = "fax_data_label"; - public const string FaxPaperPrototypeData = "fax_data_prototype"; - public const string FaxPaperContentData = "fax_data_content"; - public const string FaxPaperStampStateData = "fax_data_stamp_state"; - public const string FaxPaperStampedByData = "fax_data_stamped_by"; - public const string FaxSyndicateData = "fax_data_i_am_syndicate"; - public const string FaxPaperLockedData = "fax_data_locked"; - public const string FaxPaperSenderFaxNameData = "fax_data_sender_fax_name"; -} diff --git a/Content.Server/Fax/FaxSystem.cs b/Content.Server/Fax/FaxSystem.cs index cddb9b4854..ecca1e91f0 100644 --- a/Content.Server/Fax/FaxSystem.cs +++ b/Content.Server/Fax/FaxSystem.cs @@ -8,8 +8,6 @@ using Content.Server.Tools; using Content.Shared.Administration.Logs; using Content.Shared.Containers.ItemSlots; using Content.Shared.Database; -using Content.Shared.DeviceNetwork; -using Content.Shared.DeviceNetwork.Components; using Content.Shared.DeviceNetwork.Events; using Content.Shared.Emag.Systems; using Content.Shared.Fax; @@ -31,7 +29,6 @@ using Robust.Shared.Audio.Systems; using Robust.Shared.Containers; using Robust.Shared.Player; using Robust.Shared.Prototypes; -using Robust.Shared.Timing; namespace Content.Server.Fax; @@ -71,7 +68,6 @@ public sealed partial class FaxSystem : EntitySystem SubscribeLocalEvent(OnItemSlotChanged); SubscribeLocalEvent(OnItemSlotChanged); SubscribeLocalEvent(OnPowerChanged); - SubscribeLocalEvent(OnPacketReceived); // Interaction SubscribeLocalEvent(OnInteractUsing); @@ -261,56 +257,32 @@ public sealed partial class FaxSystem : EntitySystem args.Handled = true; } - private void OnPacketReceived(EntityUid uid, FaxMachineComponent component, DeviceNetworkPacketEvent args) + [SubscribeLocalEvent] + private void OnPingPayload(Entity ent, ref DeviceNetworkPacketEvent args) { - if (!HasComp(uid) || string.IsNullOrEmpty(args.SenderAddress)) + var isForSyndie = _emag.CheckFlag(ent.Owner, EmagType.Interaction) && args.Data.IsSyndicate; + if (!isForSyndie && !ent.Comp.ResponsePings) return; - if (args.Data.TryGetValue(DeviceNetworkConstants.Command, out string? command)) + var pong = new FaxPongPayload { - switch (command) - { - case FaxConstants.FaxPingCommand: - var isForSyndie = _emag.CheckFlag(uid, EmagType.Interaction) && - args.Data.ContainsKey(FaxConstants.FaxSyndicateData); - if (!isForSyndie && !component.ResponsePings) - return; + FaxName = ent.Comp.FaxName, + }; - var payload = new NetworkPayload() - { - { DeviceNetworkConstants.Command, FaxConstants.FaxPongCommand }, - { FaxConstants.FaxNameData, component.FaxName } - }; - _deviceNetworkSystem.QueuePacket(uid, args.SenderAddress, payload); + _deviceNetworkSystem.SendPacket(ent.Owner, args.SenderAddress, ref pong); + } - break; - case FaxConstants.FaxPongCommand: - if (!args.Data.TryGetValue(FaxConstants.FaxNameData, out string? faxName)) - return; + [SubscribeLocalEvent] + private void OnPongPayload(Entity ent, ref DeviceNetworkPacketEvent args) + { + ent.Comp.KnownFaxes[args.SenderAddress] = args.Data.FaxName; + UpdateUserInterface(ent.Owner, ent.Comp); + } - component.KnownFaxes[args.SenderAddress] = faxName; - - UpdateUserInterface(uid, component); - - break; - case FaxConstants.FaxPrintCommand: - if (!args.Data.TryGetValue(FaxConstants.FaxPaperNameData, out string? name) || - !args.Data.TryGetValue(FaxConstants.FaxPaperContentData, out string? content)) - return; - - args.Data.TryGetValue(FaxConstants.FaxPaperLabelData, out string? label); - args.Data.TryGetValue(FaxConstants.FaxPaperStampStateData, out string? stampState); - args.Data.TryGetValue(FaxConstants.FaxPaperStampedByData, out List? stampedBy); - args.Data.TryGetValue(FaxConstants.FaxPaperPrototypeData, out string? prototypeId); - args.Data.TryGetValue(FaxConstants.FaxPaperLockedData, out bool? locked); - args.Data.TryGetValue(FaxConstants.FaxPaperSenderFaxNameData, out string? senderFaxName); - - var printout = new FaxPrintout(content, name, label, prototypeId, stampState, stampedBy, locked ?? false, senderFaxName); - Receive(uid, printout, args.SenderAddress); - - break; - } - } + [SubscribeLocalEvent] + private void OnPrintPayload(Entity ent, ref DeviceNetworkPacketEvent args) + { + Receive(ent, args.Data.Data, args.SenderAddress); } private void OnToggleInterface(EntityUid uid, FaxMachineComponent component, AfterActivatableUIOpenEvent args) @@ -413,15 +385,12 @@ public sealed partial class FaxSystem : EntitySystem component.DestinationFaxAddress = null; component.KnownFaxes.Clear(); - var payload = new NetworkPayload() + var payload = new FaxPingPayload { - { DeviceNetworkConstants.Command, FaxConstants.FaxPingCommand } + IsSyndicate = _emag.CheckFlag(uid, EmagType.Interaction), }; - if (_emag.CheckFlag(uid, EmagType.Interaction)) - payload.Add(FaxConstants.FaxSyndicateData, true); - - _deviceNetworkSystem.QueuePacket(uid, null, payload); + _deviceNetworkSystem.SendPacket(uid, null, ref payload); } /// @@ -522,57 +491,26 @@ public sealed partial class FaxSystem : EntitySystem !TryComp(sendEntity, out var paper)) return; + if (metadata.EntityPrototype == null) + return; + TryComp(sendEntity, out var nameMod); TryComp(sendEntity, out var labelComponent); - var content = paper.Content; - - if (component.AddSenderInfo) + var payload = new FaxPrintPayload { - var faxMachineAddress = TryComp(uid, out var deviceNetworkComponent) - ? deviceNetworkComponent.Address - : Loc.GetString("device-address-unknown"); - - var time = _gameTicker.RoundDuration(); - var timeString = TimeSpan.FromSeconds(Math.Truncate(time.TotalSeconds)).ToString(); - - content += "\n"; - content += Loc.GetString(component.SenderInfo, - ("sender_name", component.FaxName), - ("sender_addr", faxMachineAddress), - ("recipient_name", component.DestinationFaxName ?? Loc.GetString("fax-machine-popup-source-unknown")), - ("recipient_addr", component.DestinationFaxAddress), - ("time", timeString) - ); - } - - var payload = new NetworkPayload() - { - { DeviceNetworkConstants.Command, FaxConstants.FaxPrintCommand }, - { FaxConstants.FaxPaperNameData, nameMod?.BaseName ?? metadata.EntityName }, - { FaxConstants.FaxPaperLabelData, labelComponent?.CurrentLabel }, - { FaxConstants.FaxPaperContentData, content }, - { FaxConstants.FaxPaperLockedData, paper.EditingDisabled }, - { FaxConstants.FaxPaperSenderFaxNameData, component.FaxName ?? Loc.GetString("fax-machine-popup-source-unknown") } + Data = new FaxPrintout( + paper.Content, + nameMod?.BaseName ?? metadata.EntityName, + labelComponent?.CurrentLabel, + metadata.EntityPrototype.ID, + paper.StampState, + paper.StampedBy, + paper.EditingDisabled), }; - if (metadata.EntityPrototype != null) - { - // TODO: Ideally, we could just make a copy of the whole entity when it's - // faxed, in order to preserve visuals, etc.. This functionality isn't - // available yet, so we'll pass along the originating prototypeId and fall - // back to component.PrintPaperId in SpawnPaperFromQueue if we can't find one here. - payload[FaxConstants.FaxPaperPrototypeData] = metadata.EntityPrototype.ID; - } - - if (paper.StampState != null) - { - payload[FaxConstants.FaxPaperStampStateData] = paper.StampState; - payload[FaxConstants.FaxPaperStampedByData] = paper.StampedBy; - } - - _deviceNetworkSystem.QueuePacket(uid, component.DestinationFaxAddress, payload); + _deviceNetworkSystem.SendPacket(uid, component.DestinationFaxAddress, ref payload); _adminLogger.Add(LogType.Action, LogImpact.Low, diff --git a/Content.Server/GameTicking/Rules/ParadoxCloneRuleSystem.cs b/Content.Server/GameTicking/Rules/ParadoxCloneRuleSystem.cs index e9107e9851..447a25499f 100644 --- a/Content.Server/GameTicking/Rules/ParadoxCloneRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/ParadoxCloneRuleSystem.cs @@ -5,7 +5,7 @@ using Content.Server.Medical.SuitSensors; using Content.Server.Objectives.Components; using Content.Shared.GameTicking.Components; using Content.Shared.Gibbing.Components; -using Content.Shared.Medical.SuitSensor; +using Content.Shared.Medical.SuitSensors; using Content.Shared.Mind; using Content.Shared.Objectives.Systems; using Robust.Shared.Random; diff --git a/Content.Server/Medical/CrewMonitoring/CrewMonitoringConsoleComponent.cs b/Content.Server/Medical/CrewMonitoring/CrewMonitoringConsoleComponent.cs index c2d7124194..91bfb02d51 100644 --- a/Content.Server/Medical/CrewMonitoring/CrewMonitoringConsoleComponent.cs +++ b/Content.Server/Medical/CrewMonitoring/CrewMonitoringConsoleComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Medical.SuitSensor; +using Content.Shared.Medical.SuitSensors; namespace Content.Server.Medical.CrewMonitoring; diff --git a/Content.Server/Medical/CrewMonitoring/CrewMonitoringConsoleSystem.cs b/Content.Server/Medical/CrewMonitoring/CrewMonitoringConsoleSystem.cs index 6399250475..d3e6fb77e0 100644 --- a/Content.Server/Medical/CrewMonitoring/CrewMonitoringConsoleSystem.cs +++ b/Content.Server/Medical/CrewMonitoring/CrewMonitoringConsoleSystem.cs @@ -1,12 +1,8 @@ using System.Linq; -using Content.Server.DeviceNetwork; -using Content.Server.DeviceNetwork.Systems; -using Content.Shared.PowerCell; -using Content.Shared.DeviceNetwork; using Content.Shared.DeviceNetwork.Events; using Content.Shared.Medical.CrewMonitoring; -using Content.Shared.Medical.SuitSensor; using Content.Shared.Pinpointer; +using Content.Shared.PowerCell; using Robust.Server.GameObjects; namespace Content.Server.Medical.CrewMonitoring; @@ -20,7 +16,6 @@ public sealed partial class CrewMonitoringConsoleSystem : EntitySystem { base.Initialize(); SubscribeLocalEvent(OnRemove); - SubscribeLocalEvent(OnPacketReceived); SubscribeLocalEvent(OnUIOpened); } @@ -29,22 +24,11 @@ public sealed partial class CrewMonitoringConsoleSystem : EntitySystem component.ConnectedSensors.Clear(); } - private void OnPacketReceived(EntityUid uid, CrewMonitoringConsoleComponent component, DeviceNetworkPacketEvent args) + [SubscribeLocalEvent] + private void OnSuitSensorBroadcast(Entity ent, ref DeviceNetworkPacketEvent args) { - var payload = args.Data; - - // Check command - if (!payload.TryGetValue(DeviceNetworkConstants.Command, out string? command)) - return; - - if (command != DeviceNetworkConstants.CmdUpdatedState) - return; - - if (!payload.TryGetValue(SuitSensorConstants.NET_STATUS_COLLECTION, out Dictionary? sensorStatus)) - return; - - component.ConnectedSensors = sensorStatus; - UpdateUserInterface(uid, component); + ent.Comp.ConnectedSensors = args.Data.SensorStatus; + UpdateUserInterface(ent, ent.Comp); } private void OnUIOpened(EntityUid uid, CrewMonitoringConsoleComponent component, BoundUIOpenedEvent args) diff --git a/Content.Server/Medical/CrewMonitoring/CrewMonitoringServerComponent.cs b/Content.Server/Medical/CrewMonitoring/CrewMonitoringServerComponent.cs index 7eeafb49c6..26b5387412 100644 --- a/Content.Server/Medical/CrewMonitoring/CrewMonitoringServerComponent.cs +++ b/Content.Server/Medical/CrewMonitoring/CrewMonitoringServerComponent.cs @@ -1,5 +1,4 @@ -using Content.Shared.Medical.SuitSensor; -using Robust.Shared.Map; +using Content.Shared.Medical.SuitSensors; namespace Content.Server.Medical.CrewMonitoring; diff --git a/Content.Server/Medical/CrewMonitoring/CrewMonitoringServerSystem.cs b/Content.Server/Medical/CrewMonitoring/CrewMonitoringServerSystem.cs index 87e9fb48d4..5b87771c4a 100644 --- a/Content.Server/Medical/CrewMonitoring/CrewMonitoringServerSystem.cs +++ b/Content.Server/Medical/CrewMonitoring/CrewMonitoringServerSystem.cs @@ -1,16 +1,14 @@ using Content.Server.DeviceNetwork.Systems; -using Content.Server.Medical.SuitSensors; -using Content.Shared.DeviceNetwork; using Content.Shared.DeviceNetwork.Events; -using Content.Shared.Medical.SuitSensor; using Robust.Shared.Timing; using Content.Shared.DeviceNetwork.Components; +using Content.Shared.Medical.CrewMonitoring; +using Content.Shared.Medical.SuitSensors; namespace Content.Server.Medical.CrewMonitoring; public sealed partial class CrewMonitoringServerSystem : EntitySystem { - [Dependency] private SuitSensorSystem _sensors = default!; [Dependency] private IGameTiming _gameTiming = default!; [Dependency] private DeviceNetworkSystem _deviceNetworkSystem = default!; [Dependency] private SingletonDeviceNetServerSystem _singletonServerSystem = default!; @@ -22,7 +20,6 @@ public sealed partial class CrewMonitoringServerSystem : EntitySystem { base.Initialize(); SubscribeLocalEvent(OnRemove); - SubscribeLocalEvent(OnPacketReceived); SubscribeLocalEvent(OnDisconnected); } @@ -51,14 +48,12 @@ public sealed partial class CrewMonitoringServerSystem : EntitySystem /// /// Adds or updates a sensor status entry if the received package is a sensor status update /// - private void OnPacketReceived(EntityUid uid, CrewMonitoringServerComponent component, DeviceNetworkPacketEvent args) + [SubscribeLocalEvent] + private void OnSensorStatus(Entity ent, ref DeviceNetworkPacketEvent args) { - var sensorStatus = _sensors.PacketToSuitSensor(args.Data); - if (sensorStatus == null) - return; - - sensorStatus.Timestamp = _gameTiming.CurTime; - component.SensorStatus[args.SenderAddress] = sensorStatus; + var sensorData = args.Data.Data; + sensorData.Timestamp = _gameTiming.CurTime; + ent.Comp.SensorStatus[args.SenderAddress] = sensorData; } /// @@ -93,13 +88,12 @@ public sealed partial class CrewMonitoringServerSystem : EntitySystem if (!Resolve(uid, ref serverComponent, ref device)) return; - var payload = new NetworkPayload() + var payload = new BroadcastSuitSensorStatePayload { - [DeviceNetworkConstants.Command] = DeviceNetworkConstants.CmdUpdatedState, - [SuitSensorConstants.NET_STATUS_COLLECTION] = serverComponent.SensorStatus + SensorStatus = serverComponent.SensorStatus, }; - _deviceNetworkSystem.QueuePacket(uid, null, payload, device: device); + _deviceNetworkSystem.SendPacket((uid, device), null, ref payload); } /// diff --git a/Content.Server/Medical/SuitSensors/SuitSensorSystem.cs b/Content.Server/Medical/SuitSensors/SuitSensorSystem.cs index 2ae1ce7cca..68f05b00dd 100644 --- a/Content.Server/Medical/SuitSensors/SuitSensorSystem.cs +++ b/Content.Server/Medical/SuitSensors/SuitSensorSystem.cs @@ -46,9 +46,6 @@ public sealed partial class SuitSensorSystem : SharedSuitSensorSystem sensor.ConnectedServer = address; } - // Send it to the connected server - var payload = SuitSensorToPacket(status); - // Clear the connected server if its address isn't on the network if (!_deviceNetworkSystem.IsAddressPresent(device.DeviceNetId, sensor.ConnectedServer)) { @@ -56,7 +53,11 @@ public sealed partial class SuitSensorSystem : SharedSuitSensorSystem continue; } - _deviceNetworkSystem.QueuePacket(uid, sensor.ConnectedServer, payload, device: device); + var payload = new SuitSensorStatusPayload + { + Data = status.Value, + }; + _deviceNetworkSystem.SendPacket((uid, device), sensor.ConnectedServer, ref payload); } } } diff --git a/Content.Server/PDA/PdaSystem.cs b/Content.Server/PDA/PdaSystem.cs index 23c3b1923f..cfe69e6b58 100644 --- a/Content.Server/PDA/PdaSystem.cs +++ b/Content.Server/PDA/PdaSystem.cs @@ -1,13 +1,11 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; using Content.Server.Access.Systems; -using Content.Server.CartridgeLoader; using Content.Server.Chat.Managers; using Content.Server.Instruments; using Content.Server.PDA.Ringer; using Content.Server.Station.Systems; using Content.Server.Store.Systems; -using Content.Server.Traitor.Uplink; using Content.Shared.Access.Components; using Content.Shared.AlertLevel; using Content.Shared.CartridgeLoader; @@ -343,7 +341,7 @@ namespace Content.Server.PDA if (TryComp(uid, out DeviceNetworkComponent? deviceNetworkComponent)) { - address = deviceNetworkComponent?.Address; + address = deviceNetworkComponent.Address; } return address; diff --git a/Content.Server/Power/Generation/Teg/TegSensorData.cs b/Content.Server/Power/Generation/Teg/TegSensorData.cs deleted file mode 100644 index f994b5762c..0000000000 --- a/Content.Server/Power/Generation/Teg/TegSensorData.cs +++ /dev/null @@ -1,52 +0,0 @@ -using Content.Server.Power.Components; - -namespace Content.Server.Power.Generation.Teg; - -/// -/// Sensor data reported by the when queried over the device network. -/// -/// -public sealed class TegSensorData -{ - /// - /// Information for the A-side circulator. - /// - public Circulator CirculatorA; - - /// - /// Information for the B-side circulator. - /// - public Circulator CirculatorB; - - /// - /// The amount of energy (Joules) generated by the TEG last atmos tick. - /// - /// - public float LastGeneration; - - /// - /// Ramping position for the TEG power generation. - /// - /// - public float RampPosition; - - /// - /// Power (Watts) actually being supplied by the TEG to connected power network. - /// - /// - public float PowerOutput; - - /// - /// Information for a single TEG circulator. - /// - /// Pressure measured at the circulator's input pipe - /// Pressure measured at the circulator's output pipe - /// Temperature measured at the circulator's input pipe - /// Temperature measured at the circulator's output pipe - public record struct Circulator( - float InletPressure, - float OutletPressure, - float InletTemperature, - float OutletTemperature); -} - diff --git a/Content.Server/Power/Generation/Teg/TegSystem.cs b/Content.Server/Power/Generation/Teg/TegSystem.cs index d1e18875bf..42feb1f991 100644 --- a/Content.Server/Power/Generation/Teg/TegSystem.cs +++ b/Content.Server/Power/Generation/Teg/TegSystem.cs @@ -5,7 +5,6 @@ using Content.Server.NodeContainer.Nodes; using Content.Server.Power.Components; using Content.Shared.Atmos; using Content.Shared.Atmos.Components; -using Content.Shared.DeviceNetwork; using Content.Shared.DeviceNetwork.Events; using Content.Shared.Examine; using Content.Shared.NodeContainer; @@ -43,7 +42,7 @@ namespace Content.Server.Power.Generation.Teg; /// /// /// -/// +/// public sealed partial class TegSystem : EntitySystem { /// @@ -61,11 +60,6 @@ public sealed partial class TegSystem : EntitySystem /// private const string NodeNameOutlet = "outlet"; - /// - /// Device network command to have the TEG output a object for its last statistics. - /// - public const string DeviceNetworkCommandSyncData = "teg_sync_data"; - [Dependency] private AmbientSoundSystem _ambientSound = default!; [Dependency] private AppearanceSystem _appearance = default!; [Dependency] private AtmosphereSystem _atmosphere = default!; @@ -80,7 +74,6 @@ public sealed partial class TegSystem : EntitySystem SubscribeLocalEvent(GeneratorUpdate); SubscribeLocalEvent(GeneratorPowerChange); - SubscribeLocalEvent(DeviceNetworkPacketReceived); SubscribeLocalEvent(GeneratorExamined); } @@ -361,46 +354,32 @@ public sealed partial class TegSystem : EntitySystem return (inlet, outlet); } - private void DeviceNetworkPacketReceived( - EntityUid uid, - TegGeneratorComponent component, - DeviceNetworkPacketEvent args) + [SubscribeLocalEvent] + private void OnSyncPayload(Entity ent, ref DeviceNetworkPacketEvent args) { - if (!args.Data.TryGetValue(DeviceNetworkConstants.Command, out string? cmd)) + var group = GetNodeGroup(ent.Owner); + if (group is not { IsFullyBuilt: true }) return; - switch (cmd) + var supplier = Comp(ent); + + var dataPayload = new TegSensorPayload { - case DeviceNetworkCommandSyncData: - var group = GetNodeGroup(uid); - if (group is not { IsFullyBuilt: true }) - return; + CirculatorA = GetCirculatorSensorData(group.CirculatorA!.Owner), + CirculatorB = GetCirculatorSensorData(group.CirculatorB!.Owner), + LastGeneration = ent.Comp.LastGeneration, + PowerOutput = supplier.CurrentSupply, + RampPosition = ent.Comp.RampPosition, + }; - var supplier = Comp(uid); - - var payload = new NetworkPayload - { - [DeviceNetworkConstants.Command] = DeviceNetworkCommandSyncData, - [DeviceNetworkCommandSyncData] = new TegSensorData - { - CirculatorA = GetCirculatorSensorData(group.CirculatorA!.Owner), - CirculatorB = GetCirculatorSensorData(group.CirculatorB!.Owner), - LastGeneration = component.LastGeneration, - PowerOutput = supplier.CurrentSupply, - RampPosition = component.RampPosition - } - }; - - _deviceNetwork.QueuePacket(uid, args.SenderAddress, payload); - break; - } + _deviceNetwork.SendPacket(ent.Owner, args.SenderAddress, ref dataPayload); } - private TegSensorData.Circulator GetCirculatorSensorData(EntityUid circulator) + private Circulator GetCirculatorSensorData(EntityUid circulator) { var (inlet, outlet) = GetPipes(circulator); - return new TegSensorData.Circulator( + return new Circulator( inlet.Air.Pressure, outlet.Air.Pressure, inlet.Air.Temperature, diff --git a/Content.Server/Robotics/Systems/RoboticsConsoleSystem.cs b/Content.Server/Robotics/Systems/RoboticsConsoleSystem.cs index 0a7b26ceac..16d26deec2 100644 --- a/Content.Server/Robotics/Systems/RoboticsConsoleSystem.cs +++ b/Content.Server/Robotics/Systems/RoboticsConsoleSystem.cs @@ -3,7 +3,6 @@ using Content.Server.DeviceNetwork.Systems; using Content.Server.Radio.EntitySystems; using Content.Shared.Lock; using Content.Shared.Database; -using Content.Shared.DeviceNetwork; using Content.Shared.Robotics; using Content.Shared.Robotics.Components; using Content.Shared.Robotics.Systems; @@ -33,7 +32,6 @@ public sealed partial class RoboticsConsoleSystem : SharedRoboticsConsoleSystem { base.Initialize(); - SubscribeLocalEvent(OnPacketReceived); Subs.BuiEvents(RoboticsConsoleUiKey.Key, subs => { subs.Event(OnOpened); @@ -70,20 +68,12 @@ public sealed partial class RoboticsConsoleSystem : SharedRoboticsConsoleSystem } } - private void OnPacketReceived(Entity ent, ref DeviceNetworkPacketEvent args) + [SubscribeLocalEvent] + private void OnPacketReceived(Entity ent, ref DeviceNetworkPacketEvent args) { - var payload = args.Data; - if (!payload.TryGetValue(DeviceNetworkConstants.Command, out string? command)) - return; - if (command != DeviceNetworkConstants.CmdUpdatedState) - return; - - if (!payload.TryGetValue(RoboticsConsoleConstants.NET_CYBORG_DATA, out CyborgControlData? data)) - return; - - var real = data.Value; - real.Timeout = _timing.CurTime + ent.Comp.Timeout; - ent.Comp.Cyborgs[args.SenderAddress] = real; + var data = args.Data.Data; + data.Timeout = _timing.CurTime + ent.Comp.Timeout; + ent.Comp.Cyborgs[args.SenderAddress] = data; UpdateUserInterface(ent); } @@ -104,12 +94,9 @@ public sealed partial class RoboticsConsoleSystem : SharedRoboticsConsoleSystem if (!ent.Comp.Cyborgs.TryGetValue(args.Address, out var data)) return; - var payload = new NetworkPayload() - { - [DeviceNetworkConstants.Command] = RoboticsConsoleConstants.NET_DISABLE_COMMAND - }; + var payload = new RoboticsCyborgDisablePayload(); + _deviceNetwork.SendPacket(ent.Owner, args.Address, ref payload); - _deviceNetwork.QueuePacket(ent, args.Address, payload); _adminLogger.Add(LogType.Action, LogImpact.High, $"{ToPrettyString(args.Actor):user} disabled borg {data.Name} with address {args.Address}"); } @@ -128,12 +115,8 @@ public sealed partial class RoboticsConsoleSystem : SharedRoboticsConsoleSystem if (!ent.Comp.Cyborgs.Remove(args.Address, out var data)) return; - var payload = new NetworkPayload() - { - [DeviceNetworkConstants.Command] = RoboticsConsoleConstants.NET_DESTROY_COMMAND - }; - - _deviceNetwork.QueuePacket(ent, args.Address, payload); + var payload = new RoboticsCyborgDestroyPayload(); + _deviceNetwork.SendPacket(ent.Owner, args.Address, ref payload); var message = Loc.GetString(ent.Comp.DestroyMessage, ("name", data.Name)); _radio.SendRadioMessage(ent, message, ent.Comp.RadioChannel, ent); diff --git a/Content.Server/RoundEnd/RoundEndSystem.cs b/Content.Server/RoundEnd/RoundEndSystem.cs index 69d355dc9f..590140b4ae 100644 --- a/Content.Server/RoundEnd/RoundEndSystem.cs +++ b/Content.Server/RoundEnd/RoundEndSystem.cs @@ -6,18 +6,17 @@ using Content.Server.Chat.Managers; using Content.Server.Chat.Systems; using Content.Server.DeviceNetwork.Systems; using Content.Server.GameTicking; -using Content.Server.Screens.Components; using Content.Server.Shuttles.Components; using Content.Server.Shuttles.Systems; using Content.Server.Station.Systems; using Content.Shared.Database; -using Content.Shared.DeviceNetwork; using Content.Shared.GameTicking; using Robust.Shared.Audio.Systems; using Robust.Shared.Configuration; using Robust.Shared.Player; using Robust.Shared.Timing; using Content.Shared.DeviceNetwork.Components; +using Content.Shared.RoundEnd; using Content.Shared.Station.Components; using Timer = Robust.Shared.Timing.Timer; @@ -223,16 +222,16 @@ namespace Content.Server.RoundEnd var shuttle = _shuttle.GetShuttle(); if (shuttle != null && TryComp(shuttle, out var net)) { - var payload = new NetworkPayload + var payload = new ScreenShuttlePayload { - [ShuttleTimerMasks.ShuttleMap] = shuttle, - [ShuttleTimerMasks.SourceMap] = GetCentcomm(), - [ShuttleTimerMasks.DestMap] = GetStation(), - [ShuttleTimerMasks.ShuttleTime] = countdownTime, - [ShuttleTimerMasks.SourceTime] = countdownTime + TimeSpan.FromSeconds(_shuttle.TransitTime + _cfg.GetCVar(CCVars.EmergencyShuttleDockTime)), - [ShuttleTimerMasks.DestTime] = countdownTime, + Shuttle = shuttle, + SourceMap = GetCentcomm(), + DestinationMap = GetStation(), + ShuttleTime = countdownTime, + SourceTime = countdownTime + TimeSpan.FromSeconds(_shuttle.TransitTime + _cfg.GetCVar(CCVars.EmergencyShuttleDockTime)), + DestinationTime = countdownTime, }; - _deviceNetworkSystem.QueuePacket(shuttle.Value, null, payload, net.TransmitFrequency); + _deviceNetworkSystem.SendPacket(shuttle.Value, null, ref payload, net.TransmitFrequency); } } @@ -271,16 +270,16 @@ namespace Content.Server.RoundEnd var shuttle = _shuttle.GetShuttle(); if (shuttle != null && TryComp(shuttle, out var net)) { - var payload = new NetworkPayload + var payload = new ScreenShuttlePayload { - [ShuttleTimerMasks.ShuttleMap] = shuttle, - [ShuttleTimerMasks.SourceMap] = GetCentcomm(), - [ShuttleTimerMasks.DestMap] = GetStation(), - [ShuttleTimerMasks.ShuttleTime] = zero, - [ShuttleTimerMasks.SourceTime] = zero, - [ShuttleTimerMasks.DestTime] = zero, + Shuttle = shuttle, + SourceMap = GetCentcomm(), + DestinationMap = GetStation(), + ShuttleTime = zero, + SourceTime = zero, + DestinationTime = zero, }; - _deviceNetworkSystem.QueuePacket(shuttle.Value, null, payload, net.TransmitFrequency); + _deviceNetworkSystem.SendPacket(shuttle.Value, null, ref payload, net.TransmitFrequency); } } diff --git a/Content.Server/Screens/Systems/ScreenSystem.cs b/Content.Server/Screens/Systems/ScreenSystem.cs index 2a30472543..c15d180edd 100644 --- a/Content.Server/Screens/Systems/ScreenSystem.cs +++ b/Content.Server/Screens/Systems/ScreenSystem.cs @@ -1,7 +1,8 @@ using Content.Shared.TextScreen; using Content.Server.Screens.Components; -using Content.Shared.DeviceNetwork.Components; using Content.Shared.DeviceNetwork.Events; +using Content.Shared.RoundEnd; +using Content.Shared.Screens; using Robust.Shared.Timing; namespace Content.Server.Screens.Systems; @@ -14,24 +15,13 @@ public sealed partial class ScreenSystem : EntitySystem [Dependency] private IGameTiming _gameTiming = default!; [Dependency] private SharedAppearanceSystem _appearanceSystem = default!; - /// - /// Calls either a normal screen text update or shuttle timer update based on the presence of - /// in - /// - [SubscribeLocalEvent] - private void OnPacketReceived(Entity ent, ref DeviceNetworkPacketEvent args) - { - if (args.Data.TryGetValue(ShuttleTimerMasks.ShuttleMap, out _)) - ShuttleTimer(ent, args); - else - ScreenText(ent, args); - } - /// /// Send a text update to every screen on the same MapUid as the originating comms console. /// - private void ScreenText(Entity ent, DeviceNetworkPacketEvent args) + [SubscribeLocalEvent] + private void OnScreenText(Entity ent, ref DeviceNetworkPacketEvent args) { + var text = args.Data.Text; // don't allow text updates if there's an active timer // (and just check here so the server doesn't have to track them) if (_appearanceSystem.TryGetData(ent, TextScreenVisuals.TargetTime, out TimeSpan target) @@ -41,17 +31,15 @@ public sealed partial class ScreenSystem : EntitySystem var screenMap = Transform(ent).MapUid; var argsMap = Transform(args.Sender).MapUid; - if (screenMap != null - && argsMap != null - && screenMap == argsMap - && args.Data.TryGetValue(ScreenMasks.Text, out string? text) - && text != null - ) - { - _appearanceSystem.SetData(ent, TextScreenVisuals.DefaultText, text); - _appearanceSystem.SetData(ent, TextScreenVisuals.ScreenText, text); - _appearanceSystem.SetData(ent, TextScreenVisuals.ScreenTextTime, _gameTiming.CurTime); - } + if (screenMap == null + || argsMap == null + || screenMap != argsMap + || text == null) + return; + + _appearanceSystem.SetData(ent, TextScreenVisuals.DefaultText, text); + _appearanceSystem.SetData(ent, TextScreenVisuals.ScreenText, text); + _appearanceSystem.SetData(ent, TextScreenVisuals.ScreenTextTime, _gameTiming.CurTime); } /// @@ -62,49 +50,46 @@ public sealed partial class ScreenSystem : EntitySystem /// Subnets are the shuttle, source, and dest. Source/dest change each jump. /// This is required to send different timers to the shuttle/terminal/station. /// - private void ShuttleTimer(Entity ent, DeviceNetworkPacketEvent args) + [SubscribeLocalEvent] + private void OnShuttleTimer(Entity ent, ref DeviceNetworkPacketEvent args) { + var payload = args.Data; var timerXform = Transform(ent); // no false positives. if (timerXform.MapUid == null) return; - string key; - args.Data.TryGetValue(ShuttleTimerMasks.ShuttleMap, out EntityUid? shuttleMap); - args.Data.TryGetValue(ShuttleTimerMasks.SourceMap, out EntityUid? source); - args.Data.TryGetValue(ShuttleTimerMasks.DestMap, out EntityUid? dest); - args.Data.TryGetValue(ShuttleTimerMasks.Docked, out bool docked); - string text = docked ? ShuttleTimerMasks.ETD : ShuttleTimerMasks.ETA; + string? text = null; + TimeSpan time; switch (timerXform.MapUid) { - // sometimes the timer transforms on FTL shuttles have a hyperspace mapuid, so matching by grid works as a fallback. - case var local when local == shuttleMap || timerXform.GridUid == shuttleMap: - key = ShuttleTimerMasks.ShuttleTime; + // sometimes the timer transforms on FTL shuttles have a hyperspace mapent, so matching by grid works as a fallback. + case var local when local == payload.Shuttle || timerXform.GridUid == payload.Shuttle: + time = payload.ShuttleTime; break; - case var origin when origin == source: - key = ShuttleTimerMasks.SourceTime; + case var origin when origin == payload.SourceMap: + time = payload.SourceTime; break; - case var remote when remote == dest: - key = ShuttleTimerMasks.DestTime; + case var remote when remote == payload.DestinationMap: + time = payload.DestinationTime; text = ShuttleTimerMasks.ETA; break; default: return; } - if (!args.Data.TryGetValue(key, out TimeSpan duration)) - return; + if (payload.OverrideText != null) + text = payload.OverrideText; - if (args.Data.TryGetValue(ScreenMasks.Text, out string? label) && label != null) - text = label; - - _appearanceSystem.SetData(ent, TextScreenVisuals.ScreenText, text); - _appearanceSystem.SetData(ent, TextScreenVisuals.TargetTime, _gameTiming.CurTime + duration); + _appearanceSystem.SetData(ent, TextScreenVisuals.TargetTime, _gameTiming.CurTime + time); _appearanceSystem.SetData(ent, TextScreenVisuals.ScreenTextTime, _gameTiming.CurTime); - if (args.Data.TryGetValue(ScreenMasks.Color, out Color color)) - _appearanceSystem.SetData(ent, TextScreenVisuals.Color, color); + if (text != null) + _appearanceSystem.SetData(ent, TextScreenVisuals.ScreenText, text); + + if (payload.OverrideColor != null) + _appearanceSystem.SetData(ent, TextScreenVisuals.Color, payload.OverrideColor); } } diff --git a/Content.Server/SensorMonitoring/BatterySensorComponent.cs b/Content.Server/SensorMonitoring/BatterySensorComponent.cs index a5a48ddc91..41755f7a82 100644 --- a/Content.Server/SensorMonitoring/BatterySensorComponent.cs +++ b/Content.Server/SensorMonitoring/BatterySensorComponent.cs @@ -14,20 +14,3 @@ public sealed partial class BatterySensorComponent : Component { } -/// -/// Device network data sent by a . -/// -/// The current energy charge of the battery, in joules (J). -/// The maximum energy capacity of the battery, in joules (J). -/// The current amount of power being received by the battery, in watts (W). -/// The maximum amount of power that can be received by the battery, in watts (W). -/// The current amount of power being supplied by the battery, in watts (W). -/// The maximum amount of power that can be received by the battery, in watts (W). -public sealed record BatterySensorData( - float Charge, - float MaxCharge, - float Receiving, - float MaxReceiving, - float Supplying, - float MaxSupplying -); diff --git a/Content.Server/SensorMonitoring/BatterySensorSystem.cs b/Content.Server/SensorMonitoring/BatterySensorSystem.cs index 12db2764fa..feb943e0af 100644 --- a/Content.Server/SensorMonitoring/BatterySensorSystem.cs +++ b/Content.Server/SensorMonitoring/BatterySensorSystem.cs @@ -1,50 +1,35 @@ -using Content.Server.DeviceNetwork.Systems; +using Content.Server.DeviceNetwork.Systems; using Content.Server.Power.Components; -using Content.Shared.DeviceNetwork; using Content.Shared.DeviceNetwork.Events; using Content.Shared.Power.Components; using Content.Shared.Power.EntitySystems; +using Content.Shared.SensorMonitoring; namespace Content.Server.SensorMonitoring; public sealed partial class BatterySensorSystem : EntitySystem { - public const string DeviceNetworkCommandSyncData = "bat_sync_data"; - [Dependency] private DeviceNetworkSystem _deviceNetwork = default!; [Dependency] private SharedBatterySystem _battery = default!; - public override void Initialize() + [SubscribeLocalEvent] + private void OnSensorRequest(Entity ent, ref DeviceNetworkPacketEvent args) { - SubscribeLocalEvent(PacketReceived); - } + var battery = Comp(ent); + var currentCharge = _battery.GetCharge((ent.Owner, battery)); + var netBattery = Comp(ent); - private void PacketReceived(EntityUid uid, BatterySensorComponent component, DeviceNetworkPacketEvent args) - { - if (!args.Data.TryGetValue(DeviceNetworkConstants.Command, out string? cmd)) - return; - - switch (cmd) + var dataPayload = new BatterySensorDataPayload { - case DeviceNetworkCommandSyncData: - var battery = Comp(uid); - var currentCharge = _battery.GetCharge((uid, battery)); - var netBattery = Comp(uid); + Data = new BatterySensorData( + currentCharge, + battery.MaxCharge, + netBattery.CurrentReceiving, + netBattery.MaxChargeRate, + netBattery.CurrentSupply, + netBattery.MaxSupply), + }; - var payload = new NetworkPayload - { - [DeviceNetworkConstants.Command] = DeviceNetworkCommandSyncData, - [DeviceNetworkCommandSyncData] = new BatterySensorData( - currentCharge, - battery.MaxCharge, - netBattery.CurrentReceiving, - netBattery.MaxChargeRate, - netBattery.CurrentSupply, - netBattery.MaxSupply) - }; - - _deviceNetwork.QueuePacket(uid, args.SenderAddress, payload); - break; - } + _deviceNetwork.SendPacket(ent.Owner, args.SenderAddress, ref dataPayload); } } diff --git a/Content.Server/SensorMonitoring/SensorMonitoringConsoleSystem.cs b/Content.Server/SensorMonitoring/SensorMonitoringConsoleSystem.cs index de33473616..3f01f599f8 100644 --- a/Content.Server/SensorMonitoring/SensorMonitoringConsoleSystem.cs +++ b/Content.Server/SensorMonitoring/SensorMonitoringConsoleSystem.cs @@ -1,5 +1,5 @@ using Content.Server.Atmos.Monitor.Components; -using Content.Server.Atmos.Monitor.Systems; +using Content.Server.Atmos.Monitor.Payloads; using Content.Server.DeviceNetwork.Systems; using Content.Server.Power.Generation.Teg; using Content.Shared.Atmos.Components; @@ -10,6 +10,7 @@ using Content.Shared.DeviceNetwork; using Content.Shared.DeviceNetwork.Components; using Content.Shared.DeviceNetwork.Events; using Content.Shared.DeviceNetwork.Systems; +using Content.Shared.Power.Generation.Teg; using Content.Shared.SensorMonitoring; using Robust.Server.GameObjects; using Robust.Shared.Timing; @@ -41,7 +42,6 @@ public sealed partial class SensorMonitoringConsoleSystem : EntitySystem SubscribeLocalEvent(DeviceListUpdated); SubscribeLocalEvent(ConsoleStartup); - SubscribeLocalEvent(DevicePacketReceived); SubscribeLocalEvent(AtmosUpdate); } @@ -143,99 +143,86 @@ public sealed partial class SensorMonitoringConsoleSystem : EntitySystem return SensorDeviceType.Unknown; } - private void DevicePacketReceived(EntityUid uid, SensorMonitoringConsoleComponent component, - DeviceNetworkPacketEvent args) + [SubscribeLocalEvent] + private void OnTegReceived(Entity ent, ref DeviceNetworkPacketEvent args) { - if (!component.Sensors.TryGetValue(args.Sender, out var sensorData)) + var payload = args.Data; + if (!ent.Comp.Sensors.TryGetValue(args.Sender, out var sensorData)) return; - if (!args.Data.TryGetValue(DeviceNetworkConstants.Command, out string? command)) + // @formatter:off + WriteSample(ent, sensorData, "teg_last_generated", SensorUnit.EnergyJ, payload.LastGeneration); + WriteSample(ent, sensorData, "teg_power", SensorUnit.PowerW, payload.PowerOutput); + if (ent.Comp.DebugStreams) + WriteSample(ent, sensorData, "teg_ramp_pos", SensorUnit.PowerW, payload.RampPosition); + + WriteSample(ent, sensorData, "teg_circ_a_in_pressure", SensorUnit.PressureKpa, payload.CirculatorA.InletPressure); + WriteSample(ent, sensorData, "teg_circ_a_in_temperature", SensorUnit.TemperatureK, payload.CirculatorA.InletTemperature); + WriteSample(ent, sensorData, "teg_circ_a_out_pressure", SensorUnit.PressureKpa, payload.CirculatorA.OutletPressure); + WriteSample(ent, sensorData, "teg_circ_a_out_temperature", SensorUnit.TemperatureK, payload.CirculatorA.OutletTemperature); + + WriteSample(ent, sensorData, "teg_circ_b_in_pressure", SensorUnit.PressureKpa, payload.CirculatorB.InletPressure); + WriteSample(ent, sensorData, "teg_circ_b_in_temperature", SensorUnit.TemperatureK, payload.CirculatorB.InletTemperature); + WriteSample(ent, sensorData, "teg_circ_b_out_pressure", SensorUnit.PressureKpa, payload.CirculatorB.OutletPressure); + WriteSample(ent, sensorData, "teg_circ_b_out_temperature", SensorUnit.TemperatureK, payload.CirculatorB.OutletTemperature); + // @formatter:on + } + + [SubscribeLocalEvent] + private void OnAtmosSensorReceived(Entity ent, ref DeviceNetworkPacketEvent args) + { + var payload = args.Data.Data; + if (!ent.Comp.Sensors.TryGetValue(args.Sender, out var sensorData)) return; - switch (sensorData.DeviceType) - { - case SensorDeviceType.Teg: - if (command != TegSystem.DeviceNetworkCommandSyncData) - return; + // @formatter:off + WriteSample(ent, sensorData, "atmo_pressure", SensorUnit.PressureKpa, payload.Pressure); + WriteSample(ent, sensorData, "atmo_temperature", SensorUnit.TemperatureK, payload.Temperature); + // @formatter:on + } - if (!args.Data.TryGetValue(TegSystem.DeviceNetworkCommandSyncData, out TegSensorData? tegData)) - return; + [SubscribeLocalEvent] + private void OnThermoMachineReceived(Entity ent, ref DeviceNetworkPacketEvent args) + { + var payload = args.Data; + if (!ent.Comp.Sensors.TryGetValue(args.Sender, out var sensorData)) + return; - // @formatter:off - WriteSample(component, sensorData, "teg_last_generated", SensorUnit.EnergyJ, tegData.LastGeneration); - WriteSample(component, sensorData, "teg_power", SensorUnit.PowerW, tegData.PowerOutput); - if (component.DebugStreams) - WriteSample(component, sensorData, "teg_ramp_pos", SensorUnit.PowerW, tegData.RampPosition); + // @formatter:off + WriteSample(ent, sensorData, "abs_energy_delta", SensorUnit.EnergyJ, MathF.Abs(payload.EnergyDelta)); + // @formatter:on + } - WriteSample(component, sensorData, "teg_circ_a_in_pressure", SensorUnit.PressureKpa, tegData.CirculatorA.InletPressure); - WriteSample(component, sensorData, "teg_circ_a_in_temperature", SensorUnit.TemperatureK, tegData.CirculatorA.InletTemperature); - WriteSample(component, sensorData, "teg_circ_a_out_pressure", SensorUnit.PressureKpa, tegData.CirculatorA.OutletPressure); - WriteSample(component, sensorData, "teg_circ_a_out_temperature", SensorUnit.TemperatureK, tegData.CirculatorA.OutletTemperature); + [SubscribeLocalEvent] + private void OnVolumePipeReceived(Entity ent, ref DeviceNetworkPacketEvent args) + { + var payload = args.Data; + if (!ent.Comp.Sensors.TryGetValue(args.Sender, out var sensorData)) + return; - WriteSample(component, sensorData, "teg_circ_b_in_pressure", SensorUnit.PressureKpa, tegData.CirculatorB.InletPressure); - WriteSample(component, sensorData, "teg_circ_b_in_temperature", SensorUnit.TemperatureK, tegData.CirculatorB.InletTemperature); - WriteSample(component, sensorData, "teg_circ_b_out_pressure", SensorUnit.PressureKpa, tegData.CirculatorB.OutletPressure); - WriteSample(component, sensorData, "teg_circ_b_out_temperature", SensorUnit.TemperatureK, tegData.CirculatorB.OutletTemperature); - // @formatter:on - break; + // @formatter:off + WriteSample(ent, sensorData, "moles_transferred", SensorUnit.Moles, payload.LastMolesTransferred); + // @formatter:on + } - case SensorDeviceType.AtmosSensor: - if (command != AtmosDeviceNetworkSystem.SyncData) - return; + [SubscribeLocalEvent] + private void OnBatteryReceived(Entity ent, ref DeviceNetworkPacketEvent args) + { + if (!ent.Comp.Sensors.TryGetValue(args.Sender, out var sensorData)) + return; - if (!args.Data.TryGetValue(AtmosDeviceNetworkSystem.SyncData, out AtmosSensorData? atmosData)) - return; + var batteryData = args.Data.Data; - // @formatter:off - WriteSample(component, sensorData, "atmo_pressure", SensorUnit.PressureKpa, atmosData.Pressure); - WriteSample(component, sensorData, "atmo_temperature", SensorUnit.TemperatureK, atmosData.Temperature); - // @formatter:on - break; + // @formatter:off + WriteSample(ent, sensorData, "charge", SensorUnit.EnergyJ, batteryData.Charge); + WriteSample(ent, sensorData, "charge_max", SensorUnit.EnergyJ, batteryData.MaxCharge); - case SensorDeviceType.ThermoMachine: - if (command != AtmosDeviceNetworkSystem.SyncData) - return; + WriteSample(ent, sensorData, "receiving", SensorUnit.PowerW, batteryData.Receiving); + WriteSample(ent, sensorData, "receiving_max", SensorUnit.PowerW, batteryData.MaxReceiving); - if (!args.Data.TryGetValue(AtmosDeviceNetworkSystem.SyncData, out GasThermoMachineData? thermoData)) - return; - - // @formatter:off - WriteSample(component, sensorData, "abs_energy_delta", SensorUnit.EnergyJ, MathF.Abs(thermoData.EnergyDelta)); - // @formatter:on - break; - - case SensorDeviceType.VolumePump: - if (command != AtmosDeviceNetworkSystem.SyncData) - return; - - if (!args.Data.TryGetValue(AtmosDeviceNetworkSystem.SyncData, out GasVolumePumpData? volumePumpData)) - return; - - // @formatter:off - WriteSample(component, sensorData, "moles_transferred", SensorUnit.Moles, volumePumpData.LastMolesTransferred); - // @formatter:on - break; - - case SensorDeviceType.Battery: - if (command != BatterySensorSystem.DeviceNetworkCommandSyncData) - return; - - if (!args.Data.TryGetValue(BatterySensorSystem.DeviceNetworkCommandSyncData, out BatterySensorData? batteryData)) - return; - - // @formatter:off - WriteSample(component, sensorData, "charge", SensorUnit.EnergyJ, batteryData.Charge); - WriteSample(component, sensorData, "charge_max", SensorUnit.EnergyJ, batteryData.MaxCharge); - - WriteSample(component, sensorData, "receiving", SensorUnit.PowerW, batteryData.Receiving); - WriteSample(component, sensorData, "receiving_max", SensorUnit.PowerW, batteryData.MaxReceiving); - - WriteSample(component, sensorData, "supplying", SensorUnit.PowerW, batteryData.Supplying); - WriteSample(component, sensorData, "supplying_max", SensorUnit.PowerW, batteryData.MaxSupplying); - // @formatter:on - - break; - } + WriteSample(ent, sensorData, "supplying", SensorUnit.PowerW, batteryData.Supplying); + WriteSample(ent, sensorData, "supplying_max", SensorUnit.PowerW, batteryData.MaxSupplying); + // @formatter:on } private void WriteSample( @@ -267,32 +254,22 @@ public sealed partial class SensorMonitoringConsoleSystem : EntitySystem foreach (var (ent, data) in comp.Sensors) { // Send network requests for new data! - NetworkPayload payload; + INetworkPayload payload; switch (data.DeviceType) { case SensorDeviceType.Teg: - payload = new NetworkPayload - { - [DeviceNetworkConstants.Command] = TegSystem.DeviceNetworkCommandSyncData - }; - break; - case SensorDeviceType.AtmosSensor: case SensorDeviceType.ThermoMachine: case SensorDeviceType.VolumePump: - payload = new NetworkPayload - { - [DeviceNetworkConstants.Command] = AtmosDeviceNetworkSystem.SyncData - }; + payload = new AtmosSyncPayload(); break; - default: // Unknown device type, don't do anything. continue; } var address = _deviceNetworkQuery.GetComponent(ent); - _deviceNetwork.QueuePacket(uid, address.Address, payload); + _deviceNetwork.SendPacket(uid, address.Address, ref payload); } } @@ -301,23 +278,19 @@ public sealed partial class SensorMonitoringConsoleSystem : EntitySystem foreach (var (ent, data) in comp.Sensors) { // Send network requests for new data! - NetworkPayload payload; + INetworkPayload payload; switch (data.DeviceType) { case SensorDeviceType.Battery: - payload = new NetworkPayload - { - [DeviceNetworkConstants.Command] = BatterySensorSystem.DeviceNetworkCommandSyncData - }; + payload = new BatterySensorSyncPayload(); break; - default: // Unknown device type, don't do anything. continue; } var address = _deviceNetworkQuery.GetComponent(ent); - _deviceNetwork.QueuePacket(uid, address.Address, payload); + _deviceNetwork.SendPacket(uid, address.Address, ref payload); } } } diff --git a/Content.Server/Shuttles/Systems/ArrivalsSystem.cs b/Content.Server/Shuttles/Systems/ArrivalsSystem.cs index 4820b0946f..e79a0d6b08 100644 --- a/Content.Server/Shuttles/Systems/ArrivalsSystem.cs +++ b/Content.Server/Shuttles/Systems/ArrivalsSystem.cs @@ -7,7 +7,6 @@ using Content.Server.DeviceNetwork.Systems; using Content.Server.GameTicking; using Content.Server.GameTicking.Events; using Content.Server.Parallax; -using Content.Server.Screens.Components; using Content.Server.Shuttles.Components; using Content.Server.Shuttles.Events; using Content.Server.Spawners.Components; @@ -17,12 +16,12 @@ using Content.Server.Station.Systems; using Content.Shared.Administration; using Content.Shared.CCVar; using Content.Shared.Damage.Components; -using Content.Shared.DeviceNetwork; using Content.Shared.DeviceNetwork.Components; using Content.Shared.GameTicking; using Content.Shared.Mobs.Components; using Content.Shared.Movement.Components; using Content.Shared.Parallax.Biomes; +using Content.Shared.RoundEnd; using Content.Shared.Salvage; using Content.Shared.Shuttles.Components; using Content.Shared.Tiles; @@ -208,10 +207,10 @@ public sealed partial class ArrivalsSystem : EntitySystem TryComp(shuttleUid, out var ftlComp); var ftlTime = TimeSpan.FromSeconds(ftlComp?.TravelTime ?? _shuttles.DefaultTravelTime); - var payload = new NetworkPayload + var payload = new ScreenShuttlePayload { - [ShuttleTimerMasks.ShuttleMap] = shuttleUid, - [ShuttleTimerMasks.ShuttleTime] = ftlTime + Shuttle = shuttleUid, + ShuttleTime = ftlTime, }; // unfortunate levels of spaghetti due to roundstart arrivals ftl behavior @@ -224,16 +223,16 @@ public sealed partial class ArrivalsSystem : EntitySystem sourceMap = station == null ? null : Transform(station.Value)?.MapUid; arrivalsDelay += RoundStartFTLDuration; component.FirstRun = false; - payload.Add(ShuttleTimerMasks.DestMap, Transform(args.TargetCoordinates.EntityId).MapUid); - payload.Add(ShuttleTimerMasks.DestTime, ftlTime); + payload.DestinationMap = Transform(args.TargetCoordinates.EntityId).MapUid; + payload.DestinationTime = ftlTime; } else sourceMap = args.FromMapUid; - payload.Add(ShuttleTimerMasks.SourceMap, sourceMap); - payload.Add(ShuttleTimerMasks.SourceTime, ftlTime + TimeSpan.FromSeconds(arrivalsDelay)); + payload.SourceMap = sourceMap; + payload.SourceTime = ftlTime + TimeSpan.FromSeconds(arrivalsDelay); - _deviceNetworkSystem.QueuePacket(shuttleUid, null, payload, netComp.TransmitFrequency); + _deviceNetworkSystem.SendPacket(shuttleUid, null, ref payload, netComp.TransmitFrequency); } // Don't do anything here when leaving arrivals. @@ -282,15 +281,15 @@ public sealed partial class ArrivalsSystem : EntitySystem if (TryComp(uid, out var netComp)) { - var payload = new NetworkPayload + var payload = new ScreenShuttlePayload { - [ShuttleTimerMasks.ShuttleMap] = uid, - [ShuttleTimerMasks.ShuttleTime] = dockTime, - [ShuttleTimerMasks.SourceMap] = args.MapUid, - [ShuttleTimerMasks.SourceTime] = dockTime, - [ShuttleTimerMasks.Docked] = true + Shuttle = uid, + ShuttleTime = dockTime, + SourceMap = args.MapUid, + SourceTime = dockTime, + Docked = true, }; - _deviceNetworkSystem.QueuePacket(uid, null, payload, netComp.TransmitFrequency); + _deviceNetworkSystem.SendPacket(uid, null, ref payload, netComp.TransmitFrequency); } } diff --git a/Content.Server/Shuttles/Systems/DockingSignalControlSystem.cs b/Content.Server/Shuttles/Systems/DockingSignalControlSystem.cs index 483778d201..e8fcaa1dbe 100644 --- a/Content.Server/Shuttles/Systems/DockingSignalControlSystem.cs +++ b/Content.Server/Shuttles/Systems/DockingSignalControlSystem.cs @@ -18,11 +18,11 @@ public sealed partial class DockingSignalControlSystem : EntitySystem private void OnDocked(Entity ent, ref DockEvent args) { - _deviceLinkSystem.SendSignal(ent, ent.Comp.DockStatusSignalPort, signal: true); + _deviceLinkSystem.SendSignal(ent.Owner, ent.Comp.DockStatusSignalPort, signal: true); } private void OnUndocked(Entity ent, ref UndockEvent args) { - _deviceLinkSystem.SendSignal(ent, ent.Comp.DockStatusSignalPort, signal: false); + _deviceLinkSystem.SendSignal(ent.Owner, ent.Comp.DockStatusSignalPort, signal: false); } } diff --git a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.Console.cs b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.Console.cs index c177b37504..2d7e6feefc 100644 --- a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.Console.cs +++ b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.Console.cs @@ -1,13 +1,12 @@ using System.Threading; -using Content.Server.Screens.Components; using Content.Server.Shuttles.Components; using Content.Server.Shuttles.Events; using Content.Shared.Access; using Content.Shared.CCVar; using Content.Shared.Database; -using Content.Shared.DeviceNetwork; using Content.Shared.DeviceNetwork.Components; using Content.Shared.Popups; +using Content.Shared.RoundEnd; using Content.Shared.Shuttles.BUIStates; using Content.Shared.Shuttles.Components; using Content.Shared.Shuttles.Events; @@ -376,17 +375,17 @@ public sealed partial class EmergencyShuttleSystem var shuttle = GetShuttle(); if (shuttle != null && TryComp(shuttle, out var net)) { - var payload = new NetworkPayload + var payload = new ScreenShuttlePayload { - [ShuttleTimerMasks.ShuttleMap] = shuttle, - [ShuttleTimerMasks.SourceMap] = _roundEnd.GetStation(), - [ShuttleTimerMasks.DestMap] = _roundEnd.GetCentcomm(), - [ShuttleTimerMasks.ShuttleTime] = time, - [ShuttleTimerMasks.SourceTime] = time, - [ShuttleTimerMasks.DestTime] = time + TimeSpan.FromSeconds(TransitTime), - [ShuttleTimerMasks.Docked] = true + Shuttle = shuttle, + SourceMap = _roundEnd.GetStation(), + DestinationMap = _roundEnd.GetCentcomm(), + ShuttleTime = time, + SourceTime = time, + DestinationTime = time + TimeSpan.FromSeconds(TransitTime), + Docked = true, }; - _deviceNetworkSystem.QueuePacket(shuttle.Value, null, payload, net.TransmitFrequency); + _deviceNetworkSystem.SendPacket(shuttle.Value, null, ref payload, net.TransmitFrequency); } return true; diff --git a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs index e0cd4a155f..a6105f3e58 100644 --- a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs +++ b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs @@ -19,10 +19,10 @@ using Content.Server.Station.Systems; using Content.Shared.Access.Systems; using Content.Shared.CCVar; using Content.Shared.Database; -using Content.Shared.DeviceNetwork; using Content.Shared.DeviceNetwork.Components; using Content.Shared.GameTicking; using Content.Shared.Localizations; +using Content.Shared.RoundEnd; using Content.Shared.Shuttles.Components; using Content.Shared.Shuttles.Events; using Content.Shared.Shuttles.Systems; @@ -210,16 +210,16 @@ public sealed partial class EmergencyShuttleSystem : SharedEmergencyShuttleSyste if (TryComp(uid, out var netComp)) { - var payload = new NetworkPayload + var payload = new ScreenShuttlePayload { - [ShuttleTimerMasks.ShuttleMap] = uid, - [ShuttleTimerMasks.SourceMap] = args.FromMapUid, - [ShuttleTimerMasks.DestMap] = _transformSystem.GetMap(args.TargetCoordinates), - [ShuttleTimerMasks.ShuttleTime] = ftlTime, - [ShuttleTimerMasks.SourceTime] = ftlTime, - [ShuttleTimerMasks.DestTime] = ftlTime + Shuttle = uid, + SourceMap = args.FromMapUid, + DestinationMap = _transformSystem.GetMap(args.TargetCoordinates), + ShuttleTime = ftlTime, + SourceTime = ftlTime, + DestinationTime = ftlTime, }; - _deviceNetworkSystem.QueuePacket(uid, null, payload, netComp.TransmitFrequency); + _deviceNetworkSystem.SendPacket(uid, null, ref payload, netComp.TransmitFrequency); } } @@ -232,27 +232,27 @@ public sealed partial class EmergencyShuttleSystem : SharedEmergencyShuttleSyste var shuttle = args.Entity; if (TryComp(shuttle, out var net)) { - var payload = new NetworkPayload + var payload = new ScreenShuttlePayload { - [ShuttleTimerMasks.ShuttleMap] = shuttle, - [ShuttleTimerMasks.SourceMap] = _roundEnd.GetCentcomm(), - [ShuttleTimerMasks.DestMap] = _roundEnd.GetStation(), - [ShuttleTimerMasks.ShuttleTime] = countdownTime, - [ShuttleTimerMasks.SourceTime] = countdownTime, - [ShuttleTimerMasks.DestTime] = countdownTime, + Shuttle = shuttle, + SourceMap = _roundEnd.GetCentcomm(), + DestinationMap = _roundEnd.GetStation(), + ShuttleTime = countdownTime, + SourceTime = countdownTime, + DestinationTime = countdownTime, }; // by popular request // https://discord.com/channels/310555209753690112/770682801607278632/1189989482234126356 if (_random.Next(1000) == 0) { - payload.Add(ScreenMasks.Text, ShuttleTimerMasks.Kill); - payload.Add(ScreenMasks.Color, Color.Red); + payload.OverrideText = ShuttleTimerMasks.Kill; + payload.OverrideColor = Color.Red; } else - payload.Add(ScreenMasks.Text, ShuttleTimerMasks.Bye); + payload.OverrideText = ShuttleTimerMasks.Bye; - _deviceNetworkSystem.QueuePacket(shuttle, null, payload, net.TransmitFrequency); + _deviceNetworkSystem.SendPacket(shuttle, null, ref payload, net.TransmitFrequency); } } @@ -377,17 +377,17 @@ public sealed partial class EmergencyShuttleSystem : SharedEmergencyShuttleSyste var time = TimeSpan.FromSeconds(_consoleAccumulator); if (TryComp(shuttle, out var netComp)) { - var payload = new NetworkPayload + var payload = new ScreenShuttlePayload { - [ShuttleTimerMasks.ShuttleMap] = shuttle, - [ShuttleTimerMasks.SourceMap] = targetXform.MapUid, - [ShuttleTimerMasks.DestMap] = _roundEnd.GetCentcomm(), - [ShuttleTimerMasks.ShuttleTime] = time, - [ShuttleTimerMasks.SourceTime] = time, - [ShuttleTimerMasks.DestTime] = time + TimeSpan.FromSeconds(TransitTime), - [ShuttleTimerMasks.Docked] = true, + Shuttle = shuttle, + SourceMap = targetXform.MapUid, + DestinationMap = _roundEnd.GetCentcomm(), + ShuttleTime = time, + SourceTime = time, + DestinationTime = time + TimeSpan.FromSeconds(TransitTime), + Docked = true, }; - _deviceNetworkSystem.QueuePacket(shuttle.Value, null, payload, netComp.TransmitFrequency); + _deviceNetworkSystem.SendPacket(shuttle.Value, null, ref payload, netComp.TransmitFrequency); } // Play announcement audio. diff --git a/Content.Server/Silicons/Borgs/BorgSystem.Transponder.cs b/Content.Server/Silicons/Borgs/BorgSystem.Transponder.cs index d181c7e228..35a1a78caf 100644 --- a/Content.Server/Silicons/Borgs/BorgSystem.Transponder.cs +++ b/Content.Server/Silicons/Borgs/BorgSystem.Transponder.cs @@ -1,4 +1,3 @@ -using Content.Shared.DeviceNetwork; using Content.Shared.Damage.Components; using Content.Shared.FixedPoint; using Content.Shared.Mobs; @@ -16,11 +15,6 @@ namespace Content.Server.Silicons.Borgs; /// public sealed partial class BorgSystem { - private void InitializeTransponder() - { - SubscribeLocalEvent(OnPacketReceived); - } - public void UpdateTransponder(float frameTime) { var now = _timing.CurTime; @@ -52,12 +46,11 @@ public sealed partial class BorgSystem hasBrain, canDisable); - var payload = new NetworkPayload() + var payload = new RoboticsCyborgDataPayload { - [DeviceNetworkConstants.Command] = DeviceNetworkConstants.CmdUpdatedState, - [RoboticsConsoleConstants.NET_CYBORG_DATA] = data + Data = data, }; - _deviceNetwork.QueuePacket(uid, null, payload, device: device); + _deviceNetwork.SendPacket((uid, device), null, ref payload); comp.NextBroadcast = now + comp.BroadcastDelay; } @@ -81,16 +74,16 @@ public sealed partial class BorgSystem _container.Remove(brain, ent.Comp2.BrainContainer); } - private void OnPacketReceived(Entity ent, ref DeviceNetworkPacketEvent args) + [SubscribeLocalEvent] + private void OnDisable(Entity ent, ref DeviceNetworkPacketEvent args) { - var payload = args.Data; - if (!payload.TryGetValue(DeviceNetworkConstants.Command, out string? command)) - return; + Disable(ent); + } - if (command == RoboticsConsoleConstants.NET_DISABLE_COMMAND) - Disable(ent); - else if (command == RoboticsConsoleConstants.NET_DESTROY_COMMAND) - Destroy(ent.Owner); + [SubscribeLocalEvent] + private void OnDestroy(Entity ent, ref DeviceNetworkPacketEvent args) + { + Destroy(ent.AsNullable()); } private void Disable(Entity ent) diff --git a/Content.Server/Silicons/Borgs/BorgSystem.cs b/Content.Server/Silicons/Borgs/BorgSystem.cs index 16e5b3e281..c5af1f12a8 100644 --- a/Content.Server/Silicons/Borgs/BorgSystem.cs +++ b/Content.Server/Silicons/Borgs/BorgSystem.cs @@ -36,14 +36,6 @@ public sealed partial class BorgSystem : SharedBorgSystem public static readonly ProtoId BorgJobId = "Borg"; - /// - public override void Initialize() - { - base.Initialize(); - - InitializeTransponder(); - } - public override bool CanPlayerBeBorged(ICommonSession session) { if (_banManager.GetJobBans(session.UserId)?.Contains(BorgJobId) == true) diff --git a/Content.Server/SurveillanceCamera/Components/SurveillanceCameraRouterComponent.cs b/Content.Server/SurveillanceCamera/Components/SurveillanceCameraRouterComponent.cs index fc848881e7..bc1fb31c1a 100644 --- a/Content.Server/SurveillanceCamera/Components/SurveillanceCameraRouterComponent.cs +++ b/Content.Server/SurveillanceCamera/Components/SurveillanceCameraRouterComponent.cs @@ -8,22 +8,29 @@ public sealed partial class SurveillanceCameraRouterComponent : Component { [ViewVariables] public bool Active { get; set; } - // The name of the subnet connected to this router. - [DataField("subnetName")] - public string SubnetName { get; set; } = string.Empty; - + /// + /// The name of the subnet connected to this router. + /// + [ViewVariables] + public string SubnetName = string.Empty; + + /// + /// The monitors to route to. This raises an issue related to + /// camera monitors disappearing before sending a D/C packet, + /// this could probably be refreshed every time a new monitor + /// is added or removed from active routing. + /// [ViewVariables] - // The monitors to route to. This raises an issue related to - // camera monitors disappearing before sending a D/C packet, - // this could probably be refreshed every time a new monitor - // is added or removed from active routing. public HashSet MonitorRoutes { get; } = new(); + /// + /// The frequency that talks to this router's subnet. + /// [ViewVariables] - // The frequency that talks to this router's subnet. public uint SubnetFrequency; + [DataField("subnetFrequency")] - public ProtoId? SubnetFrequencyId { get; set; } + public ProtoId? SubnetFrequencyId { get; set; } [DataField("setupAvailableNetworks")] public List> AvailableNetworks { get; private set; } = new(); diff --git a/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraMapSystem.cs b/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraMapSystem.cs index a2417372a2..590a92e7e3 100644 --- a/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraMapSystem.cs +++ b/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraMapSystem.cs @@ -76,6 +76,9 @@ public sealed partial class SurveillanceCameraMapSystem : EntitySystem if (gridUid is null) return; + if (deviceNet.ReceiveFrequencyId == null) + return; + var netEntity = GetNetEntity(uid); var mapComp = EnsureComp(gridUid.Value); @@ -84,7 +87,7 @@ public sealed partial class SurveillanceCameraMapSystem : EntitySystem var localPos = Vector2.Transform(worldPos, gridMatrix); var address = deviceNet.Address; - var subnet = deviceNet.ReceiveFrequencyId ?? string.Empty; + var subnet = deviceNet.ReceiveFrequencyId.Value; var powered = CompOrNull(uid)?.Powered ?? true; var active = comp.Active && powered; diff --git a/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraMonitorSystem.cs b/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraMonitorSystem.cs index 65a15e1a9e..b499b8ad35 100644 --- a/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraMonitorSystem.cs +++ b/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraMonitorSystem.cs @@ -2,6 +2,7 @@ using System.Linq; using Content.Server.DeviceNetwork.Systems; using Content.Shared.DeviceNetwork; using Content.Shared.DeviceNetwork.Events; +using Content.Shared.DeviceNetwork.Systems; using Content.Shared.Power; using Content.Shared.UserInterface; using Content.Shared.SurveillanceCamera; @@ -16,13 +17,14 @@ public sealed partial class SurveillanceCameraMonitorSystem : EntitySystem [Dependency] private SurveillanceCameraSystem _surveillanceCameras = default!; [Dependency] private UserInterfaceSystem _userInterface = default!; [Dependency] private DeviceNetworkSystem _deviceNetworkSystem = default!; + [Dependency] private DeviceNetworkRouterSystem _deviceNetworkRouter = default!; public override void Initialize() { + base.Initialize(); SubscribeLocalEvent(OnSurveillanceCameraDeactivate); SubscribeLocalEvent(OnPowerChanged); SubscribeLocalEvent(OnShutdown); - SubscribeLocalEvent(OnPacketReceived); SubscribeLocalEvent(OnComponentStartup); SubscribeLocalEvent(OnToggleInterface); Subs.BuiEvents(SurveillanceCameraMonitorUiKey.Key, subs => @@ -93,72 +95,52 @@ public sealed partial class SurveillanceCameraMonitorSystem : EntitySystem } } - private void OnPacketReceived(EntityUid uid, SurveillanceCameraMonitorComponent component, - DeviceNetworkPacketEvent args) + [SubscribeLocalEvent] + private void OnCameraConnect(Entity ent, ref DeviceNetworkPacketEvent args) { - if (string.IsNullOrEmpty(args.SenderAddress)) + var payload = args.Data; + if (ent.Comp.NextCameraAddress == payload.SenderAddress) { - return; + if (payload.SenderAddress != null) + ent.Comp.ActiveCameraAddress = payload.SenderAddress; + TrySwitchCameraByUid(ent, payload.Sender, ent.Comp); } - if (args.Data.TryGetValue(DeviceNetworkConstants.Command, out string? command)) + ent.Comp.NextCameraAddress = null; + } + + [SubscribeLocalEvent] + private void OnCameraHeartbeat(Entity ent, ref DeviceNetworkPacketEvent args) + { + if (args.Data.SenderAddress == ent.Comp.ActiveCameraAddress) { - switch (command) - { - case SurveillanceCameraSystem.CameraConnectMessage: - if (component.NextCameraAddress == args.SenderAddress) - { - component.ActiveCameraAddress = args.SenderAddress; - TrySwitchCameraByUid(uid, args.Sender, component); - } - - component.NextCameraAddress = null; - break; - case SurveillanceCameraSystem.CameraHeartbeatMessage: - if (args.SenderAddress == component.ActiveCameraAddress) - { - component.LastHeartbeat = 0; - } - - break; - case SurveillanceCameraSystem.CameraDataMessage: - { - if (!args.Data.TryGetValue(SurveillanceCameraSystem.CameraNameData, out string? name) - || !args.Data.TryGetValue(SurveillanceCameraSystem.CameraSubnetData, out ProtoId? subnetData) - || !args.Data.TryGetValue(SurveillanceCameraSystem.CameraAddressData, out string? address)) - { - return; - } - - if (component.ActiveSubnet != subnetData && subnetData is { } subnet) - { - DisconnectFromSubnet(uid, subnet); - } - - if (!component.KnownCameras.ContainsKey(address)) - { - component.KnownCameras.Add(address, name); - } - - UpdateUserInterface(uid, component); - break; - } - case SurveillanceCameraSystem.CameraSubnetData: - { - if (args.Data.TryGetValue(SurveillanceCameraSystem.CameraSubnetData, out ProtoId? subnetValue) - && subnetValue is { } subnet - && !component.KnownSubnets.ContainsKey(subnet)) - { - component.KnownSubnets.Add(subnet, args.SenderAddress); - } - - UpdateUserInterface(uid, component); - break; - } - } + ent.Comp.LastHeartbeat = 0; } } + [SubscribeLocalEvent] + private void OnCameraData(Entity ent, ref DeviceNetworkPacketEvent args) + { + var payload = args.Data; + var subnetData = payload.Subnet; + + if (ent.Comp.ActiveSubnet != subnetData) + { + DisconnectFromSubnet(ent, subnetData); + } + + if (payload.SenderAddress != null) + ent.Comp.KnownCameras.TryAdd(payload.SenderAddress, payload.Name); + UpdateUserInterface(ent, ent.Comp); + } + + [SubscribeLocalEvent] + private void OnSubnetData(Entity ent, ref DeviceNetworkPacketEvent args) + { + ent.Comp.KnownSubnets.TryAdd(args.Data.TransmitFrequency, args.SenderAddress); + UpdateUserInterface(ent, ent.Comp); + } + private void OnDisconnectMessage(EntityUid uid, SurveillanceCameraMonitorComponent component, SurveillanceCameraDisconnectMessage message) { @@ -169,7 +151,7 @@ public sealed partial class SurveillanceCameraMonitorSystem : EntitySystem SurveillanceCameraRefreshCamerasMessage message) { component.KnownCameras.Clear(); - RequestActiveSubnetInfo(uid, component); + PingCameraNetwork(uid, component); } private void OnRefreshSubnetsMessage(EntityUid uid, SurveillanceCameraMonitorComponent component, @@ -231,13 +213,9 @@ public sealed partial class SurveillanceCameraMonitorSystem : EntitySystem return; } - var payload = new NetworkPayload() - { - { DeviceNetworkConstants.Command, SurveillanceCameraSystem.CameraHeartbeatMessage }, - { SurveillanceCameraSystem.CameraAddressData, monitor.ActiveCameraAddress } - }; + var payload = new SurveillanceCameraHeartbeatPayload(); + _deviceNetworkRouter.SendPacketRouted(uid, ref payload, subnetAddress, monitor.ActiveCameraAddress, ProtoMan.Index(activeSubnet).Frequency); - _deviceNetworkSystem.QueuePacket(uid, subnetAddress, payload); monitor.LastHeartbeatSent = 0; } @@ -267,21 +245,18 @@ public sealed partial class SurveillanceCameraMonitorSystem : EntitySystem } monitor.KnownSubnets.Clear(); - PingCameraNetwork(uid, monitor); + PingSubnets(uid, monitor); } private void PingCameraNetwork(EntityUid uid, SurveillanceCameraMonitorComponent? monitor = null) { - if (!Resolve(uid, ref monitor)) - { + if (!Resolve(uid, ref monitor) + || monitor.ActiveSubnet == null + || !monitor.KnownSubnets.TryGetValue(monitor.ActiveSubnet.Value, out var subnetData)) return; - } - var payload = new NetworkPayload() - { - { DeviceNetworkConstants.Command, SurveillanceCameraSystem.CameraPingMessage } - }; - _deviceNetworkSystem.QueuePacket(uid, null, payload); + var payload = new SurveillanceCameraPingPayload { Subnet = monitor.ActiveSubnet }; + _deviceNetworkRouter.SendPacketRouted(uid, ref payload, null, null, ProtoMan.Index(monitor.ActiveSubnet.Value).Frequency); } private void SetActiveSubnet(EntityUid uid, ProtoId subnet, @@ -303,20 +278,15 @@ public sealed partial class SurveillanceCameraMonitorSystem : EntitySystem ConnectToSubnet(uid, subnet); } - private void RequestActiveSubnetInfo(EntityUid uid, SurveillanceCameraMonitorComponent? monitor = null) + private void PingSubnets(EntityUid uid, SurveillanceCameraMonitorComponent? monitor = null) { - if (!Resolve(uid, ref monitor) - || monitor.ActiveSubnet is not { } activeSubnet - || !monitor.KnownSubnets.TryGetValue(activeSubnet, out var address)) + if (!Resolve(uid, ref monitor)) { return; } - var payload = new NetworkPayload() - { - {DeviceNetworkConstants.Command, SurveillanceCameraSystem.CameraPingSubnetMessage}, - }; - _deviceNetworkSystem.QueuePacket(uid, address, payload); + var payload = new SurveillanceCameraPingSubnetPayload(); + _deviceNetworkSystem.SendPacket(uid, null, ref payload); } private void ConnectToSubnet(EntityUid uid, string subnet, SurveillanceCameraMonitorComponent? monitor = null) @@ -328,13 +298,10 @@ public sealed partial class SurveillanceCameraMonitorSystem : EntitySystem return; } - var payload = new NetworkPayload() - { - {DeviceNetworkConstants.Command, SurveillanceCameraSystem.CameraSubnetConnectMessage}, - }; - _deviceNetworkSystem.QueuePacket(uid, address, payload); + var payload = new SurveillanceCameraSubnetConnectPayload(); + _deviceNetworkSystem.SendPacket(uid, address, ref payload); - RequestActiveSubnetInfo(uid); + PingSubnets(uid); } private void DisconnectFromSubnet(EntityUid uid, ProtoId subnet, SurveillanceCameraMonitorComponent? monitor = null) @@ -345,11 +312,8 @@ public sealed partial class SurveillanceCameraMonitorSystem : EntitySystem return; } - var payload = new NetworkPayload() - { - {DeviceNetworkConstants.Command, SurveillanceCameraSystem.CameraSubnetDisconnectMessage}, - }; - _deviceNetworkSystem.QueuePacket(uid, address, payload); + var payload = new SurveillanceCameraSubnetDisconnectPayload(); + _deviceNetworkSystem.SendPacket(uid, address, ref payload); } // Adds a viewer to the camera and the monitor. @@ -436,14 +400,9 @@ public sealed partial class SurveillanceCameraMonitorSystem : EntitySystem || !monitor.KnownSubnets.TryGetValue(activeSubnet, out var subnetAddress)) return; - var payload = new NetworkPayload() - { - {DeviceNetworkConstants.Command, SurveillanceCameraSystem.CameraConnectMessage}, - {SurveillanceCameraSystem.CameraAddressData, address} - }; - + var payload = new SurveillanceCameraConnectRequestPayload(); monitor.NextCameraAddress = address; - _deviceNetworkSystem.QueuePacket(uid, subnetAddress, payload); + _deviceNetworkRouter.SendPacketRouted(uid, ref payload, subnetAddress, address, ProtoMan.Index(activeSubnet).Frequency); } // Attempts to switch over the current viewed camera on this monitor @@ -498,7 +457,12 @@ public sealed partial class SurveillanceCameraMonitorSystem : EntitySystem return; } - var state = new SurveillanceCameraMonitorUiState(GetNetEntity(monitor.ActiveCamera), monitor.KnownSubnets.Keys.ToHashSet(), monitor.ActiveCameraAddress, monitor.ActiveSubnet, monitor.KnownCameras); + var state = new SurveillanceCameraMonitorUiState( + GetNetEntity(monitor.ActiveCamera), + monitor.KnownSubnets.Keys.ToHashSet(), + monitor.ActiveCameraAddress, + monitor.ActiveSubnet, + monitor.KnownCameras); _userInterface.SetUiState(uid, SurveillanceCameraMonitorUiKey.Key, state); } } diff --git a/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraRouterSystem.cs b/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraRouterSystem.cs index ddfcd696db..d082374bc9 100644 --- a/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraRouterSystem.cs +++ b/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraRouterSystem.cs @@ -1,6 +1,5 @@ using Content.Server.DeviceNetwork.Systems; using Content.Shared.ActionBlocker; -using Content.Shared.DeviceNetwork; using Content.Shared.DeviceNetwork.Events; using Content.Shared.Power; using Content.Shared.SurveillanceCamera; @@ -15,249 +14,163 @@ public sealed partial class SurveillanceCameraRouterSystem : EntitySystem [Dependency] private DeviceNetworkSystem _deviceNetworkSystem = default!; [Dependency] private ActionBlockerSystem _actionBlocker = default!; [Dependency] private UserInterfaceSystem _userInterface = default!; + + [Dependency] private EntityQuery _query = default!; + public override void Initialize() { - SubscribeLocalEvent(OnInitialize); - SubscribeLocalEvent(OnPacketReceive); + base.Initialize(); + SubscribeLocalEvent(OnMapInit); SubscribeLocalEvent(OnSetNetwork); SubscribeLocalEvent>(AddVerbs); SubscribeLocalEvent(OnPowerChanged); } - private void OnInitialize(EntityUid uid, SurveillanceCameraRouterComponent router, ComponentInit args) + private void OnMapInit(Entity ent, ref MapInitEvent args) { - if (router.SubnetFrequencyId == null || - !ProtoMan.TryIndex(router.SubnetFrequencyId, out DeviceFrequencyPrototype? subnetFrequency)) + if (ent.Comp.SubnetFrequencyId == null + || !ProtoMan.TryIndex(ent.Comp.SubnetFrequencyId, out var subnetFrequency)) + return; + + ent.Comp.SubnetFrequency = subnetFrequency.Frequency; + ent.Comp.Active = true; + + if (string.IsNullOrEmpty(ent.Comp.SubnetName) && subnetFrequency.Name != null) + ent.Comp.SubnetName = Loc.GetString(subnetFrequency.Name); + } + + [SubscribeLocalEvent] + private void OnSubnetConnect(Entity ent, ref DeviceNetworkPacketEvent args) + { + AddMonitorToRoute(ent.AsNullable(), args.SenderAddress); + PingSubnet(ent.AsNullable()); + } + + [SubscribeLocalEvent] + private void OnSubnetDisconnect(Entity ent, ref DeviceNetworkPacketEvent args) + { + RemoveMonitorFromRoute(ent.AsNullable(), args.SenderAddress); + } + + [SubscribeLocalEvent] + private void OnSubnetPing(Entity ent, ref DeviceNetworkPacketEvent args) + { + if (ent.Comp.SubnetFrequencyId == null) + return; + + var response = new SurveillanceCameraSubnetDataPayload + { + Subnet = ent.Comp.SubnetName, + TransmitFrequency = ent.Comp.SubnetFrequencyId.Value, + }; + _deviceNetworkSystem.SendPacket(ent.Owner, args.SenderAddress, ref response); + } + + private void OnPowerChanged(Entity ent, ref PowerChangedEvent args) + { + ent.Comp.MonitorRoutes.Clear(); + ent.Comp.Active = args.Powered; + } + + private void AddVerbs(Entity ent, ref GetVerbsEvent verbs) + { + if (!_actionBlocker.CanInteract(verbs.User, ent.Owner) || !_actionBlocker.CanComplexInteract(verbs.User)) { return; } - router.SubnetFrequency = subnetFrequency.Frequency; - router.Active = true; - } - - private void OnPacketReceive(EntityUid uid, SurveillanceCameraRouterComponent router, DeviceNetworkPacketEvent args) - { - if (!router.Active - || string.IsNullOrEmpty(args.SenderAddress) - || !args.Data.TryGetValue(DeviceNetworkConstants.Command, out string? command)) - { - return; - } - - switch (command) - { - case SurveillanceCameraSystem.CameraConnectMessage: - if (!args.Data.TryGetValue(SurveillanceCameraSystem.CameraAddressData, out string? address)) - { - return; - } - - ConnectCamera(uid, args.SenderAddress, address, router); - break; - case SurveillanceCameraSystem.CameraHeartbeatMessage: - if (!args.Data.TryGetValue(SurveillanceCameraSystem.CameraAddressData, out string? camera)) - { - return; - } - - SendHeartbeat(uid, args.SenderAddress, camera, router); - break; - case SurveillanceCameraSystem.CameraSubnetConnectMessage: - AddMonitorToRoute(uid, args.SenderAddress, router); - PingSubnet(uid, router); - break; - case SurveillanceCameraSystem.CameraSubnetDisconnectMessage: - RemoveMonitorFromRoute(uid, args.SenderAddress, router); - break; - case SurveillanceCameraSystem.CameraPingSubnetMessage: - PingSubnet(uid, router); - break; - case SurveillanceCameraSystem.CameraPingMessage: - SubnetPingResponse(uid, args.SenderAddress, router); - break; - case SurveillanceCameraSystem.CameraDataMessage: - SendCameraInfo(uid, args.Data, router); - break; - } - } - - private void OnPowerChanged(EntityUid uid, SurveillanceCameraRouterComponent component, ref PowerChangedEvent args) - { - component.MonitorRoutes.Clear(); - component.Active = args.Powered; - } - - private void AddVerbs(EntityUid uid, SurveillanceCameraRouterComponent component, GetVerbsEvent verbs) - { - if (!_actionBlocker.CanInteract(verbs.User, uid) || !_actionBlocker.CanComplexInteract(verbs.User)) - { - return; - } - - if (component.SubnetFrequencyId != null) + if (ent.Comp.SubnetFrequencyId != null) { return; } AlternativeVerb verb = new(); + var user = verbs.User; verb.Text = Loc.GetString("surveillance-camera-setup"); - verb.Act = () => OpenSetupInterface(uid, verbs.User, component); + verb.Act = () => OpenSetupInterface(ent.AsNullable(), user); verbs.Verbs.Add(verb); } - private void OnSetNetwork(EntityUid uid, SurveillanceCameraRouterComponent component, - SurveillanceCameraSetupSetNetwork args) + private void OnSetNetwork(Entity ent, ref SurveillanceCameraSetupSetNetwork args) { if (args.UiKey is not SurveillanceCameraSetupUiKey key || key != SurveillanceCameraSetupUiKey.Router) { return; } - if (args.Network < 0 || args.Network >= component.AvailableNetworks.Count) + if (args.Network < 0 || args.Network >= ent.Comp.AvailableNetworks.Count) { return; } - if (!ProtoMan.Resolve(component.AvailableNetworks[args.Network], - out var frequency)) + if (!ProtoMan.Resolve(ent.Comp.AvailableNetworks[args.Network], out var frequency)) { return; } - component.SubnetFrequencyId = component.AvailableNetworks[args.Network]; - component.SubnetFrequency = frequency.Frequency; - component.Active = true; - UpdateSetupInterface(uid, component); + ent.Comp.SubnetFrequencyId = ent.Comp.AvailableNetworks[args.Network]; + ent.Comp.SubnetFrequency = frequency.Frequency; + ent.Comp.Active = true; + UpdateSetupInterface(ent.AsNullable()); } - private void OpenSetupInterface(EntityUid uid, EntityUid player, SurveillanceCameraRouterComponent? camera = null) + private void OpenSetupInterface(Entity ent, EntityUid player) { - if (!Resolve(uid, ref camera)) + if (!_query.Resolve(ref ent)) return; - if (!_userInterface.TryOpenUi(uid, SurveillanceCameraSetupUiKey.Router, player)) + if (!_userInterface.TryOpenUi(ent.Owner, SurveillanceCameraSetupUiKey.Router, player)) return; - UpdateSetupInterface(uid, camera); + UpdateSetupInterface(ent.AsNullable()); } - private void UpdateSetupInterface(EntityUid uid, SurveillanceCameraRouterComponent? router = null, DeviceNetworkComponent? deviceNet = null) + private void UpdateSetupInterface(Entity ent) { - if (!Resolve(uid, ref router, ref deviceNet)) + if (!_query.Resolve(ent.Owner, ref ent.Comp1) || !Resolve(ent.Owner, ref ent.Comp2)) + return; + + if (ent.Comp1.AvailableNetworks.Count == 0 || ent.Comp1.SubnetFrequencyId != null) { + _userInterface.CloseUi(ent.Owner, SurveillanceCameraSetupUiKey.Router); return; } - if (router.AvailableNetworks.Count == 0 || router.SubnetFrequencyId != null) - { - _userInterface.CloseUi(uid, SurveillanceCameraSetupUiKey.Router); - return; - } - - var state = new SurveillanceCameraSetupBoundUiState(router.SubnetName, deviceNet.ReceiveFrequency ?? 0, - router.AvailableNetworks, true, router.SubnetFrequencyId != null); - _userInterface.SetUiState(uid, SurveillanceCameraSetupUiKey.Router, state); - } - - private void SendHeartbeat(EntityUid uid, string origin, string destination, - SurveillanceCameraRouterComponent? router = null) - { - if (!Resolve(uid, ref router)) - { - return; - } - - var payload = new NetworkPayload() - { - { DeviceNetworkConstants.Command, SurveillanceCameraSystem.CameraHeartbeatMessage }, - { SurveillanceCameraSystem.CameraAddressData, origin } - }; - - _deviceNetworkSystem.QueuePacket(uid, destination, payload, router.SubnetFrequency); - } - - private void SubnetPingResponse(EntityUid uid, string origin, SurveillanceCameraRouterComponent? router = null) - { - if (!Resolve(uid, ref router) || router.SubnetFrequencyId == null) - { - return; - } - - var payload = new NetworkPayload() - { - { DeviceNetworkConstants.Command, SurveillanceCameraSystem.CameraSubnetData }, - { SurveillanceCameraSystem.CameraSubnetData, router.SubnetFrequencyId } - }; - - _deviceNetworkSystem.QueuePacket(uid, origin, payload); - } - - private void ConnectCamera(EntityUid uid, string origin, string address, SurveillanceCameraRouterComponent? router = null) - { - if (!Resolve(uid, ref router)) - { - return; - } - - var payload = new NetworkPayload() - { - { DeviceNetworkConstants.Command, SurveillanceCameraSystem.CameraConnectMessage }, - { SurveillanceCameraSystem.CameraAddressData, origin } - }; - - _deviceNetworkSystem.QueuePacket(uid, address, payload, router.SubnetFrequency); + var state = new SurveillanceCameraSetupBoundUiState(ent.Comp1.SubnetName, + ent.Comp2.ReceiveFrequency ?? 0, + ent.Comp1.AvailableNetworks, + true, + ent.Comp1.SubnetFrequencyId != null); + _userInterface.SetUiState(ent.Owner, SurveillanceCameraSetupUiKey.Router, state); } // Adds a monitor to the set of routes. - private void AddMonitorToRoute(EntityUid uid, string address, SurveillanceCameraRouterComponent? router = null) + private void AddMonitorToRoute(Entity ent, string address) { - if (!Resolve(uid, ref router)) - { + if (!_query.Resolve(ref ent) || ent.Comp == null) return; - } - router.MonitorRoutes.Add(address); + ent.Comp.MonitorRoutes.Add(address); } - private void RemoveMonitorFromRoute(EntityUid uid, string address, SurveillanceCameraRouterComponent? router = null) + private void RemoveMonitorFromRoute(Entity ent, string address) { - if (!Resolve(uid, ref router)) - { + if (!_query.Resolve(ref ent) || ent.Comp == null) return; - } - router.MonitorRoutes.Remove(address); + ent.Comp.MonitorRoutes.Remove(address); } // Pings a subnet to get all camera information. - private void PingSubnet(EntityUid uid, SurveillanceCameraRouterComponent? router = null) + private void PingSubnet(Entity ent) { - if (!Resolve(uid, ref router)) - { + if (!_query.Resolve(ref ent) || ent.Comp == null) return; - } - var payload = new NetworkPayload() + var payload = new SurveillanceCameraPingPayload { - { DeviceNetworkConstants.Command, SurveillanceCameraSystem.CameraPingMessage }, - { SurveillanceCameraSystem.CameraSubnetData, router.SubnetFrequencyId } + Subnet = ent.Comp.SubnetName, }; - - _deviceNetworkSystem.QueuePacket(uid, null, payload, router.SubnetFrequency); - } - - // Sends camera information to all monitors currently interested. - private void SendCameraInfo(EntityUid uid, NetworkPayload payload, SurveillanceCameraRouterComponent? router = null) - { - if (!Resolve(uid, ref router)) - { - return; - } - - foreach (var address in router.MonitorRoutes) - { - _deviceNetworkSystem.QueuePacket(uid, address, payload); - } + _deviceNetworkSystem.SendPacket(ent.Owner, null, ref payload, ent.Comp.SubnetFrequency); } } diff --git a/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraSystem.Collide.cs b/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraSystem.Collide.cs index b171bdab75..c7d8ce699e 100644 --- a/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraSystem.Collide.cs +++ b/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraSystem.Collide.cs @@ -6,7 +6,7 @@ using Robust.Shared.Physics.Systems; namespace Content.Server.SurveillanceCamera; -public partial class SurveillanceCameraSystem +public sealed partial class SurveillanceCameraSystem { [Dependency] private SharedPhysicsSystem _physics = default!; [Dependency] private SharedPowerReceiverSystem _power = default!; diff --git a/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraSystem.cs b/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraSystem.cs index f6118f8c4b..2b1dd89d5e 100644 --- a/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraSystem.cs +++ b/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraSystem.cs @@ -1,15 +1,14 @@ using Content.Server.Administration.Logs; using Content.Server.DeviceNetwork.Systems; using Content.Shared.Database; -using Content.Shared.DeviceNetwork; using Content.Shared.DeviceNetwork.Components; using Content.Shared.DeviceNetwork.Events; +using Content.Shared.DeviceNetwork.Systems; using Content.Shared.Power; using Content.Shared.SurveillanceCamera; using Content.Shared.SurveillanceCamera.Components; using Robust.Server.GameObjects; using Robust.Shared.Player; -using Robust.Shared.Prototypes; namespace Content.Server.SurveillanceCamera; @@ -17,37 +16,13 @@ public sealed partial class SurveillanceCameraSystem : SharedSurveillanceCameraS { [Dependency] private ViewSubscriberSystem _viewSubscriberSystem = default!; [Dependency] private DeviceNetworkSystem _deviceNetworkSystem = default!; + [Dependency] private DeviceNetworkRouterSystem _deviceNetworkRouter = default!; [Dependency] private UserInterfaceSystem _userInterface = default!; [Dependency] private IAdminLogManager _adminLogger = default!; [Dependency] private SurveillanceCameraMapSystem _cameraMapSystem = default!; [Dependency] private SharedAppearanceSystem _appearance = default!; - // Pings a surveillance camera subnet. All cameras will always respond - // with a data message if they are on the same subnet. - public const string CameraPingSubnetMessage = "surveillance_camera_ping_subnet"; - - // Pings a surveillance camera. Useful to ensure that the camera is still on - // before connecting fully. - public const string CameraPingMessage = "surveillance_camera_ping"; - - // Camera heartbeat. Monitors ping this to ensure that a camera is still able to - // be contacted. If this doesn't get sent after some time, the monitor will - // automatically disconnect. - public const string CameraHeartbeatMessage = "surveillance_camera_heartbeat"; - - // Surveillance camera data. This generally should contain nothing - // except for the subnet that this camera is on - - // this is because of the fact that the PacketEvent already - // contains the sender UID, and that this will always be targeted - // towards the sender that pinged the camera. - public const string CameraDataMessage = "surveillance_camera_data"; - public const string CameraConnectMessage = "surveillance_camera_connect"; - public const string CameraSubnetConnectMessage = "surveillance_camera_subnet_connect"; - public const string CameraSubnetDisconnectMessage = "surveillance_camera_subnet_disconnect"; - - public const string CameraAddressData = "surveillance_camera_data_origin"; - public const string CameraNameData = "surveillance_camera_data_name"; - public const string CameraSubnetData = "surveillance_camera_data_subnet"; + [Dependency] private EntityQuery _routerQuery = default!; public const int CameraNameLimit = 32; @@ -57,74 +32,53 @@ public sealed partial class SurveillanceCameraSystem : SharedSurveillanceCameraS SubscribeLocalEvent(OnShutdown); SubscribeLocalEvent(OnPowerChanged); - SubscribeLocalEvent(OnPacketReceived); SubscribeLocalEvent(OnSetName); SubscribeLocalEvent(OnSetNetwork); InitializeCollide(); } - private void OnPacketReceived(EntityUid uid, SurveillanceCameraComponent component, DeviceNetworkPacketEvent args) + [SubscribeLocalEvent] + private void OnConnectRequest(Entity ent, ref DeviceNetworkPacketEvent args) { - if (!component.Active) - { + var payload = args.Data; + if (!ent.Comp.Active) return; - } - if (!TryComp(uid, out DeviceNetworkComponent? deviceNet)) - { + var responsePayload = new SurveillanceCameraConnectPayload(); + _deviceNetworkRouter.SendPacketRouted(ent.Owner, ref responsePayload, args.SenderAddress, payload.SenderAddress); + } + + [SubscribeLocalEvent] + private void OnHeartbeatRequest(Entity ent, ref DeviceNetworkPacketEvent args) + { + var payload = args.Data; + if (!ent.Comp.Active) return; - } - if (args.Data.TryGetValue(DeviceNetworkConstants.Command, out string? command)) + var responsePayload = new SurveillanceCameraHeartbeatPayload(); + _deviceNetworkRouter.SendPacketRouted(ent.Owner, ref responsePayload, args.SenderAddress, payload.SenderAddress); + } + + [SubscribeLocalEvent] + private void OnPing(Entity ent, ref DeviceNetworkPacketEvent args) + { + var payload = args.Data; + if (!ent.Comp.Active) + return; + + if (!_routerQuery.TryComp(args.Sender, out var routerComp)) + return; + + if (routerComp.SubnetName != payload.Subnet) + return; + + var name = ent.Comp.UseEntityNameAsCameraId ? MetaData(ent).EntityName : ent.Comp.CameraId; + var responsePayload = new SurveillanceCameraDataPayload { - var payload = new NetworkPayload() - { - { DeviceNetworkConstants.Command, string.Empty }, - { CameraAddressData, deviceNet.Address }, - { CameraNameData, component.UseEntityNameAsCameraId ? MetaData(uid).EntityName : component.CameraId }, - { CameraSubnetData, null } - }; - - var dest = string.Empty; - - switch (command) - { - case CameraConnectMessage: - if (!args.Data.TryGetValue(CameraAddressData, out dest) - || string.IsNullOrEmpty(args.Address)) - { - return; - } - - payload[DeviceNetworkConstants.Command] = CameraConnectMessage; - break; - case CameraHeartbeatMessage: - if (!args.Data.TryGetValue(CameraAddressData, out dest) - || string.IsNullOrEmpty(args.Address)) - { - return; - } - - payload[DeviceNetworkConstants.Command] = CameraHeartbeatMessage; - break; - case CameraPingMessage: - if (!args.Data.TryGetValue(CameraSubnetData, out ProtoId? subnet)) - { - return; - } - - dest = args.SenderAddress; - payload[CameraSubnetData] = subnet; - payload[DeviceNetworkConstants.Command] = CameraDataMessage; - break; - } - - _deviceNetworkSystem.QueuePacket( - uid, - dest, - payload); - } + Name = name, + }; + _deviceNetworkRouter.SendPacketRouted(ent.Owner, ref responsePayload, args.SenderAddress, payload.SenderAddress); } private void OnPowerChanged(EntityUid camera, SurveillanceCameraComponent component, ref PowerChangedEvent args) @@ -154,9 +108,9 @@ public sealed partial class SurveillanceCameraSystem : SharedSurveillanceCameraS _adminLogger.Add(LogType.Chat, LogImpact.Low, $"{ToPrettyString(args.Actor)} set the name of {ToPrettyString(uid)} to \"{args.Name}.\""); } - private void OnSetNetwork(EntityUid uid, SurveillanceCameraComponent component, - SurveillanceCameraSetupSetNetwork args) + private void OnSetNetwork(Entity ent, ref SurveillanceCameraSetupSetNetwork args) { + var (uid, component) = ent; if (args.UiKey is not SurveillanceCameraSetupUiKey key || key != SurveillanceCameraSetupUiKey.Camera) { @@ -167,8 +121,7 @@ public sealed partial class SurveillanceCameraSystem : SharedSurveillanceCameraS return; } - if (!ProtoMan.Resolve(component.AvailableNetworks[args.Network], - out var frequency)) + if (!ProtoMan.Resolve(component.AvailableNetworks[args.Network], out var frequency)) { return; } @@ -217,8 +170,11 @@ public sealed partial class SurveillanceCameraSystem : SharedSurveillanceCameraS } var name = camera.UseEntityNameAsCameraId ? MetaData(uid).EntityName : camera.CameraId; - var state = new SurveillanceCameraSetupBoundUiState(name, deviceNet.ReceiveFrequency ?? 0, - camera.AvailableNetworks, camera.NameSet, camera.NetworkSet); + var state = new SurveillanceCameraSetupBoundUiState(name, + deviceNet.ReceiveFrequency ?? 0, + camera.AvailableNetworks, + camera.NameSet, + camera.NetworkSet); _userInterface.SetUiState(uid, SurveillanceCameraSetupUiKey.Camera, state); } diff --git a/Content.Server/TurretController/DeployableTurretControllerSystem.cs b/Content.Server/TurretController/DeployableTurretControllerSystem.cs index c953baa7da..89f7545147 100644 --- a/Content.Server/TurretController/DeployableTurretControllerSystem.cs +++ b/Content.Server/TurretController/DeployableTurretControllerSystem.cs @@ -1,6 +1,5 @@ using Content.Server.DeviceNetwork.Systems; using Content.Shared.Access; -using Content.Shared.DeviceNetwork; using Content.Shared.DeviceNetwork.Components; using Content.Shared.DeviceNetwork.Events; using Content.Shared.DeviceNetwork.Systems; @@ -19,26 +18,25 @@ public sealed partial class DeployableTurretControllerSystem : SharedDeployableT { [Dependency] private UserInterfaceSystem _userInterfaceSystem = default!; [Dependency] private DeviceNetworkSystem _deviceNetwork = default!; + [Dependency] private DeviceListSystem _deviceList = default!; [Dependency] private IAdminLogManager _adminLogger = default!; - /// Keys for the device network. See for further examples. - public const string CmdSetArmamemtState = "set_armament_state"; - public const string CmdSetAccessExemptions = "set_access_exemption"; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnBUIOpened); - SubscribeLocalEvent(OnDeviceListUpdate); - SubscribeLocalEvent(OnPacketReceived); - } - + [SubscribeLocalEvent] private void OnBUIOpened(Entity ent, ref BoundUIOpenedEvent args) { + if (!TryComp(ent, out var deviceNetwork)) + return; + + var payload = new TurretControllerRequestPayload(); + foreach (var (address, _) in _deviceList.GetDeviceList(ent.Owner)) + { + _deviceNetwork.SendPacket((ent.Owner, deviceNetwork), address, ref payload); + } + UpdateUIState(ent); } + [SubscribeLocalEvent] private void OnDeviceListUpdate(Entity ent, ref DeviceListUpdateEvent args) { if (!TryComp(ent, out var deviceNetwork)) @@ -48,10 +46,7 @@ public sealed partial class DeployableTurretControllerSystem : SharedDeployableT var turretsToAdd = args.Devices.Except(args.OldDevices); // Request data from newly linked devices - var payload = new NetworkPayload - { - [DeviceNetworkConstants.Command] = DeviceNetworkConstants.CmdUpdatedState, - }; + var payload = new TurretControllerRequestPayload(); foreach (var turretUid in turretsToAdd) { @@ -61,7 +56,7 @@ public sealed partial class DeployableTurretControllerSystem : SharedDeployableT if (!TryComp(turretUid, out var turretDeviceNetwork)) continue; - _deviceNetwork.QueuePacket(ent, turretDeviceNetwork.Address, payload, device: deviceNetwork); + _deviceNetwork.SendPacket((ent.Owner, deviceNetwork), turretDeviceNetwork.Address, ref payload); } // Remove newly unlinked devices @@ -81,21 +76,16 @@ public sealed partial class DeployableTurretControllerSystem : SharedDeployableT UpdateUIState(ent); } - private void OnPacketReceived(Entity ent, ref DeviceNetworkPacketEvent args) + [SubscribeLocalEvent] + private void OnPacketReceived(Entity ent, ref DeviceNetworkPacketEvent args) { - if (!args.Data.TryGetValue(DeviceNetworkConstants.Command, out string? command)) - return; - if (!TryComp(ent, out var deviceNetwork) || deviceNetwork.ReceiveFrequency != args.Frequency) return; // If an update was received from a turret, connect to it and update the UI - if (command == DeviceNetworkConstants.CmdUpdatedState && - args.Data.TryGetValue(command, out DeployableTurretState updatedState)) - { - ent.Comp.LinkedTurrets[args.SenderAddress] = updatedState; - UpdateUIState(ent); - } + + ent.Comp.LinkedTurrets[args.SenderAddress] = args.Data.State; + UpdateUIState(ent); } protected override void ChangeArmamentSetting(Entity ent, int armamentState, EntityUid? user = null) @@ -106,15 +96,14 @@ public sealed partial class DeployableTurretControllerSystem : SharedDeployableT return; // Update linked turrets' armament statuses - var payload = new NetworkPayload + var payload = new TurretControllerSetArmamentPayload { - [DeviceNetworkConstants.Command] = CmdSetArmamemtState, - [CmdSetArmamemtState] = armamentState, + ArmamentState = armamentState, }; _adminLogger.Add(LogType.ItemConfigure, LogImpact.Medium, $"{ToPrettyString(user)} set {ToPrettyString(ent)} to {armamentState}"); - _deviceNetwork.QueuePacket(ent, null, payload, device: device); + _deviceNetwork.SendPacket((ent.Owner, device), null, ref payload); } protected override void ChangeExemptAccessLevels( @@ -131,10 +120,9 @@ public sealed partial class DeployableTurretControllerSystem : SharedDeployableT return; // Update linked turrets' target selection exemptions - var payload = new NetworkPayload + var payload = new TurretControllerSetAccessPayload { - [DeviceNetworkConstants.Command] = CmdSetAccessExemptions, - [CmdSetAccessExemptions] = turretTargetingSettings.ExemptAccessLevels, + AccessExemptions = turretTargetingSettings.ExemptAccessLevels, }; foreach (var exemption in exemptions) @@ -142,7 +130,7 @@ public sealed partial class DeployableTurretControllerSystem : SharedDeployableT _adminLogger.Add(LogType.ItemConfigure, LogImpact.Medium, $"{ToPrettyString(user)} set {ToPrettyString(ent)} authorization of {exemption} to {enabled}"); } - _deviceNetwork.QueuePacket(ent, null, payload, device: device); + _deviceNetwork.SendPacket((ent.Owner, device), null, ref payload); } private void UpdateUIState(Entity ent) diff --git a/Content.Server/Turrets/DeployableTurretSystem.cs b/Content.Server/Turrets/DeployableTurretSystem.cs index d0c5c1accc..f57dcca658 100644 --- a/Content.Server/Turrets/DeployableTurretSystem.cs +++ b/Content.Server/Turrets/DeployableTurretSystem.cs @@ -2,22 +2,19 @@ using Content.Server.Destructible; using Content.Server.DeviceNetwork.Systems; using Content.Server.NPC.HTN; using Content.Server.NPC.HTN.PrimitiveTasks.Operators.Combat.Ranged; -using Content.Server.Power.Components; -using Content.Server.TurretController; -using Content.Shared.Access; using Content.Shared.Destructible; using Content.Shared.DeviceNetwork; using Content.Shared.DeviceNetwork.Components; using Content.Shared.DeviceNetwork.Events; using Content.Shared.Power; using Content.Shared.Repairable; +using Content.Shared.TurretController; using Content.Shared.Turrets; using Content.Shared.Weapons.Ranged.Components; using Content.Shared.Weapons.Ranged.Events; using Content.Shared.Weapons.Ranged.Systems; using Robust.Shared.Audio; using Robust.Shared.Audio.Systems; -using Robust.Shared.Prototypes; using Robust.Shared.Timing; namespace Content.Server.Turrets; @@ -32,6 +29,8 @@ public sealed partial class DeployableTurretSystem : SharedDeployableTurretSyste [Dependency] private TurretTargetSettingsSystem _turretTargetingSettings = default!; [Dependency] private IGameTiming _timing = default!; + [Dependency] private EntityQuery _deviceQuery = default!; + public override void Initialize() { base.Initialize(); @@ -41,7 +40,6 @@ public sealed partial class DeployableTurretSystem : SharedDeployableTurretSyste SubscribeLocalEvent(OnPowerChanged); SubscribeLocalEvent(OnBroken); SubscribeLocalEvent(OnRepaired); - SubscribeLocalEvent(OnPacketReceived); SubscribeLocalEvent(OnBeforeBroadcast); } @@ -74,37 +72,28 @@ public sealed partial class DeployableTurretSystem : SharedDeployableTurretSyste _appearance.SetData(ent, DeployableTurretVisuals.Broken, false, appearance); } - private void OnPacketReceived(Entity ent, ref DeviceNetworkPacketEvent args) + [SubscribeLocalEvent] + private void OnSetArmament(Entity ent, ref DeviceNetworkPacketEvent args) { - if (!args.Data.TryGetValue(DeviceNetworkConstants.Command, out string? command)) + if (TryComp(ent, out var batteryWeaponFireModes)) + _fireModes.TrySetFireMode((ent.Owner, batteryWeaponFireModes), args.Data.ArmamentState); + + TrySetState(ent, args.Data.ArmamentState >= 0); + } + + [SubscribeLocalEvent] + private void OnSetAccess(Entity ent, ref DeviceNetworkPacketEvent args) + { + if (!TryComp(ent, out var targetSettings)) return; - // Received a command to change armament state - if (command == DeployableTurretControllerSystem.CmdSetArmamemtState && - args.Data.TryGetValue(command, out int? armamentState)) - { - if (TryComp(ent, out var batteryWeaponFireModes)) - _fireModes.TrySetFireMode((ent, batteryWeaponFireModes), armamentState.Value); + _turretTargetingSettings.SyncAccessLevelExemptions((ent, targetSettings), args.Data.AccessExemptions); + } - TrySetState(ent, armamentState.Value >= 0); - return; - } - - // Received a command to change access exemptions - if (command == DeployableTurretControllerSystem.CmdSetAccessExemptions && - args.Data.TryGetValue(command, out HashSet>? accessExemptions) && - TryComp(ent, out var turretTargetSettings)) - { - _turretTargetingSettings.SyncAccessLevelExemptions((ent, turretTargetSettings), accessExemptions); - return; - } - - // Received a command to update the device network - if (command == DeviceNetworkConstants.CmdUpdatedState) - { - SendStateUpdateToDeviceNetwork(ent); - return; - } + [SubscribeLocalEvent] + private void OnRequest(Entity ent, ref DeviceNetworkPacketEvent args) + { + SendStateUpdateToDeviceNetwork(ent); } private void OnBeforeBroadcast(Entity ent, ref BeforeBroadcastAttemptEvent args) @@ -112,15 +101,15 @@ public sealed partial class DeployableTurretSystem : SharedDeployableTurretSyste if (!TryComp(ent, out var deviceNetwork)) return; - var recipientDeviceNetworks = new HashSet(); + var recipientDeviceNetworks = new HashSet(); // Only broadcast to connected devices foreach (var recipient in deviceNetwork.DeviceLists) { - if (!TryComp(recipient, out var recipientDeviceNetwork)) + if (!_deviceQuery.TryComp(recipient, out var recipientDeviceNetwork)) continue; - recipientDeviceNetworks.Add(recipientDeviceNetwork); + recipientDeviceNetworks.Add(new Device((recipient, recipientDeviceNetwork))); } if (recipientDeviceNetworks.Count > 0) @@ -132,13 +121,11 @@ public sealed partial class DeployableTurretSystem : SharedDeployableTurretSyste if (!TryComp(ent, out var device)) return; - var payload = new NetworkPayload + var payload = new TurretStatePayload { - [DeviceNetworkConstants.Command] = DeviceNetworkConstants.CmdUpdatedState, - [DeviceNetworkConstants.CmdUpdatedState] = GetTurretState(ent) + State = GetTurretState(ent), }; - - _deviceNetwork.QueuePacket(ent, null, payload, device: device); + _deviceNetwork.SendPacket((ent.Owner, device), null, ref payload); } protected override void SetState(Entity ent, bool enabled, EntityUid? user = null) diff --git a/Content.Shared/Atmos/Monitor/AtmosSensorData.cs b/Content.Shared/Atmos/Monitor/AtmosSensorData.cs index 041c386b5f..1a2b291243 100644 --- a/Content.Shared/Atmos/Monitor/AtmosSensorData.cs +++ b/Content.Shared/Atmos/Monitor/AtmosSensorData.cs @@ -1,12 +1,28 @@ -using Content.Shared.Atmos.Monitor.Components; +using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork.Systems; using Robust.Shared.Serialization; namespace Content.Shared.Atmos.Monitor; -[Serializable, NetSerializable] -public sealed class AtmosSensorData : IAtmosDeviceData +/// +/// Contains . +/// +public partial record struct AtmosMonitorDataPayload : INetworkPayload { - public AtmosSensorData(float pressure, float temperature, float totalMoles, AtmosAlarmType alarmState, Dictionary gases, AtmosAlarmThreshold pressureThreshold, AtmosAlarmThreshold temperatureThreshold, Dictionary gasThresholds) + [DataField] + public AtmosMonitorData Data; +} + +[Serializable, NetSerializable] +public sealed partial class AtmosMonitorData : BaseAtmosDeviceData +{ + public override void RaisePayload(EntityUid uid, string address, SharedDeviceNetworkSystem deviceNetSys) + { + var payload = new AtmosMonitorDataPayload { Data = this }; + deviceNetSys.SendPacket(uid, address, ref payload); + } + + public AtmosMonitorData(float pressure, float temperature, float totalMoles, AtmosAlarmType alarmState, Dictionary gases, AtmosAlarmThreshold pressureThreshold, AtmosAlarmThreshold temperatureThreshold, Dictionary gasThresholds) { Pressure = pressure; Temperature = temperature; @@ -18,10 +34,6 @@ public sealed class AtmosSensorData : IAtmosDeviceData GasThresholds = gasThresholds; } - public bool Enabled { get; set; } - public bool Dirty { get; set; } - public bool IgnoreAlarms { get; set; } - /// Most fields are readonly, because it's data that's meant to be transmitted. /// diff --git a/Content.Shared/Atmos/Monitor/BaseAtmosDeviceData.cs b/Content.Shared/Atmos/Monitor/BaseAtmosDeviceData.cs new file mode 100644 index 0000000000..2b5ef56b86 --- /dev/null +++ b/Content.Shared/Atmos/Monitor/BaseAtmosDeviceData.cs @@ -0,0 +1,19 @@ +using Content.Shared.DeviceNetwork.Systems; +using Robust.Shared.Serialization; + +namespace Content.Shared.Atmos.Monitor; + +[Serializable, NetSerializable] +public abstract partial class BaseAtmosDeviceData : IAtmosDeviceData +{ + [DataField] + public bool Enabled { get; set; } + + [DataField] + public bool Dirty { get; set; } + + [DataField] + public bool IgnoreAlarms { get; set; } + + public abstract void RaisePayload(EntityUid uid, string address, SharedDeviceNetworkSystem deviceNetSys); +} diff --git a/Content.Shared/Atmos/Monitor/Components/SharedAirAlarmComponent.cs b/Content.Shared/Atmos/Monitor/Components/SharedAirAlarmComponent.cs index 3d67d18a0a..1b4675f711 100644 --- a/Content.Shared/Atmos/Monitor/Components/SharedAirAlarmComponent.cs +++ b/Content.Shared/Atmos/Monitor/Components/SharedAirAlarmComponent.cs @@ -27,13 +27,6 @@ public enum AirAlarmWireStatus DeviceSync } -public interface IAtmosDeviceData -{ - public bool Enabled { get; set; } - public bool Dirty { get; set; } - public bool IgnoreAlarms { get; set; } -} - [Serializable, NetSerializable] public sealed class AirAlarmUIState : BoundUserInterfaceState { @@ -69,8 +62,7 @@ public sealed class AirAlarmUIState : BoundUserInterfaceState } [Serializable, NetSerializable] -public sealed class AirAlarmResyncAllDevicesMessage : BoundUserInterfaceMessage -{} +public sealed class AirAlarmResyncAllDevicesMessage : BoundUserInterfaceMessage; [Serializable, NetSerializable] public sealed class AirAlarmUpdateAlarmModeMessage : BoundUserInterfaceMessage diff --git a/Content.Shared/Atmos/Monitor/IAtmosDeviceData.cs b/Content.Shared/Atmos/Monitor/IAtmosDeviceData.cs new file mode 100644 index 0000000000..d62288a736 --- /dev/null +++ b/Content.Shared/Atmos/Monitor/IAtmosDeviceData.cs @@ -0,0 +1,21 @@ +using Content.Shared.DeviceNetwork.Systems; + +namespace Content.Shared.Atmos.Monitor; + +[ImplicitDataDefinitionForInheritors] +public partial interface IAtmosDeviceData +{ + bool Enabled { get; set; } + + bool Dirty { get; set; } + + bool IgnoreAlarms { get; set; } + + /// + /// Creates a payload that contains this atmos device data and send it to the specified address. + /// + /// Owner of this atmos data. + /// The target address. + /// The device network system. + void RaisePayload(EntityUid uid, string address, SharedDeviceNetworkSystem deviceNetSys); +} diff --git a/Content.Shared/Atmos/Piping/Binary/Components/SharedGasVolumePumpComponent.cs b/Content.Shared/Atmos/Piping/Binary/Components/SharedGasVolumePumpComponent.cs index f3b6bb8caf..f34d22d9ad 100644 --- a/Content.Shared/Atmos/Piping/Binary/Components/SharedGasVolumePumpComponent.cs +++ b/Content.Shared/Atmos/Piping/Binary/Components/SharedGasVolumePumpComponent.cs @@ -1,34 +1,41 @@ -using Robust.Shared.Serialization; +using Content.Shared.DeviceNetwork; +using Robust.Shared.Serialization; -namespace Content.Shared.Atmos.Piping.Binary.Components +namespace Content.Shared.Atmos.Piping.Binary.Components; + +/// +/// Contains data about a . +/// +public partial record struct GasVolumePumpDataPayload : INetworkPayload { - public sealed record GasVolumePumpData(float LastMolesTransferred); + [DataField] + public float LastMolesTransferred; +} - [Serializable, NetSerializable] - public enum GasVolumePumpUiKey : byte +[Serializable, NetSerializable] +public enum GasVolumePumpUiKey : byte +{ + Key, +} + +[Serializable, NetSerializable] +public sealed class GasVolumePumpToggleStatusMessage : BoundUserInterfaceMessage +{ + public bool Enabled { get; } + + public GasVolumePumpToggleStatusMessage(bool enabled) { - Key, - } - - [Serializable, NetSerializable] - public sealed class GasVolumePumpToggleStatusMessage : BoundUserInterfaceMessage - { - public bool Enabled { get; } - - public GasVolumePumpToggleStatusMessage(bool enabled) - { - Enabled = enabled; - } - } - - [Serializable, NetSerializable] - public sealed class GasVolumePumpChangeTransferRateMessage : BoundUserInterfaceMessage - { - public float TransferRate { get; } - - public GasVolumePumpChangeTransferRateMessage(float transferRate) - { - TransferRate = transferRate; - } + Enabled = enabled; + } +} + +[Serializable, NetSerializable] +public sealed class GasVolumePumpChangeTransferRateMessage : BoundUserInterfaceMessage +{ + public float TransferRate { get; } + + public GasVolumePumpChangeTransferRateMessage(float transferRate) + { + TransferRate = transferRate; } } diff --git a/Content.Shared/Atmos/Piping/Unary/Components/SharedGasThermomachineComponent.cs b/Content.Shared/Atmos/Piping/Unary/Components/SharedGasThermomachineComponent.cs index 5d2beb9de5..9b4caa953d 100644 --- a/Content.Shared/Atmos/Piping/Unary/Components/SharedGasThermomachineComponent.cs +++ b/Content.Shared/Atmos/Piping/Unary/Components/SharedGasThermomachineComponent.cs @@ -1,9 +1,16 @@ -using Robust.Shared.Serialization; +using Content.Shared.DeviceNetwork; +using Robust.Shared.Serialization; namespace Content.Shared.Atmos.Piping.Unary.Components; -[Serializable, NetSerializable] -public sealed record GasThermoMachineData(float EnergyDelta); +/// +/// Contains data about . +/// +public partial record struct GasThermoMachineDataPayload : INetworkPayload +{ + [DataField] + public float EnergyDelta; +} [Serializable] [NetSerializable] diff --git a/Content.Shared/Atmos/Piping/Unary/Components/SharedVentPumpComponent.cs b/Content.Shared/Atmos/Piping/Unary/Components/SharedVentPumpComponent.cs index 15fece204d..1a06faba39 100644 --- a/Content.Shared/Atmos/Piping/Unary/Components/SharedVentPumpComponent.cs +++ b/Content.Shared/Atmos/Piping/Unary/Components/SharedVentPumpComponent.cs @@ -1,81 +1,94 @@ -using Content.Shared.Atmos.Monitor.Components; +using Content.Shared.Atmos.Monitor; +using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork.Systems; using Robust.Shared.Serialization; -namespace Content.Shared.Atmos.Piping.Unary.Components +namespace Content.Shared.Atmos.Piping.Unary.Components; + +[Serializable, NetSerializable] +public sealed partial class GasVentPumpData : BaseAtmosDeviceData { - [Serializable, NetSerializable] - public sealed class GasVentPumpData : IAtmosDeviceData + public override void RaisePayload(EntityUid uid, string address, SharedDeviceNetworkSystem deviceNetSys) { - public bool Enabled { get; set; } - public bool Dirty { get; set; } - public bool IgnoreAlarms { get; set; } = false; - public VentPumpDirection PumpDirection { get; set; } = VentPumpDirection.Releasing; - public VentPressureBound PressureChecks { get; set; } = VentPressureBound.ExternalBound; - public float ExternalPressureBound { get; set; } = Atmospherics.OneAtmosphere; - public float InternalPressureBound { get; set; } = 0f; - public bool PressureLockoutOverride { get; set; } = false; - - // Presets for 'dumb' air alarm modes - - public static GasVentPumpData FilterModePreset = new GasVentPumpData - { - Enabled = true, - PumpDirection = VentPumpDirection.Releasing, - PressureChecks = VentPressureBound.ExternalBound, - ExternalPressureBound = Atmospherics.OneAtmosphere, - InternalPressureBound = 0f, - PressureLockoutOverride = false - }; - - public static GasVentPumpData FillModePreset = new GasVentPumpData - { - Enabled = true, - Dirty = true, - PumpDirection = VentPumpDirection.Releasing, - PressureChecks = VentPressureBound.ExternalBound, - ExternalPressureBound = Atmospherics.OneAtmosphere * 50, - InternalPressureBound = 0f, - PressureLockoutOverride = true - }; - - public static GasVentPumpData PanicModePreset = new GasVentPumpData - { - Enabled = false, - Dirty = true, - PumpDirection = VentPumpDirection.Releasing, - PressureChecks = VentPressureBound.ExternalBound, - ExternalPressureBound = Atmospherics.OneAtmosphere, - InternalPressureBound = 0f, - PressureLockoutOverride = false - }; - - public static GasVentPumpData ReplaceModePreset = new GasVentPumpData - { - Enabled = false, - IgnoreAlarms = true, - Dirty = true, - PumpDirection = VentPumpDirection.Releasing, - PressureChecks = VentPressureBound.ExternalBound, - ExternalPressureBound = Atmospherics.OneAtmosphere, - InternalPressureBound = 0f, - PressureLockoutOverride = false - }; + var payload = new GasVentPumpSetDataPayload { Data = this }; + deviceNetSys.SendPacket(uid, address, ref payload); } - [Serializable, NetSerializable] - public enum VentPumpDirection : sbyte - { - Siphoning = 0, - Releasing = 1, - } + public VentPumpDirection PumpDirection { get; set; } = VentPumpDirection.Releasing; + public VentPressureBound PressureChecks { get; set; } = VentPressureBound.ExternalBound; + public float ExternalPressureBound { get; set; } = Atmospherics.OneAtmosphere; + public float InternalPressureBound { get; set; } = 0f; + public bool PressureLockoutOverride { get; set; } = false; - [Flags] - [Serializable, NetSerializable] - public enum VentPressureBound : sbyte + // Presets for 'dumb' air alarm modes + + public static GasVentPumpData FilterModePreset = new GasVentPumpData { - NoBound = 0, - InternalBound = 1, - ExternalBound = 2, - Both = 3, - } + Enabled = true, + PumpDirection = VentPumpDirection.Releasing, + PressureChecks = VentPressureBound.ExternalBound, + ExternalPressureBound = Atmospherics.OneAtmosphere, + InternalPressureBound = 0f, + PressureLockoutOverride = false + }; + + public static GasVentPumpData FillModePreset = new GasVentPumpData + { + Enabled = true, + Dirty = true, + PumpDirection = VentPumpDirection.Releasing, + PressureChecks = VentPressureBound.ExternalBound, + ExternalPressureBound = Atmospherics.OneAtmosphere * 50, + InternalPressureBound = 0f, + PressureLockoutOverride = true + }; + + public static GasVentPumpData PanicModePreset = new GasVentPumpData + { + Enabled = false, + Dirty = true, + PumpDirection = VentPumpDirection.Releasing, + PressureChecks = VentPressureBound.ExternalBound, + ExternalPressureBound = Atmospherics.OneAtmosphere, + InternalPressureBound = 0f, + PressureLockoutOverride = false + }; + + public static GasVentPumpData ReplaceModePreset = new GasVentPumpData + { + Enabled = false, + IgnoreAlarms = true, + Dirty = true, + PumpDirection = VentPumpDirection.Releasing, + PressureChecks = VentPressureBound.ExternalBound, + ExternalPressureBound = Atmospherics.OneAtmosphere, + InternalPressureBound = 0f, + PressureLockoutOverride = false + }; +} + +/// +/// Used to set . +/// +public partial record struct GasVentPumpSetDataPayload : INetworkPayload +{ + [DataField] + public GasVentPumpData Data; +} + +[Serializable, NetSerializable] +public enum VentPumpDirection : sbyte +{ + Siphoning = 0, + Releasing = 1, +} + +[Flags] +[Serializable, NetSerializable] +public enum VentPressureBound : sbyte +{ + NoBound = 0, + InternalBound = 1, + ExternalBound = 2, + Both = 3, } diff --git a/Content.Shared/Atmos/Piping/Unary/Components/SharedVentScrubberComponent.cs b/Content.Shared/Atmos/Piping/Unary/Components/SharedVentScrubberComponent.cs index 63d2e552a7..5f5ebe7dd9 100644 --- a/Content.Shared/Atmos/Piping/Unary/Components/SharedVentScrubberComponent.cs +++ b/Content.Shared/Atmos/Piping/Unary/Components/SharedVentScrubberComponent.cs @@ -1,87 +1,100 @@ -using Content.Shared.Atmos.Monitor.Components; +using Content.Shared.Atmos.Monitor; +using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork.Systems; using Robust.Shared.Serialization; -namespace Content.Shared.Atmos.Piping.Unary.Components +namespace Content.Shared.Atmos.Piping.Unary.Components; + +[Serializable, NetSerializable] +public sealed partial class GasVentScrubberData : BaseAtmosDeviceData { - [Serializable, NetSerializable] - public sealed class GasVentScrubberData : IAtmosDeviceData + public override void RaisePayload(EntityUid uid, string address, SharedDeviceNetworkSystem deviceNetSys) { - public bool Enabled { get; set; } - public bool Dirty { get; set; } - public bool IgnoreAlarms { get; set; } = false; - public HashSet FilterGases { get; set; } = new(DefaultFilterGases); - public ScrubberPumpDirection PumpDirection { get; set; } = ScrubberPumpDirection.Scrubbing; - public float VolumeRate { get; set; } = 200f; - public bool WideNet { get; set; } = false; - public bool AirAlarmPanicWireCut { get; set; } - - public static HashSet DefaultFilterGases = new() - { - Gas.CarbonDioxide, - Gas.Plasma, - Gas.Tritium, - Gas.WaterVapor, - Gas.Ammonia, - Gas.NitrousOxide, - Gas.Frezon - }; - - // Presets for 'dumb' air alarm modes - - public static GasVentScrubberData FilterModePreset = new GasVentScrubberData - { - Enabled = true, - FilterGases = new(GasVentScrubberData.DefaultFilterGases), - PumpDirection = ScrubberPumpDirection.Scrubbing, - VolumeRate = 200f, - WideNet = false - }; - - public static GasVentScrubberData WideFilterModePreset = new GasVentScrubberData - { - Enabled = true, - FilterGases = new(GasVentScrubberData.DefaultFilterGases), - PumpDirection = ScrubberPumpDirection.Scrubbing, - VolumeRate = 200f, - WideNet = true - }; - - public static GasVentScrubberData FillModePreset = new GasVentScrubberData - { - Enabled = false, - Dirty = true, - FilterGases = new(GasVentScrubberData.DefaultFilterGases), - PumpDirection = ScrubberPumpDirection.Scrubbing, - VolumeRate = 200f, - WideNet = false - }; - - public static GasVentScrubberData PanicModePreset = new GasVentScrubberData - { - Enabled = true, - Dirty = true, - FilterGases = new(GasVentScrubberData.DefaultFilterGases), - PumpDirection = ScrubberPumpDirection.Siphoning, - VolumeRate = 200f, - WideNet = true - }; - - public static GasVentScrubberData ReplaceModePreset = new GasVentScrubberData - { - Enabled = true, - IgnoreAlarms = true, - Dirty = true, - FilterGases = new(GasVentScrubberData.DefaultFilterGases), - PumpDirection = ScrubberPumpDirection.Siphoning, - VolumeRate = 200f, - WideNet = false - }; + var payload = new GasVentScrubberSetDataPayload { Data = this }; + deviceNetSys.SendPacket(uid, address, ref payload); } - [Serializable, NetSerializable] - public enum ScrubberPumpDirection : sbyte + public HashSet FilterGases { get; set; } = new(DefaultFilterGases); + public ScrubberPumpDirection PumpDirection { get; set; } = ScrubberPumpDirection.Scrubbing; + public float VolumeRate { get; set; } = 200f; + public bool WideNet { get; set; } = false; + public bool AirAlarmPanicWireCut { get; set; } + + public static HashSet DefaultFilterGases = new() { - Siphoning = 0, - Scrubbing = 1, - } + Gas.CarbonDioxide, + Gas.Plasma, + Gas.Tritium, + Gas.WaterVapor, + Gas.Ammonia, + Gas.NitrousOxide, + Gas.Frezon + }; + + // Presets for 'dumb' air alarm modes + + public static GasVentScrubberData FilterModePreset = new GasVentScrubberData + { + Enabled = true, + FilterGases = new(GasVentScrubberData.DefaultFilterGases), + PumpDirection = ScrubberPumpDirection.Scrubbing, + VolumeRate = 200f, + WideNet = false + }; + + public static GasVentScrubberData WideFilterModePreset = new GasVentScrubberData + { + Enabled = true, + FilterGases = new(GasVentScrubberData.DefaultFilterGases), + PumpDirection = ScrubberPumpDirection.Scrubbing, + VolumeRate = 200f, + WideNet = true + }; + + public static GasVentScrubberData FillModePreset = new GasVentScrubberData + { + Enabled = false, + Dirty = true, + FilterGases = new(GasVentScrubberData.DefaultFilterGases), + PumpDirection = ScrubberPumpDirection.Scrubbing, + VolumeRate = 200f, + WideNet = false + }; + + public static GasVentScrubberData PanicModePreset = new GasVentScrubberData + { + Enabled = true, + Dirty = true, + FilterGases = new(GasVentScrubberData.DefaultFilterGases), + PumpDirection = ScrubberPumpDirection.Siphoning, + VolumeRate = 200f, + WideNet = true + }; + + public static GasVentScrubberData ReplaceModePreset = new GasVentScrubberData + { + Enabled = true, + IgnoreAlarms = true, + Dirty = true, + FilterGases = new(GasVentScrubberData.DefaultFilterGases), + PumpDirection = ScrubberPumpDirection.Siphoning, + VolumeRate = 200f, + WideNet = false + }; +} + +/// +/// Used to set . +/// +public partial record struct GasVentScrubberSetDataPayload : INetworkPayload +{ + [DataField] + public GasVentScrubberData Data; +} + +[Serializable, NetSerializable] +public enum ScrubberPumpDirection : sbyte +{ + Siphoning = 0, + Scrubbing = 1, } diff --git a/Content.Shared/CartridgeLoader/CartridgeLoaderSystem.Relay.cs b/Content.Shared/CartridgeLoader/CartridgeLoaderSystem.Relay.cs index db4e952a48..985093b792 100644 --- a/Content.Shared/CartridgeLoader/CartridgeLoaderSystem.Relay.cs +++ b/Content.Shared/CartridgeLoader/CartridgeLoaderSystem.Relay.cs @@ -1,4 +1,3 @@ -using Content.Shared.DeviceNetwork.Events; using Content.Shared.Interaction; namespace Content.Shared.CartridgeLoader; @@ -9,7 +8,6 @@ public sealed partial class CartridgeLoaderSystem { SubscribeLocalEvent(RelayEvent); SubscribeLocalEvent(RelayEvent); - SubscribeLocalEvent(RelayEvent); } private void RefRelayEvent(EntityUid uid, CartridgeLoaderComponent component, ref T args) where T : struct diff --git a/Content.Shared/CartridgeLoader/Cartridges/NetProbeCartridgeSystem.cs b/Content.Shared/CartridgeLoader/Cartridges/NetProbeCartridgeSystem.cs index 4d339134be..81e0bf0866 100644 --- a/Content.Shared/CartridgeLoader/Cartridges/NetProbeCartridgeSystem.cs +++ b/Content.Shared/CartridgeLoader/Cartridges/NetProbeCartridgeSystem.cs @@ -56,8 +56,8 @@ public sealed partial class NetProbeCartridgeSystem : EntitySystem var device = new ProbedNetworkDevice( Name(target), networkComponent.Address, - networkComponent.ReceiveFrequency?.FrequencyToString() ?? string.Empty, - networkComponent.DeviceNetId.DeviceNetIdToLocalizedName() + DeviceLocalizationHelpers.FrequencyToString(networkComponent.ReceiveFrequency), + DeviceLocalizationHelpers.DeviceNetIdToLocalizedName(networkComponent.DeviceNetId, Loc) ); component.ProbedDevices.Add(device); diff --git a/Content.Shared/DeviceLinking/Events/SignalReceivedEvent.cs b/Content.Shared/DeviceLinking/Events/SignalReceivedEvent.cs index 335a95cecc..534714f176 100644 --- a/Content.Shared/DeviceLinking/Events/SignalReceivedEvent.cs +++ b/Content.Shared/DeviceLinking/Events/SignalReceivedEvent.cs @@ -1,6 +1,7 @@ -using Content.Shared.DeviceNetwork; - namespace Content.Shared.DeviceLinking.Events; [ByRefEvent] -public readonly record struct SignalReceivedEvent(string Port, EntityUid? Trigger = null, NetworkPayload? Data = null); +public readonly record struct SignalReceivedEvent(string Port, EntityUid? Trigger = null); + +[ByRefEvent] +public readonly record struct SignalReceivedEvent(string Port, T Data, EntityUid? Trigger = null) where T : ISignalNetworkPayload; diff --git a/Content.Shared/DeviceLinking/LogicStatePayload.cs b/Content.Shared/DeviceLinking/LogicStatePayload.cs new file mode 100644 index 0000000000..5266b0f840 --- /dev/null +++ b/Content.Shared/DeviceLinking/LogicStatePayload.cs @@ -0,0 +1,10 @@ +namespace Content.Shared.DeviceLinking; + +/// +/// Contains a logic state of a . +/// +public partial record struct LogicStatePayload : ISignalNetworkPayload +{ + [DataField] + public SignalState State; +} diff --git a/Content.Shared/DeviceLinking/SharedDeviceLinkSystem.cs b/Content.Shared/DeviceLinking/SharedDeviceLinkSystem.cs index a19f001fcb..d3beb43ef2 100644 --- a/Content.Shared/DeviceLinking/SharedDeviceLinkSystem.cs +++ b/Content.Shared/DeviceLinking/SharedDeviceLinkSystem.cs @@ -17,13 +17,13 @@ public abstract partial class SharedDeviceLinkSystem : EntitySystem [Dependency] private SharedTransformSystem _transform = default!; [Dependency] private IGameTiming _gameTiming = default!; - [Dependency] private EntityQuery _deviceLinkSinkQuery = default!; - - public const string InvokedPort = "link_port"; + [Dependency] protected EntityQuery DeviceLinkSinkQuery = default!; + [Dependency] protected EntityQuery DeviceLinkSourceQuery = default!; /// public override void Initialize() { + base.Initialize(); SubscribeLocalEvent(OnSourceStartup); SubscribeLocalEvent(OnSourceRemoved); SubscribeLocalEvent(OnSinkRemoved); @@ -85,7 +85,7 @@ public abstract partial class SharedDeviceLinkSystem : EntitySystem { foreach (var sinkUid in source.Comp.LinkedPorts.Keys) { - if (_deviceLinkSinkQuery.TryGetComponent(sinkUid, out var sink)) + if (DeviceLinkSinkQuery.TryGetComponent(sinkUid, out var sink)) RemoveSinkFromSourceInternal(source, sinkUid, source, sink); else Log.Error($"Device source {ToPrettyString(source)} links to invalid entity: {ToPrettyString(sinkUid)}"); @@ -539,12 +539,21 @@ public abstract partial class SharedDeviceLinkSystem : EntitySystem /// Sends a network payload directed at the sink entity. /// Just raises a without data if the source or the sink doesn't have a /// - /// The source uid that invokes the port + /// The source uid that invokes the port + /// The port to invoke + public virtual void InvokePort(Entity ent, string port) + { + // NOOP on client for the moment. + } + + /// + /// Sends a network payload directed at the sink entity. + /// Just raises a without data if the source or the sink doesn't have a + /// + /// The source entity that invokes the port /// The port to invoke /// Optional data to send along - /// - public virtual void InvokePort(EntityUid uid, string port, NetworkPayload? data = null, - DeviceLinkSourceComponent? sourceComponent = null) + public virtual void InvokePort(Entity ent, string port, ref T data) where T : ISignalNetworkPayload { // NOOP on client for the moment. } diff --git a/Content.Shared/DeviceLinking/SignalPayload.cs b/Content.Shared/DeviceLinking/SignalPayload.cs new file mode 100644 index 0000000000..bcd5f679b5 --- /dev/null +++ b/Content.Shared/DeviceLinking/SignalPayload.cs @@ -0,0 +1,41 @@ +using Content.Shared.DeviceLinking.Events; +using Content.Shared.DeviceNetwork; + +namespace Content.Shared.DeviceLinking; + +/// +/// A network payload that can be nested inside . +/// +public partial interface ISignalNetworkPayload : INetworkPayload; + +/// +/// A network payload that raises when successfully delivered. +/// Optionally contains a to provide additional data for the event. +/// +public partial record struct SignalPayload : INetworkPayload +{ + /// + /// A signal port that was invoked. + /// + [DataField] + public string InvokedPort; +} + +/// +/// A network payload that raises when successfully delivered. +/// Optionally contains a to provide additional data for the event. +/// +public partial record struct SignalPayload : INetworkPayload where T : ISignalNetworkPayload +{ + /// + /// A signal port that was invoked. + /// + [DataField] + public string InvokedPort; + + /// + /// Optional additional data about the signal. + /// + [DataField] + public T Payload; +} diff --git a/Content.Shared/DeviceNetwork/Components/DeviceNetworkComponent.cs b/Content.Shared/DeviceNetwork/Components/DeviceNetworkComponent.cs index 42c897d3b1..13abc3ebaa 100644 --- a/Content.Shared/DeviceNetwork/Components/DeviceNetworkComponent.cs +++ b/Content.Shared/DeviceNetwork/Components/DeviceNetworkComponent.cs @@ -1,120 +1,107 @@ using Content.Shared.DeviceNetwork.Systems; +using Robust.Shared.GameStates; using Robust.Shared.Prototypes; -namespace Content.Shared.DeviceNetwork.Components +namespace Content.Shared.DeviceNetwork.Components; + +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +[Access(typeof(SharedDeviceNetworkSystem), typeof(DeviceNet))] +public sealed partial class DeviceNetworkComponent : Component { - [RegisterComponent] - [Access(typeof(SharedDeviceNetworkSystem), typeof(DeviceNet))] - public sealed partial class DeviceNetworkComponent : Component - { - public enum DeviceNetIdDefaults - { - Private, - Wired, - Wireless, - Apc, - AtmosDevices, - Reserved = 100, - // Ids outside this enum may exist - // This exists to let yml use nice names instead of numbers - } + /// + /// Default device network ID to connect to. + /// + [DataField("deviceNetId")] + public DeviceNetIdDefaults NetIdEnum { get; set; } - [DataField("deviceNetId")] - public DeviceNetIdDefaults NetIdEnum { get; set; } + public int DeviceNetId => (int) NetIdEnum; - public int DeviceNetId => (int) NetIdEnum; + /// + /// The frequency that this device is listening on. + /// + [DataField] + public uint? ReceiveFrequency; - /// - /// The frequency that this device is listening on. - /// - [DataField] - public uint? ReceiveFrequency; + /// + /// The address ID of the device, either on the network it is currently connected to or whatever address it + /// most recently used. + /// + [DataField] + public string Address = string.Empty; - /// - /// frequency prototype. Used to select a default frequency to listen to on. Used when the map is - /// initialized. - /// - [DataField] - public ProtoId? ReceiveFrequencyId; + /// + /// Whether the device should listen for all device messages, regardless of the intended recipient. + /// + [DataField] + public bool ReceiveAll; - /// - /// The frequency that this device going to try transmit on. - /// - [DataField] - public uint? TransmitFrequency; + /// + /// The frequency that this device going to try to transmit on. + /// + [DataField] + public uint? TransmitFrequency; - /// - /// frequency prototype. Used to select a default frequency to transmit on. Used when the map is - /// initialized. - /// - [DataField] - public ProtoId? TransmitFrequencyId; + /// + /// Frequency prototype, used to select a default frequency to listen to on. + /// + [DataField] + public ProtoId? ReceiveFrequencyId; - /// - /// The address of the device, either on the network it is currently connected to or whatever address it - /// most recently used. - /// - [DataField] - public string Address = string.Empty; + /// + /// Frequency prototype, used to select a default frequency to transmit on. + /// + [DataField] + public ProtoId? TransmitFrequencyId; - /// - /// If true, the address was customized and should be preserved across networks. If false, a randomly - /// generated address will be created whenever this device connects to a network. - /// - [DataField] - public bool CustomAddress = false; + /// + /// Whether to send the broadcast recipients list to the sender so it can be filtered. + /// + [DataField] + public bool SendBroadcastAttemptEvent; - /// - /// Prefix to prepend to any automatically generated addresses. Helps players to identify devices. This gets - /// localized. - /// - [DataField] - public string? Prefix; + /// + /// If the device should show its address upon an examine. + /// Useful for devices that do not have a visible UI. + /// + [DataField, AutoNetworkedField] + public bool ExaminableAddress; - /// - /// Whether the device should listen for all device messages, regardless of the intended recipient. - /// - [DataField] - public bool ReceiveAll; + /// + /// Prefix to prepend to any automatically generated addresses. Helps players to identify devices. + /// + [DataField] + public LocId? Prefix; - /// - /// If the device should show its address upon an examine. Useful for devices - /// that do not have a visible UI. - /// - [DataField] - public bool ExaminableAddress; + /// + /// Whether the device should attempt to join the network on map init. + /// + [DataField] + public bool AutoConnect = true; - /// - /// Whether the device should attempt to join the network on map init. - /// - [DataField] - public bool AutoConnect = true; + /// + /// Whether this device's address can be saved to device-lists + /// + [DataField] + public bool SavableAddress = true; - /// - /// Whether to send the broadcast recipients list to the sender so it can be filtered. - /// - /// - [DataField] - public bool SendBroadcastAttemptEvent = false; + /// + /// If true, the address was customized and should be preserved across networks. If false, a randomly + /// generated address will be created whenever this device connects to a network. + /// + [DataField] + public bool CustomAddress; - /// - /// Whether this device's address can be saved to device-lists - /// - [DataField] - public bool SavableAddress = true; + /// + /// A list of device-lists that this device is on. + /// + [DataField] + [Access(typeof(SharedDeviceListSystem))] + public HashSet DeviceLists = new(); - /// - /// A list of device-lists that this device is on. - /// - [DataField] - [Access(typeof(SharedDeviceListSystem))] - public HashSet DeviceLists = new(); - - /// - /// A list of configurators that this device is on. - /// - [DataField] - [Access(typeof(SharedNetworkConfiguratorSystem))] - public HashSet Configurators = new(); - } + /// + /// A list of configurators that this device is on. + /// + [DataField] + [Access(typeof(SharedNetworkConfiguratorSystem))] + public HashSet Configurators = new(); } diff --git a/Content.Shared/DeviceNetwork/Components/DeviceNetworkJammerComponent.cs b/Content.Shared/DeviceNetwork/Components/DeviceNetworkJammerComponent.cs index 5ee04de0d1..05edea42e7 100644 --- a/Content.Shared/DeviceNetwork/Components/DeviceNetworkJammerComponent.cs +++ b/Content.Shared/DeviceNetwork/Components/DeviceNetworkJammerComponent.cs @@ -21,7 +21,7 @@ public sealed partial class DeviceNetworkJammerComponent : Component /// Network ids are not guaranteed to be limited to DeviceNetIdDefaults. /// [DataField, AutoNetworkedField] - public HashSet JammableNetworks = []; + public HashSet JammableNetworks = []; /// /// Device networks frequencies that wont be jammed. diff --git a/Content.Shared/DeviceNetwork/Components/DeviceNetworkRouterComponent.cs b/Content.Shared/DeviceNetwork/Components/DeviceNetworkRouterComponent.cs new file mode 100644 index 0000000000..6ca7b0f644 --- /dev/null +++ b/Content.Shared/DeviceNetwork/Components/DeviceNetworkRouterComponent.cs @@ -0,0 +1,11 @@ +using Content.Shared.DeviceNetwork.Payloads; +using Robust.Shared.GameStates; + +namespace Content.Shared.DeviceNetwork.Components; + +/// +/// Re-routs s to some other devices. +/// Useful for server setups where there are lots of payloads that have to be relayed. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class DeviceNetworkRouterComponent : Component; diff --git a/Content.Shared/DeviceNetwork/Device.cs b/Content.Shared/DeviceNetwork/Device.cs new file mode 100644 index 0000000000..85bcaf309b --- /dev/null +++ b/Content.Shared/DeviceNetwork/Device.cs @@ -0,0 +1,25 @@ +using Content.Shared.DeviceNetwork.Components; +using Content.Shared.DeviceNetwork.Systems; + +namespace Content.Shared.DeviceNetwork; + +/// +/// Represents a device in a . +/// +/// +/// This type is read-only. To change any parameters of the device, use 's API. +/// +[DataRecord] +public readonly partial record struct Device(EntityUid Owner, uint? ReceiveFrequency, string Address, bool ReceiveAll) +{ + public Device(Entity ent) : this( + ent.Owner, + ent.Comp.ReceiveFrequency, + ent.Comp.Address, + ent.Comp.ReceiveAll) + { + Owner = ent.Owner; + ReceiveFrequency = ent.Comp.ReceiveFrequency; + ReceiveAll = ent.Comp.ReceiveAll; + } +} diff --git a/Content.Shared/DeviceNetwork/DeviceFrequencyPrototype.cs b/Content.Shared/DeviceNetwork/DeviceFrequencyPrototype.cs index ac5b6eec18..7e486e5b1d 100644 --- a/Content.Shared/DeviceNetwork/DeviceFrequencyPrototype.cs +++ b/Content.Shared/DeviceNetwork/DeviceFrequencyPrototype.cs @@ -13,13 +13,12 @@ public sealed partial class DeviceFrequencyPrototype : IPrototype public string ID { get; private set; } = default!; // TODO Somehow Allow per-station or some other type of named but randomized frequencies? - [DataField("frequency", required: true)] + [DataField(required: true)] public uint Frequency; /// /// Optional name for this frequency, for displaying in game. /// - [DataField("name")] - public string? Name; - + [DataField] + public LocId? Name; } diff --git a/Content.Shared/DeviceNetwork/DeviceLocalizationHelpers.cs b/Content.Shared/DeviceNetwork/DeviceLocalizationHelpers.cs new file mode 100644 index 0000000000..1ccb3c0242 --- /dev/null +++ b/Content.Shared/DeviceNetwork/DeviceLocalizationHelpers.cs @@ -0,0 +1,42 @@ +using Robust.Shared.Utility; + +namespace Content.Shared.DeviceNetwork; + +/// +/// A helper class for localization of frequencies and device network IDs. +/// +public static class DeviceLocalizationHelpers +{ + /// + /// Converts the unsigned int to string and inserts a number before the last digit + /// + public static string FrequencyToString(uint? frequency) + { + if (frequency == null) + return string.Empty; + + var result = frequency.Value.ToString(); + if (result.Length <= 2) + return result + ".0"; + + return result.Insert(result.Length - 1, "."); + } + + /// + /// Either returns the localized name representation of the corresponding + /// or converts the id to string + /// + public static string DeviceNetIdToLocalizedName(int? id, ILocalizationManager localeMan) + { + if (id == null) + return string.Empty; + + if (!Enum.IsDefined(typeof(DeviceNetIdDefaults), id)) + return id.Value.ToString(); + + var result = ((DeviceNetIdDefaults) id).ToString(); + var resultKebab = "device-net-id-" + CaseConversion.PascalToKebab(result); + + return !localeMan.TryGetString(resultKebab, out var name) ? result : name; + } +} diff --git a/Content.Shared/DeviceNetwork/DeviceNet.cs b/Content.Shared/DeviceNetwork/DeviceNet.cs index 4234b30385..0a831796cd 100644 --- a/Content.Shared/DeviceNetwork/DeviceNet.cs +++ b/Content.Shared/DeviceNetwork/DeviceNet.cs @@ -17,17 +17,20 @@ public sealed class DeviceNet /// This dictionary contains all devices connected to this network, though they may not be listening to any /// specific frequency. /// - public readonly Dictionary Devices = new(); + [ViewVariables] + public readonly Dictionary Devices = new(); /// /// Devices listening on a given frequency. /// - public readonly Dictionary> ListeningDevices = new(); + [ViewVariables] + public readonly Dictionary> ListeningDevices = new(); /// /// Devices listening to all packets on a given frequency, regardless of the intended recipient. /// - public readonly Dictionary> ReceiveAllDevices = new(); + [ViewVariables] + public readonly Dictionary> ReceiveAllDevices = new(); private readonly IRobustRandom _random; public readonly int NetId; @@ -41,9 +44,11 @@ public sealed class DeviceNet /// /// Add a device to the network. /// - public bool Add(DeviceNetworkComponent device) + public bool Add(Entity ent) { - if (device.CustomAddress) + var deviceComp = ent.Comp; + var device = new Device(ent); + if (deviceComp.CustomAddress) { // Only add if the device's existing address is available. if (!Devices.TryAdd(device.Address, device)) @@ -53,12 +58,15 @@ public sealed class DeviceNet { // Randomly generate a new address if the existing random one is invalid. Otherwise, keep the existing address if (string.IsNullOrWhiteSpace(device.Address) || Devices.ContainsKey(device.Address)) - device.Address = GenerateValidAddress(device.Prefix); + { + deviceComp.Address = GenerateValidAddress(deviceComp.Prefix); + device = new Device(ent); // Reallocate because the data had changed + } Devices[device.Address] = device; } - if (device.ReceiveFrequency is not uint freq) + if (device.ReceiveFrequency is not { } freq) return true; if (!ListeningDevices.TryGetValue(freq, out var devices)) @@ -79,12 +87,14 @@ public sealed class DeviceNet /// /// Remove a device from the network. /// - public bool Remove(DeviceNetworkComponent device) + public bool Remove(Entity ent) { - if (device.Address == null || !Devices.Remove(device.Address)) + var deviceComp = ent.Comp; + var device = new Device(ent); + if (!Devices.Remove(device.Address)) return false; - if (device.ReceiveFrequency is not uint freq) + if (device.ReceiveFrequency is not { } freq) return true; if (ListeningDevices.TryGetValue(freq, out var listening)) @@ -104,121 +114,6 @@ public sealed class DeviceNet return true; } - /// - /// Give an existing device a new randomly generated address. Useful if the device's address prefix was updated - /// and they want a new address to reflect that, or something like that. - /// - public bool RandomizeAddress(string oldAddress, string? prefix = null) - { - if (!Devices.Remove(oldAddress, out var device)) - return false; - - device.Address = GenerateValidAddress(prefix ?? device.Prefix); - device.CustomAddress = false; - Devices[device.Address] = device; - return true; - } - - /// - /// Update the address of an existing device. - /// - public bool UpdateAddress(string oldAddress, string newAddress) - { - if (Devices.ContainsKey(newAddress)) - return false; - - if (!Devices.Remove(oldAddress, out var device)) - return false; - - device.Address = newAddress; - device.CustomAddress = true; - Devices[newAddress] = device; - return true; - } - - /// - /// Make an existing network device listen to a new frequency. - /// - public bool UpdateReceiveFrequency(string address, uint? newFrequency) - { - if (!Devices.TryGetValue(address, out var device)) - return false; - - if (device.ReceiveFrequency == newFrequency) - return true; - - if (device.ReceiveFrequency is uint freq) - { - if (ListeningDevices.TryGetValue(freq, out var listening)) - { - listening.Remove(device); - if (listening.Count == 0) - ListeningDevices.Remove(freq); - } - - if (device.ReceiveAll && ReceiveAllDevices.TryGetValue(freq, out var receiveAll)) - { - receiveAll.Remove(device); - if (receiveAll.Count == 0) - ListeningDevices.Remove(freq); - } - } - - device.ReceiveFrequency = newFrequency; - - if (newFrequency == null) - return true; - - if (!ListeningDevices.TryGetValue(newFrequency.Value, out var devices)) - ListeningDevices[newFrequency.Value] = devices = new(); - - devices.Add(device); - - if (!device.ReceiveAll) - return true; - - if (!ReceiveAllDevices.TryGetValue(newFrequency.Value, out var receiveAlldevices)) - ReceiveAllDevices[newFrequency.Value] = receiveAlldevices = new(); - - receiveAlldevices.Add(device); - return true; - } - - /// - /// Make an existing network device listen to a new frequency. - /// - public bool UpdateReceiveAll(string address, bool receiveAll) - { - if (!Devices.TryGetValue(address, out var device)) - return false; - - if (device.ReceiveAll == receiveAll) - return true; - - device.ReceiveAll = receiveAll; - - if (device.ReceiveFrequency is not uint freq) - return true; - - // remove or add to set of listening devices - - HashSet? devices; - if (receiveAll) - { - if (!ReceiveAllDevices.TryGetValue(freq, out devices)) - ReceiveAllDevices[freq] = devices = new(); - devices.Add(device); - } - else if (ReceiveAllDevices.TryGetValue(freq, out devices)) - { - devices.Remove(device); - if (devices.Count == 0) - ReceiveAllDevices.Remove(freq); - } - - return true; - } - /// /// Generates a valid address by randomly generating one and checking if it already exists on the network. /// @@ -230,8 +125,7 @@ public sealed class DeviceNet { var num = _random.Next(); address = $"{prefix}{num >> 16:X4}-{num & 0xFFFF:X4}"; - } - while (Devices.ContainsKey(address)); + } while (Devices.ContainsKey(address)); return address; } diff --git a/Content.Shared/DeviceNetwork/DeviceNetIdDefaults.cs b/Content.Shared/DeviceNetwork/DeviceNetIdDefaults.cs new file mode 100644 index 0000000000..8446ee0e5d --- /dev/null +++ b/Content.Shared/DeviceNetwork/DeviceNetIdDefaults.cs @@ -0,0 +1,16 @@ +using Robust.Shared.Serialization; + +namespace Content.Shared.DeviceNetwork; + +[Serializable, NetSerializable] +public enum DeviceNetIdDefaults +{ + Private, + Wired, + Wireless, + Apc, + AtmosDevices, + Reserved = 100, + // Ids outside this enum may exist + // This exists to let yml use nice names instead of numbers +} diff --git a/Content.Shared/DeviceNetwork/DeviceNetworkConstants.cs b/Content.Shared/DeviceNetwork/DeviceNetworkConstants.cs deleted file mode 100644 index 7fec72bb69..0000000000 --- a/Content.Shared/DeviceNetwork/DeviceNetworkConstants.cs +++ /dev/null @@ -1,79 +0,0 @@ -using Robust.Shared.Utility; -using Content.Shared.DeviceNetwork.Components; - -namespace Content.Shared.DeviceNetwork -{ - /// - /// A collection of constants to help with using device networks - /// - public static class DeviceNetworkConstants - { - /// - /// Used by logic gates to transmit the state of their ports - /// - public const string LogicState = "logic_state"; - - #region Commands - - /// - /// The key for command names - /// E.g. [DeviceNetworkConstants.Command] = "ping" - /// - public const string Command = "command"; - - /// - /// The command for setting a devices state - /// E.g. to turn a light on or off - /// - public const string CmdSetState = "set_state"; - - /// - /// The command for a device that just updated its state - /// E.g. suit sensors broadcasting owners vitals state - /// - public const string CmdUpdatedState = "updated_state"; - - #endregion - - #region SetState - - /// - /// Used with the command to turn a device on or off - /// - public const string StateEnabled = "state_enabled"; - - #endregion - - #region DisplayHelpers - - /// - /// Converts the unsigned int to string and inserts a number before the last digit - /// - public static string FrequencyToString(this uint frequency) - { - var result = frequency.ToString(); - if (result.Length <= 2) - return result + ".0"; - - return result.Insert(result.Length - 1, "."); - } - - /// - /// Either returns the localized name representation of the corresponding - /// or converts the id to string - /// - public static string DeviceNetIdToLocalizedName(this int id) - { - - if (!Enum.IsDefined(typeof(DeviceNetworkComponent.DeviceNetIdDefaults), id)) - return id.ToString(); - - var result = ((DeviceNetworkComponent.DeviceNetIdDefaults) id).ToString(); - var resultKebab = "device-net-id-" + CaseConversion.PascalToKebab(result); - - return !Loc.TryGetString(resultKebab, out var name) ? result : name; - } - - #endregion - } -} diff --git a/Content.Shared/DeviceNetwork/Events/BeforeBroadcastAttemptEvent.cs b/Content.Shared/DeviceNetwork/Events/BeforeBroadcastAttemptEvent.cs index f495847482..0c9cd90f35 100644 --- a/Content.Shared/DeviceNetwork/Events/BeforeBroadcastAttemptEvent.cs +++ b/Content.Shared/DeviceNetwork/Events/BeforeBroadcastAttemptEvent.cs @@ -1,16 +1,18 @@ -using Content.Shared.DeviceNetwork.Components; - namespace Content.Shared.DeviceNetwork.Events; /// /// Sent to the sending entity before broadcasting network packets to recipients /// -public sealed class BeforeBroadcastAttemptEvent : CancellableEntityEventArgs +[ByRefEvent] +public record struct BeforeBroadcastAttemptEvent { - public readonly IReadOnlySet Recipients; - public HashSet? ModifiedRecipients; + public readonly IReadOnlySet Recipients; - public BeforeBroadcastAttemptEvent(IReadOnlySet recipients) + public HashSet? ModifiedRecipients; + + public bool Cancelled = false; + + public BeforeBroadcastAttemptEvent(IReadOnlySet recipients) { Recipients = recipients; } diff --git a/Content.Shared/DeviceNetwork/Events/BeforePacketSentEvent.cs b/Content.Shared/DeviceNetwork/Events/BeforePacketSentEvent.cs index b34995a285..2e7c49cbd8 100644 --- a/Content.Shared/DeviceNetwork/Events/BeforePacketSentEvent.cs +++ b/Content.Shared/DeviceNetwork/Events/BeforePacketSentEvent.cs @@ -3,39 +3,16 @@ using System.Numerics; namespace Content.Shared.DeviceNetwork.Events; /// -/// Event raised before a device network packet is send. +/// Event raised before a device network packet is sent. /// Subscribed to by other systems to prevent the packet from being sent. /// -public sealed class BeforePacketSentEvent : CancellableEntityEventArgs -{ - /// - /// The EntityUid of the entity the packet was sent from. - /// - public readonly EntityUid Sender; - - public readonly TransformComponent SenderTransform; - - /// - /// The senders current position in world coordinates. - /// - public readonly Vector2 SenderPosition; - - /// - /// The network the packet will be sent to. - /// - public readonly string NetworkId; - - /// - /// The frequency the packet is sent on. - /// - public readonly uint Frequency; - - public BeforePacketSentEvent(EntityUid sender, TransformComponent xform, Vector2 senderPosition, string networkId, uint frequency) - { - Sender = sender; - SenderTransform = xform; - SenderPosition = senderPosition; - NetworkId = networkId; - Frequency = frequency; - } -} +[ByRefEvent] +public record struct BeforePacketSentEvent( + int NetId, + string? Address, + uint Frequency, + string SenderAddress, + EntityUid Sender, + TransformComponent SenderTransform, + Vector2 SenderPosition, + bool Cancelled = false); diff --git a/Content.Shared/DeviceNetwork/Events/DeviceAddressChangedEvent.cs b/Content.Shared/DeviceNetwork/Events/DeviceAddressChangedEvent.cs new file mode 100644 index 0000000000..37ac5ea261 --- /dev/null +++ b/Content.Shared/DeviceNetwork/Events/DeviceAddressChangedEvent.cs @@ -0,0 +1,7 @@ +namespace Content.Shared.DeviceNetwork.Events; + +/// +/// Raised when the was changed. +/// +[ByRefEvent] +public record struct DeviceAddressChangedEvent(string OldAddress, string NewAddress, bool IsCustom); diff --git a/Content.Shared/DeviceNetwork/Events/DeviceNetworkPacketEvent.cs b/Content.Shared/DeviceNetwork/Events/DeviceNetworkPacketEvent.cs index 4ae6afeef7..05938483da 100644 --- a/Content.Shared/DeviceNetwork/Events/DeviceNetworkPacketEvent.cs +++ b/Content.Shared/DeviceNetwork/Events/DeviceNetworkPacketEvent.cs @@ -1,47 +1,38 @@ +using Content.Shared.DeviceNetwork.Components; + namespace Content.Shared.DeviceNetwork.Events; /// -/// Event raised when a device network packet gets sent. +/// Event raised when a device network packet is received by an entity. /// -public sealed class DeviceNetworkPacketEvent : EntityEventArgs -{ - /// - /// The id of the network that this packet is being sent on. - /// - public int NetId; - - /// - /// The frequency the packet is sent on. - /// - public readonly uint Frequency; - - /// - /// Address of the intended recipient. Null if the message was broadcast. - /// - public string? Address; - - /// - /// The device network address of the sending entity. - /// - public readonly string SenderAddress; - - /// - /// The entity that sent the packet. - /// - public EntityUid Sender; - - /// - /// The data that is being sent. - /// - public readonly NetworkPayload Data; - - public DeviceNetworkPacketEvent(int netId, string? address, uint frequency, string senderAddress, EntityUid sender, NetworkPayload data) - { - NetId = netId; - Address = address; - Frequency = frequency; - SenderAddress = senderAddress; - Sender = sender; - Data = data; - } -} \ No newline at end of file +/// +/// ID of the network that this packet is translated on. +/// Device networks are currently global and only represent the way of signal transmission. +/// +/// +/// Address of the target device in a target network. +/// If null, this packet gets broadcasted to all devices in the network. +/// Empty string means invalid address. +/// +/// +/// Transmit frequency of the sender and receive frequency of the targeted device. +/// +/// +/// The device address of the sender. Can be used to send responses to payloads. +/// +/// +/// The sender entity with its . +/// +/// +/// The of a specific type. +/// This is the main container for custom information. +/// +/// Type of the payload sent by this event. +[ByRefEvent] +public readonly record struct DeviceNetworkPacketEvent( + int NetId, + string? Address, + uint Frequency, + string SenderAddress, + Entity Sender, + T Data) where T : INetworkPayload; diff --git a/Content.Shared/DeviceNetwork/Events/DeviceReceiveAllChangedEvent.cs b/Content.Shared/DeviceNetwork/Events/DeviceReceiveAllChangedEvent.cs new file mode 100644 index 0000000000..de65523fec --- /dev/null +++ b/Content.Shared/DeviceNetwork/Events/DeviceReceiveAllChangedEvent.cs @@ -0,0 +1,7 @@ +namespace Content.Shared.DeviceNetwork.Events; + +/// +/// Raised when the was changed. +/// +[ByRefEvent] +public record struct DeviceReceiveAllChangedEvent(bool ReceiveAll); diff --git a/Content.Shared/DeviceNetwork/Events/DeviceReceiveFrequencyChangedEvent.cs b/Content.Shared/DeviceNetwork/Events/DeviceReceiveFrequencyChangedEvent.cs new file mode 100644 index 0000000000..42935ce34e --- /dev/null +++ b/Content.Shared/DeviceNetwork/Events/DeviceReceiveFrequencyChangedEvent.cs @@ -0,0 +1,7 @@ +namespace Content.Shared.DeviceNetwork.Events; + +/// +/// Raised when the was changed. +/// +[ByRefEvent] +public record struct DeviceReceiveFrequencyChangedEvent(uint? OldFrequency, uint? NewFrequency); diff --git a/Content.Shared/DeviceNetwork/Events/DeviceTransmitFrequencyChangedEvent.cs b/Content.Shared/DeviceNetwork/Events/DeviceTransmitFrequencyChangedEvent.cs new file mode 100644 index 0000000000..86c04f38a6 --- /dev/null +++ b/Content.Shared/DeviceNetwork/Events/DeviceTransmitFrequencyChangedEvent.cs @@ -0,0 +1,9 @@ +using Content.Shared.DeviceNetwork.Components; + +namespace Content.Shared.DeviceNetwork.Events; + +/// +/// Raised when the was changed. +/// +[ByRefEvent] +public record struct DeviceTransmitFrequencyChangedEvent(uint? OldFrequency, uint? NewFrequency); diff --git a/Content.Shared/DeviceNetwork/NetworkPayload.cs b/Content.Shared/DeviceNetwork/NetworkPayload.cs index 3239374021..624faf0bfe 100644 --- a/Content.Shared/DeviceNetwork/NetworkPayload.cs +++ b/Content.Shared/DeviceNetwork/NetworkPayload.cs @@ -1,24 +1,7 @@ -using System.Diagnostics.CodeAnalysis; -using Robust.Shared.Utility; - namespace Content.Shared.DeviceNetwork; -public sealed class NetworkPayload : Dictionary -{ - /// - /// Tries to get a value from the payload and checks if that value is of type T. - /// - /// The type that should be casted to - /// Whether the value was present in the payload and of the required type - public bool TryGetValue(string key, [NotNullWhen(true)] out T? value) - { - if (this.TryCastValue(key, out T? result)) - { - value = result; - return true; - } - - value = default; - return false; - } -} +/// +/// A data class for information passing through a Device Network. +/// +[ImplicitDataRecord] +public partial interface INetworkPayload; diff --git a/Content.Shared/DeviceNetwork/Payloads/ApcNetTogglePayload.cs b/Content.Shared/DeviceNetwork/Payloads/ApcNetTogglePayload.cs new file mode 100644 index 0000000000..5830610036 --- /dev/null +++ b/Content.Shared/DeviceNetwork/Payloads/ApcNetTogglePayload.cs @@ -0,0 +1,10 @@ +namespace Content.Shared.DeviceNetwork.Payloads; + +/// +/// A payload for the Apc net switch. +/// +public partial record struct ApcNetTogglePayload : INetworkPayload +{ + [DataField] + public bool Enabled; +} diff --git a/Content.Shared/DeviceNetwork/Payloads/RoutedNetworkPayload.cs b/Content.Shared/DeviceNetwork/Payloads/RoutedNetworkPayload.cs new file mode 100644 index 0000000000..34f252af5e --- /dev/null +++ b/Content.Shared/DeviceNetwork/Payloads/RoutedNetworkPayload.cs @@ -0,0 +1,88 @@ +using Content.Shared.DeviceNetwork.Components; +using Content.Shared.DeviceNetwork.Systems; + +namespace Content.Shared.DeviceNetwork.Payloads; + +/// +/// Represents a payload that can be re-routed by a . +/// +public partial interface IRoutableNetworkPayload : INetworkPayload +{ + /// + /// Original sender address of this payload. + /// + string? SenderAddress { get; set; } + + /// + /// Original sender entity of this payload. + /// + EntityUid Sender { get; set; } +} + +public partial interface IRoutedNetworkPayload : INetworkPayload +{ + /// + /// If specified, the device router will use this frequency for transmitting the . + /// + uint? OverrideFrequency { get; set; } + + /// + /// If specified, the device router will use this network ID for transmitting the . + /// + int? OverrideNetwork { get; set; } + + /// + /// Address to re-route to when the is being handled. + /// + string? TargetAddress { get; set; } + + /// + /// + /// + void Reroute(EntityUid sender, string? address, uint? frequency, int? network, SharedDeviceNetworkSystem system); +} + +/// +/// A wrapper around the , sent to an entity with . +/// +public partial record struct RoutedNetworkPayload : IRoutedNetworkPayload where T : IRoutableNetworkPayload +{ + /// + /// The wrapped payload that is going to be sent when received by . + /// + [DataField] + public T Payload; + + /// + /// If specified, the device router will use this frequency for transmitting the . + /// + [DataField] + public uint? OverrideFrequency { get; set; } + + /// + /// If specified, the device router will use this network ID for transmitting the . + /// + [DataField] + public int? OverrideNetwork { get; set; } + + /// + /// Address to re-route to when the is being handled. + /// + [DataField] + public string? TargetAddress { get; set; } + + public void Reroute(EntityUid sender, + string? address, + uint? frequency, + int? network, + SharedDeviceNetworkSystem system) + { + // Things sometimes take a **weird route** when it comes to type parameters. + system.SendPacket( + sender, + address, + ref Payload, + frequency, + network); + } +} diff --git a/Content.Shared/DeviceNetwork/Systems/DeviceNetworkRouterSystem.cs b/Content.Shared/DeviceNetwork/Systems/DeviceNetworkRouterSystem.cs new file mode 100644 index 0000000000..b89afa7efe --- /dev/null +++ b/Content.Shared/DeviceNetwork/Systems/DeviceNetworkRouterSystem.cs @@ -0,0 +1,97 @@ +using Content.Shared.DeviceNetwork.Components; +using Content.Shared.DeviceNetwork.Events; +using Content.Shared.DeviceNetwork.Payloads; +using Content.Shared.SurveillanceCamera; + +namespace Content.Shared.DeviceNetwork.Systems; + +/// +/// A system for re-routing s +/// through an entity with . +/// +public sealed partial class DeviceNetworkRouterSystem : EntitySystem +{ + [Dependency] private SharedDeviceNetworkSystem _deviceNetworkSystem = default!; + + [Dependency] private EntityQuery _query = default!; + + // TODO: make an engine PR to allow for auto-generated relay subscriptions + // Should be doable by using reflection on marker interfaces and then adding them to the auto-generated subscriptions + // I know it looks absolutely hilarious and horrible, but uuuhhhh anything to not make boxing allocations!!!!!!!! :godo: + public override void Initialize() + { + base.Initialize(); + + // Surveillance cameras + SubscribeLocalEvent>>((ent, ref args) => OnRoutePayload(ent, ref args)); + SubscribeLocalEvent>>((ent, ref args) => OnRoutePayload(ent, ref args)); + SubscribeLocalEvent>>((ent, ref args) => OnRoutePayload(ent, ref args)); + SubscribeLocalEvent>>((ent, ref args) => OnRoutePayload(ent, ref args)); + SubscribeLocalEvent>>((ent, ref args) => OnRoutePayload(ent, ref args)); + SubscribeLocalEvent>>((ent, ref args) => OnRoutePayload(ent, ref args)); + } + + private void OnRoutePayload(Entity ent, ref DeviceNetworkPacketEvent args) where T : IRoutedNetworkPayload + { + var payload = args.Data; + if (!_query.TryComp(ent, out var deviceComp)) + return; + + args.Data.Reroute(ent.Owner, + payload.TargetAddress, + payload.OverrideFrequency ?? deviceComp.TransmitFrequency, + payload.OverrideNetwork ?? deviceComp.DeviceNetId, + _deviceNetworkSystem); + } + + /// + /// Sends the given as a device network packet to the Relay entity with the given address and frequency. + /// After the payload is received by an entity with , + /// it gets re-routed to . + /// + /// + /// This is useful for routing server setups where the packet must be sent in both directions through a server. + /// + /// The sending entity. + /// The data to be sent. + /// + /// The address of the entity with that the packet gets sent to. + /// If null, the message is broadcast to all devices on that frequency (except the sender). + /// This address must include the router entity, so the packet can be relayed. + /// + /// + /// The Actual address to which the payload will be relayed + /// to after it was received by a . + /// + /// The frequency to send on to the router. + /// If specified, will use this frequency when re-routing the packet. + /// The network to send on to the router. + /// If specified, will use this network when re-routing the packet. + /// Returns true when the packet was successfully enqueued. + public void SendPacketRouted( + Entity ent, + ref T data, + string? routerAddress, + string? targetAddress, + uint? overrideFrequency = null, + uint? frequency = null, + int? overrideNetwork = null, + int? network = null) + where T : IRoutableNetworkPayload + { + if (!_query.Resolve(ref ent) || ent.Comp == null) + return; + + data.SenderAddress = ent.Comp.Address; + data.Sender = ent.Owner; + var payload = new RoutedNetworkPayload + { + Payload = data, + OverrideFrequency = overrideFrequency, + OverrideNetwork = overrideNetwork, + TargetAddress = targetAddress, + }; + + _deviceNetworkSystem.SendPacket(ent.Owner, routerAddress, ref payload, frequency, network); + } +} diff --git a/Content.Shared/DeviceNetwork/Systems/SharedDeviceNetworkJammerSystem.cs b/Content.Shared/DeviceNetwork/Systems/SharedDeviceNetworkJammerSystem.cs index 6ed770ffbc..9b4227bb39 100644 --- a/Content.Shared/DeviceNetwork/Systems/SharedDeviceNetworkJammerSystem.cs +++ b/Content.Shared/DeviceNetwork/Systems/SharedDeviceNetworkJammerSystem.cs @@ -26,7 +26,7 @@ public abstract class SharedDeviceNetworkJammerSystem : EntitySystem /// /// Returns the set of networks that this entity can jam. - public IReadOnlySet GetJammableNetworks(Entity ent) + public IReadOnlySet GetJammableNetworks(Entity ent) { return ent.Comp.JammableNetworks; } @@ -34,7 +34,7 @@ public abstract class SharedDeviceNetworkJammerSystem : EntitySystem /// /// Enables this entity to jam packets on the specified network. /// - public void AddJammableNetwork(Entity ent, string networkId) + public void AddJammableNetwork(Entity ent, int networkId) { if (ent.Comp.JammableNetworks.Add(networkId)) Dirty(ent); @@ -43,7 +43,7 @@ public abstract class SharedDeviceNetworkJammerSystem : EntitySystem /// /// Stops this entity from jamming packets on the specified network. /// - public void RemoveJammableNetwork(Entity ent, string networkId) + public void RemoveJammableNetwork(Entity ent, int networkId) { if (ent.Comp.JammableNetworks.Remove(networkId)) Dirty(ent); diff --git a/Content.Shared/DeviceNetwork/Systems/SharedDeviceNetworkSystem.cs b/Content.Shared/DeviceNetwork/Systems/SharedDeviceNetworkSystem.cs index 5992c40413..5bede5cb11 100644 --- a/Content.Shared/DeviceNetwork/Systems/SharedDeviceNetworkSystem.cs +++ b/Content.Shared/DeviceNetwork/Systems/SharedDeviceNetworkSystem.cs @@ -1,24 +1,44 @@ using Content.Shared.DeviceNetwork.Components; +using Content.Shared.Examine; +using JetBrains.Annotations; namespace Content.Shared.DeviceNetwork.Systems; -public abstract class SharedDeviceNetworkSystem : EntitySystem +/// +/// Entity system that handles everything device network related. +/// Device networking allows machines and devices to communicate with each other +/// while adhering to restrictions like range or being connected to the same power network. +/// +public abstract partial class SharedDeviceNetworkSystem : EntitySystem { + [SubscribeLocalEvent] + private void OnExamine(Entity ent, ref ExaminedEvent args) + { + if (ent.Comp.ExaminableAddress) + args.PushText(Loc.GetString("device-address-examine-message", ("address", ent.Comp.Address))); + } + /// - /// Sends the given payload as a device network packet to the entity with the given address and frequency. - /// Addresses are given to the DeviceNetworkComponent of an entity when connecting. + /// Sends the given as a device network packet to the entity with the given address and frequency. + /// Addresses are given to the of an entity when connecting. /// - /// The EntityUid of the sending entity - /// The address of the entity that the packet gets sent to. If null, the message is broadcast to all devices on that frequency (except the sender) - /// The frequency to send on - /// The data to be sent + /// The sending entity. + /// + /// The address of the entity that the packet gets sent to. + /// If null, the message is broadcast to all devices on that frequency (except the sender) + /// + /// The frequency to send on. + /// The data to be sent. + /// The network to send on. /// Returns true when the packet was successfully enqueued. - public virtual bool QueuePacket(EntityUid uid, + [PublicAPI] + public virtual bool SendPacket( + Entity ent, string? address, - NetworkPayload data, + ref T data, uint? frequency = null, - int? network = null, - DeviceNetworkComponent? device = null) + int? network = null) + where T : INetworkPayload { return false; } diff --git a/Content.Shared/Disposal/Mailing/MailRequestTagPayload.cs b/Content.Shared/Disposal/Mailing/MailRequestTagPayload.cs new file mode 100644 index 0000000000..b48c3d8337 --- /dev/null +++ b/Content.Shared/Disposal/Mailing/MailRequestTagPayload.cs @@ -0,0 +1,26 @@ +using Content.Shared.DeviceNetwork; + +namespace Content.Shared.Disposal.Mailing; + +/// +/// Request to get all available target mailing units. +/// +public partial record struct MailRequestTagPayload : INetworkPayload; + +/// +/// Sent as response to , contains tag of the sender. +/// +public partial record struct MailTagPayload : INetworkPayload +{ + [DataField] + public string Tag; +} + +public partial record struct MailSendPayload : INetworkPayload +{ + [DataField] + public string Tag; + + [DataField] + public string Target; +} diff --git a/Content.Shared/Disposal/Mailing/SharedMailingUnitSystem.cs b/Content.Shared/Disposal/Mailing/SharedMailingUnitSystem.cs index c7e3631046..fe91115fe2 100644 --- a/Content.Shared/Disposal/Mailing/SharedMailingUnitSystem.cs +++ b/Content.Shared/Disposal/Mailing/SharedMailingUnitSystem.cs @@ -1,12 +1,10 @@ using Content.Shared.Configurable; -using Content.Shared.DeviceNetwork; using Content.Shared.DeviceNetwork.Components; using Content.Shared.DeviceNetwork.Events; using Content.Shared.DeviceNetwork.Systems; using Content.Shared.Disposal.Components; using Content.Shared.Disposal.Unit; using Content.Shared.Interaction; -using Content.Shared.Power.EntitySystems; using Robust.Shared.Player; namespace Content.Shared.Disposal.Mailing; @@ -14,26 +12,16 @@ namespace Content.Shared.Disposal.Mailing; public abstract partial class SharedMailingUnitSystem : EntitySystem { [Dependency] private SharedDeviceNetworkSystem _deviceNetwork = default!; - [Dependency] private SharedPowerReceiverSystem _power = default!; [Dependency] private SharedUserInterfaceSystem _userInterface = default!; private const string MailTag = "mail"; - private const string TagConfigurationKey = "tag"; - private const string NetTag = "tag"; - private const string NetSrc = "src"; - private const string NetTarget = "target"; - private const string NetCmdSent = "mail_sent"; - private const string NetCmdRequest = "get_mailer_tag"; - private const string NetCmdResponse = "mailer_tag"; - public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnComponentInit); - SubscribeLocalEvent(OnPacketReceived); SubscribeLocalEvent(OnBeforeFlush); SubscribeLocalEvent(OnConfigurationUpdated); SubscribeLocalEvent(HandleActivate, before: new[] { typeof(SharedDisposalUnitSystem) }); @@ -45,39 +33,25 @@ public abstract partial class SharedMailingUnitSystem : EntitySystem UpdateTargetList(ent); } - private void OnPacketReceived(Entity ent, ref DeviceNetworkPacketEvent args) + [SubscribeLocalEvent] + private void OnRequestTag(Entity ent, ref DeviceNetworkPacketEvent args) { - if (!args.Data.TryGetValue(DeviceNetworkConstants.Command, out string? command) || !_power.IsPowered(ent.Owner)) + if (ent.Comp.Tag == null) return; - switch (command) + var tagPayload = new MailTagPayload { - case NetCmdRequest: - SendTagRequestResponse(ent, args, ent.Comp.Tag); - break; - case NetCmdResponse when args.Data.TryGetValue(NetTag, out string? tag): - //Add the received tag request response to the list of targets - ent.Comp.TargetList.Add(tag); - Dirty(ent); - break; - } - } - - /// - /// Sends the given tag as a response to a if it's not null - /// - private void SendTagRequestResponse(EntityUid uid, DeviceNetworkPacketEvent args, string? tag) - { - if (tag == null) - return; - - var payload = new NetworkPayload - { - [DeviceNetworkConstants.Command] = NetCmdResponse, - [NetTag] = tag + Tag = ent.Comp.Tag, }; - _deviceNetwork.QueuePacket(uid, args.SenderAddress, payload, args.Frequency); + _deviceNetwork.SendPacket(ent.Owner, args.SenderAddress, ref tagPayload, args.Frequency); + } + + [SubscribeLocalEvent] + private void OnTag(Entity ent, ref DeviceNetworkPacketEvent args) + { + ent.Comp.TargetList.Add(args.Data.Tag); + Dirty(ent); } /// @@ -106,32 +80,27 @@ public abstract partial class SharedMailingUnitSystem : EntitySystem if (string.IsNullOrEmpty(ent.Comp.Tag) || string.IsNullOrEmpty(ent.Comp.Target) || !Resolve(ent, ref device)) return; - var payload = new NetworkPayload + var payload = new MailSendPayload { - [DeviceNetworkConstants.Command] = NetCmdSent, - [NetSrc] = ent.Comp.Tag, - [NetTarget] = ent.Comp.Target + Tag = ent.Comp.Tag, + Target = ent.Comp.Target, }; - _deviceNetwork.QueuePacket(ent, null, payload, null, null, device); + _deviceNetwork.SendPacket((ent.Owner, device), null, ref payload); } /// - /// Clears the units target list and broadcasts a . - /// The target list will then get populated with responses from all active mailing units on the same grid + /// Clears the units target list and broadcasts a . + /// The target list will then get populated with responses from all active mailing units on the same grid /// private void UpdateTargetList(Entity ent, DeviceNetworkComponent? device = null) { if (!Resolve(ent, ref device, false)) return; - var payload = new NetworkPayload - { - [DeviceNetworkConstants.Command] = NetCmdRequest - }; - + var payload = new MailRequestTagPayload(); ent.Comp.TargetList.Clear(); - _deviceNetwork.QueuePacket(ent, null, payload, null, null, device); + _deviceNetwork.SendPacket((ent.Owner, device), null, ref payload); } /// diff --git a/Content.Shared/Disposal/SignalRouter/DisposalSignallerSystem.cs b/Content.Shared/Disposal/SignalRouter/DisposalSignallerSystem.cs index e6c373f3a6..468a75bbfd 100644 --- a/Content.Shared/Disposal/SignalRouter/DisposalSignallerSystem.cs +++ b/Content.Shared/Disposal/SignalRouter/DisposalSignallerSystem.cs @@ -21,11 +21,11 @@ public sealed partial class DisposalSignallerSystem : EntitySystem private void OnInit(Entity ent, ref ComponentInit args) { - _link.EnsureSourcePorts(ent, ent.Comp.Port); + _link.EnsureSourcePorts(ent.Owner, ent.Comp.Port); } private void OnGetNextDirection(Entity ent, ref GetDisposalsNextDirectionEvent args) { - _link.InvokePort(ent, ent.Comp.Port); + _link.InvokePort(ent.Owner, ent.Comp.Port); } } diff --git a/Content.Shared/Fax/Components/FaxMachineComponent.cs b/Content.Shared/Fax/Components/FaxMachineComponent.cs index 96e87de3ff..d8aed8d790 100644 --- a/Content.Shared/Fax/Components/FaxMachineComponent.cs +++ b/Content.Shared/Fax/Components/FaxMachineComponent.cs @@ -3,6 +3,7 @@ using Content.Shared.Paper; using Robust.Shared.Audio; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; namespace Content.Shared.Fax.Components; @@ -149,6 +150,7 @@ public sealed partial class FaxMachineComponent : Component } [DataDefinition] +[Serializable, NetSerializable] public sealed partial class FaxPrintout { [DataField(required: true)] diff --git a/Content.Shared/Fax/FaxPayloads.cs b/Content.Shared/Fax/FaxPayloads.cs new file mode 100644 index 0000000000..177e158bfa --- /dev/null +++ b/Content.Shared/Fax/FaxPayloads.cs @@ -0,0 +1,32 @@ +using Content.Shared.DeviceNetwork; +using Content.Shared.Fax.Components; + +namespace Content.Shared.Fax; + +/// +/// Broadcasted from one fax to all other available faxes. +/// +public partial record struct FaxPingPayload : INetworkPayload +{ + // TODO this should probably be made a more general system in the future + [DataField] + public bool IsSyndicate; +} + +/// +/// Sent as a response to . +/// +public partial record struct FaxPongPayload : INetworkPayload +{ + [DataField] + public string FaxName; +} + +/// +/// Payload to print a paper on the receiver fax. +/// +public partial record struct FaxPrintPayload : INetworkPayload +{ + [DataField] + public FaxPrintout Data; +} diff --git a/Content.Shared/Light/EntitySystems/SharedPoweredLightSystem.cs b/Content.Shared/Light/EntitySystems/SharedPoweredLightSystem.cs index 86b0e628ce..651d34bbc0 100644 --- a/Content.Shared/Light/EntitySystems/SharedPoweredLightSystem.cs +++ b/Content.Shared/Light/EntitySystems/SharedPoweredLightSystem.cs @@ -3,8 +3,8 @@ using Content.Shared.Damage.Components; using Content.Shared.Damage.Systems; using Content.Shared.DeviceLinking; using Content.Shared.DeviceLinking.Events; -using Content.Shared.DeviceNetwork; using Content.Shared.DeviceNetwork.Events; +using Content.Shared.DeviceNetwork.Payloads; using Content.Shared.DoAfter; using Content.Shared.Emp; using Content.Shared.Hands.EntitySystems; @@ -51,7 +51,6 @@ public abstract partial class SharedPoweredLightSystem : EntitySystem SubscribeLocalEvent(OnInteractUsing); SubscribeLocalEvent(OnInteractHand); SubscribeLocalEvent(OnSignalReceived); - SubscribeLocalEvent(OnPacketReceived); SubscribeLocalEvent(OnPowerChanged); SubscribeLocalEvent(OnDoAfter); SubscribeLocalEvent(HandleLightDamaged); @@ -130,15 +129,12 @@ public abstract partial class SharedPoweredLightSystem : EntitySystem } /// - /// Turns the light on or of when receiving a command. - /// The light is turned on or of according to the value + /// Turns the light on or of when receiving a . /// - private void OnPacketReceived(EntityUid uid, PoweredLightComponent component, DeviceNetworkPacketEvent args) + [SubscribeLocalEvent] + private void OnPacketReceived(Entity ent, ref DeviceNetworkPacketEvent args) { - if (!args.Data.TryGetValue(DeviceNetworkConstants.Command, out string? command) || command != DeviceNetworkConstants.CmdSetState) return; - if (!args.Data.TryGetValue(DeviceNetworkConstants.StateEnabled, out bool enabled)) return; - - SetState(uid, enabled, component); + SetState(ent, args.Data.Enabled, ent.Comp); } /// diff --git a/Content.Shared/Medical/CrewMonitoring/BroadcastSuitSensorStatePayload.cs b/Content.Shared/Medical/CrewMonitoring/BroadcastSuitSensorStatePayload.cs new file mode 100644 index 0000000000..237abf0d29 --- /dev/null +++ b/Content.Shared/Medical/CrewMonitoring/BroadcastSuitSensorStatePayload.cs @@ -0,0 +1,13 @@ +using Content.Shared.DeviceNetwork; +using Content.Shared.Medical.SuitSensors; + +namespace Content.Shared.Medical.CrewMonitoring; + +/// +/// Broadcast payoad from the crew monitoring server to all crew monitors. +/// +public partial record struct BroadcastSuitSensorStatePayload : INetworkPayload +{ + [DataField] + public Dictionary SensorStatus = new(); +} diff --git a/Content.Shared/Medical/CrewMonitoring/CrewMonitoringShared.cs b/Content.Shared/Medical/CrewMonitoring/CrewMonitoringShared.cs index 5b78839678..9ce87f0f83 100644 --- a/Content.Shared/Medical/CrewMonitoring/CrewMonitoringShared.cs +++ b/Content.Shared/Medical/CrewMonitoring/CrewMonitoringShared.cs @@ -1,4 +1,4 @@ -using Content.Shared.Medical.SuitSensor; +using Content.Shared.Medical.SuitSensors; using Robust.Shared.Serialization; namespace Content.Shared.Medical.CrewMonitoring; diff --git a/Content.Shared/Medical/SuitSensors/SharedSuitSensor.cs b/Content.Shared/Medical/SuitSensors/SharedSuitSensor.cs index f0a552c7ec..a6e556dd9e 100644 --- a/Content.Shared/Medical/SuitSensors/SharedSuitSensor.cs +++ b/Content.Shared/Medical/SuitSensors/SharedSuitSensor.cs @@ -1,11 +1,21 @@ +using Content.Shared.DeviceNetwork; using Content.Shared.DoAfter; using Robust.Shared.Map; using Robust.Shared.Serialization; -namespace Content.Shared.Medical.SuitSensor; +namespace Content.Shared.Medical.SuitSensors; -[Serializable, NetSerializable] -public sealed class SuitSensorStatus +/// +/// A network payload that contains . +/// +public partial record struct SuitSensorStatusPayload : INetworkPayload +{ + [DataField] + public SuitSensorStatus Data; +} + +[DataDefinition, Serializable, NetSerializable] +public partial struct SuitSensorStatus : IEquatable { public SuitSensorStatus(NetEntity ownerUid, NetEntity suitSensorUid, string name, string job, string jobIcon, List jobDepartments) { @@ -29,6 +39,51 @@ public sealed class SuitSensorStatus public int? TotalDamageThreshold; public float? DamagePercentage => TotalDamageThreshold == null || TotalDamage == null ? null : TotalDamage / (float) TotalDamageThreshold; public NetCoordinates? Coordinates; + + public bool Equals(SuitSensorStatus other) + { + return Timestamp.Equals(other.Timestamp) + && SuitSensorUid.Equals(other.SuitSensorUid) + && OwnerUid.Equals(other.OwnerUid) + && Name == other.Name + && Job == other.Job + && JobIcon == other.JobIcon + && IsAlive == other.IsAlive + && TotalDamage == other.TotalDamage + && TotalDamageThreshold == other.TotalDamageThreshold + && Nullable.Equals(Coordinates, other.Coordinates); + } + + public override bool Equals(object? obj) + { + return obj is SuitSensorStatus other && Equals(other); + } + + public override int GetHashCode() + { + var hashCode = new HashCode(); + hashCode.Add(Timestamp); + hashCode.Add(SuitSensorUid); + hashCode.Add(OwnerUid); + hashCode.Add(Name); + hashCode.Add(Job); + hashCode.Add(JobIcon); + hashCode.Add(IsAlive); + hashCode.Add(TotalDamage); + hashCode.Add(TotalDamageThreshold); + hashCode.Add(Coordinates); + return hashCode.ToHashCode(); + } + + public static bool operator ==(SuitSensorStatus left, SuitSensorStatus right) + { + return left.Equals(right); + } + + public static bool operator !=(SuitSensorStatus left, SuitSensorStatus right) + { + return !left.Equals(right); + } } [Serializable, NetSerializable] @@ -55,23 +110,6 @@ public enum SuitSensorMode : byte SensorCords = 3 } -public static class SuitSensorConstants -{ - public const string NET_OWNER_UID = "ownerUid"; - public const string NET_NAME = "name"; - public const string NET_JOB = "job"; - public const string NET_JOB_ICON = "jobIcon"; - public const string NET_JOB_DEPARTMENTS = "jobDepartments"; - public const string NET_IS_ALIVE = "alive"; - public const string NET_TOTAL_DAMAGE = "vitals"; - public const string NET_TOTAL_DAMAGE_THRESHOLD = "vitalsThreshold"; - public const string NET_COORDINATES = "coords"; - public const string NET_SUIT_SENSOR_UID = "uid"; - - ///Used by the CrewMonitoringServerSystem to send the status of all connected suit sensors to each crew monitor - public const string NET_STATUS_COLLECTION = "suit-status-collection"; -} - [Serializable, NetSerializable] public sealed partial class SuitSensorChangeDoAfterEvent : DoAfterEvent { diff --git a/Content.Shared/Medical/SuitSensors/SharedSuitSensorSystem.cs b/Content.Shared/Medical/SuitSensors/SharedSuitSensorSystem.cs index 0bc91d25af..bfec5e0fdd 100644 --- a/Content.Shared/Medical/SuitSensors/SharedSuitSensorSystem.cs +++ b/Content.Shared/Medical/SuitSensors/SharedSuitSensorSystem.cs @@ -2,16 +2,13 @@ using System.Numerics; using Content.Shared.Access.Systems; using Content.Shared.ActionBlocker; using Content.Shared.Clothing; -using Content.Shared.Damage.Components; using Content.Shared.Damage.Systems; -using Content.Shared.DeviceNetwork; using Content.Shared.DoAfter; using Content.Shared.Emp; using Content.Shared.Examine; using Content.Shared.GameTicking; using Content.Shared.Interaction; using Content.Shared.Inventory; -using Content.Shared.Medical.SuitSensor; using Content.Shared.Mobs; using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; @@ -20,7 +17,6 @@ using Content.Shared.Station; using Content.Shared.Verbs; using Robust.Shared.Containers; using Robust.Shared.Map; -using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Timing; @@ -441,66 +437,4 @@ public abstract partial class SharedSuitSensorSystem : EntitySystem return status; } - - /// - /// Create a device network package from the suit sensors status. - /// - public NetworkPayload SuitSensorToPacket(SuitSensorStatus status) - { - var payload = new NetworkPayload() - { - [DeviceNetworkConstants.Command] = DeviceNetworkConstants.CmdUpdatedState, - [SuitSensorConstants.NET_NAME] = status.Name, - [SuitSensorConstants.NET_JOB] = status.Job, - [SuitSensorConstants.NET_JOB_ICON] = status.JobIcon, - [SuitSensorConstants.NET_JOB_DEPARTMENTS] = status.JobDepartments, - [SuitSensorConstants.NET_IS_ALIVE] = status.IsAlive, - [SuitSensorConstants.NET_SUIT_SENSOR_UID] = status.SuitSensorUid, - [SuitSensorConstants.NET_OWNER_UID] = status.OwnerUid, - }; - - if (status.TotalDamage != null) - payload.Add(SuitSensorConstants.NET_TOTAL_DAMAGE, status.TotalDamage); - if (status.TotalDamageThreshold != null) - payload.Add(SuitSensorConstants.NET_TOTAL_DAMAGE_THRESHOLD, status.TotalDamageThreshold); - if (status.Coordinates != null) - payload.Add(SuitSensorConstants.NET_COORDINATES, status.Coordinates); - - return payload; - } - - /// - /// Try to create the suit sensors status from the device network message. - /// - public SuitSensorStatus? PacketToSuitSensor(NetworkPayload payload) - { - // check command - if (!payload.TryGetValue(DeviceNetworkConstants.Command, out string? command)) - return null; - if (command != DeviceNetworkConstants.CmdUpdatedState) - return null; - - // check name, job and alive - if (!payload.TryGetValue(SuitSensorConstants.NET_NAME, out string? name)) return null; - if (!payload.TryGetValue(SuitSensorConstants.NET_JOB, out string? job)) return null; - if (!payload.TryGetValue(SuitSensorConstants.NET_JOB_ICON, out string? jobIcon)) return null; - if (!payload.TryGetValue(SuitSensorConstants.NET_JOB_DEPARTMENTS, out List? jobDepartments)) return null; - if (!payload.TryGetValue(SuitSensorConstants.NET_IS_ALIVE, out bool? isAlive)) return null; - if (!payload.TryGetValue(SuitSensorConstants.NET_SUIT_SENSOR_UID, out NetEntity suitSensorUid)) return null; - if (!payload.TryGetValue(SuitSensorConstants.NET_OWNER_UID, out NetEntity ownerUid)) return null; - - // try get total damage and cords (optionals) - payload.TryGetValue(SuitSensorConstants.NET_TOTAL_DAMAGE, out int? totalDamage); - payload.TryGetValue(SuitSensorConstants.NET_TOTAL_DAMAGE_THRESHOLD, out int? totalDamageThreshold); - payload.TryGetValue(SuitSensorConstants.NET_COORDINATES, out NetCoordinates? coords); - - var status = new SuitSensorStatus(ownerUid, suitSensorUid, name, job, jobIcon, jobDepartments) - { - IsAlive = isAlive.Value, - TotalDamage = totalDamage, - TotalDamageThreshold = totalDamageThreshold, - Coordinates = coords, - }; - return status; - } } diff --git a/Content.Shared/Medical/SuitSensors/SuitSensorComponent.cs b/Content.Shared/Medical/SuitSensors/SuitSensorComponent.cs index 19bee1b017..dfdaa1f18a 100644 --- a/Content.Shared/Medical/SuitSensors/SuitSensorComponent.cs +++ b/Content.Shared/Medical/SuitSensors/SuitSensorComponent.cs @@ -1,4 +1,3 @@ -using Content.Shared.Medical.SuitSensor; using Robust.Shared.GameStates; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; diff --git a/Content.Shared/Power/Generation/Teg/TegSensorPayload.cs b/Content.Shared/Power/Generation/Teg/TegSensorPayload.cs new file mode 100644 index 0000000000..afa432f9e2 --- /dev/null +++ b/Content.Shared/Power/Generation/Teg/TegSensorPayload.cs @@ -0,0 +1,63 @@ +using Content.Shared.DeviceNetwork; +using Robust.Shared.Serialization; + +namespace Content.Shared.Power.Generation.Teg; + +/// +/// Information for a single TEG circulator. +/// +/// Pressure measured at the circulator's input pipe +/// Pressure measured at the circulator's output pipe +/// Temperature measured at the circulator's input pipe +/// Temperature measured at the circulator's output pipe +[DataRecord] +[Serializable, NetSerializable] +public partial record struct Circulator( + float InletPressure, + float OutletPressure, + float InletTemperature, + float OutletTemperature); + +/// +/// Sensor data reported by the when queried over the device network. +/// +public partial record struct TegSensorPayload : INetworkPayload +{ + /// + /// Information for the A-side circulator. + /// + [DataField] + public Circulator CirculatorA; + + /// + /// Information for the B-side circulator. + /// + [DataField] + public Circulator CirculatorB; + + /// + /// The amount of energy (Joules) generated by the TEG last atmos tick. + /// + /// + [DataField] + public float LastGeneration; + + /// + /// Ramping position for the TEG power generation. + /// + /// + [DataField] + public float RampPosition; + + /// + /// Power (Watts) actually being supplied by the TEG to connected power network. + /// + /// + [DataField] + public float PowerOutput; +} + +/// +/// Request to get . +/// +public partial record struct TegSensorSyncPayload : INetworkPayload; diff --git a/Content.Shared/Radio/EntitySystems/SharedJammerSystem.cs b/Content.Shared/Radio/EntitySystems/SharedJammerSystem.cs index 5b928edc08..0322d9a3d5 100644 --- a/Content.Shared/Radio/EntitySystems/SharedJammerSystem.cs +++ b/Content.Shared/Radio/EntitySystems/SharedJammerSystem.cs @@ -1,3 +1,4 @@ +using Content.Shared.DeviceNetwork; using Content.Shared.DeviceNetwork.Components; using Content.Shared.Popups; using Content.Shared.Verbs; @@ -33,7 +34,7 @@ public abstract partial class SharedJammerSystem : EntitySystem EnsureComp(entity); EnsureComp(entity, out var jammingComp); _jammer.SetRange((entity, jammingComp), GetCurrentRange(entity)); - _jammer.AddJammableNetwork((entity, jammingComp), DeviceNetworkComponent.DeviceNetIdDefaults.Wireless.ToString()); + _jammer.AddJammableNetwork((entity, jammingComp), (int) DeviceNetIdDefaults.Wireless); // Add excluded frequencies using the system method foreach (var freq in entity.Comp.FrequenciesExcluded) diff --git a/Content.Shared/Robotics/RoboticsConsoleUi.cs b/Content.Shared/Robotics/RoboticsConsoleUi.cs index 01ecb3f598..ecf273c646 100644 --- a/Content.Shared/Robotics/RoboticsConsoleUi.cs +++ b/Content.Shared/Robotics/RoboticsConsoleUi.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Content.Shared.DeviceNetwork; using Robust.Shared.Serialization; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; using Robust.Shared.Utility; @@ -136,12 +136,21 @@ public partial record struct CyborgControlData } } -public static class RoboticsConsoleConstants -{ - // broadcast by cyborgs on Robotics Console frequency - public const string NET_CYBORG_DATA = "cyborg-data"; +/// +/// Disables a borg when received. +/// +public partial record struct RoboticsCyborgDisablePayload : INetworkPayload; - // sent by robotics console to cyborgs on Cyborg Control frequency - public const string NET_DISABLE_COMMAND = "cyborg-disable"; - public const string NET_DESTROY_COMMAND = "cyborg-destroy"; +/// +/// Destroys a borg when received. +/// +public partial record struct RoboticsCyborgDestroyPayload : INetworkPayload; + +/// +/// A wrapper for +/// +public partial record struct RoboticsCyborgDataPayload : INetworkPayload +{ + [DataField] + public CyborgControlData Data; } diff --git a/Content.Shared/Robotics/Systems/SharedRoboticsConsoleSystem.cs b/Content.Shared/Robotics/Systems/SharedRoboticsConsoleSystem.cs index 25b3c5d07a..554dad46e9 100644 --- a/Content.Shared/Robotics/Systems/SharedRoboticsConsoleSystem.cs +++ b/Content.Shared/Robotics/Systems/SharedRoboticsConsoleSystem.cs @@ -3,6 +3,4 @@ namespace Content.Shared.Robotics.Systems; /// /// Does nothing, only exists for access right now. /// -public abstract class SharedRoboticsConsoleSystem : EntitySystem -{ -} +public abstract class SharedRoboticsConsoleSystem : EntitySystem; diff --git a/Content.Shared/RoundEnd/ScreenShuttlePayload.cs b/Content.Shared/RoundEnd/ScreenShuttlePayload.cs new file mode 100644 index 0000000000..2dcfd3809a --- /dev/null +++ b/Content.Shared/RoundEnd/ScreenShuttlePayload.cs @@ -0,0 +1,36 @@ +using Content.Shared.DeviceNetwork; + +namespace Content.Shared.RoundEnd; + +/// +/// A network payload to broadcast data to shuttle screens. +/// +public partial record struct ScreenShuttlePayload : INetworkPayload +{ + [DataField] + public EntityUid? Shuttle; + + [DataField] + public EntityUid? SourceMap; + + [DataField] + public EntityUid? DestinationMap; + + [DataField] + public TimeSpan ShuttleTime; + + [DataField] + public TimeSpan SourceTime; + + [DataField] + public TimeSpan DestinationTime; + + [DataField] + public bool Docked; + + [DataField] + public string? OverrideText; + + [DataField] + public Color? OverrideColor; +} diff --git a/Content.Shared/Screens/ScreenTextPayload.cs b/Content.Shared/Screens/ScreenTextPayload.cs new file mode 100644 index 0000000000..25371e8ca5 --- /dev/null +++ b/Content.Shared/Screens/ScreenTextPayload.cs @@ -0,0 +1,12 @@ +using Content.Shared.DeviceNetwork; + +namespace Content.Shared.Screens; + +/// +/// Broadcasts text to screens. +/// +public partial record struct ScreenTextPayload : INetworkPayload +{ + [DataField] + public string? Text; +} diff --git a/Content.Shared/SensorMonitoring/BatterySensorPayloads.cs b/Content.Shared/SensorMonitoring/BatterySensorPayloads.cs new file mode 100644 index 0000000000..3b2e422468 --- /dev/null +++ b/Content.Shared/SensorMonitoring/BatterySensorPayloads.cs @@ -0,0 +1,36 @@ +using Content.Shared.DeviceNetwork; + +namespace Content.Shared.SensorMonitoring; + +/// +/// Data about a battery sent to the power monitoring console. +/// +public partial record struct BatterySensorDataPayload : INetworkPayload +{ + [DataField] + public BatterySensorData Data; +} + +/// +/// A request for . +/// +public partial record struct BatterySensorSyncPayload : INetworkPayload; + +/// +/// Device network data sent by a . +/// +/// The current energy charge of the battery, in joules (J). +/// The maximum energy capacity of the battery, in joules (J). +/// The current amount of power being received by the battery, in watts (W). +/// The maximum amount of power that can be received by the battery, in watts (W). +/// The current amount of power being supplied by the battery, in watts (W). +/// The maximum amount of power that can be received by the battery, in watts (W). +[DataRecord] +public partial record struct BatterySensorData( + float Charge, + float MaxCharge, + float Receiving, + float MaxReceiving, + float Supplying, + float MaxSupplying +); diff --git a/Content.Shared/Silicons/Borgs/SharedBorgSystem.cs b/Content.Shared/Silicons/Borgs/SharedBorgSystem.cs index d0e4f2fd91..223b0645c7 100644 --- a/Content.Shared/Silicons/Borgs/SharedBorgSystem.cs +++ b/Content.Shared/Silicons/Borgs/SharedBorgSystem.cs @@ -4,6 +4,7 @@ using Content.Shared.Administration.Logs; using Content.Shared.Body.Events; using Content.Shared.Containers.ItemSlots; using Content.Shared.Database; +using Content.Shared.DeviceNetwork.Systems; using Content.Shared.Gibbing; using Content.Shared.Hands.EntitySystems; using Content.Shared.IdentityManagement; diff --git a/Content.Shared/SurveillanceCamera/Components/SurveillanceCameraMapComponent.cs b/Content.Shared/SurveillanceCamera/Components/SurveillanceCameraMapComponent.cs index 754240f604..3613456bcd 100644 --- a/Content.Shared/SurveillanceCamera/Components/SurveillanceCameraMapComponent.cs +++ b/Content.Shared/SurveillanceCamera/Components/SurveillanceCameraMapComponent.cs @@ -1,5 +1,7 @@ using System.Numerics; +using Content.Shared.DeviceNetwork; using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; using Robust.Shared.Serialization; namespace Content.Shared.SurveillanceCamera.Components; @@ -46,7 +48,7 @@ public partial struct CameraMarker /// Subnet the camera is connected to. /// [DataField] - public string Subnet; + public ProtoId Subnet; /// /// Should the camera be displayed on the camera map. diff --git a/Content.Shared/SurveillanceCamera/SharedSurveillanceCameraSystem.cs b/Content.Shared/SurveillanceCamera/SharedSurveillanceCameraSystem.cs index 1be49f8fc8..dfe4365b1a 100644 --- a/Content.Shared/SurveillanceCamera/SharedSurveillanceCameraSystem.cs +++ b/Content.Shared/SurveillanceCamera/SharedSurveillanceCameraSystem.cs @@ -9,6 +9,7 @@ public abstract partial class SharedSurveillanceCameraSystem : EntitySystem { public override void Initialize() { + base.Initialize(); SubscribeLocalEvent>(AddVerbs); SubscribeLocalEvent(OnEmpPulse); SubscribeLocalEvent(OnEmpDisabledRemoved); diff --git a/Content.Shared/SurveillanceCamera/SurveillanceCameraPayloads.cs b/Content.Shared/SurveillanceCamera/SurveillanceCameraPayloads.cs new file mode 100644 index 0000000000..a8b27dfa2d --- /dev/null +++ b/Content.Shared/SurveillanceCamera/SurveillanceCameraPayloads.cs @@ -0,0 +1,114 @@ +using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork.Payloads; +using Robust.Shared.Prototypes; + +namespace Content.Shared.SurveillanceCamera; + +/// +/// Response to +/// from the camera in order to establish the connection. +/// +public partial record struct SurveillanceCameraConnectPayload : IRoutableNetworkPayload +{ + [DataField] + public string? SenderAddress { get; set; } + + [DataField] + public EntityUid Sender { get; set; } +} + +/// +/// Request to connect to a camera from the camera monitor. +/// +public partial record struct SurveillanceCameraConnectRequestPayload : IRoutableNetworkPayload +{ + [DataField] + public string? SenderAddress { get; set; } + + [DataField] + public EntityUid Sender { get; set; } +} + +/// +/// Message sent periodically by an active camera monitor towards the active camera. +/// +public partial record struct SurveillanceCameraHeartbeatRequestPayload : IRoutableNetworkPayload +{ + [DataField] + public string? SenderAddress { get; set; } + + [DataField] + public EntityUid Sender { get; set; } +} + +/// +/// Response from the camera to the . +/// +public partial record struct SurveillanceCameraHeartbeatPayload : IRoutableNetworkPayload +{ + [DataField] + public string? SenderAddress { get; set; } + + [DataField] + public EntityUid Sender { get; set; } +} + +/// +/// Request to get from all cameras on a certain subnet. +/// +public partial record struct SurveillanceCameraPingPayload : IRoutableNetworkPayload +{ + [DataField] + public string Subnet; + + [DataField] + public string? SenderAddress { get; set; } + + [DataField] + public EntityUid Sender { get; set; } +} + +/// +/// Response to the request, contains info about a camera on a subnet. +/// +public partial record struct SurveillanceCameraDataPayload : IRoutableNetworkPayload +{ + [DataField] + public string Name; + + [DataField] + public string Subnet; + + [DataField] + public string? SenderAddress { get; set; } + + [DataField] + public EntityUid Sender { get; set; } +} + +/// +/// Request to connect to a camera subnet. +/// +public partial record struct SurveillanceCameraSubnetConnectPayload : INetworkPayload; + +/// +/// Request to disconnect from a camera subnet. +/// +public partial record struct SurveillanceCameraSubnetDisconnectPayload : INetworkPayload; + +/// +/// Request to get all available subnets. +/// +public partial record struct SurveillanceCameraPingSubnetPayload : INetworkPayload; + +/// +/// Response to the , contains the name of the available subnet. +/// +public partial record struct SurveillanceCameraSubnetDataPayload : INetworkPayload +{ + [DataField] + public string Subnet; + + [DataField] + public ProtoId TransmitFrequency; +} diff --git a/Content.Shared/TurretController/TurretControllerPayloads.cs b/Content.Shared/TurretController/TurretControllerPayloads.cs new file mode 100644 index 0000000000..733bd42fa0 --- /dev/null +++ b/Content.Shared/TurretController/TurretControllerPayloads.cs @@ -0,0 +1,28 @@ +using Content.Shared.Access; +using Content.Shared.DeviceNetwork; +using Robust.Shared.Prototypes; + +namespace Content.Shared.TurretController; + +/// +/// A network payload that sets fire mode for a turret. +/// +public partial record struct TurretControllerSetArmamentPayload : INetworkPayload +{ + [DataField] + public int ArmamentState; +} + +/// +/// A network payload that sets access exemptions for a turret. +/// +public partial record struct TurretControllerSetAccessPayload : INetworkPayload +{ + [DataField] + public HashSet> AccessExemptions = new(); +} + +/// +/// A network payload request to get the state of all available turrets. +/// +public readonly partial record struct TurretControllerRequestPayload : INetworkPayload; diff --git a/Content.Shared/Turrets/TurretPayloads.cs b/Content.Shared/Turrets/TurretPayloads.cs new file mode 100644 index 0000000000..5271742221 --- /dev/null +++ b/Content.Shared/Turrets/TurretPayloads.cs @@ -0,0 +1,12 @@ +using Content.Shared.DeviceNetwork; + +namespace Content.Shared.Turrets; + +/// +/// A wrapper for . +/// +public partial record struct TurretStatePayload : INetworkPayload +{ + [DataField] + public DeployableTurretState State; +} diff --git a/Resources/Locale/en-US/devices/device-network.ftl b/Resources/Locale/en-US/devices/device-network.ftl index 7151e218f3..c198215867 100644 --- a/Resources/Locale/en-US/devices/device-network.ftl +++ b/Resources/Locale/en-US/devices/device-network.ftl @@ -1,4 +1,4 @@ -# named frequencies +# Named frequencies device-frequency-prototype-name-atmos = Atmospheric Devices device-frequency-prototype-name-suit-sensors = Suit Sensors device-frequency-prototype-name-crew-monitor = Crew Monitor @@ -13,8 +13,11 @@ device-frequency-prototype-name-turret = Sentry Turret device-frequency-prototype-name-turret-control = Sentry Turret Control device-frequency-prototype-name-xenoborg = Xenoborg device-frequency-prototype-name-mothership = Mothership +device-frequency-prototype-name-arrivals-shuttle-timer = Arrivals Timer +device-frequency-prototype-name-shuttle-timer = Evac Shuttle Timer -## camera frequencies +## Camera frequencies +device-frequency-prototype-name-surveillance-camera = Cameras device-frequency-prototype-name-surveillance-camera-test = Subnet Test device-frequency-prototype-name-surveillance-camera-engineering = Engineering Cameras device-frequency-prototype-name-surveillance-camera-security = Security Cameras @@ -26,7 +29,7 @@ device-frequency-prototype-name-surveillance-camera-medical = Medical Cameras device-frequency-prototype-name-surveillance-camera-general = General Cameras device-frequency-prototype-name-surveillance-camera-entertainment = Entertainment Cameras -# prefixes for randomly generated device addresses +# Prefixes for randomly generated device addresses device-address-prefix-vent = VNT- device-address-prefix-scrubber = SCR- device-address-prefix-sensor = SNS- @@ -43,7 +46,16 @@ device-address-prefix-console = CLS- device-address-prefix-fire-alarm = FIR- device-address-prefix-air-alarm = AIR- -device-address-prefix-sensor-monitor = MON- +# Consoles +device-address-prefix-sensor-monitor = SEM- +device-address-prefix-camera-monitor = SCM- +device-address-prefix-crew-monitor = MCM- + +# Servers and routers +device-address-prefix-camera-router = CMR- +device-address-prefix-camera-router-wireless = CMW- +device-address-prefix-camera = CAM- +device-address-prefix-crew-monitoring-server = CMS- device-address-examine-message = The device's address is {$address}. diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/handheld_crew_monitor.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/handheld_crew_monitor.yml index 3593ce1df1..4a0d4c6425 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/handheld_crew_monitor.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/handheld_crew_monitor.yml @@ -21,6 +21,7 @@ - type: DeviceNetwork deviceNetId: Wireless receiveFrequencyId: CrewMonitor + prefix: device-address-prefix-crew-monitor - type: WirelessNetworkConnection range: 500 - type: StationLimitedNetwork diff --git a/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml b/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml index 9c43f60324..6164240896 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml @@ -457,6 +457,7 @@ - type: DeviceNetwork deviceNetId: Wireless receiveFrequencyId: CrewMonitor + prefix: device-address-prefix-crew-monitor - type: WirelessNetworkConnection range: 1200 - type: AmbientMusicMarkerMedical @@ -1405,6 +1406,7 @@ deviceNetId: Wired receiveFrequencyId: SurveillanceCamera transmitFrequencyId: SurveillanceCamera + prefix: device-address-prefix-camera-monitor - type: WiredNetworkConnection - type: DeviceNetworkRequiresPower - type: SurveillanceCameraMonitor @@ -1444,6 +1446,7 @@ deviceNetId: Wireless receiveFrequencyId: SurveillanceCamera transmitFrequencyId: SurveillanceCamera + prefix: device-address-prefix-camera-monitor - type: WirelessNetworkConnection range: 200 - type: DeviceNetworkRequiresPower diff --git a/Resources/Prototypes/Entities/Structures/Machines/crew_monitor_server.yml b/Resources/Prototypes/Entities/Structures/Machines/crew_monitor_server.yml index 1b35e4baec..e069fa3879 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/crew_monitor_server.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/crew_monitor_server.yml @@ -33,6 +33,7 @@ deviceNetId: Wireless transmitFrequencyId: CrewMonitor receiveFrequencyId: SuitSensor + prefix: device-address-prefix-crew-monitoring-server autoConnect: false - type: WirelessNetworkConnection range: 500 diff --git a/Resources/Prototypes/Entities/Structures/Machines/surveillance_camera_routers.yml b/Resources/Prototypes/Entities/Structures/Machines/surveillance_camera_routers.yml index f345fa3988..5ace676f3b 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/surveillance_camera_routers.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/surveillance_camera_routers.yml @@ -1,72 +1,75 @@ - type: entity abstract: true - parent: [ BaseMachinePowered, ConstructibleMachine, BaseConstructibleMachineDestructible ] + parent: [ BaseMachinePowered, ConstructibleMachine ] id: SurveillanceCameraRouterBase name: camera router description: A surveillance camera router. It routes. Perhaps. components: - - type: DeviceNetwork - deviceNetId: Wired - receiveFrequencyId: SurveillanceCamera - transmitFrequencyId: SurveillanceCamera - - type: WiredNetworkConnection - - type: DeviceNetworkRequiresPower - - type: UserInterface - interfaces: - enum.SurveillanceCameraSetupUiKey.Router: - type: SurveillanceCameraSetupBoundUi - - type: Machine - board: SurveillanceCameraRouterCircuitboard - - type: Sprite - sprite: Structures/Machines/server.rsi - snapCardinals: true - layers: - - state: server-off - - state: server-on - visible: false - map: ["enum.PowerDeviceVisualLayers.Powered"] - - state: server_o - map: ["enum.WiresVisualLayers.MaintenancePanel"] - - type: GenericVisualizer - visuals: - enum.PowerDeviceVisuals.Powered: - enum.PowerDeviceVisualLayers.Powered: - True: { visible: true } - False: { visible: false } - - type: Destructible - thresholds: - - trigger: !type:DamageTrigger - damage: 175 - behaviors: - - !type:PlaySoundBehavior - sound: - collection: MetalBreak - - type: Appearance - - type: AmbientOnPowered - - type: AmbientSound - volume: -9 - range: 5 - enabled: false - sound: - collection: ServerFans - - type: WiresVisuals - - type: WiresPanel + - type: Sprite + sprite: Structures/Machines/server.rsi + snapCardinals: true + layers: + - state: server-off + - state: server-on + visible: false + map: ["enum.PowerDeviceVisualLayers.Powered"] + - state: server_o + map: ["enum.WiresVisualLayers.MaintenancePanel"] + - type: GenericVisualizer + visuals: + enum.PowerDeviceVisuals.Powered: + enum.PowerDeviceVisualLayers.Powered: + True: { visible: true } + False: { visible: false } + - type: Appearance + - type: AmbientOnPowered + - type: AmbientSound + volume: -9 + range: 5 + enabled: false + sound: + collection: ServerFans + - type: WiresVisuals + - type: WiresPanel + - type: Machine + board: SurveillanceCameraRouterCircuitboard + - type: Destructible + thresholds: + - trigger: !type:DamageTrigger + damage: 175 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: MetalBreak + - type: DeviceNetwork + deviceNetId: Wired + receiveFrequencyId: SurveillanceCamera + transmitFrequencyId: SurveillanceCamera + prefix: device-address-prefix-camera-router + - type: WiredNetworkConnection + - type: DeviceNetworkRequiresPower + - type: DeviceNetworkRouter + - type: SurveillanceCameraRouter + - type: UserInterface + interfaces: + enum.SurveillanceCameraSetupUiKey.Router: + type: SurveillanceCameraSetupBoundUi - type: entity parent: SurveillanceCameraRouterBase id: SurveillanceCameraRouterConstructed suffix: Constructed components: - - type: SurveillanceCameraRouter - setupAvailableNetworks: - - SurveillanceCameraEngineering - - SurveillanceCameraSecurity - - SurveillanceCameraService - - SurveillanceCameraSupply - - SurveillanceCameraScience - - SurveillanceCameraGeneral - - SurveillanceCameraMedical - - SurveillanceCameraCommand + - type: SurveillanceCameraRouter + setupAvailableNetworks: + - SurveillanceCameraEngineering + - SurveillanceCameraSecurity + - SurveillanceCameraService + - SurveillanceCameraSupply + - SurveillanceCameraScience + - SurveillanceCameraGeneral + - SurveillanceCameraMedical + - SurveillanceCameraCommand - type: entity parent: SurveillanceCameraRouterBase @@ -74,8 +77,8 @@ name: engineering camera router suffix: Engineering components: - - type: SurveillanceCameraRouter - subnetFrequency: SurveillanceCameraEngineering + - type: SurveillanceCameraRouter + subnetFrequency: SurveillanceCameraEngineering - type: entity parent: SurveillanceCameraRouterBase @@ -83,8 +86,8 @@ name: security camera router suffix: Security components: - - type: SurveillanceCameraRouter - subnetFrequency: SurveillanceCameraSecurity + - type: SurveillanceCameraRouter + subnetFrequency: SurveillanceCameraSecurity - type: entity parent: SurveillanceCameraRouterBase @@ -92,8 +95,8 @@ name: science camera router suffix: Science components: - - type: SurveillanceCameraRouter - subnetFrequency: SurveillanceCameraScience + - type: SurveillanceCameraRouter + subnetFrequency: SurveillanceCameraScience - type: entity parent: SurveillanceCameraRouterBase @@ -101,8 +104,8 @@ name: supply camera router suffix: Supply components: - - type: SurveillanceCameraRouter - subnetFrequency: SurveillanceCameraSupply + - type: SurveillanceCameraRouter + subnetFrequency: SurveillanceCameraSupply - type: entity parent: SurveillanceCameraRouterBase @@ -110,8 +113,8 @@ name: command camera router suffix: Command components: - - type: SurveillanceCameraRouter - subnetFrequency: SurveillanceCameraCommand + - type: SurveillanceCameraRouter + subnetFrequency: SurveillanceCameraCommand - type: entity parent: SurveillanceCameraRouterBase @@ -119,8 +122,8 @@ name: service camera router suffix: Service components: - - type: SurveillanceCameraRouter - subnetFrequency: SurveillanceCameraService + - type: SurveillanceCameraRouter + subnetFrequency: SurveillanceCameraService - type: entity parent: SurveillanceCameraRouterBase @@ -128,8 +131,8 @@ name: medical camera router suffix: Medical components: - - type: SurveillanceCameraRouter - subnetFrequency: SurveillanceCameraMedical + - type: SurveillanceCameraRouter + subnetFrequency: SurveillanceCameraMedical - type: entity parent: SurveillanceCameraRouterBase @@ -137,8 +140,8 @@ name: general camera router suffix: General components: - - type: SurveillanceCameraRouter - subnetFrequency: SurveillanceCameraGeneral + - type: SurveillanceCameraRouter + subnetFrequency: SurveillanceCameraGeneral - type: entity abstract: true @@ -147,61 +150,62 @@ name: wireless camera router description: A wireless surveillance camera router. It routes. Perhaps. components: - - type: DeviceNetwork - deviceNetId: Wireless - receiveFrequencyId: SurveillanceCamera - transmitFrequencyId: SurveillanceCamera - - type: WirelessNetworkConnection - range: 200 - - type: DeviceNetworkRequiresPower - - type: UserInterface - interfaces: - enum.SurveillanceCameraSetupUiKey.Router: - type: SurveillanceCameraSetupBoundUi - - type: Machine - board: SurveillanceCameraWirelessRouterCircuitboard - - type: Sprite - sprite: Structures/Machines/server.rsi - layers: - - state: server-off - - state: server-on - visible: false - map: ["enum.PowerDeviceVisualLayers.Powered"] - - state: server_o - map: ["enum.WiresVisualLayers.MaintenancePanel"] - - type: GenericVisualizer - visuals: - enum.PowerDeviceVisuals.Powered: - enum.PowerDeviceVisualLayers.Powered: - True: { visible: true } - False: { visible: false } - - type: Destructible - thresholds: - - trigger: !type:DamageTrigger - damage: 175 - behaviors: - - !type:PlaySoundBehavior - sound: - collection: MetalBreak - - type: Appearance - - type: AmbientOnPowered - - type: AmbientSound - volume: -9 - range: 5 - enabled: false - sound: - collection: ServerFans - - type: WiresVisuals - - type: WiresPanel + - type: Sprite + sprite: Structures/Machines/server.rsi + layers: + - state: server-off + - state: server-on + visible: false + map: ["enum.PowerDeviceVisualLayers.Powered"] + - state: server_o + map: ["enum.WiresVisualLayers.MaintenancePanel"] + - type: GenericVisualizer + visuals: + enum.PowerDeviceVisuals.Powered: + enum.PowerDeviceVisualLayers.Powered: + True: { visible: true } + False: { visible: false } + - type: Appearance + - type: AmbientOnPowered + - type: AmbientSound + volume: -9 + range: 5 + enabled: false + sound: + collection: ServerFans + - type: WiresVisuals + - type: WiresPanel + - type: Machine + board: SurveillanceCameraWirelessRouterCircuitboard + - type: Destructible + thresholds: + - trigger: !type:DamageTrigger + damage: 175 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: MetalBreak + - type: DeviceNetwork + deviceNetId: Wireless + receiveFrequencyId: SurveillanceCamera + transmitFrequencyId: SurveillanceCamera + prefix: device-address-prefix-camera-router-wireless + - type: WirelessNetworkConnection + range: 200 + - type: DeviceNetworkRequiresPower + - type: UserInterface + interfaces: + enum.SurveillanceCameraSetupUiKey.Router: + type: SurveillanceCameraSetupBoundUi - type: entity parent: SurveillanceCameraWirelessRouterBase id: SurveillanceCameraWirelessRouterConstructed suffix: Constructed components: - - type: SurveillanceCameraRouter - setupAvailableNetworks: - - SurveillanceCameraEntertainment + - type: SurveillanceCameraRouter + setupAvailableNetworks: + - SurveillanceCameraEntertainment - type: entity parent: SurveillanceCameraWirelessRouterBase @@ -209,8 +213,8 @@ name: entertainment camera router suffix: Entertainment components: - - type: SurveillanceCameraRouter - subnetFrequency: SurveillanceCameraEntertainment + - type: SurveillanceCameraRouter + subnetFrequency: SurveillanceCameraEntertainment - type: entity parent: SurveillanceCameraWirelessRouterBase diff --git a/Resources/Prototypes/Entities/Structures/Piping/Disposal/units.yml b/Resources/Prototypes/Entities/Structures/Piping/Disposal/units.yml index 2dc2baa5f4..ecee7ae7d8 100644 --- a/Resources/Prototypes/Entities/Structures/Piping/Disposal/units.yml +++ b/Resources/Prototypes/Entities/Structures/Piping/Disposal/units.yml @@ -226,6 +226,7 @@ deviceNetId: Wired receiveFrequencyId: MailingUnit transmitFrequencyId: MailingUnit + - type: DeviceNetworkRequiresPower - type: WiredNetworkConnection - type: Configuration config: diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/Monitors/telescreens.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/Monitors/telescreens.yml index 8689dc698b..1f29d6b846 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/Monitors/telescreens.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/Monitors/telescreens.yml @@ -44,6 +44,7 @@ deviceNetId: Wired receiveFrequencyId: SurveillanceCamera transmitFrequencyId: SurveillanceCamera + prefix: device-address-prefix-camera-monitor - type: WiredNetworkConnection - type: DeviceNetworkRequiresPower - type: SurveillanceCameraMonitor diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/air_alarm.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/air_alarm.yml index 3fc723257e..7d435f2d22 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/air_alarm.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/air_alarm.yml @@ -51,12 +51,15 @@ group: AirAlarm - type: Clickable - type: InteractionOutline + - type: ActivatableUI + key: enum.SharedAirAlarmInterfaceKey.Key - type: UserInterface interfaces: enum.SharedAirAlarmInterfaceKey.Key: type: AirAlarmBoundUserInterface enum.WiresUiKey.Key: type: WiresBoundUserInterface + - type: ActivatableUIRequiresPower - type: WiresPanel - type: Wires boardName: wires-board-name-airalarm diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/surveillance_camera.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/surveillance_camera.yml index 44bf6537c6..c9d0250cb8 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/surveillance_camera.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/surveillance_camera.yml @@ -9,8 +9,20 @@ snap: - Wallmount components: + - type: Transform + anchored: true + - type: Sprite + drawdepth: WallMountedItems + sprite: Structures/Wallmounts/camera.rsi + offset: 0, -0.5 + layers: + - map: [ "enum.SurveillanceCameraVisualsKey.Layer" ] + state: camera + - type: Appearance - type: Physics bodyType: Static + - type: Clickable + - type: InteractionOutline - type: Fixtures fixtures: light: @@ -29,57 +41,14 @@ - None layer: - TabletopMachineLayer - - type: CameraActiveOnCollide - requiresPower: false # TODO: Change this when AI can no longer see via unpowered cameras + - type: Eye - type: PointLight enabled: false radius: 5 - - type: SlimPoweredLight - enabled: false - - type: StationAiVision - - type: Clickable - - type: InteractionOutline - - type: Construction - graph: SurveillanceCamera - node: camera - - type: Electrified - enabled: false - usesApcPower: true - - type: WallMount - - type: ApcPowerReceiver - - type: ExtensionCableReceiver - - type: Eye - - type: WiredNetworkConnection - - type: DeviceNetworkRequiresPower - - type: Transform - anchored: true - - type: WiresPanel - - type: Wires - alwaysRandomize: true - layoutId: SurveillanceCamera - - type: Sprite - drawdepth: WallMountedItems - sprite: Structures/Wallmounts/camera.rsi - offset: 0, -0.5 - layers: - - map: [ "enum.SurveillanceCameraVisualsKey.Layer" ] - state: camera - - type: Appearance - - type: SurveillanceCameraVisuals - sprites: - Active: camera - Disabled: camera_off - InUse: camera_in_use - - type: UserInterface - interfaces: - enum.SurveillanceCameraSetupUiKey.Camera: - type: SurveillanceCameraSetupBoundUi - enum.WiresUiKey.Key: - type: WiresBoundUserInterface - - type: StaticPrice - price: 200 - type: Damageable damageModifierSet: SteelMod + - type: Injurable + damageContainer: StructuralInorganic - type: Destructible thresholds: &ThresholdsSurveilCamera - trigger: @@ -96,6 +65,43 @@ SheetSteel1: min: 0 max: 1 + - type: SlimPoweredLight + enabled: false + - type: Electrified + enabled: false + usesApcPower: true + - type: WallMount + - type: ApcPowerReceiver + - type: ExtensionCableReceiver + - type: WiresPanel + - type: Wires + alwaysRandomize: true + layoutId: SurveillanceCamera + - type: DeviceNetwork + deviceNetId: Wired + transmitFrequencyId: SurveillanceCamera + prefix: device-address-prefix-camera + - type: DeviceNetworkRequiresPower + - type: WiredNetworkConnection + - type: StationAiVision + - type: CameraActiveOnCollide + requiresPower: false # TODO: Change this when AI can no longer see via unpowered cameras + - type: Construction + graph: SurveillanceCamera + node: camera + - type: StaticPrice + price: 200 + - type: SurveillanceCameraVisuals + sprites: + Active: camera + Disabled: camera_off + InUse: camera_in_use + - type: UserInterface + interfaces: + enum.SurveillanceCameraSetupUiKey.Camera: + type: SurveillanceCameraSetupBoundUi + enum.WiresUiKey.Key: + type: WiresBoundUserInterface - type: entity parent: SurveillanceCameraBase @@ -103,19 +109,16 @@ name: camera suffix: Constructed components: - - type: DeviceNetwork - deviceNetId: Wired - transmitFrequencyId: SurveillanceCamera - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraEngineering - - SurveillanceCameraSecurity - - SurveillanceCameraService - - SurveillanceCameraSupply - - SurveillanceCameraScience - - SurveillanceCameraGeneral - - SurveillanceCameraMedical - - SurveillanceCameraCommand + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraEngineering + - SurveillanceCameraSecurity + - SurveillanceCameraService + - SurveillanceCameraSupply + - SurveillanceCameraScience + - SurveillanceCameraGeneral + - SurveillanceCameraMedical + - SurveillanceCameraCommand - type: entity parent: SurveillanceCameraBase @@ -124,9 +127,8 @@ suffix: Engineering components: - type: DeviceNetwork - deviceNetId: Wired receiveFrequencyId: SurveillanceCameraEngineering - transmitFrequencyId: SurveillanceCamera + prefix: device-address-prefix-camera - type: SurveillanceCamera networkSet: true @@ -137,9 +139,7 @@ suffix: Security components: - type: DeviceNetwork - deviceNetId: Wired receiveFrequencyId: SurveillanceCameraSecurity - transmitFrequencyId: SurveillanceCamera - type: SurveillanceCamera networkSet: true @@ -150,9 +150,7 @@ suffix: Science components: - type: DeviceNetwork - deviceNetId: Wired receiveFrequencyId: SurveillanceCameraScience - transmitFrequencyId: SurveillanceCamera - type: SurveillanceCamera networkSet: true @@ -163,9 +161,7 @@ suffix: Supply components: - type: DeviceNetwork - deviceNetId: Wired receiveFrequencyId: SurveillanceCameraSupply - transmitFrequencyId: SurveillanceCamera - type: SurveillanceCamera networkSet: true @@ -176,9 +172,7 @@ suffix: Command components: - type: DeviceNetwork - deviceNetId: Wired receiveFrequencyId: SurveillanceCameraCommand - transmitFrequencyId: SurveillanceCamera - type: SurveillanceCamera networkSet: true @@ -189,9 +183,7 @@ suffix: Service components: - type: DeviceNetwork - deviceNetId: Wired receiveFrequencyId: SurveillanceCameraService - transmitFrequencyId: SurveillanceCamera - type: SurveillanceCamera networkSet: true @@ -202,9 +194,7 @@ suffix: Medical components: - type: DeviceNetwork - deviceNetId: Wired receiveFrequencyId: SurveillanceCameraMedical - transmitFrequencyId: SurveillanceCamera - type: SurveillanceCamera networkSet: true @@ -215,9 +205,7 @@ suffix: General components: - type: DeviceNetwork - deviceNetId: Wired receiveFrequencyId: SurveillanceCameraGeneral - transmitFrequencyId: SurveillanceCamera - type: SurveillanceCamera networkSet: true @@ -231,20 +219,20 @@ snap: - Wallmount components: - - type: Clickable - - type: InteractionOutline - - type: Construction - graph: SurveillanceCamera - node: assembly - - type: WallMount - - type: Transform - anchored: true - - type: Damageable - damageModifierSet: SteelMod - - type: Destructible - thresholds: *ThresholdsSurveilCamera - - type: Sprite - drawdepth: WallMountedItems - sprite: Structures/Wallmounts/camera.rsi - layers: - - state: camera_off + - type: Transform + anchored: true + - type: Sprite + drawdepth: WallMountedItems + sprite: Structures/Wallmounts/camera.rsi + layers: + - state: camera_off + - type: Clickable + - type: InteractionOutline + - type: Damageable + damageModifierSet: SteelMod + - type: Destructible + thresholds: *ThresholdsSurveilCamera + - type: Construction + graph: SurveillanceCamera + node: assembly + - type: WallMount diff --git a/Resources/Prototypes/Entities/Structures/gates.yml b/Resources/Prototypes/Entities/Structures/gates.yml index 46faf923e0..c86c869500 100644 --- a/Resources/Prototypes/Entities/Structures/gates.yml +++ b/Resources/Prototypes/Entities/Structures/gates.yml @@ -24,6 +24,8 @@ receiveFrequencyId: BasicDevice - type: WirelessNetworkConnection range: 200 + - type: SoundOnOverload + - type: SpawnOnOverload - type: entity parent: BaseLogicItem From 8bf0961e5a1db822da9cc88bc221e6ca93e73ff7 Mon Sep 17 00:00:00 2001 From: Fildrance Date: Mon, 31 Aug 2026 20:58:52 +0000 Subject: [PATCH 033/197] Feature/refactor xenoarch trigger to be entity table ed (#45608) * refactor: rough strokes for initial implementation * refactor: fix ada remarks * refactor: fix XenoArtifactNodeParser not displaying trigger and effect properly in autocompletion * refactor: more changes for IsNotRepeatingCondition * refactor: update triggers declarations * refactor: remove IsNotRepeatingCondition - duplicate * refactor: fixup after merge with master * refactor: properly handle creation of improper trigger set, all selectors gt ToString override! * refactor: fix missing weight for some triggers, XenoArtifactCommand.UnlockAllNodes now accepts multiple entries * refactor: fix trigger hints loc being name explicitly and failing tests * yaml changes * rename * refactor: fix xml-doc copy-paste for XenoArtifactTriggerParser --------- Co-authored-by: iaada --- .../XenoArtifacts/XenoArtifactCommands.cs | 30 +- .../Artifact/XenoArtifactSystem.ProcGen.cs | 110 +++--- .../ExcludeEntitiesFromContextCondition.cs | 1 + .../EntitySelectors/AllSelector.cs | 6 + .../EntitySelectors/EntSelector.cs | 6 + .../EntitySelectors/GroupSelector.cs | 6 + .../EntitySelectors/NestedSelector.cs | 6 + .../EntitySelectors/NoneSelector.cs | 6 + .../EntityTable/EntityTableSystem.cs | 25 ++ ...tParser.cs => XenoArtifactEffectParser.cs} | 3 +- .../XenoArtifact/XenoArtifactNodeParser.cs | 8 +- .../XenoArtifact/XenoArtifactTriggerParser.cs | 26 ++ .../Components/XenoArtifactComponent.cs | 6 +- .../Prototypes/XenoArchTriggerPrototype.cs | 45 --- .../Artifact/SharedXenoArtifactSystem.Node.cs | 10 +- .../toolshed/xenoartifact-command.ftl | 2 +- Resources/Locale/en-US/entity-categories.ftl | 1 + .../en-US/xenoarchaeology/artifact-hints.ftl | 59 --- .../Xenoarchaeology/item_xenoartifacts.yml | 2 + Resources/Prototypes/Entities/categories.yml | 5 + Resources/Prototypes/XenoArch/triggers.yml | 350 +++++++++++------- 21 files changed, 399 insertions(+), 314 deletions(-) rename Content.Shared/Toolshed/TypeParsers/XenoArtifact/{XenoEffectParser.cs => XenoArtifactEffectParser.cs} (88%) create mode 100644 Content.Shared/Toolshed/TypeParsers/XenoArtifact/XenoArtifactTriggerParser.cs delete mode 100644 Content.Shared/Xenoarchaeology/Artifact/Prototypes/XenoArchTriggerPrototype.cs diff --git a/Content.Server/Toolshed/Commands/XenoArtifacts/XenoArtifactCommands.cs b/Content.Server/Toolshed/Commands/XenoArtifacts/XenoArtifactCommands.cs index 169147de0c..3d7de10c32 100644 --- a/Content.Server/Toolshed/Commands/XenoArtifacts/XenoArtifactCommands.cs +++ b/Content.Server/Toolshed/Commands/XenoArtifacts/XenoArtifactCommands.cs @@ -4,7 +4,6 @@ using Content.Server.Xenoarchaeology.Artifact; using Content.Shared.Administration; using Content.Shared.Toolshed.TypeParsers.XenoArtifact; using Content.Shared.Xenoarchaeology.Artifact.Components; -using Content.Shared.Xenoarchaeology.Artifact.Prototypes; using Robust.Shared.Map; using Robust.Shared.Player; using Robust.Shared.Prototypes; @@ -116,15 +115,18 @@ public sealed partial class XenoArtifactCommand : ToolshedCommand /// Unlocks all nodes of artifact. [CommandImplementation("unlockallnodes")] - public void UnlockAllNodes([PipedArgument] EntityUid artifactEntityUid) + public void UnlockAllNodes([PipedArgument] IEnumerable artifactUids) { _artifact ??= Sys(); - var comp = Comp(artifactEntityUid); - - var nodes = _artifact.GetAllNodes((artifactEntityUid, comp)); - foreach (var node in nodes) + foreach (var artifactUid in artifactUids) { - _artifact.SetNodeUnlocked((node, node.Comp)); + var comp = Comp(artifactUid); + + var nodes = _artifact.GetAllNodes((artifactUid, comp)); + foreach (var node in nodes) + { + _artifact.SetNodeUnlocked((node, node.Comp)); + } } } @@ -134,8 +136,8 @@ public sealed partial class XenoArtifactCommand : ToolshedCommand [CommandImplementation("createnode")] public void CreateNodeNew( [CommandArgument] Entity artifact, - [CommandArgument(typeof(XenoEffectParser))] ProtoId effect, - [CommandArgument] ProtoId trigger + [CommandArgument(typeof(XenoArtifactEffectParser))] ProtoId effect, + [CommandArgument(typeof(XenoArtifactTriggerParser))] ProtoId trigger ) { CreateNode(artifact, effect, trigger); @@ -145,8 +147,8 @@ public sealed partial class XenoArtifactCommand : ToolshedCommand [CommandImplementation("createnodeatdepth")] public void CreateNodeAtDepth( [CommandArgument(typeof(XenoArtifactNodeParser))] (Entity Artifact, Entity Node) tuple, - [CommandArgument(typeof(XenoEffectParser))] ProtoId effect, - [CommandArgument] ProtoId trigger + [CommandArgument(typeof(XenoArtifactEffectParser))] ProtoId effect, + [CommandArgument(typeof(XenoArtifactTriggerParser))] ProtoId trigger ) { CreateNode(tuple.Artifact, effect, trigger, tuple.Node); @@ -157,8 +159,8 @@ public sealed partial class XenoArtifactCommand : ToolshedCommand public void SpawnArtifactWithNode( [CommandArgument] ICommonSession target, [CommandArgument(typeof(XenoArtifactTypeParser))] ProtoId artifactType, - [CommandArgument(typeof(XenoEffectParser))] ProtoId effect, - [CommandArgument] ProtoId trigger + [CommandArgument(typeof(XenoArtifactEffectParser))] ProtoId effect, + [CommandArgument(typeof(XenoArtifactTriggerParser))] ProtoId trigger ) { if (target.AttachedEntity == null) @@ -215,7 +217,7 @@ public sealed partial class XenoArtifactCommand : ToolshedCommand private void CreateNode( Entity artifact, ProtoId effect, - ProtoId trigger, + ProtoId trigger, Entity? node = null ) { diff --git a/Content.Server/Xenoarchaeology/Artifact/XenoArtifactSystem.ProcGen.cs b/Content.Server/Xenoarchaeology/Artifact/XenoArtifactSystem.ProcGen.cs index 971c19c50f..f112512944 100644 --- a/Content.Server/Xenoarchaeology/Artifact/XenoArtifactSystem.ProcGen.cs +++ b/Content.Server/Xenoarchaeology/Artifact/XenoArtifactSystem.ProcGen.cs @@ -1,80 +1,53 @@ -using System.Linq; -using Content.Shared.Random.Helpers; -using Content.Shared.Whitelist; +using Content.Shared.EntityTable; +using Content.Shared.EntityTable.Conditions; using Content.Shared.Xenoarchaeology.Artifact.Components; -using Content.Shared.Xenoarchaeology.Artifact.Prototypes; using Robust.Shared.Prototypes; using Robust.Shared.Random; +using System.Linq; namespace Content.Server.Xenoarchaeology.Artifact; public sealed partial class XenoArtifactSystem { - [Dependency] private EntityWhitelistSystem _entityWhitelist = default!; + [Dependency] private EntityTableSystem _entityTable = default!; + + /// + /// Trigger for fallback scenario, when artifact acquired no trigger when generating artifact. + /// + private static readonly EntProtoId DummyTrigger = "TriggerExamine"; private void GenerateArtifactStructure(Entity ent) { var nodeCount = ent.Comp.NodeCount.Next(RobustRandom); - var triggerPool = CreateTriggerPool(ent, nodeCount); + // trigger pool could be smaller, then requested node count - nodeCount = triggerPool.Count; + var totalTriggers = _entityTable.ListSpawns(ent.Comp.TriggersTable) + .Count(); + nodeCount = int.Min(nodeCount, totalTriggers); + var triggerPoolData = new TriggerPoolData(nodeCount); + ResizeNodeGraph(ent, nodeCount); while (nodeCount > 0) { - GenerateArtifactSegment(ent, triggerPool, ref nodeCount); + GenerateArtifactSegment(ent, triggerPoolData, ref nodeCount); } RebuildXenoArtifactMetaData((ent, ent)); } - /// - /// Creates pool from all node triggers that current artifact can support. - /// As artifact cannot re-use triggers, pool will be growing smaller - /// and smaller with each node generated. - /// - /// Artifact for which pool should be created. - /// - /// Max size of pool. Resulting pool is not guaranteed to be exactly as large, but it will 100% won't be bigger. - /// - private List CreateTriggerPool(Entity ent, int size) - { - var triggerPool = new List(size); - var weightsProto = ProtoMan.Index(ent.Comp.TriggerWeights); - var weightsByTriggersLeft = new Dictionary, float>(weightsProto.Weights); - - while (triggerPool.Count < size) - { - // OOPS! We ran out of triggers. - if (weightsByTriggersLeft.Count == 0) - { - Log.Error($"Insufficient triggers for generating {ToPrettyString(ent)}! Needed {size} but had {triggerPool.Count}"); - return triggerPool; - } - - var triggerId = RobustRandom.PickAndTake(weightsByTriggersLeft); - var trigger = ProtoMan.Index(triggerId); - if (_entityWhitelist.IsWhitelistFail(trigger.Whitelist, ent)) - continue; - - triggerPool.Add(trigger); - } - - return triggerPool; - } - /// /// Generates segment of artifact - isolated graph, nodes inside which are interconnected. /// As size of segment is randomized - it is subtracted from node count. /// private void GenerateArtifactSegment( Entity ent, - List triggerPool, + TriggerPoolData triggerPoolData, ref int nodeCount ) { var segmentSize = GetArtifactSegmentSize(ent, nodeCount); nodeCount -= segmentSize; - var populatedNodes = PopulateArtifactSegmentRecursive(ent, triggerPool, ref segmentSize); + var populatedNodes = PopulateArtifactSegmentRecursive(ent, triggerPoolData, ref segmentSize); var segments = GetSegmentsFromNodes(ent, populatedNodes).ToList(); @@ -139,7 +112,7 @@ public sealed partial class XenoArtifactSystem /// private List> PopulateArtifactSegmentRecursive( Entity ent, - List triggerPool, + TriggerPoolData triggerPoolData, ref int segmentSize, int iteration = 0 ) @@ -162,13 +135,25 @@ public sealed partial class XenoArtifactSystem var nodes = new List>(); for (var i = 0; i < nodeCount; i++) { - var trigger = RobustRandom.PickAndTake(triggerPool); - nodes.Add(CreateNode(ent, trigger, iteration)); + var trigger = _entityTable.GetFirstOrDefault(ent.Comp.TriggersTable, ctx: triggerPoolData.Context); + if (trigger == null) + { + trigger = DummyTrigger; + Log.Error( + "Failed to generate proper artifact - selector {selector} with excepted entities {excepted} " + + "provided zero triggers upon requesting new one", + ent.Comp.TriggersTable, + string.Join(", ", triggerPoolData.UsedTriggers.Select(x => x.Id)) + ); + } + + triggerPoolData.AddTriggerAsUsed(trigger.Value); + nodes.Add(CreateNode(ent, trigger.Value, iteration)); } var successors = PopulateArtifactSegmentRecursive( ent, - triggerPool, + triggerPoolData, ref segmentSize, iteration: iteration + 1 ); @@ -216,4 +201,31 @@ public sealed partial class XenoArtifactSystem return segmentSize; } + + /// + /// Container that represents pool of XenoArtifact triggers. + /// + private sealed class TriggerPoolData + { + private readonly HashSet _usedTriggers; + + public TriggerPoolData(int requestedSize) + { + _usedTriggers = new(requestedSize); + Context = new EntityTableContext(new Dictionary + { + [ExcludeEntitiesFromContextCondition.EntitiesToExclude] = _usedTriggers + }); + } + + public readonly EntityTableContext Context; + + public void AddTriggerAsUsed(EntProtoId trigger) + { + if (!_usedTriggers.Add(trigger)) + throw new ArgumentException(); + } + + public IReadOnlyCollection UsedTriggers => _usedTriggers; + } } diff --git a/Content.Shared/EntityTable/Conditions/ExcludeEntitiesFromContextCondition.cs b/Content.Shared/EntityTable/Conditions/ExcludeEntitiesFromContextCondition.cs index d7bdc9e59b..573293ac7a 100644 --- a/Content.Shared/EntityTable/Conditions/ExcludeEntitiesFromContextCondition.cs +++ b/Content.Shared/EntityTable/Conditions/ExcludeEntitiesFromContextCondition.cs @@ -11,6 +11,7 @@ public sealed partial class ExcludeEntitiesFromContextCondition : EntityTableCon { /// /// Context key used to track which entity prototypes should not be spawned. + /// Value should be . /// public const string EntitiesToExclude = "EntitiesToExclude"; diff --git a/Content.Shared/EntityTable/EntitySelectors/AllSelector.cs b/Content.Shared/EntityTable/EntitySelectors/AllSelector.cs index 66c52155cc..f209ef956f 100644 --- a/Content.Shared/EntityTable/EntitySelectors/AllSelector.cs +++ b/Content.Shared/EntityTable/EntitySelectors/AllSelector.cs @@ -45,4 +45,10 @@ public sealed partial class AllSelector : EntityTableSelectorWithChildrenBase } } } + + /// + public override string ToString() + { + return $"All({string.Join(", ", Children)})"; + } } diff --git a/Content.Shared/EntityTable/EntitySelectors/EntSelector.cs b/Content.Shared/EntityTable/EntitySelectors/EntSelector.cs index bc99f2cf83..4eec6320d2 100644 --- a/Content.Shared/EntityTable/EntitySelectors/EntSelector.cs +++ b/Content.Shared/EntityTable/EntitySelectors/EntSelector.cs @@ -44,4 +44,10 @@ public sealed partial class EntSelector : EntityTableSelector { yield return (Id, Amount.Average()); } + + /// + public override string ToString() + { + return $"{Id} x{Amount.Average()}"; + } } diff --git a/Content.Shared/EntityTable/EntitySelectors/GroupSelector.cs b/Content.Shared/EntityTable/EntitySelectors/GroupSelector.cs index 33cca7bd90..4aa6206095 100644 --- a/Content.Shared/EntityTable/EntitySelectors/GroupSelector.cs +++ b/Content.Shared/EntityTable/EntitySelectors/GroupSelector.cs @@ -65,4 +65,10 @@ public sealed partial class GroupSelector : EntityTableSelectorWithChildrenBase } } } + + /// + public override string ToString() + { + return $"Group({string.Join(", ", Children.Select(x => $"{x}: {x.Weight}"))})"; + } } diff --git a/Content.Shared/EntityTable/EntitySelectors/NestedSelector.cs b/Content.Shared/EntityTable/EntitySelectors/NestedSelector.cs index 1ca91051af..5c1a4952cf 100644 --- a/Content.Shared/EntityTable/EntitySelectors/NestedSelector.cs +++ b/Content.Shared/EntityTable/EntitySelectors/NestedSelector.cs @@ -47,4 +47,10 @@ public sealed partial class NestedSelector : EntityTableSelectorWithNestedBase { return proto.Index(TableId).Table.AverageSpawns(entMan, proto, ctx); } + + /// + public override string ToString() + { + return $"Nested({TableId})"; + } } diff --git a/Content.Shared/EntityTable/EntitySelectors/NoneSelector.cs b/Content.Shared/EntityTable/EntitySelectors/NoneSelector.cs index 72ef181cbe..a24f74c816 100644 --- a/Content.Shared/EntityTable/EntitySelectors/NoneSelector.cs +++ b/Content.Shared/EntityTable/EntitySelectors/NoneSelector.cs @@ -25,4 +25,10 @@ public sealed partial class NoneSelector : EntityTableSelector { yield break; } + + /// + public override string ToString() + { + return "None"; + } } diff --git a/Content.Shared/EntityTable/EntityTableSystem.cs b/Content.Shared/EntityTable/EntityTableSystem.cs index e75748cb66..8241b33359 100644 --- a/Content.Shared/EntityTable/EntityTableSystem.cs +++ b/Content.Shared/EntityTable/EntityTableSystem.cs @@ -1,4 +1,5 @@ using System.Diagnostics.CodeAnalysis; +using System.Linq; using Content.Shared.EntityTable.EntitySelectors; using JetBrains.Annotations; using Robust.Shared.Prototypes; @@ -10,6 +11,30 @@ public sealed partial class EntityTableSystem : EntitySystem { [Dependency] private IRobustRandom _random = default!; + /// + /// Iterates once through Entities that EntitySelector in EntityTableProto provides and picks first one. + /// + public EntProtoId? GetFirstOrDefault( + EntityTablePrototype entTableProto, + IRobustRandom? rand = null, + EntityTableContext? ctx = null + ) + { + return GetSpawns(entTableProto, rand, ctx).FirstOrDefault(); + } + + /// + /// Iterates once through Entities that EntitySelector provides and picks first one. + /// + public EntProtoId? GetFirstOrDefault( + EntityTableSelector? entTableProto, + IRobustRandom? rand = null, + EntityTableContext? ctx = null + ) + { + return GetSpawns(entTableProto, rand, ctx).FirstOrDefault(); + } + /// /// Compiles a random list of entity prototypes using constraints. /// diff --git a/Content.Shared/Toolshed/TypeParsers/XenoArtifact/XenoEffectParser.cs b/Content.Shared/Toolshed/TypeParsers/XenoArtifact/XenoArtifactEffectParser.cs similarity index 88% rename from Content.Shared/Toolshed/TypeParsers/XenoArtifact/XenoEffectParser.cs rename to Content.Shared/Toolshed/TypeParsers/XenoArtifact/XenoArtifactEffectParser.cs index b01747e979..77f67b3e84 100644 --- a/Content.Shared/Toolshed/TypeParsers/XenoArtifact/XenoEffectParser.cs +++ b/Content.Shared/Toolshed/TypeParsers/XenoArtifact/XenoArtifactEffectParser.cs @@ -1,4 +1,3 @@ -using System.Linq; using Robust.Shared.Console; using Robust.Shared.Prototypes; using Robust.Shared.Toolshed; @@ -11,7 +10,7 @@ namespace Content.Shared.Toolshed.TypeParsers.XenoArtifact; /// Custom type parser for toolshed commands /// that lets choose entity prototype of XenoArtifact effect. /// -public sealed partial class XenoEffectParser : CustomCompletionParser> +public sealed partial class XenoArtifactEffectParser : CustomCompletionParser> { private static readonly ProtoId EffectCategoryId = "XenoArtifactEffects"; diff --git a/Content.Shared/Toolshed/TypeParsers/XenoArtifact/XenoArtifactNodeParser.cs b/Content.Shared/Toolshed/TypeParsers/XenoArtifact/XenoArtifactNodeParser.cs index 23266f7a5d..e8f15cb165 100644 --- a/Content.Shared/Toolshed/TypeParsers/XenoArtifact/XenoArtifactNodeParser.cs +++ b/Content.Shared/Toolshed/TypeParsers/XenoArtifact/XenoArtifactNodeParser.cs @@ -31,14 +31,18 @@ public sealed partial class XenoArtifactNodeParser : CustomCompletionParser<(Ent node => { var metadata = _entityManager.GetComponent(node); - var entDescription = Loc.GetString(metadata.EntityDescription); + var effect = Loc.GetString(metadata.EntityDescription); + var trigger = node.Comp.TriggerTip.HasValue + ? Loc.GetString(node.Comp.TriggerTip) + : "Unknown"; return new CompletionOption( node.Owner.ToString(), Loc.GetString( "command-xenoartifact-common-node-hint", ("depth", node.Comp.Depth), ("nodeId", artifact.GetNodeId(node.Owner)), - ("nodeDetail", entDescription) + ("trigger", trigger), + ("effect", effect) ) ); }); diff --git a/Content.Shared/Toolshed/TypeParsers/XenoArtifact/XenoArtifactTriggerParser.cs b/Content.Shared/Toolshed/TypeParsers/XenoArtifact/XenoArtifactTriggerParser.cs new file mode 100644 index 0000000000..1ebae9118c --- /dev/null +++ b/Content.Shared/Toolshed/TypeParsers/XenoArtifact/XenoArtifactTriggerParser.cs @@ -0,0 +1,26 @@ +using Robust.Shared.Console; +using Robust.Shared.Prototypes; +using Robust.Shared.Toolshed; +using Robust.Shared.Toolshed.Syntax; +using Robust.Shared.Toolshed.TypeParsers; + +namespace Content.Shared.Toolshed.TypeParsers.XenoArtifact; + +/// +/// Custom type parser for toolshed commands +/// that lets choose entity prototype of XenoArtifact trigger. +/// +public sealed partial class XenoArtifactTriggerParser : CustomCompletionParser> +{ + private static readonly ProtoId TriggerCategoryId = "XenoArtifactTriggers"; + + [Dependency] private IPrototypeManager _prototype = default!; + + public override CompletionResult TryAutocomplete(ParserContext ctx, CommandArgument? arg) + { + var hint = ToolshedCommand.GetArgHint(arg, typeof(ProtoId)); + var completionOptions = CompletionHelper.EntityPrototypes(ctx.GetWord(), TriggerCategoryId, _prototype); + return CompletionResult.FromHintOptions(completionOptions, hint); + + } +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/Components/XenoArtifactComponent.cs b/Content.Shared/Xenoarchaeology/Artifact/Components/XenoArtifactComponent.cs index 144dccc546..9c87b80a2a 100644 --- a/Content.Shared/Xenoarchaeology/Artifact/Components/XenoArtifactComponent.cs +++ b/Content.Shared/Xenoarchaeology/Artifact/Components/XenoArtifactComponent.cs @@ -2,7 +2,6 @@ using Content.Shared.Actions; using Content.Shared.Actions.Components; using Content.Shared.Destructible.Thresholds; using Content.Shared.EntityTable.EntitySelectors; -using Content.Shared.Xenoarchaeology.Artifact.Prototypes; using Robust.Shared.Audio; using Robust.Shared.Containers; using Robust.Shared.GameStates; @@ -146,7 +145,10 @@ public sealed partial class XenoArtifactComponent : Component /// Triggers that can be used during this artefact generation. /// [DataField] - public ProtoId TriggerWeights = "DefaultTriggers"; + public EntityTableSelector TriggersTable = new NestedSelector + { + TableId = "XenoArtifactTriggerDefaultTable" + }; #endregion /// diff --git a/Content.Shared/Xenoarchaeology/Artifact/Prototypes/XenoArchTriggerPrototype.cs b/Content.Shared/Xenoarchaeology/Artifact/Prototypes/XenoArchTriggerPrototype.cs deleted file mode 100644 index 05a33ea037..0000000000 --- a/Content.Shared/Xenoarchaeology/Artifact/Prototypes/XenoArchTriggerPrototype.cs +++ /dev/null @@ -1,45 +0,0 @@ -using Content.Shared.Random; -using Content.Shared.Whitelist; -using Robust.Shared.Prototypes; - -namespace Content.Shared.Xenoarchaeology.Artifact.Prototypes; - -/// Proto for xeno artifact triggers - markers, which event could trigger node to unlock it. -[Prototype] -public sealed partial class XenoArchTriggerPrototype : IPrototype -{ - /// - [IdDataField] - public string ID { get; private set; } = default!; - - /// - /// Tip for user on how to activate this trigger. - /// - [DataField] - public LocId Tip; - - /// - /// Whitelist, describing for which subtype of artifacts this trigger could be used. - /// - [DataField] - public EntityWhitelist? Whitelist; - - /// - /// List of components that represent ways to trigger node. - /// - [DataField] - public ComponentRegistry Components = new(); -} - -/// -/// Container for list of xeno artifact triggers and their respective weights to be used in case randomly rolling trigger is required. -/// -[Prototype] -public sealed partial class WeightedRandomXenoArchTriggerPrototype : IWeightedRandomPrototype -{ - [IdDataField] - public string ID { get; private set; } = default!; - - [DataField] - public Dictionary, float> Weights { get; private set; } = new(); -} diff --git a/Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.Node.cs b/Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.Node.cs index cf63b0ec84..7a182599e6 100644 --- a/Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.Node.cs +++ b/Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.Node.cs @@ -2,7 +2,6 @@ using System.Linq; using Content.Shared.EntityTable; using Content.Shared.NameIdentifier; using Content.Shared.Xenoarchaeology.Artifact.Components; -using Content.Shared.Xenoarchaeology.Artifact.Prototypes; using Robust.Shared.Prototypes; using Robust.Shared.Utility; @@ -81,7 +80,7 @@ public abstract partial class SharedXenoArtifactSystem /// /// Creates artifact node entity, attaching trigger and marking depth level for future use. /// - public Entity CreateNode(Entity ent, ProtoId trigger, int depth = 0) + public Entity CreateNode(Entity ent, EntProtoId trigger, int depth = 0) { var triggerProto = ProtoMan.Index(trigger); return CreateNode(ent, triggerProto, depth); @@ -90,7 +89,7 @@ public abstract partial class SharedXenoArtifactSystem /// /// Creates artifact node entity, attaching trigger and marking depth level for future use. /// - public Entity CreateNode(Entity ent, XenoArchTriggerPrototype trigger, int depth = 0) + public Entity CreateNode(Entity ent, EntityPrototype trigger, int depth = 0) { var entProtoId = _entityTable.GetSpawns(ent.Comp.EffectsTable) .First(); @@ -100,14 +99,15 @@ public abstract partial class SharedXenoArtifactSystem /// /// Creates artifact node entity, attaching trigger and marking depth level for future use. /// - public Entity CreateNode(Entity ent, EntProtoId effect, XenoArchTriggerPrototype trigger, int depth = 0) + public Entity CreateNode(Entity ent, EntProtoId effect, EntityPrototype trigger, int depth = 0) { AddNode((ent, ent), effect, out var nodeEnt, dirty: false); DebugTools.Assert(nodeEnt.HasValue, "Failed to create node on artifact."); var nodeComponent = nodeEnt.Value.Comp; nodeComponent.Depth = depth; - nodeComponent.TriggerTip = trigger.Tip; + nodeComponent.TriggerTip = trigger.Name; + EntityManager.AddComponents(nodeEnt.Value, trigger.Components); Dirty(nodeEnt.Value); diff --git a/Resources/Locale/en-US/commands/toolshed/xenoartifact-command.ftl b/Resources/Locale/en-US/commands/toolshed/xenoartifact-command.ftl index e65443defd..2aa21f8efd 100644 --- a/Resources/Locale/en-US/commands/toolshed/xenoartifact-command.ftl +++ b/Resources/Locale/en-US/commands/toolshed/xenoartifact-command.ftl @@ -26,4 +26,4 @@ command-spawnartifactwithnode-spawn-artifact-item-hint = use hand-held artifact command-spawnartifactwithnode-spawn-artifact-structure-hint = use structure-like stationary artifact command-spawnartifactwithnode-spawn-artifact-type-hint = -command-xenoartifact-common-node-hint = depth {$depth} node {$nodeId} trigger {$nodeDetail} +command-xenoartifact-common-node-hint = depth {$depth} node {$nodeId} trigger: '{$trigger}', effect: '{$effect}' diff --git a/Resources/Locale/en-US/entity-categories.ftl b/Resources/Locale/en-US/entity-categories.ftl index 3ed481333e..157115ac6d 100644 --- a/Resources/Locale/en-US/entity-categories.ftl +++ b/Resources/Locale/en-US/entity-categories.ftl @@ -6,5 +6,6 @@ entity-category-name-mapping = Mapping entity-category-name-donotmap = Do not map entity-category-name-status-effects = Status Effects entity-category-name-xeno-artifact-effects = Xeno Artifact Effects +entity-category-name-xeno-artifact-triggers = Xeno Artifact triggers entity-category-suffix-donotmap = DO NOT MAP diff --git a/Resources/Locale/en-US/xenoarchaeology/artifact-hints.ftl b/Resources/Locale/en-US/xenoarchaeology/artifact-hints.ftl index bfffcde8cb..bc9df24f4d 100644 --- a/Resources/Locale/en-US/xenoarchaeology/artifact-hints.ftl +++ b/Resources/Locale/en-US/xenoarchaeology/artifact-hints.ftl @@ -22,65 +22,6 @@ artifact-effect-hint-polymorph = Transmogrificational activity artifact-effect-hint-magnet = Magnetic waves artifact-effect-hint-visual = Visual distortions -# the triggers should be more obvious than the effects -# gives people an idea of what to do: don't be too specific (i.e. no "welders") - -artifact-trigger-hint-electricity = Electricity -artifact-trigger-hint-heat = High temperatures -artifact-trigger-hint-physical = Physical trauma -artifact-trigger-hint-tool = Tool usage -artifact-trigger-hint-music = Sonic vibrations -artifact-trigger-hint-water = Hydro-reactive -artifact-trigger-hint-blood = Reaction with hematological fluid -artifact-trigger-hint-magnet = Magnetic waves -artifact-trigger-hint-death = Life essence -artifact-trigger-hint-radiation = Radiation -artifact-trigger-hint-pressure = Extreme pressure -artifact-trigger-hint-regular-gases = Standard atmospheric gases -artifact-trigger-hint-plasma = Gaseous plasma -artifact-trigger-hint-land = Active deceleration -artifact-trigger-hint-examine = Examination -artifact-trigger-hint-medical = Therapeutic chemicals - -xenoarch-trigger-tip-music = Harmonical sound vibrations -xenoarch-trigger-tip-heat = High temperature gas -xenoarch-trigger-tip-cold = Low temperature gas -xenoarch-trigger-tip-no-oxygen = Oxygen-free environment -xenoarch-trigger-tip-water = Water -xenoarch-trigger-tip-co2 = Carbon dioxide -xenoarch-trigger-tip-plasma = Non-solid plasma -xenoarch-trigger-tip-tritium = Tritium -xenoarch-trigger-tip-ammonia = Ammonia -xenoarch-trigger-tip-n2o = Nitrous oxide -xenoarch-trigger-tip-frezon = Frezon -xenoarch-trigger-tip-radiation = Heavy-ion radiation -xenoarch-trigger-tip-microwave = Microwave radiation -xenoarch-trigger-tip-brute-damage = Physical damage -xenoarch-trigger-tip-interaction = Physical interaction -xenoarch-trigger-tip-wrenching = Tightening -xenoarch-trigger-tip-prying = Prying -xenoarch-trigger-tip-screwing = Screwing -xenoarch-trigger-tip-pulsing = Pulsing -xenoarch-trigger-tip-pressure-low = Low pressure -xenoarch-trigger-tip-pressure-high = High pressure -xenoarch-trigger-tip-examine = Close inspection -xenoarch-trigger-tip-timer = Regular self-activation -xenoarch-trigger-tip-blood = Blood -xenoarch-trigger-tip-throw = Being thrown -xenoarch-trigger-tip-death = Death -xenoarch-trigger-tip-magnet = Magnetic waves -xenoarch-trigger-tip-money = Bribery -xenoarch-trigger-tip-knowledge = Knowledge Intake -xenoarch-trigger-tip-carbs = Carbohydrate Intake -xenoarch-trigger-tip-meat = Protein Intake -xenoarch-trigger-tip-produce = Healthy Produce Intake -xenoarch-trigger-tip-stamp = Bureaucratic Approval -xenoarch-trigger-tip-shock = Electrical Shock -xenoarch-trigger-tip-particle = Singularity-Effecting Particles -xenoarch-trigger-tip-anomparticle = Anomaly-Effecting Particles -xenoarch-trigger-tip-stamina-damage = Organic Exhaustion -xenoarch-trigger-tip-laser = High-Intensity photon impacts - ### Description hints xenoarch-trigger-examine-wrenching = There's a loose bit spinning around. xenoarch-trigger-examine-prying = There's a panel coming up from the surface. diff --git a/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/item_xenoartifacts.yml b/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/item_xenoartifacts.yml index ea6a16482c..446dc3302f 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/item_xenoartifacts.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/item_xenoartifacts.yml @@ -52,6 +52,8 @@ graph: Artifact node: done - type: XenoArtifact + triggersTable: !type:NestedSelector + tableId: XenoArtifactHandheldOnlyTriggerTable effectsTable: !type:GroupSelector children: - !type:NestedSelector diff --git a/Resources/Prototypes/Entities/categories.yml b/Resources/Prototypes/Entities/categories.yml index 4fb30f9ef0..e2928e2185 100644 --- a/Resources/Prototypes/Entities/categories.yml +++ b/Resources/Prototypes/Entities/categories.yml @@ -37,3 +37,8 @@ id: XenoArtifactEffects name: entity-category-name-xeno-artifact-effects hideSpawnMenu: true + +- type: entityCategory + id: XenoArtifactTriggers + name: entity-category-name-xeno-artifact-triggers + hideSpawnMenu: true diff --git a/Resources/Prototypes/XenoArch/triggers.yml b/Resources/Prototypes/XenoArch/triggers.yml index 75fcbba673..7cc71669dd 100644 --- a/Resources/Prototypes/XenoArch/triggers.yml +++ b/Resources/Prototypes/XenoArch/triggers.yml @@ -1,55 +1,100 @@ -- type: weightedRandomXenoArchTrigger - id: DefaultTriggers - weights: - TriggerMusic: 1 - TriggerHeat: 1 - TriggerCold: 0.5 - TriggerNoOxygen: 1 - TriggerWater: 1 - TriggerCO2: 0.5 - TriggerPlasma: 0.5 - TriggerN2O: 0.5 - TriggerTritium: 0.1 - TriggerAmmonia: 0.1 - TriggerFrezon: 0.1 - TriggerRadiation: 1 - TriggerPressureHigh: 0.5 - TriggerPressureLow: 1 - TriggerExamine: 1 - TriggerBruteDamage: 1 - #TriggerInteraction: 1 #this one interferes with activating artifact AND brute dmg! - TriggerWrenching: 0.5 - TriggerPrying: 0.5 - TriggerScrewing: 0.5 - TriggerPulsing: 0.5 - TriggerTimer: 0.25 - TriggerBlood: 1 - TriggerThrow: 1 - TriggerDeath: 1 - TriggerMagnet: 1 - TriggerConsumeMoney: 1 - TriggerConsumeKnowledge: 0.25 - TriggerConsumeCarbs: 1 - TriggerConsumeMeat: 0.5 - TriggerConsumeProduce: 0.5 - TriggerInteractStamp: 1 - TriggerInteractShock: 1 - TriggerAttackParticleEngine: 0.1 - TriggerAttackParticleAnomaly: 1 - TriggerAttackStaminaDamage: 1 - TriggerAttackLaser: 0.5 +- type: entityTable + id: XenoArtifactTriggerDefaultTable + table: !type:GroupSelector + conditionsForChildren: + - !type:ExcludeEntitiesFromContextCondition + children: + - id: TriggerMusic + - id: TriggerHeat + - id: TriggerCold + weight: 0.5 + - id: TriggerNoOxygen + - id: TriggerWater + - id: TriggerCO2 + weight: 0.5 + - id: TriggerPlasma + weight: 0.5 + - id: TriggerN2O + weight: 0.5 + - id: TriggerTritium + weight: 0.1 + - id: TriggerAmmonia + weight: 0.1 + - id: TriggerFrezon + weight: 0.1 + - id: TriggerRadiation + - id: TriggerPressureHigh + weight: 0.5 + - id: TriggerPressureLow + - id: TriggerExamine + - id: TriggerBruteDamage + #- id: TriggerInteraction #this one interferes with activating artifact AND brute dmg! + - id: TriggerWrenching + weight: 0.5 + - id: TriggerPrying + weight: 0.5 + - id: TriggerScrewing + weight: 0.5 + - id: TriggerPulsing + weight: 0.5 + - id: TriggerTimer + weight: 0.25 + - id: TriggerBlood + - id: TriggerDeath + - id: TriggerMagnet + - id: TriggerConsumeMoney + - id: TriggerConsumeKnowledge + weight: 0.25 + - id: TriggerConsumeCarbs + - id: TriggerConsumeMeat + weight: 0.5 + - id: TriggerConsumeProduce + weight: 0.5 + - id: TriggerInteractStamp + - id: TriggerInteractShock + - id: TriggerAttackParticleAnomaly + - id: TriggerAttackStaminaDamage + - id: TriggerAttackLaser + weight: 0.5 + - id: TriggerAttackParticleEngine + weight: 0.1 -- type: xenoArchTrigger +- type: entityTable + id: XenoArtifactHandheldOnlyTriggerTable + table: !type:GroupSelector + conditionsForChildren: + - !type:ExcludeEntitiesFromContextCondition + children: + - !type:NestedSelector + tableId: XenoArtifactTriggerDefaultTable + weight: 35 + - !type:GroupSelector # Handheld exclusive + weight: 2 + children: + - id: TriggerThrow + - id: TriggerMicrowave + +- type: entity + abstract: true + id: BaseXenoArtifactTrigger + name: Unknown + categories: [XenoArtifactTriggers] + +#region Standard triggers + +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerMusic - tip: xenoarch-trigger-tip-music + name: Harmonical sound vibrations components: - type: XATCompNearby requireComponentWithName: ActiveInstrument radius: 2 -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerHeat - tip: xenoarch-trigger-tip-heat + name: High temperature gas components: - type: XATTemperature targetTemperature: 373 @@ -57,15 +102,16 @@ - type: XATDamageThresholdReached typesNeeded: Heat: 20 -# This kinda trivializes the difficulty. -# - type: XATToolUse -# requiredTool: Welding -# delay: 5 -# fuel: 10 + # This kinda trivializes the difficulty. + # - type: XATToolUse + # requiredTool: Welding + # delay: 5 + # fuel: 10 -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerCold - tip: xenoarch-trigger-tip-cold + name: Low temperature gas components: - type: XATTemperature targetTemperature: 255 @@ -74,18 +120,20 @@ typesNeeded: Cold: 20 -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerNoOxygen - tip: xenoarch-trigger-tip-no-oxygen + name: Oxygen-free environment components: - type: XATGas targetGas: Oxygen moles: 10 shouldBePresent: false -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerWater - tip: xenoarch-trigger-tip-water + name: Water components: - type: XATGas targetGas: WaterVapor @@ -93,9 +141,10 @@ reagents: - Water -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerCO2 - tip: xenoarch-trigger-tip-co2 + name: Carbon dioxide components: - type: XATGas targetGas: CarbonDioxide @@ -103,9 +152,10 @@ reagents: - CarbonDioxide -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerPlasma - tip: xenoarch-trigger-tip-plasma + name: Non-solid plasma components: - type: XATGas targetGas: Plasma @@ -113,9 +163,10 @@ reagents: - Plasma -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerTritium - tip: xenoarch-trigger-tip-tritium + name: Tritium components: - type: XATGas targetGas: Tritium @@ -123,9 +174,10 @@ reagents: - Tritium -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerAmmonia - tip: xenoarch-trigger-tip-ammonia + name: Ammonia components: - type: XATGas targetGas: Ammonia @@ -133,9 +185,10 @@ reagents: - Ammonia -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerN2O - tip: xenoarch-trigger-tip-n2o + name: Nitrous oxide components: - type: XATGas targetGas: NitrousOxide @@ -143,9 +196,10 @@ reagents: - NitrousOxide -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerFrezon - tip: xenoarch-trigger-tip-frezon + name: Frezon components: - type: XATGas targetGas: Frezon @@ -153,105 +207,108 @@ reagents: - Frezon -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerRadiation - tip: xenoarch-trigger-tip-radiation + name: Heavy-ion radiation components: - type: XATDamageThresholdReached typesNeeded: Radiation: 20 -- type: xenoArchTrigger - id: TriggerMicrowave - tip: xenoarch-trigger-tip-microwave - whitelist: - components: - - Item - components: - - type: XATMicrowave - -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerPressureHigh - tip: xenoarch-trigger-tip-pressure-high + name: High pressure components: - type: XATPressure maxPressureThreshold: 385 -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerPressureLow - tip: xenoarch-trigger-tip-pressure-low + name: Low pressure components: - type: XATPressure minPressureThreshold: 50 -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerExamine - tip: xenoarch-trigger-tip-examine + name: Close inspection components: - type: XATExamine -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerBruteDamage - tip: xenoarch-trigger-tip-brute-damage + name: Physical damage components: - type: XATDamageThresholdReached groupsNeeded: Brute: 20 -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerInteraction - tip: xenoarch-trigger-tip-interaction + name: Physical interaction components: - type: XATInteraction -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerWrenching - tip: xenoarch-trigger-tip-wrenching + name: Tightening components: - type: XATToolUse requiredTool: Anchoring - type: XATExaminableText examineText: xenoarch-trigger-examine-wrenching -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerPrying - tip: xenoarch-trigger-tip-prying + name: Prying components: - type: XATToolUse requiredTool: Prying - type: XATExaminableText examineText: xenoarch-trigger-examine-prying -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerScrewing - tip: xenoarch-trigger-tip-screwing + name: Screwing components: - type: XATToolUse requiredTool: Screwing - type: XATExaminableText examineText: xenoarch-trigger-examine-screwing -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerPulsing - tip: xenoarch-trigger-tip-pulsing + name: Pulsing components: - type: XATToolUse requiredTool: Pulsing - type: XATExaminableText examineText: xenoarch-trigger-examine-pulsing -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerTimer - tip: xenoarch-trigger-tip-timer + name: Regular self-activation components: - type: XATTimer possibleDelayInSeconds: min: 80 max: 120 -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerBlood - tip: xenoarch-trigger-tip-blood + name: Blood components: - type: XATReactive reagents: @@ -264,30 +321,24 @@ - Sap - SulfurBlood -- type: xenoArchTrigger - id: TriggerThrow - tip: xenoarch-trigger-tip-throw - whitelist: - components: - - Item - components: - - type: XATItemLand - -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerDeath - tip: xenoarch-trigger-tip-death + name: Death components: - type: XATDeath -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerMagnet - tip: xenoarch-trigger-tip-magnet + name: Magnetic waves components: - type: XATMagnet -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerConsumeMoney - tip: xenoarch-trigger-tip-money + name: Bribery components: - type: XATInteractWith interactionCount: @@ -300,9 +351,10 @@ components: - Cash -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerConsumeKnowledge - tip: xenoarch-trigger-tip-knowledge + name: Knowledge intake components: - type: XATInteractWith destroyAfter: true @@ -314,9 +366,10 @@ tags: - Book -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerConsumeCarbs - tip: xenoarch-trigger-tip-carbs + name: Carbohydrate intake components: - type: XATInteractWith destroyAfter: true @@ -334,9 +387,10 @@ - Pie - Pizza -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerConsumeMeat - tip: xenoarch-trigger-tip-meat + name: Protein intake components: - type: XATInteractWith destroyAfter: true @@ -353,9 +407,10 @@ - Protein - UncookedAnimalProteins -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerConsumeProduce - tip: xenoarch-trigger-tip-produce + name: Healthy produce intake components: - type: XATInteractWith destroyAfter: true @@ -372,9 +427,10 @@ - Ambrosia - Mushroom -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerInteractStamp - tip: xenoarch-trigger-tip-stamp + name: Bureaucratic approval components: - type: XATInteractWith interactionTime: 0.5 @@ -387,43 +443,48 @@ components: - Stamp -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerInteractShock - tip: xenoarch-trigger-tip-shock + name: Electrical shock components: - type: XATShock - type: XATDamageThresholdReached typesNeeded: Shock: 5 -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerAttackParticleEngine - tip: xenoarch-trigger-tip-particle + name: Singularity-Effecting particles components: - type: XATInteractAttack whitelist: components: - ParticleProjectile -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerAttackParticleAnomaly - tip: xenoarch-trigger-tip-anomparticle + name: Anomaly-Effecting particles components: - type: XATInteractAttack whitelist: components: - AnomalousParticle -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerAttackStaminaDamage - tip: xenoarch-trigger-tip-stamina-damage + name: Organic exhaustion components: - type: XATStaminaDamageThresholdReached damageNeeded: 8 # half a practice disabler capacity -- type: xenoArchTrigger +- type: entity + parent: BaseXenoArtifactTrigger id: TriggerAttackLaser - tip: xenoarch-trigger-tip-laser + name: High-Intensity photon impacts components: - type: XATInteractAttack interactionCount: @@ -433,3 +494,22 @@ - LaserProjectile tags: - EmitterBolt + +#endregion +#region Handheld triggers + +- type: entity + parent: BaseXenoArtifactTrigger + id: TriggerMicrowave + name: Microwave radiation + components: + - type: XATMicrowave + +- type: entity + parent: BaseXenoArtifactTrigger + id: TriggerThrow + name: Being thrown + components: + - type: XATItemLand + +#endregion From 9dc54a672970b570b3c0377f03f15edecd567e23 Mon Sep 17 00:00:00 2001 From: Fildrance Date: Tue, 1 Sep 2026 08:26:13 +0000 Subject: [PATCH 034/197] refactor: fix publish-testing (#45774) --- .github/workflows/publish-testing.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/publish-testing.yml b/.github/workflows/publish-testing.yml index a8c1f45cfd..57e5a4f1b5 100644 --- a/.github/workflows/publish-testing.yml +++ b/.github/workflows/publish-testing.yml @@ -17,6 +17,8 @@ jobs: - uses: actions/checkout@v7 with: submodules: 'recursive' + fetch-depth: 0 + filter: blob:none - name: Setup .NET Core uses: actions/setup-dotnet@v5 with: From eea9b64c253301a2e5570a99aa2f0a57ec1a44b2 Mon Sep 17 00:00:00 2001 From: KeTuFaisPiKiNut <85769816+ketufaispikinut@users.noreply.github.com> Date: Tue, 1 Sep 2026 15:21:45 +0000 Subject: [PATCH 035/197] Midround Changelings (#45681) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * i fucked up * balance aaaa * shitcode!!!! * CLING HELLLLLLLL * panic * actually make them spawn * balance, micro kind * revert round end agent name * fix a * the prototyping * Update Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> * le sharedification * no talking, meteor! * fix scar's comments * clean * more clean * Update ghost-role-component.ftl Added the frail thing * Update Content.Shared/Station/FlingTowardStationSystem.cs Co-authored-by: phönix * Update Content.Shared/Station/Components/FlingTowardStationComponent.cs Co-authored-by: phönix * Apply suggestion from @ScarKy0 --------- Co-authored-by: nomdéraisonnablementlong Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Co-authored-by: ScarKy0 Co-authored-by: phönix --- .../Components/FlingTowardStationComponent.cs | 17 + .../Station/FlingTowardStationSystem.cs | 43 ++ .../game-presets/preset-changeling.ftl | 6 + .../ghost/roles/ghost-role-component.ftl | 3 + .../interaction-popup-component.ftl | 4 + Resources/Prototypes/Actions/changeling.yml | 4 +- .../Entities/Markers/Spawners/ghost_roles.yml | 20 + .../Entities/Mobs/Player/changeling.yml | 108 +++- Resources/Prototypes/GameRules/events.yml | 34 + Resources/Prototypes/Polymorphs/polymorph.yml | 9 + .../Prototypes/Roles/Antags/changeling.yml | 79 ++- .../Mobs/Animals/headslug.rsi/meta.json | 10 + .../Mobs/Animals/headslug.rsi/shell.png | Bin 0 -> 552 bytes .../Mobs/Animals/headslug.rsi/slug_elder.png | Bin 0 -> 1097 bytes .../Animals/headslug.rsi/slug_elder_dead.png | Bin 0 -> 439 bytes .../Objects/Misc/meteor.rsi/meta.json | 610 +++++++++--------- 16 files changed, 615 insertions(+), 332 deletions(-) create mode 100644 Content.Shared/Station/Components/FlingTowardStationComponent.cs create mode 100644 Content.Shared/Station/FlingTowardStationSystem.cs create mode 100644 Resources/Textures/Mobs/Animals/headslug.rsi/shell.png create mode 100644 Resources/Textures/Mobs/Animals/headslug.rsi/slug_elder.png create mode 100644 Resources/Textures/Mobs/Animals/headslug.rsi/slug_elder_dead.png diff --git a/Content.Shared/Station/Components/FlingTowardStationComponent.cs b/Content.Shared/Station/Components/FlingTowardStationComponent.cs new file mode 100644 index 0000000000..1f14569785 --- /dev/null +++ b/Content.Shared/Station/Components/FlingTowardStationComponent.cs @@ -0,0 +1,17 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Station.Components; + +/// +/// Entities with this component get flung toward the station on MapInit. +/// +[RegisterComponent, NetworkedComponent] +[Access(typeof(FlingTowardStationSystem))] +public sealed partial class FlingTowardStationComponent : Component +{ + /// + /// Speed at which you are thrown toward the station. + /// + [DataField] + public float Speed = 10f; +} diff --git a/Content.Shared/Station/FlingTowardStationSystem.cs b/Content.Shared/Station/FlingTowardStationSystem.cs new file mode 100644 index 0000000000..08863b848f --- /dev/null +++ b/Content.Shared/Station/FlingTowardStationSystem.cs @@ -0,0 +1,43 @@ +using Content.Shared.Station.Components; +using Robust.Shared.Physics.Systems; +using Robust.Shared.Random; +using Robust.Shared.Physics.Components; +using Content.Shared.Random.Helpers; +using Robust.Shared.Timing; + +namespace Content.Shared.Station; + +public sealed partial class FlingTowardStationSystem : EntitySystem +{ + [Dependency] private SharedPhysicsSystem _physics = default!; + [Dependency] private SharedStationSystem _station = default!; + [Dependency] private SharedTransformSystem _transform = default!; + [Dependency] private IGameTiming _timing = default!; + + [SubscribeLocalEvent] + private void OnMapInit(Entity ent, ref MapInitEvent args) + { + if (_station.GetStations().Count == 0) + return; + + // fetch the station's grid + var random = SharedRandomExtensions.PredictedRandom(_timing, GetNetEntity(ent.Owner)); + var station = random.Pick(_station.GetStations()); + var grid = _station.GetLargestGrid(station); + if (grid == null) + return; + + var stationPosition = _transform.GetMapCoordinates(grid.Value); + var entPosition = _transform.GetMapCoordinates(ent.Owner); + if (!TryComp(grid.Value, out var gridPhys)) + return; + + // calculate the offset from the center of mass of the station to the body + var offset = entPosition.Position - _transform.GetWorldRotation(grid.Value).RotateVec(gridPhys.LocalCenter) - stationPosition.Position; + + if (!TryComp(ent.Owner, out var physics)) + return; + + _physics.ApplyLinearImpulse(ent.Owner, -offset.Normalized() * ent.Comp.Speed * physics.Mass, body: physics); + } +} diff --git a/Resources/Locale/en-US/game-ticking/game-presets/preset-changeling.ftl b/Resources/Locale/en-US/game-ticking/game-presets/preset-changeling.ftl index 46a0a30d5d..911523fd50 100644 --- a/Resources/Locale/en-US/game-ticking/game-presets/preset-changeling.ftl +++ b/Resources/Locale/en-US/game-ticking/game-presets/preset-changeling.ftl @@ -11,3 +11,9 @@ changeling-briefing = objective-issuer-changeling = [color=#FA2A55]The Hivemind[/color] changeling-round-end-agent-name = changeling + +space-changeling-role-greeting = + You are a changeling, a highly intelligent predator. + After drifting frozen in space for decades, you find yourself near a space station filled to the brim with juicy crew members. + You are hungry and will not make it long without sustenance... + Kill. Consume. Hide. Survive. diff --git a/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl b/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl index 30d97a2889..35cf7b782e 100644 --- a/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl +++ b/Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl @@ -350,3 +350,6 @@ ghost-role-information-wizard-desc = YER A WIZARD! Show the station what your ma ghost-role-information-emotional-support-scurret-name = Emotional Support Scurret ghost-role-information-emotional-support-scurret-description = Support the crew, be adorable, say "wa" a lot. + +ghost-role-information-space-changeling-name = Elder Headslug +ghost-role-information-space-changeling-description = An adult changeling headslug, eager to assimilate crew members and ready to hide within the station. This headslug is especially frail and needs to find a dead body to assume a humanoid appearance. diff --git a/Resources/Locale/en-US/interaction/interaction-popup-component.ftl b/Resources/Locale/en-US/interaction/interaction-popup-component.ftl index 41114e5833..2f951ffb13 100644 --- a/Resources/Locale/en-US/interaction/interaction-popup-component.ftl +++ b/Resources/Locale/en-US/interaction/interaction-popup-component.ftl @@ -34,6 +34,8 @@ petting-success-snake = You pet {THE($target)} on {POSS-ADJ($target)} scaly larg petting-success-monkey = You pet {THE($target)} on {POSS-ADJ($target)} mischevious little head. petting-success-nymph = You pet {THE($target)} on {POSS-ADJ($target)} wooden little head. petting-success-scurret = You pet {THE($target)} on {POSS-ADJ($target)} legally distinct head. +petting-success-headslug = You pet {THE($target)} on {POSS-ADJ($target)} oozy surface. +petting-success-elder-headslug = You pet {THE($target)} {POSS-ADJ($target)} pulsating skin. petting-failure-generic = You reach out to pet {THE($target)}, but {SUBJECT($target)} {CONJUGATE-BE($target)} aloof towards you. @@ -57,6 +59,8 @@ petting-failure-monkey = You reach out to pet {THE($target)}, but {SUBJECT($targ petting-failure-nymph = You reach out to pet {THE($target)}, but {SUBJECT($target)} {CONJUGATE-BASIC($target, "move", "moves")} {POSS-ADJ($target)} branches away. petting-failure-shadow = You try to pet {THE($target)}, but your hand passes through the cold darkness of {POSS-ADJ($target)} body. petting-failure-scurret = You reach out to pet {THE($target)}, but {SUBJECT($target)} does a backflip! +petting-failure-headslug = You try to pet {THE($target)}, but your hand sinks in {POSS-ADJ($target)} flesh. +petting-failure-elder-headslug = You try to pet {THE($target)}, but {SUBJECT($target)} almost bites you! ## Petting silicons diff --git a/Resources/Prototypes/Actions/changeling.yml b/Resources/Prototypes/Actions/changeling.yml index 18b24e141e..738ddeac69 100644 --- a/Resources/Prototypes/Actions/changeling.yml +++ b/Resources/Prototypes/Actions/changeling.yml @@ -111,9 +111,9 @@ id: ActionChangelingStasisWeak components: - type: RegenerativeStasisAction - bonusCooldownPerDamage: 1.2 # 50 damage should bring you to 120 + bonusCooldownPerDamage: 2.4 # 50 damage should bring you to 180 minStasisCooldown: 60 - maxStasisCooldown: 120 + maxStasisCooldown: 180 - type: entity parent: ActionIntrinsicStore diff --git a/Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml b/Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml index 1ac053f872..969a240067 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml @@ -195,6 +195,26 @@ - sprite: Objects/Weapons/Melee/energykatana.rsi state: icon +- type: entity + categories: [ HideSpawnMenu, Spawner ] + parent: BaseAntagSpawner + id: SpawnPointGhostSpaceChangeling + components: + - type: GhostRole + name: ghost-role-information-space-changeling-name + description: ghost-role-information-space-changeling-description + rules: ghost-role-information-antagonist-rules + mindRoles: + - MindRoleChangeling + raffle: + settings: default + - type: Sprite + sprite: Markers/jobs.rsi + layers: + - state: green + - sprite: Objects/Weapons/Melee/armblade.rsi + state: icon + - type: entity categories: [ HideSpawnMenu, Spawner ] parent: BaseAntagSpawner diff --git a/Resources/Prototypes/Entities/Mobs/Player/changeling.yml b/Resources/Prototypes/Entities/Mobs/Player/changeling.yml index 5f2c5d5a2b..013852bb50 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/changeling.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/changeling.yml @@ -28,14 +28,11 @@ - type: entity parent: - - MobRespirator - - MobAtmosStandard - SimpleSpaceMobBase - MobNightVision - BaseMobDestructible - id: MobHeadSlug - name: headslug - description: A small, slug-like creature with a large, gaping maw. It's covered in a thick, slimy mucus. + id: MobHeadSlugBase + abstract: true components: - type: Fixtures fixtures: @@ -48,6 +45,38 @@ - SmallMobMask layer: - SmallMobLayer + - type: Deathgasp + - type: MobStateActions + actions: + Critical: + - ActionCritSuccumb + - ActionCritFakeDeath + - ActionCritLastWords + - type: ReplacementAccent + accent: genericAggressive + - type: MovementSpeedModifier # Slightly faster than regular mobs + baseWalkSpeed: 3 + baseSprintSpeed: 5 + - type: ChangelingSlug + - type: Speech # need these speech comps because it isnt targeted by MakeSentient. + speechVerb: LargeMob + - type: Emoting + - type: ActionGrant + actions: + - ActionChangelingStasisWeak + - type: Tag # Removes DoorBumpOpener + tags: + [ ] + +- type: entity + parent: + - MobHeadSlugBase + - MobRespirator + - MobAtmosStandard + id: MobHeadSlug + name: headslug + description: A small, slug-like creature with a large, gaping maw. It's covered in a thick, slimy mucus. + components: - type: Sprite drawdepth: SmallMobs layers: @@ -62,13 +91,6 @@ Base: slug_dead Dead: Base: slug_dead - - type: Deathgasp - - type: MobStateActions - actions: - Critical: - - ActionCritSuccumb - - ActionCritFakeDeath - - ActionCritLastWords - type: MobThresholds thresholds: 0: Alive @@ -85,24 +107,62 @@ damage: types: Blunt: 0.1 - - type: MovementSpeedModifier # Slightly faster than regular mobs - baseWalkSpeed: 3 - baseSprintSpeed: 5 - type: MeleeWeapon altDisarm: false damage: types: Blunt: 5 Structural: 15 # to destroy lockers in which bodies could be hidden - - type: ChangelingSlug - - type: ActionGrant - actions: - - ActionChangelingStasisWeak - - type: ReplacementAccent - accent: genericAggressive - - type: Tag # Removes DoorBumpOpener - tags: - [] + - type: InteractionPopup + successChance: 0.2 + interactSuccessString: petting-success-headslug + interactFailureString: petting-failure-headslug + interactSuccessSpawn: EffectHearts + interactSuccessSound: + path: /Audio/Effects/Fluids/blood1.ogg + +- type: entity + parent: + - MobHeadSlugBase + - FlyingMobBase # its space faring because it spawns from space + id: MobHeadSlugElder + name: elder headslug + description: After living a few years, headslugs develop into this state and gain space faring abilities as a part of the changeling's reproduction cycle. + components: + - type: Sprite + drawdepth: SmallMobs + layers: + - map: ["enum.DamageStateVisualLayers.Base"] + state: slug_elder + sprite: Mobs/Animals/headslug.rsi + - type: DamageStateVisuals + states: + Alive: + Base: slug_elder + Critical: + Base: slug_elder_dead + Dead: + Base: slug_elder_dead + - type: ExplosionResistance # since it spawns in a bang + damageCoefficient: 0.1 + - type: MobThresholds + thresholds: + 0: Alive + 50: Critical + 75: Dead + - type: MeleeWeapon + altDisarm: false + damage: + types: + Blunt: 10 + Structural: 25 # to destroy lockers in which bodies could be hidden + - type: InteractionPopup + successChance: 0.01 + interactSuccessString: petting-success-elder-headslug + interactFailureString: petting-failure-elder-headslug + interactSuccessSpawn: EffectHearts + interactSuccessSound: + path: /Audio/Animals/cat_meow.ogg # meow - type: entity # dummy prototype for the store listing id: ChangelingFleshClothingAbilityStoreDummy diff --git a/Resources/Prototypes/GameRules/events.yml b/Resources/Prototypes/GameRules/events.yml index 1dadd38fea..4df76d5cc5 100644 --- a/Resources/Prototypes/GameRules/events.yml +++ b/Resources/Prototypes/GameRules/events.yml @@ -45,6 +45,7 @@ - id: ZombieOutbreak - id: LoneOpsSpawn - id: WizardSpawn + - id: SpaceChangelingSpawn - !type:NestedSelector tableId: DerelictBorgEventTable @@ -224,6 +225,39 @@ - type: DynamicRuleCost cost: 75 +- type: entity + parent: BaseAntagGhostRoleRule + id: SpaceChangelingSpawn + components: + - type: StationEvent + weight: 6 + earliestStart: 20 # can start early since lings need time to start doing stuff + reoccurrenceDelay: 40 + minimumPlayers: 20 + duration: null + occursDuringRoundEnd: false + - type: SpaceSpawnRule + spawnDistance: 80 + - type: AntagSpawner + prototype: MobHeadSlugElder + - type: ChangelingRule + - type: AntagRandomObjectives + sets: + - groups: ChangelingObjectiveGroupDevourDummy + maxPicks: 1 + - groups: ChangelingObjectiveGroupEscapeDummy + maxPicks: 1 + - groups: ChangelingObjectiveGroupKillDummy + maxPicks: 1 + maxDifficulty: 8 + - type: AntagSelection + agentName: changeling-round-end-agent-name + antags: + - !type:FixedAntagCount + proto: SpaceChangeling + - type: DynamicRuleCost + cost: 75 + - type: entity parent: BaseAntagGhostRoleRule id: NinjaSpawn diff --git a/Resources/Prototypes/Polymorphs/polymorph.yml b/Resources/Prototypes/Polymorphs/polymorph.yml index 9cc97effc5..eb3b1523d7 100644 --- a/Resources/Prototypes/Polymorphs/polymorph.yml +++ b/Resources/Prototypes/Polymorphs/polymorph.yml @@ -237,3 +237,12 @@ exitPolymorphSound: /Audio/Magic/ethereal_exit.ogg duration: 120 effectProto: EffectDesynchronizer + +# Changeling Meteor +- type: polymorph + id: ChangelingMeteor + configuration: + entity: ChangelingMeteor + forced: true + polymorphPopup: null + exitPolymorphPopup: null diff --git a/Resources/Prototypes/Roles/Antags/changeling.yml b/Resources/Prototypes/Roles/Antags/changeling.yml index 677761c0de..698cc233a2 100644 --- a/Resources/Prototypes/Roles/Antags/changeling.yml +++ b/Resources/Prototypes/Roles/Antags/changeling.yml @@ -1,4 +1,4 @@ -- type: antag +- type: antag id: Changeling name: roles-antag-changeling-name antagonist: true @@ -53,3 +53,80 @@ inputValidation: false mindRoles: - MindRoleChangeling + +# for the mid round space-spawned changeling +- type: antagSpecifier + parent: RestrictedAntag + id: SpaceChangeling + spawnerPrototype: SpawnPointGhostSpaceChangeling + pickPlayer: false + briefing: + text: space-changeling-role-greeting + color: Red + sound: /Audio/Ambience/Antag/changeling_start.ogg + mindRoles: + - MindRoleChangeling + components: + # meteor! + - type: PolymorphOnTrigger + polymorph: ChangelingMeteor + keysIn: + - poly + - type: TriggerOnSpawn + keyOut: poly + +- type: entity + name: strange meteor + description: This meteor looks more akin to a fossile than to an aggregate of minerals. + id: ChangelingMeteor + parent: + - BaseMeteor + - MobNightVision # dont think too hard about it not being a mob + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: Mobs/Animals/headslug.rsi + state: shell + noRot: true + - type: FlingTowardStation + speed: 15 + - type: Solution + solution: + reagents: + - ReagentId: Blood + Quantity: 240 + - ReagentId: LivingTissue + Quantity: 20 + - type: Meteor + damageTypes: + types: + Blunt: 1 + Structural: 5 + - type: Explosive # very weak explosion for visuals + explosionType: DemolitionCharge + totalIntensity: 3 + intensitySlope: 1 + tileBreakScale: 0 + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 1 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:PlaySoundBehavior + sound: + collection: MetalBreak + - !type:ExplodeBehavior + - !type:SpillBehavior + solution: solution + - !type:SpawnEntitiesBehavior + spawn: + FoodMeatHuman: + min: 1 + max: 2 + - type: ReplacementAccent # RAWR!!!!! (This is because polymorph calls makesentient...) + accent: genericAggressive + - type: Speech + speechVerb: LargeMob diff --git a/Resources/Textures/Mobs/Animals/headslug.rsi/meta.json b/Resources/Textures/Mobs/Animals/headslug.rsi/meta.json index 64666f2c04..cb4b9f413f 100644 --- a/Resources/Textures/Mobs/Animals/headslug.rsi/meta.json +++ b/Resources/Textures/Mobs/Animals/headslug.rsi/meta.json @@ -16,6 +16,16 @@ }, { "name": "icon" + }, + { + "name": "slug_elder", + "directions": 4 + }, + { + "name": "slug_elder_dead" + }, + { + "name": "shell" } ] } diff --git a/Resources/Textures/Mobs/Animals/headslug.rsi/shell.png b/Resources/Textures/Mobs/Animals/headslug.rsi/shell.png new file mode 100644 index 0000000000000000000000000000000000000000..cd03ac6d2431fddbd42667a9c05fb045bca3279a GIT binary patch literal 552 zcmV+@0@wYCP)Px$;z>k7R9J=Wma%KwKp4e;DeX|2%@{#y+ z|3U~Ex};s)6w43^LOT>K5_Uisdk8KaGN^-nhh#a{Nv3p&-lEe}SrD7G23oa3Y3r#Z?^`wi zUw&L>iiC0mOrsgTJ3N%6f*7E0+2~psfFrE~pd5(@>yiiFK$1Ue)Mp~votQV)5|Bpj z2O|KqY9%(Vy<^0@l3Tzc7Rhz39P>j~tn`3sG()r2Nc8tD8!jyLgZ+dV1w>ka@bvQA zoqkA-fC%mQdMMpKKL3h-un!O;54-_@Op6Lq1&B$bZGZDoOk5Pvw5VWZ3g)2;O&W4S zyVsROTD21Mgg}&hGQG(!K)?@1a%KATHt{`5o)xJk6s7j_$r%8p$4^p;18<<50_AP^ z`t6%p<5g|;ys(y<&GB6PU_{^za6C7)ET^X6=l7mmjr75v-vIc%F4SA-S~(#`btk0O z>t(gT4@T0AFYB$u7{_y&OmCD9C8YyH)b;j`5$m^mU1`eF-tNB>uu6#Ixx5%oW-oJp qWI2*^-H4Xmg4Vqm6(~^Pzu_+*iSh$l_enwk0000Px(14%?dRCt{2n#*e&R}_c8v|gz31LFq*Tedbvv|~&(0!avK5ey|>7~_rhEk)gh zWR*IL(k3N1%a-iwKS3K~yznYeNDz{UWw(tA#f$0*Q%O#7ED#~ebRo@Tq&oGCun4s0 z1L1RL?%dxw$9Jxc&H+IX1VIpl|0!4ceQ-UntQ+?3!PCCidEfd&P9KQ+mh_2{G1fy7 zlt`FdG6kTYoSpLI_g@B{h|AV@lz^yjN&jr+21+E%{>~l>P|&Ju-nwl%GRPzt`fjg> z$(dOIlt>u2*MpWX^`-A90TUx*X7I(MEL*83Ou2^H2Ua)Mm`Ep`Eaw+x9392+|Tpk67P_I4uS zNZ-*8FoZJcEK{ywYRyJ_2kh(-45?0*>I*GjvTpYauiN1RyAw~&PRXRR00cuSwPpi= zTC-sWpGjvqIXiXigkAlDRyBjv@+I?Qj0;-TvHpj4CPjTq`pRN})r~c-j*juiufK71 zdUU|U-iHG{0oL&w@@Nsrsq67dv?fA zxu5xH$VKGS6{hDryn6A18`rN>ES7ES+u8vWBV(pruawzMCkcjB;;|UPkjid4+4UY; z=U*lTt!nxJ;P)sP%3^?ENM$>b!0%n)Fn>%u79*3+^7#1yz(D>V zc;EVhAP9mW2!bF8f*=TjAPB;LflK}Rc#u5b9JCylwI9eGZW)P&vtd#8a%WcBH(TC z*4m&!t=YiuT{!o3v7_hrE|^tlD~8s2zQkiOM|!r-0BduC(V5})db*sk+SdMo;!zgH zNA3F4Me(Rzj-PT3lSyX@hTh)m)iuiGZm)-queQ!0+dDwZm(2cvca5#r=B}w-Kl`C~ zjZ8Y*)e~U7_O9_o*#0X}(5mKE%Oz7NkuVCdzq7}@d)mCO0NeMzqtugljfW#+D_%+c;7Im{p1cIG^+ ztvB^b*?jM9$`1fIAQFqvcBkLu!|Om_H^MQpqJ#W}SZCJ?;2J z?q&Dj>6Pt7f_e8ekDniqNoUC=Q(c-`zQmme_q%LC5ClOG1VIo4;R5~!C|E;wh5`4d P00000NkvXXu0mjfdxja7 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Animals/headslug.rsi/slug_elder_dead.png b/Resources/Textures/Mobs/Animals/headslug.rsi/slug_elder_dead.png new file mode 100644 index 0000000000000000000000000000000000000000..84bf805d95669fb6834cbf2c8c755855ab70c60e GIT binary patch literal 439 zcmV;o0Z9IdP)Px$aY;l$R9J=W(?3f>Q5?qcuh1YU4qhS9LWsD7V5X1~Ikj|$i%8&}gwPT?1lbVL z5aDa6@CCF)H1q-tu^^?uAtX>z5dRF8;C7lcFtBShG@Q?J@8vxF&copzkR(Zx3<|4W z5eck`NtsAsO@vkN#LT!EqnmH7Z{S%Cp&Y-9?CXBn~|}`3tT_mnE;^yT2zOq&gnsVw4OLR z9KDySm0|wx3JjI=1!moIJlq#?m@TvieH>;Bw^ui;1pPFtZ_|u3ULdS`#j<-5&uR#O zl^_%gIRM&&KAS;5iqnPSbWv-z=zjG6{vXhyIslzUolN$E{oP#@r|auGzK!B^p+$8{ z)ryg^KNlEYsdO?$r%~tZ@{;aH4`6iM!)GRYf!%5&5sQ&drs$sZ1c1?#m|9r%iu0Yl hsqeicNs=V}JD)W)f1OCQEhqp0002ovPDHLkV1ig Date: Tue, 1 Sep 2026 18:26:25 +0000 Subject: [PATCH 036/197] Update PR template changelog examples to not break guidelines (#45782) * Update PULL_REQUEST_TEMPLATE.md * peer pressure --- .github/PULL_REQUEST_TEMPLATE.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 5bdccc2cd0..98eee5fd84 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -32,11 +32,12 @@ This will be posted in #codebase-changes. --> ## Changelog +Changelog must have a :cl: symbol, so the bot recognizes the changes and adds them to the game's changelog. +Maps, admin and rule changes should include a category header above the :cl: as per the guidelines.--> From 410221decdd757862f41b2820e2e0a708a266255 Mon Sep 17 00:00:00 2001 From: Jessica M Date: Wed, 2 Sep 2026 03:55:23 +0000 Subject: [PATCH 037/197] Fix agent ID popup showing for everyone (#45800) agent ID --- Content.Shared/Access/Systems/SharedAgentIDCardSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Shared/Access/Systems/SharedAgentIDCardSystem.cs b/Content.Shared/Access/Systems/SharedAgentIDCardSystem.cs index e84b28abff..f6b372b990 100644 --- a/Content.Shared/Access/Systems/SharedAgentIDCardSystem.cs +++ b/Content.Shared/Access/Systems/SharedAgentIDCardSystem.cs @@ -40,7 +40,7 @@ public abstract partial class SharedAgentIdCardSystem : EntitySystem access.Tags.UnionWith(targetAccess.Tags); var addedLength = access.Tags.Count - beforeLength; - _popup.PopupPredicted(Loc.GetString("agent-id-new", ("number", addedLength), ("card", args.Target)), + _popup.PopupEntity(Loc.GetString("agent-id-new", ("number", addedLength), ("card", args.Target)), args.Target.Value, args.User); if (addedLength > 0) From fe0226a53ca7d70bd0a96a450fafbfafafaccb1a Mon Sep 17 00:00:00 2001 From: Cabin-keeper Date: Wed, 2 Sep 2026 04:04:43 +0000 Subject: [PATCH 038/197] Buff the China Lake to be stronger and more lethal (resubmit of #45685) (#45748) clake buff once more --- .../en-US/store/uplink-catalog/ammo.ftl | 6 ++++++ .../Catalog/Fills/Backpacks/duffelbag.yml | 4 ++-- .../Prototypes/Catalog/UplinkCatalog/ammo.yml | 21 +++++++++++++++++++ .../Weapons/Guns/Launchers/launchers.yml | 2 ++ .../Projectiles/Explosives/explosives.yml | 12 +++++------ Resources/Prototypes/explosion.yml | 17 +++++++++++++++ 6 files changed, 54 insertions(+), 8 deletions(-) diff --git a/Resources/Locale/en-US/store/uplink-catalog/ammo.ftl b/Resources/Locale/en-US/store/uplink-catalog/ammo.ftl index 4bb28020dd..1d95549c55 100644 --- a/Resources/Locale/en-US/store/uplink-catalog/ammo.ftl +++ b/Resources/Locale/en-US/store/uplink-catalog/ammo.ftl @@ -26,3 +26,9 @@ uplink-sniper-ammo-desc = A box of 10 cartridges for the Hristov sniper rifle. uplink-ammo-bundle-name = Ammo Bundle uplink-ammo-bundle-desc = Reloading! Contains 4 magazines for the C-20r, 4 drums for the Bulldog, 3 magazines for the Estoc DMR, and 2 ammo boxes for the L6 SAW. + +uplink-ammo-frag-name = Frag Grenade +uplink-ammo-frag-desc = A spare frag grenade for your China Lake grenade launcher. + +uplink-ammo-blast-name = Blast Grenade +uplink-ammo-blast-desc = A spare blast grenade for your China Lake grenade launcher. diff --git a/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml b/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml index 0ea7428e5e..6c26268206 100644 --- a/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml +++ b/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml @@ -133,9 +133,9 @@ children: - id: WeaponLauncherChinaLake - id: GrenadeBlast - amount: 4 + amount: 3 - id: GrenadeFrag - amount: 4 + amount: 5 - type: entity parent: ClothingBackpackDuffelSyndicateAmmo diff --git a/Resources/Prototypes/Catalog/UplinkCatalog/ammo.yml b/Resources/Prototypes/Catalog/UplinkCatalog/ammo.yml index 3484027b90..f117fa6e89 100644 --- a/Resources/Prototypes/Catalog/UplinkCatalog/ammo.yml +++ b/Resources/Prototypes/Catalog/UplinkCatalog/ammo.yml @@ -109,3 +109,24 @@ blacklist: components: - SurplusBundle + +# for the clake: +- type: listing + id: GrenadeFrag + name: uplink-ammo-frag-name + description: uplink-ammo-frag-desc + productEntity: GrenadeFrag + cost: + Telecrystal: 3 + categories: + - UplinkAmmo + +- type: listing + id: GrenadeBlast + name: uplink-ammo-blast-name + description: uplink-ammo-blast-desc + productEntity: GrenadeBlast + cost: + Telecrystal: 3 + categories: + - UplinkAmmo diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml index 33e26ccf4e..8f63badc6a 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml @@ -62,6 +62,8 @@ - type: GunRequiresWield - type: StaticPrice price: 10000 + - type: Gun + fireRate: 0.67 - type: entity parent: [ BaseWeaponLauncher, BaseMajorContraband ] diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Explosives/explosives.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Explosives/explosives.yml index 9c38def9a9..8271a22848 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Explosives/explosives.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Explosives/explosives.yml @@ -73,10 +73,10 @@ - state: grenade - type: ExplodeOnTrigger - type: Explosive - explosionType: Default - totalIntensity: 150 # a ~2 tile radius + explosionType: Clake + totalIntensity: 150 # a ~3 tile radius intensitySlope: 5 - maxIntensity: 10 + maxIntensity: 20 canCreateVacuum: false - type: entity @@ -108,9 +108,9 @@ - type: ExplodeOnTrigger - type: Explosive explosionType: Default - totalIntensity: 50 - intensitySlope: 1 - maxIntensity: 5 + totalIntensity: 120 + intensitySlope: 5 + maxIntensity: 9 canCreateVacuum: false - type: ContainerContainer containers: diff --git a/Resources/Prototypes/explosion.yml b/Resources/Prototypes/explosion.yml index 1b19167bd3..5b291c321e 100644 --- a/Resources/Prototypes/explosion.yml +++ b/Resources/Prototypes/explosion.yml @@ -13,6 +13,23 @@ fireStates: 3 temperature: 800 +- type: explosion + id: Clake + damagePerIntensity: + types: + Heat: 2 + Blunt: 2 + Piercing: 3 + Structural: 65 + tileBreakChance: [ 0, 0.5, 1 ] + tileBreakIntensity: [ 0, 50, 75 ] + tileBreakRerollReduction: 25 + lightColor: Orange + fireColor: Red + texturePath: /Textures/Effects/fire_greyscale.rsi + fireStates: 3 + temperature: 800 + - type: explosion id: DemolitionCharge damagePerIntensity: From 80c5c3f991043406228728233c63dd51a0bf27cd Mon Sep 17 00:00:00 2001 From: eoineoineoin Date: Wed, 2 Sep 2026 04:11:11 +0000 Subject: [PATCH 039/197] Fix fax (#45731) Fix fax prototypes --- Content.Server/Fax/FaxSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/Fax/FaxSystem.cs b/Content.Server/Fax/FaxSystem.cs index ecca1e91f0..a702fcece0 100644 --- a/Content.Server/Fax/FaxSystem.cs +++ b/Content.Server/Fax/FaxSystem.cs @@ -553,7 +553,7 @@ public sealed partial class FaxSystem : EntitySystem var printout = component.PrintingQueue.Dequeue(); - var entityToSpawn = component.PrintPaperId; + var entityToSpawn = ProtoMan.HasIndex(printout.PrototypeId) ? printout.PrototypeId : component.PrintPaperId; var printed = Spawn(entityToSpawn, Transform(uid).Coordinates); if (TryComp(printed, out var paper)) From baa0ce049445e93a9bf51d3ace821cbfc348b884 Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Wed, 2 Sep 2026 04:14:12 +0000 Subject: [PATCH 040/197] Add grenade (round) descriptions, proper noun China Lake (#45754) * Initial commit * Proper nouning it up in here * missed one --------- Co-authored-by: iaada --- .../en-US/store/uplink-catalog/weaponry.ftl | 8 ++++---- .../Catalog/Fills/Backpacks/duffelbag.yml | 4 ++-- .../Catalog/Fills/Items/briefcases.yml | 2 +- .../Weapons/Guns/Ammunition/explosives.yml | 17 +++++++++++++---- .../Weapons/Guns/Launchers/launchers.yml | 2 +- .../Guns/Projectiles/Explosives/explosives.yml | 2 +- 6 files changed, 22 insertions(+), 13 deletions(-) diff --git a/Resources/Locale/en-US/store/uplink-catalog/weaponry.ftl b/Resources/Locale/en-US/store/uplink-catalog/weaponry.ftl index 4aec3413c1..128c276220 100644 --- a/Resources/Locale/en-US/store/uplink-catalog/weaponry.ftl +++ b/Resources/Locale/en-US/store/uplink-catalog/weaponry.ftl @@ -54,11 +54,11 @@ uplink-bulldog-bundle-desc = Lean and mean: Contains the popular Bulldog Shotgun uplink-estoc-bundle-name = Estoc DMR bundle uplink-estoc-bundle-desc = A designated marksman rifle, fitted with a mid-range optic for longer-range combat. Bundled with three rifle magazines (.20 rifle). -uplink-grenade-launcher-name = China-Lake -uplink-grenade-launcher-desc = An old China-Lake grenade launcher bundled with 5 rounds of anti-personnel ammo. +uplink-grenade-launcher-name = China Lake +uplink-grenade-launcher-desc = An old China Lake grenade launcher bundled with 5 rounds of anti-personnel ammo. -uplink-grenade-launcher-bundle-name = China-Lake Bundle -uplink-grenade-launcher-bundle-desc = An old China-Lake grenade launcher bundled with 11 rounds of varying destructive capability. +uplink-grenade-launcher-bundle-name = China Lake Bundle +uplink-grenade-launcher-bundle-desc = An old China Lake grenade launcher bundled with 11 rounds of varying destructive capability. uplink-l6-saw-bundle-name = L6 Saw Bundle uplink-l6-saw-bundle-desc = More dakka: The iconic L6 light machine gun, bundled with 2 box magazines. diff --git a/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml b/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml index 6c26268206..a4c9d4d37a 100644 --- a/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml +++ b/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml @@ -124,8 +124,8 @@ - type: entity parent: ClothingBackpackDuffelSyndicateBundle id: ClothingBackpackDuffelSyndicateFilledGrenadeLauncher - name: China-Lake bundle - description: "An old China-Lake grenade launcher bundled with 11 rounds of various destruction capability." + name: China Lake bundle + description: "An old China Lake grenade launcher bundled with 11 rounds of various destruction capability." components: - type: EntityTableContainerFill containers: diff --git a/Resources/Prototypes/Catalog/Fills/Items/briefcases.yml b/Resources/Prototypes/Catalog/Fills/Items/briefcases.yml index 3e3e0f2f8d..c056ced04c 100644 --- a/Resources/Prototypes/Catalog/Fills/Items/briefcases.yml +++ b/Resources/Prototypes/Catalog/Fills/Items/briefcases.yml @@ -93,7 +93,7 @@ - type: entity id: BriefcaseWeaponChinaLakeFilled parent: BriefcaseWeapon - name: secure china lake case + name: secure China Lake case components: - type: EntityTableContainerFill containers: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/explosives.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/explosives.yml index 24a5320c23..e13bb70496 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/explosives.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/explosives.yml @@ -59,6 +59,7 @@ parent: BaseGrenade id: GrenadeBaton name: baton grenade + description: A grenade round containing a single non-lethal projectile. Like being punched in the solar plexus. components: - type: CartridgeAmmo proto: BulletGrenadeBaton @@ -75,7 +76,8 @@ - type: entity parent: BaseGrenade id: GrenadeBlast - name: blast grenade + name: blast grenade round + description: A grenade round containing an explosive compound made specifically for breaching the reinforced hulls of space stations. components: - type: CartridgeAmmo proto: BulletGrenadeBlast @@ -92,7 +94,8 @@ - type: entity parent: BaseGrenade id: GrenadeFlash - name: flash grenade + name: flash grenade round + description: A grenade round containing a chemical compound causing a blinding flash of light on impact. components: - type: CartridgeAmmo proto: BulletGrenadeFlash @@ -109,7 +112,8 @@ - type: entity parent: BaseGrenade id: GrenadeFrag - name: frag grenade + name: frag grenade round + description: A grenade round containing a concentrated anti-personnel explosive alongside shrapnel, shredding anyone close to the impact zone. components: - type: CartridgeAmmo proto: BulletGrenadeFrag @@ -127,6 +131,7 @@ parent: BaseGrenade id: GrenadeCleanade name: cleanade grenade round + description: A grenade round containing space cleaner foam. For when you need to declare war on the concept of messiness. components: - type: CartridgeAmmo proto: BulletGrenadeCleanade @@ -143,7 +148,8 @@ - type: entity parent: BaseGrenade id: GrenadeEMP - name: EMP grenade + name: EMP grenade round + description: A grenade round containing an chemical compound calibrated to cause an electromagnetic pulse on impact. components: - type: CartridgeAmmo proto: BulletGrenadeEMP @@ -177,6 +183,7 @@ id: CannonBall name: cannonball suffix: Pirate + description: Extreme dodgeball. components: - type: CartridgeAmmo proto: BulletCannonBall @@ -190,6 +197,7 @@ id: CannonBallGrapeshot name: grapeshot suffix: Pirate + description: A spread of small iron balls that scatter upon being fired. For when you need to send a strongly worded message but don't know exactly where your enemy is. components: - type: CartridgeAmmo proto: PelletGrapeshotSpread @@ -203,6 +211,7 @@ id: CannonBallGlassshot name: glassshot suffix: Pirate + description: Turns out you can just put a bunch of glass into a cannon and fire it. Causes nasty cuts. components: - type: CartridgeAmmo proto: PelletGlassSpread diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml index 8f63badc6a..a2e1acd5a2 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml @@ -33,7 +33,7 @@ - type: entity parent: [ BaseWeaponLauncher, BaseSyndicateContraband ] id: WeaponLauncherChinaLake - name: china lake + name: China Lake description: PLOOP. components: - type: Sprite diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Explosives/explosives.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Explosives/explosives.yml index 8271a22848..99e3fa46c4 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Explosives/explosives.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Explosives/explosives.yml @@ -46,7 +46,7 @@ parent: BaseBullet id: BulletGrenadeBaton categories: [ HideSpawnMenu ] - name: baton grenade + name: baton grenade round components: - type: Sprite sprite: Objects/Weapons/Guns/Projectiles/projectiles2.rsi From 71f82eb980a05d0157f603dcae86d2842edfa522 Mon Sep 17 00:00:00 2001 From: "bru(s)h" <202476090+GlupiyBrush@users.noreply.github.com> Date: Wed, 2 Sep 2026 05:38:27 +0000 Subject: [PATCH 041/197] Fixes localization warning in MaterialDisplay (#45637) Fix --- Content.Client/Materials/UI/MaterialDisplay.xaml.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Client/Materials/UI/MaterialDisplay.xaml.cs b/Content.Client/Materials/UI/MaterialDisplay.xaml.cs index d40f896b09..5b26468901 100644 --- a/Content.Client/Materials/UI/MaterialDisplay.xaml.cs +++ b/Content.Client/Materials/UI/MaterialDisplay.xaml.cs @@ -87,7 +87,7 @@ public sealed partial class MaterialDisplay : PanelContainer { Name = $"{sheetsToEject}", Access = AccessLevel.Public, - Text = Loc.GetString($"{sheetsToEject}"), + Text = sheetsToEject.ToString(), MinWidth = 45, StyleClasses = { styleClass } }; From 2986fdbd73d7a99dd8df5c6365ebc7c6715805ff Mon Sep 17 00:00:00 2001 From: Whatstone <166147148+whatston3@users.noreply.github.com> Date: Wed, 2 Sep 2026 05:44:48 +0000 Subject: [PATCH 042/197] YAML Cleanup: give names to entities at the top of the spawn list, migrate DrinkWaterJug, hide plants (#45788) * yaml cleanup * options_visualizer: BOM defusal * more bom defusal, option visualizer name * hang on a minute... --- Resources/Prototypes/Body/detached.yml | 1 + .../Prototypes/Entities/Debugging/item.yml | 2 +- .../Entities/Debugging/options_visualizer.yml | 4 +- .../Consumable/Drinks/drinks_metamorphic.yml | 15 ---- .../Entities/Objects/Decoration/mining.yml | 2 + Resources/Prototypes/Hydroponics/plants.yml | 71 ++++++++++++++++++ .../Consumable/Drinks/water.rsi/icon.png | Bin 5864 -> 0 bytes .../Consumable/Drinks/water.rsi/meta.json | 1 - Resources/migration.yml | 2 + 9 files changed, 79 insertions(+), 19 deletions(-) delete mode 100644 Resources/Textures/Objects/Consumable/Drinks/water.rsi/icon.png delete mode 100644 Resources/Textures/Objects/Consumable/Drinks/water.rsi/meta.json diff --git a/Resources/Prototypes/Body/detached.yml b/Resources/Prototypes/Body/detached.yml index 65e370eb8c..5d9bc510a6 100644 --- a/Resources/Prototypes/Body/detached.yml +++ b/Resources/Prototypes/Body/detached.yml @@ -2,6 +2,7 @@ parent: - BaseSpeciesLayers id: DetachedBody + categories: [HideSpawnMenu] save: false components: - type: Clickable diff --git a/Resources/Prototypes/Entities/Debugging/item.yml b/Resources/Prototypes/Entities/Debugging/item.yml index 5e74412fe9..3643b15010 100644 --- a/Resources/Prototypes/Entities/Debugging/item.yml +++ b/Resources/Prototypes/Entities/Debugging/item.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: BaseItem id: DebugItemShapeWeird name: weirdly shaped item diff --git a/Resources/Prototypes/Entities/Debugging/options_visualizer.yml b/Resources/Prototypes/Entities/Debugging/options_visualizer.yml index c2b51c8a5a..83e3bf5512 100644 --- a/Resources/Prototypes/Entities/Debugging/options_visualizer.yml +++ b/Resources/Prototypes/Entities/Debugging/options_visualizer.yml @@ -1,5 +1,6 @@ -- type: entity +- type: entity id: OptionsVisualizerTest + name: OptionsVisualizerTest suffix: DEBUG components: - type: Sprite @@ -18,4 +19,3 @@ data: { state: motion } - options: [Test, ReducedMotion] data: { state: both } - diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_metamorphic.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_metamorphic.yml index d814565ab1..eef476032d 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_metamorphic.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_metamorphic.yml @@ -1955,21 +1955,6 @@ sprite: Objects/Consumable/Drinks/vodkatonicglass.rsi state: icon -- type: entity - parent: DrinkGlass - id: DrinkWaterJug - name: water jug - description: Stay hydrated. - components: - - type: Solution - solution: - reagents: - - ReagentId: Water - Quantity: 30 - - type: Icon - sprite: Objects/Consumable/Drinks/water.rsi - state: icon - - type: entity parent: DrinkGlass id: DrinkWatermelonJuice diff --git a/Resources/Prototypes/Entities/Objects/Decoration/mining.yml b/Resources/Prototypes/Entities/Objects/Decoration/mining.yml index 636752b8cb..68365e0913 100644 --- a/Resources/Prototypes/Entities/Objects/Decoration/mining.yml +++ b/Resources/Prototypes/Entities/Objects/Decoration/mining.yml @@ -148,6 +148,8 @@ - type: entity parent: BaseWoodenSupport id: WoodenSupportWallBroken + name: broken wooden support wall + description: A broken, no good, lousy old rotten wall. components: - type: Wall - type: Sprite diff --git a/Resources/Prototypes/Hydroponics/plants.yml b/Resources/Prototypes/Hydroponics/plants.yml index cd7b1f1bb9..304338d2f7 100644 --- a/Resources/Prototypes/Hydroponics/plants.yml +++ b/Resources/Prototypes/Hydroponics/plants.yml @@ -46,6 +46,7 @@ - type: entity parent: BasePlant id: WheatPlants + categories: [HideSpawnMenu] name: wheat stalk components: - type: Sprite @@ -77,6 +78,7 @@ - type: entity parent: BasePlant id: MeatWheatPlants + categories: [HideSpawnMenu] name: meatwheat stalk components: - type: Sprite @@ -107,6 +109,7 @@ - type: entity parent: BasePlant id: OatPlants + categories: [HideSpawnMenu] name: oat stalk components: - type: Sprite @@ -137,6 +140,7 @@ - type: entity parent: BasePlant id: BananaPlants + categories: [HideSpawnMenu] name: banana plant components: - type: Sprite @@ -172,6 +176,7 @@ - type: entity parent: BasePlant id: MimanaPlants + categories: [HideSpawnMenu] name: mimana plant components: - type: Sprite @@ -206,6 +211,7 @@ - type: entity parent: BasePlant id: CarrotPlants + categories: [HideSpawnMenu] name: carrot components: - type: Sprite @@ -241,6 +247,7 @@ - type: entity parent: BasePlant id: LaughinPeaPlants + categories: [HideSpawnMenu] name: laughin' pea components: - type: Sprite @@ -280,6 +287,7 @@ - type: entity parent: BasePlant id: LemonPlants + categories: [HideSpawnMenu] name: lemon tree components: - type: Sprite @@ -311,6 +319,7 @@ - type: entity parent: BasePlant id: LemoonPlants + categories: [HideSpawnMenu] name: lemoon tree components: - type: Sprite @@ -341,6 +350,7 @@ - type: entity parent: BasePlant id: LimePlants + categories: [HideSpawnMenu] name: lime tree components: - type: Sprite @@ -372,6 +382,7 @@ - type: entity parent: BasePlant id: OrangePlants + categories: [HideSpawnMenu] name: orange tree components: - type: Sprite @@ -403,6 +414,7 @@ - type: entity parent: BasePlant id: ExtradimensionalOrangePlants + categories: [HideSpawnMenu] name: extradimensional orange tree components: - type: Sprite @@ -437,6 +449,7 @@ - type: entity parent: BasePlant id: PineapplePlants + categories: [HideSpawnMenu] name: pineapple plant components: - type: Sprite @@ -472,6 +485,7 @@ - type: entity parent: BasePlant id: PotatoPlants + categories: [HideSpawnMenu] name: potato components: - type: Sprite @@ -503,6 +517,7 @@ - type: entity parent: BasePlant id: SugarcanePlants + categories: [HideSpawnMenu] name: sugarcane components: - type: Sprite @@ -534,6 +549,7 @@ - type: entity parent: BasePlant id: TeaPlantPlants + categories: [HideSpawnMenu] name: tea plant components: - type: Sprite @@ -566,6 +582,7 @@ - type: entity parent: BasePlant id: PapercanePlants + categories: [HideSpawnMenu] name: papercane components: - type: Sprite @@ -590,6 +607,7 @@ - type: entity parent: BasePlant id: TowercapPlants + categories: [HideSpawnMenu] name: tower cap components: - type: Sprite @@ -618,6 +636,7 @@ - type: entity parent: BasePlant id: SteelcapPlants + categories: [HideSpawnMenu] name: steel cap components: - type: Sprite @@ -645,6 +664,7 @@ - type: entity parent: BasePlant id: TomatoPlants + categories: [HideSpawnMenu] name: tomato plant components: - type: Sprite @@ -686,6 +706,7 @@ - type: entity parent: BasePlant id: BlueTomatoPlants + categories: [HideSpawnMenu] name: blue tomato plant components: - type: Sprite @@ -726,6 +747,7 @@ - type: entity parent: BasePlant id: BloodTomatoPlants + categories: [HideSpawnMenu] name: blood tomato plant components: - type: Sprite @@ -763,6 +785,7 @@ - type: entity parent: BasePlant id: KillerTomatoPlants + categories: [HideSpawnMenu] name: tomato killer plant components: - type: Sprite @@ -802,6 +825,7 @@ - type: entity parent: BasePlant id: EggplantPlants + categories: [HideSpawnMenu] name: eggplant components: - type: Sprite @@ -837,6 +861,7 @@ - type: entity parent: BasePlant id: CabbagePlants + categories: [HideSpawnMenu] name: cabbage components: - type: Sprite @@ -866,6 +891,7 @@ - type: entity parent: BasePlant id: GarlicPlants + categories: [HideSpawnMenu] name: garlic head components: - type: Sprite @@ -899,6 +925,7 @@ - type: entity parent: BasePlant id: ApplePlants + categories: [HideSpawnMenu] name: apple tree components: - type: Sprite @@ -930,6 +957,7 @@ - type: entity parent: BasePlant id: GoldenApplePlants + categories: [HideSpawnMenu] name: golden apple tree components: - type: Sprite @@ -966,6 +994,7 @@ - type: entity parent: BasePlant id: CornPlants + categories: [HideSpawnMenu] name: ear of corn components: - type: Sprite @@ -1000,6 +1029,7 @@ - type: entity parent: BasePlant id: OnionPlants + categories: [HideSpawnMenu] name: onion components: - type: Sprite @@ -1042,6 +1072,7 @@ - type: entity parent: BasePlant id: OnionRedPlants + categories: [HideSpawnMenu] name: red onion components: - type: Sprite @@ -1082,6 +1113,7 @@ - type: entity parent: BasePlant id: ChanterellePlants + categories: [HideSpawnMenu] name: chanterelle mushroom components: - type: Sprite @@ -1114,6 +1146,7 @@ - type: entity parent: BasePlant id: EggyPlants + categories: [HideSpawnMenu] name: egg-plant components: - type: Sprite @@ -1145,6 +1178,7 @@ - type: entity parent: BasePlant id: CannabisPlants + categories: [HideSpawnMenu] name: cannabis components: - type: Sprite @@ -1176,6 +1210,7 @@ - type: entity parent: BasePlant id: RainbowCannabisPlants + categories: [HideSpawnMenu] name: rainbow cannabis components: - type: Sprite @@ -1220,6 +1255,7 @@ - type: entity parent: BasePlant id: TobaccoPlants + categories: [HideSpawnMenu] name: tobacco plant components: - type: Sprite @@ -1252,6 +1288,7 @@ - type: entity parent: BasePlant id: NettlePlants + categories: [HideSpawnMenu] name: nettle components: - type: Sprite @@ -1283,6 +1320,7 @@ - type: entity parent: BasePlant id: DeathNettlePlants + categories: [HideSpawnMenu] name: death nettle components: - type: Sprite @@ -1320,6 +1358,7 @@ - type: entity parent: BasePlant id: ChiliPlants + categories: [HideSpawnMenu] name: chili pepper components: - type: Sprite @@ -1358,6 +1397,7 @@ - type: entity parent: BasePlant id: ChillyPlants + categories: [HideSpawnMenu] name: chilly pepper components: - type: Sprite @@ -1395,6 +1435,7 @@ - type: entity parent: BasePlant id: PoppyPlants + categories: [HideSpawnMenu] name: poppy components: - type: Sprite @@ -1427,6 +1468,7 @@ - type: entity parent: BasePlant id: LilyPlants + categories: [HideSpawnMenu] name: lily components: - type: Sprite @@ -1459,6 +1501,7 @@ - type: entity parent: BasePlant id: AloePlants + categories: [HideSpawnMenu] name: aloe components: - type: Sprite @@ -1490,6 +1533,7 @@ - type: entity parent: BasePlant id: LingzhiPlants + categories: [HideSpawnMenu] name: lingzhi components: - type: Sprite @@ -1522,6 +1566,7 @@ - type: entity parent: BasePlant id: AmbrosiaVulgarisPlants + categories: [HideSpawnMenu] name: ambrosia vulgaris components: - type: Sprite @@ -1562,6 +1607,7 @@ - type: entity parent: BasePlant id: AmbrosiaDeusPlants + categories: [HideSpawnMenu] name: ambrosia deus components: - type: Sprite @@ -1597,6 +1643,7 @@ - type: entity parent: BasePlant id: GalaxythistlePlants + categories: [HideSpawnMenu] name: galaxythistle components: - type: Sprite @@ -1625,6 +1672,7 @@ - type: entity parent: BasePlant id: GlasstlePlants + categories: [HideSpawnMenu] name: glasstle components: - type: Sprite @@ -1654,6 +1702,7 @@ - type: entity parent: BasePlant id: FlyAmanitaPlants + categories: [HideSpawnMenu] name: fly amanita components: - type: Sprite @@ -1687,6 +1736,7 @@ - type: entity parent: BasePlant id: GatfruitPlants + categories: [HideSpawnMenu] name: gatfruit tree components: - type: Sprite @@ -1717,6 +1767,7 @@ - type: entity parent: BasePlant id: FakeCapfruitPlants + categories: [HideSpawnMenu] name: capfruit tree components: - type: Sprite @@ -1746,6 +1797,7 @@ - type: entity parent: BasePlant id: RealCapfruitPlants + categories: [HideSpawnMenu] name: capfruit tree components: - type: Sprite @@ -1775,6 +1827,7 @@ - type: entity parent: BasePlant id: RicePlants + categories: [HideSpawnMenu] name: rice stalk components: - type: Sprite @@ -1807,6 +1860,7 @@ - type: entity parent: BasePlant id: SoybeanPlants + categories: [HideSpawnMenu] name: soy plant components: - type: Sprite @@ -1835,6 +1889,7 @@ - type: entity parent: BasePlant id: SpacemansTrumpetPlants + categories: [HideSpawnMenu] name: spaceman's trumpet plant components: - type: Sprite @@ -1866,6 +1921,7 @@ - type: entity parent: BasePlant id: KoibeanPlants + categories: [HideSpawnMenu] name: koibean plant components: - type: Sprite @@ -1897,6 +1953,7 @@ - type: entity parent: BasePlant id: GrapePlants + categories: [HideSpawnMenu] name: grape plant components: - type: Sprite @@ -1926,6 +1983,7 @@ - type: entity parent: BasePlant id: WatermelonPlants + categories: [HideSpawnMenu] name: watermelon vine components: - type: Sprite @@ -1959,6 +2017,7 @@ - type: entity parent: BasePlant id: HolymelonPlants + categories: [HideSpawnMenu] name: holymelon vine components: - type: Sprite @@ -1991,6 +2050,7 @@ - type: entity parent: BasePlant id: CocoaPlants + categories: [HideSpawnMenu] name: cocoa plant components: - type: Sprite @@ -2026,6 +2086,7 @@ - type: entity parent: BasePlant id: BerryPlants + categories: [HideSpawnMenu] name: berry bush components: - type: Sprite @@ -2057,6 +2118,7 @@ - type: entity parent: BasePlant id: BungoPlants + categories: [HideSpawnMenu] name: bungo plant components: - type: Sprite @@ -2093,6 +2155,7 @@ - type: entity parent: BasePlant id: PeaPlants + categories: [HideSpawnMenu] name: pea vine components: - type: Sprite @@ -2127,6 +2190,7 @@ - type: entity parent: BasePlant id: WorldPeaPlants + categories: [HideSpawnMenu] name: world pea vine components: - type: Sprite @@ -2164,6 +2228,7 @@ - type: entity parent: BasePlant id: PumpkinPlants + categories: [HideSpawnMenu] name: pumpkin components: - type: Sprite @@ -2197,6 +2262,7 @@ - type: entity parent: BasePlant id: BluePumpkinPlants + categories: [HideSpawnMenu] name: blue pumpkin components: - type: Sprite @@ -2233,6 +2299,7 @@ - type: entity parent: BasePlant id: CottonPlants + categories: [HideSpawnMenu] name: cotton plant components: - type: Sprite @@ -2261,6 +2328,7 @@ - type: entity parent: BasePlant id: PyrottonPlants + categories: [HideSpawnMenu] name: pyrotton plant components: - type: Sprite @@ -2292,6 +2360,7 @@ - type: entity parent: BasePlant id: CherryPlants + categories: [HideSpawnMenu] name: cherry tree components: - type: Sprite @@ -2322,6 +2391,7 @@ - type: entity parent: BasePlant id: AnomalyBerryPlants + categories: [HideSpawnMenu] name: anomaly berry components: - type: Sprite @@ -2358,6 +2428,7 @@ - type: entity parent: BasePlant id: BloonionPlants + categories: [HideSpawnMenu] name: bloonion bulb components: - type: Sprite diff --git a/Resources/Textures/Objects/Consumable/Drinks/water.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/water.rsi/icon.png deleted file mode 100644 index 91b094a4df960db8bedcd57909e0e7df2f6461dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5864 zcmeHKc{r478y`yuS<10S)6l6f`(kEnF=U496iUqU4sXm1Gh>aE(56M&PB~G8bBajW zQ;HHLyACBK6_RsG8{&J1*6aJO>$|$H@B6Qr>z#Su`}y6!=e~c>{XFmU>~eE)SfHq@ z2!p{EFz9w3&_7&qDab*;qS)AR7)&lY*2_oi!Hj~32?bm*6o89k!T>lB4RT?y=$=uZ z^+KbH1yj#f#wAJHsMUqPw@niC517{)zj4&P6MK<8LoPL`Y~U8J!r-Oc947;2#>Z9T zgo7EogU_xVNp>w}Rb;mpPPX6uy-@h_S$d|!`;SbE%LW`}tY1w+>BQ{>y}YB_s)nB5 zGNP}zU_iUIAd_TxC~tedN@ltp-lOl(nNKOBwiWmH{R$v+b> zp4{1euD z(W~Ls?tvlv`eoLh?-w<^>D)p&Nw>1>@1}nE*m%bB@>KZ!(Y5}SR;QK(yz88Lp;Ptz zjP&qC=rGSDZ%2%bQ(YUf_EPN18tFx`s4CXsEzWeN|7+dyUv&V?Bd=ih<$3Wvj76v; z)t+m`!jr$<4P@Ur@{D<*&i>@#y;^2r6xGq>*G*c~rXFIuZvk`A{@C&PHx$mtO*%e| zueG$@_IwliT>rXeDbjs~r;qo6fk{(R-YQoG-OpVAZVYsj9#l}5DHrrf1GZs%UM@=#<9RV#HhaT+_FD{y*qPr zFNd2r`|*1GO1hAGhTv{*&k$~xdDn}g`~O7VOzLwmuxLC$7;b4z*=w~l(>M1vHKG(O zIbR*UG~ryO_!4kd&~u;-wLbDeWpC*NeGie##tqe#v7*=0tkF|%c8utqYrXDgwWi)K zzBt9b(`=E(kX<5PEydV2aKmm1)vY_2HNvBy$)YOG5%;{IYwaQj_@xU!GE zEi>0zd}3%T?FuO3iVL(l7e?>jR+>*P=89_TY9@LvyV9S%;XK`F;=0{MqxGfxbVsF| z`ax!|A2nX~$yjN^Cc1;xXlP}<|I-xf_@#=C_uMc|n@XKD(6z*SED|3v5D++8Hj`$Zef4 z*fGADzC`0h;H{+Q)BgLi8|1cL>a8Kgy-QuNshn^C^yxWhb77Acr_{FqCLb)*|F~Re zv5<4`?2=ahyf;k~ed)%{MYLbb)ru}T)7KZ)lR zQ~F=mUKe#H2PBlXj(4klP(LtEL>S$XIl3yRAYRRenli4;&~YhEX7z9XO)V+y!cA3=8q1>cF=!GGY!h7NQPRr=URcisOeH5CB1 zyDl$3V$kK<8)KW7zc}{&RZui=&m?R46e8c;sXhADg9cZfi^QcYCPNdyau<|#Al|CgaWLt)xg_P35i*{8F zyK{-nha7n~go_>e(^VgA?K^hmxJ7$H2D$56VcN#*2Y2u)Q~7=Qg=YgxELdi_^XE6F zk!3%0s@W6=-Hp+xlU<0;DX!ca2YPNMag4pdtOEDL?(t)BZH0@AHGMZB82W?N9_~Yv z!)e)pW!wL-sA@iOCX7pAj^Li#7+;2uj6DG+dxsq#ra!pbdAR0?R)@E|{VNWcYT8}# z5@urXkN9SH)!(+`G_ii(>#}NL*;`Zr;p5?p2dB+jX};}$7As6g;uBcH)gO;-ue9n!gtepBQ)&H_Vq6d)?`bEuYJG?UKy^&=HtX1s5bC?}mxLSjjpU_) zDKNvU+n$x*kIXugUmvyMVj^pL&!4W{WhJj4rc7rlFI}^4YX6Ie* zx)Gb`%OA5)SB&3YzP1CCsJ(g(EBEAWQ|=?*fOj3v5n6-3eenrhSsoaj{zbc<9pn4d z>DA#+9BGcpB-b?_w2gDIV7AQLwWI=7HFcxnNzqk2Z8gc#bumKI$=@^zYoccyo=QHQ zuREwjIr>ZU`i#y^zh4@=6`;K$*hHtWUDsaPiH?}3jvLO;QdDy9A$qLI8M1i!NY#8= zqk<#!zS>Z{Ro9EYZ^@MEmb+c1F0K`fZRD0oR__w_s)wkSP50iuE9RBCz-I7aXCkI9 z{fe1n#AavP@7vl>3JZVG`oywdD6bvUwu~k;vPPcrk?p(t{KTuPEl5n!)8>NseeLpa zrxL#!DHWA%|11Q~Z?3MovY9{g_Tsa5G9~fCT6dJPC$w3J1fflVkMkNTTfjpxIRX}d zispqun+6!n!a6#P$qoU;a25~*@+}c#RaX#jkYkBhM|8$GhtYswkRB@pJY!wF*s&pO z3I}0rrDzdNg$Q_nmaX2J|K#F4c zVrDdwFEW%+%yHNOBDN3=6N3UiT*Ap@2_nRn2n5s){~RAL%-Q)1Jzw-m1xOEcG&2m1 zMPbl99{O7kk=Q;GBKZ{1fAkP}L3=B-2Otte2-$#rB)}INeoMh&fAJ5C5QfgC!(pR= zP=E(PMNqHU@49qgIJpkOVT9jbvc}A`(NuVsIo1 z8{jZW-%v65A~BQC1|(DvISPb$uq-@@1u!W{77+lD1TF@Pq!5TWq#4ePNHk*-nQRvJ z8wyt;2vsFB^xLQ;R2+zkgriW1c#0Vm4HkN5+w`6f%KK!kB#ptp$W4s1_xxSPTk}n{AN{3>8WTl9nl{RES{K4rN272?3^9 zAoLOlLM;)Jpx_eEFU`)-gyJy8Ogp9+fJiYo0u_U$;z(Xt3>Al`;>k!1k&5{SFW`XO znE!^BOdq(#+@RAz5!8RotZ8mec>>{cPjio<;Ou0A!)K=jmC2qR27(5qG#1m#!_`)s{ zaK%wfAz%{(=?G~B73i#1@D-niYUTI%s9-=c4v=I>sM5YlMnRxIC5x7<7@xDXK>wQ_ z7PEkFmKexy&IT=A&`OB@vJ`&O3ySss`S~;s|IaSq@SmOhkiI|V`YG2BDeyz!pVjqK zt{+n1hrmCp>whMf;@86zz=w7~QP5Fodg0A7=$IwPa&oYP%}Bmkm-Esg%lt69uLuTH zS|quoV8=7GA)~yQ;cPGeTuN6}Yk6i{ZyjXnW7yev`CMlQYR}6K)KF%$T>U$WqZvA#Dgzs25ZW@dT4y6F?y6R8Awmx{p2 zCCYhK(=!SFt1}FbHH2@y(Oc$I&#q*c?b+ow^y*go66M^soDoA4MZSU(-XdmVyRk~p zQZq%8qf+)xo%A8NrqKW8euH`A%G+%8=H+GLFtY6?vPJeb4jrl!Nw7 Date: Wed, 2 Sep 2026 05:52:31 +0000 Subject: [PATCH 043/197] Dragon Animation unsych fix (#45792) * Dragon Animation unsych fix * Update Resources/Textures/Mobs/Aliens/Carps/dragon.rsi/meta.json --------- Co-authored-by: TheShuEd <96445749+TheShuEd@users.noreply.github.com> --- .../Prototypes/Entities/Mobs/Player/dragon.yml | 1 + .../Aliens/Carps/dragon.rsi/crit-unshaded.png | Bin 0 -> 426 bytes .../Mobs/Aliens/Carps/dragon.rsi/meta.json | 5 ++++- 3 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 Resources/Textures/Mobs/Aliens/Carps/dragon.rsi/crit-unshaded.png diff --git a/Resources/Prototypes/Entities/Mobs/Player/dragon.yml b/Resources/Prototypes/Entities/Mobs/Player/dragon.yml index a1b5a5c3c4..95f487ea96 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/dragon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/dragon.yml @@ -66,6 +66,7 @@ BaseUnshaded: alive-unshaded Critical: Base: crit + BaseUnshaded: crit-unshaded Dead: Base: dead BaseUnshaded: dead-unshaded diff --git a/Resources/Textures/Mobs/Aliens/Carps/dragon.rsi/crit-unshaded.png b/Resources/Textures/Mobs/Aliens/Carps/dragon.rsi/crit-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..a84cd2ab89c2653f5042f7375854c68342381585 GIT binary patch literal 426 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sDEfH31!Z9ZwBpk#?_L`iUdT1k0gQ7S_~VrE{6o}X)of~lUN zo}rO2qk9QZ(T>yz&ooa@Ed~xChm}E!k(GfF$npYWX($`y91TWhus9QtZOF*PAPA(R zfHiasoR83s9|rk+A{e0*JXFJ6RV%%$f#dg8&oI zWG1l6AWI7%3#!Y|zyKs0tF$R(N z_w+;kOSfsOKsro*Pp;?W{2Xc7L?Ro`TBId eJ}4Z3;DDp>@@Qjrw}XriL0nH)KbLh*2~7YOh+aMb literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Aliens/Carps/dragon.rsi/meta.json b/Resources/Textures/Mobs/Aliens/Carps/dragon.rsi/meta.json index b29668aed9..edb9eb8cfe 100644 --- a/Resources/Textures/Mobs/Aliens/Carps/dragon.rsi/meta.json +++ b/Resources/Textures/Mobs/Aliens/Carps/dragon.rsi/meta.json @@ -5,7 +5,7 @@ "y": 64 }, "license": "CC-BY-SA-3.0", - "copyright": "Taken from /tg/station at https://github.com/Toastgoats/tgstation/commit/024a840eed2a1be3f72435c2bb39faac8025f822", + "copyright": "Taken from /tg/station at https://github.com/Toastgoats/tgstation/commit/024a840eed2a1be3f72435c2bb39faac8025f822, crit-unshaded created by sir-lutz (Github)", "states": [ { "name": "alive", @@ -70,6 +70,9 @@ { "name": "crit" }, + { + "name": "crit-unshaded" + }, { "name": "dead" }, From 19f3d30756bcb762b454980f3f269899cfa70567 Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Wed, 2 Sep 2026 15:01:25 +0000 Subject: [PATCH 044/197] Change the bug report URL from Github to the Bug Reports forum (#45808) Initial commit --- Resources/ConfigPresets/WizardsDen/wizardsDen.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/ConfigPresets/WizardsDen/wizardsDen.toml b/Resources/ConfigPresets/WizardsDen/wizardsDen.toml index 680b5d0455..6c936532d6 100644 --- a/Resources/ConfigPresets/WizardsDen/wizardsDen.toml +++ b/Resources/ConfigPresets/WizardsDen/wizardsDen.toml @@ -20,7 +20,7 @@ ipintel_bad_rating = 0.99 ipintel_alert_admin_warn_rating = 0.95 [infolinks] -bug_report = "https://github.com/space-wizards/space-station-14/issues/new/choose" +bug_report = "https://forum.spacestation14.com/c/development/bug-reports/53" discord = "https://discord.spacestation14.io" forum = "https://forum.spacestation14.io" github = "https://github.com/space-wizards/space-station-14" From 29699633eba375af7b1f00e6c6a46e4b5acbb547 Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Wed, 2 Sep 2026 17:34:59 +0000 Subject: [PATCH 045/197] Allow feedback pop-ups to show always when opening the feedback window (#45810) * initial commit * Push change --- .../FeedbackPopup/ClientFeedbackManager.cs | 3 +-- .../FeedbackSystem/FeedbackPopupPrototype.cs | 12 +++++++++++- .../SharedFeedbackManager.Events.cs | 1 + .../FeedbackSystem/SharedFeedbackManager.cs | 3 ++- .../FeedbackPopup/feedbackpopups.yml | 18 ++++-------------- 5 files changed, 19 insertions(+), 18 deletions(-) diff --git a/Content.Client/FeedbackPopup/ClientFeedbackManager.cs b/Content.Client/FeedbackPopup/ClientFeedbackManager.cs index 5b2b52b1b7..fecaf80773 100644 --- a/Content.Client/FeedbackPopup/ClientFeedbackManager.cs +++ b/Content.Client/FeedbackPopup/ClientFeedbackManager.cs @@ -34,9 +34,8 @@ public sealed class ClientFeedbackManager : SharedFeedbackManager if (prototypes == null) return; - var count = _displayedPopups.Count; _displayedPopups.UnionWith(prototypes); - InvokeDisplayedPopupsChanged(_displayedPopups.Count > count); + InvokeDisplayedPopupsChanged(false); } /// diff --git a/Content.Shared/FeedbackSystem/FeedbackPopupPrototype.cs b/Content.Shared/FeedbackSystem/FeedbackPopupPrototype.cs index 1ce93e8a9b..3bd1a5b5ac 100644 --- a/Content.Shared/FeedbackSystem/FeedbackPopupPrototype.cs +++ b/Content.Shared/FeedbackSystem/FeedbackPopupPrototype.cs @@ -45,11 +45,21 @@ public sealed partial class FeedbackPopupPrototype : IPrototype [DataField] public string? ResponseLink; + /// + /// Should this feedback always be shown upon opening the feedback window? + /// Ignores and . + /// + /// + /// Still requires a valid origin to display. + /// + [DataField] + public bool AlwaysShow = false; + /// /// Should this feedback be shown when the round ends. /// /// - /// If this is false popups have to be shown to players by running the
feedback:add
command.
+ /// If this and are false, popups have to be shown to players by running the
feedback:add
command.
/// This allows admins to show popups to only specific people. ///
[DataField] diff --git a/Content.Shared/FeedbackSystem/SharedFeedbackManager.Events.cs b/Content.Shared/FeedbackSystem/SharedFeedbackManager.Events.cs index 4e5ce1ee4e..995c1e7e5e 100644 --- a/Content.Shared/FeedbackSystem/SharedFeedbackManager.Events.cs +++ b/Content.Shared/FeedbackSystem/SharedFeedbackManager.Events.cs @@ -17,5 +17,6 @@ public abstract partial class SharedFeedbackManager : IEntityEventSubscriber private void OnFeedbackOriginsUpdated(string newOrigins) { _validOrigins = newOrigins.Split(' ').ToList(); + Display(GetOriginFeedbackPrototypes(false)); } } diff --git a/Content.Shared/FeedbackSystem/SharedFeedbackManager.cs b/Content.Shared/FeedbackSystem/SharedFeedbackManager.cs index 4182060e0a..e0b9038106 100644 --- a/Content.Shared/FeedbackSystem/SharedFeedbackManager.cs +++ b/Content.Shared/FeedbackSystem/SharedFeedbackManager.cs @@ -101,6 +101,7 @@ public abstract partial class SharedFeedbackManager : ISharedFeedbackManager public virtual void Initialize() { InitSubscriptions(); + Display(GetOriginFeedbackPrototypes(false)); } /// @@ -137,7 +138,7 @@ public abstract partial class SharedFeedbackManager : ISharedFeedbackManager public List> GetOriginFeedbackPrototypes(bool roundEndOnly, bool ruleSpecific = false) { var feedbackProtypes = _proto.EnumeratePrototypes() - .Where(x => (!roundEndOnly || x.ShowRoundEnd) && ruleSpecific == (x.RuleWhitelist != null) && _validOrigins.Contains(x.PopupOrigin)) + .Where(x => (roundEndOnly && x.ShowRoundEnd && ruleSpecific == (x.RuleWhitelist != null) || x.AlwaysShow) && _validOrigins.Contains(x.PopupOrigin)) .Select(x => new ProtoId(x.ID)) .OrderBy(x => x.Id) .ToList(); diff --git a/Resources/Prototypes/FeedbackPopup/feedbackpopups.yml b/Resources/Prototypes/FeedbackPopup/feedbackpopups.yml index 4b963e2c91..660193e2f3 100644 --- a/Resources/Prototypes/FeedbackPopup/feedbackpopups.yml +++ b/Resources/Prototypes/FeedbackPopup/feedbackpopups.yml @@ -1,22 +1,12 @@ - type: feedbackPopup - id: FeedbackPopup - popupOrigin: wizden_master - title: "[bold]Feedback on the new feedback popup system[/bold]" - description: |- - This window you are seeing is a new system to get feedback on features. It will give popups at the end of the round (mostly on our testing server Vulture)! - Please share your thoughts through the forums below! Log in with your Space Station 14 account! - responseType: "Feedback Thread" - responseLink: "https://forum.spacestation14.com/t/feedback-popup-feedback/22858" - -- type: feedbackPopup id: GeneralFeedback popupOrigin: wizden_master - title: "[bold]General feedback for the game[/bold]" + title: "[bold]General feedback for Space Station 14[/bold]" description: >- - If you have any feedback on the game, feel free to create a thread in the feedback forum category. - responseType: "General Feedback" + If you have any feedback on the game, please create a thread in the Feedback forum category. Thank you! + responseType: "Forum Link" responseLink: "https://forum.spacestation14.com/c/development/feedback/51" - showRoundEnd: false + alwaysShow: true - type: feedbackPopup id: XenoborgExtractorFeedback From a4956e157c57183c33ba2d82de20e474049c6ade Mon Sep 17 00:00:00 2001 From: UpAndLeaves <92269094+UpAndLeaves@users.noreply.github.com> Date: Wed, 2 Sep 2026 18:13:18 +0000 Subject: [PATCH 046/197] Electrify critical machines (#45400) * Electrify critical machines * whoops * RQC 1 --- .../Structures/Power/Generation/Singularity/emitter.yml | 6 ++++++ .../Entities/Structures/Power/Generation/Tesla/coil.yml | 6 ++++++ .../Entities/Structures/Shuttles/station_anchor.yml | 5 +++++ 3 files changed, 17 insertions(+) diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/emitter.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/emitter.yml index 64360fc49c..c7450d9cdc 100644 --- a/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/emitter.yml +++ b/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/emitter.yml @@ -65,6 +65,12 @@ input: !type:CableDeviceNode nodeGroupID: MVPower + - type: Electrified + onHandInteract: false + onInteractUsing: false + onBump: false + usesApcPower: false + mediumVoltageNode: input - type: Damageable damageModifierSet: PlasteelStaticMod - type: ActiveRadio diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/Tesla/coil.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/Tesla/coil.yml index 2a0f944dad..aed8746e78 100644 --- a/Resources/Prototypes/Entities/Structures/Power/Generation/Tesla/coil.yml +++ b/Resources/Prototypes/Entities/Structures/Power/Generation/Tesla/coil.yml @@ -75,6 +75,12 @@ - type: PowerNetworkBattery maxSupply: 350000 supplyRampTolerance: 350000 + - type: Electrified + onHandInteract: false + onInteractUsing: false + onBump: false + usesApcPower: false + highVoltageNode: input - type: Anchorable - type: Rotatable - type: Pullable diff --git a/Resources/Prototypes/Entities/Structures/Shuttles/station_anchor.yml b/Resources/Prototypes/Entities/Structures/Shuttles/station_anchor.yml index f3b404de51..54e4714d8b 100644 --- a/Resources/Prototypes/Entities/Structures/Shuttles/station_anchor.yml +++ b/Resources/Prototypes/Entities/Structures/Shuttles/station_anchor.yml @@ -70,6 +70,11 @@ - type: ApcPowerReceiver powerLoad: 2500 - type: ExtensionCableReceiver + - type: Electrified + onHandInteract: false + onInteractUsing: false + onBump: false + usesApcPower: true - type: Repairable fuelCost: 10 doAfterDelay: 5 From 494ba581aacd67245314c2b989292f41c4010ba2 Mon Sep 17 00:00:00 2001 From: marsh-meadows <72937978+marsh-meadows@users.noreply.github.com> Date: Wed, 2 Sep 2026 18:39:24 +0000 Subject: [PATCH 047/197] Correct kimono jumpsuit's description (#45812) fix kimono description --- .../Entities/Clothing/Uniforms/Jumpsuits/civilian.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/Jumpsuits/civilian.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/Jumpsuits/civilian.yml index 27621afaff..9c3ff0831f 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/Jumpsuits/civilian.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/Jumpsuits/civilian.yml @@ -13,7 +13,7 @@ parent: ClothingUniformBase id: ClothingUniformJumpsuitKimono name: kimono - description: Traditional chinese clothing. + description: Traditional Japanese clothing. components: - type: Sprite sprite: Clothing/Uniforms/Jumpsuits/Civilian/kimono.rsi From 33f899f656a06833ea4158187006bb6611e89c29 Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Thu, 3 Sep 2026 11:03:46 +0000 Subject: [PATCH 048/197] Add a Report Bugs button to the escape menu (#45807) * Initial commit * refactor: cleanup of related code --------- Co-authored-by: Fildrance --- Content.Client/Info/DevInfoBanner.cs | 10 +++---- Content.Client/Options/UI/EscapeMenu.xaml | 3 ++- Content.Client/Options/UI/EscapeMenu.xaml.cs | 26 +++++++++++++++---- .../en-US/escape-menu/ui/escape-menu.ftl | 1 + 4 files changed, 27 insertions(+), 13 deletions(-) diff --git a/Content.Client/Info/DevInfoBanner.cs b/Content.Client/Info/DevInfoBanner.cs index 0599b355f5..0bfa0e9bde 100644 --- a/Content.Client/Info/DevInfoBanner.cs +++ b/Content.Client/Info/DevInfoBanner.cs @@ -1,12 +1,8 @@ -using Content.Client.Changelog; using Content.Client.Credits; using Content.Shared.CCVar; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using Robust.Shared.Configuration; -using Robust.Shared.IoC; -using Robust.Shared.Localization; -using Robust.Shared.Utility; namespace Content.Client.Info { @@ -23,15 +19,15 @@ namespace Content.Client.Info var cfg = IoCManager.Resolve(); var bugReport = cfg.GetCVar(CCVars.InfoLinksBugReport); - if (bugReport != "") + if (!string.IsNullOrWhiteSpace(bugReport)) { var reportButton = new Button {Text = Loc.GetString("server-info-report-button")}; - reportButton.OnPressed += args => uriOpener.OpenUri(bugReport); + reportButton.OnPressed += _ => uriOpener.OpenUri(bugReport); buttons.AddChild(reportButton); } var creditsButton = new Button {Text = Loc.GetString("server-info-credits-button")}; - creditsButton.OnPressed += args => new CreditsWindow().Open(); + creditsButton.OnPressed += _ => new CreditsWindow().Open(); buttons.AddChild(creditsButton); } } diff --git a/Content.Client/Options/UI/EscapeMenu.xaml b/Content.Client/Options/UI/EscapeMenu.xaml index 05566d8257..7d3f78bcd1 100644 --- a/Content.Client/Options/UI/EscapeMenu.xaml +++ b/Content.Client/Options/UI/EscapeMenu.xaml @@ -1,4 +1,4 @@ -
public sealed partial class PlantMutationSystem : EntitySystem { - private static readonly ProtoId RandomPlantMutations = "RandomPlantMutations"; - private RandomPlantMutationListPrototype _randomMutations = default!; - [Dependency] private INetManager _net = default!; [Dependency] private IRobustRandom _random = default!; [Dependency] private BotanySystem _botany = default!; @@ -32,30 +29,33 @@ public sealed partial class PlantMutationSystem : EntitySystem [Dependency] private EntityQuery _chemicalsQuery = default!; [Dependency] private EntityQuery _plantQuery = default!; - public override void Initialize() - { - _randomMutations = ProtoMan.Index(RandomPlantMutations); - } - /// + /// For each mutation table, go through each mutation. /// For each random mutation, see if it occurs on this plant this check. /// [PublicAPI] - public void CheckRandomMutations(Entity ent, float severity) + public void CheckRandomMutations(Entity ent, ProtoId mutationTableId, float severity) { if (!Resolve(ent, ref ent.Comp, false)) return; - foreach (var mutation in _randomMutations.Mutations) + var mutationTable = ProtoMan.Index(mutationTableId); + foreach (var mutation in mutationTable.Mutations) { - if (Random(Math.Min(mutation.BaseOdds * severity, 1.0f))) + var triggers = 0; + while (mutation.BaseOdds * severity > triggers) // If the odds are greater than one, potentially trigger the mutation multiple times { - if (mutation.AppliesToPlant) - _entityEffects.TryApplyEffect(ent, mutation.Effect); + var odds = mutation.BaseOdds * severity - triggers; + triggers++; + if (Random(Math.Min(odds, 1.0f))) + { + if (mutation.AppliesToPlant) + _entityEffects.TryApplyEffect(ent, mutation.Effect); - // Stat adjustments do not persist by being an attached effect, they just change the stat. - if (mutation.Persists && ent.Comp.Mutations.All(m => m.Name != mutation.Name)) - ent.Comp.Mutations.Add(mutation); + // Stat adjustments do not persist by being an attached effect, they just change the stat. + if (mutation.Persists && ent.Comp.Mutations.All(m => m.Name != mutation.Name)) + ent.Comp.Mutations.Add(mutation); + } } } } diff --git a/Content.Shared/Botany/Systems/PlantChemicalsSystem.cs b/Content.Shared/Botany/Systems/PlantChemicalsSystem.cs index 25c6697f19..21f8661e70 100644 --- a/Content.Shared/Botany/Systems/PlantChemicalsSystem.cs +++ b/Content.Shared/Botany/Systems/PlantChemicalsSystem.cs @@ -4,6 +4,7 @@ using Content.Shared.Botany.Events; using Content.Shared.FixedPoint; using Content.Shared.Random; using Content.Shared.Random.Helpers; +using Robust.Shared.Prototypes; using Robust.Shared.Timing; namespace Content.Shared.Botany.Systems; @@ -31,13 +32,48 @@ public sealed partial class PlantChemicalsSystem : EntitySystem /// Adds a random chemical to the plant chemicals. ///
[PublicAPI] - public void MutateRandomChemical(Entity ent, WeightedRandomFillSolutionPrototype randomChems) + public void MutateRandomChemical(Entity ent, IReadOnlyList> randomChemTables) { if (!Resolve(ent, ref ent.Comp, false)) return; + var totalWeight = 0f; + foreach (var table in randomChemTables) + { + foreach (var fill in ProtoMan.Index(table).Fills) + { + totalWeight += fill.Weight; + } + } + + if (totalWeight <= 0f) + return; + var random = SharedRandomExtensions.PredictedRandom(_timing, GetNetEntity(ent)); - var (chemicalId, quantity) = randomChems.Pick(random); + var selectedWeight = random.NextFloat() * totalWeight; + var accumulatedWeight = 0f; + WeightedRandomFillSolutionPrototype? selectedTable = null; + + foreach (var table in randomChemTables) + { + var tableProto = ProtoMan.Index(table); + foreach (var fill in tableProto.Fills) + { + accumulatedWeight += fill.Weight; + } + + if (accumulatedWeight > selectedWeight) + { + selectedTable = tableProto; + break; + } + } + + if (selectedTable == null) + return; + + var (chemicalId, quantity) = selectedTable.Pick(random); + var amount = FixedPoint2.Max(random.NextFloat(0f, 1f) * quantity, FixedPoint2.Epsilon); var seedChemQuantity = new PlantChemQuantity(); if (ent.Comp.Chemicals.TryGetValue(chemicalId, out var value)) diff --git a/Content.Shared/Botany/Systems/PlantHolderSystem.cs b/Content.Shared/Botany/Systems/PlantHolderSystem.cs index 349827140f..8fb93258ac 100644 --- a/Content.Shared/Botany/Systems/PlantHolderSystem.cs +++ b/Content.Shared/Botany/Systems/PlantHolderSystem.cs @@ -3,6 +3,7 @@ using Content.Shared.Botany.Components; using Content.Shared.Cloning.Events; using Content.Shared.Damage.Systems; using Robust.Shared.Serialization.Manager; +using Robust.Shared.Prototypes; namespace Content.Shared.Botany.Systems; @@ -54,14 +55,18 @@ public sealed partial class PlantHolderSystem : EntitySystem /// Adjusts the mutation level of the plant. ///
[PublicAPI] - public void AdjustsMutationLevel(Entity ent, float amount) + public void AdjustsMutationLevel(Entity ent, ProtoId mutationTableId, float amount) { if (!Resolve(ent.Owner, ref ent.Comp)) return; - ent.Comp.MutationLevel += amount * ent.Comp.MutationMod; - ent.Comp.MutationLevel = MathHelper.Clamp(ent.Comp.MutationLevel, 0f, ent.Comp.MaxMutationLevel); - DirtyField(ent, nameof(ent.Comp.MutationLevel)); + var mutationTable = ProtoMan.Index(mutationTableId); + + var current = ent.Comp.MutationLevels.GetValueOrDefault(mutationTableId); + var adjustmentAmount = mutationTable.IgnoreMutationMod ? amount : amount * ent.Comp.MutationMod; + + ent.Comp.MutationLevels[mutationTableId] = MathHelper.Clamp(current + adjustmentAmount, 0f, ent.Comp.MaxMutationLevel); + DirtyField(ent, nameof(ent.Comp.MutationLevels)); CheckHealth(ent); } diff --git a/Content.Shared/Botany/Systems/PlantSystem.cs b/Content.Shared/Botany/Systems/PlantSystem.cs index 247aaf825c..28ce580851 100644 --- a/Content.Shared/Botany/Systems/PlantSystem.cs +++ b/Content.Shared/Botany/Systems/PlantSystem.cs @@ -135,11 +135,15 @@ public sealed partial class PlantSystem : EntitySystem RaiseLocalEvent(ent.Owner, ref plantGrow); // Process mutations. - if (ent.Comp.MutationLevel > 0) + foreach (var mutationTable in ent.Comp.MutationLevels.Keys) { - _mutation.CheckRandomMutations(ent.Owner, Math.Min(ent.Comp.MutationLevel, ent.Comp.MaxMutationLevel)); - ent.Comp.MutationLevel = 0; - DirtyField(ent, ent.Comp, nameof(ent.Comp.MutationLevel)); + var mutationBuildup = ent.Comp.MutationLevels[mutationTable]; + if (mutationBuildup <= 0) + continue; + + ent.Comp.MutationLevels[mutationTable] = 0; + DirtyField(ent, ent.Comp, nameof(ent.Comp.MutationLevels)); + _mutation.CheckRandomMutations(ent.Owner, mutationTable, Math.Min(mutationBuildup, ent.Comp.MaxMutationLevel)); } if (ent.Comp.Health <= 0) diff --git a/Content.Shared/EntityEffects/Effects/Botany/PlantAttributes/PlantAdjustMutationLevelEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/Botany/PlantAttributes/PlantAdjustMutationLevelEntityEffectSystem.cs index 8beed62797..cd6e38198b 100644 --- a/Content.Shared/EntityEffects/Effects/Botany/PlantAttributes/PlantAdjustMutationLevelEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/Botany/PlantAttributes/PlantAdjustMutationLevelEntityEffectSystem.cs @@ -1,5 +1,6 @@ using Content.Shared.Botany.Components; using Content.Shared.Botany.Systems; +using Robust.Shared.Prototypes; namespace Content.Shared.EntityEffects.Effects.Botany.PlantAttributes; @@ -16,12 +17,18 @@ public sealed partial class PlantAdjustMutationLevelEntityEffectSystem : EntityE if (_plantHolder.IsDead(entity.Owner)) return; - _plantHolder.AdjustsMutationLevel(entity.Owner, args.Effect.Amount); + _plantHolder.AdjustsMutationLevel(entity.Owner, args.Effect.MutationTable, args.Effect.Amount); } } /// public sealed partial class PlantAdjustMutationLevel : BasePlantAdjustAttribute { + /// + /// The mutation table whose level is adjusted. + /// + [DataField(required: true)] + public ProtoId MutationTable; + public override string GuidebookAttributeName { get; set; } = "plant-attribute-mutation-level"; } diff --git a/Content.Shared/EntityEffects/Effects/Botany/PlantMutateChemicalsEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/Botany/PlantMutateChemicalsEntityEffectSystem.cs index aef16c7bb5..7556ee2dd0 100644 --- a/Content.Shared/EntityEffects/Effects/Botany/PlantMutateChemicalsEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/Botany/PlantMutateChemicalsEntityEffectSystem.cs @@ -16,8 +16,7 @@ public sealed partial class PlantMutateChemicalsEntityEffectSystem : EntityEffec protected override void Effect(Entity entity, ref EntityEffectEvent args) { - var randomChems = ProtoMan.Index(args.Effect.RandomPickBotanyReagent); - _plantChemicals.MutateRandomChemical(entity.Owner, randomChems); + _plantChemicals.MutateRandomChemical(entity.Owner, args.Effect.RandomChemTables); } } @@ -25,10 +24,10 @@ public sealed partial class PlantMutateChemicalsEntityEffectSystem : EntityEffec public sealed partial class PlantMutateChemicals : EntityEffectBase { /// - /// The Reagent list this mutation draws from. + /// Chemical tables from which this mutation can select. /// - [DataField] - public ProtoId RandomPickBotanyReagent = "RandomPickBotanyReagent"; + [DataField(required: true)] + public List> RandomChemTables = []; /// public override string EntityEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys) @@ -36,17 +35,20 @@ public sealed partial class PlantMutateChemicals : EntityEffectBase(); // If your table doesn't exist, no guidebook for you! - if (!prototype.Resolve(RandomPickBotanyReagent, out var table)) - return string.Empty; - - foreach (var fill in table.Fills) + foreach (var tableId in RandomChemTables) { - foreach (var reagent in fill.Reagents) - { - if (!prototype.Resolve(reagent, out var proto)) - continue; + if (!prototype.Resolve(tableId, out var table)) + continue; - list.Add(proto.LocalizedName); + foreach (var fill in table.Fills) + { + foreach (var reagent in fill.Reagents) + { + if (!prototype.Resolve(reagent, out var reagentPrototype)) + continue; + + list.Add(reagentPrototype.LocalizedName); + } } } diff --git a/Resources/Prototypes/Hydroponics/randomChemicals.yml b/Resources/Prototypes/Hydroponics/randomChemicals.yml index c611c26599..c5eb85d0cd 100644 --- a/Resources/Prototypes/Hydroponics/randomChemicals.yml +++ b/Resources/Prototypes/Hydroponics/randomChemicals.yml @@ -1,5 +1,5 @@ - type: weightedRandomFillSolution - id: RandomPickBotanyReagent + id: RandomPickBotanyGeneralReagent fills: - quantity: 5 weight: 0.5 @@ -84,6 +84,10 @@ - Copper - Sulfur - Lithium + +- type: weightedRandomFillSolution + id: RandomPickBotanyFarmingReagent + fills: - quantity: 10 # Basic Farming Table weight: 5 reagents: diff --git a/Resources/Prototypes/Hydroponics/randomMutations.yml b/Resources/Prototypes/Hydroponics/randomMutations.yml index 28672c8746..f2c6a64bd2 100644 --- a/Resources/Prototypes/Hydroponics/randomMutations.yml +++ b/Resources/Prototypes/Hydroponics/randomMutations.yml @@ -1,5 +1,6 @@ - type: randomPlantMutationList id: RandomPlantMutations + ignoreMutationMod: false mutations: - name: Sentient description: mutation-plant-sentient @@ -241,6 +242,9 @@ baseOdds: 0.072 persists: false effect: !type:PlantMutateChemicals + randomChemTables: + - RandomPickBotanyGeneralReagent + - RandomPickBotanyFarmingReagent - name: ChangeExudeGasses baseOdds: 0.0145 persists: false @@ -253,3 +257,14 @@ baseOdds: 0.036 persists: false effect: !type:PlantMutateHarvest + +- type: randomPlantMutationList + id: EvilPlantMutations + ignoreMutationMod: true + mutations: + - name: MutateEvilChemicals + baseOdds: 1 + persists: false + effect: !type:PlantMutateChemicals + randomChemTables: + - EvilRandomFillSolution diff --git a/Resources/Prototypes/Reagents/elements.yml b/Resources/Prototypes/Reagents/elements.yml index aa59d724e7..e527f643bd 100644 --- a/Resources/Prototypes/Reagents/elements.yml +++ b/Resources/Prototypes/Reagents/elements.yml @@ -323,6 +323,7 @@ plantMetabolism: - !type:PlantAdjustMutationLevel amount: 0.6 + mutationTable: RandomPlantMutations - !type:PlantAdjustToxins amount: 4 - !type:PlantAdjustHealth diff --git a/Resources/Prototypes/Reagents/toxins.yml b/Resources/Prototypes/Reagents/toxins.yml index 4c8824e9a5..90e6c11518 100644 --- a/Resources/Prototypes/Reagents/toxins.yml +++ b/Resources/Prototypes/Reagents/toxins.yml @@ -292,6 +292,7 @@ plantMetabolism: - !type:PlantAdjustMutationLevel amount: 1 + mutationTable: RandomPlantMutations metabolisms: Bloodstream: effects: @@ -624,8 +625,9 @@ flavor: medicine color: "#435166" plantMetabolism: - - !type:PlantMutateChemicals - randomPickBotanyReagent: EvilRandomFillSolution + - !type:PlantAdjustMutationLevel + amount: 1 + mutationTable: EvilPlantMutations - !type:PlantAdjustToxins amount: 10 metabolisms: From b1323acc4326fa5f5fb061a7e122f472bab246f1 Mon Sep 17 00:00:00 2001 From: SlothBasket Date: Thu, 3 Sep 2026 14:57:34 +0000 Subject: [PATCH 050/197] Botany Refactor Bugfixes and Value adjustments (#45752) * Fixes Cryoxadone De-Age, properly adjusts lastHarvest. If age would be reduced below 0 reverts plant to seed with current genetics. * Botany Bugfixes. Cryoxadone De-Age fix. Cryox Regression to seed re-added. Seedless Produce no longer have seeds. Proper Temp tollerance ranges restored. Production no longer clamped to maturation. * Restore Content Server+Client run configuration * Fix formatting in Content Server+Client run configuration * Address botany review feedback * review * fix weed * fix * fix 2 * Update PlantSystem.cs * refactor: revert to EntityTerminatingEvent and leave warning for next generations --------- Co-authored-by: Pok245 <113675512+Pok27@users.noreply.github.com> Co-authored-by: Fildrance --- .../Botany/Systems/PlantAtmosphericSystem.cs | 2 +- .../Botany/Components/PlantComponent.cs | 2 +- .../Botany/Components/PlantTrayComponent.cs | 4 +- .../Botany/Items/Systems/BotanyHoeSystem.cs | 4 +- .../Items/Systems/BotanyProduceSystem.cs | 2 +- .../Items/Systems/BotanySampleTakerSystem.cs | 6 +-- .../Botany/Items/Systems/BotanySeedSystem.cs | 9 ++-- .../Items/Systems/BotanyShovelSystem.cs | 4 +- .../Botany/Items/Systems/BotanySwabSystem.cs | 4 +- .../Botany/Systems/BotanySystem.Produce.cs | 2 +- .../Botany/Systems/BotanySystem.Seed.cs | 31 +++++++++++- .../Botany/Systems/MutationSystem.cs | 6 +-- .../Botany/Systems/PlantChemicalsSystem.cs | 2 +- .../Botany/Systems/PlantGrowthSystem.cs | 6 +-- .../Botany/Systems/PlantHarvestSystem.cs | 23 +++++++-- .../Botany/Systems/PlantHolderSystem.cs | 4 +- Content.Shared/Botany/Systems/PlantSystem.cs | 17 +++---- .../Botany/Systems/PlantTraySystem.cs | 49 ++++++++++--------- .../Botany/Systems/PlantWeedPestSystem.cs | 14 ++++-- .../Botany/Systems/SeedExtractorSystem.cs | 10 ++-- .../Systems/SharedPlantAtmosphericSystem.cs | 2 +- .../SharedPlantConsumeExudeGasSystem.cs | 2 +- .../Traits/Systems/PlantTraitKudzuSystem.cs | 4 +- .../Systems/PlantTraitLigneousSystem.cs | 5 +- .../PlantCryoxadoneEntityEffectSystem.cs | 9 +++- .../Prototypes/Entities/Mobs/Player/clone.yml | 2 +- 26 files changed, 135 insertions(+), 90 deletions(-) diff --git a/Content.Server/Botany/Systems/PlantAtmosphericSystem.cs b/Content.Server/Botany/Systems/PlantAtmosphericSystem.cs index 96efa20ff7..6ec902ee0c 100644 --- a/Content.Server/Botany/Systems/PlantAtmosphericSystem.cs +++ b/Content.Server/Botany/Systems/PlantAtmosphericSystem.cs @@ -11,7 +11,7 @@ public sealed partial class PlantAtmosphericSystem : SharedPlantAtmosphericSyste [Dependency] private AtmosphereSystem _atmosphere = default!; [Dependency] private PlantHolderSystem _plantHolder = default!; - [Dependency] private EntityQuery _holderQuery = default!; + [Dependency] private EntityQuery _holderQuery; [SubscribeLocalEvent] private void OnPlantGrow(Entity ent, ref PlantGrowEvent args) diff --git a/Content.Shared/Botany/Components/PlantComponent.cs b/Content.Shared/Botany/Components/PlantComponent.cs index aef62be0dc..06feb41f3b 100644 --- a/Content.Shared/Botany/Components/PlantComponent.cs +++ b/Content.Shared/Botany/Components/PlantComponent.cs @@ -48,7 +48,7 @@ public sealed partial class PlantComponent : Component public float Maturation; /// - /// The number of growth ticks it takes for a plant to be (re-)harvestable. Shouldn't be lower than . + /// The number of growth ticks it takes for a plant to be (re-)harvestable. /// [DataField, AutoNetworkedField] public float Production; diff --git a/Content.Shared/Botany/Components/PlantTrayComponent.cs b/Content.Shared/Botany/Components/PlantTrayComponent.cs index 99c60d985a..d510be4ffe 100644 --- a/Content.Shared/Botany/Components/PlantTrayComponent.cs +++ b/Content.Shared/Botany/Components/PlantTrayComponent.cs @@ -62,13 +62,13 @@ public sealed partial class PlantTrayComponent : Component /// Chance per tick for weeds to grow around this tray. ///
[DataField, AutoNetworkedField] - public float WeedGrowthChance = 0.05f; + public float WeedGrowthChance = 0.01f; /// /// Amount of weed growth per successful weed tray tick. /// [DataField, AutoNetworkedField] - public float WeedGrowthAmount = 0.1f; + public float WeedGrowthAmount = 0.5f; /// /// Multiplier for weed growth rate. diff --git a/Content.Shared/Botany/Items/Systems/BotanyHoeSystem.cs b/Content.Shared/Botany/Items/Systems/BotanyHoeSystem.cs index 750f166d50..92531b3a7d 100644 --- a/Content.Shared/Botany/Items/Systems/BotanyHoeSystem.cs +++ b/Content.Shared/Botany/Items/Systems/BotanyHoeSystem.cs @@ -18,8 +18,8 @@ public sealed partial class BotanyHoeSystem : EntitySystem [Dependency] private PlantSystem _plant = default!; [Dependency] private SharedPopupSystem _popup = default!; - [Dependency] private EntityQuery _plantQuery = default!; - [Dependency] private EntityQuery _trayQuery = default!; + [Dependency] private EntityQuery _plantQuery; + [Dependency] private EntityQuery _trayQuery; [SubscribeLocalEvent] private void OnAfterInteract(Entity ent, ref AfterInteractEvent args) diff --git a/Content.Shared/Botany/Items/Systems/BotanyProduceSystem.cs b/Content.Shared/Botany/Items/Systems/BotanyProduceSystem.cs index 21fa0f0aee..6a26d49f07 100644 --- a/Content.Shared/Botany/Items/Systems/BotanyProduceSystem.cs +++ b/Content.Shared/Botany/Items/Systems/BotanyProduceSystem.cs @@ -22,7 +22,7 @@ public sealed partial class BotanyProduceSystem : EntitySystem [Dependency] private SharedPopupSystem _popup = default!; [Dependency] private SharedSolutionContainerSystem _solutionContainer = default!; - [Dependency] private EntityQuery _trayQuery = default!; + [Dependency] private EntityQuery _trayQuery; [SubscribeLocalEvent] private void OnAfterInteract(Entity ent, ref AfterInteractEvent args) diff --git a/Content.Shared/Botany/Items/Systems/BotanySampleTakerSystem.cs b/Content.Shared/Botany/Items/Systems/BotanySampleTakerSystem.cs index 695baad698..f22a6624b3 100644 --- a/Content.Shared/Botany/Items/Systems/BotanySampleTakerSystem.cs +++ b/Content.Shared/Botany/Items/Systems/BotanySampleTakerSystem.cs @@ -22,9 +22,9 @@ public sealed partial class BotanySampleTakerSystem : EntitySystem [Dependency] private PlantSystem _plant = default!; [Dependency] private SharedPopupSystem _popup = default!; - [Dependency] private EntityQuery _holderQuery = default!; - [Dependency] private EntityQuery _dataQuery = default!; - [Dependency] private EntityQuery _plantQuery = default!; + [Dependency] private EntityQuery _holderQuery; + [Dependency] private EntityQuery _dataQuery; + [Dependency] private EntityQuery _plantQuery; [SubscribeLocalEvent] private void OnAfterInteract(Entity ent, ref AfterInteractEvent args) diff --git a/Content.Shared/Botany/Items/Systems/BotanySeedSystem.cs b/Content.Shared/Botany/Items/Systems/BotanySeedSystem.cs index 572d0d1c1d..087a617c2b 100644 --- a/Content.Shared/Botany/Items/Systems/BotanySeedSystem.cs +++ b/Content.Shared/Botany/Items/Systems/BotanySeedSystem.cs @@ -22,9 +22,9 @@ public sealed partial class BotanySeedSystem : EntitySystem [Dependency] private PlantTraySystem _plantTray = default!; [Dependency] private SharedPopupSystem _popup = default!; - [Dependency] private EntityQuery _dataQuery = default!; - [Dependency] private EntityQuery _trayQuery = default!; - [Dependency] private EntityQuery _labelQuery = default!; + [Dependency] private EntityQuery _dataQuery; + [Dependency] private EntityQuery _trayQuery; + [Dependency] private EntityQuery _labelQuery; [SubscribeLocalEvent] private void OnAfterInteract(Entity ent, ref AfterInteractEvent args) @@ -64,8 +64,7 @@ public sealed partial class BotanySeedSystem : EntitySystem _popup.PopupCursor(Loc.GetString("plant-component-plant-success-popup", ("seedName", name), ("seedNoun", noun)), - args.User, - PopupType.Medium); + args.User); if (_labelQuery.TryComp(args.Seed, out var paperLabel)) _itemSlots.TryEjectToHands(args.Seed, paperLabel.LabelSlot, args.User); diff --git a/Content.Shared/Botany/Items/Systems/BotanyShovelSystem.cs b/Content.Shared/Botany/Items/Systems/BotanyShovelSystem.cs index 4dd6c716a7..e53537aabc 100644 --- a/Content.Shared/Botany/Items/Systems/BotanyShovelSystem.cs +++ b/Content.Shared/Botany/Items/Systems/BotanyShovelSystem.cs @@ -18,8 +18,8 @@ public sealed partial class BotanyShovelSystem : EntitySystem [Dependency] private PlantTraySystem _plantTray = default!; [Dependency] private SharedPopupSystem _popup = default!; - [Dependency] private EntityQuery _plantQuery = default!; - [Dependency] private EntityQuery _trayQuery = default!; + [Dependency] private EntityQuery _plantQuery; + [Dependency] private EntityQuery _trayQuery; [SubscribeLocalEvent] private void OnAfterInteract(Entity ent, ref AfterInteractEvent args) diff --git a/Content.Shared/Botany/Items/Systems/BotanySwabSystem.cs b/Content.Shared/Botany/Items/Systems/BotanySwabSystem.cs index 94916ec6bc..5b9b6fb136 100644 --- a/Content.Shared/Botany/Items/Systems/BotanySwabSystem.cs +++ b/Content.Shared/Botany/Items/Systems/BotanySwabSystem.cs @@ -1,7 +1,7 @@ using Content.Shared.Botany.Components; +using Content.Shared.Botany.Events; using Content.Shared.Botany.Items.Components; using Content.Shared.Botany.Systems; -using Content.Shared.Botany.Events; using Content.Shared.DoAfter; using Content.Shared.Examine; using Content.Shared.Interaction; @@ -17,7 +17,7 @@ public sealed partial class BotanySwabSystem : EntitySystem [Dependency] private SharedDoAfterSystem _doAfter = default!; [Dependency] private SharedPopupSystem _popup = default!; - [Dependency] private EntityQuery _plantQuery = default!; + [Dependency] private EntityQuery _plantQuery; /// /// This handles swab examination text diff --git a/Content.Shared/Botany/Systems/BotanySystem.Produce.cs b/Content.Shared/Botany/Systems/BotanySystem.Produce.cs index f1b8c1463b..535a3a48be 100644 --- a/Content.Shared/Botany/Systems/BotanySystem.Produce.cs +++ b/Content.Shared/Botany/Systems/BotanySystem.Produce.cs @@ -1,10 +1,10 @@ -using JetBrains.Annotations; using Content.Shared.Botany.Components; using Content.Shared.Botany.Items.Components; using Content.Shared.EntityEffects; using Content.Shared.Examine; using Content.Shared.FixedPoint; using Content.Shared.Random.Helpers; +using JetBrains.Annotations; using Robust.Shared.Map; using Robust.Shared.Random; diff --git a/Content.Shared/Botany/Systems/BotanySystem.Seed.cs b/Content.Shared/Botany/Systems/BotanySystem.Seed.cs index 4e9e13a8be..93efbbfb09 100644 --- a/Content.Shared/Botany/Systems/BotanySystem.Seed.cs +++ b/Content.Shared/Botany/Systems/BotanySystem.Seed.cs @@ -1,4 +1,3 @@ -using JetBrains.Annotations; using System.Diagnostics.CodeAnalysis; using Content.Shared.Botany.Components; using Content.Shared.Botany.Items.Components; @@ -7,6 +6,7 @@ using Content.Shared.Cloning; using Content.Shared.Examine; using Content.Shared.Hands.EntitySystems; using Content.Shared.Random; +using JetBrains.Annotations; using Robust.Shared.Map; using Robust.Shared.Prototypes; using Robust.Shared.Timing; @@ -179,4 +179,33 @@ public sealed partial class BotanySystem : EntitySystem _hands.TryPickupAnyHand(user, seedItem); return seedItem; } + + /// + /// Reverts a planted plant back into a seed packet while preserving its genetics. + /// + [PublicAPI] + public bool TryRevertPlantToSeed(Entity ent) + { + if (!Resolve(ent, ref ent.Comp1, ref ent.Comp2, false)) + return false; + + if (!_plant.TryGetTray(ent.Owner, out var tray)) + return false; + + if (!ProtoMan.Resolve(ent.Comp2.PacketPrototype, out var seedProto) + || !seedProto.TryComp(out var seedComp, _componentFactory)) + { + return false; + } + + SpawnSeedPacket( + ent.Comp2, + seedComp.PlantProtoId, + ent.Owner, + Transform(tray).Coordinates, + tray.Owner); + + _plant.RemovePlant(ent.Owner); + return true; + } } diff --git a/Content.Shared/Botany/Systems/MutationSystem.cs b/Content.Shared/Botany/Systems/MutationSystem.cs index d683a6c94f..00135c5163 100644 --- a/Content.Shared/Botany/Systems/MutationSystem.cs +++ b/Content.Shared/Botany/Systems/MutationSystem.cs @@ -1,10 +1,10 @@ -using JetBrains.Annotations; using System.Linq; using Content.Shared.Atmos; using Content.Shared.Botany.Components; using Content.Shared.Botany.Traits.Components; using Content.Shared.Chemistry.Reagent; using Content.Shared.EntityEffects; +using JetBrains.Annotations; using Robust.Shared.Network; using Robust.Shared.Prototypes; using Robust.Shared.Random; @@ -26,8 +26,8 @@ public sealed partial class PlantMutationSystem : EntitySystem [Dependency] private PlantTraySystem _plantTray = default!; [Dependency] private SharedEntityEffectsSystem _entityEffects = default!; - [Dependency] private EntityQuery _chemicalsQuery = default!; - [Dependency] private EntityQuery _plantQuery = default!; + [Dependency] private EntityQuery _chemicalsQuery; + [Dependency] private EntityQuery _plantQuery; /// /// For each mutation table, go through each mutation. diff --git a/Content.Shared/Botany/Systems/PlantChemicalsSystem.cs b/Content.Shared/Botany/Systems/PlantChemicalsSystem.cs index 21f8661e70..2de0e22edb 100644 --- a/Content.Shared/Botany/Systems/PlantChemicalsSystem.cs +++ b/Content.Shared/Botany/Systems/PlantChemicalsSystem.cs @@ -1,9 +1,9 @@ -using JetBrains.Annotations; using Content.Shared.Botany.Components; using Content.Shared.Botany.Events; using Content.Shared.FixedPoint; using Content.Shared.Random; using Content.Shared.Random.Helpers; +using JetBrains.Annotations; using Robust.Shared.Prototypes; using Robust.Shared.Timing; diff --git a/Content.Shared/Botany/Systems/PlantGrowthSystem.cs b/Content.Shared/Botany/Systems/PlantGrowthSystem.cs index 5074a3b173..38534f3d43 100644 --- a/Content.Shared/Botany/Systems/PlantGrowthSystem.cs +++ b/Content.Shared/Botany/Systems/PlantGrowthSystem.cs @@ -1,7 +1,7 @@ -using JetBrains.Annotations; using Content.Shared.Botany.Components; using Content.Shared.Botany.Events; using Content.Shared.Random.Helpers; +using JetBrains.Annotations; using Robust.Shared.Random; using Robust.Shared.Timing; @@ -20,8 +20,8 @@ public sealed partial class PlantGrowthSystem : EntitySystem [Dependency] private PlantHolderSystem _plantHolder = default!; [Dependency] private PlantTraySystem _plantTray = default!; - [Dependency] private EntityQuery _holderQuery = default!; - [Dependency] private EntityQuery _trayQuery = default!; + [Dependency] private EntityQuery _holderQuery; + [Dependency] private EntityQuery _trayQuery; [SubscribeLocalEvent] private void OnCrossPollinate(Entity ent, ref PlantCrossPollinateEvent args) diff --git a/Content.Shared/Botany/Systems/PlantHarvestSystem.cs b/Content.Shared/Botany/Systems/PlantHarvestSystem.cs index e3c53fb56e..646161a883 100644 --- a/Content.Shared/Botany/Systems/PlantHarvestSystem.cs +++ b/Content.Shared/Botany/Systems/PlantHarvestSystem.cs @@ -1,10 +1,10 @@ -using JetBrains.Annotations; using Content.Shared.Administration.Logs; using Content.Shared.Botany.Components; using Content.Shared.Botany.Events; using Content.Shared.Database; using Content.Shared.Interaction; using Content.Shared.Popups; +using JetBrains.Annotations; namespace Content.Shared.Botany.Systems; @@ -21,10 +21,10 @@ public sealed partial class PlantHarvestSystem : EntitySystem [Dependency] private PlantHolderSystem _plantHolder = default!; [Dependency] private PlantTraySystem _plantTray = default!; - [Dependency] private EntityQuery _holderQuery = default!; - [Dependency] private EntityQuery _harvestQuery = default!; - [Dependency] private EntityQuery _plantQuery = default!; - [Dependency] private EntityQuery _dataQuery = default!; + [Dependency] private EntityQuery _holderQuery; + [Dependency] private EntityQuery _harvestQuery; + [Dependency] private EntityQuery _plantQuery; + [Dependency] private EntityQuery _dataQuery; [SubscribeLocalEvent] private void OnInteractHand(Entity ent, ref InteractHandEvent args) @@ -160,6 +160,19 @@ public sealed partial class PlantHarvestSystem : EntitySystem RaiseLocalEvent(ent.Owner, ref ev); } + /// + /// Resets harvest progress to the plant's current age. + /// + [PublicAPI] + public void ResetHarvestProgress(Entity ent) + { + if (!Resolve(ent.Owner, ref ent.Comp, false)) + return; + + ent.Comp.LastHarvest = ent.Comp.Age; + DirtyField(ent, nameof(ent.Comp.LastHarvest)); + } + /// /// Affects the growth of a plant by modifying its age or production timing. /// diff --git a/Content.Shared/Botany/Systems/PlantHolderSystem.cs b/Content.Shared/Botany/Systems/PlantHolderSystem.cs index 8fb93258ac..0a8ae7e931 100644 --- a/Content.Shared/Botany/Systems/PlantHolderSystem.cs +++ b/Content.Shared/Botany/Systems/PlantHolderSystem.cs @@ -1,7 +1,7 @@ -using JetBrains.Annotations; using Content.Shared.Botany.Components; using Content.Shared.Cloning.Events; using Content.Shared.Damage.Systems; +using JetBrains.Annotations; using Robust.Shared.Serialization.Manager; using Robust.Shared.Prototypes; @@ -14,7 +14,7 @@ public sealed partial class PlantHolderSystem : EntitySystem { [Dependency] private ISerializationManager _serialization = default!; - [Dependency] private EntityQuery _plantQuery = default!; + [Dependency] private EntityQuery _plantQuery; [SubscribeLocalEvent] private void OnCloning(Entity ent, ref CloningEvent args) diff --git a/Content.Shared/Botany/Systems/PlantSystem.cs b/Content.Shared/Botany/Systems/PlantSystem.cs index 28ce580851..5182ed17eb 100644 --- a/Content.Shared/Botany/Systems/PlantSystem.cs +++ b/Content.Shared/Botany/Systems/PlantSystem.cs @@ -1,9 +1,9 @@ using System.Linq; -using JetBrains.Annotations; using Content.Shared.Botany.Components; using Content.Shared.Botany.Events; using Content.Shared.Botany.Traits.Components; using Content.Shared.Examine; +using JetBrains.Annotations; using Robust.Shared.Timing; namespace Content.Shared.Botany.Systems; @@ -18,8 +18,8 @@ public sealed partial class PlantSystem : EntitySystem [Dependency] private PlantMutationSystem _mutation = default!; [Dependency] private PlantHolderSystem _plantHolder = default!; - [Dependency] private EntityQuery _holderQuery = default!; - [Dependency] private EntityQuery _trayQuery = default!; + [Dependency] private EntityQuery _holderQuery; + [Dependency] private EntityQuery _trayQuery; private readonly List> _holdersToUpdate = []; @@ -170,7 +170,7 @@ public sealed partial class PlantSystem : EntitySystem public bool TryGetTray(Entity ent, out Entity trayEnt) { trayEnt = default!; - if (!Resolve(ent.Owner, ref ent.Comp)) + if (!Resolve(ent.Owner, ref ent.Comp, false)) return false; trayEnt.Owner = Transform(ent.Owner).ParentUid; @@ -246,16 +246,11 @@ public sealed partial class PlantSystem : EntitySystem ent.Comp.Maturation = MathF.Max(1f, ent.Comp.Maturation + amount); DirtyField(ent, nameof(ent.Comp.Maturation)); - if (ent.Comp.Production < ent.Comp.Maturation) - { - ent.Comp.Production = ent.Comp.Maturation; - DirtyField(ent, nameof(ent.Comp.Production)); - } } /// /// Adjusts the production time of a plant component. - /// Should not be lower than . + /// Must be at least 1. /// [PublicAPI] public void AdjustProduction(Entity ent, float amount) @@ -263,7 +258,7 @@ public sealed partial class PlantSystem : EntitySystem if (!Resolve(ent.Owner, ref ent.Comp, false)) return; - ent.Comp.Production = MathF.Max(ent.Comp.Maturation, ent.Comp.Production + amount); + ent.Comp.Production = MathF.Max(1f, ent.Comp.Production + amount); DirtyField(ent, nameof(ent.Comp.Production)); } diff --git a/Content.Shared/Botany/Systems/PlantTraySystem.cs b/Content.Shared/Botany/Systems/PlantTraySystem.cs index 831452fe7a..bc173517f8 100644 --- a/Content.Shared/Botany/Systems/PlantTraySystem.cs +++ b/Content.Shared/Botany/Systems/PlantTraySystem.cs @@ -1,12 +1,11 @@ -using JetBrains.Annotations; using System.Diagnostics.CodeAnalysis; using Content.Shared.Botany.Components; using Content.Shared.Chemistry.EntitySystems; -using Content.Shared.Chemistry.Reagent; using Content.Shared.EntityEffects; using Content.Shared.Examine; using Content.Shared.FixedPoint; using Content.Shared.Random.Helpers; +using JetBrains.Annotations; using Robust.Shared.Audio.Systems; using Robust.Shared.Containers; using Robust.Shared.Timing; @@ -27,8 +26,8 @@ public sealed partial class PlantTraySystem : EntitySystem [Dependency] private SharedSolutionContainerSystem _solutionContainer = default!; [Dependency] private SharedTransformSystem _transform = default!; - [Dependency] private EntityQuery _dataQuery = default!; - [Dependency] private EntityQuery _weedPestQuery = default!; + [Dependency] private EntityQuery _trayQuery; + [Dependency] private EntityQuery _dataQuery; [SubscribeLocalEvent] private void OnExamine(Entity ent, ref ExaminedEvent args) @@ -65,6 +64,24 @@ public sealed partial class PlantTraySystem : EntitySystem _audio.PlayPredicted(ent.Comp.WateringSound, ent, args.User); } + // TODO: replace with relationship system when it will be merged. + // this is really cursed - handler is getting hits on client when plant getting into tray + // but not when it gets out, yet it works just fine on server. + [SubscribeLocalEvent] + private void OnPlantTerminating(Entity ent, ref EntityTerminatingEvent args) + { + var trayUid = Transform(ent).ParentUid; + + if (!_trayQuery.TryComp(trayUid, out var tray) + || tray.PlantEntity != ent.Owner) + { + return; + } + + tray.PlantEntity = null; + DirtyField(trayUid, tray, nameof(tray.PlantEntity)); + } + // Workaround for https://github.com/space-wizards/space-station-14/pull/35314 [SubscribeLocalEvent] private void OnEntRemoved(Entity ent, ref EntRemovedFromContainerMessage args) @@ -111,19 +128,18 @@ public sealed partial class PlantTraySystem : EntitySystem if (!_solutionContainer.ResolveSolution(trayUid, trayComp.SoilSolutionName, ref trayComp.SoilSolution, out var solution)) return; - if (!TryGetPlant(ent, out var plantUid)) - return; - if (solution.Volume <= 0) return; + TryGetPlant(ent, out var plantUid); var contents = trayComp.SoilSolution.Value.Comp.Solution.Contents.ToArray(); - foreach (var entry in contents) { - var reagentProto = ProtoMan.Index(entry.Reagent.Prototype); + var reagentProto = ProtoMan.Index(entry.Reagent.Prototype); _entityEffects.ApplyEffects(trayUid, [.. reagentProto.PlantMetabolisms], entry.Quantity.Float()); - _entityEffects.ApplyEffects(plantUid.Value, [.. reagentProto.PlantMetabolisms], entry.Quantity.Float()); + + if (plantUid != null) + _entityEffects.ApplyEffects(plantUid.Value, [.. reagentProto.PlantMetabolisms], entry.Quantity.Float()); } _solutionContainer.RemoveEachReagent(trayComp.SoilSolution.Value, FixedPoint2.New(1)); @@ -137,15 +153,6 @@ public sealed partial class PlantTraySystem : EntitySystem if (ent.Comp is not { WaterLevel: > 10, NutritionLevel: > 5 }) return; - if (TryGetPlant(ent, out var plantUid)) - { - if (!_weedPestQuery.TryComp(plantUid.Value, out var weedPestGrowth)) - return; - - if (ent.Comp.WeedLevel > weedPestGrowth.WeedTolerance) - _plantHolder.AdjustsHealth(plantUid.Value, -weedPestGrowth.WeedDamageAmount); - } - if (SharedRandomExtensions.PredictedProb(_timing, ent.Comp.WeedGrowthChance, GetNetEntity(ent))) AdjustWeed(ent, ent.Comp.WeedGrowthAmount); } @@ -264,11 +271,7 @@ public sealed partial class PlantTraySystem : EntitySystem plant = ent.Comp.PlantEntity; if (plant == null || Deleted(plant)) - { - ent.Comp.PlantEntity = null; - DirtyField(ent, nameof(ent.Comp.PlantEntity)); return false; - } return true; } diff --git a/Content.Shared/Botany/Systems/PlantWeedPestSystem.cs b/Content.Shared/Botany/Systems/PlantWeedPestSystem.cs index 5df8ad489b..7d92a925e5 100644 --- a/Content.Shared/Botany/Systems/PlantWeedPestSystem.cs +++ b/Content.Shared/Botany/Systems/PlantWeedPestSystem.cs @@ -1,7 +1,8 @@ -using JetBrains.Annotations; using Content.Shared.Botany.Components; using Content.Shared.Botany.Events; -using Robust.Shared.Random; +using Content.Shared.Random.Helpers; +using JetBrains.Annotations; +using Robust.Shared.Timing; namespace Content.Shared.Botany.Systems; @@ -11,13 +12,13 @@ namespace Content.Shared.Botany.Systems; /// public sealed partial class PlantWeedPestSystem : EntitySystem { + [Dependency] private IGameTiming _timing = default!; [Dependency] private BotanySystem _botany = default!; - [Dependency] private IRobustRandom _random = default!; [Dependency] private PlantMutationSystem _mutation = default!; [Dependency] private PlantHolderSystem _plantHolder = default!; [Dependency] private PlantTraySystem _plantTray = default!; - [Dependency] private EntityQuery _trayQuery = default!; + [Dependency] private EntityQuery _trayQuery; [SubscribeLocalEvent] private void OnCrossPollinate(Entity ent, ref PlantCrossPollinateEvent args) @@ -37,9 +38,12 @@ public sealed partial class PlantWeedPestSystem : EntitySystem if (!_trayQuery.TryComp(trayUid, out var tray)) return; - if (_random.Prob(ent.Comp.PestGrowthChance)) + if (SharedRandomExtensions.PredictedProb(_timing, ent.Comp.PestGrowthChance, GetNetEntity(ent))) _plantTray.AdjustPest((trayUid, tray), ent.Comp.PestGrowthAmount); + if (tray.WeedLevel > ent.Comp.WeedTolerance) + _plantHolder.AdjustsHealth(ent.Owner, -ent.Comp.WeedDamageAmount); + if (tray.PestLevel > ent.Comp.PestTolerance) _plantHolder.AdjustsHealth(ent.Owner, -ent.Comp.PestDamageAmount); } diff --git a/Content.Shared/Botany/Systems/SeedExtractorSystem.cs b/Content.Shared/Botany/Systems/SeedExtractorSystem.cs index 22b3bdbcb8..2c6251a4a4 100644 --- a/Content.Shared/Botany/Systems/SeedExtractorSystem.cs +++ b/Content.Shared/Botany/Systems/SeedExtractorSystem.cs @@ -16,7 +16,7 @@ public sealed partial class SeedExtractorSystem : EntitySystem [Dependency] private SharedPopupSystem _popup = default!; [Dependency] private SharedPowerReceiverSystem _powerReceiver = default!; - [Dependency] private EntityQuery _produceQuery = default!; + [Dependency] private EntityQuery _produceQuery; [SubscribeLocalEvent] private void OnInteractUsing(Entity ent, ref InteractUsingEvent args) @@ -38,20 +38,18 @@ public sealed partial class SeedExtractorSystem : EntitySystem { _popup.PopupCursor(Loc.GetString("seed-extractor-component-no-seeds", ("name", args.Used)), args.User, - PopupType.MediumCaution); + PopupType.SmallCaution); return; } _popup.PopupCursor(Loc.GetString("seed-extractor-component-interact-message", ("name", args.Used)), - args.User, - PopupType.Medium); + args.User); PredictedQueueDel(args.Used); args.Handled = true; - var random = SharedRandomExtensions.PredictedRandom(_timing, GetNetEntity(ent)); - var amount = random.NextFloat(ent.Comp.BaseSeeds.Min, ent.Comp.BaseSeeds.Max + 1); + var amount = ent.Comp.BaseSeeds.NextFloat(random); var coords = Transform(ent).Coordinates; for (var i = 0; i < amount; i++) diff --git a/Content.Shared/Botany/Systems/SharedPlantAtmosphericSystem.cs b/Content.Shared/Botany/Systems/SharedPlantAtmosphericSystem.cs index f51b096865..6b6d483c5b 100644 --- a/Content.Shared/Botany/Systems/SharedPlantAtmosphericSystem.cs +++ b/Content.Shared/Botany/Systems/SharedPlantAtmosphericSystem.cs @@ -1,6 +1,6 @@ -using JetBrains.Annotations; using Content.Shared.Botany.Components; using Content.Shared.Botany.Events; +using JetBrains.Annotations; namespace Content.Shared.Botany.Systems; diff --git a/Content.Shared/Botany/Systems/SharedPlantConsumeExudeGasSystem.cs b/Content.Shared/Botany/Systems/SharedPlantConsumeExudeGasSystem.cs index 036ec835c7..8f1f09aee5 100644 --- a/Content.Shared/Botany/Systems/SharedPlantConsumeExudeGasSystem.cs +++ b/Content.Shared/Botany/Systems/SharedPlantConsumeExudeGasSystem.cs @@ -1,8 +1,8 @@ -using JetBrains.Annotations; using Content.Shared.Atmos; using Content.Shared.Botany.Components; using Content.Shared.Botany.Events; using Content.Shared.Random.Helpers; +using JetBrains.Annotations; using Robust.Shared.Random; using Robust.Shared.Timing; diff --git a/Content.Shared/Botany/Traits/Systems/PlantTraitKudzuSystem.cs b/Content.Shared/Botany/Traits/Systems/PlantTraitKudzuSystem.cs index 936ede950d..73297e7727 100644 --- a/Content.Shared/Botany/Traits/Systems/PlantTraitKudzuSystem.cs +++ b/Content.Shared/Botany/Traits/Systems/PlantTraitKudzuSystem.cs @@ -11,8 +11,8 @@ public sealed partial class PlantTraitKudzuSystem : EntitySystem [Dependency] private PlantHolderSystem _plantHolder = default!; [Dependency] private PlantTraySystem _plantTray = default!; [Dependency] private SharedTransformSystem _transform = default!; - - [Dependency] private EntityQuery _trayQuery = default!; + + [Dependency] private EntityQuery _trayQuery; [SubscribeLocalEvent] private void OnPlantGrow(Entity ent, ref PlantGrowEvent args) diff --git a/Content.Shared/Botany/Traits/Systems/PlantTraitLigneousSystem.cs b/Content.Shared/Botany/Traits/Systems/PlantTraitLigneousSystem.cs index 524b2da8f0..7ad4d71f71 100644 --- a/Content.Shared/Botany/Traits/Systems/PlantTraitLigneousSystem.cs +++ b/Content.Shared/Botany/Traits/Systems/PlantTraitLigneousSystem.cs @@ -16,7 +16,7 @@ public sealed partial class PlantTraitLigneousSystem : EntitySystem [Dependency] private SharedPopupSystem _popup = default!; [Dependency] private SharedToolSystem _tool = default!; - [Dependency] private EntityQuery _holderQuery = default!; + [Dependency] private EntityQuery _holderQuery; [SubscribeLocalEvent] private void OnInteractUsing(Entity ent, ref InteractUsingEvent args) @@ -39,10 +39,7 @@ public sealed partial class PlantTraitLigneousSystem : EntitySystem // Ligneous requires sharp tool. var harvestToolQuality = ent.Comp.HarvestToolQuality; if (harvestToolQuality.HasValue && !_tool.HasQuality(args.Used, harvestToolQuality.Value)) - { - _popup.PopupCursor(Loc.GetString("plant-component-ligneous-cant-harvest-message"), args.User); return; - } _plantHarvest.TryHandleHarvest(ent.Owner, args.User); args.Handled = true; diff --git a/Content.Shared/EntityEffects/Effects/Botany/PlantAttributes/PlantCryoxadoneEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/Botany/PlantAttributes/PlantCryoxadoneEntityEffectSystem.cs index b4f9ae27fc..eda68145dd 100644 --- a/Content.Shared/EntityEffects/Effects/Botany/PlantAttributes/PlantCryoxadoneEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/Botany/PlantAttributes/PlantCryoxadoneEntityEffectSystem.cs @@ -16,6 +16,7 @@ public sealed partial class PlantCryoxadoneEntityEffectSystem : EntityEffectSyst [Dependency] private PlantHolderSystem _plantHolder = default!; [Dependency] private PlantHarvestSystem _plantHarvest = default!; [Dependency] private IGameTiming _timing = default!; + [Dependency] private BotanySystem _botany = default!; protected override void Effect(Entity entity, ref EntityEffectEvent args) { @@ -29,8 +30,14 @@ public sealed partial class PlantCryoxadoneEntityEffectSystem : EntityEffectSyst var deviation = plantHolder.Age > entity.Comp.Maturation ? (int)Math.Max(entity.Comp.Maturation - 1, plantHolder.Age - random.Next(7, 10)) : (int)(entity.Comp.Maturation / entity.Comp.GrowthStages); + if (plantHolder.Age - deviation < 0) + { + _botany.TryRevertPlantToSeed(entity.Owner); + return; + } - _plantHarvest.AffectGrowth(entity.Owner, -deviation); + _plantHolder.AdjustsAge((entity.Owner, plantHolder), -deviation); + _plantHarvest.ResetHarvestProgress((entity.Owner, plantHolder)); _plant.ForceUpdate(entity.AsNullable()); } } diff --git a/Resources/Prototypes/Entities/Mobs/Player/clone.yml b/Resources/Prototypes/Entities/Mobs/Player/clone.yml index 1aad74a123..d40225d42b 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/clone.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/clone.yml @@ -191,6 +191,7 @@ - PlantTraitLigneous - PlantTraitScream - PlantTraitUnviable + - PlantTraitSeedless # for plant lifecycle clones - type: cloningSettings @@ -199,6 +200,5 @@ components: # traits - PlantTraitSampled - - PlantTraitSeedless eventComponents: - PlantHolder From 9e065f7453309133099689c2f333be66c2a3f6c7 Mon Sep 17 00:00:00 2001 From: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Date: Thu, 3 Sep 2026 19:58:20 +0000 Subject: [PATCH 051/197] Fake Armblade Sting (#45724) * init * further work TODO: - Sprite - Fix sound playing if item(s) were removed * work work work TODO: - Sprite * clean * sprite * yeah * guh * multi item support * Update ForcedItemStatusEffectComponent.cs * review + balance i dk --- .../Actions/RetractableItemActionTest.cs | 6 +- Content.Shared/Cuffs/SharedCuffableSystem.cs | 20 +- .../EntitySystems/SharedHandsSystem.Relay.cs | 1 + .../Hands/EntitySystems/SharedHandsSystem.cs | 5 +- .../Inventory/InventorySystem.Helpers.cs | 25 ++- .../Item/ForcedItemStatusEffectComponent.cs | 73 +++++++ .../ForcedItemStatusEffectItemComponent.cs | 24 +++ .../Item/ForcedItemStatusEffectSystem.cs | 188 ++++++++++++++++++ .../RetractableItemActionSystem.cs | 14 +- .../StatusEffectSystem.Relay.cs | 4 + .../StatusEffectNew/StatusEffectsSystem.cs | 6 + .../Locale/en-US/store/changeling-catalog.ftl | 3 + Resources/Prototypes/Actions/changeling.yml | 43 +++- .../Prototypes/Catalog/changeling_catalog.yml | 19 +- .../Objects/Weapons/Melee/armblade.yml | 14 +- .../Entities/StatusEffects/misc.yml | 14 ++ .../Guidebook/Antagonist/Changelings.xml | 8 +- .../changeling2.rsi/armblade_sting.png | Bin 0 -> 1460 bytes .../Actions/changeling2.rsi/meta.json | 5 +- 19 files changed, 439 insertions(+), 33 deletions(-) create mode 100644 Content.Shared/Item/ForcedItemStatusEffectComponent.cs create mode 100644 Content.Shared/Item/ForcedItemStatusEffectItemComponent.cs create mode 100644 Content.Shared/Item/ForcedItemStatusEffectSystem.cs create mode 100644 Resources/Textures/Interface/Actions/changeling2.rsi/armblade_sting.png diff --git a/Content.IntegrationTests/Tests/Actions/RetractableItemActionTest.cs b/Content.IntegrationTests/Tests/Actions/RetractableItemActionTest.cs index d1befce12c..05199a5a18 100644 --- a/Content.IntegrationTests/Tests/Actions/RetractableItemActionTest.cs +++ b/Content.IntegrationTests/Tests/Actions/RetractableItemActionTest.cs @@ -9,7 +9,7 @@ namespace Content.IntegrationTests.Tests.Actions; public sealed class RetractableItemActionTest : InteractionTest { - private static readonly EntProtoId ArmBladeActionProtoId = "ActionRetractableItemArmBlade"; + private static readonly EntProtoId ArmbladeActionProtoId = "ActionRetractableItemArmblade"; /// /// Gives the player the arm blade action, then activates it and makes sure they are given the blade. @@ -29,7 +29,7 @@ public sealed class RetractableItemActionTest : InteractionTest Assert.That(heldItem, Is.Null, $"Player is holding an item ({SEntMan.ToPrettyString(heldItem)}) at start of test."); // Inspect the action prototype to find the item it spawns - var armBladeActionProto = ProtoMan.Index(ArmBladeActionProtoId); + var armBladeActionProto = ProtoMan.Index(ArmbladeActionProtoId); // Find the component Assert.That(armBladeActionProto.TryComp(out var actionComp, SEntMan.ComponentFactory)); @@ -37,7 +37,7 @@ public sealed class RetractableItemActionTest : InteractionTest var spawnedProtoId = actionComp!.SpawnedPrototype; // Add the action to the player - var actionUid = actionsSystem.AddAction(playerUid, ArmBladeActionProtoId); + var actionUid = actionsSystem.AddAction(playerUid, ArmbladeActionProtoId); // Make sure the player has the action now Assert.That(actionUid, Is.Not.Null, "Failed to add action to player."); var actionEnt = actionsSystem.GetAction(actionUid); diff --git a/Content.Shared/Cuffs/SharedCuffableSystem.cs b/Content.Shared/Cuffs/SharedCuffableSystem.cs index 18eb6472a4..72530304ee 100644 --- a/Content.Shared/Cuffs/SharedCuffableSystem.cs +++ b/Content.Shared/Cuffs/SharedCuffableSystem.cs @@ -478,12 +478,15 @@ namespace Content.Shared.Cuffs if (TryComp(target, out var hands) && hands.Count <= component.CuffedHandCount) return false; + var beforeEv = new BeforeTargetHandcuffedEvent(user); + RaiseLocalEvent(target, ref beforeEv); + // Success! _hands.TryDrop(user, handcuff); _container.Insert(handcuff, component.Container); - var ev = new TargetHandcuffedEvent(); + var ev = new TargetHandcuffedEvent(user); RaiseLocalEvent(target, ref ev); UpdateHeldItems(target, handcuff, component); @@ -868,12 +871,25 @@ namespace Content.Shared.Cuffs [Serializable, NetSerializable] public sealed partial class AddCuffDoAfterEvent : SimpleDoAfterEvent; + /// + /// Raised on the target before they get handcuffed. + /// Relayed to their held items. + /// + [ByRefEvent] + public record struct BeforeTargetHandcuffedEvent(EntityUid User) : IInventoryRelayEvent + { + /// + /// All slots to relay to + /// + public SlotFlags TargetSlots { get; set; } + } + /// /// Raised on the target when they get handcuffed. /// Relayed to their held items. /// [ByRefEvent] - public record struct TargetHandcuffedEvent : IInventoryRelayEvent + public record struct TargetHandcuffedEvent(EntityUid User) : IInventoryRelayEvent { /// /// All slots to relay to diff --git a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Relay.cs b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Relay.cs index f13f63e215..0ad1c69dbc 100644 --- a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Relay.cs +++ b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Relay.cs @@ -24,6 +24,7 @@ public abstract partial class SharedHandsSystem SubscribeLocalEvent(RefRelayEvent); SubscribeLocalEvent(RefRelayEvent); SubscribeLocalEvent(RefRelayEvent); + SubscribeLocalEvent(RefRelayEvent); SubscribeLocalEvent(RefRelayEvent); } diff --git a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.cs b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.cs index 54448af6ac..4c14a128b6 100644 --- a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.cs +++ b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.cs @@ -551,8 +551,11 @@ public abstract partial class SharedHandsSystem /// Unremoveable items will cause a hand to not be freeable. /// /// The hand this entity is in will be ignored when counting. - public int CountFreeableHands(Entity hands, EntityUid? except = null) + public int CountFreeableHands(Entity hands, EntityUid? except = null) { + if (!Resolve(hands, ref hands.Comp, false)) + return 0; + var freeable = 0; foreach (var name in hands.Comp.Hands.Keys) { diff --git a/Content.Shared/Inventory/InventorySystem.Helpers.cs b/Content.Shared/Inventory/InventorySystem.Helpers.cs index bfa34e12d3..10e6fa7f41 100644 --- a/Content.Shared/Inventory/InventorySystem.Helpers.cs +++ b/Content.Shared/Inventory/InventorySystem.Helpers.cs @@ -67,8 +67,19 @@ public partial class InventorySystem && (slot.SlotFlags & flags) != 0; } - public bool SpawnItemInSlot(EntityUid uid, string slot, string prototype, bool silent = false, bool force = false, InventoryComponent? inventory = null) + public bool SpawnItemInSlot(EntityUid uid, + string slot, + string prototype, + bool silent = false, + bool force = false, + InventoryComponent? inventory = null) { + return SpawnItemInSlot(uid, slot, prototype, out _, silent, force, inventory); + } + + public bool SpawnItemInSlot(EntityUid uid, string slot, string prototype, [NotNullWhen(true)] out EntityUid? spawned, bool silent = false, bool force = false, InventoryComponent? inventory = null) + { + spawned = null; if (!Resolve(uid, ref inventory, false)) return false; @@ -87,14 +98,14 @@ public partial class InventorySystem // Let's spawn this first... var item = Spawn(prototype, Transform(uid).Coordinates); - // Helper method that deletes the item and returns false. - bool DeleteItem() + // We finally try to equip the item, otherwise we delete it. + if (TryEquip(uid, item, slot, silent, force)) { - Del(item); - return false; + spawned = item; + return true; } - // We finally try to equip the item, otherwise we delete it. - return TryEquip(uid, item, slot, silent, force) || DeleteItem(); + Del(item); + return false; } } diff --git a/Content.Shared/Item/ForcedItemStatusEffectComponent.cs b/Content.Shared/Item/ForcedItemStatusEffectComponent.cs new file mode 100644 index 0000000000..f89209682d --- /dev/null +++ b/Content.Shared/Item/ForcedItemStatusEffectComponent.cs @@ -0,0 +1,73 @@ +using Content.Shared.Inventory; +using Robust.Shared.Audio; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Item; + +/// +/// Component used for status effects. +/// Forces an item onto the entity the status effect was applied to, either to their inventory or hands. +/// +[RegisterComponent, NetworkedComponent] +[AutoGenerateComponentState] +public sealed partial class ForcedItemStatusEffectComponent : Component +{ + /// + /// The entities to spawn in the hands of the user. + /// If the hands are unavailable, they will not be spawned. + /// + [DataField] + public List HandItems = new (); + + /// + /// The entities to spawn in the inventory of the user. + /// If the slots are unavailable, they will not be spawned. + /// + [DataField] + public Dictionary InventoryItems = new (); + + /// + /// s of the spawned items. Used to remove them when the status effect expires. + /// + [DataField, AutoNetworkedField] + public HashSet ItemEntities = new (); + + /// + /// Whether the item should be unremovable from the slot it was placed in. + /// + [DataField] + public bool Unremovable = true; + + /// + /// If the item in the existing slots/hands should be dropped to make space. + /// + [DataField] + public bool DropExisting = true; + + /// + /// Forces the items to spawn in their respective slots, even if usually not possible to equip there. + /// Only affects inventory slots. + /// + [DataField] + public bool Force; + + /// + /// Whether the status effect items should be removed when handcuffed. + /// Causes the status effect to get removed as well. + /// + [DataField] + public bool RemoveWhenCuffed = true; + + /// + /// The sound to play when the item(s) spawn. + /// + [DataField, AutoNetworkedField] + public SoundSpecifier? SpawnSound; + + /// + /// The sound to play when the item(s) disappear. + /// + [DataField, AutoNetworkedField] + public SoundSpecifier? DespawnSound; +} diff --git a/Content.Shared/Item/ForcedItemStatusEffectItemComponent.cs b/Content.Shared/Item/ForcedItemStatusEffectItemComponent.cs new file mode 100644 index 0000000000..a2d4c4e4b7 --- /dev/null +++ b/Content.Shared/Item/ForcedItemStatusEffectItemComponent.cs @@ -0,0 +1,24 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Item; + +/// +/// Marker component for the items spawned by . +/// For mutual cleanup. +/// +[RegisterComponent, NetworkedComponent] +[AutoGenerateComponentState] +public sealed partial class ForcedItemStatusEffectItemComponent : Component +{ + /// + /// The status effect that forced this item to spawn. + /// + [DataField, AutoNetworkedField] + public EntityUid? StatusEffect; + + /// + /// Whether the item should be removed when the holder is handcuffed. + /// + [DataField, AutoNetworkedField] + public bool RemoveWhenCuffed; +} diff --git a/Content.Shared/Item/ForcedItemStatusEffectSystem.cs b/Content.Shared/Item/ForcedItemStatusEffectSystem.cs new file mode 100644 index 0000000000..81695c0a66 --- /dev/null +++ b/Content.Shared/Item/ForcedItemStatusEffectSystem.cs @@ -0,0 +1,188 @@ +using Content.Shared.Cuffs; +using Content.Shared.Hands.EntitySystems; +using Content.Shared.Interaction.Components; +using Content.Shared.Inventory; +using Content.Shared.StatusEffectNew; +using Content.Shared.StatusEffectNew.Components; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Network; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Item; + +public sealed partial class ForcedItemStatusEffectSystem : EntitySystem +{ + [Dependency] private INetManager _net = default!; + [Dependency] private SharedHandsSystem _hands = default!; + [Dependency] private InventorySystem _inventory = default!; + [Dependency] private SharedAudioSystem _audio = default!; + [Dependency] private StatusEffectsSystem _status = default!; + + public override void Initialize() + { + Subs.SubscribeWithRelay(OnBeforeGotHandcuffed); + } + + [SubscribeLocalEvent] + private void OnEffectApplied(Entity entity, ref StatusEffectAppliedEvent args) + { + // "Why the IsServer check? Cannot this be predicted?" + // Yes and no. Status effects cannot really have a "user", as such we cannot play the sound in a predicted way. + // It only works for the local client who had this status effect applied to them. + // The audio could be the only unpredicted thing, but the audio and visual being not predicted + // makes it extremely obvious as to this being a fake item and not for example being a real armblade or some shit. + // Basically, if we want to sync it up we need self-predicting audio, like how popups do it. + // Also container prediction makes this a nightmare too but thats a lesser issue + if (!_net.IsServer) + return; + + // No reapplying + if (entity.Comp.ItemEntities.Count != 0) + return; + + foreach (var item in entity.Comp.HandItems) + { + var spawned = SpawnAtPosition(item, Transform(entity).Coordinates); + + var pickedUp = entity.Comp.DropExisting + ? _hands.TryForcePickupAnyHand(args.Target, spawned, false) + : _hands.TryPickupAnyHand(args.Target, spawned, false); + + if (entity.Comp.Unremovable) + EnsureComp(spawned); + + if (!pickedUp) + { + QueueDel(spawned); + continue; + } + + TrackItem(spawned, entity); + } + + foreach (var slot in entity.Comp.InventoryItems) + { + var slots = _inventory.GetSlotEnumerator(args.Target, slot.Key); + while (slots.MoveNext(out var container)) + { + if (container.ContainedEntity != null && entity.Comp.DropExisting) + { + if (_inventory.TryUnequip(args.Target, container.ID, true, entity.Comp.Force) && + SpawnItemInInventory(entity, slot.Value, args.Target, container.ID)) + { + continue; + } + } + + if (container.ContainedEntities.Count == 0) + SpawnItemInInventory(entity, slot.Value, args.Target, container.ID); + } + } + + if (entity.Comp.ItemEntities.Count == 0) + return; + + _audio.PlayPvs(entity.Comp.SpawnSound, args.Target); + Dirty(entity); + } + + [SubscribeLocalEvent] + private void OnEffectRemoved(Entity entity, ref StatusEffectRemovedEvent args) + { + // Same reason as above. + if (!_net.IsServer) + return; + + if (entity.Comp.ItemEntities.Count == 0) + return; + + foreach (var item in entity.Comp.ItemEntities) + { + DisposeItem(item, entity, args.Target, false); + } + + _audio.PlayPvs(entity.Comp.DespawnSound, args.Target); + } + + [SubscribeLocalEvent] + private void OnItemShutdown(Entity entity, ref ComponentShutdown args) + { + if (!TryComp(entity.Comp.StatusEffect, out var effect)) + return; + + effect.ItemEntities.Remove(entity); + Dirty(entity.Comp.StatusEffect.Value, effect); + } + + private void OnBeforeGotHandcuffed(Entity entity, ref BeforeTargetHandcuffedEvent args) + { + if (!entity.Comp.RemoveWhenCuffed) + return; + + if (!TryComp(entity.Comp.StatusEffect, out var forcedItem)) + return; + + if (!TryComp(entity.Comp.StatusEffect, out var status) || status.AppliedTo == null) + return; + + DisposeItem(entity, (entity.Comp.StatusEffect.Value, forcedItem), status.AppliedTo.Value, true, args.User); + } + + [SubscribeLocalEvent] + private void OnGotHandcuffed(Entity entity, ref StatusEffectRelayedEvent args) + { + if (!entity.Comp.RemoveWhenCuffed) + return; + + if (!TryComp(entity, out var status) || status.AppliedTo == null) + return; + + if (MetaData(entity).EntityPrototype?.ID is not { } entProto) + return; + + _status.TryRemoveStatusEffect(status.AppliedTo.Value, entProto); + } + + private void DisposeItem(EntityUid entity, Entity status, EntityUid holder, bool playSound = true, EntityUid? user = null) + { + // Unremovable causes issues with predicted deletion so we get rid of it first. + if (HasComp(entity)) + RemComp(entity); + + // Cleanup is handled via shutdown of the item. + PredictedQueueDel(entity); + + if (!playSound) + return; + + // We want to predict the audio only if we have a user. + if (user == null && _net.IsServer) + _audio.PlayPvs(status.Comp.DespawnSound, holder); + else if (user != null) + _audio.PlayPredicted(status.Comp.DespawnSound, holder, user.Value); + } + + private bool SpawnItemInInventory(Entity ent, EntProtoId item, EntityUid target, string slot) + { + if (!_inventory.SpawnItemInSlot(target, slot, item, out var itemUid, true, force: ent.Comp.Force)) + return false; + + if (ent.Comp.Unremovable) + EnsureComp(itemUid.Value); + + TrackItem(itemUid.Value, ent); + + return true; + } + + private void TrackItem(EntityUid item, Entity ent) + { + EnsureComp(item, out var spawnedComp); + spawnedComp.StatusEffect = ent; + spawnedComp.RemoveWhenCuffed = ent.Comp.RemoveWhenCuffed; + ent.Comp.ItemEntities.Add(item); + + Dirty(item, spawnedComp); + Dirty(ent); + } +} diff --git a/Content.Shared/RetractableItemAction/RetractableItemActionSystem.cs b/Content.Shared/RetractableItemAction/RetractableItemActionSystem.cs index 47595ea25c..5d08e6eef1 100644 --- a/Content.Shared/RetractableItemAction/RetractableItemActionSystem.cs +++ b/Content.Shared/RetractableItemAction/RetractableItemActionSystem.cs @@ -29,7 +29,7 @@ public sealed partial class RetractableItemActionSystem : EntitySystem SubscribeLocalEvent(OnRetractableItemAction); SubscribeLocalEvent(OnActionSummonedShutdown); - Subs.SubscribeWithRelay>(OnItemHandcuffed, inventory: false); + Subs.SubscribeWithRelay(OnItemHandcuffed, inventory: false); } private void OnActionInit(Entity ent, ref MapInitEvent args) @@ -54,9 +54,7 @@ public sealed partial class RetractableItemActionSystem : EntitySystem return; // Don't allow to summon an item if holding an unremoveable item unless that item is summoned by the action. - if (_hands.GetActiveItem(ent.Owner) != null - && !_hands.IsHolding(args.Performer, ent.Comp.ActionItemUid) - && !_hands.CanDropHeld(args.Performer, activeHand, false)) + if (_hands.GetActiveItem(ent.Owner) != null && !_hands.IsHolding(args.Performer, ent.Comp.ActionItemUid) && !_hands.CanDropHeld(args.Performer, activeHand, false)) { _popups.PopupEntity(Loc.GetString("retractable-item-hand-cannot-drop"), args.Performer, args.Performer); return; @@ -86,7 +84,7 @@ public sealed partial class RetractableItemActionSystem : EntitySystem PopulateActionItem(action.Owner); } - private void OnItemHandcuffed(Entity ent, ref HeldRelayedEvent args) + private void OnItemHandcuffed(Entity ent, ref BeforeTargetHandcuffedEvent args) { if (_actions.GetAction(ent.Comp.SummoningAction) is not { } action) return; @@ -97,7 +95,7 @@ public sealed partial class RetractableItemActionSystem : EntitySystem if (_hands.GetActiveHand(action.Comp.AttachedEntity.Value) is not { }) return; - RetractRetractableItem(action.Comp.AttachedEntity.Value, ent, action.Owner); + RetractRetractableItem(args.User, ent, action.Owner); } private void PopulateActionItem(Entity ent) @@ -118,7 +116,7 @@ public sealed partial class RetractableItemActionSystem : EntitySystem Dirty(ent); } - private void RetractRetractableItem(EntityUid holder, EntityUid item, Entity action) + private void RetractRetractableItem(EntityUid user, EntityUid item, Entity action) { if (!Resolve(action, ref action.Comp, false)) return; @@ -126,7 +124,7 @@ public sealed partial class RetractableItemActionSystem : EntitySystem RemComp(item); var container = _containers.GetContainer(action, RetractableItemActionComponent.ContainerId); _containers.Insert(item, container); - _audio.PlayPredicted(action.Comp.RetractSounds, holder, holder); + _audio.PlayPredicted(action.Comp.RetractSounds, user, user); } private void SummonRetractableItem(EntityUid holder, EntityUid item, string hand, Entity action) diff --git a/Content.Shared/StatusEffectNew/StatusEffectSystem.Relay.cs b/Content.Shared/StatusEffectNew/StatusEffectSystem.Relay.cs index 91fe2173e0..9e56651f80 100644 --- a/Content.Shared/StatusEffectNew/StatusEffectSystem.Relay.cs +++ b/Content.Shared/StatusEffectNew/StatusEffectSystem.Relay.cs @@ -3,6 +3,7 @@ using Content.Shared.Atmos; using Content.Shared.Chat; using Content.Shared.Chemistry.Events; using Content.Shared.Climbing.Events; +using Content.Shared.Cuffs; using Content.Shared.Damage.Events; using Content.Shared.Damage.Systems; using Content.Shared.Examine; @@ -67,6 +68,9 @@ public sealed partial class StatusEffectsSystem SubscribeLocalEvent(RefRelayStatusEffectEvent); SubscribeLocalEvent(RelayStatusEffectEvent); + + SubscribeLocalEvent(RefRelayStatusEffectEvent); + SubscribeLocalEvent(RefRelayStatusEffectEvent); } private void RefRelayStatusEffectEvent(EntityUid uid, StatusEffectContainerComponent component, ref T args) where T : struct diff --git a/Content.Shared/StatusEffectNew/StatusEffectsSystem.cs b/Content.Shared/StatusEffectNew/StatusEffectsSystem.cs index 16f76826e7..46a5d4765e 100644 --- a/Content.Shared/StatusEffectNew/StatusEffectsSystem.cs +++ b/Content.Shared/StatusEffectNew/StatusEffectsSystem.cs @@ -74,6 +74,9 @@ public sealed partial class StatusEffectsSystem : EntitySystem private void OnEntityInserted(Entity ent, ref EntInsertedIntoContainerMessage args) { + if (_timing.ApplyingState) + return; + if (args.Container.ID != StatusEffectContainerComponent.ContainerId) return; @@ -90,6 +93,9 @@ public sealed partial class StatusEffectsSystem : EntitySystem private void OnEntityRemoved(Entity ent, ref EntRemovedFromContainerMessage args) { + if (_timing.ApplyingState) + return; + if (args.Container.ID != StatusEffectContainerComponent.ContainerId) return; diff --git a/Resources/Locale/en-US/store/changeling-catalog.ftl b/Resources/Locale/en-US/store/changeling-catalog.ftl index 261ca56396..1bd601d198 100644 --- a/Resources/Locale/en-US/store/changeling-catalog.ftl +++ b/Resources/Locale/en-US/store/changeling-catalog.ftl @@ -28,6 +28,9 @@ changeling-catalog-hallucinogenic-sting-desc = Causes the target to get high and changeling-catalog-mute-sting-name = Mute Sting changeling-catalog-mute-sting-desc = Causes the target to be incapable of speech. Imperceptible until the target tries to speak. Can be used on self. +changeling-catalog-armblade-sting-name = Armblade Sting +changeling-catalog-armblade-sting-desc = Causes the target to spontaneously grow a dulled armblade after a lengthy delay. Instant with increased duration when used on corpses. Can be used on self. + changeling-catalog-screech-name = Screech [TEMPORARY] changeling-catalog-screech-desc = We let out a powerful screech that disarms people who hear it without adequate ear protection. THIS ACTION WILL BE MOVED TO THE HORROR FORM WHEN IT IS IMPLEMENTED. diff --git a/Resources/Prototypes/Actions/changeling.yml b/Resources/Prototypes/Actions/changeling.yml index 738ddeac69..54dee99489 100644 --- a/Resources/Prototypes/Actions/changeling.yml +++ b/Resources/Prototypes/Actions/changeling.yml @@ -1,8 +1,8 @@ - type: entity parent: BaseAction - id: ActionRetractableItemArmBlade - name: Arm Blade - description: Shed your flesh and reform it into a fleshy blade. + id: ActionRetractableItemArmblade + name: Armblade + description: Shed your flesh and reform it into a fleshy blade. Can be toggled when unconscious. components: - type: Action useDelay: 2 @@ -15,7 +15,7 @@ - type: InstantAction event: !type:OnRetractableItemActionEvent - type: RetractableItemAction - spawnedPrototype: ArmBlade + spawnedPrototype: Armblade summonSounds: collection: gib # Placeholder retractSounds: @@ -301,6 +301,41 @@ reagent: TaciticAcid quantity: 5 # 50s of imperceptible mute +- type: entity + parent: BaseActionChangelingSting + id: ActionChangelingStingArmblade + name: Armblade Sting + description: "Silently sting a target and cause them to grow a dull armblade after a lengthy delay. \n\nRequires 50 Chemicals." + components: + - type: Action + useDelay: 30 + raiseOnAction: true + itemIconStyle: BigAction + - type: Sprite + sprite: Interface/Actions/changeling2.rsi + layers: + - state: armblade_sting + - type: ActionRequireSatiation + amount: 50 + - type: EntityEffectAction + effects: + - !type:ModifyStatusEffect + conditions: + - !type:MobStateCondition # Only do the delay on living targets + mobstate: Alive + effectProto: StatusEffectForcedItemArmblade + type: Update + time: 90 # Takes 100s to regain the chemicals, so spam-use is a nat negative. + delay: 30 # No using it for easy combat! + - !type:ModifyStatusEffect + conditions: + - !type:MobStateCondition + mobstate: Alive + inverted: true # Not alive! + effectProto: StatusEffectForcedItemArmblade + type: Update + time: 120 # On dead/crit, transfer the 30s to the duration instead. Means you can also maintain it "permanently" on corpses as long as youre around + want to spend fuck ton of chemicals. + - type: entity parent: BaseAction id: ActionChangelingLastResort diff --git a/Resources/Prototypes/Catalog/changeling_catalog.yml b/Resources/Prototypes/Catalog/changeling_catalog.yml index ccaae6bfd1..36b156deeb 100644 --- a/Resources/Prototypes/Catalog/changeling_catalog.yml +++ b/Resources/Prototypes/Catalog/changeling_catalog.yml @@ -1,7 +1,7 @@ # Abilities - type: listing - id: ChangelingArmBlade + id: ChangelingArmblade name: changeling-catalog-arm-blade-name description: changeling-catalog-arm-blade-desc applyToMob: true @@ -12,7 +12,7 @@ conditions: - !type:ListingLimitedStockCondition stock: 1 - productAction: ActionRetractableItemArmBlade + productAction: ActionRetractableItemArmblade - type: listing id: ChangelingFleshClothing @@ -146,6 +146,21 @@ stock: 1 productAction: ActionChangelingStingMute +- type: listing + id: ChangelingStingArmblade + name: changeling-catalog-armblade-sting-name + description: changeling-catalog-armblade-sting-desc + icon: { sprite: /Textures/Interface/Actions/changeling2.rsi, state: armblade_sting } + applyToMob: true + cost: + ChangelingDNA: 10 + categories: + - ChangelingStoreUtility + conditions: + - !type:ListingLimitedStockCondition + stock: 1 + productAction: ActionChangelingStingArmblade + - type: listing id: ChangelingLastResort name: changeling-catalog-last-resort-name diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/armblade.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/armblade.yml index 8fbc3f1ff8..7fd1725df4 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/armblade.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/armblade.yml @@ -1,7 +1,7 @@ - type: entity name: arm blade parent: BaseItem - id: ArmBlade + id: Armblade description: A grotesque blade made out of bone and flesh that can pry open doors and cleaves through people as a hot knife through butter. components: - type: Tool @@ -29,3 +29,15 @@ - type: Prying speedModifier: 1.5 # Jaws of life speed pryPowered: true + +- type: entity + parent: Armblade + id: ArmbladeDull + components: + - type: MeleeWeapon + damage: + types: + Slash: 5 + Piercing: 5 + Caustic: 2.5 + Structural: 10 diff --git a/Resources/Prototypes/Entities/StatusEffects/misc.yml b/Resources/Prototypes/Entities/StatusEffects/misc.yml index 2ba548e8bd..8fd1656675 100644 --- a/Resources/Prototypes/Entities/StatusEffects/misc.yml +++ b/Resources/Prototypes/Entities/StatusEffects/misc.yml @@ -177,3 +177,17 @@ - Blindable requireAll: true - type: FlashedStatusEffect + +# Forces fake items into the hands/slots of the target +- type: entity + parent: MobStatusEffectDebuff + id: StatusEffectForcedItemArmblade + name: forced armblade + components: + - type: ForcedItemStatusEffect + handItems: + - ArmbladeDull + spawnSound: + collection: gib # Same as ActionRetractableItemArmblade + despawnSound: + collection: gib # Same as ActionRetractableItemArmblade diff --git a/Resources/ServerInfo/Guidebook/Antagonist/Changelings.xml b/Resources/ServerInfo/Guidebook/Antagonist/Changelings.xml index ed9559df71..5c911f8d16 100644 --- a/Resources/ServerInfo/Guidebook/Antagonist/Changelings.xml +++ b/Resources/ServerInfo/Guidebook/Antagonist/Changelings.xml @@ -31,7 +31,7 @@ ### Evolution - + @@ -43,7 +43,7 @@ - [bold]Combat[/bold] abilities let you pack quite a punch when trying to set up an ambush for single targets, but are not sustainable for prolonged use or open combat. Some of the more interesting picks might include: - - [bold]The ArmBlade[/bold], allowing you to slice up the crew with style. + - [bold]The Armblade[/bold], allowing you to slice up the crew with style. - [bold]Chemical Stings[/bold], to disorient the victim before attacking. ### Resilience @@ -67,7 +67,7 @@ You are only durable [italic]to an extent[/italic], so do not fool yourself into thinking no one can take you down. A changeling's strength lies in its ability to isolate and ambush unaware targets, so try to get an upper hand through tactics and trickery rather than relying on brute strength. It’s not recommended to rely entirely on your abilities for fighting. Consider other weaponry or forms of protection to help you in fending off attackers. - If you must use your abilities, try combining them with each other. ArmBlades and Chemical Stings can give you a combat advantage if used in time, but remember, they are not great for fighting more than one attacker. + If you must use your abilities, try combining them with each other. Armblades and Chemical Stings can give you a combat advantage if used in time, but remember, they are not great for fighting more than one attacker. ## Identifying Changelings @@ -75,7 +75,7 @@ - Changelings may be almost indistinguishable from regular crew when undercover, but if they think they are alone you may be able to catch them revealing their true form. If you see a Changeling transform their appearance, devour someone, or have their clothing fall apart into fleshy remains, that quickly gives away who they truly are. The cracking joints and ripping flesh of a Changeling transforming is also loud and distinct. + Changelings may be almost indistinguishable from regular crew when undercover, but if they think they are alone you may be able to catch them revealing their true form. If you see a Changeling transform their appearance, devour someone, or have their clothing fall apart into fleshy remains, that quickly gives away who they truly are. The cracking joints and ripping flesh of a Changeling transforming is also loud and distinct. But be careful, [bold]they have certain tools to frame regular crewmembers[/bold]! Thankfully, the crew has tools of their own. Changelings are vicious creatures, so vicious in fact they leave a huge mess when eating. [bold]As part of devouring, Changelings leave small amounts of their tissue behind.[/bold] These remains cannot be used for anything by themselves, but with help from your [textlink="Chemistry" link="Chemist"] department, you can synthesize a chemical that irritates Changelings, causing them to shake and yell out upon injection. diff --git a/Resources/Textures/Interface/Actions/changeling2.rsi/armblade_sting.png b/Resources/Textures/Interface/Actions/changeling2.rsi/armblade_sting.png new file mode 100644 index 0000000000000000000000000000000000000000..52b7e5eb2696fd5f2219dd5ba9dd58b2207ce24c GIT binary patch literal 1460 zcmV;l1xxygP)L#I(iWOpL41~tU zT2fPz(iBPvq4h^Vf~{Thq$z7Pb93)^L@&L$LZy+E`=Tem?!QR zHgDrLH95uTpPmcz^Iw50biDH#+ib7i6?wv)L-n72tEjTE?!XLr5)!mK-I1?fI~17> z1_*=E3cx{upGQV0Z_9SRcWYOV|2pkWOECJA-~?@>F=Y!im&`}pE`2WS!M+jYk;1}= zPOd`?435s5B9`9|Eidcjk0nxIXxJdWIWZBXR4^`;aHZ_i5YSw?lUqau1ja_`mpfN&$I5eHZ*Tt7w7j_HpaOEpi0DC{mKaYbc6sTe zYd%MV0=1`_P0#noN2s;6m3HT3^7C(jaii~>L;JWDs$i}fwu?(#hY>g6zWg;uAOVFu?RO<_o zcSHta5rvglkT}6^FTgSc`0UZrZgQZ1EM$^ZA8BvrdNnVc1zJX;(vR*2j?Ne-h<*NL{zXmN3o_Y>J!9Avmyfxi3y zP?_X}Ty&^*r+hz(0-;cd($muo1wf3wfX@OkNStiQyI4|)T+Vka1!AGG{R=89DK?xC z06Clh*m8PikAVtz62N*A+c|+F8swsQ0n~xOjXwtoymcL|O4L5^vCBmbqoa-lGOP|h+i-?kkk{AO z)2)HKw(}4)5C<=UQxlX^TE#Csd3m}MTJcp?RYe`eR>E3=FyRgrwnKD1tq`= zxHo33MYLf9w-pr?+`~e@d_Esvb8~Y{?(uk-yzYhPIr>Bwu=QO3xV@7|j`TzyT z$EjO8h{R8j(p*wvd<|iH#K&S|Z+A@D{wpq&S5jEB-}3ua{wx;?DDp3vJ2jPp)6?8x z_j@G+W2}fZ$8IbDhu8r;RBD4jE(3~)JsaO|XxDyVDQc|vN#$Uqy+vMO+@}SaqS@%t zQqIPO6Eg6_Vukp<77+7x@2ut}CF5dWw`uH2uQ#&sVetY}S{=3de9FH&i}l91kYzIf O0000 Date: Thu, 3 Sep 2026 20:24:35 +0000 Subject: [PATCH 052/197] Invisible Support Fix + Description (#45816) * Invisible Support Fix + Description Title * Suggestion fix --- Resources/Prototypes/Entities/Objects/Decoration/mining.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Resources/Prototypes/Entities/Objects/Decoration/mining.yml b/Resources/Prototypes/Entities/Objects/Decoration/mining.yml index 68365e0913..939cde8003 100644 --- a/Resources/Prototypes/Entities/Objects/Decoration/mining.yml +++ b/Resources/Prototypes/Entities/Objects/Decoration/mining.yml @@ -92,6 +92,8 @@ name: wooden support description: Increases your confidence that a rock won't fall on your head. components: + - type: Sprite + state: support - type: Fixtures fixtures: fix1: @@ -108,6 +110,7 @@ parent: BaseWoodenSupport id: WoodenSupportBeam name: wooden support beam + description: A pair of wooden beams, supportive without blocking your way. components: - type: Sprite state: support_beams From 8aa94b4c8f94a3ea29c782d3a7007a6148da5e6a Mon Sep 17 00:00:00 2001 From: InsoPL Date: Thu, 3 Sep 2026 23:33:41 +0000 Subject: [PATCH 053/197] Image Overlay for welding masks (#39434) * weldingOverlay * more universal * fixes * colors back to black * overlay image moved * fixes fixes * smal fixes * path * fixes * shader removal * cleanup * Added Activiate option * scrap metal helmet * png moved out of rsi * overlay sticking with zoom * Apply suggestions from code review Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * fixes * partial and readonly * again * whitespace * ws * refresh * Typos and inherits Signed-off-by: Connor Huffine * gasmask parent and merge mistake * fix for multi mask problems * fix for same shader toggle * turn this off on other viewports * docs * Implement scaling and scale down the textures --------- Signed-off-by: Connor Huffine Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Co-authored-by: Connor Huffine Co-authored-by: SlamBamActionman --- Content.Client/Overlays/ImageOverlay.cs | 84 ++++++++++++++++++ Content.Client/Overlays/ImageOverlaySystem.cs | 50 +++++++++++ .../Inventory/InventorySystem.Relay.cs | 1 + .../Overlays/ImageOverlayComponent.cs | 43 +++++++++ .../Entities/Clothing/Head/scraphelmet.yml | 4 +- .../Entities/Clothing/Head/welding.yml | 3 + .../Entities/Clothing/Masks/masks.yml | 11 +-- .../Helmets/scrapHelmetOverlayTexture.png | Bin 0 -> 16000 bytes .../Clothing/Head/Welding/weldingTexture.png | Bin 0 -> 23007 bytes .../Head/Welding/weldingTexture.png.yml | 2 + 10 files changed, 190 insertions(+), 8 deletions(-) create mode 100644 Content.Client/Overlays/ImageOverlay.cs create mode 100644 Content.Client/Overlays/ImageOverlaySystem.cs create mode 100644 Content.Shared/Overlays/ImageOverlayComponent.cs create mode 100644 Resources/Textures/Clothing/Head/Helmets/scrapHelmetOverlayTexture.png create mode 100644 Resources/Textures/Clothing/Head/Welding/weldingTexture.png create mode 100644 Resources/Textures/Clothing/Head/Welding/weldingTexture.png.yml diff --git a/Content.Client/Overlays/ImageOverlay.cs b/Content.Client/Overlays/ImageOverlay.cs new file mode 100644 index 0000000000..18c43739d3 --- /dev/null +++ b/Content.Client/Overlays/ImageOverlay.cs @@ -0,0 +1,84 @@ +using System.Numerics; +using Content.Client.Resources; +using Content.Shared.Overlays; +using Robust.Client.Graphics; +using Robust.Client.ResourceManagement; +using Robust.Shared.Enums; +using Robust.Shared.Utility; + +namespace Content.Client.Overlays; + +/// +/// Creates overlay image placed over user screen +/// +public sealed partial class ImageOverlay : Overlay +{ + [Dependency] private IResourceCache _resourceCache = default!; + [Dependency] private IEyeManager _eyeManager = default!; + + /// + public override OverlaySpace Space => OverlaySpace.ScreenSpace; + + private readonly List<(ResPath Path, Color Color, Vector2 Scale)> _texturesToDraw = new(); + + public ImageOverlay() + { + IoCManager.InjectDependencies(this); + } + + /// + /// updates the list of active overlay textures. + /// + public void UpdateState(List components) + { + _texturesToDraw.Clear(); + foreach (var comp in components) + { + if (comp.Active) + _texturesToDraw.Add((comp.PathToOverlayImage, comp.AdditionalColorOverlay, comp.Scale)); + } + } + + /// + /// Activates or deactivates the overlay texture. + /// + public void SetActive(ImageOverlayComponent comp, bool isActive) + { + if (comp.Active == isActive) return; // prevents repetitious calls of this method + comp.Active = isActive; + + var overlayPair = (comp.PathToOverlayImage, comp.AdditionalColorOverlay, comp.Scale); + if (isActive) + _texturesToDraw.Add(overlayPair); + else + _texturesToDraw.Remove(overlayPair); + } + + /// + protected override void Draw(in OverlayDrawArgs args) + { + if (args.Viewport.Eye != _eyeManager.CurrentEye) + return; + + var zoomFactor = _eyeManager.CurrentEye.Zoom.X; + var screenRect = args.ViewportBounds; + + foreach (var (path, color, scale) in _texturesToDraw) + { + var texture = _resourceCache.GetTexture(path); + var sc = args.ScreenHandle; + + sc.DrawRect(screenRect, color); + + var regionWidth = texture.Width * (1 / scale.X) * zoomFactor; + var regionHeight = texture.Height * (1 / scale.Y) * zoomFactor; + + var left = (texture.Width / 2f) - (regionWidth / 2f); + var top = (texture.Height / 2f) - (regionHeight / 2f); + + var subRegion = UIBox2.FromDimensions(left, top, regionWidth, regionHeight); + + sc.DrawTextureRectRegion(texture, screenRect, subRegion); + } + } +} diff --git a/Content.Client/Overlays/ImageOverlaySystem.cs b/Content.Client/Overlays/ImageOverlaySystem.cs new file mode 100644 index 0000000000..1f1deaf605 --- /dev/null +++ b/Content.Client/Overlays/ImageOverlaySystem.cs @@ -0,0 +1,50 @@ +using Content.Shared.Clothing; +using Content.Shared.Inventory.Events; +using Content.Shared.Overlays; +using Robust.Client.Graphics; + +namespace Content.Client.Overlays; + +/// +/// Adds image overlay when wearing item with +/// +public sealed partial class ImageOverlaySystem : EquipmentHudSystem +{ + [Dependency] private IOverlayManager _overlayMan = default!; + + private ImageOverlay _overlay = default!; + + /// + public override void Initialize() + { + base.Initialize(); + _overlay = new(); + } + + [SubscribeLocalEvent] + private void OnItemToggled(Entity ent, ref ItemMaskToggledEvent args) + { + _overlay.SetActive(ent.Comp, !args.Mask.Comp.IsToggled); + } + + /// + protected override void UpdateInternal(RefreshEquipmentHudEvent component) + { + base.UpdateInternal(component); + if (component.Components.Count == 0) + { + _overlayMan.RemoveOverlay(_overlay); + return; + } + + _overlayMan.AddOverlay(_overlay); + _overlay.UpdateState(component.Components); + } + + /// + protected override void DeactivateInternal() + { + base.DeactivateInternal(); + _overlayMan.RemoveOverlay(_overlay); + } +} diff --git a/Content.Shared/Inventory/InventorySystem.Relay.cs b/Content.Shared/Inventory/InventorySystem.Relay.cs index 4c0035b78c..1d3a707804 100644 --- a/Content.Shared/Inventory/InventorySystem.Relay.cs +++ b/Content.Shared/Inventory/InventorySystem.Relay.cs @@ -111,6 +111,7 @@ public partial class InventorySystem SubscribeLocalEvent>(RefRelayInventoryEvent); SubscribeLocalEvent>(RefRelayInventoryEvent); SubscribeLocalEvent>(RefRelayInventoryEvent); + SubscribeLocalEvent>(RefRelayInventoryEvent); SubscribeLocalEvent>(OnGetEquipmentVerbs); SubscribeLocalEvent>(OnGetInnateVerbs); diff --git a/Content.Shared/Overlays/ImageOverlayComponent.cs b/Content.Shared/Overlays/ImageOverlayComponent.cs new file mode 100644 index 0000000000..ccbf6a2abd --- /dev/null +++ b/Content.Shared/Overlays/ImageOverlayComponent.cs @@ -0,0 +1,43 @@ +using System.Numerics; +using Robust.Shared.GameStates; +using Robust.Shared.Utility; + +namespace Content.Shared.Overlays; + +/// +/// Adds a image overlay on screen when wearing an entity with this component. +/// The border pixels of the image get stretched out to cover the rest of the viewport. +/// +/// +/// Need a blurred texture? Check out to include a filter sample. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)] +public sealed partial class ImageOverlayComponent : Component +{ + /// + /// Path to image overlaid on the screen. + /// + [DataField(required: true), AutoNetworkedField] + public ResPath PathToOverlayImage = default!; + + /// + /// The additional Color that can be overlaid over whole screen. + /// + [DataField, AutoNetworkedField] + public Color AdditionalColorOverlay = new(0, 0, 0, 0); + + /// + /// Scales the texture in x/y after it has been scaled to fit the user's viewport. + /// + /// + /// Avoid using large textures unless you really have to! + /// + [DataField, AutoNetworkedField] + public Vector2 Scale = Vector2.One; + + /// + /// Is this overlay active + /// + [DataField, AutoNetworkedField] + public bool Active = true; +} diff --git a/Resources/Prototypes/Entities/Clothing/Head/scraphelmet.yml b/Resources/Prototypes/Entities/Clothing/Head/scraphelmet.yml index 25669d5d00..50c9f52e2f 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/scraphelmet.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/scraphelmet.yml @@ -52,7 +52,7 @@ # The helmet itself - type: entity parent: [ClothingHeadHelmetBase, BaseMajorContraband] - id: ClothingHeadHelmetScrap #When we get the tech for it this bad boy needs to be given a vision reduction when equipped. 1-2 tiles less than normal should be good. + id: ClothingHeadHelmetScrap name: scrap helmet description: A cobbled-together helmet made from cabling, steel, and a bucket. components: @@ -83,3 +83,5 @@ - type: Construction graph: scraphelmet node: scraphelmet + - type: ImageOverlay + pathToOverlayImage: "/Textures/Clothing/Head/Helmets/scrapHelmetOverlayTexture.png" diff --git a/Resources/Prototypes/Entities/Clothing/Head/welding.yml b/Resources/Prototypes/Entities/Clothing/Head/welding.yml index c0ae440a56..7dd44dfdbb 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/welding.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/welding.yml @@ -23,6 +23,9 @@ - type: HideLayerClothing slots: - Snout + - type: ImageOverlay + pathToOverlayImage: "/Textures/Clothing/Head/Welding/weldingTexture.png" + additionalColorOverlay: "#000000A0" - type: entity parent: WeldingMaskBase diff --git a/Resources/Prototypes/Entities/Clothing/Masks/masks.yml b/Resources/Prototypes/Entities/Clothing/Masks/masks.yml index b673ee9c2b..6bda076637 100644 --- a/Resources/Prototypes/Entities/Clothing/Masks/masks.yml +++ b/Resources/Prototypes/Entities/Clothing/Masks/masks.yml @@ -728,7 +728,7 @@ - type: IdentityBlocker - type: entity - parent: ClothingMaskGas + parent: [ClothingMaskGas, WeldingMaskBase] id: ClothingMaskWeldingGas name: welding gas mask description: A gas mask with built in welding goggles and face shield. Looks like a skull, clearly designed by a nerd. @@ -738,17 +738,14 @@ state: icon - type: Clothing sprite: Clothing/Mask/welding-gas.rsi - - type: FlashImmunity - - type: EyeProtection - - type: PhysicalComposition - materialComposition: - Steel: 200 - Glass: 100 - type: StaticPrice price: 100 - type: Tag tags: - WhitelistChameleon + - type: ImageOverlay + pathToOverlayImage: "/Textures/Clothing/Head/Welding/weldingTexture.png" + additionalColorOverlay: "#00000050" # Entity tables - type: entityTable diff --git a/Resources/Textures/Clothing/Head/Helmets/scrapHelmetOverlayTexture.png b/Resources/Textures/Clothing/Head/Helmets/scrapHelmetOverlayTexture.png new file mode 100644 index 0000000000000000000000000000000000000000..4616ad715fda65982c70e3a874e7466749e53b1c GIT binary patch literal 16000 zcmeI3e{d9M8OJvP+B5^Uqi6<3%5oVLZ1;9=_kQhixe$_&T=n8j5=f}6vbX!*WzF5~ zW_Odjq@(hq426z$Os5P?Vbo5Uid1RGYMaRvM5&;l6{L268ANN_K}xMti-pp`clUng z&E;*Yo$;T&ndI(ypXd9$@B4Y*XW#dq-4^TWm{-5Bo*;;Mk9N`}et_Q!AdiYy8UOmg{%- zexdKNi36(^9Nn^G|ImS-9vqz*NW4ErZ^+(pIe78vp}T*mz7yY6w}0q~bDw{1+uP4x z+Y>(g4f&PJU*B_q@5+Ah)%wF7@?hip^Ufsp-LvHW)U*B1b?$6Gz5CS9mM>DXpZcY7 z?4^gF>FQs2acqy)F!6ZP14pwr?fmmy2hy&sOGo>jJa^l^1p~^Zubdp;{;&Ce`|IzCHF^B-dF|cz{;B2O zy8lG-t9u{5{`+vlH^--S3{>H?p7H{M5+{?{S~`?Pu>h ze)3Xd=9Pm_EME4e{?5ExZ`XhHo4fi`kshL}?J1WE>=wOq1&$lZRZSA~(7Ed{HKST=vQ^aq z>2v!jiSY->0Pptr0s(K}PLgFjKAPcZj-gmi@G^pzB?}){xE}rr>2gBoZd+aG4q8pF z0n^k3n$Bjk?kwk4^(5`#d7frinq?^%K^dbNQ_N8rqcNYPn5PXGlCEf`qGm`duNYT{ z%_f)2>ZtT7%qy)$qouAgMu8sWNasY2_P7~3ou;cP4YPd&CM^uIs?z8k)d1ZM40TwS zK>G;Dn2ps^$xJU02(O5}oVM;1#%~r$3tEzzQB|+68 zR~w#IEcfctlG~d%F8*WTgx+}4CIsU(Wua-O2ZbmNL$## zA;_wv$b$V7Z~=*nbAU<&84u<4d4m)$`#1{lqTd%}xC98YA$nSx^0p~-5y=>)n2`YN z0tUMkm|si;62LEVlvnm8DA{kN7QH;h2ZDZym-sk{2aBmI5B>u2GL=Z91wpScf1O_*6x2Q5js z#ljtMgORM;!;s7Rl#HxqjpfB`Qv+vCm>mF_Fw3w$iV0E-*9#wy93!yaVjkO%%0smE zSW7AY_f@K3_R%WgBOosl@>2|N5%TbY&o6jAcQCBLFj!9IJvena@+VgL8Ut@J)(Q3B zuVQg?e&BAczH<52sbyCz<>_S_k|klas;5OWtfa*xptVdgM3)=OyTyu3REsP$RzzB7 ziO>>@gjqLaTC&iHSV}Z4ak#MG3!$ZEG`?3!gC0{%Yhh0y011oFoTPvdB&J$X7Ai}3vud1fPA7XV;36d=eZ#c4Oify6^tm2$$ z>se{0#G-jrSxJn3s4V43B!@jSFfB(=V1t4$SS*6lgz}LUIZDT~(5j|XJ*vte%!TM` z%~e(KiXY40@Wa*uknv$9Wl~CpG`c%hRpzM(tVm>?@B%!J;Nw!Xj{#4Jp4NuO_glwG zYS@nF82dwetgnK$(vND_eSo&ok7~=(H5tVW!#!#b6=|+eSr?H!*B*Gw24OfkvEOciLA(ww1PI=AaN+qNUI!Nf1aCUH@O%)jg9`zI zHyvDfK8V-Bg#f{u4lX<&#OvTffZ$CB7oHE|b#Ng-@TP+c&j;~3xDX(C)4_%3gLoZW z2oSvK;KK7kybdk|2;OvX;rSq52NwbaZ#uZ}d=RgL3ju;R9b9-mh}Xe|0KuCME<7K^ z>)=9w;7tb?o)6-6a3MhOCKgwH`OR67fv?ME;d`-LzW=#b;XAdY)Y%;+h_R&vv0*bo zT)hFmFA~HsLlA#oPY}XRf@o03zxKjv_`-Beq^+elclM35Pv1h2bK4Iu9=h?!@SMwY z&%d;<_B;Lkk+m0kepP=PQAf-sYKfW+#7crBO6E%G?fB21d~o$c2d_>Nx!R3Wy-4u? wYE~b@j9G7wMRxcu)XwO?b_SBVabp(or_-}uJ`r8g08Jv&-qrS#RqHqX2dIUC#sB~S literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Welding/weldingTexture.png b/Resources/Textures/Clothing/Head/Welding/weldingTexture.png new file mode 100644 index 0000000000000000000000000000000000000000..ac88f28613c7181836000ae427d70edcd6f0e24c GIT binary patch literal 23007 zcmeI4c{r5o|M;I_tl^M^$`Ykh8jP`yJ$of8WJwGLV;jrZVublT3Gj_>#Ly*}6V`^Q|D=6T=m<-YIN{l1rZp6e;v?2sWh=N3)? z0Jx2f^o{@k2uHvE$j(atx7$l0f&RteV`S|Q05X!Rf1u#IT7h({7?iHAnVB0JgZ6hr z`-mIs>WcgLp|w3mXDqp+ zsk-;BF>?s2j!i~{_p9%FCJIgbM;kI`?2XG7gTp=)l}9m_4h^Im>sDEI&urU?+nn~9~HO6a!5RQ zp6s1Ul9Fj34q5`wCtN6zR*W1_X@*>V1r|$qcwt8Q&eqx^H+bKD*%uKf7ncRSn{yQ2 zF)np_AmRSbu`LMSJ06Np?VK;Qii>s%J0Nnxz4(RqzJB8P<*ZSQ_R#~KG53m%OivsN zG@yd7dI@E@qhj=BJ|$$ixgXt|m_hh7H#|^(K?&llN$0B|N>%Y&YnaqJ4zh835FrQ07(`E0cq8C$yIg!Wr#| zlnM6op^qT|sA~oLAe=mq7;#6WE6Q6#VxpWNA&zp^kT|AjB4^^Gi*!R7h58|nh8{9^ z3iWVOb(YZ5tWVQ>XGxPrX+w~vG-C;dv@ z&)EfjM9<(`b#zHX!VQD*fy>GU1qI0j!DP^WuCh>7RaIFzd0BaR2;BnWAL5Nc1Vg<2 zCI1TYJ&qpI-^mZUvPY2q=m0+_q<$dM8zcFP;WK-+Iu?e>nWM$-ir!&-dy6d)FW8 zue5#_0E2S*Ih=p1c2)DQZpdKNzqqYx{&M@8Jb#U;I=yoyCU8BpQ@|=VV?E7P9B^l} z6UrI>^%4nFc7i#=kPsIYIVeOyQ9%Ww>Z}NZAXO1ciYjt27o>{3y6iu~{7jo~RTz8w zV-Vg>NO~1?V;K}ZK1^8&;i#bO1aWqjSB0p`DL6tLm7M4k0qTNORz)J@<>Z{dhyKO= zAE8bCQ1n@f@cgA0t5rDDt8j!O>1|h1gecPc0a1`gs6tc_N=^_*XJ;5fUKNILc0qox z;x}RbQI!$OAA|M_`Gp{zF#&(fuT`I~ za|DiXTAhiS{)j*%ox$JAem3fd-!~^GH-xt<(pgjXyT|u}e|JIsb65~gst9?cvI|53 zp$vm4s3d{+#WW4+2_`Nt z1C_7%j{^5tvnH&2Rbs&GbhxqrExG3wacS@bb}w zDl00;D=I0;D<~)^DMMl3JbxN6x>_Rr{8!hF)%hg@Q~759z4RArdgj4({g4RyYG#f` zduskKMwiirA({#OgyW3BAoLIzi+}DpRboJ|- z@2`4BU+e$D_g6im?@w0?Zxlw8zBPPpDns!vUaJR@zqlTypR$pf^v*FBF{WFzk2?n`R4i8vhvGm`0IZ0S1J9hO+V(#{y69V zV=MWwA^$foes<}<8I>W{dL;}%))v=st<8r)yN-(i$lBsMuC@6vXxDKu09jjH$F(*e z2JJd71|VyT>$ukD!=PQq#QFLrxEO$}Ew1BQn-7C_9Tx+TwZ(N@Yx7~y zuH#|=vbMO6Yi&LZ+I3tEK-L!5ajngVLA#EN0m$0oI$n(ztSzqNTAL4pb{!W3khR5iTx;`T(5~ZR z0J65Yj%#f`4BB;E3_#Wv*Kw`Qhe5lJivh^m;ySLi`7mhLaWMc{TU^JrHXjDG^F%NDVO&;?5T(MD)?ambSk8QD~*zP?MrNq5JsqujM{lbsF zo-xBIsJ#azF0lYW)rB*<^oSsOO{=eC3(^1RQUCh||5V>cH@|UB1RVQy<$@?%4#r+|$a`huR@rCWPO@7Z*Y7nfc$IooXGz^1N0zGY7%B2?i zyin>7S02P`1Xa}n3Qe7{6zbK)WnlwxA>e7lS`qy*asl(5B2l!16BbAv+=P^&uGf zJhwB3^>B|+z>0UDQ_j?fJrQpK%V)fr_oNpTnB6$A)7ScF)Vu8f-%?w3!MU!CF7NLIv7v7agC~h)6+bQmBU>n zHC2HGC5iMGm9nXgperqb2WC3sKB!BPy)hs~=8rX^LRGPR7h@$q25HFT4kbgFt+uf? zN>clJ>@_}OA%arm>+{P)tY$e&ojgq+szjsDJTSuhf==J)X`xMrxh}dTVx@;s(b%!Y zvgLM~X2Uztz0ZL|SxfWXD^BcHNO00Kt_#E9hYH}Di%t>O>INRXvgfDXB$aq06=v}B z3(>6k_K7(bD_YN|`6Tn;!N*>~WNzw3)pPzGgtM>T7O`-CX z#961h07W_-H|uB$r)e(`n_3+nW%3J&2t5Z6OH>EfZo6IC?7PjbT`^Tef&#vAqAR33ng$m&yFiM$Fhav&4z823O@gc(RuU3zJEsz8cw3FjQU;`8F(*aC1yE?vaVOR)mJ z@pB>9)RKt&TxkM}ZjpH!vNV%B{BHU>8q7~CSugTI5B5K!cBDL^7Nm>i49jw-Nl|4D z6OQrlc6Nso%0X`3og0_LGWjTYbpA&*eGH}??Wa`u-!v#fH zX(C5^6Y$`Z=FLG`KvioqN3bhcKToo8BNh%U6plM9P@_kO^4?M>&8Z%lB*Q1~!Q(D~ z^?fRKTRN?zK#gpm({u)*0lmoX!OYvypcVMi7u!3U+UnkEGm{ZsUzrd;@bOl}g)c9G zx%5m9ntjit{p1Z@Y0k17kT{jxTk2*>fx(&UJOBtkIpVBGs`VK9Ney_s4fMV^C?Ad^ z9FinsK(1SHDy9+#ft0q}?O%Ws+)Y^HgENu>5qr|pnoTG&ta1_*$YeZ*34M;^{CQBY z(z#em+I3J<{n2#G&^$|+I7}GhfKygd68YM`ct)vTYI%R?Ln zD@fw?baJanCKr-e+nj*w#Blu!+#{a;Nhl!KT6^Lt`<$R3YOGs0?&RZX^dX+f&LB{x z0Bg`NVDni$STJJ6qNa0;V16rDPcYK@!v=2-+9(vLVIP10_RV$HEp{8so@<3ky7jHt zP%?zITdx{Wd87~Ut8KvsmoB%m9Y+Ek!&v7|F;hW@IFKG2uHhjS z%6xk6KEZWDg(x+-`!-TAe}DLtu}6N%KtZb$>s`=;R3Q-3a8|3CT_UQwLlKZH!0Poo z)9_mAZ}Al(+6tVHxk$%m1n;|2+Oj(`vT0LS_t?FjSV6d8&+!nY>763i=%la@4i9(I z0R!synTLj$Y@lYlDM>I+o2??+4OGom9NHsoDHFk(>rHB$d{n@l)*9F{_Ypl-|EXN0 z&^11-ZIju=OhbVs)nx!mwcPF~x2P)B1QXgDr{abNFYh5JoT?~qs2?U6E_furG}WKM zZt4kr&B6TiSRkP2+X6q8usb~giW{WRth+lUDHwpUiyV{ZOqG}$vK^#3 zvpIZZM9~7L>|+*OEi|L77r#_`@b7P;p{^6lHy#@^>B^TOW$TdeWLv@TR3v-KP^tzq zLBgp#!a$at*(Y&ufHZGd4w#(u@AJ*!l{QIhNi=j4iyx$~i;ywjSlx150au#hwCjdI zX3I?qp-+q;)WvXbJAj&{)2TkBA%yAzg*LqI<^5oD_p|?#x|<-+xZ%#rD`6$~+>lFJ zXBtb!U(a%$3jzg2<7}*#5AwT(fAJT{ZyKSx3p{UW(GmgQ;sYU{@!BktW&)Xt77X_! z=YnlgQ%HKs zO%Bf(4l7#=uC3Kgtc_*q7g|}~Y>M!Rz$z@4aB276KlL{fOW z&I_GY)O9~ss)ZKDU^jb%L93(VFc_DzFt%SgmM(K(>cCe)%x+7EnkFbFTVhm zH4OADpSzl$8ELrd@I!rfVV$-Bru&UCJ7&+=-UJ1suVFxWQJu~Z>LZEUqK~j_pEkE9A*i5uTO0gt@v2)@t9h6Ws$-hZ=2ko3QHF?E$W1kb2yaMPChNs*G+*&-Kn^`RjP4mzG%F>UE1w3ZCtKw z0w{djwqG(od+~+~`MM6NW0)o~2v>HqdBOFy&iL=W9KOL#5KU5$U(=4|uk-XxbKC zaTH@2%MgPw*{J2vgg*#IV{9^owY^owjdnSRPT&!#%43t$ak}eB%v7Hy6 z3wc>zTDKIQ?nnrT`10;a-Sys!GPhJ&<=TV`+vT^)WUp-H3tR4&>`5(XL*UAVtAz)u z6gL=+@Tza=H~#a%>5LCx?=PV9g~!@JkKwqzlNObh6#v$j(F@E{KJ5*4^~3hJ4krX% zR4QxD3fdLk8{X}%aVFc<@70)u zxamm1bCa5moLxaFw-#&oMS#mHGLM8>GMhANdGeOxm4Jr1IztRgLg_BG^Dmd@MSLGi zP;o@D>1mCT5Q*AhJ_*@w+f;>WteXW$dl z=AzXdcuQMA!3Lev#F2u`Ln4YavCE)AntE?kL`u-B!32w{q6JL0C`7QL+H!|veZ6+9 zbNW^t>q(wSZnCOD%A$Arlvabk2>I|))lsyK z=BS=F2}JU?>9aezC46PBS-U~X_Yf1H{sOq9Tcgn#wH+XeY^Z-fsn{^`Y^k_?R9pXi z8j`bZ1T{5*e+je`!c5ty6?fbk5(qD@q!!(x+`HG^x^bfJ!=)+ukJo;m8rno|V{_Vb zk)?UrUE2zsx9N=mAyrb(Jv7)9zL0l-aU&+;dnoTvOp4qyfm=$30ChH37q*LA@~r0z zSZLYU4S+vO)m?q#CNYlTi^neC3u1FM(0;kSqgAKa`vm_*;xxwP04vZOli2}k?%m6E z`L?p;Zo>nwYY-c+32V#S2>Qm%WvN`Jp?ZM1JXo=M08GQK71%Ge)P^(2HeBQW_Qu}FVu=FWQ+mQYl zSseNy)wO1yW!FGlVn$nU)59!sXCRk@WnY!i@r9y^YuXrvckXwSuyTMLyP8eYjFYO_ zOf5c!p8QrB-5G4zfh579_^1kjXP=njIe_l*W#vj{V(UO?f%{dB?4}1L!pSG%wTm&QVOd+Ugd|{ltTN4W4#I=bhv3dVosP zSgZ=f*@zG~E<}u(2u3$-j`6lTMXv%o8lrWHc5MkcWRkmN&vdi(vP=78X8dy%OBS&q zU~`XaCXO%o_}rUYsbdfl|7jY2pW6=VkntXMV?96jo35ks@Ed(fA~>$X!?9i2l_hQp zo1#yp_iQ+J5)Y(^Q(z??#>u{>(nl`1AC>29=_n1g+HhhQ2ch4mgNragEa||%RY`kN znwP-*V*4K_zf6Nj`&7v9uMgDid+7mA`J@&5jO)^Q!Hfi*Uc`xAx4?(Hw3dnmr1D2k zSGh3VB#skKaE2WC=#e*nQ@fWr%9!}&bk#g9dR)LoUn@n%;huqYvc8@&+6$1F8xmN~VixOm8#|4SO=`Y{X653zSmw__+|!ve^65k@3gb zc&$GQXgGNE6{~cB$KrT6&9Y%P@!|Dzi%m`}}_di{A~zSoY;L0_jsMqE*}qzu=Kzl!%JC7sbK!{wAL#n&|D z^vqg7*>iy+7hO$nE+YIRgx`wUAYZEyy_3@>h~8l^R*VI5hBWbl(sHX%l8ap=!s}08>FT&XT?~k4dzpAzS`<4RyYFb9b3? zq{-;pYkvA~Ap943Bzc8X6Tm)(kK#FLMl(Hj*WSOoZNW#iXycpRQ>7B7nzN+U2JCN| z-ZpB~Pf*IHU0pzz*SX%muJe}tNE1h}p2}`1@k5gM7!3dAbXQ6I;k0$OK3Q;V4Gf^3NKTp-_+29q~is^tyM z#(H3((n<4rs+Ha7l_aBn8a@C(%8V!1_Ne0Wl1US(1UNTwNv(L__18t2^0@OKUcm1P4GUneQsxQ8u%&TRuc}f%3(vpLrWI|cLLSvuU-tX_ z#kH^X=8|gJRLRaI3>(>8lI%UGBt6%3&r5XsLe9sd`nfE~_$^@XN<=FqJf6dW>$svS zhtL`SGa&qXK^qF^jBT`^dpAKa6wSuVx6;`;4;gDYLthim3LEV_dlRa0<lZre(>n*Gyb=zz`i^S zTH9tG$l(v!D;*DsY5_BiAW{Lh_6Sq)tLaKm#kP4-W-{djqzfy(>$Bw$xT62^RuNog zS?2IL`VF25Tppel+MQ5sf1pvLMA2s=c}wU=3&375nH?$EXj9Sma&f+ekhl_icsA33 z%iNNNUZlP4c4y6x)+DPx1IsZjY@QS}Y{|==E3#Y+Yo4X_C(YcRSn*uzMuII4p&*lhXRKSSz7JKr+kDBh7_Ll9hLeX%I|m&c;ept#?EW zJ--Rko5JRiN}g|!=*C*jVef+OJO#JzzfvGpxg5u%!hed zfmBZbcJJhzGp!ZVpv7+@{#bidu8W|{X4W6zfdE3@<Bv&I5Ip;+t2*xz`KcBtQUs4soHML`TX&` zQuW(&PYDWTxVQMb70G}Ia59@uub`G*T*$&2cy*aL z3>0#G-82g2($*8}h1AmQgsRI%z;m|83TrxHJUIGK!ayI%V~aPDKtgP#m909( zSLl?YlhJ3j!S{m$-h5`e>vLwfuZP;a+B6DuoFNnLR-q4Lwvn<p#!qKr0;u@4dbC#=c^6$JDE!!t_*0*2wq= zROkkkrS?HZAR#1{5Xwa?-+pWJ2Gnz(PY+Vnwi2mt?ayC^mfcRuoSHYM*%HC-8=j`9 zY+$dBDsW26Q3FOo0qiXo(h#c*KTU0m_FM1?o~CQ3vI(20v#GlaYiM?QT0z2KgS4(g z6GwaD#12$i>`Wf0@nO|nVQo`o2jS}7*TPO_gRVd?Qq-*4=Jks)StiqarD*~A%tB9$ zxLdTOro57ggW_a2Hj*7b>4wCxHD$IeYN7KJKws$IBfz;8SYLB$#-wQj9M|zG)mphh zISU<3GjI}r4P2toQkD{0h#JYb`TdU9c$PGCng28qHx8e~51dBzt%P;i_q9_x!)_R5 zTf<|}V@&C`+9h+KsX#!(iRmWjidN4|?FmywAcx;Ad2j4?O3_e?&FsWmY6Bk2D{;Q7 znVZ-Qn&AT5j)2rz(*nRblM9y;t4x&v(`~(8e|W@}OFY41$j3$iJ<5j9Q@VQbgVFO& z23(tvpZl&J~EEm|$RT4>4!IxrXJ z*+8a_*h>4VSM!&-(vV<@xt(3^VapY}EUA{Wd3M`U2G7MTC7o|lQ=F;ON6gpa806gFaQ>B8b@~$R-XZbO!`GV*r6HNxJc{mg2UdulOsAaC zlZw@t=-f#4A_7y~>8Wbwf$ZW2ux7x$TUOrH4wuP~$FTN!(ZYh^Vq6YSUp`hj?=Z$o zD>tX&A^VnJzIYW@ecd`)`!!G@QawfA6pwPH1^V?GY%(A3n|QgXVL^NIN~~*p|I?a> zLtu56G>yF6VG~o;#zkh+h2wm~CDRd?m(nH4>)MK1|1?{zA`yz5I!-c93m1WZW&5hwh`FmfX5tl&vm3dEwZM za!CJPu^N2ON#tEI4JFB>7m#jS*)-vO9+sw|OIxSB5{)gn5dIzZssu6Lr{Jo^(%?9U zUdJipwsP*1rw6eGpy0RKOp&x5UAxZpTVW%&*DFQZoU#8Lvd}{Udu=E#wwUIZkH|K= zu&BK44-dnptGkUd9@B!GUI0s`AJt4dd&9x?{I)fhrtavz*zr~-ot$kk^c`mDm+jC literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Welding/weldingTexture.png.yml b/Resources/Textures/Clothing/Head/Welding/weldingTexture.png.yml new file mode 100644 index 0000000000..5c43e23305 --- /dev/null +++ b/Resources/Textures/Clothing/Head/Welding/weldingTexture.png.yml @@ -0,0 +1,2 @@ +sample: + filter: true From 94fd6554698afda7360a33c5e266d3b8dcc2ae8e Mon Sep 17 00:00:00 2001 From: ProPeperos <61984624+ProPeperos@users.noreply.github.com> Date: Thu, 3 Sep 2026 23:35:47 +0000 Subject: [PATCH 054/197] Reverts light energy of default lights (#45528) reverts light energy of default lights --- Resources/Prototypes/Entities/Objects/Power/lights.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Objects/Power/lights.yml b/Resources/Prototypes/Entities/Objects/Power/lights.yml index 4e455dc2c6..f640ace13e 100644 --- a/Resources/Prototypes/Entities/Objects/Power/lights.yml +++ b/Resources/Prototypes/Entities/Objects/Power/lights.yml @@ -220,7 +220,7 @@ components: - type: LightBulb color: "#FFE4CE" # 5000K color temp - lightEnergy: 1.6 + lightEnergy: 0.8 lightRadius: 10 lightSoftness: 1 PowerUse: 25 From 435bf2e36e0c6f8f03313a9c3d8f6bdc4822efd3 Mon Sep 17 00:00:00 2001 From: Whatstone <166147148+whatston3@users.noreply.github.com> Date: Fri, 4 Sep 2026 01:09:25 +0000 Subject: [PATCH 055/197] Bugfix: Personal AI actions now apply to the mob (#45831) personal AI actions now apply to the mob --- Resources/Prototypes/Catalog/pai_catalog.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Resources/Prototypes/Catalog/pai_catalog.yml b/Resources/Prototypes/Catalog/pai_catalog.yml index 913eae5d0b..e3acdb27ca 100644 --- a/Resources/Prototypes/Catalog/pai_catalog.yml +++ b/Resources/Prototypes/Catalog/pai_catalog.yml @@ -8,6 +8,7 @@ name: pai-mass-scanner-name description: pai-mass-scanner-desc productAction: ActionPAIMassScanner + applyToMob: true cost: SiliconMemory: 10 categories: @@ -21,6 +22,7 @@ name: pai-midi-player-name description: pai-midi-player-desc productAction: ActionPAIPlayMidi + applyToMob: true cost: SiliconMemory: 5 categories: @@ -34,6 +36,7 @@ name: pai-station-map-name description: pai-station-map-desc productAction: ActionPAIOpenMap + applyToMob: true cost: SiliconMemory: 5 categories: From 49b9dedd5b8e5d6a187d97761a5cd53c84e369ec Mon Sep 17 00:00:00 2001 From: Hitlinemoss <209321380+Hitlinemoss@users.noreply.github.com> Date: Fri, 4 Sep 2026 01:32:48 +0000 Subject: [PATCH 056/197] Properly split "Service" and "Civilian" into separate departments (#45511) * Properly split 'Service' and 'Civilian' into separate departments * Fixed Service department color * minor highlight sorting * minor highlight sorting * Renamed assistant.yml to passenger.yml --- Resources/Locale/en-US/chat/highlights.ftl | 6 ++- .../Locale/en-US/job/department-desc.ftl | 5 +- Resources/Locale/en-US/job/department.ftl | 3 +- .../Locale/en-US/job/job-description.ftl | 4 +- .../Objects/Devices/encryption_keys.yml | 2 +- .../Weapons/Throwable/canister_grenades.yml | 2 +- .../Entities/Objects/base_contraband.yml | 8 +++ .../Civilian/{assistant.yml => passenger.yml} | 0 .../Jobs/{Civilian => Service}/bartender.yml | 2 +- .../Jobs/{Civilian => Service}/botanist.yml | 0 .../Jobs/{Civilian => Service}/chaplain.yml | 0 .../Roles/Jobs/{Civilian => Service}/chef.yml | 2 +- .../Jobs/{Civilian => Service}/clown.yml | 0 .../Jobs/{Civilian => Service}/janitor.yml | 0 .../Jobs/{Civilian => Service}/lawyer.yml | 0 .../Jobs/{Civilian => Service}/librarian.yml | 0 .../Roles/Jobs/{Civilian => Service}/mime.yml | 0 .../Jobs/{Civilian => Service}/musician.yml | 0 .../{Civilian => Service}/service_worker.yml | 2 +- .../Prototypes/Roles/Jobs/departments.yml | 51 +++++++++++-------- Resources/Prototypes/StatusIcon/job.yml | 36 ++++++------- 21 files changed, 72 insertions(+), 51 deletions(-) rename Resources/Prototypes/Roles/Jobs/Civilian/{assistant.yml => passenger.yml} (100%) rename Resources/Prototypes/Roles/Jobs/{Civilian => Service}/bartender.yml (97%) rename Resources/Prototypes/Roles/Jobs/{Civilian => Service}/botanist.yml (100%) rename Resources/Prototypes/Roles/Jobs/{Civilian => Service}/chaplain.yml (100%) rename Resources/Prototypes/Roles/Jobs/{Civilian => Service}/chef.yml (97%) rename Resources/Prototypes/Roles/Jobs/{Civilian => Service}/clown.yml (100%) rename Resources/Prototypes/Roles/Jobs/{Civilian => Service}/janitor.yml (100%) rename Resources/Prototypes/Roles/Jobs/{Civilian => Service}/lawyer.yml (100%) rename Resources/Prototypes/Roles/Jobs/{Civilian => Service}/librarian.yml (100%) rename Resources/Prototypes/Roles/Jobs/{Civilian => Service}/mime.yml (100%) rename Resources/Prototypes/Roles/Jobs/{Civilian => Service}/musician.yml (100%) rename Resources/Prototypes/Roles/Jobs/{Civilian => Service}/service_worker.yml (97%) diff --git a/Resources/Locale/en-US/chat/highlights.ftl b/Resources/Locale/en-US/chat/highlights.ftl index be34dbfff4..60de705c7f 100644 --- a/Resources/Locale/en-US/chat/highlights.ftl +++ b/Resources/Locale/en-US/chat/highlights.ftl @@ -32,7 +32,7 @@ highlights-paramedic = Paramedic, "Para", "Medic", Medbay, Medical, "Med" highlights-scientist = Scientist, Science, "Sci", "RND", "R&D" highlights-researchassistant = Research Assistant, Science, "Sci", "RND", "R&D" -# Civilian +# Service highlights-bartender = Bartender, Barkeeper, Barkeep, "Bar", Service, "Serv" highlights-botanist = Botanist, Botany, Hydroponics, Service, "Serv" highlights-chaplain = Chaplain, "Chap", Chapel, Service, "Serv" @@ -43,7 +43,6 @@ highlights-lawyer = Lawyer, Attorney, "Law", Service, "Serv" highlights-librarian = Librarian, Library, Service, "Serv" highlights-mime = Mime, Theatre, Theater, Service, "Serv" highlights-musician = Musician, "Music", Theatre, Theater, Service, "Serv" -highlights-passenger = Passenger, Greytider, Graytider, "Tider", "Tide" highlights-serviceworker = Service Worker, Service, "Serv" # Station-specific @@ -53,3 +52,6 @@ highlights-psychologist = Psychologist, Psychology, "Psych", Medbay, Medical, "M # Silicon highlights-borg = Cyborg, Silicon, Borg, Robotics, "Robot" highlights-stationai = Station AI, Silicon, "AI", "sAI" + +# Civilian +highlights-passenger = Passenger, Greytider, Graytider, "Tider", "Tide" diff --git a/Resources/Locale/en-US/job/department-desc.ftl b/Resources/Locale/en-US/job/department-desc.ftl index 798992037c..00c1e4a617 100644 --- a/Resources/Locale/en-US/job/department-desc.ftl +++ b/Resources/Locale/en-US/job/department-desc.ftl @@ -1,10 +1,11 @@ department-Cargo-description = Acquire and deliver useful supplies for the rest of the station. -department-Civilian-description = Attend to the crew's basic physical and psychological needs. +department-Civilian-description = Crew members without formal jobs. department-Command-description = Manage the crew and keep them working efficiently. department-CentralCommand-description = Manage the crew and keep them working efficiently. department-Engineering-description = Maintain and repair the station. department-Medical-description = Keep the crew healthy. -department-Security-description = Protect the station and keep the peace. department-Science-description = Research and develop new technologies for the station. +department-Security-description = Protect the station and keep the peace. +department-Service-description = Attend to the crew's basic physical and psychological needs. department-Silicon-description = Fulfill the terms of your installed lawset. department-Specific-description = Jobs that not all stations have. diff --git a/Resources/Locale/en-US/job/department.ftl b/Resources/Locale/en-US/job/department.ftl index 8711b3f118..1bdfb08517 100644 --- a/Resources/Locale/en-US/job/department.ftl +++ b/Resources/Locale/en-US/job/department.ftl @@ -4,8 +4,9 @@ department-Command = Command department-CentralCommand = Central Command department-Engineering = Engineering department-Medical = Medical -department-Security = Security department-Science = Science +department-Security = Security +department-Service = Service department-Silicon = Silicon department-Specific = Station specific diff --git a/Resources/Locale/en-US/job/job-description.ftl b/Resources/Locale/en-US/job/job-description.ftl index 13c3c9659a..112fd9ba71 100644 --- a/Resources/Locale/en-US/job/job-description.ftl +++ b/Resources/Locale/en-US/job/job-description.ftl @@ -44,11 +44,13 @@ job-description-lawyer = Ensure that criminals receive legal representation and job-description-librarian = Keep the library organized. Provide the crew with educational materials, entertaining stories, and tabletop games. job-description-mime = Entertain the crew with silent acts of performance art, and engage in light rivalry with the clown. job-description-musician = Entertain the crew with your unique musical talents. -job-description-passenger = Enjoy your stay aboard the station with no obligations! job-description-reporter = Inform and entertain the station's crew with wireless cameras and news bulletins. job-description-serviceworker = Assist the bar and kitchen with providing sustenance to the crew. job-description-tram-driver = Drive around a tram from stop to stop. +# Civilian +job-description-passenger = Enjoy your stay aboard the station with no obligations! + # Silicon job-description-borg = Use your robotic chassis to perform a wide variety of specialized tasks. job-description-station-ai = Remotely interface with the station's cameras, airlocks, radio, and other electronic devices from the safety of your core. diff --git a/Resources/Prototypes/Entities/Objects/Devices/encryption_keys.yml b/Resources/Prototypes/Entities/Objects/Devices/encryption_keys.yml index 0ad2417470..4c02420c09 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/encryption_keys.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/encryption_keys.yml @@ -206,7 +206,7 @@ - EncryptionSecurity - type: entity - parent: [ EncryptionKey, BaseCivilianContraband ] + parent: [ EncryptionKey, BaseServiceContraband ] id: EncryptionKeyService name: service encryption key description: An encryption key used by the service staff, tasked with keeping the station full, happy and clean. diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/canister_grenades.yml b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/canister_grenades.yml index 3b4bbdf036..a9cded9d5f 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/canister_grenades.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/canister_grenades.yml @@ -24,7 +24,7 @@ path: /Audio/Items/smoke_grenade_prime.ogg - type: entity - parent: [ BaseCivilianContraband, SmokeGrenade ] + parent: [ BaseServiceContraband, SmokeGrenade ] id: CleanerGrenade name: cleanade description: Special grenade for janitors, releasing large cloud of space cleaner foam. diff --git a/Resources/Prototypes/Entities/Objects/base_contraband.yml b/Resources/Prototypes/Entities/Objects/base_contraband.yml index bfea4b8c8a..cc1a1543ae 100644 --- a/Resources/Prototypes/Entities/Objects/base_contraband.yml +++ b/Resources/Prototypes/Entities/Objects/base_contraband.yml @@ -124,6 +124,14 @@ - type: Contraband allowedDepartments: [ Cargo ] +- type: entity + id: BaseServiceContraband + parent: BaseRestrictedContraband + abstract: true + components: + - type: Contraband + allowedDepartments: [ Service ] + # multiple departments restricted contraband - type: entity id: BaseCentcommCommandContraband diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/assistant.yml b/Resources/Prototypes/Roles/Jobs/Civilian/passenger.yml similarity index 100% rename from Resources/Prototypes/Roles/Jobs/Civilian/assistant.yml rename to Resources/Prototypes/Roles/Jobs/Civilian/passenger.yml diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/bartender.yml b/Resources/Prototypes/Roles/Jobs/Service/bartender.yml similarity index 97% rename from Resources/Prototypes/Roles/Jobs/Civilian/bartender.yml rename to Resources/Prototypes/Roles/Jobs/Service/bartender.yml index 2d32b87f68..e015af2a1f 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/bartender.yml +++ b/Resources/Prototypes/Roles/Jobs/Service/bartender.yml @@ -5,7 +5,7 @@ playTimeTracker: JobBartender requirements: - !type:DepartmentTimeRequirement - department: Civilian + department: Service time: 0.5h startingGear: BartenderGear icon: "JobIconBartender" diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/botanist.yml b/Resources/Prototypes/Roles/Jobs/Service/botanist.yml similarity index 100% rename from Resources/Prototypes/Roles/Jobs/Civilian/botanist.yml rename to Resources/Prototypes/Roles/Jobs/Service/botanist.yml diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml b/Resources/Prototypes/Roles/Jobs/Service/chaplain.yml similarity index 100% rename from Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml rename to Resources/Prototypes/Roles/Jobs/Service/chaplain.yml diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/chef.yml b/Resources/Prototypes/Roles/Jobs/Service/chef.yml similarity index 97% rename from Resources/Prototypes/Roles/Jobs/Civilian/chef.yml rename to Resources/Prototypes/Roles/Jobs/Service/chef.yml index b3a5deab15..5677db604c 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/chef.yml +++ b/Resources/Prototypes/Roles/Jobs/Service/chef.yml @@ -5,7 +5,7 @@ playTimeTracker: JobChef requirements: - !type:DepartmentTimeRequirement - department: Civilian + department: Service time: 0.5h startingGear: ChefGear icon: "JobIconChef" diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/clown.yml b/Resources/Prototypes/Roles/Jobs/Service/clown.yml similarity index 100% rename from Resources/Prototypes/Roles/Jobs/Civilian/clown.yml rename to Resources/Prototypes/Roles/Jobs/Service/clown.yml diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/janitor.yml b/Resources/Prototypes/Roles/Jobs/Service/janitor.yml similarity index 100% rename from Resources/Prototypes/Roles/Jobs/Civilian/janitor.yml rename to Resources/Prototypes/Roles/Jobs/Service/janitor.yml diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/lawyer.yml b/Resources/Prototypes/Roles/Jobs/Service/lawyer.yml similarity index 100% rename from Resources/Prototypes/Roles/Jobs/Civilian/lawyer.yml rename to Resources/Prototypes/Roles/Jobs/Service/lawyer.yml diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml b/Resources/Prototypes/Roles/Jobs/Service/librarian.yml similarity index 100% rename from Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml rename to Resources/Prototypes/Roles/Jobs/Service/librarian.yml diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/mime.yml b/Resources/Prototypes/Roles/Jobs/Service/mime.yml similarity index 100% rename from Resources/Prototypes/Roles/Jobs/Civilian/mime.yml rename to Resources/Prototypes/Roles/Jobs/Service/mime.yml diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/musician.yml b/Resources/Prototypes/Roles/Jobs/Service/musician.yml similarity index 100% rename from Resources/Prototypes/Roles/Jobs/Civilian/musician.yml rename to Resources/Prototypes/Roles/Jobs/Service/musician.yml diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/service_worker.yml b/Resources/Prototypes/Roles/Jobs/Service/service_worker.yml similarity index 97% rename from Resources/Prototypes/Roles/Jobs/Civilian/service_worker.yml rename to Resources/Prototypes/Roles/Jobs/Service/service_worker.yml index 0c83971827..f96b29900c 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/service_worker.yml +++ b/Resources/Prototypes/Roles/Jobs/Service/service_worker.yml @@ -5,7 +5,7 @@ playTimeTracker: JobServiceWorker requirements: - !type:DepartmentTimeRequirement - department: Civilian + department: Service time: 0.5h startingGear: ServiceWorkerGear icon: "JobIconServiceWorker" diff --git a/Resources/Prototypes/Roles/Jobs/departments.yml b/Resources/Prototypes/Roles/Jobs/departments.yml index f021efaee3..fdee7e7c1c 100644 --- a/Resources/Prototypes/Roles/Jobs/departments.yml +++ b/Resources/Prototypes/Roles/Jobs/departments.yml @@ -12,26 +12,12 @@ id: Civilian name: department-Civilian description: department-Civilian-description - color: "#9FED58" + color: "#7F7F7F" weight: -10 ignoreForDepartmentFallback: true roles: - - Bartender - - Botanist - - Chaplain - - Chef - - Clown - - HeadOfPersonnel - - Janitor - - Lawyer - - Librarian - - Mime - - Musician - Passenger - - Reporter - Visitor - - ServiceWorker - - TramDriver # Please kill this - type: department @@ -102,6 +88,16 @@ - Psychologist - Paramedic +- type: department + id: Science + name: department-Science + description: department-Science-description + color: "#D381C9" + roles: + - ResearchDirector + - Scientist + - ResearchAssistant + - type: department id: Security name: department-Security @@ -116,14 +112,25 @@ - Warden - type: department - id: Science - name: department-Science - description: department-Science-description - color: "#D381C9" + id: Service + name: department-Service + description: department-Service-description + color: "#9FED58" roles: - - ResearchDirector - - Scientist - - ResearchAssistant + - Bartender + - Botanist + - Chaplain + - Chef + - Clown + - HeadOfPersonnel + - Janitor + - Lawyer + - Librarian + - Mime + - Musician + - Reporter + - ServiceWorker + - TramDriver - type: department id: Silicon diff --git a/Resources/Prototypes/StatusIcon/job.yml b/Resources/Prototypes/StatusIcon/job.yml index f908377ad9..d31e2cb8c4 100644 --- a/Resources/Prototypes/StatusIcon/job.yml +++ b/Resources/Prototypes/StatusIcon/job.yml @@ -23,6 +23,24 @@ state: ShaftMiner jobName: job-name-salvagespec +# Civilian + +- type: jobIcon + parent: JobIcon + id: JobIconPassenger + icon: + sprite: *icon-rsi + state: Passenger + jobName: job-name-passenger + +- type: jobIcon + parent: JobIcon + id: JobIconVisitor + icon: + sprite: *icon-rsi + state: Visitor + jobName: job-name-visitor + # Command - type: jobIcon @@ -357,24 +375,6 @@ state: Musician jobName: job-name-musician -# Passenger - -- type: jobIcon - parent: JobIcon - id: JobIconPassenger - icon: - sprite: *icon-rsi - state: Passenger - jobName: job-name-passenger - -- type: jobIcon - parent: JobIcon - id: JobIconVisitor - icon: - sprite: *icon-rsi - state: Visitor - jobName: job-name-visitor - # Silicon - type: jobIcon From 1885238b4d63f54f143d8f31a05f98cad4b31d99 Mon Sep 17 00:00:00 2001 From: Whatstone <166147148+whatston3@users.noreply.github.com> Date: Fri, 4 Sep 2026 07:21:20 +0000 Subject: [PATCH 057/197] Bugfix: RandomSpawnerComponent now spawns rare drops again. (#45833) * Restore the rare drops * what newlines there were never newlines you're crazy go home * Comment spawner components, system, tableselector * known to cause cancer in the state of california --- .../Components/ConditionalSpawnerComponent.cs | 55 ++++++++------- .../Components/EntityTableSpawnerComponent.cs | 8 ++- .../Components/RandomSpawnerComponent.cs | 68 ++++++++++--------- .../EntitySystems/ConditionalSpawnerSystem.cs | 8 ++- .../EntitySelectors/EntityTableSelector.cs | 8 +++ 5 files changed, 88 insertions(+), 59 deletions(-) diff --git a/Content.Server/Spawners/Components/ConditionalSpawnerComponent.cs b/Content.Server/Spawners/Components/ConditionalSpawnerComponent.cs index c6f4871b7e..0805c5c393 100644 --- a/Content.Server/Spawners/Components/ConditionalSpawnerComponent.cs +++ b/Content.Server/Spawners/Components/ConditionalSpawnerComponent.cs @@ -1,32 +1,35 @@ using Robust.Shared.Prototypes; -namespace Content.Server.Spawners.Components +namespace Content.Server.Spawners.Components; + +/// +/// A spawner that rolls to spawn from of a list of entities on and . +/// +/// +/// For non-trivial lists of prototypes, consider using and an instead. +/// +[RegisterComponent, EntityCategory("Spawner")] +[Virtual] +public partial class ConditionalSpawnerComponent : Component { - [RegisterComponent, EntityCategory("Spawner")] - [Virtual] - public partial class ConditionalSpawnerComponent : Component - { - /// - /// A list of entities, one of which can spawn in after calling Spawn() - /// - [ViewVariables(VVAccess.ReadWrite)] - [DataField] - public List Prototypes { get; set; } = new(); + /// + /// A list of entities, one of which can spawn on a spawn roll when calling . + /// + [DataField] + public List Prototypes { get; set; } = new(); - /// - /// A list of game rules. - /// If at least one of them was launched in the game, - /// an attempt will occur to spawn one of the objects in the Prototypes list - /// - [ViewVariables(VVAccess.ReadWrite)] - [DataField] - public List GameRules = new(); + /// + /// A list of game rules - starting any of them causes a spawn roll. + /// + /// + /// Currently unused, should be marked obsolete if not removed outright. + /// + [DataField] + public List GameRules = new(); - /// - /// Chance of spawning an entity - /// - [ViewVariables(VVAccess.ReadWrite)] - [DataField] - public float Chance { get; set; } = 1.0f; - } + /// + /// Chance of spawning an entity on each spawn roll. + /// + [DataField] + public float Chance { get; set; } = 1.0f; } diff --git a/Content.Server/Spawners/Components/EntityTableSpawnerComponent.cs b/Content.Server/Spawners/Components/EntityTableSpawnerComponent.cs index 73af805039..250831102d 100644 --- a/Content.Server/Spawners/Components/EntityTableSpawnerComponent.cs +++ b/Content.Server/Spawners/Components/EntityTableSpawnerComponent.cs @@ -4,6 +4,9 @@ using Robust.Shared.Prototypes; namespace Content.Server.Spawners.Components; +/// +/// A spawner that randomly spawns entities according to an . +/// [RegisterComponent, EntityCategory("Spawner"), Access(typeof(ConditionalSpawnerSystem))] public sealed partial class EntityTableSpawnerComponent : Component { @@ -14,8 +17,11 @@ public sealed partial class EntityTableSpawnerComponent : Component public EntityTableSelector Table = default!; /// - /// Scatter of entity spawn coordinates + /// Maximum distance in meters to scatter spawned entities from the spawner. /// + /// + /// Spawned entities are created in a disk this size around the spawner. + /// [DataField] public float Offset = 0.2f; diff --git a/Content.Server/Spawners/Components/RandomSpawnerComponent.cs b/Content.Server/Spawners/Components/RandomSpawnerComponent.cs index ec1b3249a9..8760dbaf40 100644 --- a/Content.Server/Spawners/Components/RandomSpawnerComponent.cs +++ b/Content.Server/Spawners/Components/RandomSpawnerComponent.cs @@ -1,38 +1,44 @@ using Robust.Shared.Prototypes; -namespace Content.Server.Spawners.Components +namespace Content.Server.Spawners.Components; + +/// +/// An extended with optional rare prototypes and more configurable spawn behavior. +/// +/// +/// For non-trivial lists of prototypes, consider using and an instead. +/// +[RegisterComponent, EntityCategory("Spawner")] +public sealed partial class RandomSpawnerComponent : ConditionalSpawnerComponent { - [RegisterComponent, EntityCategory("Spawner")] - public sealed partial class RandomSpawnerComponent : ConditionalSpawnerComponent - { - /// - /// A list of rarer entities that can spawn with the RareChance - /// instead of one of the entities in the Prototypes list. - /// - [ViewVariables(VVAccess.ReadWrite)] - [DataField] - public List RarePrototypes { get; set; } = new(); + /// + /// A list of rare entities to spawn. + /// + /// + /// On a successful spawn roll, with probability, + /// an entity from this list is spawned (vs. the normal Prototypes list). + /// + [DataField] + public List RarePrototypes { get; set; } = new(); - /// - /// The chance that a rare prototype may spawn instead of a common prototype - /// - [ViewVariables(VVAccess.ReadWrite)] - [DataField] - public float RareChance { get; set; } = 0.05f; + /// + /// The chance that a rare prototype may spawn instead of a common prototype. + /// + [DataField] + public float RareChance { get; set; } = 0.05f; - /// - /// Scatter of entity spawn coordinates - /// - [ViewVariables(VVAccess.ReadWrite)] - [DataField] - public float Offset { get; set; } = 0.2f; + /// + /// Maximum distance in meters to scatter spawned entities from the spawner. + /// + /// + /// Spawned entities are created in a disk this size around the spawner. + /// + [DataField] + public float Offset { get; set; } = 0.2f; - /// - /// A variable meaning whether the spawn will - /// be able to be used again or whether - /// it will be destroyed after the first use - /// - [DataField] - public bool DeleteSpawnerAfterSpawn = true; - } + /// + /// If true, the spawner is deleted on . + /// + [DataField] + public bool DeleteSpawnerAfterSpawn = true; } diff --git a/Content.Server/Spawners/EntitySystems/ConditionalSpawnerSystem.cs b/Content.Server/Spawners/EntitySystems/ConditionalSpawnerSystem.cs index 70a26aac57..d745beee2d 100644 --- a/Content.Server/Spawners/EntitySystems/ConditionalSpawnerSystem.cs +++ b/Content.Server/Spawners/EntitySystems/ConditionalSpawnerSystem.cs @@ -15,6 +15,12 @@ namespace Content.Server.Spawners.EntitySystems; // TODO: This whole system is a mess. A lot of this should be marked obsolete. // TODO: It should probably use interfaces with entity tables *if* more than one component is needed. // TODO: Remove the TransformSystem Dependency when engine SpawnAtPosition EntityCoordinates override is fixed. +/// +/// A system for spawning random or conditional entities, either on initializing spawner entities, or on adding GameRules. +/// +/// +/// +/// public sealed partial class ConditionalSpawnerSystem : EntitySystem { [Dependency] private IRobustRandom _robustRandom = default!; @@ -113,7 +119,7 @@ public sealed partial class ConditionalSpawnerSystem : EntitySystem var coordinates = GetRandomOffset(coords, component.Offset); var rotation = _xform.GetWorldRotation(xform); - Spawn(_robustRandom.Pick(component.Prototypes), coordinates, rotation: rotation); + Spawn(proto, coordinates, rotation: rotation); } private void Spawn(Entity ent) diff --git a/Content.Shared/EntityTable/EntitySelectors/EntityTableSelector.cs b/Content.Shared/EntityTable/EntitySelectors/EntityTableSelector.cs index a85988f741..2c207e98de 100644 --- a/Content.Shared/EntityTable/EntitySelectors/EntityTableSelector.cs +++ b/Content.Shared/EntityTable/EntitySelectors/EntityTableSelector.cs @@ -7,6 +7,14 @@ using Robust.Shared.Random; namespace Content.Shared.EntityTable.EntitySelectors; +/// +/// An extensible table for configurable entity selection, both random and deterministic. +/// +/// +/// This is currently the favored way to select multiple entities - generally for spawning. +/// With its children, it supports returning multiple entities, nested selectors, +/// groups of entities, conditions, and probabilistic spawns. +/// [ImplicitDataDefinitionForInheritors, UsedImplicitly(ImplicitUseTargetFlags.WithInheritors)] public abstract partial class EntityTableSelector { From 0c1312a2f6daac076d069bab00146af0cd672ea4 Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Fri, 4 Sep 2026 13:01:05 +0000 Subject: [PATCH 058/197] Add heart attack smite for admins (#45837) * Initial commit * Fix the meme --- .../Systems/AdminVerbSystem.Smites.cs | 20 +++++++++++++++++++ .../Locale/en-US/administration/smites.ftl | 2 ++ 2 files changed, 22 insertions(+) diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs b/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs index ad3b9d11a4..3ba6a5a5fd 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs @@ -27,6 +27,7 @@ using Content.Shared.Body.Systems; using Content.Shared.Clothing.Components; using Content.Shared.Cluwne; using Content.Shared.Damage.Components; +using Content.Shared.Damage.Prototypes; using Content.Shared.Damage.Systems; using Content.Shared.Database; using Content.Shared.Electrocution; @@ -49,6 +50,7 @@ using Content.Shared.Slippery; using Content.Shared.StatusEffectNew; using Content.Shared.StatusEffectNew.Components; using Content.Shared.Storage.Components; +using Content.Shared.Suicide; using Content.Shared.Tabletop.Components; using Content.Shared.Tools.Systems; using Content.Shared.Verbs; @@ -71,6 +73,7 @@ public sealed partial class AdminVerbSystem private readonly ProtoId LizardSmite = "AdminLizardSmite"; private readonly ProtoId VulpkaninSmite = "AdminVulpSmite"; + private readonly ProtoId _asphyxiationDamageType = "Asphyxiation"; [Dependency] private SharedActionsSystem _actions = default!; [Dependency] private IRobustRandom _random = default!; @@ -102,6 +105,7 @@ public sealed partial class AdminVerbSystem [Dependency] private DamageableSystem _damageable = default!; [Dependency] private AtmosDeviceSystem _atmosDevice = default!; [Dependency] private StatusEffectsSystem _statusEffects = default!; + [Dependency] private SharedSuicideSystem _suicide = default!; private readonly EntProtoId _actionViewLawsProtoId = "ActionViewLaws"; private readonly ProtoId _crewsimovLawset = "Crewsimov"; @@ -273,6 +277,22 @@ public sealed partial class AdminVerbSystem Message = string.Join(": ", hardElectrocuteName, Loc.GetString("admin-smite-electrocute-description")) }; args.Verbs.Add(hardElectrocute); + + var heartAttackName = Loc.GetString("admin-smite-heartattack-name").ToLowerInvariant(); + Verb heartAttack = new() + { + Text = heartAttackName, + Category = VerbCategory.Smite, + Icon = new SpriteSpecifier.Rsi(new("/Textures/Interface/Alerts/human_crew_monitoring.rsi"), "dead"), + Act = () => + { + // If God would had wanted Me to Live he would not have created A Heart Attack! + _suicide.ApplyLethalDamage((args.Target, damageable), _asphyxiationDamageType); + }, + Impact = LogImpact.Extreme, + Message = string.Join(": ", heartAttackName, Loc.GetString("admin-smite-heartattack-description")) + }; + args.Verbs.Add(heartAttack); } if (TryComp(args.Target, out var creamPied)) diff --git a/Resources/Locale/en-US/administration/smites.ftl b/Resources/Locale/en-US/administration/smites.ftl index 58c8b94385..bc7f6fd481 100644 --- a/Resources/Locale/en-US/administration/smites.ftl +++ b/Resources/Locale/en-US/administration/smites.ftl @@ -23,6 +23,7 @@ admin-smite-set-alight-name = Set Alight admin-smite-monkeyify-name = Monkeyify admin-smite-garbage-can-name = Garbage Can admin-smite-electrocute-name = Electrocute +admin-smite-heartattack-name = Heart Attack admin-smite-remove-blood-name = Remove blood admin-smite-remove-hands-name = Remove hands admin-smite-remove-hand-name = Remove hand @@ -73,6 +74,7 @@ admin-smite-chess-dimension-description = Banishment to the Chess Dimension. admin-smite-set-alight-description = Makes them burn. admin-smite-monkeyify-description = Turns the target into a monkey. admin-smite-electrocute-description = Electrocutes them, rendering anything they were wearing useless. +admin-smite-heartattack-description = Immediately kills them with asphyxiation damage. admin-smite-creampie-description = A creampie, condensed into a button. admin-smite-remove-blood-description = Removes all of their blood, messily. admin-smite-vomit-organs-description = Causes them to vomit, organs included. From 355bf1bfed7d6090ea8c5d807f51f582799b2847 Mon Sep 17 00:00:00 2001 From: jckspjf <105893899+jckspjf@users.noreply.github.com> Date: Fri, 4 Sep 2026 13:48:38 +0000 Subject: [PATCH 059/197] Teleporter Chips eject when Deconstructing Teleporters Control Console (#45803) telesci computer eject fix --- .../Entities/Structures/Machines/Computers/computers.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml b/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml index 6164240896..41518c9088 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml @@ -525,6 +525,10 @@ access: [["Command"]] - type: Lock unlockOnClick: false + - type: EmptyOnMachineDeconstruct + containers: + - storagebase + - type: entity parent: ComputerStationTeleportersControl @@ -533,7 +537,7 @@ components: - type: StationTeleporterConsole autoLinkKey: Nanotrasen - + - type: entity parent: ComputerStationTeleportersControl id: ComputerSyndicateTeleportersControl @@ -559,7 +563,7 @@ access: [["SyndicateAgent"]] - type: StationTeleporterConsole portalColor: "#c61414" - + - type: entity parent: BaseComputerAiAccess id: ComputerResearchAndDevelopment From 95432adaf444ea0aa48b222d0c5bca5d75e61835 Mon Sep 17 00:00:00 2001 From: UpAndLeaves <92269094+UpAndLeaves@users.noreply.github.com> Date: Fri, 4 Sep 2026 15:51:01 +0000 Subject: [PATCH 060/197] Crew-sided stuns rebalance (#45823) * Crew-sided stuns rebalance * Test fail real * Some otherwise unintended consequences * More missed stuff * I always forget stuff * Fix shotgun --------- Co-authored-by: SlamBamActionman --- .../Tests/Security/StunBatonTest.cs | 2 +- .../Weapons/Guns/Battery/battery_guns.yml | 6 ++-- .../Weapons/Guns/Projectiles/Energy/stun.yml | 34 ++++++++++++++----- .../Objects/Weapons/Melee/stunprod.yml | 11 +++--- .../Entities/Objects/Weapons/security.yml | 7 ++-- 5 files changed, 40 insertions(+), 20 deletions(-) diff --git a/Content.IntegrationTests/Tests/Security/StunBatonTest.cs b/Content.IntegrationTests/Tests/Security/StunBatonTest.cs index 3f5d583854..2601785e42 100644 --- a/Content.IntegrationTests/Tests/Security/StunBatonTest.cs +++ b/Content.IntegrationTests/Tests/Security/StunBatonTest.cs @@ -22,7 +22,7 @@ public sealed class StunBatonTests : InteractionTest private static readonly EntProtoId HumanProtoId = "MobHuman"; // If you are rebalancing stun batons you will have to change this number. - private const int NumberOfHitsToStun = 3; + private const int NumberOfHitsToStun = 5; [SidedDependency(Side.Server)] private readonly SharedBatterySystem _battery = default!; [SidedDependency(Side.Server)] private readonly DamageableSystem _damageable = default!; diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml index 30f3375781..f67a7b903c 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml @@ -565,7 +565,7 @@ - Belt - type: BatteryAmmoProvider proto: BulletDisabler - fireCost: 62.5 + fireCost: 40 - type: GuideHelp guides: - Security @@ -602,7 +602,7 @@ soundGunshot: path: /Audio/Weapons/Guns/Gunshots/taser2.ogg - type: BatteryAmmoProvider - proto: BulletDisablerSmg + proto: BulletDisablerSmgSlowing fireCost: 25 - type: MagazineVisuals magState: mag @@ -1058,7 +1058,7 @@ id: WeaponRangeFinderXenoborg name: xenoborg range finder components: - - type: Sprite + - type: Sprite sprite: Objects/Weapons/Guns/Battery/xenoborg_range_finder.rsi layers: - state: icon diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Energy/stun.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Energy/stun.yml index f73b774339..dd15641c9b 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Energy/stun.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Energy/stun.yml @@ -118,8 +118,10 @@ - BulletImpassable fly-by: *flybyfixture - type: Ammo - - type: StaminaDamageOnCollide - damage: 33 + - type: StunOnCollide + slowdownAmount: 1.3 + walkSpeedModifier: 0.75 + sprintSpeedModifier: 0.75 - type: Projectile impactEffect: BulletImpactEffectDisabler damage: @@ -172,9 +174,9 @@ - type: entity parent: BaseBullet - id: BulletDisablerSmg + id: BulletDisablerSmgBase # this version does zero damage categories: [ HideSpawnMenu ] - name: disabler bolt smg + name: disabler smg bolt components: - type: Reflective reflective: @@ -203,8 +205,6 @@ - BulletImpassable fly-by: *flybyfixture - type: Ammo - - type: StaminaDamageOnCollide - damage: 15 - type: Projectile impactEffect: BulletImpactEffectDisabler damage: @@ -215,13 +215,31 @@ forceSound: true - type: entity - parent: BulletDisablerSmg + parent: BulletDisablerSmgBase + id: BulletDisablerSmgSlowing + categories: [ HideSpawnMenu ] + components: + - type: StunOnCollide + slowdownAmount: 1.3 + walkSpeedModifier: 0.6 + sprintSpeedModifier: 0.6 + +- type: entity + parent: BulletDisablerSmgBase + id: BulletDisablerSmgStunning + categories: [ HideSpawnMenu ] + components: + - type: StaminaDamageOnCollide + damage: 15 + +- type: entity + parent: BulletDisablerSmgStunning id: BulletDisablerSmgSpread categories: [ HideSpawnMenu ] name: disabling laser barrage components: - type: ProjectileSpread - proto: BulletDisablerSmg + proto: BulletDisablerSmgStunning count: 3 #bit stronger than a disabler if you hit your shots you goober, still not a 2 hit stun though spread: 9 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/stunprod.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/stunprod.yml index c37cb1cb8a..6bd65cea57 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/stunprod.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/stunprod.yml @@ -33,6 +33,7 @@ types: Shock: 5 - type: MeleeWeapon + attackRate: 1.3 wideAnimationRotation: -135 damage: types: @@ -42,17 +43,17 @@ - type: MeleeBatteryHitsLeft - type: StaminaDamageOnHitRequiresToggle - type: StaminaDamageOnHitRequiresCharge - requiredCharge: 120 + requiredCharge: 100 - type: StaminaDamageOnHit - damage: 35 + damage: 23 sound: /Audio/Weapons/egloves.ogg - type: StaminaDamageOnCollide - damage: 35 + damage: 23 sound: /Audio/Weapons/egloves.ogg - type: LandAtCursor # it deals stamina damage when thrown - type: Battery - maxCharge: 360 - startingCharge: 360 + maxCharge: 700 + startingCharge: 700 - type: UseDelay - type: Item heldPrefix: off diff --git a/Resources/Prototypes/Entities/Objects/Weapons/security.yml b/Resources/Prototypes/Entities/Objects/Weapons/security.yml index b68aea0f7c..ad598cecec 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/security.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/security.yml @@ -34,6 +34,7 @@ types: Blunt: 0 - type: MeleeWeapon + attackRate: 1.3 wideAnimationRotation: -135 damage: types: @@ -45,12 +46,12 @@ - type: MeleeBatteryHitsLeft - type: StaminaDamageOnHitRequiresToggle - type: StaminaDamageOnHitRequiresCharge - requiredCharge: 50 + requiredCharge: 40 - type: StaminaDamageOnHit - damage: 35 + damage: 23 sound: /Audio/Weapons/egloves.ogg - type: StaminaDamageOnCollide - damage: 35 + damage: 23 sound: /Audio/Weapons/egloves.ogg - type: LandAtCursor # it deals stamina damage when thrown - type: Battery From 3ec478266c02829859e8229daf3d282eca058d7f Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Fri, 4 Sep 2026 16:36:03 +0000 Subject: [PATCH 061/197] Make self-vaulting not interruptable by damage, prevent crawling past holobarriers (#45634) Initial commit --- .../Climbing/Systems/ClimbSystem.cs | 7 +++-- .../Structures/Holographic/projections.yml | 7 +++-- .../Interface/VerbIcons/ATTRIBUTION.txt | 4 ++- .../Textures/Interface/VerbIcons/vault.svg | 28 ++++++++++++++++++ .../Interface/VerbIcons/vault.svg.192dpi.png | Bin 0 -> 829 bytes .../Interface/VerbIcons/vault.svg.192dpi.yml | 2 ++ 6 files changed, 41 insertions(+), 7 deletions(-) create mode 100644 Resources/Textures/Interface/VerbIcons/vault.svg create mode 100644 Resources/Textures/Interface/VerbIcons/vault.svg.192dpi.png create mode 100644 Resources/Textures/Interface/VerbIcons/vault.svg.192dpi.yml diff --git a/Content.Shared/Climbing/Systems/ClimbSystem.cs b/Content.Shared/Climbing/Systems/ClimbSystem.cs index 39e5607c6c..89f093d027 100644 --- a/Content.Shared/Climbing/Systems/ClimbSystem.cs +++ b/Content.Shared/Climbing/Systems/ClimbSystem.cs @@ -24,6 +24,7 @@ using Robust.Shared.Physics.Systems; using Robust.Shared.Player; using Robust.Shared.Serialization; using Robust.Shared.Timing; +using Robust.Shared.Utility; namespace Content.Shared.Climbing.Systems; @@ -174,11 +175,11 @@ public sealed partial class ClimbSystem : VirtualController if (!TryComp(args.User, out ClimbingComponent? climbingComponent) || climbingComponent.IsClimbing || !climbingComponent.CanClimb) return; - // TODO VERBS ICON add a climbing icon? args.Verbs.Add(new AlternativeVerb { Act = () => TryClimb(args.User, args.User, args.Target, out _, component), - Text = Loc.GetString("comp-climbable-verb-climb") + Text = Loc.GetString("comp-climbable-verb-climb"), + Icon = new SpriteSpecifier.Texture(new ResPath("/Textures/Interface/VerbIcons/vault.svg.192dpi.png")), }); } @@ -228,7 +229,7 @@ public sealed partial class ClimbSystem : VirtualController used: entityToMove) { BreakOnMove = true, - BreakOnDamage = true, + BreakOnDamage = user != entityToMove, DuplicateCondition = DuplicateConditions.SameTool | DuplicateConditions.SameTarget }; diff --git a/Resources/Prototypes/Entities/Structures/Holographic/projections.yml b/Resources/Prototypes/Entities/Structures/Holographic/projections.yml index 9ebf033fdd..43d75005de 100644 --- a/Resources/Prototypes/Entities/Structures/Holographic/projections.yml +++ b/Resources/Prototypes/Entities/Structures/Holographic/projections.yml @@ -114,11 +114,12 @@ fix1: shape: !type:PhysShapeAabb - bounds: "-0.3,-0.3,0.3,0.3" + bounds: "-0.4,-0.4,0.4,0.4" mask: - - TableMask + - TableMask layer: - - TableLayer + - TableLayer + - LowImpassable - type: TimedDespawn lifetime: 180 - type: PointLight diff --git a/Resources/Textures/Interface/VerbIcons/ATTRIBUTION.txt b/Resources/Textures/Interface/VerbIcons/ATTRIBUTION.txt index d118881a22..49525a023e 100644 --- a/Resources/Textures/Interface/VerbIcons/ATTRIBUTION.txt +++ b/Resources/Textures/Interface/VerbIcons/ATTRIBUTION.txt @@ -15,4 +15,6 @@ screwdriver.png by Lorc (edited by chromiumboy) under CC BY 3.0 https://game-icons.net/1x1/lorc/screwdriver.html scissors.svg by Icons8 under Good Boy License https://github.com/icons8/WPF-UI-Framework/blob/master/LICENSE.md -https://github.com/icons8/WPF-UI-Framework/blob/master/Windows%20Icons/Cut.svg \ No newline at end of file +https://github.com/icons8/WPF-UI-Framework/blob/master/Windows%20Icons/Cut.svg + +vault.svg as Traceur by Gan Khoon Lay from Noun Project (CC BY 3.0) edited by SlamBamActionman (github) (CC BY 3.0) diff --git a/Resources/Textures/Interface/VerbIcons/vault.svg b/Resources/Textures/Interface/VerbIcons/vault.svg new file mode 100644 index 0000000000..c2fda3eb7e --- /dev/null +++ b/Resources/Textures/Interface/VerbIcons/vault.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + diff --git a/Resources/Textures/Interface/VerbIcons/vault.svg.192dpi.png b/Resources/Textures/Interface/VerbIcons/vault.svg.192dpi.png new file mode 100644 index 0000000000000000000000000000000000000000..3c9d2079454fe9e064870c0b9f5ce02d2dd36bf9 GIT binary patch literal 829 zcmV-D1H$}?P){P&afK!3ofnGN`XKY0h5=bDBc7|ch+kS3!+S@ymBoX6+ zQkt=Y(7!mdV-p$yEq%sr%KP~=a_|sr8glwK-0HW%YylQ%O8>_$q}4A31WdmAV`@Og zy}qngt6N9}m}X4QjtWa9!SlD-Y6k3g-7UbbmsAcA&TJ_nSZfl+gUm7$FpYUs+Q*U*g7<9;u&Q`E(I zY3{I62qj&ljTQu(aq|Kh>ZSGuPz^RnLMsV=Z&i~f3LXTnMd9P|&Wb3f1AO;QFi2sc&t+-$hR#yksl_+KwB% zx3i7q;GcdylC;dl6s}EJl2Gw0mm()vjM6m$wP{n*@fn?z&kXLTavA)l&s1hWx!h^o zQ)#O;UTeHZWo?f#m&i^gO$(H<0}M)h_^rTXM4d@8rq!M6_37&cm0<5O1Ej0QR_k3- zm%HY5kU2kbM%V{D@qb)*dqhW}C9{8FJ-1wuGS}Onct~raC{I;~z@-khWb2Dobgh2j zNR!Grh-E!cK1*0EdpK?X6Y6J0V Date: Sat, 5 Sep 2026 02:22:19 +0000 Subject: [PATCH 062/197] Added a recipe to teargas (#45850) * teargas recipe * Change hotsauce to capsaicin oil --- .../Prototypes/Recipes/Reactions/chemicals.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Resources/Prototypes/Recipes/Reactions/chemicals.yml b/Resources/Prototypes/Recipes/Reactions/chemicals.yml index 6d4538cc81..1d60a0eaa6 100644 --- a/Resources/Prototypes/Recipes/Reactions/chemicals.yml +++ b/Resources/Prototypes/Recipes/Reactions/chemicals.yml @@ -587,3 +587,16 @@ amount: 3 products: PhosphoricAcid: 10 + +- type: reaction + id: TearGas + reactants: + CapsaicinOil: + amount: 1 + Phosphorus: + amount: 1 + Chlorine: + amount: 1 + products: + TearGas: 3 + From a8efdf38e2f942c535fd5edd4e65baa0ae005dc1 Mon Sep 17 00:00:00 2001 From: Cabin-keeper Date: Sat, 5 Sep 2026 02:59:57 +0000 Subject: [PATCH 063/197] Changelings can no longer eat zombies (#45852) changeling can no eat zed --- Content.Shared/Changeling/Systems/ChangelingDevourSystem.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Content.Shared/Changeling/Systems/ChangelingDevourSystem.cs b/Content.Shared/Changeling/Systems/ChangelingDevourSystem.cs index 601aafb2c4..a95fef39ca 100644 --- a/Content.Shared/Changeling/Systems/ChangelingDevourSystem.cs +++ b/Content.Shared/Changeling/Systems/ChangelingDevourSystem.cs @@ -17,6 +17,7 @@ using Content.Shared.Mobs.Systems; using Content.Shared.Popups; using Content.Shared.Store.Components; using Content.Shared.Whitelist; +using Content.Shared.Zombies; using Robust.Shared.Audio.Systems; using Robust.Shared.Network; @@ -236,7 +237,7 @@ public sealed partial class ChangelingDevourSystem : EntitySystem return false; } - if (HasComp(victim)) + if (HasComp(victim) || HasComp(victim)) { if (showPopup) _popupSystem.PopupEntity(Loc.GetString("changeling-devour-attempt-failed-rotting"), changeling.Owner, changeling.Owner, PopupType.Medium); From 92bea2a9b977b664c3dea30d10988e9f6b6a8241 Mon Sep 17 00:00:00 2001 From: Cabin-keeper Date: Sat, 5 Sep 2026 03:05:29 +0000 Subject: [PATCH 064/197] Added night vision status effect AND a night vision drug (#45775) * Added night vision status effect added night vision reagent * removed empty line, updated ftl * leaf said no capital letters guh * i hate capital letters * added rad damage and altred recipe. princess said add to felinase * Update Resources/Prototypes/Reagents/narcotics.yml Co-authored-by: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> * Update Resources/Prototypes/Recipes/Reactions/chemicals.yml Co-authored-by: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> * doubled rad damage --------- Co-authored-by: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> --- .../NightVision/NightVisionSystem.cs | 19 +++++++++++++++++ .../NightVision/SharedNightVisionSystem.cs | 10 +++++++++ .../StatusEffectSystem.Relay.cs | 3 +++ Resources/Locale/en-US/reagents/meta/fun.ftl | 2 +- .../Locale/en-US/reagents/meta/narcotics.ftl | 3 +++ .../Entities/StatusEffects/body.yml | 8 +++++++ Resources/Prototypes/Reagents/fun.yml | 4 ++++ Resources/Prototypes/Reagents/narcotics.yml | 21 +++++++++++++++++++ .../Recipes/Reactions/chemicals.yml | 16 ++++++++++++++ 9 files changed, 85 insertions(+), 1 deletion(-) diff --git a/Content.Client/NightVision/NightVisionSystem.cs b/Content.Client/NightVision/NightVisionSystem.cs index 8934032c72..6a689eedc0 100644 --- a/Content.Client/NightVision/NightVisionSystem.cs +++ b/Content.Client/NightVision/NightVisionSystem.cs @@ -2,6 +2,7 @@ using Content.Client.Overlays; using Content.Shared.GameTicking; using Content.Shared.NightVision; using Content.Shared.Overlays; +using Content.Shared.StatusEffectNew; using Robust.Client.Graphics; using Robust.Client.Player; using Robust.Shared.Player; @@ -41,6 +42,24 @@ public sealed partial class NightVisionSystem : SharedNightVisionSystem RefreshOverlay(ent); } + [SubscribeLocalEvent] + private void OnCompEquip(Entity ent, ref StatusEffectAppliedEvent args) + { + if (!ent.Comp.RelayOverlay) + return; + + RefreshOverlay(args.Target); + } + + [SubscribeLocalEvent] + private void OnCompEquip(Entity ent, ref StatusEffectRemovedEvent args) + { + if (!ent.Comp.RelayOverlay) + return; + + RefreshOverlay(args.Target); + } + [SubscribeNetworkEvent] private void OnRoundRestart(RoundRestartCleanupEvent args) { diff --git a/Content.Shared/NightVision/SharedNightVisionSystem.cs b/Content.Shared/NightVision/SharedNightVisionSystem.cs index 7864ecfa77..c555e28cc8 100644 --- a/Content.Shared/NightVision/SharedNightVisionSystem.cs +++ b/Content.Shared/NightVision/SharedNightVisionSystem.cs @@ -2,6 +2,7 @@ using Content.Shared.Actions; using Content.Shared.Inventory; using Content.Shared.Inventory.Events; using Content.Shared.Overlays; +using Content.Shared.StatusEffectNew; namespace Content.Shared.NightVision; @@ -23,6 +24,15 @@ public abstract partial class SharedNightVisionSystem : EntitySystem _actions.AddAction(ent, ref ent.Comp.ActionEntity, ent.Comp.Action); } + [SubscribeLocalEvent] + private void OnRefreshStatusEffect(Entity ent, ref StatusEffectRelayedEvent args) + { + if (!ent.Comp.Enabled) + return; + + args.Args.Entities.Add(ent); + } + [SubscribeLocalEvent] private void OnRemove(Entity ent, ref ComponentShutdown args) { diff --git a/Content.Shared/StatusEffectNew/StatusEffectSystem.Relay.cs b/Content.Shared/StatusEffectNew/StatusEffectSystem.Relay.cs index 9e56651f80..06f47fed55 100644 --- a/Content.Shared/StatusEffectNew/StatusEffectSystem.Relay.cs +++ b/Content.Shared/StatusEffectNew/StatusEffectSystem.Relay.cs @@ -14,6 +14,8 @@ using Content.Shared.Mobs; using Content.Shared.Mobs.Events; using Content.Shared.Movement.Events; using Content.Shared.Movement.Systems; +using Content.Shared.NightVision; +using Content.Shared.Overlays; using Content.Shared.Rejuvenate; using Content.Shared.Speech; using Content.Shared.Speech.EntitySystems; @@ -65,6 +67,7 @@ public sealed partial class StatusEffectsSystem SubscribeLocalEvent(RefRelayStatusEffectEvent); SubscribeLocalEvent(RelayStatusEffectEvent); SubscribeLocalEvent(RelayStatusEffectEvent); + SubscribeLocalEvent(RefRelayStatusEffectEvent); SubscribeLocalEvent(RefRelayStatusEffectEvent); SubscribeLocalEvent(RelayStatusEffectEvent); diff --git a/Resources/Locale/en-US/reagents/meta/fun.ftl b/Resources/Locale/en-US/reagents/meta/fun.ftl index 57649d12f9..1a8d1f9405 100644 --- a/Resources/Locale/en-US/reagents/meta/fun.ftl +++ b/Resources/Locale/en-US/reagents/meta/fun.ftl @@ -32,7 +32,7 @@ reagent-name-hew = juice that makes you Hew reagent-desc-hew = Pure essence of inversed lizard plush. Makes you Hew! reagent-name-catessence = felinase -reagent-desc-catessence = A type of carcinogenic enzyme known to break down proteins found within the vocal cords of most animals. Mixing is NOT recommended. +reagent-desc-catessence = A type of carcinogenic enzyme known to break down proteins found within the vocal cords of most animals. Also grants cat-style night vision. Mixing is NOT recommended. reagent-name-canidessence = caninase reagent-desc-canidessence = A type of carcinogenic enzyme known to break down proteins found within the vocal cords of most animals. Mixing is NOT recommended. diff --git a/Resources/Locale/en-US/reagents/meta/narcotics.ftl b/Resources/Locale/en-US/reagents/meta/narcotics.ftl index d428da5789..acc20c3071 100644 --- a/Resources/Locale/en-US/reagents/meta/narcotics.ftl +++ b/Resources/Locale/en-US/reagents/meta/narcotics.ftl @@ -48,3 +48,6 @@ reagent-desc-Hydroxysomnolene = Byproduct of Methylenedioxystraquinone (aka Stra reagent-name-StrawberryIce = Methylenedioxystraquinone reagent-desc-StrawberryIce = A special drug designed to be even stronger than Desoxyephedrine. Known as "Strawberry Ice" or "Girl Ice" given its color and flavor, it is incredibly addictive and comes with strong withdrawal symptoms. While the highs are higher and users report flying in rainbows through space while under its influence, near-eternal horrors await those who cease consuming it. + +reagent-name-nyctalon = nyctalon +reagent-desc-nyctalon = An irradiated medicine derived from oculine, this drug stimulates the rod and cone cells of the user's retina, enabling excellent night vision. This comes at a consequence of mild radiation sickness. diff --git a/Resources/Prototypes/Entities/StatusEffects/body.yml b/Resources/Prototypes/Entities/StatusEffects/body.yml index ed3cd86edf..de4c5c1e92 100644 --- a/Resources/Prototypes/Entities/StatusEffects/body.yml +++ b/Resources/Prototypes/Entities/StatusEffects/body.yml @@ -92,3 +92,11 @@ components: - type: StaminaModifierStatusEffect modifier: 1.5 + +- type: entity + parent: MobStatusEffectBase + id: StatusEffectNightVision + name: Night Vision + components: + - type: NightVision + relayOverlay: True diff --git a/Resources/Prototypes/Reagents/fun.yml b/Resources/Prototypes/Reagents/fun.yml index 9e28805560..ec184467af 100644 --- a/Resources/Prototypes/Reagents/fun.yml +++ b/Resources/Prototypes/Reagents/fun.yml @@ -446,6 +446,10 @@ visualType: Small messages: [ "capsaicin-effect-light-burn" ] probability: 0.05 + - !type:ModifyStatusEffect + effectProto: StatusEffectNightVision + time: 2 + type: Add - type: reagent id: Caninase diff --git a/Resources/Prototypes/Reagents/narcotics.yml b/Resources/Prototypes/Reagents/narcotics.yml index 5b7d3caed6..47fb4f6caa 100644 --- a/Resources/Prototypes/Reagents/narcotics.yml +++ b/Resources/Prototypes/Reagents/narcotics.yml @@ -650,3 +650,24 @@ effectProto: StatusEffectSeeingRainbow type: Add time: 5 + +- type: reagent + id: Nyctalon + name: reagent-name-nyctalon + group: Narcotics + desc: reagent-desc-nyctalon + physicalDesc: reagent-physical-desc-translucent + flavor: bitter + color: "#1A0A2E" + metabolisms: + Bloodstream: + metabolismRate: 0.5 + effects: + - !type:ModifyStatusEffect + effectProto: StatusEffectNightVision + time: 2 + type: Add + - !type:HealthChange + damage: + types: + Radiation: 0.5 diff --git a/Resources/Prototypes/Recipes/Reactions/chemicals.yml b/Resources/Prototypes/Recipes/Reactions/chemicals.yml index 1d60a0eaa6..b1502a10ea 100644 --- a/Resources/Prototypes/Recipes/Reactions/chemicals.yml +++ b/Resources/Prototypes/Recipes/Reactions/chemicals.yml @@ -588,6 +588,21 @@ products: PhosphoricAcid: 10 +- type: reaction + id: Nyctalon + reactants: + Oculine: + amount: 1 + Radium: + amount: 1 + Uranium: + amount: 1 + catalyst: true + Phosphorus: + amount: 1 + products: + Nyctalon: 2 + - type: reaction id: TearGas reactants: @@ -600,3 +615,4 @@ products: TearGas: 3 + From 2fff88d7b87536b726823c2734208a2e3a411301 Mon Sep 17 00:00:00 2001 From: Rami Date: Sat, 5 Sep 2026 03:07:11 +0000 Subject: [PATCH 065/197] Zombie event tweaks for new ambu changes (#45469) * Zombie event tweaks for new ambu changes * oops --- .../Rules/Components/ZombieRuleComponent.cs | 13 +++++++++++++ .../GameTicking/Rules/ZombieRuleSystem.cs | 4 +++- Resources/Prototypes/GameRules/events.yml | 4 ++-- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/Content.Server/GameTicking/Rules/Components/ZombieRuleComponent.cs b/Content.Server/GameTicking/Rules/Components/ZombieRuleComponent.cs index 59d1940eaf..f8612a2421 100644 --- a/Content.Server/GameTicking/Rules/Components/ZombieRuleComponent.cs +++ b/Content.Server/GameTicking/Rules/Components/ZombieRuleComponent.cs @@ -2,6 +2,7 @@ using Content.Shared.Roles; using Robust.Shared.Audio; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; +using Content.Server.RoundEnd; namespace Content.Server.GameTicking.Rules.Components; @@ -25,4 +26,16 @@ public sealed partial class ZombieRuleComponent : Component /// [DataField] public float ZombieShuttleCallPercentage = 0.7f; + + /// + /// What will happen if zombies get more than 80% + /// + [DataField] + public RoundEndBehavior ZombieRoundEndBehavior = RoundEndBehavior.ShuttleCall; + + /// + /// Shuttle timer for when shuttle is called + /// + [DataField] + public TimeSpan ZombieEvacShuttleTime = TimeSpan.FromMinutes(5); } diff --git a/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs b/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs index 80bfcd7425..bf188122a5 100644 --- a/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs @@ -126,7 +126,9 @@ public sealed partial class ZombieRuleSystem : GameRuleSystem Date: Sat, 5 Sep 2026 03:07:58 +0000 Subject: [PATCH 066/197] Hivarol no longer requires licoxide, needs histamine instead (#45853) edit hivarol recipe --- Resources/Prototypes/Recipes/Reactions/single_reagent.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Recipes/Reactions/single_reagent.yml b/Resources/Prototypes/Recipes/Reactions/single_reagent.yml index f63900c854..d4b83b68da 100644 --- a/Resources/Prototypes/Recipes/Reactions/single_reagent.yml +++ b/Resources/Prototypes/Recipes/Reactions/single_reagent.yml @@ -67,7 +67,7 @@ reactants: LivingTissue: amount: 1 - Licoxide: + Histamine: amount: 1 Impedrezene: amount: 1 From 9211e56551b42eadac6df1b79f3ee7fa0316feaf Mon Sep 17 00:00:00 2001 From: jckspjf <105893899+jckspjf@users.noreply.github.com> Date: Sat, 5 Sep 2026 03:09:02 +0000 Subject: [PATCH 067/197] Vulpkanin Welding Gas Mask Sprite (#45835) vulp weld gas mask sprite --- .../welding-gas.rsi/equipped-MASK-vulpkanin.png | Bin 0 -> 693 bytes .../Clothing/Mask/welding-gas.rsi/meta.json | 10 +++++++++- .../up-equipped-MASK-vulpkanin.png | Bin 0 -> 637 bytes 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 Resources/Textures/Clothing/Mask/welding-gas.rsi/equipped-MASK-vulpkanin.png create mode 100644 Resources/Textures/Clothing/Mask/welding-gas.rsi/up-equipped-MASK-vulpkanin.png diff --git a/Resources/Textures/Clothing/Mask/welding-gas.rsi/equipped-MASK-vulpkanin.png b/Resources/Textures/Clothing/Mask/welding-gas.rsi/equipped-MASK-vulpkanin.png new file mode 100644 index 0000000000000000000000000000000000000000..e35f5a9154d5e1d5111b92e0fa5fbc3fe6100e9d GIT binary patch literal 693 zcmV;m0!safP)Px%Z%IT!RCt{2*}qF0VHm*i@0H>r#imFHw?go^gG?&H)h=iMfD1zZgbspGl9J*p z6%2)fLuYj;l(+;0@fPh=M2J)1(vv`k!cC<%ii^wJAvsC4guaQU6`v2>@V@usdEfVW zUT%0n2w`e%ZB2J;-?a7h_1$i56Zd<0DF}k!CLIJpukru6d!{e=zOReLBBQAkp64-| zN>MBp@qK?_Rd5tVUE3xslZTVZzdt{R!;Tvh@M36)<>h5IH#d#GX`+zN>v7xOJBlL4 zZTq4>X&*(=%u1e<5l#u+wQK$Fc+22Bwqy8%7Jz&aMXVJdf|k z$4q8hlMjO6MzjB4aU4fS^}3GZSV#4`b{uD*e}U`N(_aAK^Zq_T5a4;<^^WMaNV0yL zvoC}YLI@#*5JCtcgb+fAyQQbIyh1*|o1D(>?Ci|At_y%tY9MEWN+}Hxh9R@Fv&Xbg zh*wIbM>iT+YklSNeP73MthXu^t(4M#dZwT2a$Kd9-l|k|9LL)C{VVZI8D;EpfLt!8 z-z+Wh?(D49aR@(m-vUsp)d<6|?~1T23&(MECX)f+;nSBe(Ym)VJk0CGMat!})%m;$ zmsh}x)%dTwnXRT>0tqc5JCtcgb+dqA%qY@ b+$FyNOB+!+NIk|l00000NkvXXu0mjfHT6mJ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Mask/welding-gas.rsi/meta.json b/Resources/Textures/Clothing/Mask/welding-gas.rsi/meta.json index 8e9b857325..4edf7cbde4 100644 --- a/Resources/Textures/Clothing/Mask/welding-gas.rsi/meta.json +++ b/Resources/Textures/Clothing/Mask/welding-gas.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/6f5ca45e3ac06b30fb1957042214a888d8c01722. Inhands, worn sprites, and vox sprites created by EmoGarbage404 (github)", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/6f5ca45e3ac06b30fb1957042214a888d8c01722. Inhands, worn sprites, vox sprites created by EmoGarbage404 (github), and vulpkanin sprites by jckspjf (github)", "size": { "x": 32, "y": 32 @@ -29,6 +29,14 @@ "name": "up-equipped-MASK-vox", "directions": 4 }, + { + "name": "equipped-MASK-vulpkanin", + "directions": 4 + }, + { + "name": "up-equipped-MASK-vulpkanin", + "directions": 4 + }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/Clothing/Mask/welding-gas.rsi/up-equipped-MASK-vulpkanin.png b/Resources/Textures/Clothing/Mask/welding-gas.rsi/up-equipped-MASK-vulpkanin.png new file mode 100644 index 0000000000000000000000000000000000000000..dbe0ef7dd74418e1eb5ea7bd4358e9cf3bb14f86 GIT binary patch literal 637 zcmV-@0)qXCP)Px%H%UZ6RCt{2+RuvGKpY3~??A6*Y2TnAh6J*w%HH=B`v4P!K7>at9&!-Yqfek7 z3Ptb5x$NG`vf#-;W=DkHaw-+s2l(|+6{B70q|sLT`#=seOfvuSOAfyQ7-P12y&fGZ zA6viQzdcm8@gmPnN~z4Gl~Q^8|Ld$5KuSq*93zh7z53B;B#Io|b7saIEZeXeu#}Qo ztrjjXFZb@7PN&pvw{grxXf_&DcAUGJF(^CErhZ+X8FPKp=~(q|{RT`X6Bw<@JU+tA z=Wt3TyuG?QNf_8p?sr%%z-o610D>UEx5Z*Jd8O1*cmJQ_x-J>5DNR!{T9fO#C;bZ) zDc4^B0KVMcLn(zI2#OuixmfS|IqyDWj4{R-V~jDz7-Nhv#{Mt4a(T^0<93~$9goM? zp63Aoq9{5^ZZL`>0)Qk*P_0%MSY?QBI-S?H&$1dY(S8yr3`5#JE1 z5F(R_@_iq};ZW?hKN=#+TvAFhT4!b}r6egOxvopQ?ekn%rQg=i-R{e1O;SqQZEwRm zIr^d5q_X4OZP%q~N|T2NnE4z4;FL=EXg!qY`M!_$wHnNPj!LCM>oW;Y%OwC{Fc^Ht z&oFpp`&R!^2!vrsp68(!hIn~#0RX7i>xknRZ?qPl3kU@v1l|Go>bm6nKDym50N`o4 z#HZm9Ns?s3z%~R5`33;UoEb`zq_9BT{swrSmx+G>r~L*n#u#IaF~%5Uj4{R-J99q( XW&=FQK3hN&00000NkvXXu0mjf2Gt+! literal 0 HcmV?d00001 From 993c8190325670aef5fdf202c5a5e735a838bc55 Mon Sep 17 00:00:00 2001 From: Zeneganto Date: Sat, 5 Sep 2026 03:35:03 +0000 Subject: [PATCH 068/197] Fix roundstart grids/shuttles name (#39935) Update GridSpawnComponent.cs --- Content.Server/Shuttles/Components/GridSpawnComponent.cs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Content.Server/Shuttles/Components/GridSpawnComponent.cs b/Content.Server/Shuttles/Components/GridSpawnComponent.cs index c74613f5eb..94ca55dc38 100644 --- a/Content.Server/Shuttles/Components/GridSpawnComponent.cs +++ b/Content.Server/Shuttles/Components/GridSpawnComponent.cs @@ -111,8 +111,6 @@ public sealed partial class GridSpawnGroup : IGridSpawnGroup public int MaxCount { get; set; } = 1; public ComponentRegistry AddComponents { get; set; } = new(); public bool Hide { get; set; } = false; - public bool NameGrid { get; set; } = true; + public bool NameGrid { get; set; } = false; public bool StationGrid { get; set; } = true; } - - From 12389ee231286b4b87352f6fa4b2515dc397881d Mon Sep 17 00:00:00 2001 From: drunk-experiter Date: Sat, 5 Sep 2026 09:27:29 +0000 Subject: [PATCH 069/197] Martinis - Stirred, not shaken (#45859) Update drinks.yml Made the martinis and martini-based drinks require stirring instead of shaking, except the espresso martini (which is actually traditionally shaken). --- Resources/Prototypes/Recipes/Reactions/drinks.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Resources/Prototypes/Recipes/Reactions/drinks.yml b/Resources/Prototypes/Recipes/Reactions/drinks.yml index a82ceae9c1..8e8706177a 100644 --- a/Resources/Prototypes/Recipes/Reactions/drinks.yml +++ b/Resources/Prototypes/Recipes/Reactions/drinks.yml @@ -23,7 +23,7 @@ - type: reaction id: AlliesCocktail requiredMixerCategories: - - Shake + - Stir reactants: Martini: amount: 2 @@ -389,7 +389,7 @@ - type: reaction id: DriestMartini requiredMixerCategories: - - Shake + - Stir reactants: Gin: amount: 1 @@ -817,7 +817,7 @@ - type: reaction id: Martini requiredMixerCategories: - - Shake + - Stir reactants: Gin: amount: 2 @@ -1219,7 +1219,7 @@ - type: reaction id: VodkaMartini requiredMixerCategories: - - Shake + - Stir reactants: Vermouth: amount: 1 From dc06d706ffb6a4fedeceefdeb44b6866220a5733 Mon Sep 17 00:00:00 2001 From: August Sun <45527070+august-sun@users.noreply.github.com> Date: Sat, 5 Sep 2026 14:22:20 +0000 Subject: [PATCH 070/197] Added the ability for cargo to order a crate of mosins (#45763) * added crates and values for said crates * altered cargo mosin price * change * Revert price reduction --------- Co-authored-by: august-sun <45527070+august.sun@users.noreply.github.com> --- .../Prototypes/Catalog/Cargo/cargo_armory.yml | 10 ++++++++++ .../Prototypes/Catalog/Fills/Crates/armory.yml | 15 +++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_armory.yml b/Resources/Prototypes/Catalog/Cargo/cargo_armory.yml index bb4130e571..cd9f7c0b80 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_armory.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_armory.yml @@ -18,6 +18,16 @@ category: cargoproduct-category-name-armory group: market +- type: cargoProduct + id: ArmoryMosin + icon: + sprite: Objects/Weapons/Guns/Snipers/bolt_gun_wood.rsi + state: base + product: CrateArmoryMosin + cost: 3500 + category: cargoproduct-category-name-armory + group: market + - type: cargoProduct id: SecurityRiot icon: diff --git a/Resources/Prototypes/Catalog/Fills/Crates/armory.yml b/Resources/Prototypes/Catalog/Fills/Crates/armory.yml index a44c48d419..63e1b0902a 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/armory.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/armory.yml @@ -28,6 +28,21 @@ - id: BoxLethalshot amount: 4 +- type: entity + parent: [ CrateWeaponSecure, BaseSecurityContraband ] + id: CrateArmoryMosin + name: mosin crate + description: Reliable, dirt cheap, and loud as hell. Contains three mosin rifles and 12 speedloaders of .30 rifle ammunition. Requires Armory access to open. + components: + - type: EntityTableContainerFill + containers: + entity_storage: !type:AllSelector + children: + - id: WeaponSniperMosin + amount: 3 + - id: SpeedLoaderLightRifle + amount: 12 + - type: entity parent: [ CrateWeaponSecure, BaseSecurityContraband ] id: CrateTrackingImplants From 802b4e98a0593d6ed83dcfa0243d56986f98fead Mon Sep 17 00:00:00 2001 From: Artem Lytkin <146867384+4RH1T3CT0R7@users.noreply.github.com> Date: Sat, 5 Sep 2026 16:54:18 +0000 Subject: [PATCH 071/197] Only let the defib report on the entity it was used on (#45858) Since #45062 the zap chain also covers whatever the target is buckled to or pulled by, and TryRevive spoke its diagnosis for every one of them. A patient on a bed therefore got an "inanimate object" warning about the bed. Keep the chain heal/shock, emit the message only for the original target, and cover it with an integration test. --- .../Tests/Medical/DefibrillatorTest.cs | 65 +++++++++++++++++++ .../Medical/SharedDefibrillatorSystem.cs | 14 ++-- 2 files changed, 75 insertions(+), 4 deletions(-) diff --git a/Content.IntegrationTests/Tests/Medical/DefibrillatorTest.cs b/Content.IntegrationTests/Tests/Medical/DefibrillatorTest.cs index 18361a9d90..e6d2c208ce 100644 --- a/Content.IntegrationTests/Tests/Medical/DefibrillatorTest.cs +++ b/Content.IntegrationTests/Tests/Medical/DefibrillatorTest.cs @@ -1,5 +1,10 @@ #nullable enable +using System.Linq; +using Content.IntegrationTests.Tests.Helpers; using Content.IntegrationTests.Tests.Interaction; +using Content.Shared.Buckle; +using Content.Shared.Buckle.Components; +using Content.Shared.Chat; using Content.Shared.Damage; using Content.Shared.Damage.Components; using Content.Shared.Damage.Prototypes; @@ -9,6 +14,7 @@ using Content.Shared.Medical; using Content.Shared.Mobs; using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; +using Robust.Shared.Localization; using Robust.Shared.Prototypes; namespace Content.IntegrationTests.Tests.Medical; @@ -19,11 +25,14 @@ namespace Content.IntegrationTests.Tests.Medical; [TestOf(typeof(DefibrillatorComponent))] public sealed class DefibrillatorTest : InteractionTest { + private sealed class SpeechListenerSystem : TestListenerSystem; + // We need two hands to use a defbrillator. protected override string PlayerPrototype => "MobHuman"; private static readonly EntProtoId DefibrillatorProtoId = "Defibrillator"; private static readonly EntProtoId TargetProtoId = "MobHuman"; + private static readonly EntProtoId BedProtoId = "Bed"; private static readonly ProtoId BluntDamageTypeId = "Blunt"; /// @@ -99,4 +108,60 @@ public sealed class DefibrillatorTest : InteractionTest // The target should be revived, but in crit. Assert.That(targetMobState.CurrentState, Is.EqualTo(MobState.Critical), "Target mob was not revived from being defibrillated."); } + + /// + /// Revives a target mob that is strapped to a bed. The bed gets caught in the zap chain, but the defibrillator + /// should only report on the patient, not complain that the bed is an inanimate object. + /// + [Test] + public async Task ReviveBuckledTest() + { + var damageableSystem = SEntMan.System(); + var mobThresholdsSystem = SEntMan.System(); + var buckleSystem = SEntMan.System(); + var loc = Server.ResolveDependency(); + + // Don't let the player and target suffocate. + await AddAtmosphere(); + + await SpawnTarget(TargetProtoId); + var bed = ToServer(await Spawn(BedProtoId)); + + var targetMobState = Comp(); + var targetDamageable = Comp(); + var targetBuckle = Comp(); + + await Server.WaitPost(() => buckleSystem.TryBuckle(STarget.Value, null, bed)); + await RunTicks(3); + Assert.That(targetBuckle.BuckledTo, Is.EqualTo(bed), "Target mob was not buckled to the bed."); + + // Kill the target, then bring the damage back down to a revivable level. + var critThreshold = mobThresholdsSystem.GetThresholdForState(STarget.Value, MobState.Critical); + var deathThreshold = mobThresholdsSystem.GetThresholdForState(STarget.Value, MobState.Dead); + var critDamage = new DamageSpecifier(ProtoMan.Index(BluntDamageTypeId), (critThreshold + deathThreshold) / 2); + var deathDamage = new DamageSpecifier(ProtoMan.Index(BluntDamageTypeId), deathThreshold); + + await Server.WaitPost(() => damageableSystem.SetDamage((STarget.Value, targetDamageable), deathDamage)); + await RunTicks(3); + await Server.WaitPost(() => damageableSystem.SetDamage((STarget.Value, targetDamageable), critDamage)); + await RunTicks(3); + Assert.That(targetMobState.CurrentState, Is.EqualTo(MobState.Dead), "Target mob was not dead before being defibrillated."); + + // Spawn a defib, activate it and record everything it says. + var defib = await PlaceInHands(DefibrillatorProtoId, enableToggleable: true); + var sDefib = ToServer(defib); + await Server.WaitPost(() => SEntMan.EnsureComponent(sDefib)); + var cooldown = Comp(defib).ZapDelay; + await RunSeconds((float)cooldown.TotalSeconds); + + // ZAP! + await Interact(); + + Assert.That(targetMobState.CurrentState, Is.EqualTo(MobState.Critical), "Buckled target mob was not revived from being defibrillated."); + + // The dummy has no mind, so the defib complains about that. It must not also complain about the bed. + var spoken = GetEvents(sDefib).Select(ev => ev.Message).ToList(); + Assert.That(spoken, Is.Not.Empty, "Defibrillator did not report on the patient."); + Assert.That(spoken, Does.Not.Contain(loc.GetString("defibrillator-not-living")), "Defibrillator reported on the bed instead of the patient."); + } } diff --git a/Content.Shared/Medical/SharedDefibrillatorSystem.cs b/Content.Shared/Medical/SharedDefibrillatorSystem.cs index 6d05fc5633..71ea4307d4 100644 --- a/Content.Shared/Medical/SharedDefibrillatorSystem.cs +++ b/Content.Shared/Medical/SharedDefibrillatorSystem.cs @@ -189,13 +189,14 @@ public abstract partial class SharedDefibrillatorSystem : EntitySystem private bool TryRevive(Entity ent, EntityUid user, EntityUid target, bool isOriginal) { bool failedRevive = true; + string? message = null; if (_rotting.IsRotten(target)) { - _chat.TrySendInGameICMessage(ent.Owner, Loc.GetString("defibrillator-rotten"), InGameICChatType.Speak, true); + message = Loc.GetString("defibrillator-rotten"); } else if (TryComp(target, out var unrevivable)) { - _chat.TrySendInGameICMessage(ent.Owner, Loc.GetString(unrevivable.ReasonMessage), InGameICChatType.Speak, true); + message = Loc.GetString(unrevivable.ReasonMessage); } else { @@ -222,12 +223,17 @@ public abstract partial class SharedDefibrillatorSystem : EntitySystem else { if (HasComp(target)) - _chat.TrySendInGameICMessage(ent.Owner, Loc.GetString("defibrillator-no-mind"), InGameICChatType.Speak, true); //target can host a mind but doesn't + message = Loc.GetString("defibrillator-no-mind"); //target can host a mind but doesn't else - _chat.TrySendInGameICMessage(ent.Owner, Loc.GetString("defibrillator-not-living"), InGameICChatType.Speak, true); //target couldn't have hosted a mind + message = Loc.GetString("defibrillator-not-living"); //target couldn't have hosted a mind } } + // Only report on the entity the pads were actually placed on. Everything else caught in the chain + // (the bed the patient is strapped to, whoever is pulling them) still gets zapped, just silently. + if (isOriginal && message != null) + _chat.TrySendInGameICMessage(ent.Owner, message, InGameICChatType.Speak, true); + _electrocution.TryDoElectrocution( target, ent.Owner, From ec63a41842df997da4aac6845f2779537547aeff Mon Sep 17 00:00:00 2001 From: Sir Warock <67167466+SirWarock@users.noreply.github.com> Date: Sat, 5 Sep 2026 17:10:50 +0000 Subject: [PATCH 072/197] Cleanup of UseDelay (#45350) * Moving into Systems & Components Folders * splitting into API file * Make Method accept null values * small fix --- .../Cargo/Systems/ClientPriceGunSystem.cs | 7 +- .../ChameleonControllerBoundUserInterface.cs | 8 +- .../Systems/Atmos/GasTank/GasTankWindow.cs | 2 +- .../Systems/Hands/HandsUIController.cs | 6 +- .../Tests/Storage/StorageInteractionTest.cs | 2 +- .../Atmos/EntitySystems/FlammableSystem.cs | 4 +- .../Cargo/Systems/PriceGunSystem.cs | 3 +- .../DeviceLinking/Systems/LogicGateSystem.cs | 6 +- .../Systems/PowerSensorSystem.cs | 6 +- .../Fluids/EntitySystems/SpraySystem.cs | 4 +- .../Implants/ChameleonControllerSystem.cs | 2 +- .../Interactions/InteractWithOperator.cs | 4 +- .../Ninja/Systems/StunProviderSystem.cs | 3 +- .../Power/Generator/PowerSwitchableSystem.cs | 3 +- .../EntitySystems/RadiationCollectorSystem.cs | 5 +- .../EntitySystems/SharedGasTankSystem.cs | 2 +- Content.Shared/Bible/BibleSystem.cs | 3 +- .../Chemistry/EntitySystems/InjectorSystem.cs | 5 +- Content.Shared/Cuffs/SharedCuffableSystem.cs | 7 +- Content.Shared/Flash/SharedFlashSystem.cs | 2 +- .../Fluids/SharedAbsorbentSystem.cs | 4 +- .../Friends/Systems/PettableFriendSystem.cs | 3 +- .../Interaction/Events/UseInHandEvent.cs | 2 +- .../Interaction/SharedInteractionSystem.cs | 7 +- .../Equipment/Systems/MechSoundboardSystem.cs | 6 +- .../Medical/SharedDefibrillatorSystem.cs | 3 +- .../Ninja/Systems/SharedNinjaSuitSystem.cs | 4 +- .../RepulseAttract/RepulseAttractSystem.cs | 2 +- .../SharedStationTeleporterSystem.cs | 5 +- .../EntitySystems/SharedStorageSystem.cs | 3 +- .../SubFloor/SharedTrayScannerSystem.cs | 4 +- .../Systems/SharedTeleportLocationsSystem.cs | 2 +- .../{ => Components}/UseDelayComponent.cs | 9 +- .../Timing/Systems/UseDelaySystem.API.cs | 158 +++++++++++++++ .../Timing/Systems/UseDelaySystem.cs | 55 +++++ Content.Shared/Timing/UseDelaySystem.cs | 190 ------------------ .../UseDelayTriggerConditionComponent.cs | 2 +- .../Effects/UseDelayOnTriggerComponent.cs | 2 +- .../Trigger/Systems/TriggerSystem.cs | 2 +- .../Turrets/SharedDeployableTurretSystem.cs | 5 +- .../Weapons/Melee/MeleeThrowOnHitSystem.cs | 2 +- .../Weapons/Melee/UseDelayOnMeleeHitSystem.cs | 8 +- .../Systems/SharedGunSystem.Revolver.cs | 2 +- .../Weapons/Ranged/Systems/SharedGunSystem.cs | 3 +- .../Ranged/Systems/UseDelayOnShootSystem.cs | 5 +- .../Wieldable/SharedWieldableSystem.cs | 3 +- .../Artifact/SharedXenoArtifactSystem.XAE.cs | 4 +- .../Equipment/NodeScannerSystem.cs | 5 +- 48 files changed, 302 insertions(+), 282 deletions(-) rename Content.Shared/Timing/{ => Components}/UseDelayComponent.cs (85%) create mode 100644 Content.Shared/Timing/Systems/UseDelaySystem.API.cs create mode 100644 Content.Shared/Timing/Systems/UseDelaySystem.cs delete mode 100644 Content.Shared/Timing/UseDelaySystem.cs diff --git a/Content.Client/Cargo/Systems/ClientPriceGunSystem.cs b/Content.Client/Cargo/Systems/ClientPriceGunSystem.cs index bfbe3d904e..0f3953d171 100644 --- a/Content.Client/Cargo/Systems/ClientPriceGunSystem.cs +++ b/Content.Client/Cargo/Systems/ClientPriceGunSystem.cs @@ -1,6 +1,6 @@ using Content.Shared.Cargo.Components; -using Content.Shared.Timing; using Content.Shared.Cargo.Systems; +using Content.Shared.Timing.Systems; namespace Content.Client.Cargo.Systems; @@ -13,10 +13,7 @@ public sealed partial class ClientPriceGunSystem : SharedPriceGunSystem protected override bool GetPriceOrBounty(Entity entity, EntityUid target, EntityUid user) { - if (!TryComp(entity, out UseDelayComponent? useDelay) || _useDelay.IsDelayed((entity, useDelay))) - return false; - // It feels worse if the cooldown is predicted but the popup isn't! So only do the cooldown reset on the server. - return true; + return _useDelay.IsDelayed(entity.Owner); } } diff --git a/Content.Client/Implants/UI/ChameleonControllerBoundUserInterface.cs b/Content.Client/Implants/UI/ChameleonControllerBoundUserInterface.cs index 42b891ff50..b8264d5dd6 100644 --- a/Content.Client/Implants/UI/ChameleonControllerBoundUserInterface.cs +++ b/Content.Client/Implants/UI/ChameleonControllerBoundUserInterface.cs @@ -1,8 +1,6 @@ -using Content.Shared.Clothing; -using Content.Shared.Implants; -using Content.Shared.Preferences.Loadouts; -using Content.Shared.Roles; -using Content.Shared.Timing; +using Content.Shared.Implants; +using Content.Shared.Timing.Components; +using Content.Shared.Timing.Systems; using JetBrains.Annotations; using Robust.Client.UserInterface; using Robust.Shared.Prototypes; diff --git a/Content.Client/UserInterface/Systems/Atmos/GasTank/GasTankWindow.cs b/Content.Client/UserInterface/Systems/Atmos/GasTank/GasTankWindow.cs index d9ac734a4b..2a7b797e13 100644 --- a/Content.Client/UserInterface/Systems/Atmos/GasTank/GasTankWindow.cs +++ b/Content.Client/UserInterface/Systems/Atmos/GasTank/GasTankWindow.cs @@ -4,7 +4,7 @@ using Content.Client.Resources; using Content.Client.Stylesheets; using Content.Shared.Atmos.Components; using Content.Shared.Atmos.EntitySystems; -using Content.Shared.Timing; +using Content.Shared.Timing.Systems; using Robust.Client.Graphics; using Robust.Client.ResourceManagement; using Robust.Client.UserInterface; diff --git a/Content.Client/UserInterface/Systems/Hands/HandsUIController.cs b/Content.Client/UserInterface/Systems/Hands/HandsUIController.cs index 8924d998fa..0477a3bbf6 100644 --- a/Content.Client/UserInterface/Systems/Hands/HandsUIController.cs +++ b/Content.Client/UserInterface/Systems/Hands/HandsUIController.cs @@ -6,7 +6,8 @@ using Content.Client.UserInterface.Systems.Hotbar.Widgets; using Content.Shared.Hands.Components; using Content.Shared.Input; using Content.Shared.Inventory.VirtualItem; -using Content.Shared.Timing; +using Content.Shared.Timing.Components; +using Content.Shared.Timing.Systems; using Robust.Client.Player; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controllers; @@ -373,7 +374,8 @@ public sealed partial class HandsUIController : UIController, IOnStateEntered(uid, out var useDelay) - && !_useDelay.TryResetDelay((uid, useDelay), true)) + if (!_useDelay.TryResetDelay(uid, true)) return; // cycle through possible gates diff --git a/Content.Server/DeviceLinking/Systems/PowerSensorSystem.cs b/Content.Server/DeviceLinking/Systems/PowerSensorSystem.cs index 79d67c3c0c..30faa28353 100644 --- a/Content.Server/DeviceLinking/Systems/PowerSensorSystem.cs +++ b/Content.Server/DeviceLinking/Systems/PowerSensorSystem.cs @@ -7,7 +7,8 @@ using Content.Shared.Interaction; using Content.Shared.NodeContainer; using Content.Shared.Popups; using Content.Shared.Power.Generator; -using Content.Shared.Timing; +using Content.Shared.Timing.Components; +using Content.Shared.Timing.Systems; using Content.Shared.Tools.Systems; using Robust.Shared.Audio.Systems; using Robust.Shared.Map.Components; @@ -67,8 +68,7 @@ public sealed partial class PowerSensorSystem : EntitySystem return; // no sound spamming - if (TryComp(uid, out var useDelay) - && !_useDelay.TryResetDelay((uid, useDelay), true)) + if (!_useDelay.TryResetDelay(uid, true)) return; // switch between input and output mode. diff --git a/Content.Server/Fluids/EntitySystems/SpraySystem.cs b/Content.Server/Fluids/EntitySystems/SpraySystem.cs index bfc685df8e..953d5dc9f3 100644 --- a/Content.Server/Fluids/EntitySystems/SpraySystem.cs +++ b/Content.Server/Fluids/EntitySystems/SpraySystem.cs @@ -5,7 +5,6 @@ using Content.Shared.CCVar; using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Fluids; using Content.Shared.Interaction; -using Content.Shared.Timing; using Robust.Server.GameObjects; using Robust.Shared.Audio.Systems; using Robust.Shared.Configuration; @@ -13,6 +12,7 @@ using Robust.Shared.Physics.Components; using System.Numerics; using Content.Shared.Fluids.EntitySystems; using Content.Shared.Fluids.Components; +using Content.Shared.Timing.Systems; using Robust.Server.Containers; using Robust.Shared.Audio; using Robust.Shared.Map; @@ -190,6 +190,6 @@ public sealed partial class SpraySystem : SharedSpraySystem audioParams = audioParams.WithVariation(0.125f); _audio.PlayPvs(entity.Comp.SpraySound, entity, audioParams); - _useDelay.TryResetDelay(entity); + _useDelay.TryResetDelay(entity.Owner); } } diff --git a/Content.Server/Implants/ChameleonControllerSystem.cs b/Content.Server/Implants/ChameleonControllerSystem.cs index 4bf9939150..2fb2f5c97d 100644 --- a/Content.Server/Implants/ChameleonControllerSystem.cs +++ b/Content.Server/Implants/ChameleonControllerSystem.cs @@ -9,7 +9,7 @@ using Content.Shared.Preferences; using Content.Shared.Preferences.Loadouts; using Content.Shared.Roles; using Content.Shared.Station; -using Content.Shared.Timing; +using Content.Shared.Timing.Systems; using Robust.Shared.Player; using Robust.Shared.Prototypes; diff --git a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Interactions/InteractWithOperator.cs b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Interactions/InteractWithOperator.cs index c2ae7d43ea..2708ec401a 100644 --- a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Interactions/InteractWithOperator.cs +++ b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Interactions/InteractWithOperator.cs @@ -1,7 +1,7 @@ using Content.Server.Interaction; using Content.Shared.CombatMode; using Content.Shared.DoAfter; -using Content.Shared.Timing; +using Content.Shared.Timing.Systems; namespace Content.Server.NPC.HTN.PrimitiveTasks.Operators.Interactions; @@ -69,7 +69,7 @@ public sealed partial class InteractWithOperator : HTNOperator } - if (_entManager.TryGetComponent(owner, out var useDelay) && _entManager.System().IsDelayed((owner, useDelay)) || + if (_entManager.System().IsDelayed(owner) || !blackboard.TryGetValue(TargetKey, out var moveTarget, _entManager) || !_entManager.TryGetComponent(moveTarget, out var targetXform)) { diff --git a/Content.Server/Ninja/Systems/StunProviderSystem.cs b/Content.Server/Ninja/Systems/StunProviderSystem.cs index 18d91eac1d..ddb62a3580 100644 --- a/Content.Server/Ninja/Systems/StunProviderSystem.cs +++ b/Content.Server/Ninja/Systems/StunProviderSystem.cs @@ -6,7 +6,8 @@ using Content.Shared.Ninja.Systems; using Content.Shared.Popups; using Content.Shared.Power.EntitySystems; using Content.Shared.Stunnable; -using Content.Shared.Timing; +using Content.Shared.Timing.Components; +using Content.Shared.Timing.Systems; using Content.Shared.Whitelist; using Robust.Shared.Audio.Systems; diff --git a/Content.Server/Power/Generator/PowerSwitchableSystem.cs b/Content.Server/Power/Generator/PowerSwitchableSystem.cs index 81b6654985..bf9c7eb694 100644 --- a/Content.Server/Power/Generator/PowerSwitchableSystem.cs +++ b/Content.Server/Power/Generator/PowerSwitchableSystem.cs @@ -5,7 +5,8 @@ using Content.Server.Power.Nodes; using Content.Shared.NodeContainer; using Content.Shared.Power; using Content.Shared.Power.Generator; -using Content.Shared.Timing; +using Content.Shared.Timing.Components; +using Content.Shared.Timing.Systems; using Robust.Shared.Audio.Systems; namespace Content.Server.Power.Generator; diff --git a/Content.Server/Singularity/EntitySystems/RadiationCollectorSystem.cs b/Content.Server/Singularity/EntitySystems/RadiationCollectorSystem.cs index 3218a561f4..c30c966181 100644 --- a/Content.Server/Singularity/EntitySystems/RadiationCollectorSystem.cs +++ b/Content.Server/Singularity/EntitySystems/RadiationCollectorSystem.cs @@ -1,7 +1,6 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; using Content.Server.Atmos.EntitySystems; -using Content.Server.Atmos.Components; using Content.Server.Popups; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; @@ -12,7 +11,7 @@ using Content.Shared.Examine; using Content.Shared.Interaction; using Content.Shared.Radiation.Events; using Content.Shared.Singularity.Components; -using Content.Shared.Timing; +using Content.Shared.Timing.Systems; using Robust.Shared.Containers; using Robust.Shared.Timing; @@ -71,7 +70,7 @@ public sealed partial class RadiationCollectorSystem : EntitySystem if (!args.Complex) return; - if (TryComp(uid, out UseDelayComponent? useDelay) && !_useDelay.TryResetDelay((uid, useDelay), true)) + if (!_useDelay.TryResetDelay(uid, true)) return; ToggleCollector(uid, args.User, component); diff --git a/Content.Shared/Atmos/EntitySystems/SharedGasTankSystem.cs b/Content.Shared/Atmos/EntitySystems/SharedGasTankSystem.cs index 164846f9de..8c245f5cb0 100644 --- a/Content.Shared/Atmos/EntitySystems/SharedGasTankSystem.cs +++ b/Content.Shared/Atmos/EntitySystems/SharedGasTankSystem.cs @@ -2,7 +2,7 @@ using Content.Shared.Actions; using Content.Shared.Atmos.Components; using Content.Shared.Body.Systems; using Content.Shared.Examine; -using Content.Shared.Timing; +using Content.Shared.Timing.Systems; using Content.Shared.Toggleable; using Content.Shared.UserInterface; using Content.Shared.Verbs; diff --git a/Content.Shared/Bible/BibleSystem.cs b/Content.Shared/Bible/BibleSystem.cs index ab4a9ea6f9..3a916dc6e5 100644 --- a/Content.Shared/Bible/BibleSystem.cs +++ b/Content.Shared/Bible/BibleSystem.cs @@ -11,7 +11,8 @@ using Content.Shared.Mobs; using Content.Shared.Mobs.Systems; using Content.Shared.Popups; using Content.Shared.Random.Helpers; -using Content.Shared.Timing; +using Content.Shared.Timing.Components; +using Content.Shared.Timing.Systems; using Content.Shared.Verbs; using Robust.Shared.Audio.Systems; using Robust.Shared.Containers; diff --git a/Content.Shared/Chemistry/EntitySystems/InjectorSystem.cs b/Content.Shared/Chemistry/EntitySystems/InjectorSystem.cs index ad209ce5d8..ec2e628785 100644 --- a/Content.Shared/Chemistry/EntitySystems/InjectorSystem.cs +++ b/Content.Shared/Chemistry/EntitySystems/InjectorSystem.cs @@ -15,12 +15,11 @@ using Content.Shared.Nutrition.EntitySystems; using Content.Shared.Popups; using Content.Shared.Stacks; using Content.Shared.Standing; -using Content.Shared.Timing; +using Content.Shared.Timing.Systems; using Content.Shared.Verbs; using Content.Shared.Weapons.Melee.Events; using JetBrains.Annotations; using Robust.Shared.Audio.Systems; -using Robust.Shared.Prototypes; namespace Content.Shared.Chemistry.EntitySystems; @@ -648,7 +647,7 @@ public sealed partial class InjectorSystem : EntitySystem _forensics.TransferDna(injector, target); // Reset the delay, if present. - _useDelay.TryResetDelay(injector); + _useDelay.TryResetDelay(injector.Owner); // Automatically set syringe to draw after completely draining it. if (!_solutionContainer.ResolveSolution(injector.Owner, injector.Comp.SolutionName, ref injector.Comp.Solution, out var solution) diff --git a/Content.Shared/Cuffs/SharedCuffableSystem.cs b/Content.Shared/Cuffs/SharedCuffableSystem.cs index 72530304ee..6c4f05fdf7 100644 --- a/Content.Shared/Cuffs/SharedCuffableSystem.cs +++ b/Content.Shared/Cuffs/SharedCuffableSystem.cs @@ -26,7 +26,7 @@ using Content.Shared.Popups; using Content.Shared.Pulling.Events; using Content.Shared.Rejuvenate; using Content.Shared.Stunnable; -using Content.Shared.Timing; +using Content.Shared.Timing.Systems; using Content.Shared.Verbs; using Content.Shared.Weapons.Melee.Events; using Robust.Shared.Audio.Systems; @@ -636,10 +636,7 @@ namespace Content.Shared.Cuffs if (isOwner) { - if (!TryComp(cuff, out UseDelayComponent? useDelay)) - return; - - if (!_delay.TryResetDelay((cuff, useDelay), true)) + if (!_delay.TryResetDelay(cuff.Owner, true)) { return; } diff --git a/Content.Shared/Flash/SharedFlashSystem.cs b/Content.Shared/Flash/SharedFlashSystem.cs index f61a78b3ce..7bbba77093 100644 --- a/Content.Shared/Flash/SharedFlashSystem.cs +++ b/Content.Shared/Flash/SharedFlashSystem.cs @@ -15,7 +15,7 @@ using Content.Shared.Random.Helpers; using Content.Shared.StatusEffectNew; using Content.Shared.Stunnable; using Content.Shared.Tag; -using Content.Shared.Timing; +using Content.Shared.Timing.Systems; using Content.Shared.Traits.Assorted; using Content.Shared.Weapons.Melee.Events; using Robust.Shared.Audio; diff --git a/Content.Shared/Fluids/SharedAbsorbentSystem.cs b/Content.Shared/Fluids/SharedAbsorbentSystem.cs index 9948953ae7..14185d7ae9 100644 --- a/Content.Shared/Fluids/SharedAbsorbentSystem.cs +++ b/Content.Shared/Fluids/SharedAbsorbentSystem.cs @@ -6,11 +6,11 @@ using Content.Shared.Fluids.Components; using Content.Shared.Interaction; using Content.Shared.Item; using Content.Shared.Popups; -using Content.Shared.Timing; +using Content.Shared.Timing.Components; +using Content.Shared.Timing.Systems; using Content.Shared.Weapons.Melee; using Robust.Shared.Audio.Systems; using Robust.Shared.Map.Components; -using Robust.Shared.Prototypes; using Robust.Shared.Timing; namespace Content.Shared.Fluids; diff --git a/Content.Shared/Friends/Systems/PettableFriendSystem.cs b/Content.Shared/Friends/Systems/PettableFriendSystem.cs index 0b1a13bf5a..b780917bb9 100644 --- a/Content.Shared/Friends/Systems/PettableFriendSystem.cs +++ b/Content.Shared/Friends/Systems/PettableFriendSystem.cs @@ -4,7 +4,8 @@ using Content.Shared.Interaction.Events; using Content.Shared.NPC.Components; using Content.Shared.NPC.Systems; using Content.Shared.Popups; -using Content.Shared.Timing; +using Content.Shared.Timing.Components; +using Content.Shared.Timing.Systems; namespace Content.Shared.Friends.Systems; diff --git a/Content.Shared/Interaction/Events/UseInHandEvent.cs b/Content.Shared/Interaction/Events/UseInHandEvent.cs index 24a841c2d8..b370ef8a35 100644 --- a/Content.Shared/Interaction/Events/UseInHandEvent.cs +++ b/Content.Shared/Interaction/Events/UseInHandEvent.cs @@ -1,5 +1,5 @@ using Content.Shared.Clothing.EntitySystems; -using Content.Shared.Timing; +using Content.Shared.Timing.Components; using JetBrains.Annotations; namespace Content.Shared.Interaction.Events; diff --git a/Content.Shared/Interaction/SharedInteractionSystem.cs b/Content.Shared/Interaction/SharedInteractionSystem.cs index 14f2b7ff42..08cd8ec085 100644 --- a/Content.Shared/Interaction/SharedInteractionSystem.cs +++ b/Content.Shared/Interaction/SharedInteractionSystem.cs @@ -25,7 +25,8 @@ using Content.Shared.Popups; using Content.Shared.Storage; using Content.Shared.Strip; using Content.Shared.Tag; -using Content.Shared.Timing; +using Content.Shared.Timing.Components; +using Content.Shared.Timing.Systems; using Content.Shared.UserInterface; using Content.Shared.Verbs; using Content.Shared.Wall; @@ -1181,7 +1182,7 @@ namespace Content.Shared.Interaction _adminLogger.Add(LogType.InteractActivate, LogImpact.Low, $"{ToPrettyString(user):user} activated {ToPrettyString(used):used}"); if (delayComponent != null) - _useDelay.TryResetDelay(used, component: delayComponent); + _useDelay.TryResetDelay((used, delayComponent)); return true; } @@ -1194,7 +1195,7 @@ namespace Content.Shared.Interaction DoContactInteraction(user, used); // Still need to call this even without checkUseDelay in case this gets relayed from Activate. if (delayComponent != null) - _useDelay.TryResetDelay(used, component: delayComponent); + _useDelay.TryResetDelay((used, delayComponent)); _adminLogger.Add(LogType.InteractActivate, LogImpact.Low, $"{ToPrettyString(user):user} activated {ToPrettyString(used):used}"); return true; diff --git a/Content.Shared/Mech/Equipment/Systems/MechSoundboardSystem.cs b/Content.Shared/Mech/Equipment/Systems/MechSoundboardSystem.cs index 738c300ffe..d709bd9e60 100644 --- a/Content.Shared/Mech/Equipment/Systems/MechSoundboardSystem.cs +++ b/Content.Shared/Mech/Equipment/Systems/MechSoundboardSystem.cs @@ -1,5 +1,6 @@ using Content.Shared.Mech.Equipment.Components; -using Content.Shared.Timing; +using Content.Shared.Timing.Components; +using Content.Shared.Timing.Systems; using Robust.Shared.Audio; using Robust.Shared.Audio.Systems; using Robust.Shared.Prototypes; @@ -51,8 +52,7 @@ public sealed partial class MechSoundboardSystem : EntitySystem if (msg.Sound >= comp.Sounds.Count) return; - if (TryComp(uid, out UseDelayComponent? useDelay) - && !_useDelay.TryResetDelay((uid, useDelay), true)) + if (!_useDelay.TryResetDelay(uid, true)) return; // honk!!!!! diff --git a/Content.Shared/Medical/SharedDefibrillatorSystem.cs b/Content.Shared/Medical/SharedDefibrillatorSystem.cs index 71ea4307d4..8dd418cb0e 100644 --- a/Content.Shared/Medical/SharedDefibrillatorSystem.cs +++ b/Content.Shared/Medical/SharedDefibrillatorSystem.cs @@ -13,7 +13,8 @@ using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; using Content.Shared.Popups; using Content.Shared.PowerCell; -using Content.Shared.Timing; +using Content.Shared.Timing.Components; +using Content.Shared.Timing.Systems; using Content.Shared.Traits.Assorted; using Robust.Shared.Audio.Systems; using Robust.Shared.Player; diff --git a/Content.Shared/Ninja/Systems/SharedNinjaSuitSystem.cs b/Content.Shared/Ninja/Systems/SharedNinjaSuitSystem.cs index e58c74f72f..a518b1fbb3 100644 --- a/Content.Shared/Ninja/Systems/SharedNinjaSuitSystem.cs +++ b/Content.Shared/Ninja/Systems/SharedNinjaSuitSystem.cs @@ -1,13 +1,13 @@ using Content.Shared.Actions; using Content.Shared.Clothing; using Content.Shared.Clothing.Components; -using Content.Shared.Emp; using Content.Shared.Inventory.Events; using Content.Shared.Item.ItemToggle; using Content.Shared.Item.ItemToggle.Components; using Content.Shared.Ninja.Components; using Content.Shared.Popups; -using Content.Shared.Timing; +using Content.Shared.Timing.Components; +using Content.Shared.Timing.Systems; using Robust.Shared.Audio.Systems; namespace Content.Shared.Ninja.Systems; diff --git a/Content.Shared/RepulseAttract/RepulseAttractSystem.cs b/Content.Shared/RepulseAttract/RepulseAttractSystem.cs index 29be516e1e..2d93d70878 100644 --- a/Content.Shared/RepulseAttract/RepulseAttractSystem.cs +++ b/Content.Shared/RepulseAttract/RepulseAttractSystem.cs @@ -1,6 +1,5 @@ using Content.Shared.Physics; using Content.Shared.Throwing; -using Content.Shared.Timing; using Content.Shared.Weapons.Melee.Events; using Content.Shared.Whitelist; using Content.Shared.Wieldable; @@ -8,6 +7,7 @@ using Robust.Shared.Map; using Robust.Shared.Physics.Components; using System.Numerics; using Content.Shared.RepulseAttract.Events; +using Content.Shared.Timing.Systems; using Content.Shared.Weapons.Melee; namespace Content.Shared.RepulseAttract; diff --git a/Content.Shared/StationTeleporter/SharedStationTeleporterSystem.cs b/Content.Shared/StationTeleporter/SharedStationTeleporterSystem.cs index eb61da3cb1..856e54010e 100644 --- a/Content.Shared/StationTeleporter/SharedStationTeleporterSystem.cs +++ b/Content.Shared/StationTeleporter/SharedStationTeleporterSystem.cs @@ -7,7 +7,8 @@ using Content.Shared.Power; using Content.Shared.Power.EntitySystems; using Content.Shared.StationTeleporter.Components; using Content.Shared.Teleportation.Systems; -using Content.Shared.Timing; +using Content.Shared.Timing.Components; +using Content.Shared.Timing.Systems; using Robust.Shared.Audio.Systems; using Robust.Shared.Containers; @@ -103,7 +104,7 @@ public abstract partial class SharedStationTeleporterSystem : EntitySystem if (args.Handled) return; - if (TryComp(args.Used, out var useDelayComp) && _useDelay.IsDelayed((args.Used, useDelayComp))) + if (_useDelay.IsDelayed(args.Used)) return; _useDelay.TryResetDelay(args.Used); diff --git a/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs b/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs index e012b2e38c..bd1a614e08 100644 --- a/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs +++ b/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs @@ -22,7 +22,6 @@ using Content.Shared.Popups; using Content.Shared.Stacks; using Content.Shared.Storage.Components; using Content.Shared.Tag; -using Content.Shared.Timing; using Content.Shared.Storage.Events; using Content.Shared.Verbs; using Content.Shared.Whitelist; @@ -39,6 +38,8 @@ using Robust.Shared.Random; using Robust.Shared.Serialization; using Robust.Shared.Utility; using Content.Shared.Rounding; +using Content.Shared.Timing.Components; +using Content.Shared.Timing.Systems; using Robust.Shared.Collections; using Robust.Shared.Map.Enumerators; diff --git a/Content.Shared/SubFloor/SharedTrayScannerSystem.cs b/Content.Shared/SubFloor/SharedTrayScannerSystem.cs index e732450de4..ab626f7285 100644 --- a/Content.Shared/SubFloor/SharedTrayScannerSystem.cs +++ b/Content.Shared/SubFloor/SharedTrayScannerSystem.cs @@ -3,7 +3,7 @@ using Content.Shared.Eye; using Content.Shared.Hands; using Content.Shared.Interaction; using Content.Shared.Inventory.Events; -using Content.Shared.Timing; +using Content.Shared.Timing.Systems; using Content.Shared.Verbs; using Robust.Shared.Audio; using Robust.Shared.Audio.Systems; @@ -69,7 +69,7 @@ public abstract partial class SharedTrayScannerSystem : EntitySystem return; // Prevents ping spam - if (!_delay.TryResetDelay(scanner, checkDelayed: true)) + if (!_delay.TryResetDelay(scanner.Owner, checkDelayed: true)) return; scanner.Comp.Mode = Next(scanner.Comp.Mode); diff --git a/Content.Shared/Teleportation/Systems/SharedTeleportLocationsSystem.cs b/Content.Shared/Teleportation/Systems/SharedTeleportLocationsSystem.cs index b66e8d1ce8..2192859e1d 100644 --- a/Content.Shared/Teleportation/Systems/SharedTeleportLocationsSystem.cs +++ b/Content.Shared/Teleportation/Systems/SharedTeleportLocationsSystem.cs @@ -1,10 +1,10 @@ using Content.Shared.Maths; using Content.Shared.Teleportation.Components; -using Content.Shared.Timing; using Content.Shared.UserInterface; using Content.Shared.Warps; using Robust.Shared.Map; using System.Numerics; +using Content.Shared.Timing.Systems; namespace Content.Shared.Teleportation.Systems; diff --git a/Content.Shared/Timing/UseDelayComponent.cs b/Content.Shared/Timing/Components/UseDelayComponent.cs similarity index 85% rename from Content.Shared/Timing/UseDelayComponent.cs rename to Content.Shared/Timing/Components/UseDelayComponent.cs index aa6c66eb81..9b0b40b02e 100644 --- a/Content.Shared/Timing/UseDelayComponent.cs +++ b/Content.Shared/Timing/Components/UseDelayComponent.cs @@ -1,15 +1,14 @@ +using Content.Shared.Timing.Systems; using Robust.Shared.GameStates; using Robust.Shared.Serialization; -namespace Content.Shared.Timing; +namespace Content.Shared.Timing.Components; /// /// Timer that creates a cooldown each time an object is activated/used. /// Can support additional, separate cooldown timers on the object by passing a unique ID with the system methods. /// -[RegisterComponent] -[NetworkedComponent] -[Access(typeof(UseDelaySystem))] +[RegisterComponent, NetworkedComponent, Access(typeof(UseDelaySystem))] public sealed partial class UseDelayComponent : Component { [DataField] @@ -21,7 +20,7 @@ public sealed partial class UseDelayComponent : Component /// /// This is only used at MapInit and should not be expected /// to reflect the length of the default delay after that. - /// Use instead. + /// Use instead. /// [DataField] public TimeSpan Delay = TimeSpan.FromSeconds(1); diff --git a/Content.Shared/Timing/Systems/UseDelaySystem.API.cs b/Content.Shared/Timing/Systems/UseDelaySystem.API.cs new file mode 100644 index 0000000000..f04104b27b --- /dev/null +++ b/Content.Shared/Timing/Systems/UseDelaySystem.API.cs @@ -0,0 +1,158 @@ +using System.Diagnostics.CodeAnalysis; +using Content.Shared.Timing.Components; +using JetBrains.Annotations; +using Robust.Shared.Utility; + +namespace Content.Shared.Timing.Systems; + +public sealed partial class UseDelaySystem +{ + /// + /// Sets the Delay Duration of the specified delayID. + /// If the delayID doesn't exist, it'll be added. + /// + /// The entity whose useDelay is being modified. + /// The new length of the delay. + /// The specified id of the delay. If null, it'll use the standard delay. + /// This will add the if it isn't already present on the entity. + [PublicAPI] + public void SetLength(Entity delayed, TimeSpan length, string id = DefaultId) + { + EnsureComp(delayed.Owner, out var comp); + + if (comp.Delays.TryGetValue(id, out var entry)) + { + if (entry.Length == length) + return; + + entry.Length = length; + } + else + { + comp.Delays.Add(id, new UseDelayInfo(length)); + } + + Dirty(delayed); + } + + /// + /// Checks whether the entity currently has an active delay with the specified ID. + /// + /// The entity with the possibly active useDelay. + /// The specified id of the delay. If null, it'll use the standard delay. + /// True, if the specified delay is active, otherwise false. + [PublicAPI] + public bool IsDelayed(Entity delayed, string id = DefaultId) + { + if (!Resolve(delayed.Owner, ref delayed.Comp, false)) + return false; + + if (!delayed.Comp.Delays.TryGetValue(id, out var entry)) + return false; + + return entry.EndTime >= _gameTiming.CurTime; + } + + /// + /// Cancels an active delay with the specified delayID. + /// + /// The entity whose active delay is to be canceled. + /// The specified id of the delay. If null, it'll use the standard delay. + /// Returns true if it was active and has been canceled, otherwise false. + [PublicAPI] + public bool CancelDelay(Entity delayed, string id = DefaultId) + { + if (!delayed.Comp.Delays.TryGetValue(id, out var entry) || entry.EndTime <= _gameTiming.CurTime) + return false; + + entry.EndTime = _gameTiming.CurTime; + Dirty(delayed); + return true; + } + + /// + /// Tries to get info about the delay with the specified ID. See . + /// + /// The entity with the useDelay. + /// The info about the specified useDelay. + /// The specified id of the delay. If null, it'll use the standard delay. + /// Returns true if the entity has the delay, otherwise false. + [PublicAPI] + public bool TryGetDelayInfo(Entity delayed, [NotNullWhen(true)] out UseDelayInfo? info, string id = DefaultId) + { + if (!Resolve(delayed.Owner, ref delayed.Comp, false)) + { + info = null; + return false; + } + + return delayed.Comp.Delays.TryGetValue(id, out info); + } + + /// + /// Returns the info about the last ending, active delay. + /// + /// The entity with the delays. + /// The info of the active delay. + /// Returns true if one is present and active, otherwise false. + [PublicAPI] + public bool GetLastActiveDelay(Entity delayed, out UseDelayInfo info) + { + var success = false; + info = new UseDelayInfo(TimeSpan.Zero); + + foreach (var entry in delayed.Comp.Delays) + { + if (entry.Value.EndTime <= _gameTiming.CurTime || entry.Value.EndTime <= info.EndTime) + continue; + + info = entry.Value; + success = true; + } + return success; + } + + /// + /// Try to reset the specified delay of the entity. + /// + /// The entity whose specified delay is being reset. + /// Whether to check if the delay is already active. If so, it'll not reset it. + /// The specified id of the delay. If null, it'll use the standard delay. + /// Returns true if it was able to find & reset the delay, otherwise false. + [PublicAPI] + public bool TryResetDelay(Entity delayed, bool checkDelayed = false, string id = DefaultId) + { + if (!Resolve(delayed, ref delayed.Comp, false)) + return false; + + if (checkDelayed && IsDelayed(delayed, id)) + return false; + + if (!delayed.Comp.Delays.TryGetValue(id, out var entry)) + { + DebugTools.Assert($"Attempted to reset the {id} delay of {delayed}, but it's missing."); + return false; + } + + var curTime = _gameTiming.CurTime; + entry.StartTime = curTime; + entry.EndTime = curTime - _metadata.GetPauseTime(delayed) + entry.Length; + Dirty(delayed); + return true; + } + + /// + /// Resets all delays on the entity. + /// + [PublicAPI] + public void ResetAllDelays(Entity ent) + { + var curTime = _gameTiming.CurTime; + foreach (var entry in ent.Comp.Delays.Values) + { + entry.StartTime = curTime; + entry.EndTime = curTime - _metadata.GetPauseTime(ent) + entry.Length; + } + Dirty(ent); + } +} diff --git a/Content.Shared/Timing/Systems/UseDelaySystem.cs b/Content.Shared/Timing/Systems/UseDelaySystem.cs new file mode 100644 index 0000000000..ef7e7bbd7e --- /dev/null +++ b/Content.Shared/Timing/Systems/UseDelaySystem.cs @@ -0,0 +1,55 @@ +using Content.Shared.Timing.Components; +using Robust.Shared.GameStates; +using Robust.Shared.Timing; + +namespace Content.Shared.Timing.Systems; + +public sealed partial class UseDelaySystem : EntitySystem +{ + [Dependency] private IGameTiming _gameTiming = default!; + [Dependency] private MetaDataSystem _metadata = default!; + + public const string DefaultId = "default"; + + [SubscribeLocalEvent] + private void OnDelayHandleState(Entity ent, ref ComponentHandleState args) + { + if (args.Current is not UseDelayComponentState state) + return; + + ent.Comp.Delays.Clear(); + + // At time of writing sourcegen networking doesn't deep copy so this will mispredict if you try. + foreach (var (key, delay) in state.Delays) + { + ent.Comp.Delays[key] = new UseDelayInfo(delay.Length, delay.StartTime, delay.EndTime); + } + } + + [SubscribeLocalEvent] + private void OnDelayGetState(Entity ent, ref ComponentGetState args) + { + args.State = new UseDelayComponentState() + { + Delays = ent.Comp.Delays + }; + } + + [SubscribeLocalEvent] + private void OnMapInit(Entity ent, ref MapInitEvent args) + { + // Set default delay length from the prototype + // This makes it easier for simple use cases that only need a single delay + SetLength((ent, ent.Comp), ent.Comp.Delay, DefaultId); + } + + [SubscribeLocalEvent] + private void OnUnpaused(Entity ent, ref EntityUnpausedEvent args) + { + // We have to do this manually, since it's not just a single field. + foreach (var entry in ent.Comp.Delays.Values) + { + entry.EndTime += args.PausedTime; + } + } +} diff --git a/Content.Shared/Timing/UseDelaySystem.cs b/Content.Shared/Timing/UseDelaySystem.cs deleted file mode 100644 index 3f0e5d3568..0000000000 --- a/Content.Shared/Timing/UseDelaySystem.cs +++ /dev/null @@ -1,190 +0,0 @@ -using System.Diagnostics.CodeAnalysis; -using Robust.Shared.GameStates; -using Robust.Shared.Timing; - -namespace Content.Shared.Timing; - -public sealed partial class UseDelaySystem : EntitySystem -{ - [Dependency] private IGameTiming _gameTiming = default!; - [Dependency] private MetaDataSystem _metadata = default!; - - public const string DefaultId = "default"; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnMapInit); - SubscribeLocalEvent(OnUnpaused); - SubscribeLocalEvent(OnDelayGetState); - SubscribeLocalEvent(OnDelayHandleState); - } - - private void OnDelayHandleState(Entity ent, ref ComponentHandleState args) - { - if (args.Current is not UseDelayComponentState state) - return; - - ent.Comp.Delays.Clear(); - - // At time of writing sourcegen networking doesn't deep copy so this will mispredict if you try. - foreach (var (key, delay) in state.Delays) - { - ent.Comp.Delays[key] = new UseDelayInfo(delay.Length, delay.StartTime, delay.EndTime); - } - } - - private void OnDelayGetState(Entity ent, ref ComponentGetState args) - { - args.State = new UseDelayComponentState() - { - Delays = ent.Comp.Delays - }; - } - - private void OnMapInit(Entity ent, ref MapInitEvent args) - { - // Set default delay length from the prototype - // This makes it easier for simple use cases that only need a single delay - SetLength((ent, ent.Comp), ent.Comp.Delay, DefaultId); - } - - private void OnUnpaused(Entity ent, ref EntityUnpausedEvent args) - { - // We have to do this manually, since it's not just a single field. - foreach (var entry in ent.Comp.Delays.Values) - { - entry.EndTime += args.PausedTime; - } - } - - /// - /// Sets the length of the delay with the specified ID. - /// - /// - /// This will add a UseDelay component to the entity if it doesn't have one. - /// - public bool SetLength(Entity ent, TimeSpan length, string id = DefaultId) - { - EnsureComp(ent.Owner, out var comp); - - if (comp.Delays.TryGetValue(id, out var entry)) - { - if (entry.Length == length) - return true; - - entry.Length = length; - } - else - { - comp.Delays.Add(id, new UseDelayInfo(length)); - } - - Dirty(ent); - return true; - } - - /// - /// Returns true if the entity has a currently active UseDelay with the specified ID. - /// - public bool IsDelayed(Entity ent, string id = DefaultId) - { - if (!Resolve(ent.Owner, ref ent.Comp, false)) - return false; - - if (!ent.Comp.Delays.TryGetValue(id, out var entry)) - return false; - - return entry.EndTime >= _gameTiming.CurTime; - } - - /// - /// Cancels the delay with the specified ID. - /// - public void CancelDelay(Entity ent, string id = DefaultId) - { - if (!ent.Comp.Delays.TryGetValue(id, out var entry)) - return; - - entry.EndTime = _gameTiming.CurTime; - Dirty(ent); - } - - /// - /// Tries to get info about the delay with the specified ID. See . - /// - /// - /// - /// - /// - public bool TryGetDelayInfo(Entity ent, [NotNullWhen(true)] out UseDelayInfo? info, string id = DefaultId) - { - if (!Resolve(ent.Owner, ref ent.Comp, false)) - { - info = null; - return false; - } - - return ent.Comp.Delays.TryGetValue(id, out info); - } - - /// - /// Returns info for the delay that will end farthest in the future. - /// - public UseDelayInfo GetLastEndingDelay(Entity ent) - { - if (!ent.Comp.Delays.TryGetValue(DefaultId, out var last)) - return new UseDelayInfo(TimeSpan.Zero); - - foreach (var entry in ent.Comp.Delays) - { - if (entry.Value.EndTime > last.EndTime) - last = entry.Value; - } - return last; - } - - /// - /// Resets the delay with the specified ID for this entity if possible. - /// - /// Check if the entity has an ongoing delay with the specified ID. - /// If it does, return false and don't reset it. - /// Otherwise reset it and return true. - public bool TryResetDelay(Entity ent, bool checkDelayed = false, string id = DefaultId) - { - if (checkDelayed && IsDelayed((ent.Owner, ent.Comp), id)) - return false; - - if (!ent.Comp.Delays.TryGetValue(id, out var entry)) - return false; - - var curTime = _gameTiming.CurTime; - entry.StartTime = curTime; - entry.EndTime = curTime - _metadata.GetPauseTime(ent) + entry.Length; - Dirty(ent); - return true; - } - - public bool TryResetDelay(EntityUid uid, bool checkDelayed = false, UseDelayComponent? component = null, string id = DefaultId) - { - if (!Resolve(uid, ref component, false)) - return false; - - return TryResetDelay((uid, component), checkDelayed, id); - } - - /// - /// Resets all delays on the entity. - /// - public void ResetAllDelays(Entity ent) - { - var curTime = _gameTiming.CurTime; - foreach (var entry in ent.Comp.Delays.Values) - { - entry.StartTime = curTime; - entry.EndTime = curTime - _metadata.GetPauseTime(ent) + entry.Length; - } - Dirty(ent); - } -} diff --git a/Content.Shared/Trigger/Components/Conditions/UseDelayTriggerConditionComponent.cs b/Content.Shared/Trigger/Components/Conditions/UseDelayTriggerConditionComponent.cs index 70a331227e..e06b298b99 100644 --- a/Content.Shared/Trigger/Components/Conditions/UseDelayTriggerConditionComponent.cs +++ b/Content.Shared/Trigger/Components/Conditions/UseDelayTriggerConditionComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Timing; +using Content.Shared.Timing.Systems; using Robust.Shared.GameStates; namespace Content.Shared.Trigger.Components.Conditions; diff --git a/Content.Shared/Trigger/Components/Effects/UseDelayOnTriggerComponent.cs b/Content.Shared/Trigger/Components/Effects/UseDelayOnTriggerComponent.cs index 4d43c2860b..936abf35a7 100644 --- a/Content.Shared/Trigger/Components/Effects/UseDelayOnTriggerComponent.cs +++ b/Content.Shared/Trigger/Components/Effects/UseDelayOnTriggerComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Timing; +using Content.Shared.Timing.Systems; using Robust.Shared.GameStates; namespace Content.Shared.Trigger.Components.Effects; diff --git a/Content.Shared/Trigger/Systems/TriggerSystem.cs b/Content.Shared/Trigger/Systems/TriggerSystem.cs index ae6caa99cb..409d3e8d8e 100644 --- a/Content.Shared/Trigger/Systems/TriggerSystem.cs +++ b/Content.Shared/Trigger/Systems/TriggerSystem.cs @@ -6,7 +6,7 @@ using Content.Shared.Item.ItemToggle; using Content.Shared.Mind; using Content.Shared.Popups; using Content.Shared.Roles; -using Content.Shared.Timing; +using Content.Shared.Timing.Systems; using Content.Shared.Trigger.Components; using Content.Shared.Whitelist; using Robust.Shared.Network; diff --git a/Content.Shared/Turrets/SharedDeployableTurretSystem.cs b/Content.Shared/Turrets/SharedDeployableTurretSystem.cs index 3ed6790d1a..0b0fddd680 100644 --- a/Content.Shared/Turrets/SharedDeployableTurretSystem.cs +++ b/Content.Shared/Turrets/SharedDeployableTurretSystem.cs @@ -4,7 +4,8 @@ using Content.Shared.Damage.Systems; using Content.Shared.Database; using Content.Shared.Interaction; using Content.Shared.Popups; -using Content.Shared.Timing; +using Content.Shared.Timing.Components; +using Content.Shared.Timing.Systems; using Content.Shared.Verbs; using Content.Shared.Weapons.Ranged.Events; using Content.Shared.Wires; @@ -61,7 +62,7 @@ public abstract partial class SharedDeployableTurretSystem : EntitySystem private void OnActivate(Entity ent, ref ActivateInWorldEvent args) { - if (TryComp(ent, out UseDelayComponent? useDelay) && !_useDelay.TryResetDelay((ent, useDelay), true)) + if (!_useDelay.TryResetDelay(ent.Owner, true)) return; if (!_accessReader.IsAllowed(args.User, ent)) diff --git a/Content.Shared/Weapons/Melee/MeleeThrowOnHitSystem.cs b/Content.Shared/Weapons/Melee/MeleeThrowOnHitSystem.cs index 7cb9d259f1..4d06952324 100644 --- a/Content.Shared/Weapons/Melee/MeleeThrowOnHitSystem.cs +++ b/Content.Shared/Weapons/Melee/MeleeThrowOnHitSystem.cs @@ -1,10 +1,10 @@ using Content.Shared.Stunnable; using Content.Shared.Throwing; -using Content.Shared.Timing; using Content.Shared.Weapons.Melee.Components; using Content.Shared.Weapons.Melee.Events; using Robust.Shared.Physics.Components; using System.Numerics; +using Content.Shared.Timing.Systems; namespace Content.Shared.Weapons.Melee; diff --git a/Content.Shared/Weapons/Melee/UseDelayOnMeleeHitSystem.cs b/Content.Shared/Weapons/Melee/UseDelayOnMeleeHitSystem.cs index 841fd219aa..33b090c0cf 100644 --- a/Content.Shared/Weapons/Melee/UseDelayOnMeleeHitSystem.cs +++ b/Content.Shared/Weapons/Melee/UseDelayOnMeleeHitSystem.cs @@ -1,5 +1,6 @@ using Content.Shared.Throwing; -using Content.Shared.Timing; +using Content.Shared.Timing.Components; +using Content.Shared.Timing.Systems; using Content.Shared.Weapons.Melee.Components; using Content.Shared.Weapons.Melee.Events; @@ -31,9 +32,6 @@ public sealed partial class UseDelayOnMeleeHitSystem : EntitySystem { var uid = ent.Owner; - if (!TryComp(uid, out var useDelay)) - return; - - _delay.TryResetDelay((uid, useDelay), checkDelayed: true); + _delay.TryResetDelay(uid, checkDelayed: true); } } diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Revolver.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Revolver.cs index a6715c9cd8..5c30cf8177 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Revolver.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Revolver.cs @@ -36,7 +36,7 @@ public partial class SharedGunSystem if (args.Handled) return; - if (!_useDelay.TryResetDelay(ent)) + if (!_useDelay.TryResetDelay(ent.Owner)) return; args.Handled = true; diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs index 9967076aff..6df2379a0a 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs @@ -1,4 +1,3 @@ -using System.Diagnostics.CodeAnalysis; using System.Numerics; using Content.Shared.ActionBlocker; using Content.Shared.Actions; @@ -15,7 +14,7 @@ using Content.Shared.Popups; using Content.Shared.Projectiles; using Content.Shared.Tag; using Content.Shared.Throwing; -using Content.Shared.Timing; +using Content.Shared.Timing.Systems; using Content.Shared.Verbs; using Content.Shared.Weapons.Hitscan.Components; using Content.Shared.Weapons.Melee; diff --git a/Content.Shared/Weapons/Ranged/Systems/UseDelayOnShootSystem.cs b/Content.Shared/Weapons/Ranged/Systems/UseDelayOnShootSystem.cs index c195b02558..114494d0de 100644 --- a/Content.Shared/Weapons/Ranged/Systems/UseDelayOnShootSystem.cs +++ b/Content.Shared/Weapons/Ranged/Systems/UseDelayOnShootSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Timing; +using Content.Shared.Timing.Systems; using Content.Shared.Weapons.Ranged.Components; namespace Content.Shared.Weapons.Ranged.Systems; @@ -15,7 +15,6 @@ public sealed partial class UseDelayOnShootSystem : EntitySystem private void OnUseShoot(Entity ent, ref GunShotEvent args) { - if (TryComp(ent, out UseDelayComponent? useDelay)) - _delay.TryResetDelay((ent, useDelay)); + _delay.TryResetDelay(ent.Owner); } } diff --git a/Content.Shared/Wieldable/SharedWieldableSystem.cs b/Content.Shared/Wieldable/SharedWieldableSystem.cs index 0b96934e40..e37866ead4 100644 --- a/Content.Shared/Wieldable/SharedWieldableSystem.cs +++ b/Content.Shared/Wieldable/SharedWieldableSystem.cs @@ -11,7 +11,8 @@ using Content.Shared.Item; using Content.Shared.Movement.Components; using Content.Shared.Movement.Systems; using Content.Shared.Popups; -using Content.Shared.Timing; +using Content.Shared.Timing.Components; +using Content.Shared.Timing.Systems; using Content.Shared.Verbs; using Content.Shared.Weapons.Melee; using Content.Shared.Weapons.Melee.Components; diff --git a/Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.XAE.cs b/Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.XAE.cs index a44c889a8b..93ccfb3fea 100644 --- a/Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.XAE.cs +++ b/Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.XAE.cs @@ -2,7 +2,7 @@ using Content.Shared.Administration.Logs; using Content.Shared.Database; using Content.Shared.Interaction; using Content.Shared.Interaction.Events; -using Content.Shared.Timing; +using Content.Shared.Timing.Systems; using Content.Shared.Xenoarchaeology.Artifact.Components; using Robust.Shared.Map; @@ -65,7 +65,7 @@ public abstract partial class SharedXenoArtifactSystem if (xenoArtifactComponent.Suppressed) return false; - if (TryComp(artifact, out var delay) && !_useDelay.TryResetDelay((artifact, delay), true)) + if (!_useDelay.TryResetDelay(artifact.Owner, true)) return false; var success = false; diff --git a/Content.Shared/Xenoarchaeology/Equipment/NodeScannerSystem.cs b/Content.Shared/Xenoarchaeology/Equipment/NodeScannerSystem.cs index 135a12ae64..60c027736c 100644 --- a/Content.Shared/Xenoarchaeology/Equipment/NodeScannerSystem.cs +++ b/Content.Shared/Xenoarchaeology/Equipment/NodeScannerSystem.cs @@ -1,5 +1,5 @@ using Content.Shared.Interaction; -using Content.Shared.Timing; +using Content.Shared.Timing.Systems; using Content.Shared.Verbs; using Content.Shared.Xenoarchaeology.Artifact.Components; using Content.Shared.Xenoarchaeology.Equipment.Components; @@ -80,8 +80,7 @@ public sealed partial class NodeScannerSystem : EntitySystem EntityUid actor ) { - if (TryComp(device, out UseDelayComponent? useDelay) - && !_useDelay.TryResetDelay((device, useDelay), true)) + if (!_useDelay.TryResetDelay(device.Owner, true)) return; var connected = EnsureComp(device); From a4fc7d3522d143fa86e2aa450006f23292f8dee9 Mon Sep 17 00:00:00 2001 From: Jane-Clay Date: Sat, 5 Sep 2026 18:36:16 +0000 Subject: [PATCH 073/197] Remove energy crossbow from nukie uplink (#45870) nukeops ebow removal --- Resources/Prototypes/Catalog/UplinkCatalog/weaponry.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Resources/Prototypes/Catalog/UplinkCatalog/weaponry.yml b/Resources/Prototypes/Catalog/UplinkCatalog/weaponry.yml index f108bbeb85..333f967ec9 100644 --- a/Resources/Prototypes/Catalog/UplinkCatalog/weaponry.yml +++ b/Resources/Prototypes/Catalog/UplinkCatalog/weaponry.yml @@ -79,6 +79,10 @@ categories: - UplinkWeaponry conditions: + - !type:StoreWhitelistCondition + blacklist: + tags: + - NukeOpsUplink - !type:ListingLimitedStockCondition stock: 1 From d0067d89bdbe59bc9c28649504de0901fb15a481 Mon Sep 17 00:00:00 2001 From: UpAndLeaves <92269094+UpAndLeaves@users.noreply.github.com> Date: Sat, 5 Sep 2026 18:39:41 +0000 Subject: [PATCH 074/197] Revert allowing nuke disks in plushies. (#45444) --- Resources/Prototypes/Entities/Objects/base_item.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Resources/Prototypes/Entities/Objects/base_item.yml b/Resources/Prototypes/Entities/Objects/base_item.yml index 31a5364c4b..11eea7faf7 100644 --- a/Resources/Prototypes/Entities/Objects/base_item.yml +++ b/Resources/Prototypes/Entities/Objects/base_item.yml @@ -224,8 +224,10 @@ blacklist: components: - SecretStash # Prevents being able to insert plushies inside each other (infinite plush)! + - NukeDisk # Because a core mechanic of nukies should not be "where in this bag is the fucking disk" tags: - QuantumSpinInverter # It will cause issues with the grinder... + - FakeNukeDisk # For parity with NukeDisk - type: ToolOpenable openToolQualityNeeded: Slicing closeToolQualityNeeded: Slicing # Should probably be stitching or something if that gets added From 16dd492765d75e21217a8591f23158e57b9ec718 Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Sat, 5 Sep 2026 23:06:38 +0000 Subject: [PATCH 075/197] Make bolas able to be removed as long as any hand is free, reduce Sec locker bola count (#45869) * Initial commit * Fix unhandness --- Content.Shared/DoAfter/DoAfterArgs.cs | 7 +++++++ .../DoAfter/SharedDoAfterSystem.Update.cs | 3 +++ Content.Shared/DoAfter/SharedDoAfterSystem.cs | 16 ++++++++++------ .../Ensnaring/SharedEnsnareableSystem.cs | 4 ++-- Resources/Locale/en-US/alerts/alerts.ftl | 2 +- .../Catalog/Fills/Lockers/security.yml | 2 -- 6 files changed, 23 insertions(+), 11 deletions(-) diff --git a/Content.Shared/DoAfter/DoAfterArgs.cs b/Content.Shared/DoAfter/DoAfterArgs.cs index 7ac5761c48..6f0b6bc6b5 100644 --- a/Content.Shared/DoAfter/DoAfterArgs.cs +++ b/Content.Shared/DoAfter/DoAfterArgs.cs @@ -96,6 +96,12 @@ public sealed partial class DoAfterArgs [DataField] public bool NeedFreeHand; + /// + /// Whether or not this do after requires you to have any empty hand, + /// + [DataField] + public bool NeedAnyFreeHand; + /// /// Whether we need to keep our active hand as is (i.e. can't change hand or change item). This also covers /// requiring the hand to be free (if applicable). This does nothing if is false. @@ -265,6 +271,7 @@ public sealed partial class DoAfterArgs Broadcast = other.Broadcast; NeedHand = other.NeedHand; NeedFreeHand = other.NeedFreeHand; + NeedAnyFreeHand = other.NeedAnyFreeHand; BreakOnHandChange = other.BreakOnHandChange; BreakOnDropItem = other.BreakOnDropItem; BreakOnMove = other.BreakOnMove; diff --git a/Content.Shared/DoAfter/SharedDoAfterSystem.Update.cs b/Content.Shared/DoAfter/SharedDoAfterSystem.Update.cs index 0ca3314942..b5eed2a381 100644 --- a/Content.Shared/DoAfter/SharedDoAfterSystem.Update.cs +++ b/Content.Shared/DoAfter/SharedDoAfterSystem.Update.cs @@ -267,6 +267,9 @@ public abstract partial class SharedDoAfterSystem : EntitySystem //If the user's hand is no longer empty, interrupt the do-after. if (args.NeedFreeHand & !_hands.ActiveHandIsEmpty(args.User)) return true; + + if (args.NeedAnyFreeHand && _hands.GetEmptyHandCount((args.User, hands)) == 0) + return true; } if (args.RequireCanInteract && !_actionBlocker.CanInteract(args.User, args.Target)) diff --git a/Content.Shared/DoAfter/SharedDoAfterSystem.cs b/Content.Shared/DoAfter/SharedDoAfterSystem.cs index 2ef5eb3d82..5f4d84c422 100644 --- a/Content.Shared/DoAfter/SharedDoAfterSystem.cs +++ b/Content.Shared/DoAfter/SharedDoAfterSystem.cs @@ -290,10 +290,8 @@ public abstract partial class SharedDoAfterSystem : EntitySystem doAfter.NetUserPosition = GetNetCoordinates(doAfter.UserPosition); doAfter.NetMovementEntity = GetNetEntity(doAfter.MovementEntity); - // For this we need to stay on the same hand slot and need the same item in that hand slot - // (or if there is no item there we need to keep it free). - // The NeedFreeHand arg requires us to have our active hand empty. - if (args.NeedHand && (args.BreakOnHandChange || args.BreakOnDropItem)) + // Check hand statuses; whether you have one, if its free (or any), and set up for breaking on change/drop. + if (args.NeedHand) { if (!TryComp(args.User, out HandsComponent? handsComponent)) return false; @@ -301,8 +299,14 @@ public abstract partial class SharedDoAfterSystem : EntitySystem if (args.NeedFreeHand && !_hands.ActiveHandIsEmpty(args.User)) return false; - doAfter.InitialHand = handsComponent.ActiveHandId; - doAfter.InitialItem = _hands.GetActiveItem((args.User, handsComponent)); + if (args.NeedAnyFreeHand && _hands.GetEmptyHandCount((args.User, handsComponent)) == 0) + return false; + + if (args.BreakOnHandChange || args.BreakOnDropItem) + { + doAfter.InitialHand = handsComponent.ActiveHandId; + doAfter.InitialItem = _hands.GetActiveItem((args.User, handsComponent)); + } } doAfter.NetInitialItem = GetNetEntity(doAfter.InitialItem); diff --git a/Content.Shared/Ensnaring/SharedEnsnareableSystem.cs b/Content.Shared/Ensnaring/SharedEnsnareableSystem.cs index 57e5172eb7..3ecf874613 100644 --- a/Content.Shared/Ensnaring/SharedEnsnareableSystem.cs +++ b/Content.Shared/Ensnaring/SharedEnsnareableSystem.cs @@ -162,8 +162,8 @@ public abstract partial class SharedEnsnareableSystem : EntitySystem BreakOnDamage = false, NeedHand = true, BreakOnDropItem = false, - NeedFreeHand = true, - BreakOnHandChange = true, + NeedAnyFreeHand = true, + BreakOnHandChange = false, }; if (!_doAfter.TryStartDoAfter(doAfterEventArgs)) diff --git a/Resources/Locale/en-US/alerts/alerts.ftl b/Resources/Locale/en-US/alerts/alerts.ftl index 47292815bd..d8c294d5fa 100644 --- a/Resources/Locale/en-US/alerts/alerts.ftl +++ b/Resources/Locale/en-US/alerts/alerts.ftl @@ -37,7 +37,7 @@ alerts-handcuffed-name = [color=yellow]Handcuffed[/color] alerts-handcuffed-desc = You're [color=yellow]handcuffed[/color] and can't use your hands. If anyone drags you, you won't be able to resist. alerts-ensnared-name = [color=yellow]Ensnared[/color] -alerts-ensnared-desc = You're [color=yellow]ensnared[/color] and is impairing your ability to move. +alerts-ensnared-desc = You're [color=yellow]ensnared[/color] and is impairing your ability to move. Click with a free hand to remove. alerts-buckled-name = [color=yellow]Buckled[/color] alerts-buckled-desc = You've been [color=yellow]buckled[/color] to something. Click the alert to unbuckle unless you're [color=yellow]handcuffed.[/color] diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/security.yml b/Resources/Prototypes/Catalog/Fills/Lockers/security.yml index 6ae3e82f05..efaff36e94 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/security.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/security.yml @@ -73,8 +73,6 @@ - id: FlashlightSeclite prob: 0.8 - id: WeaponDisabler - - id: SecurityBola - amount: 2 - id: ClothingUniformJumpsuitSecGrey prob: 0.3 - id: ClothingHeadHelmetBasic From bb98838d676c04565fed602ca937a733035e6bd6 Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> Date: Sat, 5 Sep 2026 23:45:37 +0000 Subject: [PATCH 076/197] Energy Bow Nerf (#44138) * phase 1 * delayed knockdown * brudda * microbalance * enrrhguy gjkasnnboew * does nothing * whoop * fix YAML linter * some more changes * no discounts * I hate ContainerContainer * gorbino's quest * asfassaffsa * dgdgsdgsgds * humburber * better description * make it a metabolite... * nevermind * API text * grok --------- Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> --- .../Tests/Security/StunBatonTest.cs | 4 +-- .../Chemistry/EntitySystems/RiggableSystem.cs | 7 ++-- .../Damage/Systems/SharedStaminaSystem.cs | 2 +- .../Damage/StaminaDamageEntityEffectSystem.cs | 24 ++++++++++++++ ...MovementSpeedModifierEntityEffectSystem.cs | 23 ++++++++----- .../Item/ItemToggle/ItemToggleSystem.cs | 4 +-- .../Systems/MovementModStatusSystem.cs | 22 ++++++++----- .../EntitySystems/SharedBatterySystem.API.cs | 33 +++++++++++++++++++ .../BallisticAmmoSelfRefillerComponent.cs | 13 ++++++++ .../Systems/SharedGunSystem.Ballistic.cs | 13 ++++++-- .../Ranged/Systems/SharedGunSystem.Battery.cs | 22 ++++++++----- .../Locale/en-US/reagents/meta/toxins.ftl | 5 ++- .../Catalog/UplinkCatalog/weaponry.yml | 10 ------ .../Weapons/Guns/Basic/energy_crossbow.yml | 29 ++++++++++++---- .../Weapons/Guns/Battery/battery_guns.yml | 11 +++++-- .../Weapons/Guns/Projectiles/Energy/stun.yml | 20 +++-------- .../Entities/StatusEffects/movement.yml | 9 +++++ Resources/Prototypes/Reagents/toxins.yml | 30 +++++++++++++++++ 18 files changed, 209 insertions(+), 72 deletions(-) create mode 100644 Content.Shared/EntityEffects/Effects/Damage/StaminaDamageEntityEffectSystem.cs diff --git a/Content.IntegrationTests/Tests/Security/StunBatonTest.cs b/Content.IntegrationTests/Tests/Security/StunBatonTest.cs index 2601785e42..eeb99c73d4 100644 --- a/Content.IntegrationTests/Tests/Security/StunBatonTest.cs +++ b/Content.IntegrationTests/Tests/Security/StunBatonTest.cs @@ -163,7 +163,7 @@ public sealed class StunBatonTests : InteractionTest var baton = await PlaceInHands(StunBatonProtoId, enableToggleable: true); var sBaton = ToServer(baton); var batteryComp = Comp(baton); - var batonIntialCharge = _battery.GetCharge(sBaton); + var batonIntialCharge = _battery.GetCharge(sBaton).Charge; using (Assert.EnterMultipleScope()) { @@ -176,7 +176,7 @@ public sealed class StunBatonTests : InteractionTest await RunSeconds(2); // Weapon cooldown. await AttemptLightAttackMiss(); - var batonNewCharge = _battery.GetCharge(sBaton); + var batonNewCharge = _battery.GetCharge(sBaton).Charge; Assert.That(batonNewCharge, Is.EqualTo(batonIntialCharge), "Stun baton lost charge when missing an attack."); } } diff --git a/Content.Shared/Chemistry/EntitySystems/RiggableSystem.cs b/Content.Shared/Chemistry/EntitySystems/RiggableSystem.cs index 4c44bf549a..50dcd81df5 100644 --- a/Content.Shared/Chemistry/EntitySystems/RiggableSystem.cs +++ b/Content.Shared/Chemistry/EntitySystems/RiggableSystem.cs @@ -36,8 +36,7 @@ public sealed partial class RiggableSystem : EntitySystem if (!entity.Comp.IsRigged) return; - var charge = _battery.GetCharge(entity.Owner); - Explode(entity, charge, args.User); + Explode(entity, _battery.GetCharge(entity.Owner).Charge, args.User); args.Handled = true; } @@ -60,7 +59,7 @@ public sealed partial class RiggableSystem : EntitySystem if (!TryComp(entity, out var toggleComp) || !toggleComp.Activated) return; - Explode(entity, _battery.GetCharge(entity.Owner)); + Explode(entity, _battery.GetCharge(entity.Owner).Charge); } [SubscribeLocalEvent] @@ -85,7 +84,7 @@ public sealed partial class RiggableSystem : EntitySystem if (!args.Activated || !entity.Comp.IsRigged) return; - Explode(entity, _battery.GetCharge(entity.Owner), args.User); + Explode(entity, _battery.GetCharge(entity.Owner).Charge, args.User); } public void Explode(Entity entity, float charge, EntityUid? cause = null) diff --git a/Content.Shared/Damage/Systems/SharedStaminaSystem.cs b/Content.Shared/Damage/Systems/SharedStaminaSystem.cs index cdc9497be3..e5cd529e77 100644 --- a/Content.Shared/Damage/Systems/SharedStaminaSystem.cs +++ b/Content.Shared/Damage/Systems/SharedStaminaSystem.cs @@ -245,7 +245,7 @@ public abstract partial class SharedStaminaSystem : EntitySystem if (args.Cancelled) return; - if (_battery.GetCharge(ent.Owner) >= ent.Comp.RequiredCharge) + if (_battery.GetCharge(ent.Owner).Charge >= ent.Comp.RequiredCharge) return; args.Cancelled = true; diff --git a/Content.Shared/EntityEffects/Effects/Damage/StaminaDamageEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/Damage/StaminaDamageEntityEffectSystem.cs new file mode 100644 index 0000000000..4bccf33610 --- /dev/null +++ b/Content.Shared/EntityEffects/Effects/Damage/StaminaDamageEntityEffectSystem.cs @@ -0,0 +1,24 @@ +using Content.Shared.Damage.Components; +using Content.Shared.Damage.Systems; + +namespace Content.Shared.EntityEffects.Effects.Damage; + +public sealed partial class StaminaDamageEntityEffectSystem : EntityEffectSystem +{ + [Dependency] private SharedStaminaSystem _stamina = default!; + + protected override void Effect(Entity entity, ref EntityEffectEvent args) + { + _stamina.TakeStaminaDamage(entity, args.Scale * args.Effect.Damage, entity.Comp, args.User); + } +} + +public sealed partial class StaminaDamage : EntityEffectBase +{ + /// + /// The amount of stamina damage we're dealing. + /// + [DataField(required: true)] + public float Damage; +} + diff --git a/Content.Shared/EntityEffects/Effects/StatusEffects/MovementSpeedModifierEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/StatusEffects/MovementSpeedModifierEntityEffectSystem.cs index 605c0ff727..36c461c68a 100644 --- a/Content.Shared/EntityEffects/Effects/StatusEffects/MovementSpeedModifierEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/StatusEffects/MovementSpeedModifierEntityEffectSystem.cs @@ -17,9 +17,11 @@ public sealed partial class MovementSpeedModifierEntityEffectSystem : EntityEffe protected override void Effect(Entity entity, ref EntityEffectEvent args) { + var duration = args.Effect.Time * args.Scale; var proto = args.Effect.EffectProto; var sprintMod = args.Effect.SprintSpeedModifier; var walkMod = args.Effect.WalkSpeedModifier; + var delay = args.Effect.Delay; switch (args.Effect.Type) { @@ -27,35 +29,38 @@ public sealed partial class MovementSpeedModifierEntityEffectSystem : EntityEffe _movementModStatus.TryUpdateMovementSpeedModDuration( entity, proto, - args.Effect.Time * args.Scale, + duration, sprintMod, - walkMod); + walkMod, + delay); break; case StatusEffectMetabolismType.Add: - if (args.Effect.Time != null) + if (duration != null) { _movementModStatus.TryAddMovementSpeedModDuration( entity, proto, - args.Effect.Time.Value * args.Scale, + duration.Value, sprintMod, - walkMod); + walkMod, + delay); } else { _movementModStatus.TryUpdateMovementSpeedModDuration( entity, proto, - args.Effect.Time * args.Scale, + duration, sprintMod, - walkMod); + walkMod, + delay); } break; case StatusEffectMetabolismType.Remove: - _status.TryRemoveTime(entity, args.Effect.EffectProto, args.Effect.Time * args.Scale); + _status.TryRemoveTime(entity, args.Effect.EffectProto, duration); break; case StatusEffectMetabolismType.Set: - _status.TrySetStatusEffectDuration(entity, proto, args.Effect.Time * args.Scale); + _status.TrySetStatusEffectDuration(entity, proto, duration, delay); break; } } diff --git a/Content.Shared/Item/ItemToggle/ItemToggleSystem.cs b/Content.Shared/Item/ItemToggle/ItemToggleSystem.cs index 7be647116e..76a35ffa62 100644 --- a/Content.Shared/Item/ItemToggle/ItemToggleSystem.cs +++ b/Content.Shared/Item/ItemToggle/ItemToggleSystem.cs @@ -384,7 +384,7 @@ public sealed partial class ItemToggleSystem : EntitySystem if (args.Cancelled) return; - if (_battery.GetCharge(ent.Owner) >= ent.Comp.RequiredCharge) + if (_battery.GetCharge(ent.Owner).Charge >= ent.Comp.RequiredCharge) return; args.Popup = Loc.GetString(ent.Comp.FailPopup); @@ -394,7 +394,7 @@ public sealed partial class ItemToggleSystem : EntitySystem [SubscribeLocalEvent] private void OnChargeChanged(Entity ent, ref ChargeChangedEvent args) { - if (_battery.GetCharge(ent.Owner) >= ent.Comp.RequiredCharge) + if (_battery.GetCharge(ent.Owner).Charge >= ent.Comp.RequiredCharge) return; TryDeactivate(ent.Owner); diff --git a/Content.Shared/Movement/Systems/MovementModStatusSystem.cs b/Content.Shared/Movement/Systems/MovementModStatusSystem.cs index 30702b26a2..ef60e6f82e 100644 --- a/Content.Shared/Movement/Systems/MovementModStatusSystem.cs +++ b/Content.Shared/Movement/Systems/MovementModStatusSystem.cs @@ -108,16 +108,17 @@ public sealed partial class MovementModStatusSystem : EntitySystem /// Duration of speed modifying effect. /// Multiplier by which walking speed should be modified. /// Multiplier by which sprinting speed should be modified. + /// How long should this effect be delayed? /// True if entity have slowdown effect applied now or previously and duration was modified. public bool TryAddMovementSpeedModDuration( EntityUid uid, EntProtoId effectProtoId, TimeSpan duration, float walkSpeedModifier, - float sprintSpeedModifier - ) + float sprintSpeedModifier, + TimeSpan? delay = null) { - return _status.TryAddStatusEffectDuration(uid, effectProtoId, out var status, duration) + return _status.TryAddStatusEffectDuration(uid, effectProtoId, out var status, duration, delay) && TryUpdateMovementStatus(uid, status!.Value, walkSpeedModifier, sprintSpeedModifier); } @@ -129,13 +130,14 @@ public sealed partial class MovementModStatusSystem : EntitySystem /// Slowdown effect to be used. /// Duration of speed modifying effect. /// Multiplier by which walking/sprinting speed should be modified. + /// How long should this effect be delayed? /// True if entity have slowdown effect applied now or previously and duration was modified. public bool TryUpdateMovementSpeedModDuration( EntityUid uid, EntProtoId effectProtoId, TimeSpan duration, - float speedModifier - ) + float speedModifier, + TimeSpan? delay = null) { return TryUpdateMovementSpeedModDuration(uid, effectProtoId, duration, speedModifier, speedModifier); } @@ -149,14 +151,15 @@ public sealed partial class MovementModStatusSystem : EntitySystem /// Duration of speed modifying effect. /// Multiplier by which walking speed should be modified. /// Multiplier by which sprinting speed should be modified. + /// How long should this effect be delayed? /// True if entity have slowdown effect applied now or previously and duration was modified. public bool TryUpdateMovementSpeedModDuration( EntityUid uid, EntProtoId effectProtoId, TimeSpan? duration, float walkSpeedModifier, - float sprintSpeedModifier - ) + float sprintSpeedModifier, + TimeSpan? delay = null) { return _status.TryUpdateStatusEffectDuration(uid, effectProtoId, out var status, duration) && TryUpdateMovementStatus(uid, status!.Value, walkSpeedModifier, sprintSpeedModifier); @@ -170,11 +173,12 @@ public sealed partial class MovementModStatusSystem : EntitySystem /// Status effect entity whose modifiers we are updating /// New walkSpeedModifer we're applying /// New sprintSpeedModifier we're applying + /// How long should this effect be delayed? public bool TryUpdateMovementStatus(EntityUid uid, Entity status, float walkSpeedModifier, - float sprintSpeedModifier - ) + float sprintSpeedModifier, + TimeSpan? delay = null) { if (!Resolve(status, ref status.Comp)) return false; diff --git a/Content.Shared/Power/EntitySystems/SharedBatterySystem.API.cs b/Content.Shared/Power/EntitySystems/SharedBatterySystem.API.cs index d51023f3eb..168af3ee6d 100644 --- a/Content.Shared/Power/EntitySystems/SharedBatterySystem.API.cs +++ b/Content.Shared/Power/EntitySystems/SharedBatterySystem.API.cs @@ -10,6 +10,25 @@ namespace Content.Shared.Power.EntitySystems; /// public abstract partial class SharedBatterySystem { + /// + /// Changes the charge of this entity by raising the + /// in hopes of finding a battery which has charge. + /// Returns the amount of charge removed. + /// + /// The entity we want to take charge from. + /// The amount of charge we're taking. + [PublicAPI] + public float ChangeCharge(EntityUid gun, float amount) + { + if (amount == 0) + return 0f; + + // Take charge from either the BatteryComponent or PowerCellSlotComponent. + var ev = new ChangeChargeEvent(amount); + RaiseLocalEvent(gun, ref ev); + return ev.Amount - ev.ResidualValue; + } + /// /// Changes the battery's charge by the given amount /// and resets the self-recharge cooldown if it exists. @@ -159,10 +178,24 @@ public abstract partial class SharedBatterySystem RaiseLocalEvent(ent, ref changedEv); } + /// + /// Gets the total battery charge from an entity that is available, including the min and max. + /// + /// Entity we want the total charge from. + /// a tuple of the current charge, and maximum charge + [PublicAPI] + public (float Charge, float MaxCharge) GetCharge(EntityUid ent) + { + var ev = new GetChargeEvent(); + RaiseLocalEvent(ent, ref ev); + return (ev.CurrentCharge, ev.MaxCharge); + } + /// /// Gets the battery's current charge. /// [PublicAPI] + [Obsolete($"Use Tuple version that raises {nameof(GetChargeEvent)} instead.")] public float GetCharge(Entity ent) { if (!Resolve(ent, ref ent.Comp, false)) diff --git a/Content.Shared/Weapons/Ranged/Components/BallisticAmmoSelfRefillerComponent.cs b/Content.Shared/Weapons/Ranged/Components/BallisticAmmoSelfRefillerComponent.cs index acaeca89dc..eb11014ea4 100644 --- a/Content.Shared/Weapons/Ranged/Components/BallisticAmmoSelfRefillerComponent.cs +++ b/Content.Shared/Weapons/Ranged/Components/BallisticAmmoSelfRefillerComponent.cs @@ -1,5 +1,6 @@ using Content.Shared.Power.Components; using Content.Shared.Weapons.Ranged.Systems; +using Robust.Shared.Audio; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; @@ -53,9 +54,21 @@ public sealed partial class BallisticAmmoSelfRefillerComponent : Component [DataField, AutoNetworkedField] public bool AffectedByEmp = false; + /// + /// How much power in watts should this device consume each time it recharges ammo? + /// + [DataField, AutoNetworkedField] + public float PowerConsumption; + /// /// When the next auto refill should occur. This is just implementation state. /// [DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), AutoNetworkedField, AutoPausedField] public TimeSpan NextAutoRefill = TimeSpan.Zero; + + /// + /// Optional sound that plays when this item successfully recharges a piece of ammo. + /// + [DataField, AutoNetworkedField] + public SoundSpecifier? RechargeSound; } diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs index b31b967ca8..724d40d94a 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs @@ -3,6 +3,7 @@ using Content.Shared.Emp; using Content.Shared.Examine; using Content.Shared.Interaction; using Content.Shared.Interaction.Events; +using Content.Shared.Power; using Content.Shared.Stacks; using Content.Shared.Verbs; using Content.Shared.Weapons.Ranged.Components; @@ -416,6 +417,9 @@ public abstract partial class SharedGunSystem if (!refiller.AutoRefill || IsFull(entity)) return; + if (refiller.PowerConsumption > 0 && _battery.GetCharge(entity).Charge < refiller.PowerConsumption) + return; + if (refiller.AmmoProto is not { } refillerAmmoProto) { // No ammo proto on the refiller, so just increment the unspawned count on the provider @@ -438,14 +442,19 @@ public abstract partial class SharedGunSystem { // Can't use unspawned ammo, so spawn an entity and try to insert it. var ammoEntity = PredictedSpawnAttachedTo(refiller.AmmoProto, Transform(entity).Coordinates); - var insertSucceeded = TryBallisticInsert(entity, ammoEntity, null, suppressInsertionSound: true); - if (!insertSucceeded) + if (!TryBallisticInsert(entity, ammoEntity, null, suppressInsertionSound: true)) { PredictedQueueDel(ammoEntity); Log.Error( $"Failed to insert ammo {ammoEntity} into non-full {entity}. This is a configuration error. Is the {nameof(BallisticAmmoSelfRefillerComponent)}'s {nameof(BallisticAmmoSelfRefillerComponent.AmmoProto)} incorrect for the {nameof(BallisticAmmoProviderComponent)}'s {nameof(BallisticAmmoProviderComponent.Whitelist)}?"); + return; } } + + Audio.PlayPredicted(entity.Comp2.RechargeSound, entity, entity); + + if (refiller.PowerConsumption > 0) + TakeCharge(entity, refiller.PowerConsumption); } } diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Battery.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Battery.cs index 63b77cb284..789f8fb788 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Battery.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Battery.cs @@ -3,6 +3,7 @@ using Content.Shared.Damage.Events; using Content.Shared.Examine; using Content.Shared.Projectiles; using Content.Shared.Power; +using Content.Shared.Power.EntitySystems; using Content.Shared.PowerCell; using Content.Shared.Weapons.Hitscan.Components; using Content.Shared.Weapons.Ranged.Components; @@ -14,6 +15,8 @@ namespace Content.Shared.Weapons.Ranged.Systems; public abstract partial class SharedGunSystem { + [Dependency] private SharedBatterySystem _battery = default!; + protected virtual void InitializeBattery() { SubscribeLocalEvent(OnBatteryStartup); @@ -80,14 +83,18 @@ public abstract partial class SharedGunSystem args.Capacity = ent.Comp.Capacity; } + /// + public void TakeCharge(Entity ent, int shots = 1) + { + TakeCharge(ent, ent.Comp.FireCost, shots); + } + /// /// Use up the required amount of battery charge for firing. /// - public void TakeCharge(Entity ent, int shots = 1) + public void TakeCharge(EntityUid gun, float fireCost, int shots = 1) { - // Take charge from either the BatteryComponent or PowerCellSlotComponent. - var ev = new ChangeChargeEvent(-ent.Comp.FireCost * shots); - RaiseLocalEvent(ent, ref ev); + _battery.ChangeCharge(gun, -fireCost * shots); // UpdateShots is already called by the resulting ChargeChangedEvent } @@ -181,10 +188,9 @@ public abstract partial class SharedGunSystem /// public (int, int) GetShots(Entity ent) { - var ev = new GetChargeEvent(); - RaiseLocalEvent(ent, ref ev); - var currentShots = (int)(ev.CurrentCharge / ent.Comp.FireCost); - var maxShots = (int)(ev.MaxCharge / ent.Comp.FireCost); + var charge = _battery.GetCharge(ent); + var currentShots = (int)(charge.Charge / ent.Comp.FireCost); + var maxShots = (int)(charge.MaxCharge / ent.Comp.FireCost); return (currentShots, maxShots); } diff --git a/Resources/Locale/en-US/reagents/meta/toxins.ftl b/Resources/Locale/en-US/reagents/meta/toxins.ftl index da65b8c2a9..334fd66762 100644 --- a/Resources/Locale/en-US/reagents/meta/toxins.ftl +++ b/Resources/Locale/en-US/reagents/meta/toxins.ftl @@ -1,5 +1,5 @@ reagent-name-toxin = toxin -reagent-desc-toxin = An unsurprisingly toxic chemical. Available at an emagged chem dispenser. +reagent-desc-toxin = An unsurprisingly toxic chemical. reagent-name-carpotoxin = carpotoxin reagent-desc-carpotoxin = A highly toxic reagent found in space carps. Causes a painful burning sensation. @@ -93,3 +93,6 @@ reagent-desc-hivarol = A toxin that attacks specific types of cells in the body, reagent-name-phosphoric-acid = phosphoric acid reagent-desc-phosphoric-acid = An acidic chemical often used in agriculture. Keep away from your eyes. + +reagent-name-hardlight-toxin = hardlight toxin +reagent-desc-hardlight-toxin = A highly advanced toxin which inundates a victim's nervous system with ionizing radiation when metabolized. diff --git a/Resources/Prototypes/Catalog/UplinkCatalog/weaponry.yml b/Resources/Prototypes/Catalog/UplinkCatalog/weaponry.yml index 333f967ec9..5f0c55f7dc 100644 --- a/Resources/Prototypes/Catalog/UplinkCatalog/weaponry.yml +++ b/Resources/Prototypes/Catalog/UplinkCatalog/weaponry.yml @@ -70,21 +70,11 @@ id: UplinkEnergyCrossbow name: uplink-energycrossbow-name description: uplink-energycrossbow-desc - discountCategory: rareDiscounts - discountDownTo: - Telecrystal: 3 productEntity: WeaponEnergyCrossbow cost: Telecrystal: 5 categories: - UplinkWeaponry - conditions: - - !type:StoreWhitelistCondition - blacklist: - tags: - - NukeOpsUplink - - !type:ListingLimitedStockCondition - stock: 1 - type: listing id: UplinkThrowingKnivesKit diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/energy_crossbow.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/energy_crossbow.yml index 40b7f7adf8..715aedcdbd 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/energy_crossbow.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/energy_crossbow.yml @@ -1,13 +1,14 @@ - type: entity abstract: true - parent: BaseItem + parent: [ BaseWeaponBatterySmallNoAmmoCounter ] id: WeaponEnergyCrossbowBase components: - type: Sprite sprite: Objects/Weapons/Guns/Basic/energy_crossbow.rsi - type: Item sprite: Objects/Weapons/Guns/Basic/energy_crossbow.rsi - size: Small + size: Normal + shape: - type: Gun fireRate: 5 #high firerate innately bottlenecked by ammo regeneration speed. selectedMode: SemiAuto @@ -17,22 +18,36 @@ - SemiAuto soundGunshot: path: /Audio/Weapons/Guns/Gunshots/energycrossbow_shoot.ogg - - type: AmmoCounter - type: Appearance + - type: Battery + maxCharge: 960 + startingCharge: 960 + - type: BatterySelfRecharger + autoRechargeRate: 5 + autoRechargePauseTime: 5 # Same time it takes to make a new bullet - type: GenericVisualizer visuals: enum.AmmoVisuals.HasAmmo: empty-icon: True: { visible: False } False: { visible: True } - - type: RechargeBasicEntityAmmo - rechargeCooldown: 5 #2 seconds of KD, should always have CD > KD + - type: EmpResistance + strengthMultiplier: 0 + durationMultiplier: 0 + - type: BallisticAmmoSelfRefiller + firingPausesAutoRefill: true + autoRefillPauseDuration: 5 #2 seconds of KD, should always have CD > KD + autoRefillRate: 0 + powerConsumption: 320 rechargeSound: path: /Audio/Weapons/Guns/MagIn/energycrossbow_reload.ogg - - type: BasicEntityAmmoProvider + - type: BallisticAmmoProvider proto: EnergyCrossbowBolt capacity: 1 - count: 1 + cycleable: false + - type: ContainerContainer + containers: + ballistic-ammo: !type:Container - type: entity parent: [WeaponEnergyCrossbowBase, BaseSyndicateContraband] diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml index f67a7b903c..738e053cbc 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml @@ -107,9 +107,9 @@ cell_slot: !type:ContainerSlot - type: entity - id: BaseWeaponBatterySmall - parent: BaseWeaponBattery abstract: true + parent: BaseWeaponBatteryNoAmmoCounter + id: BaseWeaponBatterySmallNoAmmoCounter components: - type: Item size: Small @@ -126,6 +126,13 @@ - Belt - suitStorage +- type: entity + abstract: true + parent: BaseWeaponBatterySmallNoAmmoCounter + id: BaseWeaponBatterySmall + components: + - type: AmmoCounter + - type: entity id: BaseWeaponPowerCellSmall parent: BaseWeaponPowerCell diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Energy/stun.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Energy/stun.yml index dd15641c9b..b5f411c5ea 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Energy/stun.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Energy/stun.yml @@ -245,7 +245,7 @@ # Energy crossbow - type: entity - parent: [ SolutionAmmo, BaseBullet ] + parent: [SolutionAmmo, SolutionToolVeryTiny, BaseBullet] id: EnergyCrossbowBolt categories: [ HideSpawnMenu ] name: energy bolt @@ -264,22 +264,12 @@ - type: Projectile damage: types: - Piercing: 2 - - type: StunOnCollide #somewhat mirror to taser stats, meant to be tot 'sidegrade' - stunAmount: 0 - knockdownAmount: 2.5 - slowdownAmount: 2.5 - walkSpeedModifier: 0.2 - sprintSpeedModifier: 0.2 - drop: false - - type: StaminaDamageOnCollide #additional stam damage to make repeated pushups less of a viable counter - damage: 45 + Radiation: 1 - type: Solution solution: - maxVol: 1.5 reagents: - - ReagentId: Toxin - Quantity: 1.5 + - ReagentId: HardlightToxin + Quantity: 7.5 - type: SolutionInjectOnProjectileHit - transferAmount: 1.5 + transferAmount: 7.5 solution: ammo diff --git a/Resources/Prototypes/Entities/StatusEffects/movement.yml b/Resources/Prototypes/Entities/StatusEffects/movement.yml index ec5f220fdc..27bffc440e 100644 --- a/Resources/Prototypes/Entities/StatusEffects/movement.yml +++ b/Resources/Prototypes/Entities/StatusEffects/movement.yml @@ -81,3 +81,12 @@ - type: StunnedStatusEffect - type: ExaminableStatusEffect messageId: status-effect-examine-stunned + +- type: entity + parent: MobStatusEffectDebuff + id: StatusEffectKnockdown + name: knockdown + components: + - type: KnockdownStatusEffect + crawl: true + drop: false diff --git a/Resources/Prototypes/Reagents/toxins.yml b/Resources/Prototypes/Reagents/toxins.yml index 90e6c11518..8bfb5c47bc 100644 --- a/Resources/Prototypes/Reagents/toxins.yml +++ b/Resources/Prototypes/Reagents/toxins.yml @@ -858,3 +858,33 @@ - !type:Emote emote: Scream probability: 0.1 + +- type: reagent + id: HardlightToxin + name: reagent-name-hardlight-toxin + group: Toxins + desc: reagent-desc-hardlight-toxin + evaporationSpeed: 100 # Dissolves basically instantly if you *somehow* spill it + color: "#00FF00" + physicalDesc: reagent-physical-desc-glowing + contrabandSeverity: Syndicate + metabolisms: + Bloodstream: # TODO Make this a metabolite!!! + metabolismRate: 2.5 # It's basically pure energy so it metabolizes very fast + effects: + - !type:HealthChange + damage: + types: + Radiation: 1 + - !type:StaminaDamage + damage: 10 + - !type:ModifyStatusEffect + effectProto: StatusEffectKnockdown + time: 1.5 + delay: 2.5 + - !type:MovementSpeedModifier + effectProto: TaserSlowdownStatusEffect + time: 1.5 + delay: 2.5 + walkSpeedModifier: 0.5 + sprintSpeedModifier: 0.5 From 9eccf139b04c4c8710a1b766e218d866fc2c4e33 Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Sun, 6 Sep 2026 00:14:56 +0000 Subject: [PATCH 077/197] Revert "Remove energy crossbow from nukie uplink" (#45877) Revert "Remove energy crossbow from nukie uplink (#45870)" This reverts commit a4fc7d3522d143fa86e2aa450006f23292f8dee9. Co-authored-by: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> From 1de61e0ddec984da13a9d2de103a8ef24bc418e1 Mon Sep 17 00:00:00 2001 From: ProPeperos <61984624+ProPeperos@users.noreply.github.com> Date: Sun, 6 Sep 2026 01:04:23 +0000 Subject: [PATCH 078/197] [Map] Nukie planet - roof test (#45867) * Nukie planet map roof test * uid fix --- Resources/Maps/Nonstations/nukieplanet.yml | 354 ++++++++++----------- 1 file changed, 175 insertions(+), 179 deletions(-) diff --git a/Resources/Maps/Nonstations/nukieplanet.yml b/Resources/Maps/Nonstations/nukieplanet.yml index 557ac0bffd..cfe1a081c7 100644 --- a/Resources/Maps/Nonstations/nukieplanet.yml +++ b/Resources/Maps/Nonstations/nukieplanet.yml @@ -4,26 +4,26 @@ meta: engineVersion: 289.0.0 forkId: "" forkVersion: "" - time: 08/22/2026 18:07:05 - entityCount: 2565 + time: 09/05/2026 14:50:38 + entityCount: 2549 maps: - 1295 grids: - 104 orphans: [] nullspace: +- 1759 +- 2257 +- 2291 +- 2327 - 2463 - 2464 -- 2540 -- 2541 -- 2542 -- 2543 -- 2544 -- 2545 -- 2546 -- 2547 -- 2548 -- 2549 +- 2525 +- 2527 +- 2528 +- 2529 +- 2530 +- 2531 tilemap: 0: Space 14: FloorBar @@ -50,6 +50,8 @@ entities: name: Syndicate Outpost - type: Transform parent: 1295 + - type: MapLight + ambientLightColor: '#CCCCCCFF' - type: MapGrid chunks: -1,-1: @@ -58,7 +60,7 @@ entities: version: 7 0,-1: ind: 0,-1 - tiles: bgAAAAAAAG4AAAAAAAB8AAAAAAAAbgAAAAAAAG4AAAAAAABuAAAAAAAAbgAAAAAAAG4AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAE8AAAAAAABuAAAAAAAAbgAAAAAAAG4AAAAAAABuAAAAAAAAbgAAAAAAAG4AAAAAAABuAAAAAAAAfAAAAAAAAFYAAAAAAAAdAAAAAAAAVgAAAAAAAB0AAAAAAABWAAAAAAAAHQAAAAAAAB0AAAAAAABuAAAAAAAAbgAAAAAAAHwAAAAAAABuAAAAAAAAbgAAAAAAAG4AAAAAAABuAAAAAAAAbgAAAAAAAHwAAAAAAABWAAAAAAAAHQAAAAAAAFYAAAAAAAAdAAAAAAAAVgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAbgAAAAAAAG4AAAAAAAB8AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAG4AAAAAAABuAAAAAAAAfAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAABZAAAAAAAAWQAAAAABAG4AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABuAAAAAAAAbgAAAAAAAHwAAAAAAAAdAAAAAAAAHQAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAB8AAAAAAAAHQAAAAAAAHwAAAAAAAB8AAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAFYAAAAAAABWAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAfAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB8AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAAOAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAFYAAAAAAAAOAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAADgAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAABWAAAAAAAADgAAAAAAAE8AAAAAAAAsAAAAAAAADgAAAAAAAA4AAAAAAAAdAAAAAAAAHQAAAAAAAHwAAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAAVgAAAAAAAA4AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAATwAAAAAAAE8AAAAAAAAsAAAAAAAATwAAAAAAAE8AAAAAAAB8AAAAAAAAfAAAAAAAAA== + tiles: bgAAAAAAAG4AAAAAAAB8AAAAAAAAbgAAAAAAAG4AAAAAAABuAAAAAAAAbgAAAAAAAG4AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAfAAAAAAAAE8AAAAAAABuAAAAAAAAbgAAAAAAAG4AAAAAAABuAAAAAAAAbgAAAAAAAG4AAAAAAABuAAAAAAAAfAAAAAAAAFYAAAAAAAAdAAAAAAAAVgAAAAAAAB0AAAAAAABWAAAAAAAAHQAAAAAAAB0AAAAAAABuAAAAAAAAbgAAAAAAAHwAAAAAAABuAAAAAAAAbgAAAAAAAG4AAAAAAABuAAAAAAAAbgAAAAAAAHwAAAAAAABWAAAAAAAAHQAAAAAAAFYAAAAAAAAdAAAAAAAAVgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB8AAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAbgAAAAAAAG4AAAAAAAB8AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAG4AAAAAAABuAAAAAAAAfAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAABZAAAAAAAAWQAAAAABAG4AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABuAAAAAAAAbgAAAAAAAHwAAAAAAAAdAAAAAAAAHQAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAB8AAAAAAAAHQAAAAAAAHwAAAAAAAB8AAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAFYAAAAAAABWAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAfAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB8AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAAOAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAFYAAAAAAAAOAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAADgAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAABWAAAAAAAADgAAAAAAAE8AAAAAAAAsAAAAAAAADgAAAAAAAA4AAAAAAAAdAAAAAAAAHQAAAAAAAHwAAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAAVgAAAAAAAA4AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAATwAAAAAAAE8AAAAAAAAsAAAAAAAATwAAAAAAAE8AAAAAAAB8AAAAAAAAfAAAAAAAAA== version: 7 0,0: ind: 0,0 @@ -66,15 +68,15 @@ entities: version: 7 -1,0: ind: -1,0 - tiles: ewAAAAABAHsAAAAAAAB7AAAAAAIAewAAAAABAHsAAAAAAgB7AAAAAAAAewAAAAACAE8AAAAAAABPAAAAAAAATwAAAAAAAFkAAAAABQBZAAAAAAUAWQAAAAAEAFkAAAAABAB8AAAAAAAAfAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAACAHsAAAAAAAB7AAAAAAIAewAAAAAAAHsAAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABZAAAAAAIAWQAAAAABAFkAAAAABQBZAAAAAAIAWQAAAAAAAHwAAAAAAAB7AAAAAAEAewAAAAAAAHsAAAAAAQB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAATwAAAAAAAE8AAAAAAABZAAAAAAQAWQAAAAADAFkAAAAABQBZAAAAAAEAWQAAAAACAFkAAAAABABZAAAAAAEAewAAAAAAAHsAAAAAAQB7AAAAAAIAewAAAAAAAHsAAAAAAQB7AAAAAAEAewAAAAAAAE8AAAAAAABPAAAAAAAAWQAAAAABAFkAAAAAAwBZAAAAAAAAWQAAAAADAFkAAAAABABZAAAAAAAAWQAAAAAEAHsAAAAAAAB7AAAAAAEAewAAAAAAAHsAAAAAAAB7AAAAAAIAewAAAAABAHsAAAAAAgBPAAAAAAAAWQAAAAAEAFkAAAAABQBZAAAAAAIAWQAAAAAFAFkAAAAAAgBZAAAAAAMAWQAAAAAAAFkAAAAABABZAAAAAAQAHQAAAAAAAB0AAAAAAAAdAAAAAAAAfAAAAAAAAB0AAAAAAAAdAAAAAAAAWQAAAAADAFkAAAAAAwBZAAAAAAAAWQAAAAACAFkAAAAAAQBZAAAAAAMAWQAAAAAEAFkAAAAABABZAAAAAAUAfAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAFkAAAAAAwBZAAAAAAIAWQAAAAAFAFkAAAAABABZAAAAAAEAWQAAAAACAFkAAAAAAQBZAAAAAAAAWQAAAAACAHwAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB8AAAAAAAAHQAAAAAAAB0AAAAAAABZAAAAAAIAWQAAAAACAFkAAAAAAgBZAAAAAAMAWQAAAAADAFkAAAAAAABZAAAAAAUAWQAAAAABAFkAAAAAAABPAAAAAAAAHQAAAAAAAB0AAAAAAAB8AAAAAAAAfAAAAAAAAE8AAAAAAABPAAAAAAAAWQAAAAACAFkAAAAAAgBZAAAAAAQAWQAAAAABAFkAAAAAAgBZAAAAAAUAWQAAAAACAFkAAAAAAABZAAAAAAMATwAAAAAAAE8AAAAAAABPAAAAAAAAfAAAAAAAAHwAAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAAA7AAAAAAEAWQAAAAAFAFkAAAAABQBZAAAAAAIAWQAAAAADAFkAAAAABABZAAAAAAIAWQAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAOwAAAAABAFkAAAAAAQBZAAAAAAQAWQAAAAACAFkAAAAAAgBZAAAAAAQAWQAAAAABAFkAAAAABQBZAAAAAAQAWQAAAAAAAFkAAAAAAgBZAAAAAAQAWQAAAAAEAFkAAAAAAwBZAAAAAAEATwAAAAAAADsAAAAAAwA7AAAAAAIAOwAAAAABAFkAAAAABQBZAAAAAAMAWQAAAAADAFkAAAAABABZAAAAAAIAWQAAAAADAFkAAAAABABZAAAAAAEAWQAAAAABAFkAAAAAAQBZAAAAAAMAWQAAAAAEAE8AAAAAAABZAAAAAAAAWQAAAAAAADsAAAAAAwA7AAAAAAAAOwAAAAACAFkAAAAABQBZAAAAAAEAWQAAAAABAFkAAAAABABZAAAAAAEAWQAAAAAEAFkAAAAAAwBZAAAAAAMAWQAAAAACAFkAAAAAAABPAAAAAAAAWQAAAAABAFkAAAAABQA7AAAAAAAAOwAAAAAAAFkAAAAAAwBZAAAAAAMAWQAAAAAEAFkAAAAAAABZAAAAAAAAWQAAAAAFAFkAAAAABABZAAAAAAEAWQAAAAADAFkAAAAABABZAAAAAAIATwAAAAAAAFkAAAAABQBZAAAAAAQAWQAAAAAAAFkAAAAAAgBZAAAAAAUAWQAAAAAFAFkAAAAABQBZAAAAAAUAWQAAAAADAFkAAAAAAQBZAAAAAAIAWQAAAAACAFkAAAAAAwBZAAAAAAMAWQAAAAAEAFkAAAAAAQBZAAAAAAQAWQAAAAAFAFkAAAAAAQBZAAAAAAMAWQAAAAABAFkAAAAAAgBZAAAAAAQAWQAAAAAEAA== + tiles: ewAAAAABAHsAAAAAAAB7AAAAAAIAewAAAAABAHsAAAAAAgB7AAAAAAAAewAAAAACAE8AAAAAAABPAAAAAAAATwAAAAAAAFkAAAAABQBZAAAAAAUAWQAAAAAEAFkAAAAABAB8AAAAAAAAfAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAACAHsAAAAAAAB7AAAAAAIAewAAAAAAAHsAAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABZAAAAAAIAWQAAAAABAFkAAAAABQBZAAAAAAIAWQAAAAAAAHwAAAAAAAB7AAAAAAEAewAAAAAAAHsAAAAAAQB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAATwAAAAAAAE8AAAAAAABZAAAAAAQAWQAAAAADAFkAAAAABQBZAAAAAAEAWQAAAAACAFkAAAAABABZAAAAAAEAewAAAAAAAHsAAAAAAQB7AAAAAAIAewAAAAAAAHsAAAAAAQB7AAAAAAEAewAAAAAAAE8AAAAAAABPAAAAAAAAWQAAAAABAFkAAAAAAwBZAAAAAAAAWQAAAAADAFkAAAAABABZAAAAAAAAWQAAAAAEAHsAAAAAAAB7AAAAAAEAewAAAAAAAHsAAAAAAAB7AAAAAAIAewAAAAABAHsAAAAAAgBPAAAAAAAAWQAAAAAEAFkAAAAABQBZAAAAAAIAWQAAAAAFAFkAAAAAAgBZAAAAAAMAWQAAAAAAAFkAAAAABABZAAAAAAQAHQAAAAAAAB0AAAAAAAAdAAAAAAAAfAAAAAAAAB0AAAAAAAAdAAAAAAAAWQAAAAADAFkAAAAAAwBZAAAAAAAAWQAAAAACAFkAAAAAAQBZAAAAAAMAWQAAAAAEAFkAAAAABABZAAAAAAUAfAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAFkAAAAAAwBZAAAAAAIAWQAAAAAFAFkAAAAABABZAAAAAAEAWQAAAAACAFkAAAAAAQBZAAAAAAAAWQAAAAACAHwAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB8AAAAAAAAHQAAAAAAAB0AAAAAAABZAAAAAAIAWQAAAAACAFkAAAAAAgBZAAAAAAMAWQAAAAADAFkAAAAAAABZAAAAAAUAWQAAAAABAFkAAAAAAABPAAAAAAAAHQAAAAAAAB0AAAAAAAB8AAAAAAAAfAAAAAAAAE8AAAAAAABPAAAAAAAAWQAAAAACAFkAAAAAAgBZAAAAAAQAWQAAAAABAFkAAAAAAgBZAAAAAAUAWQAAAAACAFkAAAAAAABZAAAAAAMATwAAAAAAAE8AAAAAAABPAAAAAAAAfAAAAAAAAHwAAAAAAABPAAAAAAAATwAAAAAAAFkAAAAAAAA7AAAAAAEAWQAAAAAFAFkAAAAABQBZAAAAAAIAWQAAAAADAFkAAAAABABZAAAAAAIAWQAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAATwAAAAAAAE8AAAAAAABZAAAAAAAAOwAAAAABAFkAAAAAAQBZAAAAAAQAWQAAAAACAFkAAAAAAgBZAAAAAAQAWQAAAAABAFkAAAAABQBZAAAAAAQAWQAAAAAAAFkAAAAAAgBZAAAAAAQAWQAAAAAEAFkAAAAAAwBZAAAAAAEAWQAAAAAAADsAAAAAAwA7AAAAAAIAOwAAAAABAFkAAAAABQBZAAAAAAMAWQAAAAADAFkAAAAABABZAAAAAAIAWQAAAAADAFkAAAAABABZAAAAAAEAWQAAAAABAFkAAAAAAQBZAAAAAAMAWQAAAAAEAFkAAAAAAABZAAAAAAAAWQAAAAAAADsAAAAAAwA7AAAAAAAAOwAAAAACAFkAAAAABQBZAAAAAAEAWQAAAAABAFkAAAAABABZAAAAAAEAWQAAAAAEAFkAAAAAAwBZAAAAAAMAWQAAAAACAFkAAAAAAABZAAAAAAAAWQAAAAAAAFkAAAAAAAA7AAAAAAAAOwAAAAAAAFkAAAAAAwBZAAAAAAMAWQAAAAAEAFkAAAAAAABZAAAAAAAAWQAAAAAFAFkAAAAABABZAAAAAAEAWQAAAAADAFkAAAAABABZAAAAAAIAWQAAAAAAAFkAAAAABQBZAAAAAAQAWQAAAAAAAFkAAAAAAgBZAAAAAAUAWQAAAAAFAFkAAAAABQBZAAAAAAUAWQAAAAADAFkAAAAAAQBZAAAAAAIAWQAAAAACAFkAAAAAAwBZAAAAAAMAWQAAAAAEAFkAAAAAAQBZAAAAAAQAWQAAAAAFAFkAAAAAAQBZAAAAAAMAWQAAAAABAFkAAAAAAgBZAAAAAAQAWQAAAAAEAA== version: 7 1,-1: ind: 1,-1 - tiles: HQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAfAAAAAAAAFkAAAAABQBZAAAAAAEAWQAAAAAEAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHwAAAAAAABZAAAAAAQAWQAAAAAEAFkAAAAAAwAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB8AAAAAAAAWQAAAAABAFkAAAAAAwBZAAAAAAQAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAFkAAAAAAQBZAAAAAAUAWQAAAAAEAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAABZAAAAAAQAWQAAAAAEAFkAAAAAAQBZAAAAAAIAWQAAAAAEAAAAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAWQAAAAACAFkAAAAAAwBPAAAAAAAAWQAAAAADAFkAAAAABAAAAAAAAAAAHQAAAAAAAB0AAAAAAABWAAAAAAAAVgAAAAAAAFYAAAAAAABWAAAAAAAAVgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAFkAAAAAAgBZAAAAAAEAWQAAAAADAFkAAAAAAQBZAAAAAAQAAAAAAAAAAHwAAAAAAAAdAAAAAAAAVgAAAAAAAFYAAAAAAABWAAAAAAAAVgAAAAAAAFYAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAABZAAAAAAQATwAAAAAAAFkAAAAABABZAAAAAAIAWQAAAAADAAAAAAAAAAAdAAAAAAAAHQAAAAAAAFYAAAAAAABWAAAAAAAAVgAAAAAAAFYAAAAAAABWAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAWQAAAAAFAE8AAAAAAABPAAAAAAAAWQAAAAAFAFkAAAAABABZAAAAAAMAfAAAAAAAAB0AAAAAAABWAAAAAAAAVgAAAAAAAFYAAAAAAABWAAAAAAAAVgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAFkAAAAAAQBPAAAAAAAAWQAAAAAFAFkAAAAAAgBZAAAAAAIAWQAAAAACAHwAAAAAAAAdAAAAAAAAVgAAAAAAAFYAAAAAAABWAAAAAAAAVgAAAAAAAFYAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAABZAAAAAAQAWQAAAAACAFkAAAAABABZAAAAAAIAWQAAAAACAFkAAAAAAQB8AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAWQAAAAAFAE8AAAAAAABZAAAAAAEAWQAAAAACAFkAAAAAAQBZAAAAAAQAfAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAFkAAAAAAABZAAAAAAMAWQAAAAAEAFkAAAAAAwBZAAAAAAMAWQAAAAABAHwAAAAAAAB8AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAABZAAAAAAQATwAAAAAAAE8AAAAAAABZAAAAAAQAWQAAAAABAFkAAAAAAwB8AAAAAAAAWQAAAAAFAFkAAAAABQBZAAAAAAAAWQAAAAADAFkAAAAAAQBZAAAAAAAAWQAAAAACAFkAAAAAAwBZAAAAAAEAWQAAAAAAAFkAAAAAAwBZAAAAAAQAWQAAAAABAFkAAAAABABZAAAAAAEAfAAAAAAAAFkAAAAABQBPAAAAAAAAWQAAAAADAFkAAAAAAABZAAAAAAAATwAAAAAAAFkAAAAAAgBZAAAAAAAAWQAAAAAEAE8AAAAAAABPAAAAAAAAWQAAAAAFAFkAAAAAAgBZAAAAAAAAWQAAAAABAA== + tiles: fAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAfAAAAAAAAFkAAAAABQBZAAAAAAEAWQAAAAAEAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHwAAAAAAABZAAAAAAQAWQAAAAAEAFkAAAAAAwAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB8AAAAAAAAWQAAAAABAFkAAAAAAwBZAAAAAAQAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAFkAAAAAAQBZAAAAAAUAWQAAAAAEAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAABZAAAAAAQAWQAAAAAEAFkAAAAAAQBZAAAAAAIAWQAAAAAEAAAAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAWQAAAAACAFkAAAAAAwBPAAAAAAAAWQAAAAADAFkAAAAABAAAAAAAAAAAHQAAAAAAAB0AAAAAAABWAAAAAAAAVgAAAAAAAFYAAAAAAABWAAAAAAAAVgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAFkAAAAAAgBZAAAAAAEAWQAAAAADAFkAAAAAAQBZAAAAAAQAAAAAAAAAAHwAAAAAAAAdAAAAAAAAVgAAAAAAAFYAAAAAAABWAAAAAAAAVgAAAAAAAFYAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAABZAAAAAAQATwAAAAAAAFkAAAAABABZAAAAAAIAWQAAAAADAAAAAAAAAAAdAAAAAAAAHQAAAAAAAFYAAAAAAABWAAAAAAAAVgAAAAAAAFYAAAAAAABWAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAWQAAAAAFAE8AAAAAAABPAAAAAAAAWQAAAAAFAFkAAAAABABZAAAAAAMAfAAAAAAAAB0AAAAAAABWAAAAAAAAVgAAAAAAAFYAAAAAAABWAAAAAAAAVgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAFkAAAAAAQBPAAAAAAAAWQAAAAAFAFkAAAAAAgBZAAAAAAIAWQAAAAACAHwAAAAAAAAdAAAAAAAAVgAAAAAAAFYAAAAAAABWAAAAAAAAVgAAAAAAAFYAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAABZAAAAAAQAWQAAAAACAFkAAAAABABZAAAAAAIAWQAAAAACAFkAAAAAAQB8AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAWQAAAAAFAE8AAAAAAABZAAAAAAEAWQAAAAACAFkAAAAAAQBZAAAAAAQAfAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAFkAAAAAAABZAAAAAAMAWQAAAAAEAFkAAAAAAwBZAAAAAAMAWQAAAAABAHwAAAAAAAB8AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAABZAAAAAAQATwAAAAAAAE8AAAAAAABZAAAAAAQAWQAAAAABAFkAAAAAAwB8AAAAAAAAWQAAAAAFAFkAAAAABQBZAAAAAAAAWQAAAAADAFkAAAAAAQBZAAAAAAAAWQAAAAACAFkAAAAAAwBZAAAAAAEAWQAAAAAAAFkAAAAAAwBZAAAAAAQAWQAAAAABAFkAAAAABABZAAAAAAEAfAAAAAAAAFkAAAAABQBPAAAAAAAAWQAAAAADAFkAAAAAAABZAAAAAAAATwAAAAAAAFkAAAAAAgBZAAAAAAAAWQAAAAAEAE8AAAAAAABPAAAAAAAAWQAAAAAFAFkAAAAAAgBZAAAAAAAAWQAAAAABAA== version: 7 0,-2: ind: 0,-2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABZAAAAAAMAWQAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAAFkAAAAAAgBZAAAAAAEAWQAAAAAFAFkAAAAAAQBZAAAAAAMAWQAAAAADAFkAAAAABQBZAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFkAAAAABABZAAAAAAIAWQAAAAAFAFkAAAAAAABZAAAAAAMAWQAAAAADAFkAAAAAAABZAAAAAAQAWQAAAAAEAFkAAAAAAQBZAAAAAAMAWQAAAAADAFkAAAAABABZAAAAAAAAWQAAAAAAAFkAAAAABQBZAAAAAAAAWQAAAAAAAFkAAAAAAwBZAAAAAAQAWQAAAAACAFkAAAAAAgBPAAAAAAAAWQAAAAACAFkAAAAAAwB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAWQAAAAADAFkAAAAABQBZAAAAAAUAWQAAAAADAFkAAAAAAgBZAAAAAAIAWQAAAAACAFkAAAAABQBZAAAAAAEAfAAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAfAAAAAAAAFkAAAAABQBZAAAAAAUAWQAAAAACAFkAAAAABABZAAAAAAMAWQAAAAACAFkAAAAAAABZAAAAAAAAWQAAAAADAHwAAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAHwAAAAAAABZAAAAAAUAWQAAAAAEAFkAAAAAAwBZAAAAAAEAWQAAAAABAFkAAAAAAwBZAAAAAAQAWQAAAAAAAFkAAAAAAgB8AAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAB8AAAAAAAAWQAAAAADAFkAAAAAAgBZAAAAAAMAWQAAAAAFAFkAAAAAAgBZAAAAAAEAWQAAAAAEAFkAAAAAAQBZAAAAAAAAfAAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAfAAAAAAAAFkAAAAAAgBZAAAAAAIAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAFkAAAAAAABuAAAAAAAAbgAAAAAAAG4AAAAAAABuAAAAAAAAbgAAAAAAAHwAAAAAAABqAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAAB8AAAAAAAAHQAAAAAAAB0AAAAAAABZAAAAAAQAbgAAAAAAAG4AAAAAAABuAAAAAAAAbgAAAAAAAG4AAAAAAABqAAAAAAAAagAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAfAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABZAAAAAAMAWQAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAAFkAAAAAAgBZAAAAAAEAWQAAAAAFAFkAAAAAAQBZAAAAAAMAWQAAAAADAFkAAAAABQBZAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFkAAAAABABZAAAAAAIAWQAAAAAFAFkAAAAAAABZAAAAAAMAWQAAAAADAFkAAAAAAABZAAAAAAQAWQAAAAAEAFkAAAAAAQBZAAAAAAMAWQAAAAADAFkAAAAABABZAAAAAAAAWQAAAAAAAFkAAAAABQBZAAAAAAAAWQAAAAAAAFkAAAAAAwBZAAAAAAQAWQAAAAACAFkAAAAAAgBPAAAAAAAAWQAAAAACAFkAAAAAAwB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAWQAAAAADAFkAAAAABQBZAAAAAAUAWQAAAAADAFkAAAAAAgBZAAAAAAIAWQAAAAACAFkAAAAABQBZAAAAAAEAfAAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAfAAAAAAAAFkAAAAABQBZAAAAAAUAWQAAAAACAFkAAAAABABZAAAAAAMAWQAAAAACAFkAAAAAAABZAAAAAAAAWQAAAAADAHwAAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAHwAAAAAAABZAAAAAAUAWQAAAAAEAFkAAAAAAwBZAAAAAAEAWQAAAAABAFkAAAAAAwBZAAAAAAQAWQAAAAAAAFkAAAAAAgB8AAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAB8AAAAAAAAWQAAAAADAFkAAAAAAgBZAAAAAAMAWQAAAAAFAFkAAAAAAgBZAAAAAAEAWQAAAAAEAFkAAAAAAQBZAAAAAAAAfAAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAfAAAAAAAAFkAAAAAAgBZAAAAAAIAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAABuAAAAAAAAbgAAAAAAAG4AAAAAAABuAAAAAAAAbgAAAAAAAHwAAAAAAABqAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAAB8AAAAAAAAHQAAAAAAAB0AAAAAAAB8AAAAAAAAbgAAAAAAAG4AAAAAAABuAAAAAAAAbgAAAAAAAG4AAAAAAABqAAAAAAAAagAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAfAAAAAAAAA== version: 7 -1,-2: ind: -1,-2 @@ -94,11 +96,11 @@ entities: version: 7 1,0: ind: 1,0 - tiles: WQAAAAAAAE8AAAAAAABPAAAAAAAAWQAAAAADADsAAAAAAQBZAAAAAAQAWQAAAAAAAFkAAAAAAQBZAAAAAAUAWQAAAAAEAFkAAAAAAABZAAAAAAMAWQAAAAAAAFkAAAAABQBZAAAAAAAAWQAAAAABAFkAAAAAAABZAAAAAAQAWQAAAAADADsAAAAAAAA7AAAAAAAAOwAAAAABAFkAAAAAAwBZAAAAAAIAOwAAAAAAADsAAAAAAABZAAAAAAEAWQAAAAADAFkAAAAAAwBZAAAAAAQAWQAAAAAAAFkAAAAAAgBZAAAAAAAAWQAAAAADAFkAAAAABQA7AAAAAAIAOwAAAAADADsAAAAAAAA7AAAAAAEAOwAAAAABADsAAAAAAAA7AAAAAAEAOwAAAAADAFkAAAAAAABZAAAAAAQAWQAAAAACAFkAAAAAAQBZAAAAAAIAWQAAAAADAFkAAAAAAQBZAAAAAAUAOwAAAAAAADsAAAAAAQA7AAAAAAMAOwAAAAAAADsAAAAAAQA7AAAAAAIAOwAAAAACADsAAAAAAQBZAAAAAAMAWQAAAAAEAFkAAAAAAABZAAAAAAQAWQAAAAAFAFkAAAAAAABZAAAAAAEAWQAAAAAEADsAAAAAAwA7AAAAAAIAOwAAAAACAFkAAAAAAwBZAAAAAAEAWQAAAAABADsAAAAAAwA7AAAAAAMAWQAAAAAFAE8AAAAAAABPAAAAAAAATwAAAAAAAFkAAAAAAABZAAAAAAAAWQAAAAACAFkAAAAAAgA7AAAAAAEAOwAAAAADAFkAAAAAAgBZAAAAAAEAWQAAAAABAFkAAAAAAwA7AAAAAAIAOwAAAAADAFkAAAAAAgBZAAAAAAQAWQAAAAADAFkAAAAAAwBZAAAAAAMAWQAAAAACAFkAAAAAAABZAAAAAAAAOwAAAAACADsAAAAAAwA7AAAAAAAAOwAAAAABADsAAAAAAgA7AAAAAAEAOwAAAAADADsAAAAAAgBZAAAAAAAAWQAAAAACAFkAAAAAAwBZAAAAAAIAWQAAAAADAFkAAAAABQBZAAAAAAEAWQAAAAAEAFkAAAAABQA7AAAAAAAAOwAAAAADADsAAAAAAQA7AAAAAAAAOwAAAAADADsAAAAAAwA7AAAAAAMAWQAAAAABAFkAAAAAAQBZAAAAAAIAAAAAAAAAAAAAAAAAAABZAAAAAAAAWQAAAAACAFkAAAAAAgBZAAAAAAMAWQAAAAAFAFkAAAAAAwBZAAAAAAEAOwAAAAABADsAAAAAAAA7AAAAAAIAWQAAAAAAAFkAAAAAAwBZAAAAAAIAWQAAAAADAAAAAAAAAAAAAAAAAAAAWQAAAAAEAFkAAAAAAABZAAAAAAIAWQAAAAADAFkAAAAABQBZAAAAAAEAWQAAAAAEAFkAAAAAAgBZAAAAAAQAWQAAAAAAAFkAAAAAAABZAAAAAAEAWQAAAAACAFkAAAAAAQAAAAAAAAAAAAAAAAAAAFkAAAAAAABZAAAAAAMAWQAAAAAEAFkAAAAABABZAAAAAAIAWQAAAAABAFkAAAAAAQBZAAAAAAAAWQAAAAAAAFkAAAAABQBZAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABZAAAAAAUAWQAAAAACAFkAAAAABABZAAAAAAEAWQAAAAACAFkAAAAAAwBZAAAAAAMAWQAAAAABAFkAAAAAAwBZAAAAAAIAWQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAACAFkAAAAAAwBZAAAAAAMAWQAAAAAAAFkAAAAAAgBZAAAAAAQAWQAAAAAEAFkAAAAAAgBZAAAAAAAAWQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFkAAAAAAgBZAAAAAAAAWQAAAAAEAFkAAAAAAgBZAAAAAAAAWQAAAAAAAFkAAAAAAQBZAAAAAAIAWQAAAAADAFkAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABZAAAAAAAAWQAAAAADAFkAAAAAAwBZAAAAAAIAWQAAAAAEAFkAAAAAAgBZAAAAAAEAWQAAAAAAAFkAAAAAAwBZAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAAFkAAAAAAwBZAAAAAAUATwAAAAAAAFkAAAAAAQBZAAAAAAAAWQAAAAADAFkAAAAABQBZAAAAAAQAWQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: WQAAAAAAAE8AAAAAAABPAAAAAAAAWQAAAAADADsAAAAAAQBZAAAAAAQAWQAAAAAAAFkAAAAAAQBZAAAAAAUAWQAAAAAEAFkAAAAAAABZAAAAAAMAWQAAAAAAAFkAAAAABQBZAAAAAAAAWQAAAAABAFkAAAAAAABZAAAAAAQAWQAAAAADADsAAAAAAAA7AAAAAAAAOwAAAAABAFkAAAAAAwBZAAAAAAIAOwAAAAAAADsAAAAAAABZAAAAAAEAWQAAAAADAFkAAAAAAwBZAAAAAAQAWQAAAAAAAFkAAAAAAgBZAAAAAAAAWQAAAAADAFkAAAAABQA7AAAAAAIAOwAAAAADADsAAAAAAAA7AAAAAAEAOwAAAAABADsAAAAAAAA7AAAAAAEAOwAAAAADAFkAAAAAAABZAAAAAAQAWQAAAAACAFkAAAAAAQBZAAAAAAIAWQAAAAADAFkAAAAAAQBZAAAAAAUAOwAAAAAAADsAAAAAAQA7AAAAAAMAOwAAAAAAADsAAAAAAQA7AAAAAAIAOwAAAAACADsAAAAAAQBZAAAAAAMAWQAAAAAEAFkAAAAAAABZAAAAAAQAWQAAAAAFAFkAAAAAAABZAAAAAAEAWQAAAAAEADsAAAAAAwA7AAAAAAIAOwAAAAACAFkAAAAAAwBZAAAAAAEAWQAAAAABADsAAAAAAwA7AAAAAAMAWQAAAAAFAE8AAAAAAABPAAAAAAAATwAAAAAAAFkAAAAAAABZAAAAAAAAWQAAAAACAFkAAAAAAgA7AAAAAAAAOwAAAAADAFkAAAAAAgBZAAAAAAEAWQAAAAABAFkAAAAAAwA7AAAAAAIAOwAAAAADAFkAAAAAAgBZAAAAAAQAWQAAAAADAFkAAAAAAwBZAAAAAAMAWQAAAAACAFkAAAAAAABZAAAAAAAAOwAAAAACADsAAAAAAwA7AAAAAAAAOwAAAAABADsAAAAAAgA7AAAAAAEAOwAAAAADADsAAAAAAgBZAAAAAAAAWQAAAAACAFkAAAAAAwBZAAAAAAIAWQAAAAADAFkAAAAABQBZAAAAAAEAWQAAAAAEAFkAAAAABQA7AAAAAAAAOwAAAAADADsAAAAAAQA7AAAAAAAAOwAAAAADADsAAAAAAwA7AAAAAAMAWQAAAAABAFkAAAAAAQBZAAAAAAIAAAAAAAAAAAAAAAAAAABZAAAAAAAAWQAAAAACAFkAAAAAAgBZAAAAAAMAWQAAAAAFAFkAAAAAAwBZAAAAAAEAOwAAAAABADsAAAAAAAA7AAAAAAIAWQAAAAAAAFkAAAAAAwBZAAAAAAIAWQAAAAADAAAAAAAAAAAAAAAAAAAAWQAAAAAEAFkAAAAAAABZAAAAAAIAWQAAAAADAFkAAAAABQBZAAAAAAEAWQAAAAAEAFkAAAAAAgBZAAAAAAQAWQAAAAAAAFkAAAAAAABZAAAAAAEAWQAAAAACAFkAAAAAAQAAAAAAAAAAAAAAAAAAAFkAAAAAAABZAAAAAAMAWQAAAAAEAFkAAAAABABZAAAAAAIAWQAAAAABAFkAAAAAAQBZAAAAAAAAWQAAAAAAAFkAAAAABQBZAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABZAAAAAAUAWQAAAAACAFkAAAAABABZAAAAAAEAWQAAAAACAFkAAAAAAwBZAAAAAAMAWQAAAAABAFkAAAAAAwBZAAAAAAIAWQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAACAFkAAAAAAwBZAAAAAAMAWQAAAAAAAFkAAAAAAgBZAAAAAAQAWQAAAAAEAFkAAAAAAgBZAAAAAAAAWQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFkAAAAAAgBZAAAAAAAAWQAAAAAEAFkAAAAAAgBZAAAAAAAAWQAAAAAAAFkAAAAAAQBZAAAAAAIAWQAAAAADAFkAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABZAAAAAAAAWQAAAAADAFkAAAAAAwBZAAAAAAIAWQAAAAAEAFkAAAAAAgBZAAAAAAEAWQAAAAAAAFkAAAAAAwBZAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAAFkAAAAAAwBZAAAAAAUATwAAAAAAAFkAAAAAAQBZAAAAAAAAWQAAAAADAFkAAAAABQBZAAAAAAQAWQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 1,-2: ind: 1,-2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFkAAAAAAwBZAAAAAAIAWQAAAAADAFkAAAAAAgBZAAAAAAQAWQAAAAACAFkAAAAABABZAAAAAAUAWQAAAAABAFkAAAAAAgBZAAAAAAMAWQAAAAADAFkAAAAAAABZAAAAAAIAWQAAAAAEAAAAAAAAAABZAAAAAAUAWQAAAAAEAFkAAAAAAwBZAAAAAAQAWQAAAAADAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABZAAAAAAAAWQAAAAAAAFkAAAAAAwBZAAAAAAAAWQAAAAABAFkAAAAAAgBZAAAAAAIAWQAAAAAAAFkAAAAAAABZAAAAAAIAWQAAAAADAFkAAAAAAABZAAAAAAUAWQAAAAACAFkAAAAABABZAAAAAAIAWQAAAAAEAFkAAAAAAABZAAAAAAQAWQAAAAACAFkAAAAAAwBZAAAAAAQAWQAAAAAFAFkAAAAAAQBZAAAAAAUAWQAAAAABAFkAAAAABQBZAAAAAAEAWQAAAAAEAFkAAAAAAgBZAAAAAAUAWQAAAAABAFkAAAAAAABZAAAAAAQAWQAAAAAEAFkAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAWQAAAAABAFkAAAAAAABZAAAAAAIAfAAAAAAAAGoAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAABqAAAAAAAAfAAAAAAAAFkAAAAABABZAAAAAAEAWQAAAAACAHwAAAAAAABqAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAagAAAAAAAHwAAAAAAABZAAAAAAMAWQAAAAABAFkAAAAAAAB8AAAAAAAAagAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAGoAAAAAAAB8AAAAAAAAWQAAAAADAFkAAAAAAQBZAAAAAAAAWQAAAAADAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAfAAAAAAAAFkAAAAAAQBZAAAAAAEAWQAAAAAFAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFkAAAAAAwBZAAAAAAIAWQAAAAADAFkAAAAAAgBZAAAAAAQAWQAAAAACAFkAAAAABABZAAAAAAUAWQAAAAABAFkAAAAAAgBZAAAAAAMAWQAAAAADAFkAAAAAAABZAAAAAAIAWQAAAAAEAAAAAAAAAABZAAAAAAUAWQAAAAAEAFkAAAAAAwBZAAAAAAQAWQAAAAADAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABZAAAAAAAAWQAAAAAAAFkAAAAAAwBZAAAAAAAAWQAAAAABAFkAAAAAAgBZAAAAAAIAWQAAAAAAAFkAAAAAAABZAAAAAAIAWQAAAAADAFkAAAAAAABZAAAAAAUAWQAAAAACAFkAAAAABABZAAAAAAIAWQAAAAAEAFkAAAAAAABZAAAAAAQAWQAAAAACAFkAAAAAAwBZAAAAAAQAWQAAAAAFAFkAAAAAAQBZAAAAAAUAWQAAAAABAFkAAAAABQBZAAAAAAEAWQAAAAAEAFkAAAAAAgBZAAAAAAUAWQAAAAABAFkAAAAAAABZAAAAAAQAWQAAAAAEAFkAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAWQAAAAABAFkAAAAAAABZAAAAAAIAfAAAAAAAAGoAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAABqAAAAAAAAfAAAAAAAAFkAAAAABABZAAAAAAEAWQAAAAACAHwAAAAAAABqAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAagAAAAAAAHwAAAAAAABZAAAAAAMAWQAAAAABAFkAAAAAAAB8AAAAAAAAagAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAGoAAAAAAAB8AAAAAAAAWQAAAAADAFkAAAAAAQBZAAAAAAAAfAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAfAAAAAAAAFkAAAAAAQBZAAAAAAEAWQAAAAAFAA== version: 7 -2,0: ind: -2,0 @@ -160,17 +162,17 @@ entities: version: 2 data: uniqueMixes: - - temperature: 293.15 + - temperature: 248.15 volume: 2500 moles: Oxygen: 21.824879 Nitrogen: 82.10312 - - temperature: 293.15 + - temperature: 248.15 volume: 2500 moles: Oxygen: 21.213781 Nitrogen: 79.80423 - - temperature: 293.15 + - temperature: 248.15 volume: 2500 moles: {} tiles: @@ -825,25 +827,79 @@ entities: - type: GasTileOverlay - type: SpreaderGrid - type: GridPathfinding - - type: ImplicitRoof + - type: Roof + data: + -3,1: 18446682229954902264 + -2,1: 18446744073709551487 + -2,0: 9187201402835828736 + -3,0: 17361640446303928320 + -1,1: 108371727217590272 + -3,2: 18446744073692708863 + -2,2: 18446744073709551487 + -2,3: 212175628992511 + -3,3: 2251588155536834559 + -1,3: 16626342641471 + -1,2: 4611681499098447872 + -4,3: 13889101250810642560 + -4,2: 9259541571362095104 + -4,4: 192 + -3,4: 3 + 1,2: 18230287884387090432 + 1,3: 17361650328973147388 + 2,3: 1085120253746155279 + 2,2: 1089659176801333496 + 2,4: 7 + 1,4: 192 + 2,1: 18228584461148680288 + 3,1: 72340172871763740 + 3,2: 257 + 3,0: 1736262388383546623 + 2,0: 247115238459375 + 3,-1: 18446744073709551615 + 4,0: 1 + 4,-1: 72057598332895232 + 2,-1: 18446744073709551615 + 1,0: 3233873919 + 3,-2: 9187131308969558015 + 3,-3: 18446744072621072159 + 4,-2: 50529027 + 4,-3: 217020518514229248 + 2,-3: 18446744073709551356 + 2,-4: 17293822569102704640 + 3,-4: 1080863910568919040 + 1,-3: 18446744073709551615 + 0,-3: 18446742969852162272 + 0,-4: 16140901064495857664 + -1,-3: 18229511620555181060 + -1,-2: 18229723555195321596 + -1,-1: 16212110922133339388 + 0,-1: 18446744073709551615 + 0,-2: 18446744073709551615 + -1,0: 32960 + 0,0: 471662591 + 1,-1: 18446744073709551615 + 1,-2: 18446744073709551615 + 2,-2: 18446744073709551615 + 0,1: 63297651233259520 + color: '#000000F4' - type: ExplosionAirtightGrid - type: TileHistory chunkHistory: {} - type: GridSplitNode - type: ChunkContainer chunkEntities: + - 1759 + - 2257 + - 2291 + - 2327 - 2463 - 2464 - - 2540 - - 2541 - - 2542 - - 2543 - - 2544 - - 2545 - - 2546 - - 2547 - - 2548 - - 2549 + - 2525 + - 2527 + - 2528 + - 2529 + - 2530 + - 2531 - uid: 1295 components: - type: MetaData @@ -858,7 +914,7 @@ entities: - type: Broadphase - type: OccluderTree - type: MapLight - ambientLightColor: '#AFAEAEFF' + ambientLightColor: '#CCCCCCFF' - type: Parallax parallax: Sky - type: MapAtmosphere @@ -1075,12 +1131,30 @@ entities: pos: -15.5,23.5 - proto: AlwaysPoweredLightLED entities: + - uid: 22 + components: + - type: Transform + parent: 104 + rot: 3.141592653589793 rad + pos: -2.5,-0.5 - uid: 135 components: - type: Transform parent: 104 rot: -1.5707963267948966 rad pos: -6.5,-1.5 + - uid: 222 + components: + - type: Transform + parent: 104 + rot: 3.141592653589793 rad + pos: -0.5,2.5 + - uid: 540 + components: + - type: Transform + parent: 104 + rot: 3.141592653589793 rad + pos: 8.5,2.5 - uid: 974 components: - type: Transform @@ -1119,6 +1193,17 @@ entities: parent: 104 rot: -1.5707963267948966 rad pos: 22.5,-6.5 + - uid: 541 + components: + - type: Transform + parent: 104 + rot: 3.141592653589793 rad + pos: 5.5,10.5 + - uid: 629 + components: + - type: Transform + parent: 104 + pos: 5.5,14.5 - uid: 1356 components: - type: Transform @@ -1187,12 +1272,6 @@ entities: parent: 104 rot: 1.5707963267948966 rad pos: -10.5,5.5 - - uid: 1759 - components: - - type: Transform - parent: 104 - rot: -1.5707963267948966 rad - pos: -1.5,12.5 - uid: 1760 components: - type: Transform @@ -1217,17 +1296,6 @@ entities: parent: 104 rot: 3.141592653589793 rad pos: -2.5,-16.5 - - uid: 2257 - components: - - type: Transform - parent: 104 - rot: 3.141592653589793 rad - pos: 5.5,10.5 - - uid: 2291 - components: - - type: Transform - parent: 104 - pos: 5.5,14.5 - uid: 2397 components: - type: Transform @@ -9453,7 +9521,7 @@ entities: pos: 13.499366,-8.433407 - proto: ChunkEntity entities: - - uid: 2463 + - uid: 1759 components: - type: ChunkEntity root: 104 @@ -9615,7 +9683,7 @@ entities: angle: 4.71238898038469 rad decals: 18: 24,-10 - - uid: 2464 + - uid: 2257 components: - type: ChunkEntity root: 104 @@ -9716,7 +9784,7 @@ entities: color: '#FFFFFFFF' decals: 293: 24,-18 - - uid: 2540 + - uid: 2291 components: - type: ChunkEntity root: 104 @@ -9802,7 +9870,7 @@ entities: color: '#AB0000FF' decals: 371: 20.568506,2.9319348 - - uid: 2541 + - uid: 2327 components: - type: ChunkEntity root: 104 @@ -10104,7 +10172,7 @@ entities: 337: 5,-9 338: 5,-8 360: 5,-7 - - uid: 2542 + - uid: 2463 components: - type: ChunkEntity root: 104 @@ -10205,7 +10273,7 @@ entities: decals: 227: 10,-18 228: 10,-17 - - uid: 2543 + - uid: 2464 components: - type: ChunkEntity root: 104 @@ -10267,6 +10335,11 @@ entities: color: '#FFFFFFFF' decals: 124: -5,-3 + - node: + id: WarnCornerSmallNW + color: '#FFFFFFFF' + decals: + 0: -9,-1 - node: id: WoodTrimThinLineS color: '#FFFFFFFF' @@ -10287,7 +10360,7 @@ entities: color: '#FFFFFFFF' decals: 24: -3.9999733,-6.081314 - - uid: 2544 + - uid: 2525 components: - type: ChunkEntity root: 104 @@ -10312,17 +10385,26 @@ entities: color: '#DE3A3A96' decals: 244: -1,-17 + - node: + id: WarnCornerSmallSW + color: '#FFFFFFFF' + decals: + 0: -9,-19 - node: id: WarnLineS color: '#FFFFFFFF' decals: + 3: -9,-20 + 4: -9,-21 + 5: -9,-22 + 6: -9,-23 122: -9,-24 - node: id: grasssnowb3 color: '#FFFFFFFF' decals: 23: -3.3477993,-19.991972 - - uid: 2545 + - uid: 2527 components: - type: ChunkEntity root: 104 @@ -10354,6 +10436,9 @@ entities: id: WarnLineS color: '#FFFFFFFF' decals: + 0: -9,4 + 1: -9,1 + 2: -9,0 95: -9,3 96: -9,2 - node: @@ -10407,7 +10492,7 @@ entities: decals: 46: -4.0458164,7.6303444 66: -1.9470882,14.409473 - - uid: 2546 + - uid: 2528 components: - type: ChunkEntity root: 104 @@ -10524,7 +10609,7 @@ entities: 37: 9.0946245,2.0440664 59: 0.45371246,11.270374 60: 9.166802,10.222887 - - uid: 2547 + - uid: 2529 components: - type: ChunkEntity root: 104 @@ -10560,7 +10645,7 @@ entities: color: '#FFFFFFFF' decals: 43: -2.8895664,16.211998 - - uid: 2548 + - uid: 2530 components: - type: ChunkEntity root: 104 @@ -10601,7 +10686,7 @@ entities: color: '#FFFFFFFF' decals: 77: 6.122473,18.001226 - - uid: 2549 + - uid: 2531 components: - type: ChunkEntity root: 104 @@ -11144,13 +11229,11 @@ entities: pos: 27.5,-18.5 - proto: GravityGenerator entities: - - uid: 2327 + - uid: 291 components: - type: Transform parent: 104 pos: 22.5,-15.5 - - type: PointLight - radius: 175.75 - proto: Grille entities: - uid: 95 @@ -11405,78 +11488,54 @@ entities: pos: 3.9919167,-12.28661 - proto: LightPostSmall entities: - - uid: 221 - components: - - type: Transform - parent: 104 - pos: 15.5,16.5 - - uid: 222 - components: - - type: Transform - parent: 104 - rot: 1.5707963267948966 rad - pos: -2.5,3.5 - - uid: 291 - components: - - type: Transform - parent: 104 - pos: 17.5,3.5 - - uid: 540 - components: - - type: Transform - parent: 104 - pos: 27.5,4.5 - - uid: 541 - components: - - type: Transform - parent: 104 - pos: 18.5,8.5 - - uid: 629 - components: - - type: Transform - parent: 104 - rot: 1.5707963267948966 rad - pos: -0.5,8.5 - - uid: 1226 - components: - - type: Transform - parent: 104 - pos: -4.5,-0.5 - uid: 1276 components: - type: Transform parent: 104 - pos: -34.5,4.5 + rot: 3.141592653589793 rad + pos: -23.5,-19.5 - uid: 1279 components: - type: Transform parent: 104 - pos: -35.5,-23.5 + rot: 3.141592653589793 rad + pos: -31.5,0.5 - uid: 1413 components: - type: Transform parent: 104 - pos: 0.5,-22.5 + rot: 3.141592653589793 rad + pos: -23.5,0.5 + - uid: 3999 + components: + - type: Transform + parent: 104 + rot: 3.141592653589793 rad + pos: -15.5,0.5 - uid: 1668 components: - type: Transform parent: 104 - pos: 5.5,17.5 + rot: 3.141592653589793 rad + pos: -31.5,-19.5 - uid: 1669 components: - type: Transform parent: 104 - pos: 10.5,11.5 + rot: 3.141592653589793 rad + pos: -15.5,-19.5 - uid: 1671 components: - type: Transform parent: 104 - pos: -3.5,17.5 + rot: 3.141592653589793 rad + pos: 18.5,3.5 - uid: 1675 components: - type: Transform parent: 104 - pos: 10.5,2.5 + rot: 3.141592653589793 rad + pos: 27.5,4.5 - proto: LockerSyndicatePersonalFilled entities: - uid: 178 @@ -12343,74 +12402,18 @@ entities: pos: 5.5,-8.5 - proto: Poweredlight entities: + - uid: 1226 + components: + - type: Transform + parent: 104 + rot: 1.5707963267948966 rad + pos: 9.5,0.5 - uid: 1333 components: - type: Transform parent: 104 rot: -1.5707963267948966 rad - pos: 13.5,-0.5 -- proto: PoweredLightPostSmall - entities: - - uid: 2525 - components: - - type: Transform - parent: 104 - pos: -10.5,0.5 - - uid: 2527 - components: - - type: Transform - parent: 104 - pos: -31.5,0.5 - - uid: 2528 - components: - - type: Transform - parent: 104 - pos: -27.5,0.5 - - uid: 2529 - components: - - type: Transform - parent: 104 - pos: -23.5,0.5 - - uid: 2530 - components: - - type: Transform - parent: 104 - pos: -19.5,0.5 - - uid: 2531 - components: - - type: Transform - parent: 104 - pos: -15.5,0.5 - - uid: 2532 - components: - - type: Transform - parent: 104 - pos: -10.5,-19.5 - - uid: 2533 - components: - - type: Transform - parent: 104 - pos: -15.5,-19.5 - - uid: 2534 - components: - - type: Transform - parent: 104 - pos: -19.5,-19.5 - - uid: 2535 - components: - - type: Transform - parent: 104 - pos: -23.5,-19.5 - - uid: 2536 - components: - - type: Transform - parent: 104 - pos: -27.5,-19.5 - - uid: 2537 - components: - - type: Transform - parent: 104 - pos: -31.5,-19.5 + pos: 13.5,0.5 - proto: PoweredSmallLight entities: - uid: 23 @@ -13212,13 +13215,6 @@ entities: - type: Transform parent: 104 pos: 8.5,-15.5 -- proto: SinkStemlessWater - entities: - - uid: 22 - components: - - type: Transform - parent: 104 - pos: 15.5,-1.5 - proto: SinkWide entities: - uid: 144 From e7b057a86565fb2671da4e62ea0fdf0a85cf8bc5 Mon Sep 17 00:00:00 2001 From: Minemoder5000 Date: Sun, 6 Sep 2026 06:29:36 +0000 Subject: [PATCH 079/197] Fix airlock default layer from WallLayer to AirlockLayer (#45881) fix default layer --- .../Structures/Doors/Airlocks/base_structureairlocks.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml index bf3652a2b4..8350b7d4be 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml @@ -168,6 +168,11 @@ - type: LayerChangeOnWeld unWeldedLayer: AirlockLayer weldedLayer: WallLayer + - type: Fixtures + fixtures: + fix1: + layer: + - AirlockLayer - type: DoorSignalControl - type: DeviceNetwork deviceNetId: Wireless From bb8b0592930b1a3003d498e2715493d8901d5047 Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Sun, 6 Sep 2026 15:11:26 +0000 Subject: [PATCH 080/197] Tweak disabler/disabler SMG values up (#45886) Initial commit --- .../Objects/Weapons/Guns/Projectiles/Energy/stun.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Energy/stun.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Energy/stun.yml index b5f411c5ea..469af4a7e7 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Energy/stun.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Energy/stun.yml @@ -119,7 +119,7 @@ fly-by: *flybyfixture - type: Ammo - type: StunOnCollide - slowdownAmount: 1.3 + slowdownAmount: 2.2 walkSpeedModifier: 0.75 sprintSpeedModifier: 0.75 - type: Projectile @@ -220,9 +220,9 @@ categories: [ HideSpawnMenu ] components: - type: StunOnCollide - slowdownAmount: 1.3 - walkSpeedModifier: 0.6 - sprintSpeedModifier: 0.6 + slowdownAmount: 2.2 + walkSpeedModifier: 0.65 + sprintSpeedModifier: 0.65 - type: entity parent: BulletDisablerSmgBase From eec3013cdda037c2d2cccd7ac5179e3fe0d08dd2 Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Sun, 6 Sep 2026 15:38:53 +0000 Subject: [PATCH 081/197] Make stun batons not drop when slipping/stunned (#45887) Initial commit --- .../Hands/Components/PreventForcedThrowComponent.cs | 9 +++++++++ .../EntitySystems/SharedHandsSystem.EventListeners.cs | 7 +++++++ .../Prototypes/Entities/Objects/Weapons/security.yml | 3 ++- 3 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 Content.Shared/Hands/Components/PreventForcedThrowComponent.cs diff --git a/Content.Shared/Hands/Components/PreventForcedThrowComponent.cs b/Content.Shared/Hands/Components/PreventForcedThrowComponent.cs new file mode 100644 index 0000000000..830eee7e7a --- /dev/null +++ b/Content.Shared/Hands/Components/PreventForcedThrowComponent.cs @@ -0,0 +1,9 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Hands.Components; + +/// +/// An item with this component will not be involuntarily dropped, e.g. from slips/stuns. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class PreventForcedThrowComponent : Component; diff --git a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.EventListeners.cs b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.EventListeners.cs index ea2502331e..77898fcd75 100644 --- a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.EventListeners.cs +++ b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.EventListeners.cs @@ -1,4 +1,5 @@ using Content.Shared.Hands.Components; +using Content.Shared.Standing; using Content.Shared.Stunnable; namespace Content.Shared.Hands.EntitySystems; @@ -42,4 +43,10 @@ public abstract partial class SharedHandsSystem else args.SpeedModifier *= (float)freeHands / totalHands; } + + [SubscribeLocalEvent] + private void OnAttemptedItemDrop(Entity ent, ref FellDownThrowAttemptEvent args) + { + args.Cancelled = true; + } } diff --git a/Resources/Prototypes/Entities/Objects/Weapons/security.yml b/Resources/Prototypes/Entities/Objects/Weapons/security.yml index ad598cecec..83f61ec1da 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/security.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/security.yml @@ -2,7 +2,7 @@ name: stun baton parent: [BaseItem, BaseSecurityContraband] id: Stunbaton - description: A stun baton for incapacitating people with. Actively harming with this is considered bad tone. + description: A stun baton for incapacitating people with. Has advanced wrist strap technology to prevent cadets accidentally dropping it. components: - type: Sprite sprite: Objects/Weapons/Melee/stunbaton.rsi @@ -100,6 +100,7 @@ - type: Tag tags: - Stunbaton + - type: PreventForcedThrow - type: entity name: truncheon From e14928ccc00e3fc4e2966f08de907a3337d1cf74 Mon Sep 17 00:00:00 2001 From: Dmitry <57028746+DIMMoon1@users.noreply.github.com> Date: Sun, 6 Sep 2026 23:57:16 +0700 Subject: [PATCH 082/197] upstream fix --- Content.Client/Corvax/SecApartment/SquadEntry.xaml.cs | 2 +- Content.Server/Corvax/SecApartment/SecApartmentSystem.cs | 2 +- .../Corvax/SecApartment/Components/SecApartmentComponent.cs | 2 +- Content.Shared/Corvax/SecApartment/SecApartmentUi.cs | 2 +- Resources/Prototypes/Roles/Jobs/departments.yml | 1 + 5 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Content.Client/Corvax/SecApartment/SquadEntry.xaml.cs b/Content.Client/Corvax/SecApartment/SquadEntry.xaml.cs index 248b613a16..70987ecdb6 100644 --- a/Content.Client/Corvax/SecApartment/SquadEntry.xaml.cs +++ b/Content.Client/Corvax/SecApartment/SquadEntry.xaml.cs @@ -1,7 +1,7 @@ using System.Linq; using System.Numerics; using Content.Client.Corvax.SecApartment.Stylesheets; -using Content.Shared.Medical.SuitSensor; +using Content.Shared.Medical.SuitSensors; using Content.Shared.SecApartment; using Content.Shared.StatusIcon; using Robust.Client.AutoGenerated; diff --git a/Content.Server/Corvax/SecApartment/SecApartmentSystem.cs b/Content.Server/Corvax/SecApartment/SecApartmentSystem.cs index 4581e36d60..518ea7af49 100644 --- a/Content.Server/Corvax/SecApartment/SecApartmentSystem.cs +++ b/Content.Server/Corvax/SecApartment/SecApartmentSystem.cs @@ -4,7 +4,7 @@ using Content.Server.Medical.CrewMonitoring; using Content.Server.Pinpointer; using Content.Shared.CrewManifest; using Content.Shared.GameTicking; -using Content.Shared.Medical.SuitSensor; +using Content.Shared.Medical.SuitSensors; using Content.Shared.Roles; using Content.Shared.SecApartment; using Content.Shared.Station; diff --git a/Content.Shared/Corvax/SecApartment/Components/SecApartmentComponent.cs b/Content.Shared/Corvax/SecApartment/Components/SecApartmentComponent.cs index 8a07402f75..bc62cc3d58 100644 --- a/Content.Shared/Corvax/SecApartment/Components/SecApartmentComponent.cs +++ b/Content.Shared/Corvax/SecApartment/Components/SecApartmentComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Medical.SuitSensor; +using Content.Shared.Medical.SuitSensors; using Robust.Shared.GameStates; using Robust.Shared.Serialization; diff --git a/Content.Shared/Corvax/SecApartment/SecApartmentUi.cs b/Content.Shared/Corvax/SecApartment/SecApartmentUi.cs index f5bb57e53d..9f470e651d 100644 --- a/Content.Shared/Corvax/SecApartment/SecApartmentUi.cs +++ b/Content.Shared/Corvax/SecApartment/SecApartmentUi.cs @@ -1,4 +1,4 @@ -using Content.Shared.Medical.SuitSensor; +using Content.Shared.Medical.SuitSensors; using Robust.Shared.Serialization; namespace Content.Shared.SecApartment; diff --git a/Resources/Prototypes/Roles/Jobs/departments.yml b/Resources/Prototypes/Roles/Jobs/departments.yml index cdac0cf594..81de886d78 100644 --- a/Resources/Prototypes/Roles/Jobs/departments.yml +++ b/Resources/Prototypes/Roles/Jobs/departments.yml @@ -99,6 +99,7 @@ - ResearchDirector - Scientist - ResearchAssistant + - SeniorResearcher # Corvax-MentorRoles - type: department id: Security From 4bd89cd4d0d726f62e5cc5a08d993f1be3ffae6e Mon Sep 17 00:00:00 2001 From: KloopRE <100780612+KloopRE@users.noreply.github.com> Date: Sun, 6 Sep 2026 17:01:06 +0000 Subject: [PATCH 083/197] Fix logic for gestation check in AnimalHusbandrySystem (#45882) * Fix logic for gestation check in AnimalHusbandrySystem * Enhance reproduction logic with gestation check Added check for gestating state in reproduction logic. --- .../Nutrition/EntitySystems/AnimalHusbandrySystem.cs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/Content.Server/Nutrition/EntitySystems/AnimalHusbandrySystem.cs b/Content.Server/Nutrition/EntitySystems/AnimalHusbandrySystem.cs index ddd64d9b3f..c8cfed434d 100644 --- a/Content.Server/Nutrition/EntitySystems/AnimalHusbandrySystem.cs +++ b/Content.Server/Nutrition/EntitySystems/AnimalHusbandrySystem.cs @@ -149,7 +149,7 @@ public sealed partial class AnimalHusbandrySystem : EntitySystem if (_failedAttempts.Contains(uid)) return false; - if (Resolve(uid, ref component, false) && component.Gestating) + if (!Resolve(uid, ref component, false) || component.Gestating) return false; if (HasComp(uid)) @@ -160,12 +160,9 @@ public sealed partial class AnimalHusbandrySystem : EntitySystem // If no satiations, no limit to reproduction if (!TryComp(uid, out var satiation)) - { return true; - } - // Check minimum hunger requirement - if (component!.MinHungerThreshold is { } minHunger) + if (component.MinHungerThreshold is { } minHunger) { if (!satiation.Has(SatiationSystem.Hunger) || _satiation.IsValueInRange((uid, satiation), SatiationSystem.Hunger, below: minHunger)) From c46f74c3556a9080afe0f4bc5e7f4b66b63297e2 Mon Sep 17 00:00:00 2001 From: ahandleman Date: Sun, 6 Sep 2026 17:46:38 +0000 Subject: [PATCH 084/197] Various small botany bugfixes and reverts to prior behavior (#45842) * Various small botany bugfixes and reverts to prior behavior * oops rainbow cannabis needs it too * oops, need to keep remove around for stuff like phal and plant-b-gone * fix comment * Fixed to make it selectable * No need for plantPhalaxEntityEffect * Ok moving removing this to its own PR because actually the guidebook stuff is weird and I wanna get this out the door. * endless fixes to the botany * renaming methods * Refactored to remove PlantPhalanximineEntityEffectSystem because it's just a trait. * removed the actual file * renamed to noun/description for clarity --------- Co-authored-by: Pok245 <113675512+Pok27@users.noreply.github.com> --- .../Botany/Events/PlantGrowthEvent.cs | 21 ++----- .../Items/Systems/BotanySampleTakerSystem.cs | 4 +- .../Botany/Items/Systems/BotanySeedSystem.cs | 2 +- .../Botany/Systems/PlantGrowthSystem.cs | 2 +- .../Botany/Systems/PlantHarvestSystem.cs | 47 +++++++--------- Content.Shared/Botany/Systems/PlantSystem.cs | 2 +- .../Botany/Systems/PlantToxinsSystem.cs | 2 +- .../Botany/Systems/PlantTraySystem.cs | 26 +++++++-- .../Botany/Systems/PlantWeedPestSystem.cs | 2 +- .../Components/PlantTraitKudzuComponent.cs | 4 +- .../Components/PlantTraitLigneousComponent.cs | 4 +- .../Components/PlantTraitSampledComponent.cs | 4 +- .../Components/PlantTraitScreamComponent.cs | 4 +- .../Components/PlantTraitSeedlessComponent.cs | 5 +- .../Components/PlantTraitUnviableComponent.cs | 4 +- .../Traits/Components/PlantTraitsComponent.cs | 6 ++ .../Traits/Systems/PlantTraitKudzuSystem.cs | 2 +- .../Systems/PlantTraitLigneousSystem.cs | 4 +- .../Traits/Systems/PlantTraitScreamSystem.cs | 2 +- .../PlantAdjustPestsEntityEffectSystem.cs | 2 +- .../PlantAdjustToxinsEntityEffectSystem.cs | 2 +- .../PlantAdjustWeedsEntityEffectSystem.cs | 2 +- .../PlantChangeTraitsEntityEffectSystem.cs | 55 +++++++++++++++++-- .../PlantPhalanximineEntityEffectSystem.cs | 30 ---------- Resources/Locale/en-US/botany/mutations.ftl | 20 +++++-- .../guidebook/entity-effects/effects.ftl | 16 ++++++ Resources/Prototypes/Hydroponics/plants.yml | 4 ++ .../Hydroponics/randomMutations.yml | 2 +- Resources/Prototypes/Reagents/botany.yml | 2 +- Resources/Prototypes/Reagents/medicine.yml | 4 +- 30 files changed, 174 insertions(+), 112 deletions(-) delete mode 100644 Content.Shared/EntityEffects/Effects/Botany/PlantAttributes/PlantPhalanximineEntityEffectSystem.cs diff --git a/Content.Shared/Botany/Events/PlantGrowthEvent.cs b/Content.Shared/Botany/Events/PlantGrowthEvent.cs index 5108d4e159..8d48ed6044 100644 --- a/Content.Shared/Botany/Events/PlantGrowthEvent.cs +++ b/Content.Shared/Botany/Events/PlantGrowthEvent.cs @@ -1,30 +1,19 @@ -using Robust.Shared.Serialization; - namespace Content.Shared.Botany.Events; /// /// Event of plant growing ticking. /// [ByRefEvent] -[Serializable, NetSerializable] -public readonly record struct PlantGrowEvent(NetEntity Tray); +public readonly record struct PlantGrowEvent(EntityUid Tray); /// -/// Event raised when a harvest is attempted. +/// Event raised when a harvest is attempted. Cancel to prevent the harvest. /// [ByRefEvent] -public sealed class DoHarvestEvent(EntityUid user, EntityUid target) : CancellableEntityEventArgs -{ - public EntityUid User { get; } = user; - public EntityUid Target { get; } = target; -} +public record struct PlantHarvestAttemptEvent(EntityUid User, EntityUid Target, bool Cancelled = false); /// -/// Event raised after a harvest is attempted. +/// Event raised after a plant has been harvested. /// [ByRefEvent] -public sealed class AfterDoHarvestEvent(EntityUid user, EntityUid target) : CancellableEntityEventArgs -{ - public EntityUid User { get; } = user; - public EntityUid Target { get; } = target; -} +public readonly record struct PlantHarvestedEvent(EntityUid User, EntityUid Target); diff --git a/Content.Shared/Botany/Items/Systems/BotanySampleTakerSystem.cs b/Content.Shared/Botany/Items/Systems/BotanySampleTakerSystem.cs index f22a6624b3..fc9e09b7cc 100644 --- a/Content.Shared/Botany/Items/Systems/BotanySampleTakerSystem.cs +++ b/Content.Shared/Botany/Items/Systems/BotanySampleTakerSystem.cs @@ -54,9 +54,9 @@ public sealed partial class BotanySampleTakerSystem : EntitySystem return; } - // Prevent early sampling. + // Prevent early sampling, unless the plant is fully grown. var growthStage = _plant.GetGrowthStageValue(ent.AsNullable()); - if (growthStage <= args.Sample.Comp.MinSampleStage) + if (growthStage < ent.Comp.GrowthStages && growthStage <= args.Sample.Comp.MinSampleStage) { _popup.PopupCursor(Loc.GetString("plant-sample-component-early-sample-popup"), args.User); return; diff --git a/Content.Shared/Botany/Items/Systems/BotanySeedSystem.cs b/Content.Shared/Botany/Items/Systems/BotanySeedSystem.cs index 087a617c2b..41a37b11ab 100644 --- a/Content.Shared/Botany/Items/Systems/BotanySeedSystem.cs +++ b/Content.Shared/Botany/Items/Systems/BotanySeedSystem.cs @@ -44,7 +44,7 @@ public sealed partial class BotanySeedSystem : EntitySystem if (args.Cancelled) return; - if (_plantTray.TryGetPlant(ent.AsNullable(), out _)) + if (_plantTray.HasPlant(ent.AsNullable())) { _popup.PopupCursor( Loc.GetString("plant-component-already-seeded-popup", ("name", MetaData(ent.Owner).EntityName)), diff --git a/Content.Shared/Botany/Systems/PlantGrowthSystem.cs b/Content.Shared/Botany/Systems/PlantGrowthSystem.cs index 38534f3d43..f57f477cb4 100644 --- a/Content.Shared/Botany/Systems/PlantGrowthSystem.cs +++ b/Content.Shared/Botany/Systems/PlantGrowthSystem.cs @@ -38,7 +38,7 @@ public sealed partial class PlantGrowthSystem : EntitySystem private void OnPlantGrow(Entity ent, ref PlantGrowEvent args) { var (plantUid, plantComp) = ent; - var trayUid = GetEntity(args.Tray); + var trayUid = args.Tray; if (!_trayQuery.TryComp(trayUid, out var trayComp)) return; diff --git a/Content.Shared/Botany/Systems/PlantHarvestSystem.cs b/Content.Shared/Botany/Systems/PlantHarvestSystem.cs index 646161a883..4dc4870bd3 100644 --- a/Content.Shared/Botany/Systems/PlantHarvestSystem.cs +++ b/Content.Shared/Botany/Systems/PlantHarvestSystem.cs @@ -32,14 +32,12 @@ public sealed partial class PlantHarvestSystem : EntitySystem if (args.Handled) return; - if (!_plantTray.TryGetPlant(ent.AsNullable(), out var plantUid) - || !_holderQuery.TryComp(plantUid, out var holder) - || !holder.ReadyForHarvest) + // TODO: Remove this once trays have a proper UI. + if (!_plantTray.TryGetAlivePlant(ent.AsNullable(), out var plantUid)) return; - // TODO: Remove this once trays have a proper UI. - TryHandleHarvest(plantUid.Value, args.User); - args.Handled = true; + if (TryHandleHarvest(plantUid.Value, args.User)) + args.Handled = true; } [SubscribeLocalEvent] @@ -79,21 +77,8 @@ public sealed partial class PlantHarvestSystem : EntitySystem return; } - if (!ent.Comp.ReadyForHarvest) - return; - - var ev = new DoHarvestEvent(args.User, ent.Owner); - RaiseLocalEvent(ent.Owner, ref ev); - args.Handled = true; - } - - [SubscribeLocalEvent] - private void OnHandledDoHarvest(Entity ent, ref DoHarvestEvent args) - { - if (args.Cancelled) - return; - - TryHandleHarvest(ent, args.User); + if (TryHandleHarvest(ent, args.User)) + args.Handled = true; } private void TryAutoHarvest(Entity ent, EntityUid user) @@ -102,21 +87,31 @@ public sealed partial class PlantHarvestSystem : EntitySystem return; if (_dataQuery.TryComp(ent.Owner, out var plantData) && plantData.HarvestLogImpact != null) - _adminLogger.Add(LogType.Botany, plantData.HarvestLogImpact.Value, $"Auto-harvested {Loc.GetString(plantData.Name):seed} at Pos:{Transform(ent.Owner).Coordinates}."); + _adminLogger.Add(LogType.Botany, plantData.HarvestLogImpact.Value, $"Auto-harvested {Loc.GetString(plantData.Name):seed} at Pos:{Transform(ent).Coordinates}."); DoHarvest(ent.Owner, user); } /// - /// Handles harvesting a plant for the specified user. + /// Attempts to harvest the plant, raising and harvesting if not cancelled. /// + /// True if the harvest was handled, even if cancelled. [PublicAPI] - public void TryHandleHarvest(EntityUid plant, EntityUid user) + public bool TryHandleHarvest(EntityUid plant, EntityUid user) { + if (!_holderQuery.TryComp(plant, out var holder) || !holder.ReadyForHarvest) + return false; + + var ev = new PlantHarvestAttemptEvent(user, plant); + RaiseLocalEvent(plant, ref ev); + if (ev.Cancelled) + return true; + if (_dataQuery.TryComp(plant, out var plantData) && plantData.HarvestLogImpact != null) - _adminLogger.Add(LogType.Botany, plantData.HarvestLogImpact.Value, $"Auto-harvested {Loc.GetString(plantData.Name):seed} at Pos:{Transform(plant).Coordinates}."); + _adminLogger.Add(LogType.Botany, plantData.HarvestLogImpact.Value, $"{ToPrettyString(user):player} harvested {Loc.GetString(plantData.Name):seed} at Pos:{Transform(user).Coordinates}."); DoHarvest(plant, user); + return true; } /// @@ -156,7 +151,7 @@ public sealed partial class PlantHarvestSystem : EntitySystem if (harvest.HarvestRepeat == HarvestType.NoRepeat) _plant.RemovePlant(ent.Owner); - var ev = new AfterDoHarvestEvent(user, ent.Owner); + var ev = new PlantHarvestedEvent(user, ent.Owner); RaiseLocalEvent(ent.Owner, ref ev); } diff --git a/Content.Shared/Botany/Systems/PlantSystem.cs b/Content.Shared/Botany/Systems/PlantSystem.cs index 5182ed17eb..9c2650e990 100644 --- a/Content.Shared/Botany/Systems/PlantSystem.cs +++ b/Content.Shared/Botany/Systems/PlantSystem.cs @@ -131,7 +131,7 @@ public sealed partial class PlantSystem : EntitySystem return; TryGetTray(ent.Owner, out var trayEnt); - var plantGrow = new PlantGrowEvent(GetNetEntity(trayEnt.Owner)); + var plantGrow = new PlantGrowEvent(trayEnt.Owner); RaiseLocalEvent(ent.Owner, ref plantGrow); // Process mutations. diff --git a/Content.Shared/Botany/Systems/PlantToxinsSystem.cs b/Content.Shared/Botany/Systems/PlantToxinsSystem.cs index 80e4fcfad5..7dd60560ff 100644 --- a/Content.Shared/Botany/Systems/PlantToxinsSystem.cs +++ b/Content.Shared/Botany/Systems/PlantToxinsSystem.cs @@ -32,7 +32,7 @@ public sealed partial class PlantToxinsSystem : EntitySystem [SubscribeLocalEvent] private void OnPlantGrow(Entity ent, ref PlantGrowEvent args) { - var trayUid = GetEntity(args.Tray); + var trayUid = args.Tray; if (!_trayQuery.TryComp(trayUid, out var tray) || !_holderQuery.TryComp(ent.Owner, out var holder)) return; diff --git a/Content.Shared/Botany/Systems/PlantTraySystem.cs b/Content.Shared/Botany/Systems/PlantTraySystem.cs index bc173517f8..3a9b3a52e7 100644 --- a/Content.Shared/Botany/Systems/PlantTraySystem.cs +++ b/Content.Shared/Botany/Systems/PlantTraySystem.cs @@ -135,11 +135,16 @@ public sealed partial class PlantTraySystem : EntitySystem var contents = trayComp.SoilSolution.Value.Comp.Solution.Contents.ToArray(); foreach (var entry in contents) { - var reagentProto = ProtoMan.Index(entry.Reagent.Prototype); - _entityEffects.ApplyEffects(trayUid, [.. reagentProto.PlantMetabolisms], entry.Quantity.Float()); + if (entry.Quantity.Float() >= 1f) + { + var reagentProto = ProtoMan.Index(entry.Reagent.Prototype); + _entityEffects.ApplyEffects(trayUid, [.. reagentProto.PlantMetabolisms], entry.Quantity.Float()); - if (plantUid != null) - _entityEffects.ApplyEffects(plantUid.Value, [.. reagentProto.PlantMetabolisms], entry.Quantity.Float()); + if (plantUid != null) + { + _entityEffects.ApplyEffects(plantUid.Value, [.. reagentProto.PlantMetabolisms], entry.Quantity.Float()); + } + } } _solutionContainer.RemoveEachReagent(trayComp.SoilSolution.Value, FixedPoint2.New(1)); @@ -259,6 +264,14 @@ public sealed partial class PlantTraySystem : EntitySystem return ent.Comp.ToxinLevel >= ent.Comp.MaxToxinLevel * 0.5f; } + /// + /// Checks whether the tray contains a plant entity. + /// + public bool HasPlant(Entity ent) + { + return TryGetPlant(ent, out _); + } + /// /// Tries to get the plant entity in the tray. /// @@ -276,7 +289,10 @@ public sealed partial class PlantTraySystem : EntitySystem return true; } - public bool TryGetAlivePlant(Entity ent) + /// + /// Checks whether the tray contains a living plant entity. + /// + public bool HasAlivePlant(Entity ent) { return TryGetAlivePlant(ent, out _); } diff --git a/Content.Shared/Botany/Systems/PlantWeedPestSystem.cs b/Content.Shared/Botany/Systems/PlantWeedPestSystem.cs index 7d92a925e5..37ff69bbfa 100644 --- a/Content.Shared/Botany/Systems/PlantWeedPestSystem.cs +++ b/Content.Shared/Botany/Systems/PlantWeedPestSystem.cs @@ -34,7 +34,7 @@ public sealed partial class PlantWeedPestSystem : EntitySystem [SubscribeLocalEvent] private void OnPlantGrow(Entity ent, ref PlantGrowEvent args) { - var trayUid = GetEntity(args.Tray); + var trayUid = args.Tray; if (!_trayQuery.TryComp(trayUid, out var tray)) return; diff --git a/Content.Shared/Botany/Traits/Components/PlantTraitKudzuComponent.cs b/Content.Shared/Botany/Traits/Components/PlantTraitKudzuComponent.cs index 3c4789b85f..ad033ac06b 100644 --- a/Content.Shared/Botany/Traits/Components/PlantTraitKudzuComponent.cs +++ b/Content.Shared/Botany/Traits/Components/PlantTraitKudzuComponent.cs @@ -30,5 +30,7 @@ public sealed partial class PlantTraitKudzuComponent : PlantTraitsComponent public float WeedGrowthAmount = 1f; /// - public override LocId? TraitState { get; set; } = "mutation-plant-kudzu"; + public override LocId? TraitState { get; set; } = "mutation-plant-description-kudzu"; + /// + public override LocId? TraitName { get; set; } = "mutation-plant-noun-kudzu"; } diff --git a/Content.Shared/Botany/Traits/Components/PlantTraitLigneousComponent.cs b/Content.Shared/Botany/Traits/Components/PlantTraitLigneousComponent.cs index 1c73f88b28..08ebab8688 100644 --- a/Content.Shared/Botany/Traits/Components/PlantTraitLigneousComponent.cs +++ b/Content.Shared/Botany/Traits/Components/PlantTraitLigneousComponent.cs @@ -17,5 +17,7 @@ public sealed partial class PlantTraitLigneousComponent : PlantTraitsComponent public ProtoId? HarvestToolQuality = "Sawing"; /// - public override LocId? TraitState { get; set; } = "mutation-plant-ligneous"; + public override LocId? TraitState { get; set; } = "mutation-plant-description-ligneous"; + /// + public override LocId? TraitName { get; set; } = "mutation-plant-noun-ligneous"; } diff --git a/Content.Shared/Botany/Traits/Components/PlantTraitSampledComponent.cs b/Content.Shared/Botany/Traits/Components/PlantTraitSampledComponent.cs index 61dc51f742..5e8ecdd6cf 100644 --- a/Content.Shared/Botany/Traits/Components/PlantTraitSampledComponent.cs +++ b/Content.Shared/Botany/Traits/Components/PlantTraitSampledComponent.cs @@ -9,5 +9,7 @@ namespace Content.Shared.Botany.Traits.Components; public sealed partial class PlantTraitSampledComponent : PlantTraitsComponent { /// - public override LocId? TraitState { get; set; } = "mutation-plant-sampled"; + public override LocId? TraitState { get; set; } = "mutation-plant-description-sampled"; + /// + public override LocId? TraitName { get; set; } = "mutation-plant-noun-sampled"; } diff --git a/Content.Shared/Botany/Traits/Components/PlantTraitScreamComponent.cs b/Content.Shared/Botany/Traits/Components/PlantTraitScreamComponent.cs index 0b6d90fca0..189d471eb3 100644 --- a/Content.Shared/Botany/Traits/Components/PlantTraitScreamComponent.cs +++ b/Content.Shared/Botany/Traits/Components/PlantTraitScreamComponent.cs @@ -16,5 +16,7 @@ public sealed partial class PlantTraitScreamComponent : PlantTraitsComponent public SoundSpecifier ScreamSound = new SoundCollectionSpecifier("PlantScreams", AudioParams.Default.AddVolume(-10)); /// - public override LocId? TraitState { get; set; } = "mutation-plant-scream"; + public override LocId? TraitState { get; set; } = "mutation-plant-description-scream"; + /// + public override LocId? TraitName { get; set; } = "mutation-plant-noun-scream"; } diff --git a/Content.Shared/Botany/Traits/Components/PlantTraitSeedlessComponent.cs b/Content.Shared/Botany/Traits/Components/PlantTraitSeedlessComponent.cs index 4bca2f57cf..5a1c2711ed 100644 --- a/Content.Shared/Botany/Traits/Components/PlantTraitSeedlessComponent.cs +++ b/Content.Shared/Botany/Traits/Components/PlantTraitSeedlessComponent.cs @@ -9,5 +9,8 @@ namespace Content.Shared.Botany.Traits.Components; public sealed partial class PlantTraitSeedlessComponent : PlantTraitsComponent { /// - public override LocId? TraitState { get; set; } = "mutation-plant-seedless"; + public override LocId? TraitState { get; set; } = "mutation-plant-description-seedless"; + /// + public override LocId? TraitName { get; set; } = "mutation-plant-noun-seedless"; + } diff --git a/Content.Shared/Botany/Traits/Components/PlantTraitUnviableComponent.cs b/Content.Shared/Botany/Traits/Components/PlantTraitUnviableComponent.cs index 18d949a4fe..cf56bb0478 100644 --- a/Content.Shared/Botany/Traits/Components/PlantTraitUnviableComponent.cs +++ b/Content.Shared/Botany/Traits/Components/PlantTraitUnviableComponent.cs @@ -16,5 +16,7 @@ public sealed partial class PlantTraitUnviableComponent : PlantTraitsComponent public float UnviableDamage = 6f; /// - public override LocId? TraitState { get; set; } = "mutation-plant-unviable"; + public override LocId? TraitState { get; set; } = "mutation-plant-description-unviable"; + /// + public override LocId? TraitName { get; set; } = "mutation-plant-noun-unviable"; } diff --git a/Content.Shared/Botany/Traits/Components/PlantTraitsComponent.cs b/Content.Shared/Botany/Traits/Components/PlantTraitsComponent.cs index e68a67941e..01a72048bf 100644 --- a/Content.Shared/Botany/Traits/Components/PlantTraitsComponent.cs +++ b/Content.Shared/Botany/Traits/Components/PlantTraitsComponent.cs @@ -10,4 +10,10 @@ public abstract partial class PlantTraitsComponent : Component /// [DataField] public virtual LocId? TraitState { get; set; } + + /// + /// Localization key for the name of the trait. + /// + [DataField] + public virtual LocId? TraitName { get; set; } } diff --git a/Content.Shared/Botany/Traits/Systems/PlantTraitKudzuSystem.cs b/Content.Shared/Botany/Traits/Systems/PlantTraitKudzuSystem.cs index 73297e7727..3fd2fac4b7 100644 --- a/Content.Shared/Botany/Traits/Systems/PlantTraitKudzuSystem.cs +++ b/Content.Shared/Botany/Traits/Systems/PlantTraitKudzuSystem.cs @@ -17,7 +17,7 @@ public sealed partial class PlantTraitKudzuSystem : EntitySystem [SubscribeLocalEvent] private void OnPlantGrow(Entity ent, ref PlantGrowEvent args) { - var trayUid = GetEntity(args.Tray); + var trayUid = args.Tray; if (!_trayQuery.TryComp(trayUid, out var trayComp)) return; diff --git a/Content.Shared/Botany/Traits/Systems/PlantTraitLigneousSystem.cs b/Content.Shared/Botany/Traits/Systems/PlantTraitLigneousSystem.cs index 7ad4d71f71..9ea4408aae 100644 --- a/Content.Shared/Botany/Traits/Systems/PlantTraitLigneousSystem.cs +++ b/Content.Shared/Botany/Traits/Systems/PlantTraitLigneousSystem.cs @@ -46,9 +46,9 @@ public sealed partial class PlantTraitLigneousSystem : EntitySystem } [SubscribeLocalEvent(before: [typeof(PlantHarvestSystem)])] - private void OnDoHarvest(Entity ent, ref DoHarvestEvent args) + private void OnHarvestAttempt(Entity ent, ref PlantHarvestAttemptEvent args) { _popup.PopupCursor(Loc.GetString("plant-component-ligneous-cant-harvest-message"), args.User); - args.Cancel(); + args.Cancelled = true; } } diff --git a/Content.Shared/Botany/Traits/Systems/PlantTraitScreamSystem.cs b/Content.Shared/Botany/Traits/Systems/PlantTraitScreamSystem.cs index 7cfa9de314..0b4f1ae174 100644 --- a/Content.Shared/Botany/Traits/Systems/PlantTraitScreamSystem.cs +++ b/Content.Shared/Botany/Traits/Systems/PlantTraitScreamSystem.cs @@ -10,7 +10,7 @@ public sealed partial class PlantTraitScreamSystem : EntitySystem [Dependency] private SharedAudioSystem _audio = default!; [SubscribeLocalEvent] - private void OnAfterDoHarvest(Entity ent, ref AfterDoHarvestEvent args) + private void OnPlantHarvested(Entity ent, ref PlantHarvestedEvent args) { _audio.PlayPredicted(ent.Comp.ScreamSound, ent, args.User); } diff --git a/Content.Shared/EntityEffects/Effects/Botany/PlantAttributes/PlantAdjustPestsEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/Botany/PlantAttributes/PlantAdjustPestsEntityEffectSystem.cs index 2637133b0f..4a2273e3f5 100644 --- a/Content.Shared/EntityEffects/Effects/Botany/PlantAttributes/PlantAdjustPestsEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/Botany/PlantAttributes/PlantAdjustPestsEntityEffectSystem.cs @@ -13,7 +13,7 @@ public sealed partial class PlantAdjustPestsEntityEffectSystem : EntityEffectSys protected override void Effect(Entity entity, ref EntityEffectEvent args) { - if (!_plantTray.TryGetAlivePlant(entity.AsNullable())) + if (!_plantTray.HasAlivePlant(entity.AsNullable())) return; _plantTray.AdjustPest(entity.AsNullable(), args.Effect.Amount); diff --git a/Content.Shared/EntityEffects/Effects/Botany/PlantAttributes/PlantAdjustToxinsEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/Botany/PlantAttributes/PlantAdjustToxinsEntityEffectSystem.cs index 6254dcb5a9..cbf37a53a6 100644 --- a/Content.Shared/EntityEffects/Effects/Botany/PlantAttributes/PlantAdjustToxinsEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/Botany/PlantAttributes/PlantAdjustToxinsEntityEffectSystem.cs @@ -13,7 +13,7 @@ public sealed partial class PlantAdjustToxinsEntityEffectSystem : EntityEffectSy protected override void Effect(Entity entity, ref EntityEffectEvent args) { - if (!_plantTray.TryGetAlivePlant(entity.AsNullable())) + if (!_plantTray.HasAlivePlant(entity.AsNullable())) return; _plantTray.AdjustToxin(entity.AsNullable(), args.Effect.Amount); diff --git a/Content.Shared/EntityEffects/Effects/Botany/PlantAttributes/PlantAdjustWeedsEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/Botany/PlantAttributes/PlantAdjustWeedsEntityEffectSystem.cs index 7c94309631..12e26f284c 100644 --- a/Content.Shared/EntityEffects/Effects/Botany/PlantAttributes/PlantAdjustWeedsEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/Botany/PlantAttributes/PlantAdjustWeedsEntityEffectSystem.cs @@ -13,7 +13,7 @@ public sealed partial class PlantAdjustWeedsEntityEffectSystem : EntityEffectSys protected override void Effect(Entity entity, ref EntityEffectEvent args) { - if (!_plantTray.TryGetAlivePlant(entity.AsNullable())) + if (!_plantTray.HasAlivePlant(entity.AsNullable())) return; _plantTray.AdjustWeed(entity.AsNullable(), args.Effect.Amount); diff --git a/Content.Shared/EntityEffects/Effects/Botany/PlantAttributes/PlantChangeTraitsEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/Botany/PlantAttributes/PlantChangeTraitsEntityEffectSystem.cs index 89ac66a2c1..129c16bde5 100644 --- a/Content.Shared/EntityEffects/Effects/Botany/PlantAttributes/PlantChangeTraitsEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/Botany/PlantAttributes/PlantChangeTraitsEntityEffectSystem.cs @@ -1,6 +1,7 @@ using Content.Shared.Botany.Components; using Content.Shared.Botany.Systems; using Content.Shared.Botany.Traits.Components; +using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; namespace Content.Shared.EntityEffects.Effects.Botany.PlantAttributes; @@ -27,10 +28,23 @@ public sealed partial class PlantChangeTraitsEntityEffectSystem : EntityEffectSy return; } - if (args.Effect.Remove) - RemCompDeferred(entity.Owner, traitType.GetType()); - else if (!HasComp(entity.Owner, traitType.GetType())) - AddComp(entity.Owner, traitType); + switch (args.Effect.Type) + { + case PlantChangeTraits.TraitModifyType.Add: + AddComp(entity.Owner, traitType); + break; + case PlantChangeTraits.TraitModifyType.Remove: + RemCompDeferred(entity.Owner, traitType.GetType()); + break; + case PlantChangeTraits.TraitModifyType.Toggle: + if (HasComp(entity.Owner, traitType.GetType())) + RemCompDeferred(entity.Owner, traitType.GetType()); + else + AddComp(entity.Owner, traitType); + break; + default: + break; + } } } @@ -44,8 +58,37 @@ public sealed partial class PlantChangeTraits : EntityEffectBase - /// If true, the trait is removed. If false, the trait is added. + /// Defines how the trait should be modified. /// [DataField] - public bool Remove; + public TraitModifyType Type = TraitModifyType.Toggle; + + public enum TraitModifyType + { + /// + /// Adds the trait if it is not already present. + /// + Add, + + /// + /// Removes the trait if it is present. + /// + Remove, + + /// + /// Adds the trait if it is not present, or removes it if it is already present. + /// + Toggle + } + + public override string? EntityEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys) + { + var component = IoCManager.Resolve().GetComponent(Trait); + if (component is not PlantTraitsComponent plantTrait || plantTrait.TraitName is not { } traitName) + { + return null; + } + + return Loc.GetString("entity-effect-guidebook-plant-change-trait", [("change", Type.ToString()), ("chance", Probability), ("trait", Loc.GetString(traitName))]); + } } diff --git a/Content.Shared/EntityEffects/Effects/Botany/PlantAttributes/PlantPhalanximineEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/Botany/PlantAttributes/PlantPhalanximineEntityEffectSystem.cs deleted file mode 100644 index c37c6876cb..0000000000 --- a/Content.Shared/EntityEffects/Effects/Botany/PlantAttributes/PlantPhalanximineEntityEffectSystem.cs +++ /dev/null @@ -1,30 +0,0 @@ -using Content.Shared.Botany.Components; -using Content.Shared.Botany.Systems; -using Content.Shared.Botany.Traits.Components; -using Robust.Shared.Prototypes; - -namespace Content.Shared.EntityEffects.Effects.Botany.PlantAttributes; - -/// -/// Entity effect that removes the from a plant. -/// -/// -public sealed partial class PlantPhalanximineEntityEffectSystem : EntityEffectSystem -{ - [Dependency] private PlantHolderSystem _plantHolder = default!; - - protected override void Effect(Entity entity, ref EntityEffectEvent args) - { - if (_plantHolder.IsDead(entity.Owner)) - return; - - RemCompDeferred(entity.Owner); - } -} - -/// -public sealed partial class PlantPhalanximine : EntityEffectBase -{ - public override string EntityEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys) => - Loc.GetString("entity-effect-guidebook-plant-phalanximine", ("chance", Probability)); -} diff --git a/Resources/Locale/en-US/botany/mutations.ftl b/Resources/Locale/en-US/botany/mutations.ftl index 7d09cf8d73..a4575fbfbe 100644 --- a/Resources/Locale/en-US/botany/mutations.ftl +++ b/Resources/Locale/en-US/botany/mutations.ftl @@ -1,8 +1,16 @@ -mutation-plant-kudzu = It is growing unusually fast and thin. -mutation-plant-ligneous = It is woody and will need a sharp tool to harvest. -mutation-plant-scream = This plant seems nervous somehow. mutation-plant-sentient = It seems to be examining its surroundings. mutation-plant-slippery = It is slick to the touch. -mutation-plant-unviable = It is wilting and sickly. -mutation-plant-seedless = Its harvested produce is seedless. -mutation-plant-sampled = It has already been sampled. + +mutation-plant-description-kudzu = It is growing unusually fast and thin. +mutation-plant-description-ligneous = It is woody and will need a sharp tool to harvest. +mutation-plant-description-scream = This plant seems nervous somehow. +mutation-plant-description-unviable = It is wilting and sickly. +mutation-plant-description-seedless = Its harvested produce is seedless. +mutation-plant-description-sampled = It has already been sampled. + +mutation-plant-noun-kudzu = kudzu growth +mutation-plant-noun-ligneous = ligneous growth +mutation-plant-noun-scream = mandragora +mutation-plant-noun-unviable = unviability +mutation-plant-noun-seedless = seedlessness +mutation-plant-noun-sampled = clip scarring diff --git a/Resources/Locale/en-US/guidebook/entity-effects/effects.ftl b/Resources/Locale/en-US/guidebook/entity-effects/effects.ftl index 6602db9b38..be6ee682d3 100644 --- a/Resources/Locale/en-US/guidebook/entity-effects/effects.ftl +++ b/Resources/Locale/en-US/guidebook/entity-effects/effects.ftl @@ -510,6 +510,22 @@ entity-effect-guidebook-plant-seeds-remove = *[other] remove the } seeds of the plant +entity-effect-guidebook-plant-change-trait = + { $chance -> + [1] { $change -> + [Add] adds {$trait} to + [Remove] removes {$trait} from + [Toggle] toggles {$trait} on + *[other] changes {$trait} on + } + *[other] { $change -> + [Add] add {$trait} to + [Remove] remove {$trait} from + [Toggle] toggle {$trait} on + *[other] change {$trait} on + } + } the plant + entity-effect-guidebook-plant-mutate-exude-gasses = { $chance -> [1] Mutates diff --git a/Resources/Prototypes/Hydroponics/plants.yml b/Resources/Prototypes/Hydroponics/plants.yml index e61f97b2dc..363586da45 100644 --- a/Resources/Prototypes/Hydroponics/plants.yml +++ b/Resources/Prototypes/Hydroponics/plants.yml @@ -1195,6 +1195,8 @@ yield: 2 potency: 20 growthStages: 3 + - type: PlantHarvest + harvestRepeat: Repeat - type: PlantGrowth waterConsumption: 0.4 - type: PlantAtmospheric @@ -1225,6 +1227,8 @@ production: 12 yield: 2 potency: 20 + - type: PlantHarvest + harvestRepeat: Repeat - type: PlantGrowth nutrientConsumption: 0.5 - type: PlantAtmospheric diff --git a/Resources/Prototypes/Hydroponics/randomMutations.yml b/Resources/Prototypes/Hydroponics/randomMutations.yml index f2c6a64bd2..4f8e52e81d 100644 --- a/Resources/Prototypes/Hydroponics/randomMutations.yml +++ b/Resources/Prototypes/Hydroponics/randomMutations.yml @@ -160,7 +160,7 @@ targetComponent: Plant targetDataField: Yield applyRange: - min: 3 + min: 4 max: 10 up: !type:PlantAdjustYield amount: 1 diff --git a/Resources/Prototypes/Reagents/botany.yml b/Resources/Prototypes/Reagents/botany.yml index 9dea63ecab..c76e5eb83c 100644 --- a/Resources/Prototypes/Reagents/botany.yml +++ b/Resources/Prototypes/Reagents/botany.yml @@ -93,7 +93,7 @@ amount: 0.1 - !type:PlantChangeTraits trait: PlantTraitKudzu - remove: true + type: Remove metabolisms: Bloodstream: effects: diff --git a/Resources/Prototypes/Reagents/medicine.yml b/Resources/Prototypes/Reagents/medicine.yml index dc258cdf84..a2835edd24 100644 --- a/Resources/Prototypes/Reagents/medicine.yml +++ b/Resources/Prototypes/Reagents/medicine.yml @@ -594,7 +594,9 @@ plantMetabolism: - !type:PlantAdjustToxins amount: 6 - - !type:PlantPhalanximine + - !type:PlantChangeTraits + trait: PlantTraitUnviable + type: Remove minScale: 4 metabolisms: Bloodstream: From 91f73d94c4c46752a34a2112bffadb2a5c9c0d6c Mon Sep 17 00:00:00 2001 From: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Date: Sun, 6 Sep 2026 18:09:02 +0000 Subject: [PATCH 085/197] Mark invalid actions as invalid (#45838) * crazy * another check --- Content.Shared/Actions/SharedActionsSystem.cs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Content.Shared/Actions/SharedActionsSystem.cs b/Content.Shared/Actions/SharedActionsSystem.cs index 977177193a..314273e966 100644 --- a/Content.Shared/Actions/SharedActionsSystem.cs +++ b/Content.Shared/Actions/SharedActionsSystem.cs @@ -370,13 +370,23 @@ public abstract partial class SharedActionsSystem : EntitySystem var target = GetEntity(netTarget); + // Already checked in validation, but GetWorldPosition causes errors if the entity doesn't exist. + if (TerminatingOrDeleted(target)) + { + args.Invalid = true; + return; + } + var targetWorldPos = _transform.GetWorldPosition(target); if (ent.Comp.RotateOnUse) _rotateToFace.TryFaceCoordinates(user, targetWorldPos); if (!ValidateEntityTarget(user, target, ent)) + { + args.Invalid = true; return; + } _adminLogger.Add(LogType.Action, $"{ToPrettyString(user):user} is performing the {Name(ent):action} action (provided by {ToPrettyString(args.Provider):provider}) targeted at {ToPrettyString(target):target}."); @@ -399,7 +409,10 @@ public abstract partial class SharedActionsSystem : EntitySystem _rotateToFace.TryFaceCoordinates(user, _transform.ToMapCoordinates(target).Position); if (!ValidateWorldTarget(user, target, ent)) + { + args.Invalid = true; return; + } // if the client specified an entity it needs to be valid var targetEntity = GetEntity(args.Input.EntityTarget); From f5149c4cad5b6ef3a376717c21b7a855182ced3e Mon Sep 17 00:00:00 2001 From: eoineoineoin Date: Sun, 6 Sep 2026 23:02:21 +0000 Subject: [PATCH 086/197] Fix switch button (#45549) Fix workaround --- .../UserInterface/Controls/SwitchButton.cs | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/Content.Client/UserInterface/Controls/SwitchButton.cs b/Content.Client/UserInterface/Controls/SwitchButton.cs index c3aedea7f2..239be78813 100644 --- a/Content.Client/UserInterface/Controls/SwitchButton.cs +++ b/Content.Client/UserInterface/Controls/SwitchButton.cs @@ -146,14 +146,11 @@ namespace Content.Client.UserInterface.Controls if (relevantChangeMade) { - Label.RemoveStyleClass("dummy"); - TrackFill.RemoveStyleClass("dummy"); - TrackOutline.RemoveStyleClass("dummy"); - ThumbFill.RemoveStyleClass("dummy"); - ThumbOutline.RemoveStyleClass("dummy"); - Symbol.RemoveStyleClass("dummy"); - OffStateLabel.RemoveStyleClass("dummy"); - OnStateLabel.RemoveStyleClass("dummy"); + foreach (var c in Children) + { + c.AddStyleClass("dummy"); + c.RemoveStyleClass("dummy"); + } } // no base.DrawModeChanged() call - ContainerButton's pseudoclass handling From df27f47c262c8cf7dcedea6b357bfc8d92d10498 Mon Sep 17 00:00:00 2001 From: jckspjf Date: Mon, 7 Sep 2026 07:01:48 +0000 Subject: [PATCH 087/197] Changelings as Foreign Invaders (#45647) ling foreign invader --- .../ServerInfo/Guidebook/ServerRules/SpaceLaw/SpaceLaw.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Resources/ServerInfo/Guidebook/ServerRules/SpaceLaw/SpaceLaw.xml b/Resources/ServerInfo/Guidebook/ServerRules/SpaceLaw/SpaceLaw.xml index 23d9150ba2..e3875de452 100644 --- a/Resources/ServerInfo/Guidebook/ServerRules/SpaceLaw/SpaceLaw.xml +++ b/Resources/ServerInfo/Guidebook/ServerRules/SpaceLaw/SpaceLaw.xml @@ -2,7 +2,7 @@ # Space Law On Space Station 14, stations operate under abbreviated space law. All crew, passengers, and visitors aboard the station are expected to follow these laws. - Foreign invaders, such as nuclear operatives, ninjas, and pirates, are not protected under space law. Traitors are not foreign invaders, so they are usually protected by space law. + Foreign invaders, such as nuclear operatives, ninjas, changelings, and pirates, are not protected under space law. Traitors are not foreign invaders, so they are usually protected by space law. Space Law is not the server rules, but some rules reference Space Law and require it to be followed by certain people or to some degree. @@ -23,7 +23,7 @@ - Highly Illegal Contraband: Highly illegal contraband includes Syndicate contraband and magical contraband. Without explicit authorization from Central Command, highly illegal contraband may only be used in the event of dire, immediate emergencies, and only to prevent death or gross bodily harm. Once the emergency is dealt with, the contraband should be stored in a secure location. Security is obligated to seize contraband through routine searches or when processing criminals in the brig, but may prioritize other duties over confiscation if they see fit. With regards to contraband usage, Security is expected to follow the same regulations as everyone else. Confiscated contraband should be transferred to the Security department for secure storage or permanently disposed of. Collaborating with Cargo to sell confiscated contraband is highly encouraged, as it generally fetches a high value. - + ## Search and Seizure A personnel search is the inspection and seizure of a crewmember's possessions. If any contraband is found during a search, the officer should confiscate the restricted items. Non-restricted items may be seized by Security if they were used to facilitate a crime. After the search is conducted, all legal items are to be returned to the person. A crewmate may legally decline any search conducted without probable cause or a warrant while the alert level is green. Random searches without probable cause or a warrant are permitted at any other alert level. @@ -57,7 +57,7 @@ - Example: A suspect has committed a 2-01 (Grand Theft) and a 3-04 (Kidnapping). The maximum allowable sentence time would be 10 minutes because 3-04 is the more severe crime. - Example 2: A suspect commits a 4-00 (Breach of Custody) and a 4-04 (Attempted Murder). Those crimes are equally severe; the maximum allowable sentence is 15 minutes. - Example 3: A suspect committed a 4-04 (Attempted Murder) previously during the shift, and has done so again, committing a 2-03 (Secure Trespass) in the process. The maximum allowable sentence is 18 minutes. 15 base for the 4-04, and 3 additional for being a repeat offender. - + Remember, context matters greatly, and maximum sentences should be reserved for the worst offenders. [color=#a4885c]Repeat Offenders:[/color] A repeated crime occurs when someone is released after committing a crime and then commits the same crime again during the same shift. Repeated crimes can be charged with tacked-on time; first repeat: 3:00, second repeat: 6:00, third repeat: Permanent Confinement. It should be noted that each tacked-on time is directly linked to one charge, and that in the instance of multiple crimes being committed, you should use the longer time for the maximum allowable sentence. For example, if someone does their second repeat of Assault and one count of Kidnapping, their maximum allowable sentence would be 11 minutes. 5 from the Moderate crime of Assault, plus 6 from the second repeat. From 8e8eab78803c8d97f8061c5e1253d548c3779e05 Mon Sep 17 00:00:00 2001 From: Emisse <99158783+Emisse@users.noreply.github.com> Date: Mon, 7 Sep 2026 07:20:41 +0000 Subject: [PATCH 088/197] update map protos (#45900) * bagel * boxy grandpa * Update elkridge.yml * sexo * destiny 2 * phoron * snowballs * sashimi * tram2 * oop --- Resources/Prototypes/Maps/bagel.yml | 10 +++++----- Resources/Prototypes/Maps/box.yml | 8 ++++---- Resources/Prototypes/Maps/elkridge.yml | 8 ++++---- Resources/Prototypes/Maps/exo.yml | 8 ++++---- Resources/Prototypes/Maps/marathon.yml | 8 ++++---- Resources/Prototypes/Maps/plasma.yml | 12 ++++++------ Resources/Prototypes/Maps/snowball.yml | 2 +- Resources/Prototypes/Maps/sushi.yml | 7 +++---- Resources/Prototypes/Maps/tram2.yml | 21 ++++++++++----------- 9 files changed, 41 insertions(+), 43 deletions(-) diff --git a/Resources/Prototypes/Maps/bagel.yml b/Resources/Prototypes/Maps/bagel.yml index 667a273236..468823a03c 100644 --- a/Resources/Prototypes/Maps/bagel.yml +++ b/Resources/Prototypes/Maps/bagel.yml @@ -27,12 +27,12 @@ #service (8-11) Bartender: [ 1, 1 ] Botanist: [ 2, 2 ] - Chef: [ 1, 1 ] + Chef: [ 2, 2 ] Janitor: [ 2, 2 ] Chaplain: [ 1, 1 ] Librarian: [ 1, 1 ] - ServiceWorker: [ 1, 2 ] - Reporter: [ 1, 2 ] + ServiceWorker: [ 2, 2 ] + Reporter: [ 2, 2 ] #engineering (6-8) AtmosphericTechnician: [ 2, 2 ] StationEngineer: [ 4, 4 ] @@ -47,7 +47,7 @@ ResearchAssistant: [ 2, 2 ] #security (9-10) Warden: [ 1, 1 ] - SecurityOfficer: [ 5, 5 ] + SecurityOfficer: [ 6, 6 ] Detective: [ 1, 1 ] SecurityCadet: [ 2, 2 ] Lawyer: [ 1, 1 ] @@ -61,4 +61,4 @@ Musician: [ 1, 1 ] #silicon (3) StationAi: [ 1, 1 ] - Borg: [ 2, 2 ] + Borg: [ 3, 3 ] diff --git a/Resources/Prototypes/Maps/box.yml b/Resources/Prototypes/Maps/box.yml index 4ddae1d5d3..0d5461bb62 100644 --- a/Resources/Prototypes/Maps/box.yml +++ b/Resources/Prototypes/Maps/box.yml @@ -27,11 +27,11 @@ #service (8-10) Bartender: [ 1, 1 ] Botanist: [ 2, 2 ] - Chef: [ 1, 1 ] + Chef: [ 2, 2 ] Janitor: [ 2, 2 ] Chaplain: [ 1, 1 ] Librarian: [ 1, 1 ] - ServiceWorker: [ 1, 1 ] + ServiceWorker: [ 2, 2 ] Reporter: [ 1, 1 ] #engineering (6-8) AtmosphericTechnician: [ 2, 2 ] @@ -47,7 +47,7 @@ ResearchAssistant: [ 2, 2 ] #security (10-11) Warden: [ 1, 1 ] - SecurityOfficer: [ 5, 5 ] + SecurityOfficer: [ 6, 6 ] Detective: [ 1, 1 ] SecurityCadet: [ 2, 2 ] Lawyer: [ 1, 1 ] @@ -61,4 +61,4 @@ Musician: [ 1, 1 ] #silicon (3) StationAi: [ 1, 1 ] - Borg: [ 2, 2 ] + Borg: [ 3, 3 ] diff --git a/Resources/Prototypes/Maps/elkridge.yml b/Resources/Prototypes/Maps/elkridge.yml index 0c559d9063..16309d87b9 100644 --- a/Resources/Prototypes/Maps/elkridge.yml +++ b/Resources/Prototypes/Maps/elkridge.yml @@ -2,7 +2,7 @@ id: Elkridge mapName: 'Elkridge Depot' mapPath: /Maps/elkridge.yml - minPlayers: 25 + minPlayers: 20 maxPlayers: 44 stations: Elkridge: @@ -30,8 +30,8 @@ #service 7-11 Bartender: [ 1, 1 ] Botanist: [ 2, 2 ] - Chef: [ 1, 1 ] - Janitor: [ 1, 2 ] + Chef: [ 2, 2 ] + Janitor: [ 2, 2 ] Chaplain: [ 1, 1 ] Librarian: [ 1, 1 ] Reporter: [ 1, 1 ] @@ -45,7 +45,7 @@ MedicalDoctor: [ 3, 3 ] MedicalIntern: [ 2, 2 ] Paramedic: [ 1, 1 ] - Psychologist: [ 0, 1 ] + Psychologist: [ 1, 1 ] #science 5-6 Scientist: [ 4, 4 ] ResearchAssistant: [ 2, 2 ] diff --git a/Resources/Prototypes/Maps/exo.yml b/Resources/Prototypes/Maps/exo.yml index 314aa52d4d..a0aa5c83ab 100644 --- a/Resources/Prototypes/Maps/exo.yml +++ b/Resources/Prototypes/Maps/exo.yml @@ -29,11 +29,11 @@ #service (8-10) Bartender: [ 1, 1 ] Botanist: [ 2, 2 ] - Chef: [ 1, 1 ] + Chef: [ 2, 2 ] Janitor: [ 2, 2 ] Chaplain: [ 1, 1 ] Librarian: [ 1, 1 ] - ServiceWorker: [ 1, 2 ] + ServiceWorker: [ 2, 2 ] Reporter: [ 1, 1 ] #engineering (6-8) AtmosphericTechnician: [ 2, 2 ] @@ -49,7 +49,7 @@ ResearchAssistant: [ 2, 2 ] #security (10-11) Warden: [ 1, 1 ] - SecurityOfficer: [ 5, 5 ] + SecurityOfficer: [ 6, 6 ] Detective: [ 1, 1 ] SecurityCadet: [ 2, 2 ] Lawyer: [ 1, 1 ] @@ -63,4 +63,4 @@ Musician: [ 1, 1 ] #silicon (3) StationAi: [ 1, 1 ] - Borg: [ 2, 2 ] + Borg: [ 3, 3 ] diff --git a/Resources/Prototypes/Maps/marathon.yml b/Resources/Prototypes/Maps/marathon.yml index d9670cdfaa..15bc108f8f 100644 --- a/Resources/Prototypes/Maps/marathon.yml +++ b/Resources/Prototypes/Maps/marathon.yml @@ -27,11 +27,11 @@ #service (7-9) Bartender: [ 1, 1 ] Botanist: [ 2, 2 ] - Chef: [ 1, 1 ] + Chef: [ 2, 2 ] Janitor: [ 2, 2 ] Chaplain: [ 1, 1 ] Librarian: [ 1, 1 ] - ServiceWorker: [ 1, 1 ] + ServiceWorker: [ 2, 2 ] #engineering (6-8) AtmosphericTechnician: [ 2, 2 ] StationEngineer: [ 4, 4 ] @@ -46,7 +46,7 @@ ResearchAssistant: [ 2, 2 ] #security (10-11) Warden: [ 1, 1 ] - SecurityOfficer: [ 5, 5 ] + SecurityOfficer: [ 6, 6 ] Detective: [ 1, 1 ] SecurityCadet: [ 2, 2 ] Lawyer: [ 1, 1 ] @@ -60,4 +60,4 @@ Musician: [ 1, 1 ] #silicon (3) StationAi: [ 1, 1 ] - Borg: [ 2, 2 ] + Borg: [ 3, 3 ] diff --git a/Resources/Prototypes/Maps/plasma.yml b/Resources/Prototypes/Maps/plasma.yml index 358a465ab7..3f34bd38ab 100644 --- a/Resources/Prototypes/Maps/plasma.yml +++ b/Resources/Prototypes/Maps/plasma.yml @@ -2,8 +2,8 @@ id: Plasma mapName: 'Plasma' mapPath: /Maps/plasma.yml - minPlayers: 25 - maxPlayers: 44 + minPlayers: 30 + maxPlayers: 65 stations: Plasma: stationProto: StandardNanotrasenStation @@ -30,7 +30,7 @@ #service 7-11 Bartender: [ 1, 1 ] Botanist: [ 2, 2 ] - Chef: [ 1, 1 ] + Chef: [ 2, 2 ] Janitor: [ 2, 2 ] Chaplain: [ 1, 1 ] Librarian: [ 1, 1 ] @@ -42,10 +42,10 @@ TechnicalAssistant: [ 2, 2 ] #medical 7-9 Chemist: [ 2, 2 ] - MedicalDoctor: [ 2, 2 ] + MedicalDoctor: [ 3, 3 ] MedicalIntern: [ 2, 2 ] Paramedic: [ 1, 1 ] - Psychologist: [ 0, 1 ] + Psychologist: [ 1, 1 ] #science 5-6 Scientist: [ 4, 4 ] ResearchAssistant: [ 2, 2 ] @@ -56,7 +56,7 @@ SecurityCadet: [ 2, 2 ] Lawyer: [ 1, 1 ] #supply 4 - SalvageSpecialist: [ 2, 2 ] + SalvageSpecialist: [ 3, 3 ] CargoTechnician: [ 2, 2 ] #civilian 2-3 + overflow Passenger: [ -1, -1 ] diff --git a/Resources/Prototypes/Maps/snowball.yml b/Resources/Prototypes/Maps/snowball.yml index be21be41b8..5db8187289 100644 --- a/Resources/Prototypes/Maps/snowball.yml +++ b/Resources/Prototypes/Maps/snowball.yml @@ -3,7 +3,7 @@ mapName: 'Snowball Station' mapPath: /Maps/snowball.yml minPlayers: 5 - maxPlayers: 24 + maxPlayers: 25 stations: Snowball: stationProto: StandardNanotrasenStation diff --git a/Resources/Prototypes/Maps/sushi.yml b/Resources/Prototypes/Maps/sushi.yml index ccab784749..661877df55 100644 --- a/Resources/Prototypes/Maps/sushi.yml +++ b/Resources/Prototypes/Maps/sushi.yml @@ -3,7 +3,6 @@ mapName: 'Sushi Station' mapPath: /Maps/sushi.yml minPlayers: 45 - maxPlayers: 70 stations: Sushi: stationProto: StandardNanotrasenStation @@ -26,7 +25,7 @@ ResearchDirector: [ 1, 1 ] Quartermaster: [ 1, 1 ] # Service (11-13) - Bartender: [ 2, 2 ] + Bartender: [ 1, 1 ] Botanist: [ 2, 2 ] Chef: [ 2, 2 ] Janitor: [ 2, 2 ] @@ -35,7 +34,7 @@ Reporter: [ 1, 1 ] ServiceWorker: [ 1, 2 ] # Engineering (7-9) - AtmosphericTechnician: [ 3, 3 ] + AtmosphericTechnician: [ 2, 2 ] StationEngineer: [ 4, 4 ] TechnicalAssistant: [ 2, 2 ] # Medical (8-10) @@ -49,7 +48,7 @@ ResearchAssistant: [ 2, 2 ] # Security (9-11) Warden: [ 1, 1 ] - SecurityOfficer: [ 5, 5 ] + SecurityOfficer: [ 6, 6 ] Detective: [ 1, 1 ] SecurityCadet: [ 2, 2 ] Lawyer: [ 2, 2 ] diff --git a/Resources/Prototypes/Maps/tram2.yml b/Resources/Prototypes/Maps/tram2.yml index eeacde1806..6dde98eaac 100644 --- a/Resources/Prototypes/Maps/tram2.yml +++ b/Resources/Prototypes/Maps/tram2.yml @@ -4,7 +4,6 @@ mapPath: /Maps/tram2.yml maxRandomOffset: 0 minPlayers: 45 - maxPlayers: 65 stations: Tram2: stationProto: StandardNanotrasenStation @@ -21,7 +20,7 @@ #service 13-15 Captain: [ 1, 1 ] HeadOfPersonnel: [ 1, 1 ] - Bartender: [ 1, 2 ] + Bartender: [ 1, 1 ] Botanist: [ 2, 2 ] Chef: [ 2, 2 ] Janitor: [ 2, 2 ] @@ -32,29 +31,29 @@ TramDriver: [ 1, 1 ] #engineering 9 ChiefEngineer: [ 1, 1 ] - AtmosphericTechnician: [ 3, 3 ] - StationEngineer: [ 3, 3 ] + AtmosphericTechnician: [ 2, 2 ] + StationEngineer: [ 4, 4 ] TechnicalAssistant: [ 2, 2 ] #medical 10 ChiefMedicalOfficer: [ 1, 1 ] Chemist: [ 2, 2 ] - MedicalDoctor: [ 3, 3 ] + MedicalDoctor: [ 4, 4 ] MedicalIntern: [ 2, 2 ] - Paramedic: [ 1, 2 ] + Paramedic: [ 1, 1 ] Psychologist: [1, 1] #science 6 ResearchDirector: [ 1, 1 ] - Scientist: [ 3, 3 ] + Scientist: [ 4, 4 ] ResearchAssistant: [ 2, 2 ] #security 8-9 HeadOfSecurity: [ 1, 1 ] Warden: [ 1, 1 ] - SecurityOfficer: [ 3, 3 ] + SecurityOfficer: [ 6, 6 ] SecurityCadet: [ 2, 2 ] - Lawyer: [ 1, 2 ] + Lawyer: [ 1, 1 ] #supply 6 Quartermaster: [ 1, 1 ] - SalvageSpecialist: [ 2, 2 ] + SalvageSpecialist: [ 3, 3 ] CargoTechnician: [ 3, 3 ] #civilian 4+ Passenger: [ -1, -1 ] @@ -64,4 +63,4 @@ Reporter: [ 1, 1 ] #silicon 3 StationAi: [ 1, 1 ] - Borg: [ 2, 2 ] + Borg: [ 3, 3 ] From 5b651ae9610f3816d70575d86dd51292a34eb403 Mon Sep 17 00:00:00 2001 From: Artem Lytkin <146867384+4RH1T3CT0R7@users.noreply.github.com> Date: Mon, 7 Sep 2026 08:40:40 +0000 Subject: [PATCH 089/197] Rename AsimovCircuitBoard to CrewsimovCircuitBoard (#45896) The prototype ID still said Asimov while the board's name, description and lawset are all Crewsimov. Add a migration entry since ten station maps place the old ID. --- .../Entities/Objects/Devices/Circuitboards/law_boards.yml | 2 +- Resources/migration.yml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/law_boards.yml b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/law_boards.yml index f1f0fd8d48..412edd5afb 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/law_boards.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/law_boards.yml @@ -23,7 +23,7 @@ laws: NTDefault - type: entity - id: AsimovCircuitBoard + id: CrewsimovCircuitBoard parent: BaseSiliconLawboard name: law board (Crewsimov) description: An electronics board containing the Crewsimov lawset. diff --git a/Resources/migration.yml b/Resources/migration.yml index 6532fa1775..28b5393c12 100644 --- a/Resources/migration.yml +++ b/Resources/migration.yml @@ -1132,3 +1132,6 @@ JanitorServiceLight: null #2026-08-31 DrinkWaterJug: JugWater + +#2026-09-05 +AsimovCircuitBoard: CrewsimovCircuitBoard From d9e08320859b4b4c9021f2f71bce290a255ef743 Mon Sep 17 00:00:00 2001 From: Domanik Maresch <63300066+dmaresch@users.noreply.github.com> Date: Mon, 7 Sep 2026 09:16:08 +0000 Subject: [PATCH 090/197] Zombified bloodstreams no longer have a max of 1u (#45465) * change solution from 1u max to 600u max * Added in a helper method to BloodstreamSystem to account for changing the BloodRefreshAmount. Added datafield to ZombieComponent to store the original BloodRefreshAmount on UnZombify. Added a tag 'CannotRegainBlood', that applies in Bloodstream's TryModifyBloodLevel, to account for Saline or other reagents directly modifying blood level. * we properly use a bool this time and not a tag * should probably remove a tag that's unused. makes sense why test failed * remove the tag causing the errors. i forgot the second spot. * remove unneeded reference to TagSystem, scale new BloodReferenceSolution to the previous MaxVolume * set the hardcoded 600 back to a 1 for scaling purposes * removed MetabolizerComponent from organs of zombies during Zombify --- .../Zombies/ZombieSystem.Transform.cs | 16 ++++++++ Content.Server/Zombies/ZombieSystem.cs | 9 +++++ .../Body/Components/BloodstreamComponent.cs | 6 +++ .../Body/Systems/BloodstreamSystem.cs | 38 ++++++++++++++++++- Content.Shared/Zombies/ZombieComponent.cs | 7 ++++ 5 files changed, 75 insertions(+), 1 deletion(-) diff --git a/Content.Server/Zombies/ZombieSystem.Transform.cs b/Content.Server/Zombies/ZombieSystem.Transform.cs index a99a07e335..7b126f57e8 100644 --- a/Content.Server/Zombies/ZombieSystem.Transform.cs +++ b/Content.Server/Zombies/ZombieSystem.Transform.cs @@ -21,6 +21,7 @@ using Content.Shared.Hands.EntitySystems; using Content.Shared.Humanoid; using Content.Shared.IdentityManagement; using Content.Shared.Interaction.Components; +using Content.Shared.Metabolism; using Content.Shared.Mobs; using Content.Shared.Mobs.Components; using Content.Shared.Movement.Pulling.Components; @@ -71,6 +72,7 @@ public sealed partial class ZombieSystem [Dependency] private NPCSystem _npc = default!; [Dependency] private TagSystem _tag = default!; [Dependency] private ISharedPlayerManager _player = default!; + [Dependency] private BodySystem _body = default!; private static readonly ProtoId InvalidForGlobalSpawnSpellTag = "InvalidForGlobalSpawnSpell"; private static readonly ProtoId CannotSuicideTag = "CannotSuicide"; @@ -144,6 +146,13 @@ public sealed partial class ZombieSystem RemComp(target); RemComp(target); + // remove the metabolizer from all the body's organs. they're an undead. + var metabolizerOrgans = _body.EnumerateOrgans(target); + foreach(var organ in metabolizerOrgans) + { + RemComp(organ); + } + //funny voice var accentType = "zombie"; if (TryComp(target, out var accent)) @@ -189,7 +198,11 @@ public sealed partial class ZombieSystem } if (TryComp(target, out var stream) && stream.BloodReferenceSolution is { } reagents) + { zombiecomp.BeforeZombifiedBloodReagents = reagents.Clone(); + // Store the blood refresh amount for cloning later. + zombiecomp.BeforeZombifiedBloodRefresh = stream.BloodRefreshAmount; + } if (_visualBody.TryGatherMarkingsData(target, null, out var profiles, out _, out var markings)) { @@ -253,6 +266,9 @@ public sealed partial class ZombieSystem _bloodstream.SetBloodLossThreshold(target, 0f); //Give them zombie blood _bloodstream.ChangeBloodReagents(target, zombiecomp.NewBloodReagents); + //Stop their blood from automatically regenerating + _bloodstream.ChangeBloodRefreshAmount(target, 0f); + _bloodstream.ChangeBloodIncreaseEnabled(target, false); //This is specifically here to combat insuls, because frying zombies on grilles is funny as shit. _inventory.TryUnequip(target, "gloves", true, true); diff --git a/Content.Server/Zombies/ZombieSystem.cs b/Content.Server/Zombies/ZombieSystem.cs index acfd43bcd4..dde4c8b0c6 100644 --- a/Content.Server/Zombies/ZombieSystem.cs +++ b/Content.Server/Zombies/ZombieSystem.cs @@ -28,6 +28,8 @@ using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Timing; using Content.Server.Ghost.Roles.Components; +using Content.Shared.Medical; +using Content.Shared.Construction.Steps; namespace Content.Server.Zombies { @@ -302,6 +304,13 @@ namespace Content.Server.Zombies _bloodstream.ChangeBloodReagents(target, zombiecomp.BeforeZombifiedBloodReagents); + // Restore the blood refresh amount to what it was before zombification. They can't regain blood otherwise. + _bloodstream.ChangeBloodRefreshAmount(target, zombiecomp.BeforeZombifiedBloodRefresh); + _bloodstream.ChangeBloodIncreaseEnabled(target, true); + + // Remove the tags that we added during Zombification + _tag.RemoveTag(target, CannotSuicideTag); + _tag.RemoveTag(target, InvalidForGlobalSpawnSpellTag); return true; } diff --git a/Content.Shared/Body/Components/BloodstreamComponent.cs b/Content.Shared/Body/Components/BloodstreamComponent.cs index dc9991af01..1fc11d541d 100644 --- a/Content.Shared/Body/Components/BloodstreamComponent.cs +++ b/Content.Shared/Body/Components/BloodstreamComponent.cs @@ -107,6 +107,12 @@ public sealed partial class BloodstreamComponent : Component [DataField, AutoNetworkedField] public FixedPoint2 BleedPuddleThreshold = 1.0f; + /// + /// Should we allow entities to regain their blood? This affects blood increase from reagents and topicals. + /// + [DataField, AutoNetworkedField] + public bool BloodIncreaseEnabled = true; + /// /// A modifier set prototype ID corresponding to how damage should be modified /// before taking it into account for bloodloss. diff --git a/Content.Shared/Body/Systems/BloodstreamSystem.cs b/Content.Shared/Body/Systems/BloodstreamSystem.cs index 532b3928cb..7537e20cbc 100644 --- a/Content.Shared/Body/Systems/BloodstreamSystem.cs +++ b/Content.Shared/Body/Systems/BloodstreamSystem.cs @@ -433,6 +433,9 @@ public sealed partial class BloodstreamSystem : EntitySystem || amount == 0) return false; + if (!ent.Comp.BloodIncreaseEnabled && amount > 0) + return false; + // TODO: Either make this percentage based regeneration and pre-pass the percentage. // TODO: Solution regulation API that doesn't result in very minor FixedPoint2 errors (Currently gingerbreadman only regenerates 0.99u instead of 1.00u) referenceFactor = Math.Clamp(referenceFactor, 0f, ent.Comp.MaxVolumeModifier); @@ -591,7 +594,12 @@ public sealed partial class BloodstreamSystem : EntitySystem currentVolume += bloodSolution.RemoveReagent(reagent.Reagent, quantity: bloodSolution.Volume, ignoreReagentData: true); } - ent.Comp.BloodReferenceSolution = reagents.Clone(); + // Scale the solution to the volume of the blood. + var newReagentsSolution = reagents.Clone(); + newReagentsSolution.ScaleTo(ent.Comp.BloodReferenceSolution.MaxVolume); + + // Set the scaled solution as the new blood reference. + ent.Comp.BloodReferenceSolution = newReagentsSolution; DirtyField(ent, ent.Comp, nameof(BloodstreamComponent.BloodReferenceSolution)); if (currentVolume == FixedPoint2.Zero) @@ -602,6 +610,34 @@ public sealed partial class BloodstreamSystem : EntitySystem _solutionContainer.AddSolution(ent.Comp.BloodSolution.Value, solution); } + /// + /// Change how much blood is recovered in a bloodstream. + /// + public void ChangeBloodRefreshAmount(Entity ent, FixedPoint2 amount) + { + if(!Resolve(ent, ref ent.Comp, logMissing: false)) + { + return; + } + if(amount < 0f) + { + amount = 0f; + } + ent.Comp.BloodRefreshAmount = amount; + DirtyField(ent, ent.Comp, nameof(BloodstreamComponent.BloodRefreshAmount)); + } + + /// + /// Change whether or not blood can be increased in a bloodstream. + /// + public void ChangeBloodIncreaseEnabled(Entity ent, bool status = true) + { + if (!Resolve(ent, ref ent.Comp, logMissing: false)) + return; + ent.Comp.BloodIncreaseEnabled = status; + DirtyField(ent, ent.Comp, nameof(BloodstreamComponent.BloodIncreaseEnabled)); + } + /// /// Get the reagent data for blood that a specific entity should have. /// diff --git a/Content.Shared/Zombies/ZombieComponent.cs b/Content.Shared/Zombies/ZombieComponent.cs index 2c04cd1c19..4b8c9e5bd0 100644 --- a/Content.Shared/Zombies/ZombieComponent.cs +++ b/Content.Shared/Zombies/ZombieComponent.cs @@ -2,6 +2,7 @@ using Content.Shared.Body; using Content.Shared.Chat.Prototypes; using Content.Shared.Chemistry.Components; using Content.Shared.Damage; +using Content.Shared.FixedPoint; using Content.Shared.Humanoid; using Content.Shared.Humanoid.Markings; using Content.Shared.Roles; @@ -146,6 +147,12 @@ public sealed partial class ZombieComponent : Component [DataField] public SoundSpecifier BiteSound = new SoundPathSpecifier("/Audio/Effects/bite.ogg"); + /// + /// The blood refresh of the humanoid to restore in case of cloning. + /// + [DataField] + public FixedPoint2 BeforeZombifiedBloodRefresh = new(); + /// /// The blood reagents of the humanoid to restore in case of cloning /// From c33a5f9f7451daaddbd4a9d476034c950a27114e Mon Sep 17 00:00:00 2001 From: Whatstone <166147148+whatston3@users.noreply.github.com> Date: Mon, 7 Sep 2026 09:38:21 +0000 Subject: [PATCH 091/197] Avoid exception in ActionButton.UpdateBackground (#45872) Fix exception on ActionButton.UpdateBackground --- .../UserInterface/Systems/Actions/Controls/ActionButton.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Content.Client/UserInterface/Systems/Actions/Controls/ActionButton.cs b/Content.Client/UserInterface/Systems/Actions/Controls/ActionButton.cs index 1b64609d93..69c48f881d 100644 --- a/Content.Client/UserInterface/Systems/Actions/Controls/ActionButton.cs +++ b/Content.Client/UserInterface/Systems/Actions/Controls/ActionButton.cs @@ -288,8 +288,8 @@ public sealed class ActionButton : Control, IEntityControl public void UpdateBackground() { _controller ??= UserInterfaceManager.GetUIController(); - if (Action != null || - _controller.IsDragging && GetPositionInParent() == Parent?.ChildCount - 1) + if (Action != null + || _controller.IsDragging && (Parent == null || GetPositionInParent() == Parent?.ChildCount - 1)) { Button.Texture = _slotBackground; } From 35b53903616ddd70cd9f240e61bd5817b07be791 Mon Sep 17 00:00:00 2001 From: papiepie Date: Mon, 7 Sep 2026 19:53:32 +0000 Subject: [PATCH 092/197] change ultravasculine plasma required to catalyst (#45904) change plasma to catalyst --- Resources/Prototypes/Recipes/Reactions/medicine.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/Prototypes/Recipes/Reactions/medicine.yml b/Resources/Prototypes/Recipes/Reactions/medicine.yml index 24641e8c3f..9995cd4426 100644 --- a/Resources/Prototypes/Recipes/Reactions/medicine.yml +++ b/Resources/Prototypes/Recipes/Reactions/medicine.yml @@ -332,6 +332,7 @@ amount: 2 Plasma: amount: 1 + catalyst: true products: Ultravasculine: 2 From 988c3a5d02ea9d89cbcb5d11985d76b85beba69b Mon Sep 17 00:00:00 2001 From: Mixelz <32188067+Mixelz@users.noreply.github.com> Date: Tue, 8 Sep 2026 01:58:52 +0000 Subject: [PATCH 093/197] Plasma Update (#45911) * Plasma Update This week on *Mixelz fucks with Plasma*: Fixed up the wooden support issues. Readjusted Warden to give him some breathing room. Added Fire Alarms to the main hallways and added more missing firelocks. Gave all doors that lead to space Diamond Plating floors to make it a consistent theme. Toy Spawners around Clown/Theater. * Cargo Fire Alarms Cargo now has Fire Alarms * Random Grille Spawners Replaced Broken Grilles and some maints grilles with random grille spawners. * Invalid Fix INVALID YO MAMA --- Resources/Maps/plasma.yml | 2469 +++++++++++++++++++++---------------- 1 file changed, 1396 insertions(+), 1073 deletions(-) diff --git a/Resources/Maps/plasma.yml b/Resources/Maps/plasma.yml index b42bbf9236..24f480ebe5 100644 --- a/Resources/Maps/plasma.yml +++ b/Resources/Maps/plasma.yml @@ -4,33 +4,14 @@ meta: engineVersion: 289.0.0 forkId: "" forkVersion: "" - time: 08/22/2026 17:04:05 - entityCount: 27203 + time: 09/07/2026 21:36:39 + entityCount: 27222 maps: - 1 grids: - 2 orphans: [] nullspace: -- 27138 -- 27139 -- 27140 -- 27141 -- 27142 -- 27143 -- 27144 -- 27145 -- 27146 -- 27147 -- 27148 -- 27149 -- 27150 -- 27151 -- 27152 -- 27153 -- 27154 -- 27155 -- 27156 - 27157 - 27158 - 27159 @@ -78,6 +59,25 @@ nullspace: - 27201 - 27202 - 27203 +- 27204 +- 27205 +- 27206 +- 27207 +- 27208 +- 27209 +- 27210 +- 27211 +- 27212 +- 27213 +- 27214 +- 27215 +- 27216 +- 27217 +- 27218 +- 27219 +- 27220 +- 27221 +- 27222 tilemap: 0: Space 28: FloorArcadeRed @@ -161,7 +161,7 @@ entities: version: 7 -1,0: ind: -1,0 - tiles: gwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAABQAHAAAAAAMAAAAAAAAAAIMAAAAAAAABAAAAAAEAgwAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAEAAAAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAABAIMAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAACAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAQCDAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAABgAAAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAABAIMAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAACAAEAAAAAAAABAAAAAAEAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAIABwAAAAAEAAcAAAAAAwAHAAAAAAQABwAAAAAGAAcAAAAABAAHAAAAAAUABwAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAAAcAAAAAAwAHAAAAAAIABwAAAAACAAcAAAAAAgAHAAAAAAEABwAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAABAIMAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAAAHAAAAAAIABwAAAAAFAAcAAAAAAQAHAAAAAAIABwAAAAACAAcAAAAABAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAgCDAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAEABwAAAAAEAAcAAAAAAQAHAAAAAAMABwAAAAABAAcAAAAAAAAHAAAAAAAAAAAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAABAAcAAAAABAAHAAAAAAIABwAAAAAGAAcAAAAABgAHAAAAAAIABwAAAAABAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAAAHAAAAAAIABwAAAAAGAAcAAAAABAAHAAAAAAQABwAAAAAAAAcAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAIABwAAAAAAAAcAAAAAAwAHAAAAAAIABwAAAAADAAcAAAAABQABAAAAAAIAAQAAAAABAAEAAAAAAQABAAAAAAEAAQAAAAACAAEAAAAAAgABAAAAAAIAAQAAAAACAAEAAAAAAgABAAAAAAIAAQAAAAAAAA== + tiles: gwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAABQAHAAAAAAMAAAAAAAAAAIMAAAAAAAABAAAAAAEAgwAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAEAAAAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAABAIMAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAACAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAQCDAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAABgAAAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAABAIMAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAACAAEAAAAAAAABAAAAAAEAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAACDAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAIABwAAAAAEAAcAAAAAAwAHAAAAAAQABwAAAAAGAAcAAAAABAAHAAAAAAUABwAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAAAcAAAAAAwAHAAAAAAIABwAAAAACAAcAAAAAAgAHAAAAAAEABwAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAABAIMAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAAAHAAAAAAIABwAAAAAFAAcAAAAAAQAHAAAAAAIABwAAAAACAAcAAAAABAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAgCDAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAEABwAAAAAEAAcAAAAAAQAHAAAAAAMABwAAAAABAAcAAAAAAAAHAAAAAAAAAAAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAABAAcAAAAABAAHAAAAAAIABwAAAAAGAAcAAAAABgAHAAAAAAIABwAAAAABAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAAAHAAAAAAIABwAAAAAGAAcAAAAABAAHAAAAAAQABwAAAAAAAAcAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAIABwAAAAAAAAcAAAAAAwAHAAAAAAIABwAAAAADAAcAAAAABQABAAAAAAIAAQAAAAABAAEAAAAAAQABAAAAAAEAAQAAAAACAAEAAAAAAgABAAAAAAIAAQAAAAACAAEAAAAAAgABAAAAAAIAAQAAAAAAAA== version: 7 -1,-1: ind: -1,-1 @@ -177,7 +177,7 @@ entities: version: 7 -5,-5: ind: -5,-5 - tiles: BwAAAAAAAAcAAAAAAAAHAAAAAAEABwAAAAAFAAcAAAAABQAHAAAAAAUABwAAAAAEAAcAAAAAAgCDAAAAAAAAgwAAAAAAAAcAAAAABAAHAAAAAAIABwAAAAADAIMAAAAAAACDAAAAAAAABwAAAAAEAAcAAAAABQAHAAAAAAAABwAAAAAEAAcAAAAAAAAHAAAAAAQABwAAAAAEAAcAAAAAAwAHAAAAAAMAgwAAAAAAAAcAAAAAAQAHAAAAAAIABwAAAAAAAAcAAAAAAwAHAAAAAAYAgwAAAAAAAAcAAAAAAAAHAAAAAAEABwAAAAAEAAcAAAAABQAHAAAAAAAABwAAAAAEAAcAAAAAAgAHAAAAAAIABwAAAAACAIMAAAAAAAAHAAAAAAAABwAAAAABAAcAAAAABgAHAAAAAAIABwAAAAADAIMAAAAAAAAHAAAAAAEABwAAAAACAAcAAAAABgAHAAAAAAQABwAAAAADAAcAAAAABgAHAAAAAAEABwAAAAACAAcAAAAABQCDAAAAAAAABwAAAAAAAAcAAAAAAgAHAAAAAAEABwAAAAAFAAcAAAAABACDAAAAAAAABwAAAAADAAcAAAAAAAAHAAAAAAEABwAAAAAGAAcAAAAABgAHAAAAAAIABwAAAAAEAAcAAAAAAQAHAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAMABwAAAAACAAcAAAAAAgAHAAAAAAIAgwAAAAAAAAcAAAAAAAAHAAAAAAYABwAAAAAFAAcAAAAABQAHAAAAAAEABwAAAAACAAcAAAAABgAHAAAAAAYABwAAAAAEAIMAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAwAHAAAAAAAABwAAAAADAIMAAAAAAAAHAAAAAAAABwAAAAAFAAcAAAAAAQAHAAAAAAAABwAAAAACAAcAAAAAAAAHAAAAAAQABwAAAAAAAAcAAAAABQCDAAAAAAAABwAAAAAGAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAwCDAAAAAAAABwAAAAAEAAcAAAAABQAHAAAAAAQABwAAAAAEAAcAAAAAAwAHAAAAAAYABwAAAAAEAAcAAAAABAAHAAAAAAQAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAABAAHAAAAAAAABwAAAAAEAAcAAAAAAgAHAAAAAAAABwAAAAAEAAcAAAAABQAHAAAAAAMABwAAAAAFAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAEABwAAAAAFAAcAAAAABAAHAAAAAAIABwAAAAAEAAcAAAAABAAHAAAAAAIABwAAAAAGAAcAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAADAAcAAAAAAAAHAAAAAAAABwAAAAAGAAcAAAAAAAAHAAAAAAUABwAAAAACAAcAAAAABQAHAAAAAAAABwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAFAAcAAAAAAAAHAAAAAAUABwAAAAADAAcAAAAABAAHAAAAAAIABwAAAAAGAAcAAAAAAwAHAAAAAAAABwAAAAADAAcAAAAAAQAHAAAAAAAABwAAAAAAAAcAAAAAAwAHAAAAAAIABwAAAAAAAAcAAAAAAQAHAAAAAAMABwAAAAACAAcAAAAAAgAHAAAAAAUABwAAAAAFAAcAAAAAAwAHAAAAAAQABwAAAAADAAcAAAAAAgAHAAAAAAEABwAAAAACAAcAAAAAAwAHAAAAAAYABwAAAAACAAcAAAAABQAHAAAAAAMABwAAAAADAAcAAAAAAgAHAAAAAAEABwAAAAACAAcAAAAAAAAHAAAAAAQABwAAAAADAAcAAAAAAwAHAAAAAAQABwAAAAADAAcAAAAABQAHAAAAAAUABwAAAAADAAcAAAAAAgAHAAAAAAQABwAAAAAFAAcAAAAAAgAHAAAAAAUABwAAAAABAAcAAAAAAAAHAAAAAAAABwAAAAABAAcAAAAABQAHAAAAAAEABwAAAAAGAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAABwAAAAADAAcAAAAABQAHAAAAAAAABwAAAAAGAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA== + tiles: BwAAAAAAAAcAAAAAAAAHAAAAAAEABwAAAAAFAAcAAAAABQAHAAAAAAUABwAAAAAEAAcAAAAAAgCDAAAAAAAAgwAAAAAAAAcAAAAABAAHAAAAAAIABwAAAAADAIMAAAAAAACDAAAAAAAABwAAAAAEAAcAAAAABQAHAAAAAAAABwAAAAAEAAcAAAAAAAAHAAAAAAQABwAAAAAEAAcAAAAAAwAHAAAAAAMAgwAAAAAAAAcAAAAAAQAHAAAAAAIABwAAAAAAAAcAAAAAAwAHAAAAAAYAgwAAAAAAAAcAAAAAAAAHAAAAAAEABwAAAAAEAAcAAAAABQAHAAAAAAAABwAAAAAEAAcAAAAAAgAHAAAAAAIABwAAAAACAIMAAAAAAAAHAAAAAAAABwAAAAABAAcAAAAABgAHAAAAAAIABwAAAAADAIMAAAAAAAAHAAAAAAEABwAAAAACAAcAAAAABgAHAAAAAAQABwAAAAADAAcAAAAABgAHAAAAAAEABwAAAAACAAcAAAAABQCDAAAAAAAABwAAAAAAAAcAAAAAAgAHAAAAAAEABwAAAAAFAAcAAAAABACDAAAAAAAABwAAAAADAAcAAAAAAAAHAAAAAAEABwAAAAAGAAcAAAAABgAHAAAAAAIABwAAAAAEAAcAAAAAAQAHAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAMABwAAAAACAAcAAAAAAgAHAAAAAAIAgwAAAAAAAAcAAAAAAAAHAAAAAAYABwAAAAAFAAcAAAAABQAHAAAAAAEABwAAAAACAAcAAAAABgAHAAAAAAYABwAAAAAEAIMAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAwAHAAAAAAAABwAAAAADAIMAAAAAAAAHAAAAAAAABwAAAAAFAAcAAAAAAQAHAAAAAAAABwAAAAACAAcAAAAAAAAHAAAAAAQABwAAAAAAAAcAAAAABQCDAAAAAAAABwAAAAAGAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAwCDAAAAAAAABwAAAAAEAAcAAAAABQAHAAAAAAQABwAAAAAEAAcAAAAAAwAHAAAAAAYABwAAAAAEAAcAAAAABAAHAAAAAAQAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAABAAHAAAAAAAABwAAAAAEAAcAAAAAAgAHAAAAAAAABwAAAAAEAAcAAAAABQAHAAAAAAMABwAAAAAFAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAEABwAAAAAFAAcAAAAABAAHAAAAAAIABwAAAAAEAAcAAAAABAAHAAAAAAIABwAAAAAGAAcAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAADAAcAAAAAAAAHAAAAAAAABwAAAAAGAAcAAAAAAAAHAAAAAAUABwAAAAACAAcAAAAABQAHAAAAAAAABwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAFAAcAAAAAAAAHAAAAAAUABwAAAAADAAcAAAAABAAHAAAAAAIABwAAAAAGAAcAAAAAAwAHAAAAAAAABwAAAAADAAcAAAAAAQAHAAAAAAAABwAAAAAAAAcAAAAAAwAHAAAAAAIABwAAAAAAAAcAAAAAAQAHAAAAAAMABwAAAAACAAcAAAAAAgAHAAAAAAUABwAAAAAFAAcAAAAAAwAHAAAAAAQABwAAAAADAAcAAAAAAgAHAAAAAAEABwAAAAACAAcAAAAAAwAHAAAAAAYABwAAAAACAAcAAAAABQAHAAAAAAMABwAAAAADAAcAAAAAAgAHAAAAAAEABwAAAAACAAcAAAAAAAAHAAAAAAQABwAAAAADAAcAAAAAAwAHAAAAAAQABwAAAAADAAcAAAAABQAHAAAAAAUABwAAAAADAAcAAAAAAgAHAAAAAAQABwAAAAAFAAcAAAAAAgAHAAAAAAUABwAAAAABAAcAAAAAAAAHAAAAAAAABwAAAAABAAcAAAAABQAHAAAAAAEABwAAAAAGAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAABwAAAAADAAcAAAAABQAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA== version: 7 -2,-1: ind: -2,-1 @@ -185,7 +185,7 @@ entities: version: 7 -3,0: ind: -3,0 - tiles: gwAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAAFAAAAAAAAIwAAAAAAACMAAAAAAAAFAAAAAAAABQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAEABwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAIAAQAAAAABAAEAAAAAAgABAAAAAAIAAQAAAAAAAAEAAAAAAgABAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAgAHAAAAAAEABwAAAAAGAAcAAAAABAAHAAAAAAUAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAABAAcAAAAAAwAHAAAAAAQABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAHAAAAAAEABwAAAAAAAAcAAAAABgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAcAAAAABACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAABgAHAAAAAAIAgwAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAABwAAAAAEAIMAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAcAAAAABQCDAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAA== + tiles: gwAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAAFAAAAAAAAIwAAAAAAACMAAAAAAAAFAAAAAAAABQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAACDAAAAAAAABAAAAAAAAIMAAAAAAAAHAAAAAAEABwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAIAAQAAAAABAAEAAAAAAgABAAAAAAIAAQAAAAAAAAEAAAAAAgABAAAAAAEAgwAAAAAAAAQAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAgAHAAAAAAEABwAAAAAGAAcAAAAABAAHAAAAAAUAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAABAAcAAAAAAwAHAAAAAAQABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAHAAAAAAEABwAAAAAAAAcAAAAABgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAcAAAAABACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAABgAHAAAAAAIAgwAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAABwAAAAAEAIMAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAcAAAAABQCDAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAA== version: 7 -3,-1: ind: -3,-1 @@ -193,7 +193,7 @@ entities: version: 7 -6,0: ind: -6,0 - tiles: AwAAAAAAAAMAAAAAAAADAAAAAAAAgwAAAAAAAAcAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAADAAAAAABACAAAAAAAAAMAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAIMAAAAAAAAHAAAAAAUAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAwAAAAAAQAgAAAAAAAADAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAACDAAAAAAAABwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAMAAAAAAEAIAAAAAAAAAwAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAMAAAAAAACDAAAAAAAAAwAAAAAAACAAAAAAAAAgAAAAAAAAAwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAIAgwAAAAAAAIMAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAADAAAAAAAAgwAAAAAAAAMAAAAAAAAgAAAAAAAAIAAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAAAACAAAAAAAAAgAAAAAAAAAwAAAAAAAIMAAAAAAAADAAAAAAAAIAAAAAAAACAAAAAAAAADAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAQCDAAAAAAAAgwAAAAAAAAMAAAAAAAAgAAAAAAAAIAAAAAAAAAMAAAAAAACDAAAAAAAAAwAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAYAAAAAAAAAAAAAAAAAAAADAAAAAAAAIAAAAAAAACAAAAAAAAADAAAAAAAAgwAAAAAAAAMAAAAAAAAgAAAAAAAAIAAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAwAAAAAAAIMAAAAAAAADAAAAAAAAIAAAAAAAACAAAAAAAAADAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAIMAAAAAAAAgAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACAAAAAAAAAgAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAACgAAAAAAAAoAAAAAAAAHAAAAAAMABwAAAAADAAcAAAAAAwCDAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAACgAAAAABAAoAAAAAAQAKAAAAAAEABwAAAAAAAAcAAAAABQAHAAAAAAIABwAAAAACAAcAAAAAAgAHAAAAAAUAgwAAAAAAAAEAAAAAAAABAAAAAAIAAAAAAAAAAA== + tiles: AwAAAAAAAAMAAAAAAAADAAAAAAAAgwAAAAAAAAcAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAADAAAAAABACAAAAAAAAAMAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAIMAAAAAAAAHAAAAAAUAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAwAAAAAAQAgAAAAAAAADAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAACDAAAAAAAABwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAMAAAAAAEAIAAAAAAAAAwAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAMAAAAAAACDAAAAAAAAAwAAAAAAACAAAAAAAAAgAAAAAAAAAwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAIAgwAAAAAAAAQAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAADAAAAAAAAgwAAAAAAAAMAAAAAAAAgAAAAAAAAIAAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAIMAAAAAAAAEAAAAAAAAAwAAAAAAACAAAAAAAAAgAAAAAAAAAwAAAAAAAIMAAAAAAAADAAAAAAAAIAAAAAAAACAAAAAAAAADAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAQCDAAAAAAAABAAAAAAAAAMAAAAAAAAgAAAAAAAAIAAAAAAAAAMAAAAAAACDAAAAAAAAAwAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAYAAAAAAAAAAAAAAAAAAAADAAAAAAAAIAAAAAAAACAAAAAAAAADAAAAAAAAgwAAAAAAAAMAAAAAAAAgAAAAAAAAIAAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAwAAAAAAAIMAAAAAAAADAAAAAAAAIAAAAAAAACAAAAAAAAADAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAIMAAAAAAAAgAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACAAAAAAAAAgAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAACgAAAAAAAAoAAAAAAAAHAAAAAAMABwAAAAADAAcAAAAAAwCDAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAACgAAAAABAAoAAAAAAQAKAAAAAAEABwAAAAAAAAcAAAAABQAHAAAAAAIABwAAAAACAAcAAAAAAgAHAAAAAAUAgwAAAAAAAAEAAAAAAAABAAAAAAIAAAAAAAAAAA== version: 7 -4,-1: ind: -4,-1 @@ -209,7 +209,7 @@ entities: version: 7 -5,0: ind: -5,0 - tiles: gwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAAAAAMAAAAAAACDAAAAAAAAIAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAAALAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAADAAcAAAAAAwAHAAAAAAEABwAAAAAGAAcAAAAABQAAAAAAAAAAAQAAAAACAAAAAAAAAACDAAAAAAAAAwAAAAAAAAMAAAAAAAAjAAAAAAAAIwAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAgAAAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAAAIwAAAAAAACMAAAAAAAADAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAIAAAAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAACDAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAQABAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAEAAQAAAAACAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAAEAAAAAAgABAAAAAAEAAQAAAAAAAAEAAAAAAgABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAEAAAAAAgABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: gwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAAAAAMAAAAAAACDAAAAAAAAIAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAAALAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAADAAcAAAAAAwAHAAAAAAEABwAAAAAGAAcAAAAABQAAAAAAAAAAAQAAAAACAAAAAAAAAACDAAAAAAAAAwAAAAAAAAMAAAAAAAAjAAAAAAAAIwAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAgAAAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAAAIwAAAAAAACMAAAAAAAADAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAIAAAAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAACDAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAQABAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAEAAQAAAAACAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAAEAAAAAAgABAAAAAAEAAQAAAAAAAAEAAAAAAgABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAEAAAAAAgABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -6,-1: ind: -6,-1 @@ -249,11 +249,11 @@ entities: version: 7 -6,-2: ind: -6,-2 - tiles: IAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAgAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAACAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAIAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAAgwAAAAAAAIMAAAAAAAAgAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAACAAAAAAAACDAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAIAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAgAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAACAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAIAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAgAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAACAAAAAAAACDAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAACAAAAAAAAAgAAAAAAAAgwAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIMAAAAAAACDAAAAAAAAIAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAAgwAAAAAAAIMAAAAAAAAgAAAAAAAAIAAAAAAAAIMAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgwAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAIAAAAAAAACAAAAAAAACDAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIMAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAAsAAAAAAAALAAAAAAAAgwAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAALAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAACDAAAAAAAAIAAAAAAAAIMAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgwAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAIAAAAAAAACAAAAAAAACDAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAAgAAAAAAAAIAAAAAAAAIMAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA== + tiles: IAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAgAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAACAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAIAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAAgwAAAAAAAIMAAAAAAAAgAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAACAAAAAAAACDAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAIAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAgAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAACAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAIAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAgAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAACAAAAAAAACDAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAACAAAAAAAAAgAAAAAAAAgwAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIMAAAAAAACDAAAAAAAAIAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAAgwAAAAAAAIMAAAAAAAAgAAAAAAAAIAAAAAAAAIMAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgwAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAIAAAAAAAACAAAAAAAACDAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIMAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAAsAAAAAAAALAAAAAAAAgwAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAALAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAACDAAAAAAAAIAAAAAAAAIMAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgwAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAIAAAAAAAACAAAAAAAACDAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAAgAAAAAAAAIAAAAAAAAIMAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA== version: 7 -5,-4: ind: -5,-4 - tiles: BwAAAAAGAAcAAAAAAQAHAAAAAAIABwAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAQAAAAAAAAEAAAAAAAAAcAAAAAAgAHAAAAAAMABwAAAAAGAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAAHAAAAAAUABwAAAAABAAcAAAAABAAHAAAAAAUAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA0AAAAAAAANAAAAAAAABwAAAAADAAcAAAAABAAHAAAAAAQABwAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAgAAAAAAAAIAAAAAAAAIMAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAAcAAAAABAAHAAAAAAQABwAAAAABAAcAAAAABQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAIAAAAAAAACAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAADQAAAAAAAA0AAAAAAAAHAAAAAAQABwAAAAAFAAcAAAAAAgAHAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACAAAAAAAAAgAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAAAgwAAAAAAAIMAAAAAAAANAAAAAAAABwAAAAAGAAcAAAAABgAHAAAAAAQABwAAAAAEAAsAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAIAAAAAAAACAAAAAAAABwAAAAACAAcAAAAAAwALAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAHAAAAAAEABwAAAAAAAAcAAAAAAwAHAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAABwAAAAACAAcAAAAAAgAHAAAAAAEABwAAAAAGAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAIAAAAAAAAIMAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAIAAAAAAAACAAAAAAAACDAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACAAAAAAAAAgAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAACAAAAAAAAAgAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAgAAAAAAAAIAAAAAAAAC8AAAAABQAvAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAACAAcAAAAAAwAHAAAAAAEABwAAAAAFAAcAAAAAAwCDAAAAAAAAIAAAAAAAAIMAAAAAAAAvAAAAAAAALwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAABAAcAAAAAAwAHAAAAAAYABwAAAAAFAAcAAAAABAAHAAAAAAYABwAAAAABAAIAAAAAAAACAAAAAAAALwAAAAAAAC8AAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAABAAHAAAAAAAABwAAAAAFAAcAAAAAAQAHAAAAAAMABwAAAAAAAAcAAAAABAAHAAAAAAEABwAAAAAGAA== + tiles: BwAAAAAGAAcAAAAAAQAHAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAQAAAAAAAAEAAAAAAAAAcAAAAAAgAHAAAAAAMABwAAAAAGAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAAHAAAAAAUABwAAAAABAAcAAAAABACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA0AAAAAAAANAAAAAAAABwAAAAADAAcAAAAABAAHAAAAAAQAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAgAAAAAAAAIAAAAAAAAIMAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAAcAAAAABAAHAAAAAAQABwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAIAAAAAAAACAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAADQAAAAAAAA0AAAAAAAAHAAAAAAQABwAAAAAFAAcAAAAAAgAHAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACAAAAAAAAAgAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAAAgwAAAAAAAIMAAAAAAAANAAAAAAAABwAAAAAGAAcAAAAABgAHAAAAAAQABwAAAAAEAAsAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAIAAAAAAAACAAAAAAAABwAAAAACAAcAAAAAAwALAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAHAAAAAAEABwAAAAAAAAcAAAAAAwAHAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAABwAAAAACAAcAAAAAAgAHAAAAAAEABwAAAAAGAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAIAAAAAAAAIMAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAIAAAAAAAACAAAAAAAACDAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACAAAAAAAAAgAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAACAAAAAAAAAgAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAgAAAAAAAAIAAAAAAAAC8AAAAABQAvAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAACAAcAAAAAAwAHAAAAAAEABwAAAAAFAAcAAAAAAwCDAAAAAAAAIAAAAAAAAIMAAAAAAAAvAAAAAAAALwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAABAAcAAAAAAwAHAAAAAAYABwAAAAAFAAcAAAAABAAHAAAAAAYABwAAAAABAAIAAAAAAAACAAAAAAAALwAAAAAAAC8AAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAABAAHAAAAAAAABwAAAAAFAAcAAAAAAQAHAAAAAAMABwAAAAAAAAcAAAAABAAHAAAAAAEABwAAAAAGAA== version: 7 -6,-3: ind: -6,-3 @@ -313,7 +313,7 @@ entities: version: 7 -9,-4: ind: -9,-4 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEAAQAAAAABAAEAAAAAAAABAAAAAAAAAQAAAAABAAEAAAAAAgABAAAAAAIAAQAAAAACAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAgABAAAAAAAAAQAAAAAAAAEAAAAAAgABAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACQAAAAAAQAFAAAAAAAABQAAAAAAAAUAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAJAAAAAAAAAUAAAAAAAAkAAAAAAEAgwAAAAAAAAEAAAAAAgABAAAAAAEAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAIAAQAAAAABAAEAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACAAAAAAAACDAAAAAAAAIAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAgAAAAAAAAgwAAAAAAACAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAACDAAAAAAAAIAAAAAAAAIMAAAAAAAAgAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAjAAAAAAAAIwAAAAAAACMAAAAAAAAFAAAAAAAAgwAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAIMAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAUAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACAAAAAAAACDAAAAAAAAgwAAAAAAACAAAAAAAAAgAAAAAAAAAwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAgwAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEAAQAAAAABAAEAAAAAAAABAAAAAAAAAQAAAAABAAEAAAAAAgABAAAAAAIAAQAAAAACAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAgABAAAAAAAAAQAAAAAAAAEAAAAAAgABAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACQAAAAAAQAFAAAAAAAABQAAAAAAAAUAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAJAAAAAAAAAUAAAAAAAAkAAAAAAEAgwAAAAAAAAEAAAAAAgABAAAAAAEAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAIAAQAAAAABAAEAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACAAAAAAAACDAAAAAAAAIAAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAgAAAAAAAAgwAAAAAAACAAAAAAAACDAAAAAAAABAAAAAAAAAQAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAACDAAAAAAAAIAAAAAAAAIMAAAAAAAAgAAAAAAAAgwAAAAAAAAQAAAAAAAAEAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAjAAAAAAAAIwAAAAAAACMAAAAAAAAFAAAAAAAAgwAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIMAAAAAAAAEAAAAAAAABAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAIMAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAUAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACAAAAAAAACDAAAAAAAAgwAAAAAAACAAAAAAAAAgAAAAAAAAAwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAgwAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAA== version: 7 -8,-2: ind: -8,-2 @@ -333,7 +333,7 @@ entities: version: 7 -6,2: ind: -6,2 - tiles: IAAAAAAAACAAAAAAAAAgAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAgwAAAAAAAIMAAAAAAAAFAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAgABAAAAAAIAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAIMAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAACDAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAgAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAgwAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAABAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAABAAEAAAAAAAABAAAAAAIAAQAAAAABAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAQAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAACAAEAAAAAAQABAAAAAAIAAQAAAAACAAEAAAAAAAABAAAAAAEAAQAAAAAAAAEAAAAAAgABAAAAAAEAAQAAAAABAAEAAAAAAQABAAAAAAIAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAEAAAAAAQABAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAEAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEAAQAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAgABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAIAgwAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAEAAAAAAgABAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: IAAAAAAAACAAAAAAAAAgAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAgwAAAAAAAIMAAAAAAAAFAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAgABAAAAAAIAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAIMAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAACDAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAgAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAgwAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAABAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIMAAAAAAAAEAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAABAAEAAAAAAAABAAAAAAIAAQAAAAABAAAAAAAAAACDAAAAAAAABAAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAQAAAAAAAAAAgwAAAAAAAAQAAAAAAACDAAAAAAAAAQAAAAACAAEAAAAAAQABAAAAAAIAAQAAAAACAAEAAAAAAAABAAAAAAEAAQAAAAAAAAEAAAAAAgABAAAAAAEAAQAAAAABAAEAAAAAAQABAAAAAAIAAAAAAAAAAIMAAAAAAAAEAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAEAAAAAAQABAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAEAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEAAQAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAgABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAIAgwAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAEAAAAAAgABAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -7,1: ind: -7,1 @@ -341,11 +341,11 @@ entities: version: 7 -7,2: ind: -7,2 - tiles: gwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAGAAcAAAAAAwAHAAAAAAIAgwAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAAAAAcAAAAAAQAHAAAAAAAABwAAAAAAAAcAAAAABAAHAAAAAAEABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAwAHAAAAAAMABwAAAAABAIMAAAAAAACDAAAAAAAAAwAAAAAAAAMAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAwAHAAAAAAIABwAAAAACAAcAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAIABwAAAAADAAcAAAAABgCDAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAAABwAAAAAGAAcAAAAABgAHAAAAAAYABwAAAAAEAAcAAAAAAgAHAAAAAAQAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAQAHAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAAAAAcAAAAAAAAHAAAAAAIABwAAAAABAAcAAAAABgAHAAAAAAIABwAAAAAGAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAMABwAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAMABwAAAAAFAAcAAAAABgAHAAAAAAAABwAAAAAEAAcAAAAABACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAACAAcAAAAAAQABAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAFAAcAAAAABgAHAAAAAAUABwAAAAACAAcAAAAAAwAHAAAAAAIABwAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAQCDAAAAAAAAAQAAAAAAAIMAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAQCDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAIAgwAAAAAAAAEAAAAAAQABAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAAAAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: gwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAGAAcAAAAAAwAHAAAAAAIAgwAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAAAAAcAAAAAAQAHAAAAAAAABwAAAAAAAAcAAAAABAAHAAAAAAEABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAwAHAAAAAAMABwAAAAABAIMAAAAAAACDAAAAAAAAAwAAAAAAAAMAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAwAHAAAAAAIABwAAAAACAAcAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAIABwAAAAADAAcAAAAABgCDAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAAABwAAAAAGAAcAAAAABgAHAAAAAAYABwAAAAAEAAcAAAAAAgAHAAAAAAQAgwAAAAAAAAQAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAQAHAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAAAAAcAAAAAAAAHAAAAAAIABwAAAAABAAcAAAAABgAHAAAAAAIABwAAAAAGAIMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAHAAAAAAMABwAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAMABwAAAAAFAAcAAAAABgAHAAAAAAAABwAAAAAEAAcAAAAABACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAACAAcAAAAAAQABAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAFAAcAAAAABgAHAAAAAAUABwAAAAACAAcAAAAAAwAHAAAAAAIABwAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAQCDAAAAAAAAAQAAAAAAAIMAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAQCDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAIAgwAAAAAAAAEAAAAAAQABAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAAAAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -7,-5: ind: -7,-5 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAQABAAAAAAIAAQAAAAACAAEAAAAAAQABAAAAAAAAAQAAAAAAAAEAAAAAAgABAAAAAAAAAQAAAAABAAEAAAAAAgABAAAAAAAAAQAAAAABAAEAAAAAAAABAAAAAAAAAQAAAAAAAAcAAAAAAwAAAAAAAAAAAAAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAQAHAAAAAAUAAAAAAAAAAAAAAAAAAAABAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAGAAcAAAAABQAHAAAAAAEABwAAAAADAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAFAAcAAAAAAwAHAAAAAAAABwAAAAAAAAcAAAAABAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAEAAcAAAAAAAAHAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAAcAAAAABgAHAAAAAAMABwAAAAAGAAcAAAAAAQAHAAAAAAIABwAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEAAAAAAAAAAAcAAAAAAwAHAAAAAAEABwAAAAABAAcAAAAAAAAHAAAAAAYABwAAAAADAAcAAAAABQATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAAAcAAAAAAAAHAAAAAAIABwAAAAAFAAcAAAAABAAHAAAAAAQABwAAAAABAAcAAAAAAQAHAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAQAAAAAAAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAQAHAAAAAAUABwAAAAACAAcAAAAAAAABAAAAAAEAAQAAAAABAAEAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAMABwAAAAAGAAcAAAAAAQAHAAAAAAQAAQAAAAAAAAEAAAAAAgABAAAAAAEAAQAAAAACAAEAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAABgAHAAAAAAQABwAAAAADAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAQABAAAAAAIAAQAAAAACAAEAAAAAAQABAAAAAAAAAQAAAAAAAAEAAAAAAgABAAAAAAAAAQAAAAABAAEAAAAAAgABAAAAAAAAAQAAAAABAAEAAAAAAAABAAAAAAAAAQAAAAAAAAcAAAAAAwAAAAAAAAAAAAAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAQAHAAAAAAUAAAAAAAAAAAAAAAAAAAABAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAGAAcAAAAABQAHAAAAAAEABwAAAAADAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAFAAcAAAAAAwAHAAAAAAAABwAAAAAAAAcAAAAABAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAEAAcAAAAAAAAHAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAAcAAAAABgAHAAAAAAMABwAAAAAGAAcAAAAAAQAHAAAAAAIABwAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEAAAAAAAAAAAcAAAAAAwAHAAAAAAEABwAAAAABAAcAAAAAAAAHAAAAAAYABwAAAAADAAcAAAAABQATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAAAcAAAAAAAAHAAAAAAIABwAAAAAFAAcAAAAABAAHAAAAAAQABwAAAAABAAcAAAAAAQAHAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAQAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAQAAAAAAAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAAAEAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAQAHAAAAAAUABwAAAAACAAcAAAAAAAABAAAAAAEAAQAAAAABAAEAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAABAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAMABwAAAAAGAAcAAAAAAQAHAAAAAAQAAQAAAAAAAAEAAAAAAgABAAAAAAEAAQAAAAACAAEAAAAAAgCDAAAAAAAAgwAAAAAAAAQAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAABgAHAAAAAAQABwAAAAADAA== version: 7 -8,1: ind: -8,1 @@ -361,7 +361,7 @@ entities: version: 7 -9,0: ind: -9,0 - tiles: AQAAAAABAAEAAAAAAQAAAAAAAAAAAQAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAJgAAAAADAIMAAAAAAACDAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAQABAAAAAAIAAQAAAAAAAAEAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAgCDAAAAAAAAEgAAAAAAABIAAAAAAAABAAAAAAIAAQAAAAACAAAAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAYAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAABAAEAAAAAAgAAAAAAAAAAAQAAAAAAAAcAAAAABgCDAAAAAAAABwAAAAADAAcAAAAABAAHAAAAAAUABwAAAAAEAAIAAAAAAACDAAAAAAAABwAAAAABAIMAAAAAAAASAAAAAAAAEgAAAAAAAAEAAAAAAQABAAAAAAEAAAAAAAAAAAEAAAAAAQAHAAAAAAMAgwAAAAAAAAcAAAAABgAHAAAAAAAABwAAAAAGAAcAAAAAAAACAAAAAAAAgwAAAAAAAAcAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAEAAQAAAAABAAEAAAAAAQABAAAAAAEABwAAAAADAIMAAAAAAAAHAAAAAAIABwAAAAACAAcAAAAABgAHAAAAAAYAAgAAAAAAAIMAAAAAAAAHAAAAAAUAgwAAAAAAABIAAAAAAAASAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAQCDAAAAAAAABwAAAAADAAcAAAAAAAAHAAAAAAAABwAAAAAEAAIAAAAAAACDAAAAAAAABwAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAEAgwAAAAAAAAAAAAAAAAAHAAAAAAAAgwAAAAAAAAcAAAAABgAHAAAAAAYABwAAAAADAAcAAAAAAQACAAAAAAAAgwAAAAAAAAcAAAAAAwCDAAAAAAAAEgAAAAAAABIAAAAAAACDAAAAAAAAAQAAAAACAIMAAAAAAAAAAAAAAAAABwAAAAAFAIMAAAAAAAAHAAAAAAUABwAAAAAAAAcAAAAAAgAHAAAAAAYAAgAAAAAAAIMAAAAAAAAHAAAAAAQAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAgCDAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAACAAIAAAAAAACDAAAAAAAABwAAAAAEAIMAAAAAAAASAAAAAAAAEgAAAAAAAIMAAAAAAAABAAAAAAIAgwAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAgACAAAAAAAAgwAAAAAAAAcAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAACAIMAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAQAAgAAAAAAAIMAAAAAAAAHAAAAAAAAgwAAAAAAABIAAAAAAAASAAAAAAAAAAAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAFAAIAAAAAAACDAAAAAAAABwAAAAAEAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAAABAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAgACAAAAAAAAgwAAAAAAAAcAAAAABgCDAAAAAAAAEgAAAAAAABIAAAAAAAAAAAAAAAAAAQAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAMAAgAAAAAAAIMAAAAAAAAHAAAAAAQAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAACAAIAAAAAAACDAAAAAAAABwAAAAADAAcAAAAAAAAHAAAAAAMABwAAAAAEAA== + tiles: AQAAAAABAAEAAAAAAQAAAAAAAAAAAQAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAJgAAAAADAIMAAAAAAACDAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAQABAAAAAAIAAQAAAAAAAAEAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAgCDAAAAAAAAEgAAAAAAABIAAAAAAAABAAAAAAIAAQAAAAACAAAAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAYAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAABAAEAAAAAAgAAAAAAAAAAAQAAAAAAAAcAAAAABgCDAAAAAAAABwAAAAADAAcAAAAABAAHAAAAAAUABwAAAAAEAAIAAAAAAACDAAAAAAAABwAAAAABAIMAAAAAAAASAAAAAAAAEgAAAAAAAAEAAAAAAQABAAAAAAEAAAAAAAAAAAEAAAAAAQAHAAAAAAMAgwAAAAAAAAcAAAAABgAHAAAAAAAABwAAAAAGAAcAAAAAAAACAAAAAAAAgwAAAAAAAAcAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAEAAQAAAAABAAEAAAAAAQABAAAAAAEABwAAAAADAIMAAAAAAAAHAAAAAAIABwAAAAACAAcAAAAABgAHAAAAAAYAAgAAAAAAAIMAAAAAAAAHAAAAAAUAgwAAAAAAABIAAAAAAAASAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAQCDAAAAAAAABwAAAAADAAcAAAAAAAAHAAAAAAAABwAAAAAEAAIAAAAAAACDAAAAAAAABwAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAEAgwAAAAAAAAAAAAAAAAAHAAAAAAAAgwAAAAAAAAcAAAAABgAHAAAAAAYABwAAAAADAAcAAAAAAQACAAAAAAAAgwAAAAAAAAcAAAAAAwCDAAAAAAAAEgAAAAAAABIAAAAAAACDAAAAAAAAAQAAAAACAIMAAAAAAAAAAAAAAAAABwAAAAAFAIMAAAAAAAAHAAAAAAUABwAAAAAAAAcAAAAAAgAHAAAAAAYAAgAAAAAAAIMAAAAAAAAHAAAAAAQAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAgCDAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAACAAIAAAAAAACDAAAAAAAABwAAAAAEAIMAAAAAAAASAAAAAAAAEgAAAAAAAIMAAAAAAAABAAAAAAIAgwAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAgACAAAAAAAAgwAAAAAAAAcAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAACAIMAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAQAAgAAAAAAAIMAAAAAAAAHAAAAAAAAgwAAAAAAABIAAAAAAAASAAAAAAAAAAAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAFAAIAAAAAAACDAAAAAAAABwAAAAAEAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAAABAAAAAAIABAAAAAAAAAQAAAAAAAAEAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAgACAAAAAAAAgwAAAAAAAAcAAAAABgCDAAAAAAAAEgAAAAAAABIAAAAAAAAAAAAAAAAAAQAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAMAAgAAAAAAAIMAAAAAAAAHAAAAAAQAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAACAAIAAAAAAACDAAAAAAAABwAAAAADAAcAAAAAAAAHAAAAAAMABwAAAAAEAA== version: 7 -9,-1: ind: -9,-1 @@ -369,11 +369,11 @@ entities: version: 7 -9,-2: ind: -9,-2 - tiles: gwAAAAAAAAEAAAAAAgCDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAABgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAEAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAYABwAAAAAGAIMAAAAAAAAHAAAAAAAABwAAAAAFAAcAAAAABgAHAAAAAAYABwAAAAAFAAcAAAAABACDAAAAAAAAAQAAAAACAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAUABwAAAAACAIMAAAAAAACDAAAAAAAABwAAAAADAAcAAAAABQAHAAAAAAYABwAAAAACAAcAAAAABAAHAAAAAAUAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAABAAcAAAAAAAAHAAAAAAUABwAAAAAEAAcAAAAAAQAHAAAAAAAABwAAAAADAAEAAAAAAQABAAAAAAIAAQAAAAAAAAEAAAAAAgABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAYAAgAAAAAAAAcAAAAAAwAHAAAAAAYABwAAAAADAAcAAAAAAQAHAAAAAAEAAAAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAADAAIAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAEAAAAAAAAAAAAAAAAAAAAHAAAAAAIABwAAAAAAAIMAAAAAAAAHAAAAAAQABwAAAAAEAAcAAAAABgACAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAABwAAAAAEAIMAAAAAAACDAAAAAAAABwAAAAAGAAcAAAAABAAHAAAAAAAAAgAAAAAAAIMAAAAAAACDAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAAAAAAAAAAAEAAAAAAQAAAAAAAAAABwAAAAACAAcAAAAABQCDAAAAAAAABwAAAAAEAAcAAAAABQAHAAAAAAYABwAAAAACAAIAAAAAAACDAAAAAAAAgwAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAABQACAAAAAAAAgwAAAAAAAIMAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAAAAAAAAAAAgwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAIMAAAAAAAAHAAAAAAIAAgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAABAIMAAAAAAAALAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAAsAAAAAAACDAAAAAAAABwAAAAAFAAIAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAACwAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAALAAAAAAAAgwAAAAAAAAcAAAAAAAACAAAAAAAAgwAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAIMAAAAAAAABAAAAAAIAgwAAAAAAAAsAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAACwAAAAAAAIMAAAAAAAAHAAAAAAYAAgAAAAAAAIMAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAQAAAAACAIMAAAAAAAALAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAAsAAAAAAACDAAAAAAAABwAAAAAAAAIAAAAAAACDAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAgwAAAAAAAA== + tiles: gwAAAAAAAAEAAAAAAgCDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAABgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAEAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAYABwAAAAAGAIMAAAAAAAAHAAAAAAAABwAAAAAFAAcAAAAABgAHAAAAAAYABwAAAAAFAAcAAAAABACDAAAAAAAAAQAAAAACAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAUABwAAAAACAIMAAAAAAACDAAAAAAAABwAAAAADAAcAAAAABQAHAAAAAAYABwAAAAACAAcAAAAABAAHAAAAAAUAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAABAAcAAAAAAAAHAAAAAAUABwAAAAAEAAcAAAAAAQAHAAAAAAAABwAAAAADAAEAAAAAAQABAAAAAAIAAQAAAAAAAAEAAAAAAgABAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAAAEAAAAAAAABAAAAAAAAIMAAAAAAAAHAAAAAAYAAgAAAAAAAAcAAAAAAwAHAAAAAAYABwAAAAADAAcAAAAAAQAHAAAAAAEAAAAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAADAAIAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAEAAAAAAAAAAAAAAAAAAAAHAAAAAAIABwAAAAAAAIMAAAAAAAAHAAAAAAQABwAAAAAEAAcAAAAABgACAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAABwAAAAAEAIMAAAAAAACDAAAAAAAABwAAAAAGAAcAAAAABAAHAAAAAAAAAgAAAAAAAIMAAAAAAACDAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAAAAAAAAAAAEAAAAAAQAAAAAAAAAABwAAAAACAAcAAAAABQCDAAAAAAAABwAAAAAEAAcAAAAABQAHAAAAAAYABwAAAAACAAIAAAAAAACDAAAAAAAAgwAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAABQACAAAAAAAAgwAAAAAAAIMAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAAAAAAAAAAAgwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAIMAAAAAAAAHAAAAAAIAAgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAABAIMAAAAAAAALAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAAsAAAAAAACDAAAAAAAABwAAAAAFAAIAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAACwAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAALAAAAAAAAgwAAAAAAAAcAAAAAAAACAAAAAAAAgwAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAIMAAAAAAAABAAAAAAIAgwAAAAAAAAsAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAACwAAAAAAAIMAAAAAAAAHAAAAAAYAAgAAAAAAAIMAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAQAAAAACAIMAAAAAAAALAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAAsAAAAAAACDAAAAAAAABwAAAAAAAAIAAAAAAACDAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAgwAAAAAAAA== version: 7 -9,1: ind: -9,1 - tiles: gwAAAAAAAAEAAAAAAgCDAAAAAAAAAAAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAABwAAAAAGAAIAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAEAgwAAAAAAAAAAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAcAAAAAAAACAAAAAAAABwAAAAAEAAcAAAAAAAAHAAAAAAEABwAAAAADAAcAAAAABgCDAAAAAAAAAQAAAAACAIMAAAAAAAAAAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAAAHAAAAAAYAAgAAAAAAAAcAAAAAAQAHAAAAAAUABwAAAAABAAcAAAAAAwAHAAAAAAAAgwAAAAAAAAEAAAAAAQCDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAABwAAAAAEAAIAAAAAAAAHAAAAAAMABwAAAAACAAcAAAAAAAAHAAAAAAAABwAAAAAEAAAAAAAAAAABAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAcAAAAABAACAAAAAAAABwAAAAABAAcAAAAABAAHAAAAAAIABwAAAAAEAAcAAAAABgABAAAAAAAAAQAAAAACAAEAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAAAgAAAAAAAAcAAAAABQAHAAAAAAUABwAAAAAEAAcAAAAABQAHAAAAAAIAAAAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAABAAAAAAIAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAABAAHAAAAAAUAIAAAAAAAACAAAAAAAAAgAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAIAAQAAAAACAAEAAAAAAgABAAAAAAIAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAQAGAAAAAAAABgAAAAAAAAYAAAAAAAAIAAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAGABgAAAAAAAAYAAAAAAAAGAAAAAAAACAAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAFAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAHAAAAAAIAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAHAAAAAAUABwAAAAAAAAcAAAAAAgAHAAAAAAQABwAAAAAFAAcAAAAAAwAHAAAAAAYABwAAAAABAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAACAAcAAAAABQAHAAAAAAYABwAAAAAAAAcAAAAABgAHAAAAAAIABwAAAAAGAAcAAAAABgCDAAAAAAAAgwAAAAAAAA== + tiles: gwAAAAAAAAEAAAAAAgCDAAAAAAAAAAAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAABwAAAAAGAAIAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAEAgwAAAAAAAAAAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAcAAAAAAAACAAAAAAAABwAAAAAEAAcAAAAAAAAHAAAAAAEABwAAAAADAAcAAAAABgCDAAAAAAAAAQAAAAACAIMAAAAAAAAAAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAAAHAAAAAAYAAgAAAAAAAAcAAAAAAQAHAAAAAAUABwAAAAABAAcAAAAAAwAHAAAAAAAAgwAAAAAAAAEAAAAAAQCDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAABwAAAAAEAAIAAAAAAAAHAAAAAAMABwAAAAACAAcAAAAAAAAHAAAAAAAABwAAAAAEAAAAAAAAAAABAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAcAAAAABAACAAAAAAAABwAAAAABAAcAAAAABAAHAAAAAAIABwAAAAAEAAcAAAAABgABAAAAAAAAAQAAAAACAAEAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAAAgAAAAAAAAcAAAAABQAHAAAAAAUABwAAAAAEAAcAAAAABQAHAAAAAAIAAAAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAABAAAAAAIAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAIAAQAAAAACAAEAAAAAAgABAAAAAAIAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAACAAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAFAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAHAAAAAAUABwAAAAAAAAcAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAACAAcAAAAABQAHAAAAAAYABwAAAAAAAAcAAAAABgAHAAAAAAIABwAAAAAGAAcAAAAABgCDAAAAAAAAgwAAAAAAAA== version: 7 -10,-3: ind: -10,-3 @@ -401,7 +401,7 @@ entities: version: 7 -2,1: ind: -2,1 - tiles: IAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAwAAAAAAABoAAAAAAAAaAAAAAAAAAwAAAAAAAAMAAAAAAAAHAAAAAAYABwAAAAAGACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAMAAAAAAAAaAAAAAAAAGgAAAAAAAAMAAAAAAAADAAAAAAAABwAAAAAAAAcAAAAABQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAADAAAAAAAAGgAAAAAAABoAAAAAAAADAAAAAAAAAwAAAAAAAAcAAAAABQAHAAAAAAYAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgwAAAAAAABoAAAAAAAAaAAAAAAAAAwAAAAAAAAMAAAAAAAAHAAAAAAYABwAAAAACACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAaAAAAAAAAGgAAAAAAAAMAAAAAAAADAAAAAAAABwAAAAAFAAcAAAAABQAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACDAAAAAAAABwAAAAADAAcAAAAAAwAHAAAAAAQABwAAAAABAAcAAAAABgAHAAAAAAMAgwAAAAAAAIMAAAAAAAAEAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAEABwAAAAAFAAcAAAAABgAHAAAAAAUABwAAAAABAIMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAACDAAAAAAAABwAAAAAGAAcAAAAAAAAHAAAAAAQABwAAAAADAAcAAAAAAgAHAAAAAAIABwAAAAABAAcAAAAAAQAHAAAAAAYABwAAAAAFAAcAAAAAAgCDAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAgwAAAAAAAAcAAAAABgAHAAAAAAQABwAAAAABAAcAAAAAAwAHAAAAAAMABwAAAAAFAAcAAAAABQAHAAAAAAUABwAAAAABAAEAAAAAAgABAAAAAAIAgwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAIMAAAAAAAAHAAAAAAYABwAAAAAEAAcAAAAAAQAHAAAAAAAABwAAAAAAAAcAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: IAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAwAAAAAAABoAAAAAAAAaAAAAAAAAAwAAAAAAAAMAAAAAAACDAAAAAAAABwAAAAAGACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAMAAAAAAAAaAAAAAAAAGgAAAAAAAAMAAAAAAAADAAAAAAAAgwAAAAAAAAcAAAAABQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAADAAAAAAAAGgAAAAAAABoAAAAAAAADAAAAAAAAAwAAAAAAAIMAAAAAAAAHAAAAAAYAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgwAAAAAAABoAAAAAAAAaAAAAAAAAAwAAAAAAAAMAAAAAAACDAAAAAAAABwAAAAACACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAaAAAAAAAAGgAAAAAAAAMAAAAAAAADAAAAAAAAgwAAAAAAAAcAAAAABQAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAMAgwAAAAAAAIMAAAAAAAAEAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAEABwAAAAAFAAcAAAAABgAHAAAAAAUABwAAAAABAIMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAACDAAAAAAAABwAAAAAGAAcAAAAAAAAHAAAAAAQABwAAAAADAAcAAAAAAgAHAAAAAAIABwAAAAABAAcAAAAAAQAHAAAAAAYABwAAAAAFAAcAAAAAAgCDAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAgwAAAAAAAAcAAAAABgAHAAAAAAQABwAAAAABAAcAAAAAAwAHAAAAAAMABwAAAAAFAAcAAAAABQAHAAAAAAUABwAAAAABAAEAAAAAAgABAAAAAAIAgwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAIMAAAAAAAAHAAAAAAYABwAAAAAEAAcAAAAAAQAHAAAAAAAABwAAAAAAAAcAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -1,1: ind: -1,1 @@ -433,7 +433,7 @@ entities: version: 7 -3,-5: ind: -3,-5 - tiles: BwAAAAAFAAcAAAAAAAAHAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEAAAAAAAAAAAcAAAAAAgAHAAAAAAEABwAAAAAEAAcAAAAABAAHAAAAAAYABwAAAAADAAcAAAAAAgAHAAAAAAMABwAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAADAAcAAAAABQAHAAAAAAEABwAAAAAFAAcAAAAAAwAHAAAAAAUABwAAAAACAAcAAAAAAgAHAAAAAAAABwAAAAAGAAcAAAAABgAHAAAAAAQAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAFAAcAAAAAAAAHAAAAAAAABwAAAAAEAAcAAAAABgAHAAAAAAEABwAAAAAFAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAFAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAwAHAAAAAAEABwAAAAADAAcAAAAAAQAHAAAAAAIABwAAAAABAAcAAAAAAgCDAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAEABwAAAAAFAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAEAgwAAAAAAABIAAAAAAAAMAAAAAAEAEgAAAAAAAIMAAAAAAAAHAAAAAAMABwAAAAAFAAcAAAAAAQAHAAAAAAAABwAAAAACAAcAAAAABgAhAAAAAAAAIQAAAAAAACEAAAAAAACDAAAAAAAABwAAAAAAAIMAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAACDAAAAAAAABwAAAAACAAcAAAAAAQAHAAAAAAQABwAAAAADAAcAAAAABQAHAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAABACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAUABwAAAAABAAcAAAAABQAHAAAAAAEABwAAAAAFAAcAAAAABQAHAAAAAAIABwAAAAAAAAcAAAAAAwAHAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAABgCDAAAAAAAAGgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAAgwAAAAAAABoAAAAAAAAaAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAACDAAAAAAAABwAAAAAAAIMAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAgwAAAAAAAIMAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAABACDAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABoAAAAAAAAaAAAAAAAAgwAAAAAAACAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACDAAAAAAAABwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgwAAAAAAAA== + tiles: BwAAAAAFAAcAAAAAAAAHAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEAAAAAAAAAAAcAAAAAAgAHAAAAAAEABwAAAAAEAAcAAAAABAAHAAAAAAYABwAAAAADAAcAAAAAAgAHAAAAAAMABwAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAABAAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAADAAcAAAAABQAHAAAAAAEABwAAAAAFAAcAAAAAAwAHAAAAAAUABwAAAAACAAcAAAAAAgAHAAAAAAAABwAAAAAGAAcAAAAABgAHAAAAAAQAgwAAAAAAAAQAAAAAAACDAAAAAAAABwAAAAAFAAcAAAAAAAAHAAAAAAAABwAAAAAEAAcAAAAABgAHAAAAAAEABwAAAAAFAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAFAIMAAAAAAAAEAAAAAAAAgwAAAAAAAAcAAAAAAwAHAAAAAAEABwAAAAADAAcAAAAAAQAHAAAAAAIABwAAAAABAAcAAAAAAgCDAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAAAAIMAAAAAAAAHAAAAAAEABwAAAAAFAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAEAgwAAAAAAABIAAAAAAAAMAAAAAAEAEgAAAAAAAIMAAAAAAAAHAAAAAAMABwAAAAAFAAcAAAAAAQAHAAAAAAAABwAAAAACAAcAAAAABgAhAAAAAAAAIQAAAAAAACEAAAAAAACDAAAAAAAABwAAAAAAAIMAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAACDAAAAAAAABwAAAAACAAcAAAAAAQAHAAAAAAQABwAAAAADAAcAAAAABQAHAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAABACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAUABwAAAAABAAcAAAAABQAHAAAAAAEABwAAAAAFAAcAAAAABQAHAAAAAAIABwAAAAAAAAcAAAAAAwAHAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAABgCDAAAAAAAAGgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAAgwAAAAAAABoAAAAAAAAaAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAACDAAAAAAAABwAAAAAAAIMAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAgwAAAAAAAIMAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAABACDAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABoAAAAAAAAaAAAAAAAAgwAAAAAAACAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACDAAAAAAAABwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgwAAAAAAAA== version: 7 -4,-6: ind: -4,-6 @@ -445,7 +445,7 @@ entities: version: 7 -1,-5: ind: -1,-5 - tiles: AQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAgAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAIAAQAAAAAAAAEAAAAAAAABAAAAAAIAAQAAAAACAAEAAAAAAAABAAAAAAIAAQAAAAAAAAEAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAEAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAAEAAAAAAQABAAAAAAEAAQAAAAACAAEAAAAAAgABAAAAAAIAAQAAAAACAAEAAAAAAQABAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAgAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAACAAEAAAAAAgABAAAAAAAAAQAAAAABAAEAAAAAAAABAAAAAAEAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAgAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAIAAQAAAAAAAAEAAAAAAAABAAAAAAIAAQAAAAACAAEAAAAAAAABAAAAAAIAAQAAAAAAAAEAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAEAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAAEAAAAAAQABAAAAAAEAAQAAAAACAAEAAAAAAgABAAAAAAIAAQAAAAACAAEAAAAAAQABAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAgAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAACDAAAAAAAAAQAAAAACAAEAAAAAAgABAAAAAAAAAQAAAAABAAEAAAAAAAABAAAAAAEAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -2,-6: ind: -2,-6 @@ -465,7 +465,7 @@ entities: version: 7 -8,-5: ind: -8,-5 - tiles: AAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAwAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAACAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAMAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAgAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAADAAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAIAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAAAwAAAAAAQAaAAAAAAAAGgAAAAAAABoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAMAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAADAAAAAAAAAMAAAAAAAAMAAAAAAAADAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAEAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAwAAAAAAQADAAAAAAAAAwAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAABAAEAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAEADAAAAAAAAAwAAAAAAQADAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAQAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAADAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAEAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAwAAAAAAAADAAAAAAAADAAAAAABAAwAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAACAAEAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAMAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAABAIMAAAAAAAABAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAADAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABMAAAAAAAATAAAAAAAAAQAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAAAAAwAAAAAAAADAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAAMAAAAAAAAAwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAADAAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAEAAAAAAQABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAgABAAAAAAIAAQAAAAACAA== + tiles: AAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAwAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAACAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAMAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAgAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAADAAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAIAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAAAwAAAAAAQAaAAAAAAAAGgAAAAAAABoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAMAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAADAAAAAAAAAMAAAAAAAAMAAAAAAAADAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAEAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAwAAAAAAQADAAAAAAAAAwAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAABAAEAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAEADAAAAAAAAAwAAAAAAQADAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAQAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAADAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAEAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAwAAAAAAAADAAAAAAAADAAAAAABAAwAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAACAAEAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAMAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAABAIMAAAAAAAABAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAADAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABMAAAAAAAATAAAAAAAAAQAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAAAAAwAAAAAAAADAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAAMAAAAAAAAAwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAADAAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAEAAAAAAQABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAgABAAAAAAIAAQAAAAACAA== version: 7 -8,-6: ind: -8,-6 @@ -2842,25 +2842,6 @@ entities: - type: ExplosionAirtightGrid - type: ChunkContainer chunkEntities: - - 27138 - - 27139 - - 27140 - - 27141 - - 27142 - - 27143 - - 27144 - - 27145 - - 27146 - - 27147 - - 27148 - - 27149 - - 27150 - - 27151 - - 27152 - - 27153 - - 27154 - - 27155 - - 27156 - 27157 - 27158 - 27159 @@ -2908,6 +2889,25 @@ entities: - 27201 - 27202 - 27203 + - 27204 + - 27205 + - 27206 + - 27207 + - 27208 + - 27209 + - 27210 + - 27211 + - 27212 + - 27213 + - 27214 + - 27215 + - 27216 + - 27217 + - 27218 + - 27219 + - 27220 + - 27221 + - 27222 - proto: AccordionInstrument entities: - uid: 25884 @@ -2926,7 +2926,7 @@ entities: components: - type: Transform parent: 2 - pos: -89.49506,-22.368973 + pos: -91.7545,-17.31215 - uid: 24353 components: - type: Transform @@ -7454,7 +7454,7 @@ entities: pos: -131.5,-45.5 - type: Door state: Opening - secondsUntilStateChange: -91111.48 + secondsUntilStateChange: -100831.81 - type: DeviceLinkSource lastSignals: DoorStatus: True @@ -8058,8 +8058,8 @@ entities: - type: DeviceNetwork deviceLists: - 6929 - - 26265 - 9587 + - 4005 - uid: 18721 components: - type: Transform @@ -9528,13 +9528,6 @@ entities: - type: Transform parent: 2 pos: -53.49543,-40.523304 -- proto: AsimovCircuitBoard - entities: - - uid: 24941 - components: - - type: Transform - parent: 2 - pos: -118.54267,-70.58629 - proto: AsteroidRock entities: - uid: 145 @@ -19545,8 +19538,7 @@ entities: components: - type: Transform parent: 2 - rot: 1.5707963267948966 rad - pos: -55.5,-38.5 + pos: -55.289032,-36.748703 - proto: BarSignComboCafe entities: - uid: 9228 @@ -20760,7 +20752,7 @@ entities: components: - type: Transform parent: 2 - pos: -62.434715,-2.3035812 + pos: -62.623447,-2.2316713 - proto: BoxFolderGreen entities: - uid: 19468 @@ -20895,7 +20887,26 @@ entities: components: - type: Transform parent: 2 - pos: -55.446175,-36.496502 + pos: -55.71085,-36.311203 + - type: GroupExamine + group: + - title: null + icon: /Textures/Interface/examine-star.png + hoverMessage: "" + entries: + - priority: 0 + message: >- + It provides the following protection: + + - [color=orange]Explosion[/color] damage [color=white]to contents[/color] reduced by [color=lightblue]10%[/color]. + component: Armor + - priority: 0 + message: This decreases your running speed by [color=yellow]10%[/color]. + component: ClothingSpeedModifier + contextText: verb-examine-group-other + components: + - Armor + - ClothingSpeedModifier - proto: BoxPillCanister entities: - uid: 16667 @@ -53342,21 +53353,6 @@ entities: - type: Transform parent: 2 pos: -125.5,11.5 - - uid: 9997 - components: - - type: Transform - parent: 2 - pos: -94.5,36.5 - - uid: 9998 - components: - - type: Transform - parent: 2 - pos: -94.5,37.5 - - uid: 9999 - components: - - type: Transform - parent: 2 - pos: -94.5,39.5 - uid: 10000 components: - type: Transform @@ -53372,11 +53368,6 @@ entities: - type: Transform parent: 2 pos: -94.5,42.5 - - uid: 10003 - components: - - type: Transform - parent: 2 - pos: -94.5,38.5 - uid: 10014 components: - type: Transform @@ -53872,6 +53863,11 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: -154.5,2.5 + - uid: 13936 + components: + - type: Transform + parent: 2 + pos: -105.5,12.5 - uid: 13958 components: - type: Transform @@ -59951,7 +59947,7 @@ entities: pos: -85.48848,-41.319702 - proto: ChunkEntity entities: - - uid: 27138 + - uid: 27157 components: - type: ChunkEntity root: 2 @@ -60294,7 +60290,7 @@ entities: 7763: -116,-43 7764: -115,-43 7765: -114,-43 - - uid: 27139 + - uid: 27158 components: - type: ChunkEntity root: 2 @@ -60468,7 +60464,7 @@ entities: decals: 2408: -113,17 2409: -114,17 - - uid: 27140 + - uid: 27159 components: - type: ChunkEntity root: 2 @@ -60858,7 +60854,7 @@ entities: decals: 1451: -58,-21 1452: -59,-21 - - uid: 27141 + - uid: 27160 components: - type: ChunkEntity root: 2 @@ -61106,7 +61102,7 @@ entities: 724: -27,-51 725: -27,-50 726: -27,-49 - - uid: 27142 + - uid: 27161 components: - type: ChunkEntity root: 2 @@ -61357,7 +61353,7 @@ entities: 6803: -104,15 6804: -103,15 6805: -99,15 - - uid: 27143 + - uid: 27162 components: - type: ChunkEntity root: 2 @@ -61480,7 +61476,7 @@ entities: color: '#FFFFFFFF' decals: 292: -47,1 - - uid: 27144 + - uid: 27163 components: - type: ChunkEntity root: 2 @@ -61652,7 +61648,7 @@ entities: 7807: -121,10 7808: -120,10 7809: -119,10 - - uid: 27145 + - uid: 27164 components: - type: ChunkEntity root: 2 @@ -61997,7 +61993,7 @@ entities: decals: 7873: -22,-21 7874: -22,-20 - - uid: 27146 + - uid: 27165 components: - type: ChunkEntity root: 2 @@ -62198,7 +62194,7 @@ entities: color: '#FFFFFFFF' decals: 7605: -98,-9 - - uid: 27147 + - uid: 27166 components: - type: ChunkEntity root: 2 @@ -62488,7 +62484,7 @@ entities: color: '#FFFFFFFF' decals: 308: -47,-6 - - uid: 27148 + - uid: 27167 components: - type: ChunkEntity root: 2 @@ -62694,7 +62690,7 @@ entities: color: '#DE3A3A96' decals: 8075: -78,-29 - - uid: 27149 + - uid: 27168 components: - type: ChunkEntity root: 2 @@ -62930,7 +62926,7 @@ entities: 1308: -31,-11 1309: -30,-11 1310: -29,-11 - - uid: 27150 + - uid: 27169 components: - type: ChunkEntity root: 2 @@ -62985,6 +62981,26 @@ entities: color: '#FFFFFFFF' cleanable: True decals: + 11: -92,-20 + 12: -92,-19 + 13: -91,-21 + 15: -91,-20 + 16: -90,-20 + 17: -90,-19 + 18: -90,-18 + 20: -92,-22 + 23: -90,-21 + 24: -88,-21 + 25: -87,-21 + 28: -89,-22 + 29: -89,-23 + 31: -87,-23 + 32: -87,-24 + 33: -88,-24 + 34: -89,-24 + 35: -93,-23 + 39: -91,-19 + 40: -91,-23 4053: -96,-18 4054: -96,-19 4055: -96,-20 @@ -63004,6 +63020,7 @@ entities: color: '#FFFFFFFF' cleanable: True decals: + 14: -91,-22 7908: -82,-27 8415: -95,-23 8417: -95,-25 @@ -63015,6 +63032,10 @@ entities: color: '#FFFFFFFF' cleanable: True decals: + 19: -90,-22 + 21: -91,-18 + 27: -87,-22 + 38: -91,-19 7979: -95,-27 8077: -94,-32 8423: -96,-26 @@ -63028,6 +63049,13 @@ entities: color: '#FFFFFFFF' cleanable: True decals: + 9: -92,-21 + 22: -90,-22 + 26: -88,-22 + 30: -88,-23 + 36: -92,-23 + 37: -91,-18 + 41: -91,-24 3423: -93,-26 3424: -92,-26 3428: -94,-27 @@ -63078,38 +63106,16 @@ entities: 4011: -89,-26 4013: -84,-26 4015: -81,-26 - 4016: -88,-24 - 4017: -90,-24 - 4018: -89,-23 4019: -87,-24 4020: -87,-24 - 4021: -87,-22 - 4022: -89,-22 - 4023: -91,-22 - 4024: -92,-22 - 4025: -93,-23 4026: -93,-24 4027: -92,-24 - 4028: -92,-23 - 4029: -92,-22 4030: -93,-22 - 4031: -92,-21 - 4032: -92,-21 - 4033: -91,-21 4034: -93,-21 4035: -93,-20 - 4036: -91,-20 - 4037: -91,-19 - 4038: -92,-19 4039: -93,-19 4040: -92,-18 - 4041: -91,-18 - 4042: -92,-20 4043: -89,-21 - 4044: -90,-22 - 4045: -88,-22 - 4046: -88,-23 - 4047: -91,-23 7078: -83,-28 7080: -81,-27 7081: -88,-26 @@ -63142,17 +63148,19 @@ entities: id: HalfTileOverlayGreyscale color: '#DE3A3A96' decals: + 10: -91,-18 1780: -92,-18 - node: id: HalfTileOverlayGreyscale180 color: '#DE3A3A96' decals: + 7: -91,-24 1776: -92,-24 - node: id: HalfTileOverlayGreyscale270 color: '#DE3A3A96' decals: - 1768: -93,-23 + 3: -93,-23 1769: -93,-22 1770: -93,-21 1771: -93,-20 @@ -63161,13 +63169,14 @@ entities: id: HalfTileOverlayGreyscale90 color: '#DE3A3A96' decals: - 1777: -91,-23 - 1778: -91,-20 - 1779: -91,-19 + 4: -90,-19 + 5: -90,-20 + 6: -91,-23 - node: id: QuarterTileOverlayGreyscale color: '#DE3A3A96' decals: + 2: -90,-18 1697: -93,-26 1698: -92,-26 1699: -91,-26 @@ -63186,6 +63195,7 @@ entities: id: QuarterTileOverlayGreyscale180 color: '#DE3A3A96' decals: + 1: -90,-18 1689: -95,-18 1690: -95,-19 1691: -95,-20 @@ -63212,6 +63222,12 @@ entities: 8007: -96,-30 8008: -96,-31 8009: -96,-32 + - node: + id: QuarterTileOverlayGreyscale90 + color: '#DE3A3A96' + decals: + 0: -90,-18 + 8: -91,-24 - node: id: StandClear color: '#FFFFFFFF' @@ -63222,21 +63238,11 @@ entities: color: '#DE3A3A96' decals: 1773: -93,-18 - - node: - id: ThreeQuarterTileOverlayGreyscale180 - color: '#DE3A3A96' - decals: - 1775: -91,-24 - node: id: ThreeQuarterTileOverlayGreyscale270 color: '#DE3A3A96' decals: 1767: -93,-24 - - node: - id: ThreeQuarterTileOverlayGreyscale90 - color: '#DE3A3A96' - decals: - 1774: -91,-18 - node: id: WarnCornerNE color: '#FFFFFFFF' @@ -63325,7 +63331,7 @@ entities: 1784: -82,-32 1785: -81,-32 8262: -84,-32 - - uid: 27151 + - uid: 27170 components: - type: ChunkEntity root: 2 @@ -63530,7 +63536,7 @@ entities: decals: 6683: -119,-66 6684: -119,-67 - - uid: 27152 + - uid: 27171 components: - type: ChunkEntity root: 2 @@ -63605,7 +63611,7 @@ entities: color: '#D381C996' decals: 7011: -122,-83 - - uid: 27153 + - uid: 27172 components: - type: ChunkEntity root: 2 @@ -63789,7 +63795,7 @@ entities: 86: -65,-6 115: -65,-12 116: -65,-11 - - uid: 27154 + - uid: 27173 components: - type: ChunkEntity root: 2 @@ -63959,7 +63965,7 @@ entities: decals: 2181: -132,-17 2182: -132,-18 - - uid: 27155 + - uid: 27174 components: - type: ChunkEntity root: 2 @@ -64236,7 +64242,7 @@ entities: 271: -54,-6 272: -54,-7 290: -54,-1 - - uid: 27156 + - uid: 27175 components: - type: ChunkEntity root: 2 @@ -64433,7 +64439,7 @@ entities: 475: -29,0 630: -30,4 631: -30,8 - - uid: 27157 + - uid: 27176 components: - type: ChunkEntity root: 2 @@ -64757,7 +64763,7 @@ entities: 542: -40,-25 543: -39,-25 1204: -48,-23 - - uid: 27158 + - uid: 27177 components: - type: ChunkEntity root: 2 @@ -64991,7 +64997,7 @@ entities: 458: -14,-13 459: -14,-14 460: -14,-15 - - uid: 27159 + - uid: 27178 components: - type: ChunkEntity root: 2 @@ -65139,7 +65145,7 @@ entities: 966: -12,-20 996: -12,-21 1004: -12,-19 - - uid: 27160 + - uid: 27179 components: - type: ChunkEntity root: 2 @@ -65524,7 +65530,7 @@ entities: 1941: -85,-35 1942: -85,-34 1943: -85,-33 - - uid: 27161 + - uid: 27180 components: - type: ChunkEntity root: 2 @@ -65725,7 +65731,7 @@ entities: color: '#FFFFFFFF' decals: 2175: -128,-16 - - uid: 27162 + - uid: 27181 components: - type: ChunkEntity root: 2 @@ -65828,7 +65834,7 @@ entities: 2055: -151,-4 2056: -149,-4 2058: -151,-12 - - uid: 27163 + - uid: 27182 components: - type: ChunkEntity root: 2 @@ -66025,7 +66031,7 @@ entities: decals: 2382: -89,12 2383: -90,12 - - uid: 27164 + - uid: 27183 components: - type: ChunkEntity root: 2 @@ -66250,7 +66256,7 @@ entities: 2633: -135,-46 2634: -134,-46 2635: -133,-46 - - uid: 27165 + - uid: 27184 components: - type: ChunkEntity root: 2 @@ -66467,7 +66473,7 @@ entities: 2798: -104,-37 7366: -105,-37 8167: -97,-43 - - uid: 27166 + - uid: 27185 components: - type: ChunkEntity root: 2 @@ -66773,7 +66779,7 @@ entities: cleanable: True decals: 5965: -40,-47 - - uid: 27167 + - uid: 27186 components: - type: ChunkEntity root: 2 @@ -66814,7 +66820,7 @@ entities: 2759: -131,-49 2760: -130,-49 2761: -129,-49 - - uid: 27168 + - uid: 27187 components: - type: ChunkEntity root: 2 @@ -66897,7 +66903,7 @@ entities: 6522: -95,35 6523: -94,35 7863: -96,35 - - uid: 27169 + - uid: 27188 components: - type: ChunkEntity root: 2 @@ -67078,7 +67084,7 @@ entities: 6510: -94,30 6511: -93,30 6512: -92,30 - - uid: 27170 + - uid: 27189 components: - type: ChunkEntity root: 2 @@ -67364,7 +67370,7 @@ entities: 703: -31,-40 704: -30,-40 705: -29,-40 - - uid: 27171 + - uid: 27190 components: - type: ChunkEntity root: 2 @@ -67526,7 +67532,7 @@ entities: color: '#FFFFFFFF' decals: 2176: -128,-17 - - uid: 27172 + - uid: 27191 components: - type: ChunkEntity root: 2 @@ -67777,7 +67783,7 @@ entities: 7998: -101,-31 7999: -101,-30 8001: -101,-29 - - uid: 27173 + - uid: 27192 components: - type: ChunkEntity root: 2 @@ -68076,7 +68082,7 @@ entities: decals: 7606: -96,-8 7608: -93,-10 - - uid: 27174 + - uid: 27193 components: - type: ChunkEntity root: 2 @@ -68233,7 +68239,7 @@ entities: 5456: -134,-1 5457: -135,-1 5461: -134,-5 - - uid: 27175 + - uid: 27194 components: - type: ChunkEntity root: 2 @@ -68418,7 +68424,7 @@ entities: color: '#FFFFFFFF' decals: 291: -54,0 - - uid: 27176 + - uid: 27195 components: - type: ChunkEntity root: 2 @@ -68514,7 +68520,7 @@ entities: decals: 176: -68,0 177: -67,0 - - uid: 27177 + - uid: 27196 components: - type: ChunkEntity root: 2 @@ -68706,7 +68712,7 @@ entities: color: '#FFFFFFFF' decals: 1038: -64,-37 - - uid: 27178 + - uid: 27197 components: - type: ChunkEntity root: 2 @@ -68809,7 +68815,7 @@ entities: 6342: -148,-43 6343: -147,-43 6344: -149,-43 - - uid: 27179 + - uid: 27198 components: - type: ChunkEntity root: 2 @@ -68852,7 +68858,7 @@ entities: 6345: -149,-49 6346: -148,-49 6347: -147,-49 - - uid: 27180 + - uid: 27199 components: - type: ChunkEntity root: 2 @@ -69052,7 +69058,7 @@ entities: color: '#FFFFFFFF' decals: 6103: -67,-38 - - uid: 27181 + - uid: 27200 components: - type: ChunkEntity root: 2 @@ -69249,7 +69255,7 @@ entities: 7284: -56,-52 7303: -53,-56 7304: -53,-55 - - uid: 27182 + - uid: 27201 components: - type: ChunkEntity root: 2 @@ -69328,7 +69334,7 @@ entities: 5458: -135,0 5459: -134,0 5460: -134,1 - - uid: 27183 + - uid: 27202 components: - type: ChunkEntity root: 2 @@ -69438,7 +69444,7 @@ entities: 8084: -98,-51 8085: -98,-50 8086: -98,-49 - - uid: 27184 + - uid: 27203 components: - type: ChunkEntity root: 2 @@ -69615,7 +69621,7 @@ entities: color: '#FFFFFFFF' decals: 7599: -91,-63 - - uid: 27185 + - uid: 27204 components: - type: ChunkEntity root: 2 @@ -69758,7 +69764,7 @@ entities: 2953: -36,-70 2954: -34,-70 2955: -35,-70 - - uid: 27186 + - uid: 27205 components: - type: ChunkEntity root: 2 @@ -69789,7 +69795,7 @@ entities: color: '#FFFFFFFF' decals: 7818: -52,-66 - - uid: 27187 + - uid: 27206 components: - type: ChunkEntity root: 2 @@ -69923,7 +69929,7 @@ entities: 7841: -76,-56 7847: -73,-58 7849: -73,-56 - - uid: 27188 + - uid: 27207 components: - type: ChunkEntity root: 2 @@ -70133,7 +70139,7 @@ entities: color: '#B02E26FF' decals: 7771: -35.00467,-54.105 - - uid: 27189 + - uid: 27208 components: - type: ChunkEntity root: 2 @@ -70199,7 +70205,7 @@ entities: 393: -36,18 394: -36,20 395: -36,19 - - uid: 27190 + - uid: 27209 components: - type: ChunkEntity root: 2 @@ -70251,7 +70257,7 @@ entities: cleanable: True decals: 5397: -16,-55 - - uid: 27191 + - uid: 27210 components: - type: ChunkEntity root: 2 @@ -70358,7 +70364,7 @@ entities: color: '#FFFFFFFF' decals: 2938: -25,-68 - - uid: 27192 + - uid: 27211 components: - type: ChunkEntity root: 2 @@ -70425,7 +70431,7 @@ entities: decals: 7896: -91.05765,-72.96845 7897: -93.05765,-71.09345 - - uid: 27193 + - uid: 27212 components: - type: ChunkEntity root: 2 @@ -70499,7 +70505,7 @@ entities: 5445: -6,-38 5446: -4,-35 5447: -4,-35 - - uid: 27194 + - uid: 27213 components: - type: ChunkEntity root: 2 @@ -70569,7 +70575,7 @@ entities: 7237: -137,26 7238: -137,27 7239: -137,28 - - uid: 27195 + - uid: 27214 components: - type: ChunkEntity root: 2 @@ -70604,7 +70610,7 @@ entities: color: '#FFFFFFFF' decals: 7825: -77,-73 - - uid: 27196 + - uid: 27215 components: - type: ChunkEntity root: 2 @@ -70833,7 +70839,7 @@ entities: decals: 2916: -111,22 2922: -110,21 - - uid: 27197 + - uid: 27216 components: - type: ChunkEntity root: 2 @@ -71030,7 +71036,7 @@ entities: 7766: -114,-49 7767: -115,-49 7768: -116,-49 - - uid: 27198 + - uid: 27217 components: - type: ChunkEntity root: 2 @@ -71115,7 +71121,7 @@ entities: 399: -30,21 405: -32,21 406: -28,21 - - uid: 27199 + - uid: 27218 components: - type: ChunkEntity root: 2 @@ -71162,7 +71168,7 @@ entities: 5669: -10,6 5670: -9,6 5671: -8,6 - - uid: 27200 + - uid: 27219 components: - type: ChunkEntity root: 2 @@ -71195,7 +71201,7 @@ entities: 6529: -98,33 6530: -98,34 6534: -98,35 - - uid: 27201 + - uid: 27220 components: - type: ChunkEntity root: 2 @@ -71228,7 +71234,7 @@ entities: 6540: -113.43667,36.99878 6541: -112.06167,35.358154 6542: -113.98354,35.201904 - - uid: 27202 + - uid: 27221 components: - type: ChunkEntity root: 2 @@ -71244,7 +71250,7 @@ entities: cleanable: True decals: 7057: -102.71358,-66.1344 - - uid: 27203 + - uid: 27222 components: - type: ChunkEntity root: 2 @@ -71939,32 +71945,6 @@ entities: - type: Transform parent: 2 pos: -104.5,19.5 -- proto: ClosetTool - entities: - - uid: 6752 - components: - - type: Transform - parent: 2 - pos: -88.5,-17.5 - - type: EntityStorage - air: - temperature: 293.14673 - volume: 200 - moles: - Oxygen: 1.7459903 - Nitrogen: 6.568249 - immutable: False - - type: ContainerContainer - containers: - entity_storage: !type:Container - ents: - - 4018 - showEnts: False - occludes: True - paper_label: !type:ContainerSlot - ent: null - showEnts: False - occludes: True - proto: ClosetToolFilled entities: - uid: 4977 @@ -72094,13 +72074,6 @@ entities: pos: -107.5,-15.5 - proto: ClothingBeltUtilityFilled entities: - - uid: 4018 - components: - - type: Transform - parent: 6752 - - type: Physics - canCollide: False - - type: InsideEntityStorage - uid: 24497 components: - type: Transform @@ -73023,6 +72996,12 @@ entities: pos: -122.5,-76.5 - proto: ComputerCriminalRecords entities: + - uid: 1059 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -89.5,-19.5 - uid: 2117 components: - type: Transform @@ -73034,12 +73013,6 @@ entities: - type: Transform parent: 2 pos: -64.5,7.5 - - uid: 6674 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -90.5,-19.5 - uid: 6727 components: - type: Transform @@ -73355,12 +73328,12 @@ entities: - type: Transform parent: 2 pos: -56.5,7.5 - - uid: 6666 + - uid: 4018 components: - type: Transform parent: 2 rot: -1.5707963267948966 rad - pos: -90.5,-18.5 + pos: -89.5,-18.5 - uid: 23059 components: - type: Transform @@ -73396,6 +73369,12 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: -60.5,-53.5 + - uid: 6553 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -89.5,-17.5 - uid: 8171 components: - type: Transform @@ -73430,11 +73409,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: -86.5,-50.5 - - uid: 22057 - components: - - type: Transform - parent: 2 - pos: -89.5,-20.5 - uid: 22267 components: - type: Transform @@ -74720,6 +74694,13 @@ entities: - type: Transform parent: 2 pos: -84.5,2.5 +- proto: CrewsimovCircuitBoard + entities: + - uid: 24941 + components: + - type: Transform + parent: 2 + pos: -118.54267,-70.58629 - proto: Crowbar entities: - uid: 981 @@ -84478,11 +84459,11 @@ entities: pos: -132.5,-52.5 - proto: DresserWardenFilled entities: - - uid: 17821 + - uid: 27142 components: - type: Transform parent: 2 - pos: -88.5,-20.5 + pos: -90.5,-17.5 - proto: DrinkBahamaMama entities: - uid: 19095 @@ -84516,6 +84497,18 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage + - uid: 27154 + components: + - type: Transform + parent: 2 + pos: -61.535065,-23.379587 +- proto: DrinkCoffeeJug + entities: + - uid: 2297 + components: + - type: Transform + parent: 2 + pos: -96.49904,10.521601 - proto: DrinkGoldenCup entities: - uid: 4305 @@ -84656,6 +84649,12 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: -84.5,-20.5 + - uid: 6752 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -95.5,-31.5 - uid: 8156 components: - type: Transform @@ -84711,12 +84710,6 @@ entities: - type: Transform parent: 2 pos: -59.5,0.5 - - uid: 12637 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -95.5,-29.5 - uid: 26483 components: - type: Transform @@ -84878,11 +84871,6 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: -71.5,-58.5 - - uid: 24311 - components: - - type: Transform - parent: 2 - pos: -110.5,-43.5 - uid: 24313 components: - type: Transform @@ -84913,6 +84901,11 @@ entities: - type: Transform parent: 2 pos: -36.5,-16.5 + - uid: 7463 + components: + - type: Transform + parent: 2 + pos: -112.5,-42.5 - uid: 10641 components: - type: Transform @@ -85002,6 +84995,13 @@ entities: pos: -40.5,-20.5 - type: FaxMachine name: Chemistry + - uid: 4799 + components: + - type: Transform + parent: 2 + pos: -89.5,-23.5 + - type: FaxMachine + name: Warden - uid: 5738 components: - type: MetaData @@ -85028,16 +85028,6 @@ entities: currentLabel: Bridge - type: NameModifier baseName: long range fax machine - - uid: 10175 - components: - - type: MetaData - name: long range fax machine - - type: Transform - parent: 2 - pos: -90.5,-17.5 - - type: FaxMachine - name: Warden - - type: Label - uid: 10749 components: - type: Transform @@ -85378,6 +85368,34 @@ entities: - 2980 - 2987 - 6938 + - uid: 4005 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -96.5,-29.5 + - type: DeviceList + devices: + - 18710 + - 26268 + - 23411 + - 13606 + - 26269 + - 2281 + - 16009 + - 16948 + - 16010 + - uid: 4471 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -71.5,-23.5 + - type: DeviceList + devices: + - 1658 + - 442 + - 12894 - uid: 8155 components: - type: MetaData @@ -85407,6 +85425,42 @@ entities: - 14590 - 13444 - 13445 + - uid: 9680 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -106.5,-14.5 + - type: DeviceList + devices: + - 13586 + - 14509 + - 14513 + - 14751 + - 20533 + - 6585 + - 6915 + - 12947 + - 12943 + - 12944 + - 22574 + - 13833 + - 13854 + - uid: 10175 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -101.5,-28.5 + - type: DeviceList + devices: + - 6585 + - 6915 + - 15885 + - 24698 + - 11281 + - 21753 + - 21953 - uid: 12768 components: - type: Transform @@ -85824,6 +85878,16 @@ entities: - 22802 - 22797 - 15417 + - uid: 24311 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -104.5,13.5 + - type: DeviceList + devices: + - 25556 + - 25557 - uid: 24312 components: - type: Transform @@ -85837,6 +85901,20 @@ entities: - 14162 - 11743 - 25584 + - uid: 24626 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -97.5,8.5 + - type: DeviceList + devices: + - 25646 + - 9265 + - 20533 + - 14751 + - 9303 + - 25779 - uid: 24784 components: - type: Transform @@ -86075,23 +86153,16 @@ entities: - 6537 - 6504 - 4984 - - uid: 26265 + - uid: 26333 components: - type: Transform parent: 2 - rot: -1.5707963267948966 rad - pos: -96.5,-29.5 + pos: -96.5,13.5 - type: DeviceList devices: - - 18710 - - 26268 - - 23411 - - 13606 - - 26269 - - 2281 - - 16009 - - 16948 - - 16010 + - 9166 + - 9303 + - 9356 - uid: 27060 components: - type: Transform @@ -86101,6 +86172,58 @@ entities: devices: - 27058 - 27059 + - uid: 27140 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -101.5,-40.5 + - type: DeviceList + devices: + - 27139 + - 21953 + - 21753 + - 9109 + - 9095 + - 26266 + - 26265 + - 26417 + - 27138 + - 25590 + - 25832 + - uid: 27146 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -87.5,13.5 + - type: DeviceList + devices: + - 19783 + - 9166 + - 25557 + - 19787 + - 27151 + - uid: 27149 + components: + - type: Transform + parent: 2 + pos: -90.5,31.5 + - type: DeviceList + devices: + - 27147 + - 511 + - 4433 + - uid: 27150 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -89.5,28.5 + - type: DeviceList + devices: + - 19787 + - 19788 - proto: FireAxeCabinetFilled entities: - uid: 7884 @@ -86213,7 +86336,7 @@ entities: pos: -97.5,-24.5 - type: DeviceNetwork deviceLists: - - 26265 + - 4005 - uid: 2287 components: - type: Transform @@ -86270,12 +86393,6 @@ entities: - type: DeviceNetwork deviceLists: - 7346 - - uid: 4471 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -110.5,-57.5 - uid: 5038 components: - type: Transform @@ -86392,6 +86509,12 @@ entities: - type: Transform parent: 2 pos: -43.5,-10.5 + - uid: 6666 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -110.5,-57.5 - uid: 7046 components: - type: Transform @@ -86503,11 +86626,17 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: -99.5,5.5 + - type: DeviceNetwork + deviceLists: + - 24626 - uid: 9356 components: - type: Transform parent: 2 pos: -94.5,6.5 + - type: DeviceNetwork + deviceLists: + - 26333 - uid: 9417 components: - type: Transform @@ -86646,6 +86775,9 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: -107.5,-31.5 + - type: DeviceNetwork + deviceLists: + - 10175 - uid: 11727 components: - type: Transform @@ -86676,6 +86808,9 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: -73.5,-19.5 + - type: DeviceNetwork + deviceLists: + - 4471 - uid: 13465 components: - type: Transform @@ -86825,6 +86960,9 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: -108.5,-26.5 + - type: DeviceNetwork + deviceLists: + - 10175 - uid: 16009 components: - type: Transform @@ -86832,7 +86970,7 @@ entities: pos: -96.5,-21.5 - type: DeviceNetwork deviceLists: - - 26265 + - 4005 - uid: 16010 components: - type: Transform @@ -86840,7 +86978,7 @@ entities: pos: -94.5,-21.5 - type: DeviceNetwork deviceLists: - - 26265 + - 4005 - uid: 16792 components: - type: Transform @@ -86859,7 +86997,7 @@ entities: pos: -95.5,-21.5 - type: DeviceNetwork deviceLists: - - 26265 + - 4005 - uid: 17427 components: - type: Transform @@ -86948,6 +87086,9 @@ entities: - type: Transform parent: 2 pos: -85.5,13.5 + - type: DeviceNetwork + deviceLists: + - 27146 - uid: 19784 components: - type: Transform @@ -86959,11 +87100,18 @@ entities: - type: Transform parent: 2 pos: -86.5,26.5 + - type: DeviceNetwork + deviceLists: + - 27146 + - 27150 - uid: 19788 components: - type: Transform parent: 2 pos: -87.5,32.5 + - type: DeviceNetwork + deviceLists: + - 27150 - uid: 20417 components: - type: Transform @@ -87077,6 +87225,9 @@ entities: - type: Transform parent: 2 pos: -85.5,-10.5 + - type: DeviceNetwork + deviceLists: + - 9680 - uid: 22768 components: - type: Transform @@ -87091,7 +87242,7 @@ entities: pos: -89.5,-33.5 - type: DeviceNetwork deviceLists: - - 26265 + - 4005 - uid: 23444 components: - type: Transform @@ -87266,6 +87417,9 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: -108.5,-27.5 + - type: DeviceNetwork + deviceLists: + - 10175 - uid: 25511 components: - type: Transform @@ -87309,6 +87463,9 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: -104.5,15.5 + - type: DeviceNetwork + deviceLists: + - 24311 - uid: 25584 components: - type: Transform @@ -87333,6 +87490,9 @@ entities: - type: Transform parent: 2 pos: -104.5,-60.5 + - type: DeviceNetwork + deviceLists: + - 27140 - uid: 25592 components: - type: Transform @@ -87365,6 +87525,15 @@ entities: - type: Transform parent: 2 pos: -133.5,2.5 + - uid: 25646 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -99.5,4.5 + - type: DeviceNetwork + deviceLists: + - 24626 - uid: 25650 components: - type: Transform @@ -87374,6 +87543,24 @@ entities: - type: DeviceNetwork deviceLists: - 25649 + - uid: 25779 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -105.5,12.5 + - type: DeviceNetwork + deviceLists: + - 24626 + - uid: 25832 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -107.5,-57.5 + - type: DeviceNetwork + deviceLists: + - 27140 - uid: 25872 components: - type: Transform @@ -87551,6 +87738,7 @@ entities: - type: DeviceNetwork deviceLists: - 18082 + - 27140 - uid: 26269 components: - type: Transform @@ -87559,7 +87747,7 @@ entities: pos: -96.5,-27.5 - type: DeviceNetwork deviceLists: - - 26265 + - 4005 - uid: 27058 components: - type: Transform @@ -87577,6 +87765,24 @@ entities: - type: DeviceNetwork deviceLists: - 27060 + - uid: 27139 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -100.5,-41.5 + - type: DeviceNetwork + deviceLists: + - 27140 + - uid: 27151 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -97.5,22.5 + - type: DeviceNetwork + deviceLists: + - 27146 - proto: FirelockEdge entities: - uid: 1782 @@ -88137,6 +88343,7 @@ entities: deviceLists: - 12769 - 17852 + - 4471 - uid: 507 components: - type: Transform @@ -88152,6 +88359,9 @@ entities: - type: Transform parent: 2 pos: -94.5,31.5 + - type: DeviceNetwork + deviceLists: + - 27149 - uid: 777 components: - type: Transform @@ -88168,6 +88378,7 @@ entities: deviceLists: - 24300 - 12151 + - 4471 - uid: 1667 components: - type: Transform @@ -88192,6 +88403,9 @@ entities: - type: Transform parent: 2 pos: -97.5,31.5 + - type: DeviceNetwork + deviceLists: + - 27149 - uid: 4984 components: - type: Transform @@ -88287,11 +88501,19 @@ entities: - type: Transform parent: 2 pos: -103.5,-21.5 + - type: DeviceNetwork + deviceLists: + - 9680 + - 10175 - uid: 6915 components: - type: Transform parent: 2 pos: -104.5,-21.5 + - type: DeviceNetwork + deviceLists: + - 9680 + - 10175 - uid: 6993 components: - type: Transform @@ -88636,6 +88858,7 @@ entities: - type: DeviceNetwork deviceLists: - 17833 + - 27140 - uid: 9109 components: - type: Transform @@ -88645,17 +88868,26 @@ entities: - type: DeviceNetwork deviceLists: - 17833 + - 27140 - uid: 9166 components: - type: Transform parent: 2 pos: -94.5,13.5 + - type: DeviceNetwork + deviceLists: + - 26333 + - 27146 - uid: 9303 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad pos: -97.5,7.5 + - type: DeviceNetwork + deviceLists: + - 24626 + - 26333 - uid: 9419 components: - type: Transform @@ -88789,18 +89021,27 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: -76.5,-13.5 + - type: DeviceNetwork + deviceLists: + - 9680 - uid: 12944 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad pos: -76.5,-14.5 + - type: DeviceNetwork + deviceLists: + - 9680 - uid: 12947 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad pos: -76.5,-12.5 + - type: DeviceNetwork + deviceLists: + - 9680 - uid: 12948 components: - type: Transform @@ -88936,6 +89177,7 @@ entities: - type: DeviceNetwork deviceLists: - 19526 + - 9680 - uid: 13606 components: - type: Transform @@ -88944,7 +89186,7 @@ entities: pos: -89.5,-27.5 - type: DeviceNetwork deviceLists: - - 26265 + - 4005 - uid: 13618 components: - type: Transform @@ -88994,6 +89236,9 @@ entities: - type: Transform parent: 2 pos: -96.5,-16.5 + - type: DeviceNetwork + deviceLists: + - 9680 - uid: 13847 components: - type: Transform @@ -89008,6 +89253,9 @@ entities: - type: Transform parent: 2 pos: -94.5,-16.5 + - type: DeviceNetwork + deviceLists: + - 9680 - uid: 13909 components: - type: Transform @@ -89083,6 +89331,7 @@ entities: - type: DeviceNetwork deviceLists: - 19526 + - 9680 - uid: 14513 components: - type: Transform @@ -89092,6 +89341,7 @@ entities: - type: DeviceNetwork deviceLists: - 19526 + - 9680 - uid: 14573 components: - type: Transform @@ -89253,6 +89503,10 @@ entities: - type: Transform parent: 2 pos: -103.5,-0.5 + - type: DeviceNetwork + deviceLists: + - 9680 + - 24626 - uid: 14752 components: - type: Transform @@ -89394,16 +89648,28 @@ entities: - type: Transform parent: 2 pos: -102.5,-0.5 + - type: DeviceNetwork + deviceLists: + - 9680 + - 24626 - uid: 21753 components: - type: Transform parent: 2 pos: -104.5,-36.5 + - type: DeviceNetwork + deviceLists: + - 10175 + - 27140 - uid: 21953 components: - type: Transform parent: 2 pos: -103.5,-36.5 + - type: DeviceNetwork + deviceLists: + - 10175 + - 27140 - uid: 22205 components: - type: Transform @@ -89445,6 +89711,10 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: -97.5,15.5 + - type: DeviceNetwork + deviceLists: + - 24311 + - 27146 - uid: 25564 components: - type: Transform @@ -89568,6 +89838,15 @@ entities: - type: Transform parent: 2 pos: -80.5,6.5 + - uid: 26265 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -95.5,-55.5 + - type: DeviceNetwork + deviceLists: + - 27140 - uid: 26268 components: - type: Transform @@ -89575,7 +89854,34 @@ entities: pos: -95.5,-35.5 - type: DeviceNetwork deviceLists: - - 26265 + - 4005 + - uid: 26417 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -95.5,-56.5 + - type: DeviceNetwork + deviceLists: + - 27140 + - uid: 27138 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -95.5,-57.5 + - type: DeviceNetwork + deviceLists: + - 27140 + - uid: 27147 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -94.5,26.5 + - type: DeviceNetwork + deviceLists: + - 27149 - proto: Fireplace entities: - uid: 8655 @@ -90662,6 +90968,13 @@ entities: - type: Transform parent: 2 pos: -24.391703,-70.56911 +- proto: FolderSpawner + entities: + - uid: 13864 + components: + - type: Transform + parent: 2 + pos: -62.216312,-2.4923801 - proto: FoodBagel entities: - uid: 25685 @@ -127494,11 +127807,6 @@ entities: - type: Transform parent: 2 pos: -157.5,-42.5 - - uid: 2297 - components: - - type: Transform - parent: 2 - pos: -157.5,-44.5 - uid: 2306 components: - type: Transform @@ -127844,11 +128152,6 @@ entities: - type: Transform parent: 2 pos: -33.5,-16.5 - - uid: 3951 - components: - - type: Transform - parent: 2 - pos: -72.5,-63.5 - uid: 3955 components: - type: Transform @@ -128099,21 +128402,6 @@ entities: - type: Transform parent: 2 pos: -82.5,-6.5 - - uid: 4491 - components: - - type: Transform - parent: 2 - pos: -87.5,4.5 - - uid: 4493 - components: - - type: Transform - parent: 2 - pos: -85.5,4.5 - - uid: 4497 - components: - - type: Transform - parent: 2 - pos: -84.5,4.5 - uid: 4533 components: - type: Transform @@ -128954,11 +129242,6 @@ entities: - type: Transform parent: 2 pos: -151.5,26.5 - - uid: 7525 - components: - - type: Transform - parent: 2 - pos: -127.5,-33.5 - uid: 7567 components: - type: Transform @@ -129104,11 +129387,6 @@ entities: - type: Transform parent: 2 pos: -89.5,38.5 - - uid: 8166 - components: - - type: Transform - parent: 2 - pos: -87.5,38.5 - uid: 8169 components: - type: Transform @@ -129419,11 +129697,6 @@ entities: - type: Transform parent: 2 pos: -30.5,-61.5 - - uid: 9084 - components: - - type: Transform - parent: 2 - pos: -90.5,38.5 - uid: 9085 components: - type: Transform @@ -129624,11 +129897,6 @@ entities: - type: Transform parent: 2 pos: -51.5,5.5 - - uid: 10581 - components: - - type: Transform - parent: 2 - pos: -43.5,5.5 - uid: 10582 components: - type: Transform @@ -129714,11 +129982,6 @@ entities: - type: Transform parent: 2 pos: -66.5,10.5 - - uid: 10603 - components: - - type: Transform - parent: 2 - pos: -68.5,10.5 - uid: 10604 components: - type: Transform @@ -129859,11 +130122,6 @@ entities: - type: Transform parent: 2 pos: -97.5,11.5 - - uid: 11879 - components: - - type: Transform - parent: 2 - pos: -143.5,27.5 - uid: 12163 components: - type: Transform @@ -129909,11 +130167,6 @@ entities: - type: Transform parent: 2 pos: -92.5,-52.5 - - uid: 12940 - components: - - type: Transform - parent: 2 - pos: -153.5,24.5 - uid: 13263 components: - type: Transform @@ -129989,21 +130242,11 @@ entities: - type: Transform parent: 2 pos: -144.5,4.5 - - uid: 13870 - components: - - type: Transform - parent: 2 - pos: -144.5,27.5 - uid: 13876 components: - type: Transform parent: 2 pos: -137.5,21.5 - - uid: 13883 - components: - - type: Transform - parent: 2 - pos: -157.5,-13.5 - uid: 13886 components: - type: Transform @@ -130014,11 +130257,6 @@ entities: - type: Transform parent: 2 pos: -157.5,-11.5 - - uid: 13889 - components: - - type: Transform - parent: 2 - pos: -157.5,-14.5 - uid: 13890 components: - type: Transform @@ -130064,21 +130302,11 @@ entities: - type: Transform parent: 2 pos: -140.5,27.5 - - uid: 13911 - components: - - type: Transform - parent: 2 - pos: -142.5,27.5 - uid: 13925 components: - type: Transform parent: 2 pos: -157.5,-35.5 - - uid: 13927 - components: - - type: Transform - parent: 2 - pos: -157.5,-46.5 - uid: 13928 components: - type: Transform @@ -130094,11 +130322,6 @@ entities: - type: Transform parent: 2 pos: -157.5,-10.5 - - uid: 13931 - components: - - type: Transform - parent: 2 - pos: -156.5,21.5 - uid: 13932 components: - type: Transform @@ -130114,16 +130337,6 @@ entities: - type: Transform parent: 2 pos: -157.5,-47.5 - - uid: 13935 - components: - - type: Transform - parent: 2 - pos: -157.5,-36.5 - - uid: 13936 - components: - - type: Transform - parent: 2 - pos: -155.5,22.5 - uid: 13938 components: - type: Transform @@ -130154,11 +130367,6 @@ entities: - type: Transform parent: 2 pos: -157.5,-24.5 - - uid: 13944 - components: - - type: Transform - parent: 2 - pos: -152.5,25.5 - uid: 13945 components: - type: Transform @@ -130239,16 +130447,6 @@ entities: - type: Transform parent: 2 pos: -67.5,-34.5 - - uid: 15336 - components: - - type: Transform - parent: 2 - pos: -83.5,4.5 - - uid: 15699 - components: - - type: Transform - parent: 2 - pos: -42.5,5.5 - uid: 15927 components: - type: Transform @@ -130349,11 +130547,6 @@ entities: - type: Transform parent: 2 pos: -20.5,6.5 - - uid: 17071 - components: - - type: Transform - parent: 2 - pos: -86.5,4.5 - uid: 17077 components: - type: Transform @@ -130369,11 +130562,6 @@ entities: - type: Transform parent: 2 pos: -86.5,-6.5 - - uid: 17158 - components: - - type: Transform - parent: 2 - pos: -80.5,-0.5 - uid: 17162 components: - type: Transform @@ -130514,11 +130702,6 @@ entities: - type: Transform parent: 2 pos: -157.5,4.5 - - uid: 17534 - components: - - type: Transform - parent: 2 - pos: -157.5,8.5 - uid: 17579 components: - type: Transform @@ -130679,11 +130862,6 @@ entities: - type: Transform parent: 2 pos: -157.5,-49.5 - - uid: 19459 - components: - - type: Transform - parent: 2 - pos: -157.5,-45.5 - uid: 19460 components: - type: Transform @@ -130874,11 +131052,6 @@ entities: - type: Transform parent: 2 pos: -125.5,-77.5 - - uid: 20426 - components: - - type: Transform - parent: 2 - pos: -104.5,23.5 - uid: 20443 components: - type: Transform @@ -130949,11 +131122,6 @@ entities: - type: Transform parent: 2 pos: -2.5,24.5 - - uid: 21317 - components: - - type: Transform - parent: 2 - pos: -1.5,24.5 - uid: 21319 components: - type: Transform @@ -130969,11 +131137,6 @@ entities: - type: Transform parent: 2 pos: 2.5,24.5 - - uid: 21324 - components: - - type: Transform - parent: 2 - pos: 2.5,2.5 - uid: 21325 components: - type: Transform @@ -131029,11 +131192,6 @@ entities: - type: Transform parent: 2 pos: 2.5,21.5 - - uid: 21339 - components: - - type: Transform - parent: 2 - pos: 2.5,15.5 - uid: 21340 components: - type: Transform @@ -131074,11 +131232,6 @@ entities: - type: Transform parent: 2 pos: 2.5,5.5 - - uid: 21349 - components: - - type: Transform - parent: 2 - pos: 2.5,4.5 - uid: 21350 components: - type: Transform @@ -131134,26 +131287,11 @@ entities: - type: Transform parent: 2 pos: -140.5,-12.5 - - uid: 22004 - components: - - type: Transform - parent: 2 - pos: -119.5,-34.5 - - uid: 22005 - components: - - type: Transform - parent: 2 - pos: -119.5,-31.5 - uid: 22163 components: - type: Transform parent: 2 pos: -67.5,-71.5 - - uid: 22195 - components: - - type: Transform - parent: 2 - pos: -106.5,24.5 - uid: 22226 components: - type: Transform @@ -131354,21 +131492,11 @@ entities: - type: Transform parent: 2 pos: -67.5,-17.5 - - uid: 23375 - components: - - type: Transform - parent: 2 - pos: -78.5,-9.5 - uid: 23382 components: - type: Transform parent: 2 pos: -84.5,8.5 - - uid: 23384 - components: - - type: Transform - parent: 2 - pos: -80.5,3.5 - uid: 23385 components: - type: Transform @@ -131384,16 +131512,6 @@ entities: - type: Transform parent: 2 pos: -70.5,1.5 - - uid: 23420 - components: - - type: Transform - parent: 2 - pos: -117.5,24.5 - - uid: 23421 - components: - - type: Transform - parent: 2 - pos: -121.5,24.5 - uid: 23501 components: - type: Transform @@ -131484,11 +131602,6 @@ entities: - type: Transform parent: 2 pos: -39.5,-16.5 - - uid: 24186 - components: - - type: Transform - parent: 2 - pos: -3.5,-33.5 - uid: 24188 components: - type: Transform @@ -131514,11 +131627,6 @@ entities: - type: Transform parent: 2 pos: -2.5,-27.5 - - uid: 24195 - components: - - type: Transform - parent: 2 - pos: -1.5,-26.5 - uid: 24196 components: - type: Transform @@ -131539,11 +131647,6 @@ entities: - type: Transform parent: 2 pos: 0.5,-23.5 - - uid: 24201 - components: - - type: Transform - parent: 2 - pos: 1.5,-23.5 - uid: 24203 components: - type: Transform @@ -131554,16 +131657,6 @@ entities: - type: Transform parent: 2 pos: 2.5,-20.5 - - uid: 24206 - components: - - type: Transform - parent: 2 - pos: 2.5,-12.5 - - uid: 24207 - components: - - type: Transform - parent: 2 - pos: 2.5,-14.5 - uid: 24208 components: - type: Transform @@ -132194,11 +132287,6 @@ entities: - type: Transform parent: 2 pos: -23.5,-91.5 - - uid: 25721 - components: - - type: Transform - parent: 2 - pos: -23.5,-73.5 - uid: 25723 components: - type: Transform @@ -132254,11 +132342,6 @@ entities: - type: Transform parent: 2 pos: -23.5,-88.5 - - uid: 25738 - components: - - type: Transform - parent: 2 - pos: -23.5,-90.5 - uid: 25739 components: - type: Transform @@ -132404,31 +132487,21 @@ entities: - type: Transform parent: 2 pos: -7.5,-69.5 - - uid: 25777 - components: - - type: Transform - parent: 2 - pos: -7.5,-75.5 - uid: 25778 components: - type: Transform parent: 2 pos: -7.5,-74.5 - - uid: 25792 - components: - - type: Transform - parent: 2 - pos: -7.5,-66.5 - uid: 25793 components: - type: Transform parent: 2 - pos: -7.5,-65.5 + pos: -144.5,27.5 - uid: 25794 components: - type: Transform parent: 2 - pos: -7.5,-64.5 + pos: -143.5,27.5 - uid: 25795 components: - type: Transform @@ -132489,376 +132562,6 @@ entities: - type: Transform parent: 2 pos: -71.5,-6.5 -- proto: GrilleBroken - entities: - - uid: 2260 - components: - - type: Transform - parent: 2 - pos: -157.5,-22.5 - - uid: 7460 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -146.5,27.5 - - uid: 7463 - components: - - type: Transform - parent: 2 - pos: -141.5,27.5 - - uid: 9044 - components: - - type: Transform - parent: 2 - pos: -88.5,38.5 - - uid: 9048 - components: - - type: Transform - parent: 2 - pos: -91.5,38.5 - - uid: 9689 - components: - - type: Transform - parent: 2 - pos: -149.5,27.5 - - uid: 12883 - components: - - type: Transform - parent: 2 - pos: -157.5,20.5 - - uid: 13813 - components: - - type: Transform - parent: 2 - pos: -157.5,-26.5 - - uid: 13864 - components: - - type: Transform - parent: 2 - pos: -154.5,23.5 - - uid: 13915 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -145.5,27.5 - - uid: 13937 - components: - - type: Transform - parent: 2 - pos: -157.5,-27.5 - - uid: 15051 - components: - - type: Transform - parent: 2 - pos: -81.5,29.5 - - uid: 15688 - components: - - type: Transform - parent: 2 - pos: -81.5,34.5 - - uid: 15689 - components: - - type: Transform - parent: 2 - pos: -81.5,38.5 - - uid: 15690 - components: - - type: Transform - parent: 2 - pos: -71.5,8.5 - - uid: 15691 - components: - - type: Transform - parent: 2 - pos: -67.5,10.5 - - uid: 15693 - components: - - type: Transform - parent: 2 - pos: -63.5,11.5 - - uid: 15695 - components: - - type: Transform - parent: 2 - pos: -47.5,5.5 - - uid: 15701 - components: - - type: Transform - parent: 2 - pos: -58.5,11.5 - - uid: 15845 - components: - - type: Transform - parent: 2 - pos: -71.5,5.5 - - uid: 15882 - components: - - type: Transform - parent: 2 - pos: -51.5,6.5 - - uid: 15893 - components: - - type: Transform - parent: 2 - pos: -54.5,10.5 - - uid: 15894 - components: - - type: Transform - parent: 2 - pos: -44.5,5.5 - - uid: 15895 - components: - - type: Transform - parent: 2 - pos: -157.5,1.5 - - uid: 15896 - components: - - type: Transform - parent: 2 - pos: -157.5,-18.5 - - uid: 16098 - components: - - type: Transform - parent: 2 - pos: -157.5,6.5 - - uid: 16099 - components: - - type: Transform - parent: 2 - pos: -157.5,-12.5 - - uid: 16155 - components: - - type: Transform - parent: 2 - pos: -157.5,9.5 - - uid: 16177 - components: - - type: Transform - parent: 2 - pos: -157.5,14.5 - - uid: 16221 - components: - - type: Transform - parent: 2 - pos: -157.5,16.5 - - uid: 17454 - components: - - type: Transform - parent: 2 - pos: -157.5,-37.5 - - uid: 17456 - components: - - type: Transform - parent: 2 - pos: -157.5,-32.5 - - uid: 17723 - components: - - type: Transform - parent: 2 - pos: 2.5,-13.5 - - uid: 17724 - components: - - type: Transform - parent: 2 - pos: -4.5,24.5 - - uid: 17725 - components: - - type: Transform - parent: 2 - pos: -7.5,24.5 - - uid: 17726 - components: - - type: Transform - parent: 2 - pos: 2.5,9.5 - - uid: 17727 - components: - - type: Transform - parent: 2 - pos: 2.5,-0.5 - - uid: 17728 - components: - - type: Transform - parent: 2 - pos: 2.5,7.5 - - uid: 17729 - components: - - type: Transform - parent: 2 - pos: -0.5,24.5 - - uid: 17730 - components: - - type: Transform - parent: 2 - pos: 2.5,20.5 - - uid: 17731 - components: - - type: Transform - parent: 2 - pos: 2.5,16.5 - - uid: 17732 - components: - - type: Transform - parent: 2 - pos: 2.5,3.5 - - uid: 17733 - components: - - type: Transform - parent: 2 - pos: -2.5,-2.5 - - uid: 17734 - components: - - type: Transform - parent: 2 - pos: -6.5,-2.5 - - uid: 17735 - components: - - type: Transform - parent: 2 - pos: -3.5,-32.5 - - uid: 17736 - components: - - type: Transform - parent: 2 - pos: -3.5,-29.5 - - uid: 17737 - components: - - type: Transform - parent: 2 - pos: -2.5,-26.5 - - uid: 17738 - components: - - type: Transform - parent: 2 - pos: -0.5,-25.5 - - uid: 17739 - components: - - type: Transform - parent: 2 - pos: 1.5,-22.5 - - uid: 17740 - components: - - type: Transform - parent: 2 - pos: 2.5,-5.5 - - uid: 17741 - components: - - type: Transform - parent: 2 - pos: 0.5,-2.5 - - uid: 17842 - components: - - type: Transform - parent: 2 - pos: -157.5,-15.5 - - uid: 19400 - components: - - type: Transform - parent: 2 - pos: -86.5,38.5 - - uid: 23005 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -9.5,-63.5 - - uid: 24946 - components: - - type: Transform - parent: 2 - pos: -157.5,-4.5 - - uid: 25431 - components: - - type: Transform - parent: 2 - pos: -157.5,-9.5 - - uid: 25432 - components: - - type: Transform - parent: 2 - pos: -157.5,-3.5 - - uid: 25714 - components: - - type: Transform - parent: 2 - pos: -10.5,24.5 - - uid: 25722 - components: - - type: Transform - parent: 2 - pos: -23.5,-74.5 - - uid: 25726 - components: - - type: Transform - parent: 2 - pos: -23.5,-82.5 - - uid: 25729 - components: - - type: Transform - parent: 2 - pos: -23.5,-79.5 - - uid: 25733 - components: - - type: Transform - parent: 2 - pos: -23.5,-85.5 - - uid: 25737 - components: - - type: Transform - parent: 2 - pos: -23.5,-89.5 - - uid: 25743 - components: - - type: Transform - parent: 2 - pos: -7.5,-90.5 - - uid: 25750 - components: - - type: Transform - parent: 2 - pos: -19.5,-92.5 - - uid: 25755 - components: - - type: Transform - parent: 2 - pos: -9.5,-92.5 - - uid: 25757 - components: - - type: Transform - parent: 2 - pos: -7.5,-84.5 - - uid: 25760 - components: - - type: Transform - parent: 2 - pos: -7.5,-86.5 - - uid: 25762 - components: - - type: Transform - parent: 2 - pos: -7.5,-72.5 - - uid: 25766 - components: - - type: Transform - parent: 2 - pos: -13.5,-92.5 - - uid: 25770 - components: - - type: Transform - parent: 2 - pos: -7.5,-80.5 - - uid: 25773 - components: - - type: Transform - parent: 2 - pos: -7.5,-76.5 - - uid: 25800 - components: - - type: Transform - parent: 2 - pos: -7.5,-67.5 - proto: GrilleDiagonal entities: - uid: 6099 @@ -132895,6 +132598,618 @@ entities: - type: Transform parent: 2 pos: -154.5,-42.5 +- proto: GrilleSpawner + entities: + - uid: 2260 + components: + - type: Transform + parent: 2 + pos: -72.5,-62.5 + - uid: 3951 + components: + - type: Transform + parent: 2 + pos: -87.5,4.5 + - uid: 4491 + components: + - type: Transform + parent: 2 + pos: -85.5,4.5 + - uid: 4493 + components: + - type: Transform + parent: 2 + pos: -84.5,4.5 + - uid: 4497 + components: + - type: Transform + parent: 2 + pos: -127.5,-33.5 + - uid: 4714 + components: + - type: Transform + parent: 2 + pos: -153.5,24.5 + - uid: 7460 + components: + - type: Transform + parent: 2 + pos: -87.5,38.5 + - uid: 7525 + components: + - type: Transform + parent: 2 + pos: -91.5,38.5 + - uid: 8166 + components: + - type: Transform + parent: 2 + pos: -44.5,5.5 + - uid: 9044 + components: + - type: Transform + parent: 2 + pos: -13.5,24.5 + - uid: 9048 + components: + - type: Transform + parent: 2 + pos: -157.5,-14.5 + - uid: 9084 + components: + - type: Transform + parent: 2 + pos: -157.5,-15.5 + - uid: 9689 + components: + - type: Transform + parent: 2 + pos: -157.5,-37.5 + - uid: 9997 + components: + - type: Transform + parent: 2 + pos: -157.5,-46.5 + - uid: 9998 + components: + - type: Transform + parent: 2 + pos: -83.5,4.5 + - uid: 9999 + components: + - type: Transform + parent: 2 + pos: -155.5,22.5 + - uid: 10003 + components: + - type: Transform + parent: 2 + pos: -47.5,5.5 + - uid: 10581 + components: + - type: Transform + parent: 2 + pos: -86.5,4.5 + - uid: 10603 + components: + - type: Transform + parent: 2 + pos: -80.5,-0.5 + - uid: 11879 + components: + - type: Transform + parent: 2 + pos: -142.5,27.5 + - uid: 12883 + components: + - type: Transform + parent: 2 + pos: -157.5,6.5 + - uid: 12940 + components: + - type: Transform + parent: 2 + pos: -157.5,-44.5 + - uid: 13813 + components: + - type: Transform + parent: 2 + pos: -104.5,23.5 + - uid: 13870 + components: + - type: Transform + parent: 2 + pos: -157.5,-45.5 + - uid: 13883 + components: + - type: Transform + parent: 2 + pos: -10.5,24.5 + - uid: 13889 + components: + - type: Transform + parent: 2 + pos: 2.5,2.5 + - uid: 13911 + components: + - type: Transform + parent: 2 + pos: -141.5,27.5 + - uid: 13915 + components: + - type: Transform + parent: 2 + pos: 2.5,20.5 + - uid: 13927 + components: + - type: Transform + parent: 2 + pos: -156.5,21.5 + - uid: 13935 + components: + - type: Transform + parent: 2 + pos: 2.5,4.5 + - uid: 13937 + components: + - type: Transform + parent: 2 + pos: -119.5,-34.5 + - uid: 15051 + components: + - type: Transform + parent: 2 + pos: -72.5,-63.5 + - uid: 15336 + components: + - type: Transform + parent: 2 + pos: -106.5,24.5 + - uid: 15688 + components: + - type: Transform + parent: 2 + pos: -78.5,-9.5 + - uid: 15689 + components: + - type: Transform + parent: 2 + pos: -80.5,3.5 + - uid: 15690 + components: + - type: Transform + parent: 2 + pos: -117.5,24.5 + - uid: 15691 + components: + - type: Transform + parent: 2 + pos: -121.5,24.5 + - uid: 15693 + components: + - type: Transform + parent: 2 + pos: -3.5,-32.5 + - uid: 15695 + components: + - type: Transform + parent: 2 + pos: -2.5,-26.5 + - uid: 15699 + components: + - type: Transform + parent: 2 + pos: 1.5,-23.5 + - uid: 15701 + components: + - type: Transform + parent: 2 + pos: 2.5,-13.5 + - uid: 15845 + components: + - type: Transform + parent: 2 + pos: 2.5,-12.5 + - uid: 15882 + components: + - type: Transform + parent: 2 + pos: -7.5,-80.5 + - uid: 15893 + components: + - type: Transform + parent: 2 + pos: -23.5,-90.5 + - uid: 15894 + components: + - type: Transform + parent: 2 + pos: -7.5,-75.5 + - uid: 15895 + components: + - type: Transform + parent: 2 + pos: -7.5,-66.5 + - uid: 15896 + components: + - type: Transform + parent: 2 + pos: -7.5,-65.5 + - uid: 16098 + components: + - type: Transform + parent: 2 + pos: -7.5,-64.5 + - uid: 16099 + components: + - type: Transform + parent: 2 + pos: -157.5,-18.5 + - uid: 16155 + components: + - type: Transform + parent: 2 + pos: -146.5,27.5 + - uid: 16177 + components: + - type: Transform + parent: 2 + pos: -86.5,38.5 + - uid: 16221 + components: + - type: Transform + parent: 2 + pos: -90.5,38.5 + - uid: 17071 + components: + - type: Transform + parent: 2 + pos: -149.5,27.5 + - uid: 17158 + components: + - type: Transform + parent: 2 + pos: -81.5,29.5 + - uid: 17454 + components: + - type: Transform + parent: 2 + pos: -157.5,-32.5 + - uid: 17456 + components: + - type: Transform + parent: 2 + pos: -145.5,27.5 + - uid: 17534 + components: + - type: Transform + parent: 2 + pos: -157.5,-27.5 + - uid: 17723 + components: + - type: Transform + parent: 2 + pos: -81.5,34.5 + - uid: 17724 + components: + - type: Transform + parent: 2 + pos: -67.5,10.5 + - uid: 17725 + components: + - type: Transform + parent: 2 + pos: -81.5,38.5 + - uid: 17726 + components: + - type: Transform + parent: 2 + pos: -71.5,5.5 + - uid: 17727 + components: + - type: Transform + parent: 2 + pos: -63.5,11.5 + - uid: 17728 + components: + - type: Transform + parent: 2 + pos: -68.5,10.5 + - uid: 17729 + components: + - type: Transform + parent: 2 + pos: -42.5,5.5 + - uid: 17730 + components: + - type: Transform + parent: 2 + pos: -58.5,11.5 + - uid: 17731 + components: + - type: Transform + parent: 2 + pos: -71.5,8.5 + - uid: 17732 + components: + - type: Transform + parent: 2 + pos: -51.5,6.5 + - uid: 17733 + components: + - type: Transform + parent: 2 + pos: -54.5,10.5 + - uid: 17734 + components: + - type: Transform + parent: 2 + pos: -43.5,5.5 + - uid: 17735 + components: + - type: Transform + parent: 2 + pos: -157.5,1.5 + - uid: 17736 + components: + - type: Transform + parent: 2 + pos: -157.5,-22.5 + - uid: 17737 + components: + - type: Transform + parent: 2 + pos: -157.5,9.5 + - uid: 17738 + components: + - type: Transform + parent: 2 + pos: -157.5,-13.5 + - uid: 17739 + components: + - type: Transform + parent: 2 + pos: -157.5,8.5 + - uid: 17740 + components: + - type: Transform + parent: 2 + pos: -157.5,16.5 + - uid: 17741 + components: + - type: Transform + parent: 2 + pos: -157.5,14.5 + - uid: 17842 + components: + - type: Transform + parent: 2 + pos: -157.5,-36.5 + - uid: 19400 + components: + - type: Transform + parent: 2 + pos: -157.5,-26.5 + - uid: 20426 + components: + - type: Transform + parent: 2 + pos: 2.5,-14.5 + - uid: 21317 + components: + - type: Transform + parent: 2 + pos: -4.5,24.5 + - uid: 21324 + components: + - type: Transform + parent: 2 + pos: -119.5,-31.5 + - uid: 21339 + components: + - type: Transform + parent: 2 + pos: 2.5,7.5 + - uid: 21349 + components: + - type: Transform + parent: 2 + pos: 0.5,-2.5 + - uid: 22004 + components: + - type: Transform + parent: 2 + pos: 2.5,9.5 + - uid: 22005 + components: + - type: Transform + parent: 2 + pos: -7.5,24.5 + - uid: 22031 + components: + - type: Transform + parent: 2 + pos: -154.5,23.5 + - uid: 22195 + components: + - type: Transform + parent: 2 + pos: 2.5,15.5 + - uid: 23005 + components: + - type: Transform + parent: 2 + pos: 2.5,16.5 + - uid: 23375 + components: + - type: Transform + parent: 2 + pos: 2.5,3.5 + - uid: 23384 + components: + - type: Transform + parent: 2 + pos: -6.5,-2.5 + - uid: 23420 + components: + - type: Transform + parent: 2 + pos: 2.5,-5.5 + - uid: 23421 + components: + - type: Transform + parent: 2 + pos: -3.5,-33.5 + - uid: 24186 + components: + - type: Transform + parent: 2 + pos: -0.5,-25.5 + - uid: 24195 + components: + - type: Transform + parent: 2 + pos: -1.5,-26.5 + - uid: 24201 + components: + - type: Transform + parent: 2 + pos: -3.5,-29.5 + - uid: 24206 + components: + - type: Transform + parent: 2 + pos: 1.5,-22.5 + - uid: 24207 + components: + - type: Transform + parent: 2 + pos: -2.5,-2.5 + - uid: 24946 + components: + - type: Transform + parent: 2 + pos: -157.5,-12.5 + - uid: 25431 + components: + - type: Transform + parent: 2 + pos: -88.5,38.5 + - uid: 25432 + components: + - type: Transform + parent: 2 + pos: -9.5,-63.5 + - uid: 25714 + components: + - type: Transform + parent: 2 + pos: -157.5,-4.5 + - uid: 25721 + components: + - type: Transform + parent: 2 + pos: -157.5,-9.5 + - uid: 25722 + components: + - type: Transform + parent: 2 + pos: -157.5,-3.5 + - uid: 25726 + components: + - type: Transform + parent: 2 + pos: -1.5,24.5 + - uid: 25729 + components: + - type: Transform + parent: 2 + pos: -7.5,-84.5 + - uid: 25733 + components: + - type: Transform + parent: 2 + pos: -7.5,-90.5 + - uid: 25737 + components: + - type: Transform + parent: 2 + pos: -7.5,-86.5 + - uid: 25738 + components: + - type: Transform + parent: 2 + pos: -0.5,24.5 + - uid: 25743 + components: + - type: Transform + parent: 2 + pos: 2.5,-0.5 + - uid: 25750 + components: + - type: Transform + parent: 2 + pos: -23.5,-82.5 + - uid: 25755 + components: + - type: Transform + parent: 2 + pos: -157.5,20.5 + - uid: 25757 + components: + - type: Transform + parent: 2 + pos: -23.5,-89.5 + - uid: 25760 + components: + - type: Transform + parent: 2 + pos: -23.5,-74.5 + - uid: 25762 + components: + - type: Transform + parent: 2 + pos: -23.5,-79.5 + - uid: 25766 + components: + - type: Transform + parent: 2 + pos: -7.5,-72.5 + - uid: 25770 + components: + - type: Transform + parent: 2 + pos: -19.5,-92.5 + - uid: 25773 + components: + - type: Transform + parent: 2 + pos: -23.5,-73.5 + - uid: 25777 + components: + - type: Transform + parent: 2 + pos: -7.5,-76.5 + - uid: 25792 + components: + - type: Transform + parent: 2 + pos: -7.5,-67.5 + - uid: 25800 + components: + - type: Transform + parent: 2 + pos: -23.5,-85.5 + - uid: 27155 + components: + - type: Transform + parent: 2 + pos: -152.5,25.5 + - uid: 27156 + components: + - type: Transform + parent: 2 + pos: -41.5,-64.5 - proto: GunSafeDisabler entities: - uid: 19261 @@ -133130,7 +133445,7 @@ entities: components: - type: Transform parent: 2 - pos: -52.29675,-7.5648193 + pos: -52.15886,-7.558217 - uid: 22292 components: - type: Transform @@ -133180,7 +133495,7 @@ entities: components: - type: Transform parent: 2 - pos: -89.43579,-22.85111 + pos: -91.393845,-17.546627 - type: HandLabeler assignedLabel: Security Substation - proto: HeatExchanger @@ -134273,12 +134588,12 @@ entities: pos: -132.5,-46.5 - proto: IntercomSecurity entities: - - uid: 4087 + - uid: 2647 components: - type: Transform parent: 2 - rot: -1.5707963267948966 rad - pos: -91.5,-17.5 + rot: 1.5707963267948966 rad + pos: -92.5,-19.5 - uid: 16798 components: - type: Transform @@ -134688,7 +135003,7 @@ entities: components: - type: Transform parent: 2 - pos: -112.5,27.5 + pos: -116.494,27.485348 - proto: LedLightBulb entities: - uid: 22441 @@ -135348,7 +135663,7 @@ entities: pos: -88.5,35.5 - proto: LockerResearchDirectorFilled entities: - - uid: 7613 + - uid: 7610 components: - type: Transform parent: 2 @@ -135759,11 +136074,6 @@ entities: - type: Transform parent: 2 pos: -92.5,4.5 - - uid: 26333 - components: - - type: Transform - parent: 2 - pos: -93.5,4.5 - proto: LootSpawnerMaterials entities: - uid: 6747 @@ -135837,11 +136147,6 @@ entities: - type: Transform parent: 2 pos: -83.5,-73.5 - - uid: 26335 - components: - - type: Transform - parent: 2 - pos: -51.5,-40.5 - proto: LootSpawnerMaterialsSurplus entities: - uid: 13221 @@ -136641,7 +136946,7 @@ entities: desc: The humble mining drill. This is an older model, but it should still work all the same. - type: Transform parent: 2 - pos: -58.961426,-12.536688 + pos: -58.629143,-12.5247 - proto: Mirror entities: - uid: 3392 @@ -136708,6 +137013,33 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: -69.5,-23.5 +- proto: MiscToySpawner90 + entities: + - uid: 4704 + components: + - type: Transform + parent: 2 + pos: -66.5,-56.5 + - uid: 13931 + components: + - type: Transform + parent: 2 + pos: -93.5,4.5 + - uid: 14639 + components: + - type: Transform + parent: 2 + pos: -51.5,-40.5 + - uid: 27145 + components: + - type: Transform + parent: 2 + pos: -48.5,-34.5 + - uid: 27153 + components: + - type: Transform + parent: 2 + pos: -60.5,-54.5 - proto: MopBucketFull entities: - uid: 15958 @@ -137707,6 +138039,12 @@ entities: - type: Transform parent: 2 pos: -19.5,-18.5 + - uid: 27141 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -132.5,-46.5 - proto: PaperBin20 entities: - uid: 4485 @@ -137958,7 +138296,7 @@ entities: components: - type: Transform parent: 2 - pos: -62.497215,-2.4129562 + pos: -62.670322,-2.3410463 - uid: 23950 components: - type: Transform @@ -139312,12 +139650,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: -90.5,-24.5 - - uid: 22276 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -88.5,-25.5 - uid: 22991 components: - type: Transform @@ -139348,12 +139680,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: -8.5,-18.5 - - uid: 26417 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -89.5,-23.5 - proto: PowerCellSmallPrinted entities: - uid: 23931 @@ -139595,6 +139921,11 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: -116.5,-49.5 + - uid: 4087 + components: + - type: Transform + parent: 2 + pos: -88.5,-20.5 - uid: 4218 components: - type: Transform @@ -139653,12 +139984,6 @@ entities: - type: Transform parent: 2 pos: -31.5,21.5 - - uid: 4799 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -45.5,-21.5 - uid: 4800 components: - type: Transform @@ -139680,11 +140005,6 @@ entities: - type: Transform parent: 2 pos: -52.5,-3.5 - - uid: 5329 - components: - - type: Transform - parent: 2 - pos: -89.5,-20.5 - uid: 5561 components: - type: Transform @@ -139897,6 +140217,12 @@ entities: - type: Transform parent: 2 pos: -65.5,-14.5 + - uid: 9274 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -47.5,-22.5 - uid: 9289 components: - type: Transform @@ -140791,6 +141117,12 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: -144.5,-48.5 + - uid: 17821 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -45.5,-18.5 - uid: 17848 components: - type: Transform @@ -141172,6 +141504,11 @@ entities: - type: Transform parent: 2 pos: -102.5,-59.5 + - uid: 4988 + components: + - type: Transform + parent: 2 + pos: -96.5,-9.5 - uid: 7882 components: - type: Transform @@ -141212,11 +141549,6 @@ entities: - type: Transform parent: 2 pos: -56.5,-72.5 - - uid: 14782 - components: - - type: Transform - parent: 2 - pos: -97.5,-8.5 - uid: 16384 components: - type: Transform @@ -141402,12 +141734,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: -146.5,2.5 - - uid: 8150 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -88.5,-17.5 - uid: 8572 components: - type: Transform @@ -141436,12 +141762,6 @@ entities: - type: Transform parent: 2 pos: -11.5,-39.5 - - uid: 9274 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -74.5,-11.5 - uid: 9319 components: - type: Transform @@ -141639,6 +141959,11 @@ entities: - type: Transform parent: 2 pos: -25.5,-56.5 + - uid: 13944 + components: + - type: Transform + parent: 2 + pos: -96.5,30.5 - uid: 14279 components: - type: Transform @@ -141900,24 +142225,12 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: -73.5,-58.5 - - uid: 21487 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -73.5,-54.5 - uid: 21494 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad pos: -39.5,-49.5 - - uid: 22031 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: -92.5,27.5 - uid: 22034 components: - type: Transform @@ -142123,6 +142436,18 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: -114.5,-12.5 + - uid: 27143 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -75.5,-11.5 + - uid: 27148 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -90.5,27.5 - proto: PoweredStrobeLightEmpty entities: - uid: 3985 @@ -143668,11 +143993,51 @@ entities: - type: Transform parent: 2 pos: -39.5,-15.5 + - uid: 8150 + components: + - type: Transform + parent: 2 + pos: -101.5,-58.5 + - uid: 9287 + components: + - type: Transform + parent: 2 + pos: -101.5,-17.5 + - uid: 12637 + components: + - type: Transform + parent: 2 + pos: -33.5,-11.5 - uid: 13575 components: - type: Transform parent: 2 pos: -18.5,-15.5 + - uid: 14782 + components: + - type: Transform + parent: 2 + pos: -97.5,-11.5 + - uid: 19793 + components: + - type: Transform + parent: 2 + pos: -13.5,-46.5 + - uid: 19970 + components: + - type: Transform + parent: 2 + pos: -25.5,-11.5 + - uid: 22057 + components: + - type: Transform + parent: 2 + pos: -13.5,-53.5 + - uid: 22122 + components: + - type: Transform + parent: 2 + pos: -16.5,-61.5 - uid: 25659 components: - type: Transform @@ -147177,6 +147542,7 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: -53.5,-10.5 + - type: DeviceNetwork - uid: 14291 components: - type: Transform @@ -153596,11 +153962,11 @@ entities: pos: -92.5,-18.5 - proto: SpawnPointWardenWeapon entities: - - uid: 14639 + - uid: 7613 components: - type: Transform parent: 2 - pos: -88.5,-20.5 + pos: -90.5,-17.5 - proto: SprayBottleSpaceCleaner entities: - uid: 6994 @@ -154489,7 +154855,7 @@ entities: pos: -76.5,-33.5 - proto: SuitStorageRD entities: - - uid: 7610 + - uid: 22276 components: - type: Transform parent: 2 @@ -156833,11 +157199,6 @@ entities: - type: Transform parent: 2 pos: -97.5,-1.5 - - uid: 2647 - components: - - type: Transform - parent: 2 - pos: -90.5,-17.5 - uid: 2649 components: - type: Transform @@ -159545,6 +159906,11 @@ entities: pos: -81.561455,0.4129281 - proto: ToolboxElectricalFilled entities: + - uid: 2108 + components: + - type: Transform + parent: 2 + pos: -86.52542,-18.503819 - uid: 15315 components: - type: Transform @@ -159750,6 +160116,28 @@ entities: - type: Transform parent: 2 pos: -42.5,-1.5 +- proto: ToySoundMakerSpawner90 + entities: + - uid: 26335 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -55.5,-38.5 +- proto: ToySpawner90 + entities: + - uid: 27152 + components: + - type: Transform + parent: 2 + pos: -51.5,-38.5 +- proto: ToyWeaponSpawner90 + entities: + - uid: 27144 + components: + - type: Transform + parent: 2 + pos: -112.5,27.5 - proto: TrainingBomb entities: - uid: 17799 @@ -162231,6 +162619,12 @@ entities: - type: Transform parent: 2 pos: -89.5,33.5 + - uid: 1057 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -88.5,-17.5 - uid: 1061 components: - type: Transform @@ -162676,11 +163070,6 @@ entities: - type: Transform parent: 2 pos: -123.5,-25.5 - - uid: 2108 - components: - - type: Transform - parent: 2 - pos: -89.5,-19.5 - uid: 2125 components: - type: Transform @@ -163301,6 +163690,12 @@ entities: - type: Transform parent: 2 pos: -134.5,-42.5 + - uid: 5329 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -88.5,-18.5 - uid: 5395 components: - type: Transform @@ -165003,6 +165398,11 @@ entities: - type: Transform parent: 2 pos: -125.5,-31.5 + - uid: 19459 + components: + - type: Transform + parent: 2 + pos: -88.5,32.5 - uid: 19576 components: - type: Transform @@ -165133,6 +165533,11 @@ entities: - type: Transform parent: 2 pos: -108.5,-39.5 + - uid: 21487 + components: + - type: Transform + parent: 2 + pos: -86.5,32.5 - uid: 22229 components: - type: Transform @@ -167334,21 +167739,11 @@ entities: - type: Transform parent: 2 pos: -97.5,-16.5 - - uid: 1057 - components: - - type: Transform - parent: 2 - pos: -89.5,-17.5 - uid: 1058 components: - type: Transform parent: 2 pos: -73.5,-8.5 - - uid: 1059 - components: - - type: Transform - parent: 2 - pos: -89.5,-18.5 - uid: 1060 components: - type: Transform @@ -172817,16 +173212,6 @@ entities: - type: Transform parent: 2 pos: -71.5,-31.5 - - uid: 4704 - components: - - type: Transform - parent: 2 - pos: -88.5,32.5 - - uid: 4714 - components: - - type: Transform - parent: 2 - pos: -86.5,32.5 - uid: 4852 components: - type: Transform @@ -177302,17 +177687,16 @@ entities: - type: Transform parent: 2 pos: -95.5,-38.5 - - uid: 4005 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -88.5,-26.5 - uid: 4277 components: - type: Transform parent: 2 pos: -111.5,-29.5 + - uid: 6674 + components: + - type: Transform + parent: 2 + pos: -88.5,-25.5 - uid: 6786 components: - type: Transform @@ -177839,7 +178223,7 @@ entities: DoorStatus: True - type: Door state: Opening - secondsUntilStateChange: -291218.3 + secondsUntilStateChange: -300938.62 - type: Airlock autoClose: False - uid: 23283 @@ -178734,73 +179118,12 @@ entities: pos: -20.5,-15.5 - proto: WoodenSupport entities: - - uid: 4988 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -105.5,-2.5 - - uid: 6553 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -102.5,-58.5 - uid: 7487 components: - type: Transform parent: 2 rot: 3.141592653589793 rad pos: -75.5,-72.5 - - uid: 9287 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -105.5,-15.5 - - uid: 9680 - components: - - type: Transform - parent: 2 - pos: -12.5,-48.5 - - uid: 19793 - components: - - type: Transform - parent: 2 - pos: -41.5,-64.5 - - uid: 19970 - components: - - type: Transform - parent: 2 - pos: -25.5,-11.5 - - uid: 22122 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: -97.5,-11.5 - - uid: 24626 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -13.5,-46.5 - - uid: 25646 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -33.5,-11.5 - - uid: 25779 - components: - - type: Transform - parent: 2 - pos: -13.5,-53.5 - - uid: 25832 - components: - - type: Transform - parent: 2 - pos: -16.5,-61.5 - uid: 26151 components: - type: Transform From d54cb738f17beefd85c3111edd35d3cc423d81bb Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> Date: Tue, 8 Sep 2026 06:33:25 +0000 Subject: [PATCH 094/197] Fix Infinite Status Effect Overlays (#45917) fixe --- Content.Shared/StatusEffectNew/StatusEffectsSystem.cs | 3 --- 1 file changed, 3 deletions(-) diff --git a/Content.Shared/StatusEffectNew/StatusEffectsSystem.cs b/Content.Shared/StatusEffectNew/StatusEffectsSystem.cs index 46a5d4765e..724ca294b6 100644 --- a/Content.Shared/StatusEffectNew/StatusEffectsSystem.cs +++ b/Content.Shared/StatusEffectNew/StatusEffectsSystem.cs @@ -93,9 +93,6 @@ public sealed partial class StatusEffectsSystem : EntitySystem private void OnEntityRemoved(Entity ent, ref EntRemovedFromContainerMessage args) { - if (_timing.ApplyingState) - return; - if (args.Container.ID != StatusEffectContainerComponent.ContainerId) return; From 64aaeaaf1c8a5894b665beb861d1358c8aafa9d3 Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> Date: Tue, 8 Sep 2026 09:15:36 +0000 Subject: [PATCH 095/197] Nutriment Metabolism Adjustments (#45901) * nutriment digestion * fuck my stupid chungus life --- Resources/Prototypes/Reagents/Consumable/Food/food.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Resources/Prototypes/Reagents/Consumable/Food/food.yml b/Resources/Prototypes/Reagents/Consumable/Food/food.yml index 2193bdd755..0a10db6af6 100644 --- a/Resources/Prototypes/Reagents/Consumable/Food/food.yml +++ b/Resources/Prototypes/Reagents/Consumable/Food/food.yml @@ -8,10 +8,12 @@ flavor: nutriment color: "#24591F" metabolisms: - Metabolites: + Digestion: + metabolismRate: 1 effects: - !type:Satiate satiationType: Hunger + factor: 3 plantMetabolism: - !type:PlantAdjustNutrition amount: 1.5 @@ -28,7 +30,7 @@ flavor: vitamin color: "#D3D3D3" metabolisms: - Metabolites: #This makes it not compete with medicines, a large bonus for something that can heal + Digestion: #This makes it not compete with medicines, a large bonus for something that can heal effects: - !type:EvenHealthChange probability: 0.5 @@ -57,7 +59,7 @@ flavor: protein color: "#FFFFE5" metabolisms: - Metabolites: + Digestion: effects: - !type:EvenHealthChange probability: 0.5 @@ -79,7 +81,7 @@ color: white meltingPoint: 146.0 metabolisms: - Metabolites: + Digestion: effects: - !type:Satiate satiationType: Hunger From e48e040b9b138d6f813a9ddbb941ca4d6e94fe17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?SeungWon=20Kim=20=EA=B9=80=EC=8A=B9=EC=9B=90?= Date: Wed, 9 Sep 2026 07:56:46 +0000 Subject: [PATCH 096/197] fix: Skip thermal regulation if the mob is dead (#44722) --- Content.Server/Body/Systems/ThermalRegulatorSystem.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Content.Server/Body/Systems/ThermalRegulatorSystem.cs b/Content.Server/Body/Systems/ThermalRegulatorSystem.cs index e0b8899a17..179099da8d 100644 --- a/Content.Server/Body/Systems/ThermalRegulatorSystem.cs +++ b/Content.Server/Body/Systems/ThermalRegulatorSystem.cs @@ -2,6 +2,7 @@ using Content.Server.Body.Components; using Content.Server.Temperature.Systems; using Content.Shared.ActionBlocker; using Content.Shared.Temperature.Components; +using Content.Shared.Mobs.Systems; using Robust.Shared.Timing; namespace Content.Server.Body.Systems; @@ -11,6 +12,7 @@ public sealed partial class ThermalRegulatorSystem : EntitySystem [Dependency] private IGameTiming _gameTiming = default!; [Dependency] private TemperatureSystem _tempSys = default!; [Dependency] private ActionBlockerSystem _actionBlockerSys = default!; + [Dependency] private MobStateSystem _mobState = default!; public override void Initialize() { @@ -39,6 +41,11 @@ public sealed partial class ThermalRegulatorSystem : EntitySystem continue; regulator.NextUpdate += regulator.UpdateInterval; + + // The dead shouldn't be able to regulate their own body temperature. + if (_mobState.IsDead(uid)) + continue; + ProcessThermalRegulation((uid, regulator)); } } From 0d1f27afb6e0115cd60c12d2af5babaf583f277e Mon Sep 17 00:00:00 2001 From: Whatstone <166147148+whatston3@users.noreply.github.com> Date: Wed, 9 Sep 2026 08:59:01 +0000 Subject: [PATCH 097/197] Bugfix: Surveillance camera heartbeat fixes (#45921) * surveillance camera heartbeat fix * Add DeviceNet./Surv.Cam.Router to wireless routers * consistent component order --- .../Systems/SurveillanceCameraMonitorSystem.cs | 10 +++++++++- .../Machines/surveillance_camera_routers.yml | 2 ++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraMonitorSystem.cs b/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraMonitorSystem.cs index b499b8ad35..ce3bb5aba0 100644 --- a/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraMonitorSystem.cs +++ b/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraMonitorSystem.cs @@ -213,7 +213,7 @@ public sealed partial class SurveillanceCameraMonitorSystem : EntitySystem return; } - var payload = new SurveillanceCameraHeartbeatPayload(); + var payload = new SurveillanceCameraHeartbeatRequestPayload(); _deviceNetworkRouter.SendPacketRouted(uid, ref payload, subnetAddress, monitor.ActiveCameraAddress, ProtoMan.Index(activeSubnet).Frequency); monitor.LastHeartbeatSent = 0; @@ -367,6 +367,10 @@ public sealed partial class SurveillanceCameraMonitorSystem : EntitySystem monitor.ActiveCamera = camera; + // Reset the heartbeat timers for the new device. + monitor.LastHeartbeat = 0; + monitor.LastHeartbeatSent = 0; + AddComp(uid); UpdateUserInterface(uid, monitor); @@ -385,6 +389,10 @@ public sealed partial class SurveillanceCameraMonitorSystem : EntitySystem monitor.ActiveCamera = camera; + // Reset the heartbeat timers for the new device. + monitor.LastHeartbeat = 0; + monitor.LastHeartbeatSent = 0; + UpdateUserInterface(uid, monitor); } diff --git a/Resources/Prototypes/Entities/Structures/Machines/surveillance_camera_routers.yml b/Resources/Prototypes/Entities/Structures/Machines/surveillance_camera_routers.yml index 5ace676f3b..830f920bae 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/surveillance_camera_routers.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/surveillance_camera_routers.yml @@ -193,6 +193,8 @@ - type: WirelessNetworkConnection range: 200 - type: DeviceNetworkRequiresPower + - type: DeviceNetworkRouter + - type: SurveillanceCameraRouter - type: UserInterface interfaces: enum.SurveillanceCameraSetupUiKey.Router: From 3813345c4dd1e52fb0022409762c7f23035431db Mon Sep 17 00:00:00 2001 From: Emisse <99158783+Emisse@users.noreply.github.com> Date: Wed, 9 Sep 2026 17:34:24 +0000 Subject: [PATCH 098/197] Centcomm Update (#45942) * centcomm update * okay fixe * centcomm update * centcomm fixe --- Resources/Maps/centcomm.yml | 5452 +++++++++++++++++++---------------- 1 file changed, 3041 insertions(+), 2411 deletions(-) diff --git a/Resources/Maps/centcomm.yml b/Resources/Maps/centcomm.yml index cee4139c01..f07f6a80d3 100644 --- a/Resources/Maps/centcomm.yml +++ b/Resources/Maps/centcomm.yml @@ -1,11 +1,11 @@ meta: format: 7 category: Grid - engineVersion: 288.0.1 + engineVersion: 289.0.0 forkId: "" forkVersion: "" - time: 08/12/2026 19:15:03 - entityCount: 9790 + time: 09/09/2026 17:13:32 + entityCount: 9824 maps: [] grids: - 1668 @@ -56,6 +56,7 @@ tilemap: 14: FloorBar 17: FloorBlueCircuit 29: FloorDark + 10: FloorDarkMarble 38: FloorDarkPlastic 4: FloorFreezer 6: FloorGlass @@ -66,6 +67,7 @@ tilemap: 61: FloorLaundry 62: FloorLino 1: FloorMowedAstroGrass + 20: FloorPlastic 11: FloorRedCircuit 77: FloorReinforced 9: FloorReinforcedHardened @@ -76,6 +78,7 @@ tilemap: 13: FloorSteelLime 104: FloorTechMaint2 108: FloorWhite + 21: FloorWhitePlastic 118: FloorWood 8: FloorWoodTile 120: Lattice @@ -93,47 +96,47 @@ entities: chunks: -1,-1: ind: -1,-1 - tiles: eQAAAAAAAE0AAAAAAABNAAAAAAAAeQAAAAAAAE0AAAAAAABNAAAAAAAAeQAAAAAAAE0AAAAAAABNAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAACwAAAAAAAAsAAAAAAQAdAAAAAAAAEQAAAAABABEAAAAAAQAdAAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAA2AAAAAAEANgAAAAAAAB0AAAAAAAARAAAAAAEAEQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAEAAQAAAAACAAEAAAAAAgABAAAAAAUAAQAAAAACAAEAAAAAAQABAAAAAAMAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAB0AAAAAAAB2AAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAdAAAAAAAAdgAAAAAAAD4AAAAAAAA+AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAHQAAAAAAAHYAAAAAAAA+AAAAAAAAPgAAAAAAAA== + tiles: eQAAAAAAAE0AAAAAAABNAAAAAAAAeQAAAAAAAE0AAAAAAABNAAAAAAAAeQAAAAAAAE0AAAAAAABNAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAAAwACAAAAAAAAAgAAAAAAAAoAAAAAAgAKAAAAAAQACgAAAAAEAAoAAAAAAgAKAAAAAAIACgAAAAAEAAoAAAAAAQAKAAAAAAUACgAAAAAEAAoAAAAAAQAKAAAAAAUACgAAAAACAAoAAAAAAgAKAAAAAAUAAgAAAAAAAAIAAAAAAAAKAAAAAAUACgAAAAAAAAoAAAAAAwAKAAAAAAAACgAAAAAEAAoAAAAABAAKAAAAAAAACgAAAAADAAoAAAAAAQAKAAAAAAIACgAAAAAFAAoAAAAAAAAKAAAAAAAACgAAAAADAAIAAAAAAAACAAAAAAAACgAAAAAFAAoAAAAAAwAKAAAAAAMACgAAAAACAAoAAAAAAwAKAAAAAAMACgAAAAAEAAoAAAAAAQAKAAAAAAMACgAAAAADAAoAAAAAAQAKAAAAAAUACgAAAAABAAoAAAAAAgACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAKAAAAAAEAAgAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAACgAAAAAAAAIAAAAAAAACAAAAAAAACwAAAAABAAsAAAAAAAAdAAAAAAAAEQAAAAAAABEAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAHQAAAAAAAAoAAAAABAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAKAAAAAAQAAgAAAAAAAAIAAAAAAAA2AAAAAAEANgAAAAAAAB0AAAAAAAARAAAAAAAAEQAAAAABAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAKAAAAAAEACgAAAAABAAoAAAAABQAKAAAAAAQACgAAAAADAAoAAAAAAgACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAACgAAAAABAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAMAAQAAAAAEAAEAAAAAAwABAAAAAAQAAQAAAAADAAEAAAAABQABAAAAAAEAeQAAAAAAAAoAAAAAAQACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAKAAAAAAUAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAABQAKAAAAAAMACgAAAAAEAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAABQB5AAAAAAAACgAAAAACAAIAAAAAAAACAAAAAAAAeQAAAAAAAB0AAAAAAAB2AAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAdAAAAAAAAdgAAAAAAAD4AAAAAAAA+AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAHQAAAAAAAHYAAAAAAAA+AAAAAAAAPgAAAAAAAA== version: 7 0,-1: ind: 0,-1 - tiles: AgAAAAAAAB0AAAAAAAABAAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAAdAAAAAAAAAQAAAAACAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAbAAAAAAAAGwAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAACAAAAAAAAHQAAAAAAAGwAAAAAAABsAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAAgAAAAAAAB0AAAAAAABsAAAAAAAAbAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAIAAAAAAAAdAAAAAAAAbAAAAAAAAGwAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAGwAAAAAAABsAAAAAAAAAgAAAAAAAAIAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAABsAAAAAAAAbAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAAgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAAIAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAbAAAAAAAAGwAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAB2AAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAA+AAAAAAAAdgAAAAAAAB0AAAAAAABNAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAPgAAAAAAAHYAAAAAAAAdAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: AgAAAAAAAAoAAAAAAwABAAAAAAEAHQAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAAKAAAAAAQAAQAAAAACAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAACgAAAAADAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAAAoAAAAAAgB5AAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAbAAAAAAAAGwAAAAAAAACAAAAAAAAFAAAAAAAAAIAAAAAAAAKAAAAAAIAHQAAAAAAAB0AAAAAAAAdAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAACAAAAAAAAHQAAAAAAAGwAAAAAAABsAAAAAAAAFAAAAAAAAAIAAAAAAAACAAAAAAAACgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAAgAAAAAAAB0AAAAAAABsAAAAAAAAbAAAAAAAAAIAAAAAAAAUAAAAAAAAAgAAAAAAAAoAAAAAAwAdAAAAAAAAHQAAAAAAAB0AAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAAAIAAAAAAAAdAAAAAAAAbAAAAAAAAGwAAAAAAAAUAAAAAAAAAgAAAAAAAAIAAAAAAAAKAAAAAAUAeQAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAGwAAAAAAABsAAAAAAAAAgAAAAAAABQAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAABsAAAAAAAAbAAAAAAAABQAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAAAwAKAAAAAAQACgAAAAADAAoAAAAAAAAKAAAAAAIACgAAAAAEAHkAAAAAAAACAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAACAAAAAAAAFAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAAAwB5AAAAAAAAAgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAKAAAAAAIAeQAAAAAAAAIAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAACgAAAAADAHkAAAAAAAB5AAAAAAAAbAAAAAAAAGwAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAB2AAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAABQB5AAAAAAAACgAAAAADAAoAAAAAAQAKAAAAAAUACgAAAAABAAoAAAAABAAKAAAAAAQACgAAAAAFAAoAAAAAAgA+AAAAAAAAdgAAAAAAAB0AAAAAAABNAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAPgAAAAAAAHYAAAAAAAAdAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 -1,0: ind: -1,0 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAQAAAAAFAAEAAAAAAgABAAAAAAEAAQAAAAAAAAEAAAAAAgABAAAAAAMAAQAAAAABAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAA+AAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAPgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAAQAAAAAFAAEAAAAABQB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAD4AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAABAAAAAAEAHQAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAAQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAD4AAAAAAAB5AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAA+AAAAAAAAeQAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAABAAAAAAIAHQAAAAAAAAIAAAAAAAACAAAAAAAAPgAAAAAAAB0AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAAQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAaAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAAoAAAAABQAKAAAAAAAACgAAAAAFAAoAAAAAAgAKAAAAAAIACgAAAAABAAoAAAAABAB5AAAAAAAACgAAAAABAAIAAAAAAAACAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAQAAAAAFAAEAAAAABAABAAAAAAQAAQAAAAAAAAEAAAAABQABAAAAAAUAAQAAAAACAHkAAAAAAAAKAAAAAAEAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAACgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAA+AAAAAAAAeQAAAAAAAAoAAAAAAAAKAAAAAAQACgAAAAAEAAoAAAAAAgAKAAAAAAQAeQAAAAAAAAoAAAAAAgAKAAAAAAQACgAAAAACAAoAAAAABQAKAAAAAAUACgAAAAAAAAIAAAAAAAACAAAAAAAAPgAAAAAAAAoAAAAAAQAKAAAAAAIACgAAAAAEAAoAAAAABQAKAAAAAAMACgAAAAABAHkAAAAAAAB5AAAAAAAAAQAAAAAAAAEAAAAABQB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAD4AAAAAAAB5AAAAAAAACgAAAAABAAoAAAAABQAKAAAAAAEACgAAAAADAAoAAAAABAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAKAAAAAAIAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAABAAAAAAEACgAAAAAFAAIAAAAAAAACAAAAAAAACgAAAAAEAHkAAAAAAAAKAAAAAAEACgAAAAADAAoAAAAABAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAAQAAAAAEAAoAAAAAAAACAAAAAAAAAgAAAAAAAD4AAAAAAAB5AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAKAAAAAAUAAgAAAAAAAAIAAAAAAAA+AAAAAAAAeQAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAABAAAAAAQACgAAAAAEAAIAAAAAAAACAAAAAAAAPgAAAAAAAB0AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAAQAAAAADAAoAAAAAAgACAAAAAAAAAgAAAAAAAAoAAAAABQB5AAAAAAAACgAAAAACAAoAAAAAAQAKAAAAAAIAeQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAaAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 0,0: ind: 0,0 - tiles: dgAAAAAAAHYAAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAAdAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAAB0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAAdAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAAB0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: dgAAAAAAAHYAAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAAAAB5AAAAAAAACgAAAAAEAAoAAAAAAQAKAAAAAAMACgAAAAAEAAoAAAAAAQAKAAAAAAAACgAAAAACAAoAAAAABAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAAKAAAAAAUAeQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACgAAAAADAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAACgAAAAAFAAoAAAAAAAAKAAAAAAIACgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAAAQB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAoAAAAAAwAKAAAAAAQACgAAAAADAAoAAAAABAACAAAAAAAACgAAAAAEAAoAAAAAAwAKAAAAAAAACgAAAAABAAoAAAAAAAAKAAAAAAIAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAKAAAAAAAACgAAAAAFAAoAAAAAAwAKAAAAAAMAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAACgAAAAADAAoAAAAABAAKAAAAAAAACgAAAAAAAAIAAAAAAAAKAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAoAAAAAAgAKAAAAAAEACgAAAAAAAAoAAAAAAgACAAAAAAAACgAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAKAAAAAAUACgAAAAACAAoAAAAAAgAKAAAAAAMAAgAAAAAAAAoAAAAABAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAACgAAAAADAAoAAAAABAAKAAAAAAUACgAAAAACAAIAAAAAAAAKAAAAAAUAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAoAAAAABAAKAAAAAAEACgAAAAABAAoAAAAAAwACAAAAAAAACgAAAAACAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAKAAAAAAIACgAAAAACAAoAAAAABQAKAAAAAAIAAgAAAAAAAAoAAAAAAwB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAACgAAAAABAAoAAAAABQAKAAAAAAIACgAAAAAEAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAoAAAAAAgAKAAAAAAAACgAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 1,-1: ind: 1,-1 - tiles: HQAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAeQAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAGwAAAAAAABsAAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAABsAAAAAAAAAgAAAAAAAHkAAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: HQAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAB4AAAAAAEAeAAAAAABAHgAAAAAAQB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAABQAAAAAAAACAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAABQAAAAAAAACAAAAAAAAFAAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAeQAAAAAAAHgAAAAAAAB4AAAAAAEAeAAAAAABAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAFAAAAAAAAAIAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAFAAAAAAAAAIAAAAAAAAUAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAAUAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAUAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAAgAAAAAAABQAAAAAAAB5AAAAAAAACgAAAAADAAoAAAAABQAKAAAAAAEACgAAAAAEAAoAAAAAAwAKAAAAAAUACgAAAAABAAoAAAAAAQAKAAAAAAMACgAAAAADAAoAAAAABAAKAAAAAAAACgAAAAADAGwAAAAAAABsAAAAAAAAHQAAAAAAAAoAAAAAAgACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAABsAAAAAAAAAgAAAAAAAHkAAAAAAAAKAAAAAAMAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAACgAAAAAEAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAAAgAKAAAAAAUAeQAAAAAAAAoAAAAAAwACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAKAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACgAAAAADAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 1,0: ind: 1,0 - tiles: AgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAQAAAAACAAEAAAAABAABAAAAAAIAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAEAAAAAAQABAAAAAAUAAQAAAAACAAEAAAAAAwABAAAAAAEAeQAAAAAAAAEAAAAABAABAAAAAAMAAQAAAAADAHkAAAAAAAABAAAAAAMAAQAAAAAEAAEAAAAABAAdAAAAAAAAHQAAAAAAAHkAAAAAAAABAAAAAAMAAQAAAAABAAEAAAAAAQABAAAAAAEAAQAAAAACAHkAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAwB5AAAAAAAAAQAAAAAAAAEAAAAABQABAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAAAMAAAAABQADAAAAAAAAAwAAAAAEAAMAAAAABQADAAAAAAAAAwAAAAABAHkAAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAADAAAAAAYAAwAAAAAEAAMAAAAABgADAAAAAAQAAwAAAAAGAAMAAAAAAQB5AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAAwAAAAAFAAMAAAAAAQADAAAAAAEAAwAAAAABAAMAAAAAAQADAAAAAAQAeQAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAHQAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAACgAAAAAEAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAAAgAKAAAAAAUAeQAAAAAAAAoAAAAABAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAKAAAAAAQAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACgAAAAADAAoAAAAAAQB5AAAAAAAACgAAAAABAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAABQAKAAAAAAEACgAAAAADAAoAAAAABAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAKAAAAAAAACgAAAAACAHkAAAAAAAAKAAAAAAIACgAAAAAFAAoAAAAAAwAKAAAAAAEACgAAAAAEAAoAAAAABQAKAAAAAAIACgAAAAAEAAoAAAAABAAKAAAAAAQACgAAAAADAAoAAAAAAQAKAAAAAAUACgAAAAACAAoAAAAABQB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAQAAAAADAAEAAAAAAwABAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAAAAAKAAAAAAIAeQAAAAAAAAEAAAAAAgABAAAAAAUAAQAAAAAEAAEAAAAABQABAAAAAAMAeQAAAAAAAAEAAAAABQABAAAAAAIAAQAAAAACAHkAAAAAAAABAAAAAAMAAQAAAAAAAAEAAAAABQAKAAAAAAIACgAAAAAAAHkAAAAAAAABAAAAAAAAAQAAAAADAAEAAAAAAAABAAAAAAUAAQAAAAAEAHkAAAAAAAABAAAAAAMAAQAAAAAEAAEAAAAAAgB5AAAAAAAAAQAAAAADAAEAAAAABAABAAAAAAEACgAAAAABAAoAAAAABAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAAAAAKAAAAAAUAAgAAAAAAAAMAAAAABgADAAAAAAUAAwAAAAADAAMAAAAAAwADAAAAAAMAAwAAAAAGAHkAAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAAKAAAAAAMACgAAAAABAAIAAAAAAAADAAAAAAIAAwAAAAAFAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAgB5AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAACgAAAAAEAAoAAAAAAQACAAAAAAAAAwAAAAABAAMAAAAAAQADAAAAAAMAAwAAAAAFAAMAAAAAAwADAAAAAAMAeQAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAAoAAAAAAgB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAHQAAAAAAAA== version: 7 2,0: ind: 2,0 - tiles: AgAAAAAAAHkAAAAAAABNAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAdAAAAAAAATQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAHQAAAAAAAE0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAB0AAAAAAABNAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAdAAAAAAAATQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdAAAAAAAAHQAAAAAAAE0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAABQABAAAAAAQAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAQAAQAAAAADAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAA+AAAAAAAAHQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2AAAAAAAAdgAAAAAAAB0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdgAAAAAAAHYAAAAAAAAdAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AgAAAAAAAHkAAAAAAABNAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAKAAAAAAUATQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAACgAAAAABAE0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAoAAAAABABNAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAKAAAAAAIATQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAADAE0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAUAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAMAAQAAAAAEAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAA+AAAAAAAAHQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2AAAAAAAAdgAAAAAAAB0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdgAAAAAAAHYAAAAAAAAdAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 2,-1: ind: 2,-1 - tiles: HQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAAAAB0AAAAAAABNAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAdAAAAAAAATQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAHQAAAAAAAE0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAB0AAAAAAABNAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAdAAAAAAAATQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAeQAAAAAAAE0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAHkAAAAAAABNAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: HQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAEAAoAAAAAAwBNAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAKAAAAAAQATQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAACgAAAAACAE0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAoAAAAAAQBNAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAKAAAAAAMATQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAeQAAAAAAAE0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAHkAAAAAAABNAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 1,-2: ind: 1,-2 - tiles: bAAAAAAAAGwAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAABsAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAbAAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAEAAAAAAAABAAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAABgAAAAAAAAYAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAABAAAAAAAAAQAAAAAAAB5AAAAAAAAdgAAAAAAAHYAAAAAAAAdAAAAAAAABgAAAAAAAAYAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAQAAAAAAAAEAAAAAAAAeQAAAAAAAHYAAAAAAAB2AAAAAAAAHQAAAAAAAAYAAAAAAAAGAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB2AAAAAAAAdgAAAAAAAB0AAAAAAAAGAAAAAAAABgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAYAAAAAAAAGAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAUAAAAAAAAFAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAFAAAAAAAABQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAdAAAAAAAABQAAAAAAAAUAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAdAAAAAAAAHQAAAAAAAA== + tiles: bAAAAAAAAGwAAAAAAAB5AAAAAAAAJgAAAAAAACYAAAAAAAAmAAAAAAAAJgAAAAAAAB0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAABsAAAAAAAAeQAAAAAAACYAAAAAAAAmAAAAAAAAJgAAAAAAACYAAAAAAAAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAbAAAAAAAAHkAAAAAAAAmAAAAAAAAJgAAAAAAACYAAAAAAAAmAAAAAAAAHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAEAAAAAAAABAAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAABgAAAAAAAAYAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAABAAAAAAAAAQAAAAAAAB5AAAAAAAAdgAAAAAAAHYAAAAAAAAdAAAAAAAABgAAAAAAAAYAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAQAAAAAAAAEAAAAAAAAeQAAAAAAAHYAAAAAAAB2AAAAAAAAHQAAAAAAAAYAAAAAAAAGAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB2AAAAAAAAdgAAAAAAAB0AAAAAAAAGAAAAAAAABgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAYAAAAAAAAGAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAUAAAAAAAAFAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAFAAAAAAAABQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAdAAAAAAAABQAAAAAAAAUAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAdAAAAAAAAHQAAAAAAAA== version: 7 0,-2: ind: 0,-2 - tiles: HQAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAAEAAAAAAAB5AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAB0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAAgAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAABAAAAAAAAeQAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAAIAAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAAQAAAAAEAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAgAAAAAAAB0AAAAAAAABAAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAB5AAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAIAAAAAAAAdAAAAAAAAAQAAAAAAAB0AAAAAAAACAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAAdAAAAAAAAeQAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAACAAAAAAAAHQAAAAAAAAEAAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAIAAAAAAAB5AAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAdAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAHQAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAACAAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAgAAAAAAAB0AAAAAAAABAAAAAAQAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAB5AAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAA== + tiles: HQAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAAEAAAAAAgB5AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAB0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAAgAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAABAAAAAAIAeQAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAAIAAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAAQAAAAADAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAACgAAAAACAB0AAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAgAAAAAAAAoAAAAAAQABAAAAAAQAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAB5AAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAIAAAAAAAAKAAAAAAAAAQAAAAAEAB0AAAAAAAACAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAAdAAAAAAAAeQAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAACAAAAAAAACgAAAAAEAAEAAAAAAwAdAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAIAAAAAAAB5AAAAAAAAAgAAAAAAAAoAAAAAAgAdAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAdAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAHQAAAAAAAAIAAAAAAAAKAAAAAAEAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAACAAAAAAAACgAAAAAEAB0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAgAAAAAAAAoAAAAAAgABAAAAAAUAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAB5AAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAA== version: 7 -1,-2: ind: -1,-2 - tiles: eQAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAB0AAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAeQAAAAAAAAEAAAAAAgB5AAAAAAAAHQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAHkAAAAAAAABAAAAAAMAeQAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAQAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAABAAdAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEAHQAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAPAAAAAAAADwAAAAAAAB5AAAAAAAANgAAAAABADYAAAAAAAB5AAAAAAAAEQAAAAABABEAAAAAAQB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAADwAAAAAAAA8AAAAAAAAeQAAAAAAADYAAAAAAAA2AAAAAAAAeQAAAAAAABEAAAAAAQARAAAAAAEAeQAAAAAAAHkAAAAAAABoAAAAAAAAeQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: eQAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAB0AAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAeQAAAAAAAAEAAAAAAQB5AAAAAAAAHQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAHkAAAAAAAABAAAAAAQAeQAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAQAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAACgAAAAABAAIAAAAAAAACAAAAAAAAAQAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADAAoAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAwAKAAAAAAEAAgAAAAAAAAIAAAAAAAABAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAMACgAAAAADAAIAAAAAAAACAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAoAAAAABQACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAKAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAPAAAAAAAADwAAAAAAAB5AAAAAAAANgAAAAABADYAAAAAAQB5AAAAAAAAEQAAAAABABEAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAACgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAADwAAAAAAAA8AAAAAAAAeQAAAAAAADYAAAAAAAA2AAAAAAAAeQAAAAAAABEAAAAAAQARAAAAAAEAeQAAAAAAAHkAAAAAAABoAAAAAAAAeQAAAAAAAAoAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 2,-2: ind: 2,-2 @@ -141,7 +144,7 @@ entities: version: 7 1,1: ind: 1,1 - tiles: AgAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAHQAAAAAAAHkAAAAAAAA+AAAAAAAAPgAAAAAAAHkAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAB0AAAAAAAB5AAAAAAAAPgAAAAAAAD4AAAAAAAAdAAAAAAAAdgAAAAAAAHYAAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAdgAAAAAAAHYAAAAAAAB5AAAAAAAAeQAAAAAAAD4AAAAAAAA+AAAAAAAAHQAAAAAAAHYAAAAAAAB2AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHYAAAAAAAB2AAAAAAAATQAAAAAAAHkAAAAAAAA+AAAAAAAAPgAAAAAAAB0AAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAE0AAAAAAAB5AAAAAAAAPgAAAAAAAD4AAAAAAAB5AAAAAAAAdgAAAAAAAHkAAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAeQAAAAAAAHYAAAAAAABNAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAB0AAAAAAAAdAAAAAAAATQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAE0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAABNAAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAATQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAE0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAHkAAAAAAAB5AAAAAAAATQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAAKAAAAAAEAeQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAACgAAAAAAAHkAAAAAAAA+AAAAAAAAPgAAAAAAAHkAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAAoAAAAAAgB5AAAAAAAAPgAAAAAAAD4AAAAAAAAdAAAAAAAAdgAAAAAAAHYAAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAdgAAAAAAAHYAAAAAAAB5AAAAAAAAeQAAAAAAAD4AAAAAAAA+AAAAAAAAHQAAAAAAAHYAAAAAAAB2AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHYAAAAAAAB2AAAAAAAATQAAAAAAAHkAAAAAAAA+AAAAAAAAPgAAAAAAAB0AAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAE0AAAAAAAB5AAAAAAAAPgAAAAAAAD4AAAAAAAB5AAAAAAAAdgAAAAAAAHkAAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAeQAAAAAAAHYAAAAAAABNAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAB0AAAAAAAAdAAAAAAAATQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAE0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAABNAAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAATQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAE0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAHkAAAAAAAB5AAAAAAAATQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 2,1: ind: 2,1 @@ -149,11 +152,11 @@ entities: version: 7 0,1: ind: 0,1 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAAdAAAAAAAATQAAAAAAAE0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAKAAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAACgAAAAAAAAoAAAAAAwAKAAAAAAAACgAAAAAAAAoAAAAAAQAKAAAAAAQAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAAoAAAAABQAKAAAAAAAACgAAAAABAAoAAAAAAgAKAAAAAAIACgAAAAAFAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAKAAAAAAUACgAAAAABAAoAAAAAAgAKAAAAAAMACgAAAAAAAAoAAAAAAgAKAAAAAAIACgAAAAAAAAoAAAAAAAAKAAAAAAUACgAAAAAEAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAAoAAAAAAgAKAAAAAAUACgAAAAADAAoAAAAABQAKAAAAAAUAeQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAAdAAAAAAAATQAAAAAAAE0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAA== version: 7 -1,1: ind: -1,1 - tiles: aAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAGgAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAaAAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAABoAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAGgAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAANAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAaAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAAEAAAAABAACAAAAAAAAAgAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAAQAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAADQAAAAAAAHkAAAAAAAACAAAAAAAAeQAAAAAAAA0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAB0AAAAAAAANAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAADQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAA0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAANAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAHgAAAAAAQB4AAAAAAIAeAAAAAABAHgAAAAAAQB4AAAAAAAAeAAAAAABAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAEAeAAAAAABAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: aAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAGgAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAaAAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAABoAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAGgAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAANAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAaAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAAEAAAAABQACAAAAAAAAAgAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAAQAAAAACAAIAAAAAAAAKAAAAAAMAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAADQAAAAAAAHkAAAAAAAACAAAAAAAAeQAAAAAAAA0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAoAAAAABAANAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAADQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAA0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAANAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAHgAAAAAAQB4AAAAAAIAeAAAAAACAHgAAAAAAQB4AAAAAAEAeAAAAAAAAHgAAAAAAQB4AAAAAAIAeAAAAAAAAHgAAAAAAAB4AAAAAAIAeAAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 1,2: ind: 1,2 @@ -165,43 +168,43 @@ entities: version: 7 -2,0: ind: -2,0 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAdgAAAAAAAB0AAAAAAAB5AAAAAAAAAQAAAAAEAAEAAAAAAQABAAAAAAAAAQAAAAADAHkAAAAAAAAQAAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHYAAAAAAAAdAAAAAAAAeQAAAAAAAA8AAAAAAAAPAAAAAAEADwAAAAABAA8AAAAABQB5AAAAAAAAHQAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAA+AAAAAAAAPgAAAAAAAHkAAAAAAAB2AAAAAAAAHQAAAAAAAB0AAAAAAAADAAAAAAYAAwAAAAAFAAMAAAAAAAADAAAAAAQAHQAAAAAAAB0AAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAdgAAAAAAAB0AAAAAAAAdAAAAAAAAAwAAAAABAAMAAAAABgADAAAAAAIAAwAAAAADAB0AAAAAAAAdAAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHYAAAAAAAAdAAAAAAAAeQAAAAAAAA8AAAAABQAPAAAAAAIADwAAAAACAA8AAAAAAgB5AAAAAAAAHQAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAdgAAAAAAAB0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHYAAAAAAAAdAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAHQAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAPgAAAAAAAD4AAAAAAAB2AAAAAAAAHQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAB0AAAAAAAB2AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAdgAAAAAAAD4AAAAAAAA+AAAAAAAAdgAAAAAAAB0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAdAAAAAAAAdgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHYAAAAAAAA+AAAAAAAAPgAAAAAAAHYAAAAAAAAdAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB4AAAAAAEAeAAAAAACAHgAAAAAAQB4AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAGwAAAAAAABsAAAAAAAAeQAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAAAwAKAAAAAAUACgAAAAAFAAoAAAAABAAKAAAAAAEACgAAAAADAAoAAAAABQAKAAAAAAQACgAAAAACAAoAAAAAAwAKAAAAAAAACgAAAAAEAAoAAAAABQAKAAAAAAMACgAAAAADAAoAAAAABAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAAAQB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAdgAAAAAAAAoAAAAABQB5AAAAAAAAAQAAAAABAAEAAAAABQABAAAAAAUAAQAAAAACAHkAAAAAAAAQAAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAAoAAAAAAwAKAAAAAAQAHQAAAAAAAHYAAAAAAAAKAAAAAAIAeQAAAAAAAA8AAAAABQAPAAAAAAIADwAAAAAAAA8AAAAAAQB5AAAAAAAACgAAAAABAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAA+AAAAAAAAPgAAAAAAAHkAAAAAAAB2AAAAAAAACgAAAAABAAoAAAAAAAADAAAAAAIAAwAAAAAFAAMAAAAABQADAAAAAAMACgAAAAABAAoAAAAABQB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAdgAAAAAAAAoAAAAAAAAKAAAAAAUAAwAAAAAEAAMAAAAAAwADAAAAAAIAAwAAAAAFAAoAAAAABQAKAAAAAAIAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHYAAAAAAAAKAAAAAAQAeQAAAAAAAA8AAAAAAwAPAAAAAAEADwAAAAAEAA8AAAAAAgB5AAAAAAAACgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAKAAAAAAMAdgAAAAAAAAoAAAAAAgB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAKAAAAAAQACgAAAAACAAoAAAAAAwAKAAAAAAMACgAAAAABAAoAAAAAAgAKAAAAAAUACgAAAAACAHYAAAAAAAAKAAAAAAUAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAACgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAPgAAAAAAAD4AAAAAAAB2AAAAAAAACgAAAAABAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAoAAAAABQB2AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAdgAAAAAAAD4AAAAAAAA+AAAAAAAAdgAAAAAAAAoAAAAAAgB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAKAAAAAAQAdgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHYAAAAAAAA+AAAAAAAAPgAAAAAAAHYAAAAAAAAKAAAAAAUAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAACgAAAAAAAAoAAAAABQAKAAAAAAMACgAAAAADAAoAAAAAAgAKAAAAAAQACgAAAAADAAoAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB4AAAAAAEAeAAAAAABAHgAAAAAAgB4AAAAAAEAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAEAAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAABAAAAAAAAAQAAAAAAAAeQAAAAAAAA== version: 7 -2,-1: ind: -2,-1 - tiles: TQAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAADwAAAAAFAA8AAAAABAAPAAAAAAEADwAAAAADAA8AAAAABAB2AAAAAAAADwAAAAACAA8AAAAABAAPAAAAAAIADwAAAAACAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAA8AAAAABAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAA8AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAPAAAAAAQAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHYAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAPAAAAAAMAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAADwAAAAADAHkAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB5AAAAAAAADwAAAAAEAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAA8AAAAAAgB5AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAeQAAAAAAAA8AAAAAAQB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAPAAAAAAEAeQAAAAAAAHYAAAAAAAB2AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAdgAAAAAAAHkAAAAAAAAPAAAAAAMAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAADwAAAAACAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAADwAAAAAEAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAA8AAAAAAwAPAAAAAAAAAwAAAAAAAAMAAAAABQADAAAAAAYAAwAAAAAEAAMAAAAAAQAPAAAAAAUADwAAAAABAA8AAAAABQAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: TQAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAAoAAAAAAwAKAAAAAAAACgAAAAACAAoAAAAABQAKAAAAAAUACgAAAAACAAoAAAAAAAAKAAAAAAQACgAAAAABAAoAAAAAAwAKAAAAAAEACgAAAAAAAAoAAAAAAwAKAAAAAAAACgAAAAACAAoAAAAAAgAKAAAAAAMACgAAAAAEAAoAAAAAAwAKAAAAAAUACgAAAAAAAAoAAAAAAQAKAAAAAAQACgAAAAACAAoAAAAAAAAKAAAAAAEACgAAAAAFAAoAAAAAAwAKAAAAAAMACgAAAAADAAoAAAAAAQAKAAAAAAMACgAAAAAEAAoAAAAABQAKAAAAAAIACgAAAAAFAAoAAAAAAgAKAAAAAAQACgAAAAADAAoAAAAAAwAKAAAAAAIACgAAAAADAAoAAAAABAAKAAAAAAEACgAAAAAFAAoAAAAAAQAKAAAAAAMACgAAAAADAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAADwAAAAAFAA8AAAAABAAPAAAAAAIADwAAAAAAAA8AAAAAAAB2AAAAAAAADwAAAAAEAA8AAAAAAQAPAAAAAAAADwAAAAADAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAA8AAAAAAgB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAA8AAAAABQB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAPAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHYAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAPAAAAAAQAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAADwAAAAADAHkAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB5AAAAAAAADwAAAAACAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAA8AAAAAAwB5AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAeQAAAAAAAA8AAAAABAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAPAAAAAAEAeQAAAAAAAHYAAAAAAAB2AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAdgAAAAAAAHkAAAAAAAAPAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAADwAAAAACAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAADwAAAAAFAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAA8AAAAABAAPAAAAAAAAAwAAAAAGAAMAAAAAAQADAAAAAAEAAwAAAAAAAAMAAAAAAQAPAAAAAAAADwAAAAAFAA8AAAAAAgAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAAAgAKAAAAAAEACgAAAAABAAoAAAAAAwAKAAAAAAEACgAAAAAFAAoAAAAAAwAKAAAAAAQACgAAAAACAAoAAAAABAAKAAAAAAMACgAAAAADAAoAAAAABAAKAAAAAAAACgAAAAAFAAoAAAAAAgACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 -2,1: ind: -2,1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAGwAAAAAAABsAAAAAAAAeQAAAAAAAHgAAAAAAQB4AAAAAAIAeAAAAAACAHgAAAAAAAB4AAAAAAIAeAAAAAAAAHgAAAAAAgB4AAAAAAIAeAAAAAACAHgAAAAAAQB4AAAAAAEAeAAAAAACAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAeQAAAAAAAHgAAAAAAgB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAaAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAHkAAAAAAAB4AAAAAAEAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAGgAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAB5AAAAAAAAeAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHgAAAAAAQB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAaAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHgAAAAAAAB4AAAAAAIAeAAAAAACAHgAAAAAAgB4AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAGgAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeAAAAAACAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAeQAAAAAAAHgAAAAAAQB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAaAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAHkAAAAAAAB4AAAAAAIAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAGgAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAB5AAAAAAAAeAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHgAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHgAAAAAAgB4AAAAAAEAeAAAAAAAAHgAAAAAAQB4AAAAAAEAeAAAAAACAHgAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB4AAAAAAEAeAAAAAABAHgAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAABAAAAAAAAAQAAAAAAAAeQAAAAAAAHgAAAAAAAB4AAAAAAEAeAAAAAACAHgAAAAAAAB4AAAAAAEAeAAAAAACAHgAAAAAAAB4AAAAAAIAeAAAAAAAAHgAAAAAAgB4AAAAAAAAeAAAAAACAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAeQAAAAAAAHgAAAAAAgB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAaAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAHkAAAAAAAB4AAAAAAEAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAGgAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAB5AAAAAAAAeAAAAAACAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHgAAAAAAQB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAaAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHgAAAAAAgB4AAAAAAEAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAGgAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeAAAAAABAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAeQAAAAAAAHgAAAAAAgB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAaAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAHkAAAAAAAB4AAAAAAEAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAGgAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAB5AAAAAAAAeAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHgAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHgAAAAAAAB4AAAAAAIAeAAAAAAAAHgAAAAAAQB4AAAAAAAAeAAAAAACAHgAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB4AAAAAAIAeAAAAAACAHgAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -1,2: ind: -1,2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAEAAAAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAABAAAAAAAAAAB5AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAEAAAAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAACAAAAAAAAAAB5AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAQAAAAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -3,1: ind: -3,1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAACAHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAQB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAABAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAgB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAIAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAABAHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAgB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAABAHgAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAABAHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAgB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAIAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAgB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAEAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAABAHgAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAQB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAEAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAgB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAIAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAABAHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 0,-3: ind: 0,-3 - tiles: HQAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAHQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAANgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAADYAAAAAAQACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAADgAAAAAAAB0AAAAAAAB2AAAAAAAAdgAAAAAAAB0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAdAAAAAAAAdgAAAAAAAHYAAAAAAAAdAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHYAAAAAAAB2AAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB2AAAAAAAAdgAAAAAAAB0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAAgAAAAAAAA== + tiles: HQAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAHQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAANgAAAAABAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAADYAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAADgAAAAAAAB0AAAAAAAB2AAAAAAAAdgAAAAAAAB0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAdAAAAAAAAdgAAAAAAAHYAAAAAAAAdAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHYAAAAAAAB2AAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB2AAAAAAAAdgAAAAAAAB0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAAgAAAAAAAA== version: 7 -1,-3: ind: -1,-3 - tiles: HQAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAdAAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAA2AAAAAAAANgAAAAABAAIAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAANgAAAAABADYAAAAAAAACAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAB0AAAAAAAAMAAAAAAAADAAAAAAAAB0AAAAAAAAOAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAdAAAAAAAADAAAAAAAAAwAAAAAAAAdAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAHQAAAAAAAAwAAAAAAAAMAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAB0AAAAAAAAMAAAAAAAADAAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAA== + tiles: HQAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAdAAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAA2AAAAAAEANgAAAAABAAIAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAANgAAAAABADYAAAAAAQACAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAB0AAAAAAAAMAAAAAAAADAAAAAAAAB0AAAAAAAAOAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAdAAAAAAAADAAAAAAAAAwAAAAAAAAdAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAHQAAAAAAAAwAAAAAAAAMAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAB0AAAAAAAAMAAAAAAAADAAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAA== version: 7 -2,-2: ind: -2,-2 - tiles: AQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAGwAAAAAAABsAAAAAAAAAgAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAABsAAAAAAAAbAAAAAAAAAIAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAbAAAAAAAAGwAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAeQAAAAAAABMAAAAAAAATAAAAAAAAeQAAAAAAAGwAAAAAAABsAAAAAAAAeQAAAAAAAAsAAAAAAQALAAAAAAEAeQAAAAAAAGwAAAAAAABsAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAATAAAAAAAAEwAAAAAAAHkAAAAAAABsAAAAAAAAbAAAAAAAAHkAAAAAAAALAAAAAAAACwAAAAAAAHkAAAAAAABsAAAAAAAAbAAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAA== + tiles: AQAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAGwAAAAAAABsAAAAAAAAAgAAAAAAAAEAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAABsAAAAAAAAbAAAAAAAAAIAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAbAAAAAAAAGwAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAeQAAAAAAABMAAAAAAAATAAAAAAAAeQAAAAAAAGwAAAAAAABsAAAAAAAAeQAAAAAAAAsAAAAAAQALAAAAAAAAeQAAAAAAAGwAAAAAAABsAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAATAAAAAAAAEwAAAAAAAHkAAAAAAABsAAAAAAAAbAAAAAAAAHkAAAAAAAALAAAAAAEACwAAAAABAHkAAAAAAABsAAAAAAAAbAAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAA== version: 7 -2,-3: ind: -2,-3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAwAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAMAAAAAAwB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAwAAAAAGAHkAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAADAAAAAAQAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAwAAAAADAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAADAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAMAAAAAAwB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAADAAAAAAQAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAbAAAAAAAAGwAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAGwAAAAAAABsAAAAAAAAAgAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAwAAAAAEAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAMAAAAAAwB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAwAAAAAGAHkAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAADAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAwAAAAABAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAADAAAAAAUAeQAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAMAAAAABgB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAADAAAAAAIAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAbAAAAAAAAGwAAAAAAAACAAAAAAAAAQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAGwAAAAAAABsAAAAAAAAAgAAAAAAAA== version: 7 1,-3: ind: 1,-3 - tiles: eQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAMAAAAABgB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAADAAAAAAMAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAAMAAAAAAwB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAAwAAAAABAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAAMAAAAABQB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAAwAAAAACAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAADAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAAwAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAbAAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAAGwAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: eQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAMAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAADAAAAAAIAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAAMAAAAAAQB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAAwAAAAADAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAAMAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAAwAAAAAEAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAADAAAAAAUAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAAwAAAAAFAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAbAAAAAAAAHkAAAAAAAAmAAAAAAAAJgAAAAAAACYAAAAAAAAmAAAAAAAAHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAAGwAAAAAAAB5AAAAAAAAJgAAAAAAACYAAAAAAAAmAAAAAAAAJgAAAAAAAB0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 1,-4: ind: 1,-4 @@ -221,27 +224,27 @@ entities: version: 7 -3,0: ind: -3,0 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAdgAAAAAAAHkAAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHkAAAAAAAAdAAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB5AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAB5AAAAAAAAHQAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAeQAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAeQAAAAAAAB0AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHkAAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHkAAAAAAAAdAAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAHQAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAB0AAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAA2AAAAAAAACAAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAHQAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAB0AAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAAAgAKAAAAAAUACgAAAAACAAoAAAAAAAAKAAAAAAIACgAAAAAFAAoAAAAABAAKAAAAAAMACgAAAAAFAAoAAAAABQAKAAAAAAMACgAAAAABAAoAAAAABQAKAAAAAAIACgAAAAACAAoAAAAAAwB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAdgAAAAAAAHkAAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHkAAAAAAAAKAAAAAAQAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB5AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAB5AAAAAAAACgAAAAACAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAeQAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAeQAAAAAAAAoAAAAAAwA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHkAAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHkAAAAAAAAKAAAAAAEAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAACgAAAAAEAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAACgAAAAABAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAoAAAAAAQB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAA2AAAAAAAACAAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAACgAAAAACAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAoAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -3,-1: ind: -3,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAATQAAAAAAAE0AAAAAAAB5AAAAAAAATQAAAAAAAE0AAAAAAAB5AAAAAAAATQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAAAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAAAAAAAAAAHkAAAAAAAAdAAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAASAAAAAAAAeQAAAAAAAB0AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAAdAAAAAAAAHQAAAAAAADYAAAAAAAA2AAAAAAEAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAEgAAAAAAAHkAAAAAAAAdAAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAABIAAAAAAAB5AAAAAAAAHQAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAASAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAATQAAAAAAAE0AAAAAAAB5AAAAAAAATQAAAAAAAE0AAAAAAAB5AAAAAAAATQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAoAAAAABQAKAAAAAAEACgAAAAADAAoAAAAAAwAKAAAAAAAACgAAAAABAAoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAKAAAAAAQACgAAAAACAAoAAAAABQAKAAAAAAEACgAAAAAFAAoAAAAABAAKAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAACgAAAAAFAAoAAAAAAwAKAAAAAAQACgAAAAADAAoAAAAAAQAKAAAAAAAACgAAAAABAAAAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAAAAAAAAAAHkAAAAAAAAdAAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAASAAAAAAAAeQAAAAAAAB0AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAAdAAAAAAAAHQAAAAAAADYAAAAAAAA2AAAAAAEAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAEgAAAAAAAHkAAAAAAAAdAAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAABIAAAAAAAB5AAAAAAAAHQAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAASAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAAAgAKAAAAAAQACgAAAAACAAoAAAAAAAAKAAAAAAMACgAAAAAEAAoAAAAABAAKAAAAAAIACgAAAAAAAAoAAAAABQAKAAAAAAMACgAAAAAFAAoAAAAABQAKAAAAAAEACgAAAAACAAoAAAAABAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 -3,-2: ind: -3,-2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAaAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAQAAAAAAAAEAAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAEAAAAAAAABAAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAaAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAQAAAAAAAAEAAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAEAAAAAAAABAAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAA== version: 7 -4,-1: ind: -4,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAGgAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAAAgAKAAAAAAUACgAAAAAEAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAGgAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 -4,0: ind: -4,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAAAwAKAAAAAAIACgAAAAAEAAoAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -3,-3: ind: -3,-3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 - type: Broadphase - type: Physics @@ -1135,6 +1138,11 @@ entities: pos: 16.5,1.5 - proto: AdminHypo entities: + - uid: 143 + components: + - type: Transform + parent: 1668 + pos: -23.716885,10.477397 - uid: 797 components: - type: Transform @@ -1251,6 +1259,12 @@ entities: pos: 8.5,23.5 - proto: AirlockCentralCommand entities: + - uid: 52 + components: + - type: Transform + parent: 1668 + rot: 1.5707963267948966 rad + pos: -16.5,-4.5 - uid: 1128 components: - type: Transform @@ -1422,6 +1436,18 @@ entities: pos: 17.5,-43.5 - proto: AirlockCentralCommandGlassLocked entities: + - uid: 50 + components: + - type: Transform + parent: 1668 + rot: 1.5707963267948966 rad + pos: 7.5,-48.5 + - uid: 51 + components: + - type: Transform + parent: 1668 + rot: 1.5707963267948966 rad + pos: -8.5,-48.5 - uid: 2899 components: - type: Transform @@ -1432,16 +1458,6 @@ entities: - type: Transform parent: 1668 pos: -16.5,8.5 - - uid: 4614 - components: - - type: Transform - parent: 1668 - pos: 7.5,-48.5 - - uid: 4624 - components: - - type: Transform - parent: 1668 - pos: -8.5,-48.5 - uid: 7283 components: - type: Transform @@ -1483,11 +1499,6 @@ entities: - type: Transform parent: 1668 pos: -20.5,2.5 - - uid: 3368 - components: - - type: Transform - parent: 1668 - pos: -16.5,-4.5 - uid: 7183 components: - type: MetaData @@ -1564,6 +1575,18 @@ entities: pos: -13.5,-11.5 - proto: AirlockExternal entities: + - uid: 54 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 16.5,-48.5 + - uid: 55 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -17.5,-48.5 - uid: 330 components: - type: Transform @@ -1582,16 +1605,6 @@ entities: parent: 1668 rot: -1.5707963267948966 rad pos: -52.5,0.5 - - uid: 4615 - components: - - type: Transform - parent: 1668 - pos: 16.5,-48.5 - - uid: 4616 - components: - - type: Transform - parent: 1668 - pos: -17.5,-48.5 - proto: AirlockExternalEngineeringLocked entities: - uid: 4090 @@ -1601,6 +1614,12 @@ entities: pos: -21.5,18.5 - proto: AirlockExternalGlass entities: + - uid: 57 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -40.5,-26.5 - uid: 3660 components: - type: Transform @@ -1613,11 +1632,6 @@ entities: parent: 1668 rot: 3.141592653589793 rad pos: 4.5,33.5 - - uid: 7486 - components: - - type: Transform - parent: 1668 - pos: -40.5,-26.5 - proto: AirlockExternalGlassShuttleEmergencyLocked entities: - uid: 25 @@ -1777,14 +1791,6 @@ entities: - type: Transform parent: 1668 pos: -29.5,-28.5 -- proto: AirlockFreezer - entities: - - uid: 2798 - components: - - type: Transform - parent: 1668 - rot: 3.141592653589793 rad - pos: -18.5,14.5 - proto: AirlockFreezerLocked entities: - uid: 1068 @@ -2023,6 +2029,13 @@ entities: - type: Transform parent: 1668 pos: -22.492147,-17.432499 +- proto: AnomalyScannerAdmin + entities: + - uid: 9749 + components: + - type: Transform + parent: 1668 + pos: -23.3841,9.5656 - proto: APCBasic entities: - uid: 2865 @@ -3238,11 +3251,91 @@ entities: - type: Transform parent: 1668 pos: 33.5,3.5 + - uid: 59 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 7.5,-0.5 + - type: DeviceLinkSink + invokeCounter: 1 + - uid: 60 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 7.5,-1.5 + - type: DeviceLinkSink + invokeCounter: 1 + - uid: 61 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 7.5,-2.5 + - type: DeviceLinkSink + invokeCounter: 1 + - uid: 63 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 7.5,0.5 + - type: DeviceLinkSink + invokeCounter: 1 + - uid: 64 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 7.5,1.5 + - type: DeviceLinkSink + invokeCounter: 1 + - uid: 65 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 18.5,-2.5 + - type: DeviceLinkSink + invokeCounter: 1 + - uid: 66 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 18.5,-1.5 + - type: DeviceLinkSink + invokeCounter: 1 + - uid: 67 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 18.5,-0.5 + - type: DeviceLinkSink + invokeCounter: 1 + - uid: 68 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 18.5,0.5 + - type: DeviceLinkSink + invokeCounter: 1 - uid: 78 components: - type: Transform parent: 1668 pos: 33.5,1.5 + - uid: 82 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 18.5,1.5 + - type: DeviceLinkSink + invokeCounter: 1 - uid: 138 components: - type: Transform @@ -3308,6 +3401,8 @@ entities: - type: Transform parent: 1668 pos: 2.5,2.5 + - type: DeviceLinkSink + invokeCounter: 1 - uid: 333 components: - type: Transform @@ -3323,56 +3418,6 @@ entities: - type: Transform parent: 1668 pos: -1.5,2.5 - - uid: 537 - components: - - type: Transform - parent: 1668 - pos: 17.5,-0.5 - - uid: 538 - components: - - type: Transform - parent: 1668 - pos: 17.5,0.5 - - uid: 539 - components: - - type: Transform - parent: 1668 - pos: 17.5,1.5 - - uid: 540 - components: - - type: Transform - parent: 1668 - pos: 17.5,-1.5 - - uid: 541 - components: - - type: Transform - parent: 1668 - pos: 17.5,-2.5 - - uid: 542 - components: - - type: Transform - parent: 1668 - pos: 8.5,1.5 - - uid: 543 - components: - - type: Transform - parent: 1668 - pos: 8.5,0.5 - - uid: 544 - components: - - type: Transform - parent: 1668 - pos: 8.5,-0.5 - - uid: 545 - components: - - type: Transform - parent: 1668 - pos: 8.5,-1.5 - - uid: 546 - components: - - type: Transform - parent: 1668 - pos: 8.5,-2.5 - uid: 559 components: - type: Transform @@ -17518,6 +17563,13 @@ entities: parent: 1668 rot: 1.5707963267948966 rad pos: -18.5,5.5 +- proto: CentCommFlippo + entities: + - uid: 162 + components: + - type: Transform + parent: 1668 + pos: -15.502895,9.575231 - proto: CentcomPDA entities: - uid: 22 @@ -18209,13 +18261,13 @@ entities: parent: 1668 rot: -1.5707963267948966 rad pos: -34.5,12.5 -- proto: ChameleonProjector +- proto: ChameleonControllerImplanter entities: - - uid: 6002 + - uid: 131 components: - type: Transform parent: 1668 - pos: -12.443271,7.649471 + pos: -12.430484,7.6615725 - proto: CheapRollerBedSpawnFolded entities: - uid: 1386 @@ -18382,6 +18434,44 @@ entities: color: '#FFFFFFFF' decals: 2927: 0,-2 + - node: + id: BrickTileSteelCornerNe + color: '#43990996' + decals: + 5: 8,-3 + - node: + id: BrickTileSteelCornerNw + color: '#43990996' + decals: + 3: 6,-3 + 4: 1,-7 + - node: + id: BrickTileSteelInnerNw + color: '#43990996' + decals: + 13: 6,-7 + - node: + id: BrickTileSteelLineN + color: '#43990996' + decals: + 6: 5,-7 + 7: 4,-7 + 8: 3,-7 + 9: 2,-7 + - node: + id: BrickTileSteelLineS + color: '#52B4E996' + decals: + 0: 11,-3 + 1: 12,-3 + 2: 14,-3 + - node: + id: BrickTileSteelLineW + color: '#43990996' + decals: + 10: 6,-6 + 11: 6,-5 + 12: 6,-4 - node: id: BrickTileWhiteCornerNe color: '#FA750096' @@ -18556,18 +18646,6 @@ entities: color: '#FFFFFFFF' decals: 2219: 2,-15 - - node: - id: HalfTileOverlayGreyscale180 - color: '#52B4E996' - decals: - 468: 11,-3 - 469: 12,-3 - 470: 14,-3 - - node: - id: HalfTileOverlayGreyscale180 - color: '#9FED5866' - decals: - 500: 8,-3 - node: id: HalfTileOverlayGreyscale270 color: '#334E6DC8' @@ -18582,8 +18660,7 @@ entities: id: QuarterTileOverlayGreyscale color: '#334E6DC8' decals: - 1438: 0,-7 - 1473: 1,-7 + 14: 0,-7 - node: id: QuarterTileOverlayGreyscale color: '#D4D4D428' @@ -18597,23 +18674,6 @@ entities: 356: 4,-3 357: 4,-2 358: 4,-1 - - node: - id: QuarterTileOverlayGreyscale180 - color: '#52B4E996' - decals: - 807: 4,-7 - 808: 5,-7 - 809: 6,-7 - 810: 6,-6 - 811: 6,-5 - - node: - id: QuarterTileOverlayGreyscale180 - color: '#9FED5876' - decals: - 451: 2,-7 - 452: 3,-7 - 458: 6,-4 - 459: 6,-3 - node: id: QuarterTileOverlayGreyscale270 color: '#334E6DC8' @@ -19063,6 +19123,37 @@ entities: color: '#FFFFFFFF' decals: 1044: -11,5 + - node: + id: BrickTileSteelCornerSe + color: '#43990996' + decals: + 0: -8,1 + 1: -3,5 + - node: + id: BrickTileSteelInnerNe + color: '#43990996' + decals: + 8: -8,5 + - node: + id: BrickTileSteelInnerSe + color: '#43990996' + decals: + 10: -8,5 + - node: + id: BrickTileSteelLineE + color: '#43990996' + decals: + 5: -8,2 + 6: -8,3 + 7: -8,4 + - node: + id: BrickTileSteelLineS + color: '#43990996' + decals: + 2: -5,5 + 3: -6,5 + 4: -7,5 + 9: -4,5 - node: id: BrickTileWhiteCornerNe color: '#EFD2415D' @@ -19304,23 +19395,6 @@ entities: 270: -4,1 271: -3,1 272: -2,1 - - node: - id: QuarterTileOverlayGreyscale - color: '#9FED5876' - decals: - 431: -4,5 - 432: -5,5 - 438: -8,2 - 439: -8,1 - - node: - id: QuarterTileOverlayGreyscale - color: '#EFD2415D' - decals: - 1210: -8,3 - 1211: -8,4 - 1212: -8,5 - 1213: -7,5 - 1214: -6,5 - node: id: QuarterTileOverlayGreyscale color: '#EFD84150' @@ -19337,7 +19411,6 @@ entities: decals: 1429: -2,5 1432: -1,4 - 1435: -3,5 - node: id: QuarterTileOverlayGreyscale180 color: '#D4D4D428' @@ -20915,6 +20988,44 @@ entities: 3349: 3,9 3350: 3,10 3351: 3,11 + - node: + id: BrickTileSteelCornerSe + color: '#43990996' + decals: + 3: 8,1 + - node: + id: BrickTileSteelCornerSw + color: '#43990996' + decals: + 4: 1,5 + 5: 6,1 + - node: + id: BrickTileSteelInnerSw + color: '#43990996' + decals: + 13: 6,5 + - node: + id: BrickTileSteelLineN + color: '#DE3A3A96' + decals: + 0: 11,1 + 1: 12,1 + 2: 14,1 + - node: + id: BrickTileSteelLineS + color: '#43990996' + decals: + 9: 5,5 + 10: 4,5 + 11: 3,5 + 12: 2,5 + - node: + id: BrickTileSteelLineW + color: '#43990996' + decals: + 6: 6,2 + 7: 6,3 + 8: 6,4 - node: id: BrickTileWhiteCornerNe color: '#DE3A3A96' @@ -21040,18 +21151,6 @@ entities: 3361: 10,11 3362: 10,10 3363: 10,9 - - node: - id: HalfTileOverlayGreyscale - color: '#9FED5866' - decals: - 498: 8,1 - - node: - id: HalfTileOverlayGreyscale - color: '#DE3A3A96' - decals: - 464: 11,1 - 465: 12,1 - 466: 14,1 - node: id: HalfTileOverlayGreyscale270 color: '#334E6DC8' @@ -21068,7 +21167,6 @@ entities: color: '#334E6DC8' decals: 1430: 0,3 - 1434: 1,3 - node: id: QuarterTileOverlayGreyscale180 color: '#DE3A3A96' @@ -21084,6 +21182,7 @@ entities: id: QuarterTileOverlayGreyscale270 color: '#D4D4D428' decals: + 14: 1,3 368: 2,3 369: 3,3 370: 4,3 @@ -21110,23 +21209,10 @@ entities: 261: 0,1 262: 1,1 263: 2,1 - - node: - id: QuarterTileOverlayGreyscale90 - color: '#9FED5876' - decals: - 420: 6,1 - 421: 6,2 - 427: 2,5 - 428: 3,5 - node: id: QuarterTileOverlayGreyscale90 color: '#DE3A3A96' decals: - 812: 6,3 - 813: 6,4 - 814: 6,5 - 815: 5,5 - 816: 4,5 1502: 0,7 1503: 0,8 1504: 0,9 @@ -21200,6 +21286,16 @@ entities: decals: 544: 20,-12 545: 22,-12 + - node: + id: BrickTileSteelCornerNw + color: '#43990996' + decals: + 3: 17,-3 + - node: + id: BrickTileSteelLineS + color: '#52B4E996' + decals: + 2: 16,-3 - node: id: BrickTileWhiteCornerNw color: '#334E6DC8' @@ -21313,16 +21409,6 @@ entities: 513: 16,-9 516: 17,-8 517: 16,-7 - - node: - id: HalfTileOverlayGreyscale180 - color: '#52B4E996' - decals: - 471: 16,-3 - - node: - id: HalfTileOverlayGreyscale180 - color: '#9FED5866' - decals: - 501: 17,-3 - node: id: HalfTileOverlayGreyscale270 color: '#334E6DC8' @@ -22489,6 +22575,16 @@ entities: 966: 24,15 967: 29,15 968: 28,15 + - node: + id: BrickTileSteelCornerSw + color: '#43990996' + decals: + 1: 17,1 + - node: + id: BrickTileSteelLineN + color: '#DE3A3A96' + decals: + 0: 16,1 - node: id: BrickTileWhiteCornerSe color: '#DE3A3A96' @@ -22686,16 +22782,6 @@ entities: 109: 19.107887,7.5067863 110: 29.420387,7.0224113 111: 30.092262,7.5849113 - - node: - id: HalfTileOverlayGreyscale - color: '#9FED5866' - decals: - 499: 17,1 - - node: - id: HalfTileOverlayGreyscale - color: '#DE3A3A96' - decals: - 467: 16,1 - node: id: HalfTileOverlayGreyscale270 color: '#334E6DC8' @@ -23218,6 +23304,32 @@ entities: decals: 2928: -2,-2 2931: -1,-2 + - node: + id: BrickTileSteelCornerNe + color: '#43990996' + decals: + 0: -8,-3 + 1: -3,-7 + - node: + id: BrickTileSteelInnerNe + color: '#43990996' + decals: + 9: -8,-7 + - node: + id: BrickTileSteelLineE + color: '#43990996' + decals: + 6: -8,-6 + 7: -8,-5 + 8: -8,-4 + - node: + id: BrickTileSteelLineN + color: '#43990996' + decals: + 2: -4,-7 + 3: -5,-7 + 4: -6,-7 + 5: -7,-7 - node: id: BrickTileWhiteLineE color: '#43990941' @@ -23453,7 +23565,6 @@ entities: decals: 1441: -2,-5 1442: -1,-6 - 1445: -3,-5 - node: id: QuarterTileOverlayGreyscale180 color: '#43990996' @@ -23465,19 +23576,6 @@ entities: 2981: -14,-2 2982: -15,-2 2983: -16,-2 - - node: - id: QuarterTileOverlayGreyscale270 - color: '#9FED5876' - decals: - 440: -8,-3 - 441: -8,-4 - 442: -8,-5 - 443: -8,-6 - 444: -8,-7 - 445: -7,-7 - 446: -6,-7 - 447: -5,-7 - 448: -4,-7 - node: id: QuarterTileOverlayGreyscale90 color: '#334E6DC8' @@ -23487,6 +23585,7 @@ entities: id: QuarterTileOverlayGreyscale90 color: '#D4D4D428' decals: + 10: -3,-5 341: -6,-1 342: -6,-2 343: -6,-3 @@ -23494,7 +23593,6 @@ entities: 345: -6,-5 346: -5,-5 347: -4,-5 - 348: -3,-5 349: -2,-5 - node: id: WoodTrimThinCornerNw @@ -24464,21 +24562,6 @@ entities: - type: ChunkEntity root: 1668 chunk: -3,1 - - type: DecalChunk - maxDecalId: 1479 - decals: - version: 1 - nodes: - - node: - id: b - color: '#FFFFFFFF' - decals: - 1479: -34,26 - - node: - id: largebrush - color: '#DE3A3A96' - decals: - 1478: -34,26 - proto: CigaretteSpent entities: - uid: 1188 @@ -24515,11 +24598,6 @@ entities: pos: -44.404884,-4.442357 - proto: CigarGoldCase entities: - - uid: 2977 - components: - - type: Transform - parent: 1668 - pos: -15.491083,9.742575 - uid: 9161 components: - type: Transform @@ -24532,6 +24610,11 @@ entities: - type: Transform parent: 1668 pos: -11.04193,7.539497 + - uid: 9753 + components: + - type: Transform + parent: 1668 + pos: 27.460176,-19.43678 - proto: CircuitImprinter entities: - uid: 3271 @@ -25017,6 +25100,13 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage +- proto: ClothingHandsKnuckleDustersStun + entities: + - uid: 9158 + components: + - type: Transform + parent: 1668 + pos: 15.528798,4.6529226 - proto: ClothingHeadHatCatEars entities: - uid: 9693 @@ -25348,15 +25438,13 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage -- proto: ClothingOuterArmorCaptainCarapace +- proto: ClothingOuterArmorCentcommCarapace entities: - - uid: 1101 + - uid: 86 components: - type: Transform parent: 1668 - pos: -11.664687,7.5583878 -- proto: ClothingOuterArmorCentcommCarapace - entities: + pos: -11.696109,7.5990725 - uid: 9685 components: - type: Transform @@ -25641,18 +25729,11 @@ entities: pos: -9.538566,5.4158797 - proto: ClothingShoesChameleonNoSlips entities: - - uid: 3420 + - uid: 145 components: - type: Transform parent: 1668 - pos: -13.522441,10.1285 -- proto: ClothingShoesLeather - entities: - - uid: 2992 - components: - - type: Transform - parent: 1668 - pos: -19.521015,9.144212 + pos: -19.520454,9.180522 - proto: ClothingShoeSlippersDuck entities: - uid: 6213 @@ -26622,6 +26703,13 @@ entities: - type: Transform parent: 1668 pos: -17.5,16.5 +- proto: d2Dice + entities: + - uid: 9751 + components: + - type: Transform + parent: 1668 + pos: 26.5,-15.5 - proto: d6Dice entities: - uid: 9168 @@ -26689,6 +26777,26 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage + - uid: 9733 + components: + - type: Transform + parent: 1668 + pos: -19.505926,13.806881 + - uid: 9734 + components: + - type: Transform + parent: 1668 + pos: -19.505926,13.806881 + - uid: 9735 + components: + - type: Transform + parent: 1668 + pos: -19.505926,13.806881 + - uid: 9736 + components: + - type: Transform + parent: 1668 + pos: -19.505926,13.806881 - proto: DeathsquadPDA entities: - uid: 2470 @@ -29925,13 +30033,6 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage -- proto: FlippoEngravedLighter - entities: - - uid: 2841 - components: - - type: Transform - parent: 1668 - pos: -15.490675,9.659155 - proto: FloorDrain entities: - uid: 676 @@ -30324,6 +30425,26 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage + - uid: 9741 + components: + - type: Transform + parent: 1668 + pos: -21.5091,13.775631 + - uid: 9742 + components: + - type: Transform + parent: 1668 + pos: -21.5091,13.775631 + - uid: 9743 + components: + - type: Transform + parent: 1668 + pos: -21.5091,13.775631 + - uid: 9744 + components: + - type: Transform + parent: 1668 + pos: -21.5091,13.775631 - proto: GasFilter entities: - uid: 684 @@ -42367,6 +42488,13 @@ entities: - type: Transform parent: 1668 pos: 8.767073,-23.469265 +- proto: GoldDoor + entities: + - uid: 58 + components: + - type: Transform + parent: 1668 + pos: -18.5,14.5 - proto: GoldenPlunger entities: - uid: 2802 @@ -44683,11 +44811,6 @@ entities: pos: -42.48301,-4.457982 - proto: HighSecCentralCommandLocked entities: - - uid: 784 - components: - - type: Transform - parent: 1668 - pos: 13.5,17.5 - uid: 2212 components: - type: Transform @@ -44699,11 +44822,6 @@ entities: - type: Transform parent: 1668 pos: 13.5,21.5 - - uid: 5998 - components: - - type: Transform - parent: 1668 - pos: -14.5,6.5 - uid: 6903 components: - type: Transform @@ -44712,16 +44830,6 @@ entities: pos: -14.5,6.5 - proto: HighSecCommandLocked entities: - - uid: 1583 - components: - - type: Transform - parent: 1668 - pos: -4.5,0.5 - - uid: 1584 - components: - - type: Transform - parent: 1668 - pos: 3.5,0.5 - uid: 6905 components: - type: Transform @@ -45870,6 +45978,11 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage + - uid: 9750 + components: + - type: Transform + parent: 1668 + pos: -11.394649,5.5776577 - proto: MagicDiceBag entities: - uid: 4765 @@ -46239,6 +46352,26 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage + - uid: 9745 + components: + - type: Transform + parent: 1668 + pos: -21.5091,13.525631 + - uid: 9746 + components: + - type: Transform + parent: 1668 + pos: -21.5091,13.525631 + - uid: 9747 + components: + - type: Transform + parent: 1668 + pos: -21.5091,13.525631 + - uid: 9748 + components: + - type: Transform + parent: 1668 + pos: -21.5091,13.525631 - proto: Mirror entities: - uid: 2789 @@ -46261,6 +46394,13 @@ entities: - type: Transform parent: 1668 pos: -5.5,7.5 +- proto: NanotrasenFlippo + entities: + - uid: 9752 + components: + - type: Transform + parent: 1668 + pos: 26.5,-23.5 - proto: NitrogenCanister entities: - uid: 3493 @@ -46779,116 +46919,6 @@ entities: - type: Transform parent: 1668 pos: 20.5,32.5 - - uid: 6048 - components: - - type: Transform - parent: 1668 - pos: -7.5,-15.5 - - uid: 6049 - components: - - type: Transform - parent: 1668 - pos: -8.5,-15.5 - - uid: 6050 - components: - - type: Transform - parent: 1668 - pos: -11.5,-15.5 - - uid: 6051 - components: - - type: Transform - parent: 1668 - pos: -10.5,-15.5 - - uid: 6052 - components: - - type: Transform - parent: 1668 - pos: -13.5,-15.5 - - uid: 6053 - components: - - type: Transform - parent: 1668 - pos: -14.5,-15.5 - - uid: 6054 - components: - - type: Transform - parent: 1668 - pos: -16.5,-15.5 - - uid: 6055 - components: - - type: Transform - parent: 1668 - pos: -17.5,-15.5 - - uid: 6077 - components: - - type: Transform - parent: 1668 - pos: -20.5,-15.5 - - uid: 6078 - components: - - type: Transform - parent: 1668 - pos: -19.5,-15.5 - - uid: 6080 - components: - - type: Transform - parent: 1668 - pos: -22.5,-15.5 - - uid: 6088 - components: - - type: Transform - parent: 1668 - pos: -23.5,-15.5 - - uid: 6089 - components: - - type: Transform - parent: 1668 - pos: -25.5,-15.5 - - uid: 6090 - components: - - type: Transform - parent: 1668 - pos: -26.5,-15.5 - - uid: 6643 - components: - - type: Transform - parent: 1668 - pos: -28.5,-15.5 - - uid: 6644 - components: - - type: Transform - parent: 1668 - pos: -29.5,-15.5 - - uid: 6645 - components: - - type: Transform - parent: 1668 - pos: -31.5,-15.5 - - uid: 6646 - components: - - type: Transform - parent: 1668 - pos: -32.5,-15.5 - - uid: 6647 - components: - - type: Transform - parent: 1668 - pos: -34.5,-15.5 - - uid: 6648 - components: - - type: Transform - parent: 1668 - pos: -35.5,-15.5 - - uid: 6649 - components: - - type: Transform - parent: 1668 - pos: -38.5,-15.5 - - uid: 6650 - components: - - type: Transform - parent: 1668 - pos: -37.5,-15.5 - proto: PlayerStationAiEmpty entities: - uid: 73 @@ -47067,6 +47097,27 @@ entities: - type: Transform parent: 1668 pos: 17.5,34.5 +- proto: PosterContrabandExoAcid + entities: + - uid: 9756 + components: + - type: Transform + parent: 1668 + pos: -15.5,-29.5 +- proto: PosterContrabandExoChomp + entities: + - uid: 9757 + components: + - type: Transform + parent: 1668 + pos: -15.5,-31.5 +- proto: PosterContrabandExoRun + entities: + - uid: 9758 + components: + - type: Transform + parent: 1668 + pos: -15.5,-33.5 - proto: PosterContrabandHackingGuide entities: - uid: 9332 @@ -47103,6 +47154,13 @@ entities: parent: 1668 rot: 1.5707963267948966 rad pos: 17.5,25.5 +- proto: PosterContrabandLamarr + entities: + - uid: 543 + components: + - type: Transform + parent: 1668 + pos: 18.5,-30.5 - proto: PosterContrabandMissingGloves entities: - uid: 9329 @@ -47139,6 +47197,14 @@ entities: parent: 1668 rot: 1.5707963267948966 rad pos: 9.5,27.5 +- proto: PosterContrabandRouny + entities: + - uid: 174 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -18.5,-47.5 - proto: PosterContrabandSmoke entities: - uid: 9309 @@ -47176,11 +47242,19 @@ entities: pos: 18.5,-32.5 - proto: PosterLegitAnatomyPoster entities: - - uid: 6188 + - uid: 541 components: - type: Transform parent: 1668 - pos: 11.5,-12.5 + pos: 11.5,-13.5 +- proto: PosterLegitBotanyFear + entities: + - uid: 9289 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 11.5,-21.5 - proto: PosterLegitCarpMount entities: - uid: 9313 @@ -47197,12 +47271,26 @@ entities: pos: 31.5,-22.5 - proto: PosterLegitEnlist entities: + - uid: 542 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 9.5,-28.5 - uid: 2447 components: - type: Transform parent: 1668 rot: 1.5707963267948966 rad pos: 9.5,31.5 +- proto: PosterLegitFruitBowl + entities: + - uid: 171 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -12.5,-34.5 - proto: PosterLegitGetYourLEGS entities: - uid: 9333 @@ -47226,11 +47314,12 @@ entities: pos: 7.5,-28.5 - proto: PosterLegitHighClassMartini entities: - - uid: 1327 + - uid: 9694 components: - type: Transform parent: 1668 - pos: 18.5,-22.5 + rot: -1.5707963267948966 rad + pos: 11.5,-34.5 - proto: PosterLegitIan entities: - uid: 9307 @@ -47609,6 +47698,11 @@ entities: - type: Transform parent: 1668 pos: -17.5,2.5 + - uid: 9754 + components: + - type: Transform + parent: 1668 + pos: -10.5,12.5 - proto: PosterLegitReportCrimes entities: - uid: 9305 @@ -47959,6 +48053,26 @@ entities: - type: Transform parent: 1668 pos: -30.5,9.5 + - uid: 9726 + components: + - type: Transform + parent: 1668 + pos: 17.5,-2.5 + - uid: 9727 + components: + - type: Transform + parent: 1668 + pos: 8.5,1.5 + - uid: 9728 + components: + - type: Transform + parent: 1668 + pos: 17.5,1.5 + - uid: 9729 + components: + - type: Transform + parent: 1668 + pos: 8.5,-2.5 - proto: PottedPlant26 entities: - uid: 9076 @@ -48098,18 +48212,6 @@ entities: parent: 1668 rot: -1.5707963267948966 rad pos: 33.5,7.5 - - uid: 128 - components: - - type: Transform - parent: 1668 - rot: 3.141592653589793 rad - pos: 24.5,-6.5 - - uid: 131 - components: - - type: Transform - parent: 1668 - rot: 3.141592653589793 rad - pos: 20.5,-13.5 - uid: 134 components: - type: Transform @@ -48195,6 +48297,12 @@ entities: - type: Transform parent: 1668 pos: 2.5,5.5 + - uid: 544 + components: + - type: Transform + parent: 1668 + rot: 3.141592653589793 rad + pos: 19.5,-13.5 - uid: 619 components: - type: Transform @@ -48240,12 +48348,6 @@ entities: parent: 1668 rot: -1.5707963267948966 rad pos: 10.5,-12.5 - - uid: 1155 - components: - - type: Transform - parent: 1668 - rot: 3.141592653589793 rad - pos: 28.5,-6.5 - uid: 1190 components: - type: Transform @@ -48828,6 +48930,23 @@ entities: parent: 1668 rot: 1.5707963267948966 rad pos: -38.5,11.5 + - uid: 7375 + components: + - type: Transform + parent: 1668 + pos: 33.5,5.5 + - uid: 7376 + components: + - type: Transform + parent: 1668 + rot: 3.141592653589793 rad + pos: 33.5,-6.5 + - uid: 7379 + components: + - type: Transform + parent: 1668 + rot: 3.141592653589793 rad + pos: 26.5,-9.5 - uid: 7460 components: - type: Transform @@ -48880,11 +48999,11 @@ entities: pos: -2.5,-16.5 - proto: PoweredlightBlue entities: - - uid: 1249 + - uid: 546 components: - type: Transform parent: 1668 - pos: 24.5,-15.5 + pos: 22.5,-15.5 - uid: 1252 components: - type: Transform @@ -49002,17 +49121,17 @@ entities: parent: 1668 rot: 1.5707963267948966 rad pos: 34.5,-0.5 - - uid: 547 + - uid: 545 components: - type: Transform parent: 1668 - pos: 34.5,5.5 - - uid: 548 + pos: 16.5,-21.5 + - uid: 594 components: - type: Transform parent: 1668 rot: 3.141592653589793 rad - pos: 34.5,-6.5 + pos: -11.5,5.5 - uid: 1092 components: - type: Transform @@ -49049,12 +49168,6 @@ entities: parent: 1668 rot: 3.141592653589793 rad pos: -16.5,5.5 - - uid: 2634 - components: - - type: Transform - parent: 1668 - rot: -1.5707963267948966 rad - pos: -9.5,6.5 - uid: 2715 components: - type: Transform @@ -49495,6 +49608,26 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage + - uid: 9737 + components: + - type: Transform + parent: 1668 + pos: -19.505926,13.572506 + - uid: 9738 + components: + - type: Transform + parent: 1668 + pos: -19.505926,13.572506 + - uid: 9739 + components: + - type: Transform + parent: 1668 + pos: -19.505926,13.572506 + - uid: 9740 + components: + - type: Transform + parent: 1668 + pos: -19.505926,13.572506 - proto: Railing entities: - uid: 2075 @@ -49599,6 +49732,2216 @@ entities: parent: 1668 rot: -1.5707963267948966 rad pos: -4.5,-10.5 +- proto: RegalWindow + entities: + - uid: 175 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -7.5,-15.5 + - uid: 176 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -8.5,-15.5 + - uid: 177 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -11.5,-15.5 + - uid: 179 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -10.5,-15.5 + - uid: 180 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -13.5,-15.5 + - uid: 181 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -14.5,-15.5 + - uid: 189 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -16.5,-15.5 + - uid: 192 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -17.5,-15.5 + - uid: 328 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -20.5,-15.5 + - uid: 348 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -19.5,-15.5 + - uid: 355 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -22.5,-15.5 + - uid: 366 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -23.5,-15.5 + - uid: 367 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -25.5,-15.5 + - uid: 394 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -26.5,-15.5 + - uid: 478 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -28.5,-15.5 + - uid: 479 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -29.5,-15.5 + - uid: 480 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -31.5,-15.5 + - uid: 481 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -32.5,-15.5 + - uid: 537 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -34.5,-15.5 + - uid: 538 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -35.5,-15.5 + - uid: 539 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -38.5,-15.5 + - uid: 540 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -37.5,-15.5 + - uid: 595 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 1.5,-3.5 + - uid: 596 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 2.5,-3.5 + - uid: 712 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 3.5,-2.5 + - uid: 719 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 3.5,-0.5 + - uid: 720 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 3.5,1.5 + - uid: 784 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 2.5,2.5 + - uid: 925 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 0.5,2.5 + - uid: 927 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -1.5,2.5 + - uid: 928 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -0.5,2.5 + - uid: 930 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -3.5,2.5 + - uid: 931 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -4.5,1.5 + - uid: 932 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -4.5,-0.5 + - uid: 933 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -4.5,-1.5 + - uid: 934 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -4.5,-2.5 + - uid: 1101 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -3.5,-3.5 + - uid: 1106 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -2.5,-3.5 + - uid: 1155 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 11.5,10.5 + - uid: 1162 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 24.5,7.5 + - uid: 1199 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -0.5,-3.5 + - uid: 1205 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 28.5,7.5 + - uid: 1249 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 1.5,-7.5 + - uid: 1254 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -2.5,6.5 + - uid: 1316 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 16.5,-3.5 + - uid: 1327 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 12.5,2.5 + - uid: 1352 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 14.5,-3.5 + - uid: 1353 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 14.5,2.5 + - uid: 1354 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -8.5,1.5 + - uid: 1365 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -8.5,-2.5 + - uid: 1521 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 1.5,6.5 + - uid: 1539 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 7.5,4.5 + - uid: 1550 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -2.5,-7.5 + - uid: 1555 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 12.5,-3.5 + - uid: 1556 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 16.5,2.5 + - uid: 1557 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 23.5,-29.5 + - uid: 1558 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 21.5,6.5 + - uid: 1560 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 31.5,6.5 + - uid: 1561 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 4.5,6.5 + - uid: 1562 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 5.5,6.5 + - uid: 1572 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 6.5,6.5 + - uid: 1577 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 18.5,-2.5 + - uid: 1578 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 18.5,1.5 + - uid: 1581 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 7.5,-2.5 + - uid: 1582 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 7.5,1.5 + - uid: 1583 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 7.5,-6.5 + - uid: 1584 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 7.5,-5.5 + - uid: 1585 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 7.5,-4.5 + - uid: 1586 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 22.5,-7.5 + - uid: 1590 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 21.5,-7.5 + - uid: 1593 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 20.5,-7.5 + - uid: 1605 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 27.5,-7.5 + - uid: 1608 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 25.5,-7.5 + - uid: 1609 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 24.5,-9.5 + - uid: 1685 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 24.5,-11.5 + - uid: 1731 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 24.5,-12.5 + - uid: 1733 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 27.5,-14.5 + - uid: 1749 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 26.5,-14.5 + - uid: 1769 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 25.5,-14.5 + - uid: 1770 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 35.5,-26.5 + - uid: 1771 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 35.5,-16.5 + - uid: 1862 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 27.5,-28.5 + - uid: 1863 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 25.5,-28.5 + - uid: 1912 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 35.5,-21.5 + - uid: 1913 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 35.5,-22.5 + - uid: 1917 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 33.5,-28.5 + - uid: 2137 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 32.5,-28.5 + - uid: 2139 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 31.5,-28.5 + - uid: 2140 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 35.5,-20.5 + - uid: 2143 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 2.5,7.5 + - uid: 2295 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 2.5,8.5 + - uid: 2296 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 22.5,9.5 + - uid: 2298 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 2.5,11.5 + - uid: 2322 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 2.5,12.5 + - uid: 2323 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 23.5,9.5 + - uid: 2343 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 19.5,9.5 + - uid: 2353 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 21.5,9.5 + - uid: 2354 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 20.5,9.5 + - uid: 2355 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 20.5,13.5 + - uid: 2356 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 22.5,13.5 + - uid: 2357 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 6.5,13.5 + - uid: 2440 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 4.5,13.5 + - uid: 2456 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 23.5,-32.5 + - uid: 2457 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 23.5,-30.5 + - uid: 2458 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 23.5,-31.5 + - uid: 2459 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 23.5,-33.5 + - uid: 2460 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 7.5,10.5 + - uid: 2461 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 10.5,13.5 + - uid: 2462 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 11.5,12.5 + - uid: 2634 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 17.5,13.5 + - uid: 2703 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 15.5,13.5 + - uid: 2704 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 7.5,9.5 + - uid: 2705 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 7.5,12.5 + - uid: 2706 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 11.5,11.5 + - uid: 2707 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 35.5,10.5 + - uid: 2708 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 35.5,12.5 + - uid: 2709 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 35.5,11.5 + - uid: 2710 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 22.5,23.5 + - uid: 2711 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 30.5,23.5 + - uid: 2712 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 32.5,23.5 + - uid: 2713 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 33.5,17.5 + - uid: 2714 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 32.5,19.5 + - uid: 2731 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 11.5,17.5 + - uid: 2753 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 10.5,17.5 + - uid: 2754 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 15.5,17.5 + - uid: 2755 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 16.5,17.5 + - uid: 2756 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -3.5,-45.5 + - uid: 2757 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -1.5,-45.5 + - uid: 2758 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -4.5,-45.5 + - uid: 2759 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -6.5,-36.5 + - uid: 2760 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -7.5,-36.5 + - uid: 2761 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -6.5,-30.5 + - uid: 2762 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 6.5,-36.5 + - uid: 2763 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 5.5,-36.5 + - uid: 2779 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 4.5,-36.5 + - uid: 2780 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 3.5,-36.5 + - uid: 2781 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 2.5,-36.5 + - uid: 2782 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 1.5,-36.5 + - uid: 2798 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 0.5,-36.5 + - uid: 2813 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -0.5,-36.5 + - uid: 2815 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -1.5,-36.5 + - uid: 2816 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -2.5,-36.5 + - uid: 2825 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -3.5,-36.5 + - uid: 2841 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -4.5,-36.5 + - uid: 2897 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -5.5,-36.5 + - uid: 2898 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -13.5,-3.5 + - uid: 2911 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -14.5,-3.5 + - uid: 2977 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -15.5,-3.5 + - uid: 2981 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -11.5,-3.5 + - uid: 2988 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -10.5,-3.5 + - uid: 2992 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -9.5,-3.5 + - uid: 2998 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -9.5,2.5 + - uid: 3000 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -10.5,2.5 + - uid: 3002 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -11.5,2.5 + - uid: 3004 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -13.5,2.5 + - uid: 3182 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -14.5,2.5 + - uid: 3184 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -15.5,2.5 + - uid: 3234 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -19.5,16.5 + - uid: 3266 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -19.5,15.5 + - uid: 3286 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -24.5,9.5 + - uid: 3293 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -24.5,10.5 + - uid: 3295 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -24.5,12.5 + - uid: 3297 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -24.5,13.5 + - uid: 3366 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -20.5,8.5 + - uid: 3368 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -22.5,8.5 + - uid: 3369 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 23.5,-34.5 + - uid: 3370 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -0.5,22.5 + - uid: 3372 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 4.5,17.5 + - uid: 3373 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 2.5,17.5 + - uid: 3374 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -4.5,13.5 + - uid: 3376 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -6.5,13.5 + - uid: 3377 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 4.5,22.5 + - uid: 3378 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -8.5,-4.5 + - uid: 3380 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -8.5,3.5 + - uid: 3382 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 7.5,7.5 + - uid: 3392 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -12.5,23.5 + - uid: 3393 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -4.5,23.5 + - uid: 3394 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -6.5,23.5 + - uid: 3399 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -10.5,23.5 + - uid: 3408 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -25.5,28.5 + - uid: 3410 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -26.5,27.5 + - uid: 3415 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -26.5,22.5 + - uid: 3420 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -26.5,20.5 + - uid: 3425 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -26.5,21.5 + - uid: 3440 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -26.5,25.5 + - uid: 3602 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -26.5,23.5 + - uid: 3603 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -26.5,24.5 + - uid: 3604 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -28.5,20.5 + - uid: 3605 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -24.5,28.5 + - uid: 3606 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -26.5,26.5 + - uid: 3667 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -28.5,26.5 + - uid: 3997 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -28.5,27.5 + - uid: 4001 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -28.5,25.5 + - uid: 4058 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -28.5,21.5 + - uid: 4066 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -23.5,18.5 + - uid: 4076 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -24.5,18.5 + - uid: 4102 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -25.5,18.5 + - uid: 4104 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -28.5,19.5 + - uid: 4106 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -26.5,19.5 + - uid: 4108 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 33.5,9.5 + - uid: 4109 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 32.5,9.5 + - uid: 4110 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 31.5,9.5 + - uid: 4111 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 30.5,9.5 + - uid: 4112 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 29.5,9.5 + - uid: 4113 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -6.5,17.5 + - uid: 4114 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -2.5,13.5 + - uid: 4126 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 1.5,13.5 + - uid: 4127 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -6.5,-29.5 + - uid: 4128 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 1.5,-45.5 + - uid: 4129 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -5.5,-28.5 + - uid: 4130 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -24.5,30.5 + - uid: 4131 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -24.5,29.5 + - uid: 4132 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -24.5,31.5 + - uid: 4133 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -23.5,31.5 + - uid: 4134 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -22.5,31.5 + - uid: 4135 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -21.5,31.5 + - uid: 4136 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -20.5,31.5 + - uid: 4137 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -19.5,31.5 + - uid: 4138 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -19.5,30.5 + - uid: 4139 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -19.5,29.5 + - uid: 4140 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 1.5,-29.5 + - uid: 4142 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 1.5,-30.5 + - uid: 4153 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 1.5,-31.5 + - uid: 4300 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 3.5,-31.5 + - uid: 4307 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 3.5,-30.5 + - uid: 4345 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 3.5,-29.5 + - uid: 4346 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -2.5,-29.5 + - uid: 4347 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -2.5,-30.5 + - uid: 4348 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -2.5,-31.5 + - uid: 4349 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -4.5,-31.5 + - uid: 4358 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -4.5,-30.5 + - uid: 4359 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -4.5,-29.5 + - uid: 4361 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 5.5,-30.5 + - uid: 4366 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 5.5,-29.5 + - uid: 4367 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -6.5,-31.5 + - uid: 4373 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 4.5,-28.5 + - uid: 4375 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 5.5,-31.5 + - uid: 4392 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 1.5,-24.5 + - uid: 4398 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -2.5,-24.5 + - uid: 4401 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 0.5,-45.5 + - uid: 4402 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 2.5,-45.5 + - uid: 4403 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -0.5,-45.5 + - uid: 4404 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 3.5,-45.5 + - uid: 4405 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 4.5,-45.5 + - uid: 4455 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -7.5,-45.5 + - uid: 4456 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -6.5,-45.5 + - uid: 4457 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 3.5,-50.5 + - uid: 4468 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 1.5,-50.5 + - uid: 4472 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -5.5,-45.5 + - uid: 4473 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 4.5,-50.5 + - uid: 4480 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 0.5,-50.5 + - uid: 4496 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 5.5,-45.5 + - uid: 4497 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 6.5,-45.5 + - uid: 4498 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -2.5,-45.5 + - uid: 4509 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -1.5,-50.5 + - uid: 4510 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -2.5,-50.5 + - uid: 4514 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -4.5,-50.5 + - uid: 4515 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -5.5,-50.5 + - uid: 4519 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 10.5,-49.5 + - uid: 4520 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 9.5,-49.5 + - uid: 4579 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 11.5,-49.5 + - uid: 4580 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 18.5,-45.5 + - uid: 4581 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 19.5,-42.5 + - uid: 4582 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 19.5,-44.5 + - uid: 4583 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 18.5,-46.5 + - uid: 4584 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -11.5,-49.5 + - uid: 4585 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -10.5,-49.5 + - uid: 4586 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -12.5,-49.5 + - uid: 4614 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -19.5,-45.5 + - uid: 4615 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -19.5,-46.5 + - uid: 4616 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -19.5,-40.5 + - uid: 4624 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -19.5,-41.5 + - uid: 4680 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -19.5,-35.5 + - uid: 4682 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -19.5,-36.5 + - uid: 4689 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 19.5,-39.5 + - uid: 4690 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 19.5,-37.5 + - uid: 4691 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 18.5,-36.5 + - uid: 4692 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 18.5,-35.5 + - uid: 4693 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -20.5,-44.5 + - uid: 4694 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -20.5,-42.5 + - uid: 4700 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -20.5,-39.5 + - uid: 4701 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -20.5,-37.5 + - uid: 4702 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -14.5,-38.5 + - uid: 4703 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -14.5,-41.5 + - uid: 4795 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -14.5,-39.5 + - uid: 4796 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -14.5,-40.5 + - uid: 5321 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -14.5,-42.5 + - uid: 5386 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -14.5,-43.5 + - uid: 5391 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 13.5,-43.5 + - uid: 5397 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 13.5,-42.5 + - uid: 5554 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 13.5,-41.5 + - uid: 5555 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 13.5,-40.5 + - uid: 5556 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 13.5,-39.5 + - uid: 5557 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 13.5,-38.5 + - uid: 5558 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 30.5,6.5 + - uid: 5559 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 22.5,6.5 + - uid: 5560 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 20.5,6.5 + - uid: 5561 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 32.5,6.5 + - uid: 5615 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -4.5,-24.5 + - uid: 5616 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -6.5,-24.5 + - uid: 5617 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -8.5,-24.5 + - uid: 5618 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -10.5,-24.5 + - uid: 5625 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -12.5,-24.5 + - uid: 5626 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -14.5,-24.5 + - uid: 5627 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -16.5,-24.5 + - uid: 5628 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -18.5,-24.5 + - uid: 5913 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -20.5,-28.5 + - uid: 5914 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -22.5,-28.5 + - uid: 5915 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -24.5,-28.5 + - uid: 5916 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -26.5,-28.5 + - uid: 5998 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -26.5,-24.5 + - uid: 6002 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -24.5,-24.5 + - uid: 6014 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -22.5,-24.5 + - uid: 6015 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -20.5,-24.5 + - uid: 6016 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -24.5,4.5 + - uid: 6017 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -29.5,7.5 + - uid: 6048 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -29.5,4.5 + - uid: 6049 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -24.5,7.5 + - uid: 6050 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -25.5,2.5 + - uid: 6051 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -27.5,2.5 + - uid: 6052 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -28.5,2.5 + - uid: 6053 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -26.5,2.5 + - uid: 6054 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -29.5,9.5 + - uid: 6055 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -29.5,10.5 + - uid: 6077 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -29.5,12.5 + - uid: 6078 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -29.5,13.5 + - uid: 6080 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -52.5,1.5 + - uid: 6088 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -48.5,-8.5 + - uid: 6089 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -50.5,-8.5 + - uid: 6090 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -49.5,-8.5 + - uid: 6188 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -44.5,2.5 + - uid: 6643 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -42.5,2.5 + - uid: 6644 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -50.5,-3.5 + - uid: 6645 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -48.5,-3.5 + - uid: 6646 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -43.5,7.5 + - uid: 6647 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -42.5,7.5 + - uid: 6648 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -44.5,7.5 + - uid: 6649 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -49.5,7.5 + - uid: 6650 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -48.5,7.5 + - uid: 6918 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -50.5,7.5 + - uid: 6919 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -55.5,-2.5 + - uid: 6932 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -52.5,-2.5 + - uid: 6933 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -55.5,1.5 + - uid: 6934 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -50.5,2.5 + - uid: 6935 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -48.5,2.5 + - uid: 6936 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -31.5,8.5 + - uid: 6954 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -33.5,8.5 + - uid: 7108 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -28.5,-28.5 + - uid: 7109 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -30.5,-28.5 + - uid: 7110 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -28.5,-24.5 + - uid: 7120 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -30.5,-24.5 + - uid: 7121 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -32.5,-28.5 + - uid: 7123 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -34.5,-28.5 + - uid: 7124 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -36.5,-28.5 + - uid: 7133 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -38.5,-28.5 + - uid: 7134 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -38.5,-24.5 + - uid: 7135 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -36.5,-24.5 + - uid: 7143 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -34.5,-24.5 + - uid: 7144 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -32.5,-24.5 + - uid: 7145 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -25.5,8.5 + - uid: 7152 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -26.5,8.5 + - uid: 7154 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -27.5,8.5 + - uid: 7161 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -28.5,8.5 + - uid: 7239 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 22.5,-34.5 + - uid: 7241 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 21.5,-34.5 + - uid: 7323 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 21.5,-28.5 + - uid: 7324 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: -36.5,-3.5 + - uid: 7374 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 26.5,-28.5 - proto: RegenerativeMesh entities: - uid: 6854 @@ -49651,625 +51994,6 @@ entities: pos: 16.5,21.5 - proto: ReinforcedWindow entities: - - uid: 50 - components: - - type: Transform - parent: 1668 - pos: 1.5,-3.5 - - uid: 51 - components: - - type: Transform - parent: 1668 - pos: 2.5,-3.5 - - uid: 52 - components: - - type: Transform - parent: 1668 - pos: 3.5,-2.5 - - uid: 54 - components: - - type: Transform - parent: 1668 - pos: 3.5,-0.5 - - uid: 55 - components: - - type: Transform - parent: 1668 - pos: 3.5,1.5 - - uid: 57 - components: - - type: Transform - parent: 1668 - pos: 2.5,2.5 - - uid: 58 - components: - - type: Transform - parent: 1668 - pos: 0.5,2.5 - - uid: 59 - components: - - type: Transform - parent: 1668 - pos: -1.5,2.5 - - uid: 60 - components: - - type: Transform - parent: 1668 - pos: -0.5,2.5 - - uid: 61 - components: - - type: Transform - parent: 1668 - pos: -3.5,2.5 - - uid: 63 - components: - - type: Transform - parent: 1668 - pos: -4.5,1.5 - - uid: 64 - components: - - type: Transform - parent: 1668 - pos: -4.5,-0.5 - - uid: 65 - components: - - type: Transform - parent: 1668 - pos: -4.5,-1.5 - - uid: 66 - components: - - type: Transform - parent: 1668 - pos: -4.5,-2.5 - - uid: 67 - components: - - type: Transform - parent: 1668 - pos: -3.5,-3.5 - - uid: 68 - components: - - type: Transform - parent: 1668 - pos: -2.5,-3.5 - - uid: 82 - components: - - type: Transform - parent: 1668 - pos: 11.5,10.5 - - uid: 86 - components: - - type: Transform - parent: 1668 - pos: 24.5,7.5 - - uid: 143 - components: - - type: Transform - parent: 1668 - pos: -0.5,-3.5 - - uid: 145 - components: - - type: Transform - parent: 1668 - pos: 28.5,7.5 - - uid: 162 - components: - - type: Transform - parent: 1668 - pos: 1.5,-7.5 - - uid: 169 - components: - - type: Transform - parent: 1668 - pos: -2.5,6.5 - - uid: 170 - components: - - type: Transform - parent: 1668 - pos: 16.5,-3.5 - - uid: 171 - components: - - type: Transform - parent: 1668 - pos: 12.5,2.5 - - uid: 174 - components: - - type: Transform - parent: 1668 - pos: 14.5,-3.5 - - uid: 175 - components: - - type: Transform - parent: 1668 - pos: 14.5,2.5 - - uid: 176 - components: - - type: Transform - parent: 1668 - pos: -8.5,1.5 - - uid: 177 - components: - - type: Transform - parent: 1668 - pos: -8.5,-2.5 - - uid: 179 - components: - - type: Transform - parent: 1668 - pos: 1.5,6.5 - - uid: 180 - components: - - type: Transform - parent: 1668 - pos: 7.5,4.5 - - uid: 181 - components: - - type: Transform - parent: 1668 - pos: -2.5,-7.5 - - uid: 189 - components: - - type: Transform - parent: 1668 - pos: 12.5,-3.5 - - uid: 192 - components: - - type: Transform - parent: 1668 - pos: 16.5,2.5 - - uid: 328 - components: - - type: Transform - parent: 1668 - pos: 23.5,-29.5 - - uid: 348 - components: - - type: Transform - parent: 1668 - pos: 21.5,6.5 - - uid: 355 - components: - - type: Transform - parent: 1668 - pos: 31.5,6.5 - - uid: 366 - components: - - type: Transform - parent: 1668 - pos: 4.5,6.5 - - uid: 367 - components: - - type: Transform - parent: 1668 - pos: 5.5,6.5 - - uid: 394 - components: - - type: Transform - parent: 1668 - pos: 6.5,6.5 - - uid: 478 - components: - - type: Transform - parent: 1668 - pos: 18.5,-2.5 - - uid: 479 - components: - - type: Transform - parent: 1668 - pos: 18.5,1.5 - - uid: 480 - components: - - type: Transform - parent: 1668 - pos: 7.5,-2.5 - - uid: 481 - components: - - type: Transform - parent: 1668 - pos: 7.5,1.5 - - uid: 594 - components: - - type: Transform - parent: 1668 - pos: 7.5,-6.5 - - uid: 595 - components: - - type: Transform - parent: 1668 - pos: 7.5,-5.5 - - uid: 596 - components: - - type: Transform - parent: 1668 - pos: 7.5,-4.5 - - uid: 712 - components: - - type: Transform - parent: 1668 - pos: 22.5,-7.5 - - uid: 719 - components: - - type: Transform - parent: 1668 - pos: 21.5,-7.5 - - uid: 720 - components: - - type: Transform - parent: 1668 - pos: 20.5,-7.5 - - uid: 925 - components: - - type: Transform - parent: 1668 - pos: 27.5,-7.5 - - uid: 927 - components: - - type: Transform - parent: 1668 - pos: 25.5,-7.5 - - uid: 928 - components: - - type: Transform - parent: 1668 - pos: 24.5,-9.5 - - uid: 930 - components: - - type: Transform - parent: 1668 - pos: 24.5,-11.5 - - uid: 931 - components: - - type: Transform - parent: 1668 - pos: 24.5,-12.5 - - uid: 932 - components: - - type: Transform - parent: 1668 - pos: 27.5,-14.5 - - uid: 933 - components: - - type: Transform - parent: 1668 - pos: 26.5,-14.5 - - uid: 934 - components: - - type: Transform - parent: 1668 - pos: 25.5,-14.5 - - uid: 1106 - components: - - type: Transform - parent: 1668 - pos: 35.5,-26.5 - - uid: 1162 - components: - - type: Transform - parent: 1668 - pos: 35.5,-16.5 - - uid: 1199 - components: - - type: Transform - parent: 1668 - pos: 27.5,-28.5 - - uid: 1205 - components: - - type: Transform - parent: 1668 - pos: 25.5,-28.5 - - uid: 1254 - components: - - type: Transform - parent: 1668 - pos: 35.5,-21.5 - - uid: 1316 - components: - - type: Transform - parent: 1668 - pos: 35.5,-22.5 - - uid: 1352 - components: - - type: Transform - parent: 1668 - pos: 33.5,-28.5 - - uid: 1353 - components: - - type: Transform - parent: 1668 - pos: 32.5,-28.5 - - uid: 1354 - components: - - type: Transform - parent: 1668 - pos: 31.5,-28.5 - - uid: 1365 - components: - - type: Transform - parent: 1668 - pos: 35.5,-20.5 - - uid: 1521 - components: - - type: Transform - parent: 1668 - pos: 2.5,7.5 - - uid: 1539 - components: - - type: Transform - parent: 1668 - pos: 2.5,8.5 - - uid: 1550 - components: - - type: Transform - parent: 1668 - pos: 22.5,9.5 - - uid: 1555 - components: - - type: Transform - parent: 1668 - pos: 2.5,11.5 - - uid: 1556 - components: - - type: Transform - parent: 1668 - pos: 2.5,12.5 - - uid: 1557 - components: - - type: Transform - parent: 1668 - pos: 23.5,9.5 - - uid: 1558 - components: - - type: Transform - parent: 1668 - pos: 19.5,9.5 - - uid: 1560 - components: - - type: Transform - parent: 1668 - pos: 21.5,9.5 - - uid: 1561 - components: - - type: Transform - parent: 1668 - pos: 20.5,9.5 - - uid: 1562 - components: - - type: Transform - parent: 1668 - pos: 20.5,13.5 - - uid: 1572 - components: - - type: Transform - parent: 1668 - pos: 22.5,13.5 - - uid: 1577 - components: - - type: Transform - parent: 1668 - pos: 6.5,13.5 - - uid: 1578 - components: - - type: Transform - parent: 1668 - pos: 4.5,13.5 - - uid: 1581 - components: - - type: Transform - parent: 1668 - pos: 23.5,-32.5 - - uid: 1582 - components: - - type: Transform - parent: 1668 - pos: 23.5,-30.5 - - uid: 1585 - components: - - type: Transform - parent: 1668 - pos: 23.5,-31.5 - - uid: 1586 - components: - - type: Transform - parent: 1668 - pos: 23.5,-33.5 - - uid: 1590 - components: - - type: Transform - parent: 1668 - rot: 1.5707963267948966 rad - pos: 7.5,10.5 - - uid: 1593 - components: - - type: Transform - parent: 1668 - rot: 3.141592653589793 rad - pos: 10.5,13.5 - - uid: 1605 - components: - - type: Transform - parent: 1668 - pos: 11.5,12.5 - - uid: 1608 - components: - - type: Transform - parent: 1668 - pos: 17.5,13.5 - - uid: 1609 - components: - - type: Transform - parent: 1668 - pos: 15.5,13.5 - - uid: 1685 - components: - - type: Transform - parent: 1668 - rot: 1.5707963267948966 rad - pos: 7.5,9.5 - - uid: 1733 - components: - - type: Transform - parent: 1668 - rot: 1.5707963267948966 rad - pos: 7.5,12.5 - - uid: 1749 - components: - - type: Transform - parent: 1668 - pos: 11.5,11.5 - - uid: 1769 - components: - - type: Transform - parent: 1668 - pos: 35.5,10.5 - - uid: 1770 - components: - - type: Transform - parent: 1668 - pos: 35.5,12.5 - - uid: 1771 - components: - - type: Transform - parent: 1668 - pos: 35.5,11.5 - - uid: 1862 - components: - - type: Transform - parent: 1668 - pos: 22.5,23.5 - - uid: 1863 - components: - - type: Transform - parent: 1668 - pos: 30.5,23.5 - - uid: 1912 - components: - - type: Transform - parent: 1668 - pos: 32.5,23.5 - - uid: 1913 - components: - - type: Transform - parent: 1668 - pos: 33.5,17.5 - - uid: 1917 - components: - - type: Transform - parent: 1668 - pos: 32.5,19.5 - - uid: 2137 - components: - - type: Transform - parent: 1668 - pos: 11.5,17.5 - - uid: 2139 - components: - - type: Transform - parent: 1668 - pos: 10.5,17.5 - - uid: 2140 - components: - - type: Transform - parent: 1668 - pos: 15.5,17.5 - - uid: 2143 - components: - - type: Transform - parent: 1668 - pos: 16.5,17.5 - - uid: 2295 - components: - - type: Transform - parent: 1668 - pos: -3.5,-45.5 - - uid: 2296 - components: - - type: Transform - parent: 1668 - pos: -1.5,-45.5 - - uid: 2298 - components: - - type: Transform - parent: 1668 - pos: -4.5,-45.5 - - uid: 2322 - components: - - type: Transform - parent: 1668 - pos: -6.5,-36.5 - - uid: 2323 - components: - - type: Transform - parent: 1668 - pos: -7.5,-36.5 - - uid: 2343 - components: - - type: Transform - parent: 1668 - pos: -6.5,-30.5 - - uid: 2353 - components: - - type: Transform - parent: 1668 - pos: 6.5,-36.5 - - uid: 2354 - components: - - type: Transform - parent: 1668 - pos: 5.5,-36.5 - - uid: 2355 - components: - - type: Transform - parent: 1668 - pos: 4.5,-36.5 - - uid: 2356 - components: - - type: Transform - parent: 1668 - pos: 3.5,-36.5 - - uid: 2357 - components: - - type: Transform - parent: 1668 - pos: 2.5,-36.5 - - uid: 2440 - components: - - type: Transform - parent: 1668 - pos: 1.5,-36.5 - - uid: 2456 - components: - - type: Transform - parent: 1668 - pos: 0.5,-36.5 - - uid: 2457 - components: - - type: Transform - parent: 1668 - pos: -0.5,-36.5 - - uid: 2458 - components: - - type: Transform - parent: 1668 - pos: -1.5,-36.5 - - uid: 2459 - components: - - type: Transform - parent: 1668 - pos: -2.5,-36.5 - - uid: 2460 - components: - - type: Transform - parent: 1668 - pos: -3.5,-36.5 - - uid: 2461 - components: - - type: Transform - parent: 1668 - pos: -4.5,-36.5 - - uid: 2462 - components: - - type: Transform - parent: 1668 - pos: -5.5,-36.5 - uid: 2531 components: - type: Transform @@ -50285,304 +52009,6 @@ entities: - type: Transform parent: 1668 pos: 6.5,36.5 - - uid: 2703 - components: - - type: Transform - parent: 1668 - pos: -13.5,-3.5 - - uid: 2704 - components: - - type: Transform - parent: 1668 - pos: -14.5,-3.5 - - uid: 2705 - components: - - type: Transform - parent: 1668 - pos: -15.5,-3.5 - - uid: 2706 - components: - - type: Transform - parent: 1668 - pos: -11.5,-3.5 - - uid: 2707 - components: - - type: Transform - parent: 1668 - pos: -10.5,-3.5 - - uid: 2708 - components: - - type: Transform - parent: 1668 - pos: -9.5,-3.5 - - uid: 2709 - components: - - type: Transform - parent: 1668 - pos: -9.5,2.5 - - uid: 2710 - components: - - type: Transform - parent: 1668 - pos: -10.5,2.5 - - uid: 2711 - components: - - type: Transform - parent: 1668 - pos: -11.5,2.5 - - uid: 2712 - components: - - type: Transform - parent: 1668 - pos: -13.5,2.5 - - uid: 2713 - components: - - type: Transform - parent: 1668 - pos: -14.5,2.5 - - uid: 2714 - components: - - type: Transform - parent: 1668 - pos: -15.5,2.5 - - uid: 2754 - components: - - type: Transform - parent: 1668 - pos: -19.5,16.5 - - uid: 2755 - components: - - type: Transform - parent: 1668 - pos: -19.5,15.5 - - uid: 2779 - components: - - type: Transform - parent: 1668 - pos: -24.5,9.5 - - uid: 2780 - components: - - type: Transform - parent: 1668 - pos: -24.5,10.5 - - uid: 2781 - components: - - type: Transform - parent: 1668 - pos: -24.5,12.5 - - uid: 2782 - components: - - type: Transform - parent: 1668 - pos: -24.5,13.5 - - uid: 2897 - components: - - type: Transform - parent: 1668 - pos: -20.5,8.5 - - uid: 2898 - components: - - type: Transform - parent: 1668 - pos: -22.5,8.5 - - uid: 2981 - components: - - type: Transform - parent: 1668 - pos: 23.5,-34.5 - - uid: 2988 - components: - - type: Transform - parent: 1668 - pos: -0.5,22.5 - - uid: 2998 - components: - - type: Transform - parent: 1668 - rot: 3.141592653589793 rad - pos: 4.5,17.5 - - uid: 3000 - components: - - type: Transform - parent: 1668 - rot: 3.141592653589793 rad - pos: 2.5,17.5 - - uid: 3002 - components: - - type: Transform - parent: 1668 - pos: -4.5,13.5 - - uid: 3004 - components: - - type: Transform - parent: 1668 - pos: -6.5,13.5 - - uid: 3182 - components: - - type: Transform - parent: 1668 - pos: 4.5,22.5 - - uid: 3184 - components: - - type: Transform - parent: 1668 - pos: -8.5,-4.5 - - uid: 3234 - components: - - type: Transform - parent: 1668 - pos: -8.5,3.5 - - uid: 3266 - components: - - type: Transform - parent: 1668 - rot: 1.5707963267948966 rad - pos: 7.5,7.5 - - uid: 3286 - components: - - type: Transform - parent: 1668 - pos: -12.5,23.5 - - uid: 3293 - components: - - type: Transform - parent: 1668 - pos: -4.5,23.5 - - uid: 3295 - components: - - type: Transform - parent: 1668 - pos: -6.5,23.5 - - uid: 3297 - components: - - type: Transform - parent: 1668 - pos: -10.5,23.5 - - uid: 3366 - components: - - type: Transform - parent: 1668 - pos: -25.5,28.5 - - uid: 3369 - components: - - type: Transform - parent: 1668 - pos: -26.5,27.5 - - uid: 3370 - components: - - type: Transform - parent: 1668 - pos: -26.5,22.5 - - uid: 3372 - components: - - type: Transform - parent: 1668 - pos: -26.5,20.5 - - uid: 3373 - components: - - type: Transform - parent: 1668 - pos: -26.5,21.5 - - uid: 3374 - components: - - type: Transform - parent: 1668 - pos: -26.5,25.5 - - uid: 3376 - components: - - type: Transform - parent: 1668 - pos: -26.5,23.5 - - uid: 3377 - components: - - type: Transform - parent: 1668 - pos: -26.5,24.5 - - uid: 3378 - components: - - type: Transform - parent: 1668 - pos: -28.5,20.5 - - uid: 3380 - components: - - type: Transform - parent: 1668 - pos: -24.5,28.5 - - uid: 3382 - components: - - type: Transform - parent: 1668 - pos: -26.5,26.5 - - uid: 3392 - components: - - type: Transform - parent: 1668 - pos: -28.5,26.5 - - uid: 3393 - components: - - type: Transform - parent: 1668 - pos: -28.5,27.5 - - uid: 3394 - components: - - type: Transform - parent: 1668 - pos: -28.5,25.5 - - uid: 3399 - components: - - type: Transform - parent: 1668 - pos: -28.5,21.5 - - uid: 3408 - components: - - type: Transform - parent: 1668 - pos: -23.5,18.5 - - uid: 3410 - components: - - type: Transform - parent: 1668 - pos: -24.5,18.5 - - uid: 3415 - components: - - type: Transform - parent: 1668 - pos: -25.5,18.5 - - uid: 3425 - components: - - type: Transform - parent: 1668 - pos: -28.5,19.5 - - uid: 3440 - components: - - type: Transform - parent: 1668 - pos: -26.5,19.5 - - uid: 3602 - components: - - type: Transform - parent: 1668 - pos: 33.5,9.5 - - uid: 3603 - components: - - type: Transform - parent: 1668 - pos: 32.5,9.5 - - uid: 3604 - components: - - type: Transform - parent: 1668 - pos: 31.5,9.5 - - uid: 3605 - components: - - type: Transform - parent: 1668 - pos: 30.5,9.5 - - uid: 3606 - components: - - type: Transform - parent: 1668 - pos: 29.5,9.5 - uid: 3615 components: - type: Transform @@ -50618,11 +52044,6 @@ entities: - type: Transform parent: 1668 pos: -0.5,33.5 - - uid: 3667 - components: - - type: Transform - parent: 1668 - pos: -6.5,17.5 - uid: 3882 components: - type: Transform @@ -50633,303 +52054,6 @@ entities: - type: Transform parent: 1668 pos: -3.5,30.5 - - uid: 3997 - components: - - type: Transform - parent: 1668 - rot: 3.141592653589793 rad - pos: -2.5,13.5 - - uid: 4001 - components: - - type: Transform - parent: 1668 - rot: 3.141592653589793 rad - pos: 1.5,13.5 - - uid: 4058 - components: - - type: Transform - parent: 1668 - pos: -6.5,-29.5 - - uid: 4066 - components: - - type: Transform - parent: 1668 - pos: 1.5,-45.5 - - uid: 4076 - components: - - type: Transform - parent: 1668 - pos: -5.5,-28.5 - - uid: 4102 - components: - - type: Transform - parent: 1668 - pos: -24.5,30.5 - - uid: 4104 - components: - - type: Transform - parent: 1668 - pos: -24.5,29.5 - - uid: 4106 - components: - - type: Transform - parent: 1668 - pos: -24.5,31.5 - - uid: 4108 - components: - - type: Transform - parent: 1668 - pos: -23.5,31.5 - - uid: 4109 - components: - - type: Transform - parent: 1668 - pos: -22.5,31.5 - - uid: 4110 - components: - - type: Transform - parent: 1668 - pos: -21.5,31.5 - - uid: 4111 - components: - - type: Transform - parent: 1668 - pos: -20.5,31.5 - - uid: 4112 - components: - - type: Transform - parent: 1668 - pos: -19.5,31.5 - - uid: 4113 - components: - - type: Transform - parent: 1668 - pos: -19.5,30.5 - - uid: 4114 - components: - - type: Transform - parent: 1668 - pos: -19.5,29.5 - - uid: 4126 - components: - - type: Transform - parent: 1668 - pos: 1.5,-29.5 - - uid: 4127 - components: - - type: Transform - parent: 1668 - pos: 1.5,-30.5 - - uid: 4128 - components: - - type: Transform - parent: 1668 - pos: 1.5,-31.5 - - uid: 4129 - components: - - type: Transform - parent: 1668 - pos: 3.5,-31.5 - - uid: 4130 - components: - - type: Transform - parent: 1668 - pos: 3.5,-30.5 - - uid: 4131 - components: - - type: Transform - parent: 1668 - pos: 3.5,-29.5 - - uid: 4132 - components: - - type: Transform - parent: 1668 - pos: -2.5,-29.5 - - uid: 4133 - components: - - type: Transform - parent: 1668 - pos: -2.5,-30.5 - - uid: 4134 - components: - - type: Transform - parent: 1668 - pos: -2.5,-31.5 - - uid: 4135 - components: - - type: Transform - parent: 1668 - pos: -4.5,-31.5 - - uid: 4136 - components: - - type: Transform - parent: 1668 - pos: -4.5,-30.5 - - uid: 4137 - components: - - type: Transform - parent: 1668 - pos: -4.5,-29.5 - - uid: 4138 - components: - - type: Transform - parent: 1668 - pos: 5.5,-30.5 - - uid: 4139 - components: - - type: Transform - parent: 1668 - pos: 5.5,-29.5 - - uid: 4140 - components: - - type: Transform - parent: 1668 - pos: -6.5,-31.5 - - uid: 4142 - components: - - type: Transform - parent: 1668 - pos: 4.5,-28.5 - - uid: 4153 - components: - - type: Transform - parent: 1668 - pos: 5.5,-31.5 - - uid: 4300 - components: - - type: Transform - parent: 1668 - pos: 1.5,-24.5 - - uid: 4307 - components: - - type: Transform - parent: 1668 - pos: -2.5,-24.5 - - uid: 4345 - components: - - type: Transform - parent: 1668 - pos: 0.5,-45.5 - - uid: 4346 - components: - - type: Transform - parent: 1668 - pos: 2.5,-45.5 - - uid: 4347 - components: - - type: Transform - parent: 1668 - pos: -0.5,-45.5 - - uid: 4348 - components: - - type: Transform - parent: 1668 - pos: 3.5,-45.5 - - uid: 4349 - components: - - type: Transform - parent: 1668 - pos: 4.5,-45.5 - - uid: 4358 - components: - - type: Transform - parent: 1668 - pos: -7.5,-45.5 - - uid: 4359 - components: - - type: Transform - parent: 1668 - pos: -6.5,-45.5 - - uid: 4361 - components: - - type: Transform - parent: 1668 - pos: 3.5,-50.5 - - uid: 4366 - components: - - type: Transform - parent: 1668 - pos: 1.5,-50.5 - - uid: 4367 - components: - - type: Transform - parent: 1668 - pos: -5.5,-45.5 - - uid: 4373 - components: - - type: Transform - parent: 1668 - pos: 4.5,-50.5 - - uid: 4375 - components: - - type: Transform - parent: 1668 - pos: 0.5,-50.5 - - uid: 4392 - components: - - type: Transform - parent: 1668 - pos: 5.5,-45.5 - - uid: 4398 - components: - - type: Transform - parent: 1668 - pos: 6.5,-45.5 - - uid: 4401 - components: - - type: Transform - parent: 1668 - pos: -2.5,-45.5 - - uid: 4402 - components: - - type: Transform - parent: 1668 - pos: -1.5,-50.5 - - uid: 4403 - components: - - type: Transform - parent: 1668 - pos: -2.5,-50.5 - - uid: 4404 - components: - - type: Transform - parent: 1668 - pos: -4.5,-50.5 - - uid: 4405 - components: - - type: Transform - parent: 1668 - pos: -5.5,-50.5 - - uid: 4455 - components: - - type: Transform - parent: 1668 - pos: 10.5,-49.5 - - uid: 4456 - components: - - type: Transform - parent: 1668 - pos: 9.5,-49.5 - - uid: 4457 - components: - - type: Transform - parent: 1668 - pos: 11.5,-49.5 - - uid: 4468 - components: - - type: Transform - parent: 1668 - pos: 18.5,-45.5 - - uid: 4472 - components: - - type: Transform - parent: 1668 - pos: 19.5,-42.5 - - uid: 4473 - components: - - type: Transform - parent: 1668 - pos: 19.5,-44.5 - uid: 4477 components: - type: Transform @@ -50940,439 +52064,11 @@ entities: - type: Transform parent: 1668 pos: 18.5,-40.5 - - uid: 4480 - components: - - type: Transform - parent: 1668 - pos: 18.5,-46.5 - - uid: 4496 - components: - - type: Transform - parent: 1668 - pos: -11.5,-49.5 - - uid: 4497 - components: - - type: Transform - parent: 1668 - pos: -10.5,-49.5 - - uid: 4498 - components: - - type: Transform - parent: 1668 - pos: -12.5,-49.5 - - uid: 4509 - components: - - type: Transform - parent: 1668 - pos: -19.5,-45.5 - - uid: 4510 - components: - - type: Transform - parent: 1668 - pos: -19.5,-46.5 - - uid: 4514 - components: - - type: Transform - parent: 1668 - pos: -19.5,-40.5 - - uid: 4515 - components: - - type: Transform - parent: 1668 - pos: -19.5,-41.5 - - uid: 4519 - components: - - type: Transform - parent: 1668 - pos: -19.5,-35.5 - - uid: 4520 - components: - - type: Transform - parent: 1668 - pos: -19.5,-36.5 - - uid: 4579 - components: - - type: Transform - parent: 1668 - pos: 19.5,-39.5 - - uid: 4580 - components: - - type: Transform - parent: 1668 - pos: 19.5,-37.5 - - uid: 4581 - components: - - type: Transform - parent: 1668 - pos: 18.5,-36.5 - - uid: 4582 - components: - - type: Transform - parent: 1668 - pos: 18.5,-35.5 - - uid: 4583 - components: - - type: Transform - parent: 1668 - pos: -20.5,-44.5 - - uid: 4584 - components: - - type: Transform - parent: 1668 - pos: -20.5,-42.5 - - uid: 4585 - components: - - type: Transform - parent: 1668 - pos: -20.5,-39.5 - - uid: 4586 - components: - - type: Transform - parent: 1668 - pos: -20.5,-37.5 - - uid: 4680 - components: - - type: Transform - parent: 1668 - pos: -14.5,-38.5 - - uid: 4682 - components: - - type: Transform - parent: 1668 - pos: -14.5,-41.5 - - uid: 4689 - components: - - type: Transform - parent: 1668 - pos: -14.5,-39.5 - - uid: 4690 - components: - - type: Transform - parent: 1668 - pos: -14.5,-40.5 - - uid: 4691 - components: - - type: Transform - parent: 1668 - pos: -14.5,-42.5 - - uid: 4692 - components: - - type: Transform - parent: 1668 - pos: -14.5,-43.5 - - uid: 4693 - components: - - type: Transform - parent: 1668 - pos: 13.5,-43.5 - - uid: 4694 - components: - - type: Transform - parent: 1668 - pos: 13.5,-42.5 - - uid: 4700 - components: - - type: Transform - parent: 1668 - pos: 13.5,-41.5 - - uid: 4701 - components: - - type: Transform - parent: 1668 - pos: 13.5,-40.5 - - uid: 4702 - components: - - type: Transform - parent: 1668 - pos: 13.5,-39.5 - - uid: 4703 - components: - - type: Transform - parent: 1668 - pos: 13.5,-38.5 - - uid: 5321 - components: - - type: Transform - parent: 1668 - pos: 30.5,6.5 - - uid: 5386 - components: - - type: Transform - parent: 1668 - pos: 22.5,6.5 - - uid: 5391 - components: - - type: Transform - parent: 1668 - pos: 20.5,6.5 - - uid: 5397 - components: - - type: Transform - parent: 1668 - pos: 32.5,6.5 - - uid: 5554 - components: - - type: Transform - parent: 1668 - pos: -4.5,-24.5 - - uid: 5555 - components: - - type: Transform - parent: 1668 - pos: -6.5,-24.5 - - uid: 5556 - components: - - type: Transform - parent: 1668 - pos: -8.5,-24.5 - - uid: 5557 - components: - - type: Transform - parent: 1668 - pos: -10.5,-24.5 - - uid: 5558 - components: - - type: Transform - parent: 1668 - pos: -12.5,-24.5 - - uid: 5559 - components: - - type: Transform - parent: 1668 - pos: -14.5,-24.5 - - uid: 5560 - components: - - type: Transform - parent: 1668 - pos: -16.5,-24.5 - - uid: 5561 - components: - - type: Transform - parent: 1668 - pos: -18.5,-24.5 - - uid: 5615 - components: - - type: Transform - parent: 1668 - pos: -20.5,-28.5 - - uid: 5616 - components: - - type: Transform - parent: 1668 - pos: -22.5,-28.5 - - uid: 5617 - components: - - type: Transform - parent: 1668 - pos: -24.5,-28.5 - - uid: 5618 - components: - - type: Transform - parent: 1668 - pos: -26.5,-28.5 - - uid: 5625 - components: - - type: Transform - parent: 1668 - pos: -26.5,-24.5 - - uid: 5626 - components: - - type: Transform - parent: 1668 - pos: -24.5,-24.5 - - uid: 5627 - components: - - type: Transform - parent: 1668 - pos: -22.5,-24.5 - - uid: 5628 - components: - - type: Transform - parent: 1668 - pos: -20.5,-24.5 - uid: 5666 components: - type: Transform parent: 1668 pos: -40.5,-24.5 - - uid: 5913 - components: - - type: Transform - parent: 1668 - pos: -24.5,4.5 - - uid: 5914 - components: - - type: Transform - parent: 1668 - pos: -29.5,7.5 - - uid: 5915 - components: - - type: Transform - parent: 1668 - pos: -29.5,4.5 - - uid: 5916 - components: - - type: Transform - parent: 1668 - pos: -24.5,7.5 - - uid: 6014 - components: - - type: Transform - parent: 1668 - rot: -1.5707963267948966 rad - pos: -25.5,2.5 - - uid: 6015 - components: - - type: Transform - parent: 1668 - rot: -1.5707963267948966 rad - pos: -27.5,2.5 - - uid: 6016 - components: - - type: Transform - parent: 1668 - rot: -1.5707963267948966 rad - pos: -28.5,2.5 - - uid: 6017 - components: - - type: Transform - parent: 1668 - rot: -1.5707963267948966 rad - pos: -26.5,2.5 - - uid: 6933 - components: - - type: Transform - parent: 1668 - pos: -29.5,9.5 - - uid: 6934 - components: - - type: Transform - parent: 1668 - pos: -29.5,10.5 - - uid: 6935 - components: - - type: Transform - parent: 1668 - pos: -29.5,12.5 - - uid: 6936 - components: - - type: Transform - parent: 1668 - pos: -29.5,13.5 - - uid: 6954 - components: - - type: Transform - parent: 1668 - pos: -52.5,1.5 - - uid: 7108 - components: - - type: Transform - parent: 1668 - rot: 1.5707963267948966 rad - pos: -48.5,-8.5 - - uid: 7109 - components: - - type: Transform - parent: 1668 - rot: 1.5707963267948966 rad - pos: -50.5,-8.5 - - uid: 7110 - components: - - type: Transform - parent: 1668 - rot: 1.5707963267948966 rad - pos: -49.5,-8.5 - - uid: 7120 - components: - - type: Transform - parent: 1668 - pos: -44.5,2.5 - - uid: 7121 - components: - - type: Transform - parent: 1668 - pos: -42.5,2.5 - - uid: 7123 - components: - - type: Transform - parent: 1668 - pos: -50.5,-3.5 - - uid: 7124 - components: - - type: Transform - parent: 1668 - pos: -48.5,-3.5 - - uid: 7133 - components: - - type: Transform - parent: 1668 - rot: 1.5707963267948966 rad - pos: -43.5,7.5 - - uid: 7134 - components: - - type: Transform - parent: 1668 - rot: 1.5707963267948966 rad - pos: -42.5,7.5 - - uid: 7135 - components: - - type: Transform - parent: 1668 - rot: 1.5707963267948966 rad - pos: -44.5,7.5 - - uid: 7143 - components: - - type: Transform - parent: 1668 - rot: 1.5707963267948966 rad - pos: -49.5,7.5 - - uid: 7144 - components: - - type: Transform - parent: 1668 - rot: 1.5707963267948966 rad - pos: -48.5,7.5 - - uid: 7145 - components: - - type: Transform - parent: 1668 - rot: 1.5707963267948966 rad - pos: -50.5,7.5 - - uid: 7152 - components: - - type: Transform - parent: 1668 - pos: -55.5,-2.5 - - uid: 7154 - components: - - type: Transform - parent: 1668 - pos: -52.5,-2.5 - - uid: 7161 - components: - - type: Transform - parent: 1668 - pos: -55.5,1.5 - - uid: 7239 - components: - - type: Transform - parent: 1668 - pos: -50.5,2.5 - - uid: 7241 - components: - - type: Transform - parent: 1668 - pos: -48.5,2.5 - - uid: 7323 - components: - - type: Transform - parent: 1668 - pos: -31.5,8.5 - - uid: 7324 - components: - - type: Transform - parent: 1668 - pos: -33.5,8.5 - uid: 7359 components: - type: Transform @@ -51408,111 +52104,6 @@ entities: - type: Transform parent: 1668 pos: -40.5,-28.5 - - uid: 7374 - components: - - type: Transform - parent: 1668 - pos: -28.5,-28.5 - - uid: 7375 - components: - - type: Transform - parent: 1668 - pos: -30.5,-28.5 - - uid: 7376 - components: - - type: Transform - parent: 1668 - pos: -28.5,-24.5 - - uid: 7377 - components: - - type: Transform - parent: 1668 - pos: -30.5,-24.5 - - uid: 7378 - components: - - type: Transform - parent: 1668 - pos: -32.5,-28.5 - - uid: 7379 - components: - - type: Transform - parent: 1668 - pos: -34.5,-28.5 - - uid: 7380 - components: - - type: Transform - parent: 1668 - pos: -36.5,-28.5 - - uid: 7381 - components: - - type: Transform - parent: 1668 - pos: -38.5,-28.5 - - uid: 7382 - components: - - type: Transform - parent: 1668 - pos: -38.5,-24.5 - - uid: 7383 - components: - - type: Transform - parent: 1668 - pos: -36.5,-24.5 - - uid: 7384 - components: - - type: Transform - parent: 1668 - pos: -34.5,-24.5 - - uid: 7385 - components: - - type: Transform - parent: 1668 - pos: -32.5,-24.5 - - uid: 8759 - components: - - type: Transform - parent: 1668 - pos: -25.5,8.5 - - uid: 8760 - components: - - type: Transform - parent: 1668 - pos: -26.5,8.5 - - uid: 8761 - components: - - type: Transform - parent: 1668 - pos: -27.5,8.5 - - uid: 8762 - components: - - type: Transform - parent: 1668 - pos: -28.5,8.5 - - uid: 9110 - components: - - type: Transform - parent: 1668 - pos: 22.5,-34.5 - - uid: 9111 - components: - - type: Transform - parent: 1668 - pos: 21.5,-34.5 - - uid: 9122 - components: - - type: Transform - parent: 1668 - pos: 21.5,-28.5 - - uid: 9289 - components: - - type: Transform - parent: 1668 - pos: -36.5,-3.5 - - uid: 9694 - components: - - type: Transform - parent: 1668 - pos: 26.5,-28.5 - proto: RitualDagger entities: - uid: 6114 @@ -51569,6 +52160,16 @@ entities: pos: -35.37574,11.823141 - proto: Screen entities: + - uid: 547 + components: + - type: Transform + parent: 1668 + pos: 28.5,6.5 + - uid: 548 + components: + - type: Transform + parent: 1668 + pos: 24.5,6.5 - uid: 6906 components: - type: Transform @@ -51629,16 +52230,6 @@ entities: - type: Transform parent: 1668 pos: 26.5,13.5 - - uid: 6918 - components: - - type: Transform - parent: 1668 - pos: 33.5,-7.5 - - uid: 6919 - components: - - type: Transform - parent: 1668 - pos: 33.5,6.5 - uid: 6920 components: - type: Transform @@ -51699,16 +52290,16 @@ entities: - type: Transform parent: 1668 pos: 4.5,-7.5 - - uid: 6932 - components: - - type: Transform - parent: 1668 - pos: -14.5,11.5 - uid: 7332 components: - type: Transform parent: 1668 pos: -34.5,2.5 + - uid: 7377 + components: + - type: Transform + parent: 1668 + pos: -14.5,13.5 - uid: 7488 components: - type: Transform @@ -52037,31 +52628,41 @@ entities: pos: 13.5,4.5 - type: DeviceLinkSource linkedPorts: - 542: + 64: - - On - Open - - Off - Close - 543: + - - Status + - Toggle + 63: - - On - Open - - Off - Close - 544: + - - Status + - Toggle + 59: - - On - Open - - Off - Close - 545: + - - Status + - Toggle + 60: - - On - Open - - Off - Close - 546: + - - Status + - Toggle + 61: - - On - Open - - Off - Close + - - Status + - Toggle - uid: 603 components: - type: MetaData @@ -52071,31 +52672,41 @@ entities: pos: 15.5,4.5 - type: DeviceLinkSource linkedPorts: - 539: + 82: - - On - Open - - Off - Close - 538: + - - Status + - Toggle + 68: - - On - Open - - Off - Close - 537: + - - Status + - Toggle + 67: - - On - Open - - Off - Close - 540: + - - Status + - Toggle + 66: - - On - Open - - Off - Close - 541: + - - Status + - Toggle + 65: - - On - Open - - Off - Close + - - Status + - Toggle - uid: 9388 components: - type: MetaData @@ -52193,29 +52804,21 @@ entities: - Open - - Off - Close - - - Status - - Toggle 4755: - - On - Open - - Off - Close - - - Status - - Toggle 7172: - - On - Open - - Off - Close - - - Status - - Toggle 4754: - - On - Open - - Off - Close - - - Status - - Toggle 314: - - On - Open @@ -52246,29 +52849,21 @@ entities: - Open - - Off - Close - - - Status - - Toggle 4757: - - On - Open - - Off - Close - - - Status - - Toggle 6673: - - On - Open - - Off - Close - - - Status - - Toggle 6674: - - On - Open - - Off - Close - - - Status - - Toggle 326: - - On - Open @@ -53546,7 +54141,7 @@ entities: - type: Transform parent: 1668 pos: -11.5,26.5 -- proto: StatueBananiumClown +- proto: StatueOrnateClown entities: - uid: 9616 components: @@ -53663,7 +54258,7 @@ entities: - type: Transform parent: 1668 rot: 3.141592653589793 rad - pos: -7.029807,-10.078645 + pos: -7.5,-10.5 - proto: StoolBar entities: - uid: 748 @@ -53956,9 +54551,9 @@ entities: - type: Transform parent: 1668 pos: -15.5,24.5 -- proto: SuitStorageEVA +- proto: SuitStorageNTSRA entities: - - uid: 2911 + - uid: 7378 components: - type: Transform parent: 1668 @@ -55206,6 +55801,11 @@ entities: pos: -15.5,-2.5 - proto: TableCarpet entities: + - uid: 128 + components: + - type: Transform + parent: 1668 + pos: -15.5,9.5 - uid: 1527 components: - type: Transform @@ -55276,6 +55876,21 @@ entities: - type: Transform parent: 1668 pos: -19.5,-8.5 + - uid: 7380 + components: + - type: Transform + parent: 1668 + pos: -11.5,13.5 + - uid: 7381 + components: + - type: Transform + parent: 1668 + pos: -13.5,13.5 + - uid: 7382 + components: + - type: Transform + parent: 1668 + pos: -12.5,13.5 - uid: 8692 components: - type: Transform @@ -55348,6 +55963,11 @@ entities: pos: -28.5,-17.5 - proto: TableFancyGreen entities: + - uid: 170 + components: + - type: Transform + parent: 1668 + pos: -21.5,13.5 - uid: 6066 components: - type: Transform @@ -55374,6 +55994,16 @@ entities: - type: Transform parent: 1668 pos: -38.5,-17.5 + - uid: 7383 + components: + - type: Transform + parent: 1668 + pos: -13.5,9.5 + - uid: 9732 + components: + - type: Transform + parent: 1668 + pos: -19.5,13.5 - proto: TableFancyOrange entities: - uid: 9523 @@ -56781,11 +57411,6 @@ entities: - type: Transform parent: 1668 pos: 27.5,11.5 - - uid: 2731 - components: - - type: Transform - parent: 1668 - pos: -15.5,9.5 - uid: 2806 components: - type: Transform @@ -56806,26 +57431,6 @@ entities: - type: Transform parent: 1668 pos: -16.5,11.5 - - uid: 2813 - components: - - type: Transform - parent: 1668 - pos: -11.5,13.5 - - uid: 2815 - components: - - type: Transform - parent: 1668 - pos: -12.5,13.5 - - uid: 2816 - components: - - type: Transform - parent: 1668 - pos: -13.5,13.5 - - uid: 2825 - components: - - type: Transform - parent: 1668 - pos: -13.5,9.5 - uid: 2843 components: - type: Transform @@ -57246,6 +57851,27 @@ entities: - type: Transform parent: 1668 pos: -30.5,-8.5 +- proto: ToolDebug + entities: + - uid: 9759 + components: + - type: Transform + parent: 1668 + pos: -23.356466,10.38205 + - type: Tool + useSound: !type:SoundPathSpecifier + path: /Audio/Items/jaws_pry.ogg + params: + volume: 0 + variation: null + rolloffFactor: 1 + referenceDistance: 1 + playOffsetSeconds: 0 + pitch: 1 + maxDistance: 15 + loop: False + qualities: + - Prying - proto: TowelColorCentcom entities: - uid: 2850 @@ -57515,7 +58141,7 @@ entities: - type: Transform parent: 1668 pos: -38.5,12.5 -- proto: UraniumWindoorSecureCentralCommandLocked +- proto: UraniumWindoorCentralCommandLocked entities: - uid: 9603 components: @@ -57780,7 +58406,7 @@ entities: pos: -39.5,1.5 - proto: VendingMachineSciDrobe entities: - - uid: 9158 + - uid: 7384 components: - type: Transform parent: 1668 @@ -57851,6 +58477,11 @@ entities: - type: Transform parent: 1668 pos: -41.5,1.5 + - uid: 9755 + components: + - type: Transform + parent: 1668 + pos: 24.5,-15.5 - proto: VendingMachineTankDispenserEVA entities: - uid: 9195 @@ -57879,6 +58510,53 @@ entities: - type: Transform parent: 1668 pos: -4.5,10.5 +- proto: WallGold + entities: + - uid: 7385 + components: + - type: Transform + parent: 1668 + pos: -19.5,14.5 + - uid: 7486 + components: + - type: Transform + parent: 1668 + pos: -19.5,17.5 + - uid: 8759 + components: + - type: Transform + parent: 1668 + pos: -18.5,17.5 + - uid: 8760 + components: + - type: Transform + parent: 1668 + pos: -17.5,17.5 + - uid: 8761 + components: + - type: Transform + parent: 1668 + pos: -16.5,17.5 + - uid: 8762 + components: + - type: Transform + parent: 1668 + pos: -16.5,16.5 + - uid: 9110 + components: + - type: Transform + parent: 1668 + pos: -16.5,15.5 + - uid: 9111 + components: + - type: Transform + parent: 1668 + pos: -16.5,14.5 + - uid: 9122 + components: + - type: Transform + parent: 1668 + pos: -17.5,14.5 - proto: WallMarble entities: - uid: 4 @@ -59971,51 +60649,6 @@ entities: - type: Transform parent: 1668 pos: -20.5,14.5 - - uid: 2753 - components: - - type: Transform - parent: 1668 - pos: -19.5,14.5 - - uid: 2756 - components: - - type: Transform - parent: 1668 - pos: -19.5,17.5 - - uid: 2757 - components: - - type: Transform - parent: 1668 - pos: -18.5,17.5 - - uid: 2758 - components: - - type: Transform - parent: 1668 - pos: -17.5,17.5 - - uid: 2759 - components: - - type: Transform - parent: 1668 - pos: -16.5,17.5 - - uid: 2760 - components: - - type: Transform - parent: 1668 - pos: -16.5,16.5 - - uid: 2761 - components: - - type: Transform - parent: 1668 - pos: -16.5,15.5 - - uid: 2762 - components: - - type: Transform - parent: 1668 - pos: -16.5,14.5 - - uid: 2763 - components: - - type: Transform - parent: 1668 - pos: -17.5,14.5 - uid: 2764 components: - type: Transform @@ -64198,6 +64831,23 @@ entities: - type: Transform parent: 1668 pos: -38.44605,13.4853525 +- proto: WeaponTaserSuper + entities: + - uid: 169 + components: + - type: Transform + parent: 1668 + pos: 10.526081,30.762127 + - uid: 9730 + components: + - type: Transform + parent: 1668 + pos: 10.526081,30.559002 + - uid: 9731 + components: + - type: Transform + parent: 1668 + pos: 10.541706,30.402752 - proto: WeaponTetherGun entities: - uid: 4117 @@ -64363,84 +65013,7 @@ entities: parent: 1668 rot: 3.141592653589793 rad pos: 33.5,23.5 -- proto: WindoorCargoLocked - entities: - - uid: 49 - components: - - type: Transform - parent: 1668 - rot: 3.141592653589793 rad - pos: 3.5,22.5 - - uid: 2989 - components: - - type: Transform - parent: 1668 - rot: 3.141592653589793 rad - pos: 2.5,22.5 -- proto: WindoorHydroponicsLocked - entities: - - uid: 969 - components: - - type: Transform - parent: 1668 - rot: 1.5707963267948966 rad - pos: 2.5,-19.5 - - uid: 970 - components: - - type: Transform - parent: 1668 - rot: 1.5707963267948966 rad - pos: 2.5,-18.5 - - uid: 971 - components: - - type: Transform - parent: 1668 - rot: 1.5707963267948966 rad - pos: 2.5,-17.5 - - uid: 981 - components: - - type: Transform - parent: 1668 - pos: 9.5,-13.5 -- proto: WindoorKitchenLocked - entities: - - uid: 1096 - components: - - type: Transform - parent: 1668 - rot: 1.5707963267948966 rad - pos: 11.5,-19.5 - - uid: 1097 - components: - - type: Transform - parent: 1668 - rot: 1.5707963267948966 rad - pos: 11.5,-18.5 - - uid: 1098 - components: - - type: Transform - parent: 1668 - rot: 1.5707963267948966 rad - pos: 11.5,-17.5 - - uid: 1176 - components: - - type: Transform - parent: 1668 - rot: -1.5707963267948966 rad - pos: 18.5,-19.5 - - uid: 1177 - components: - - type: Transform - parent: 1668 - rot: -1.5707963267948966 rad - pos: 18.5,-18.5 - - uid: 1178 - components: - - type: Transform - parent: 1668 - rot: -1.5707963267948966 rad - pos: 18.5,-17.5 -- proto: WindoorSecureBrigLocked +- proto: WindoorBrigLocked entities: - uid: 1864 components: @@ -64479,15 +65052,27 @@ entities: - type: Transform parent: 1668 pos: 26.5,25.5 -- proto: WindoorSecureCargoLocked +- proto: WindoorCargoLocked entities: + - uid: 49 + components: + - type: Transform + parent: 1668 + rot: 3.141592653589793 rad + pos: 3.5,22.5 + - uid: 2989 + components: + - type: Transform + parent: 1668 + rot: 3.141592653589793 rad + pos: 2.5,22.5 - uid: 3885 components: - type: Transform parent: 1668 rot: -1.5707963267948966 rad pos: -3.5,31.5 -- proto: WindoorSecureCentralCommandLocked +- proto: WindoorCentralCommandLocked entities: - uid: 2903 components: @@ -64559,7 +65144,7 @@ entities: - type: Transform parent: 1668 pos: -38.5,5.5 -- proto: WindoorSecureChemistryLocked +- proto: WindoorChemistryLocked entities: - uid: 666 components: @@ -64597,7 +65182,7 @@ entities: parent: 1668 rot: 3.141592653589793 rad pos: 9.5,-13.5 -- proto: WindoorSecureCommandLocked +- proto: WindoorCommandLocked entities: - uid: 96 components: @@ -64627,7 +65212,7 @@ entities: parent: 1668 rot: 3.141592653589793 rad pos: -31.5,-10.5 -- proto: WindoorSecureEngineeringLocked +- proto: WindoorEngineeringLocked entities: - uid: 3030 components: @@ -64641,7 +65226,70 @@ entities: parent: 1668 rot: 3.141592653589793 rad pos: -4.5,17.5 -- proto: WindoorSecureMedicalLocked +- proto: WindoorHydroponicsLocked + entities: + - uid: 969 + components: + - type: Transform + parent: 1668 + rot: 1.5707963267948966 rad + pos: 2.5,-19.5 + - uid: 970 + components: + - type: Transform + parent: 1668 + rot: 1.5707963267948966 rad + pos: 2.5,-18.5 + - uid: 971 + components: + - type: Transform + parent: 1668 + rot: 1.5707963267948966 rad + pos: 2.5,-17.5 + - uid: 981 + components: + - type: Transform + parent: 1668 + pos: 9.5,-13.5 +- proto: WindoorKitchenLocked + entities: + - uid: 1096 + components: + - type: Transform + parent: 1668 + rot: 1.5707963267948966 rad + pos: 11.5,-19.5 + - uid: 1097 + components: + - type: Transform + parent: 1668 + rot: 1.5707963267948966 rad + pos: 11.5,-18.5 + - uid: 1098 + components: + - type: Transform + parent: 1668 + rot: 1.5707963267948966 rad + pos: 11.5,-17.5 + - uid: 1176 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 18.5,-19.5 + - uid: 1177 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 18.5,-18.5 + - uid: 1178 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 18.5,-17.5 +- proto: WindoorMedicalLocked entities: - uid: 550 components: @@ -64653,7 +65301,7 @@ entities: - type: Transform parent: 1668 pos: 15.5,-3.5 -- proto: WindoorSecureSecurityLocked +- proto: WindoorSecurityLocked entities: - uid: 409 components: @@ -64915,12 +65563,6 @@ entities: - type: Transform parent: 1668 pos: 14.5,13.5 - - uid: 1731 - components: - - type: Transform - parent: 1668 - rot: 3.141592653589793 rad - pos: 5.5,12.5 - uid: 1848 components: - type: Transform @@ -65217,18 +65859,6 @@ entities: parent: 1668 rot: -1.5707963267948966 rad pos: -3.5,-20.5 - - uid: 4795 - components: - - type: Transform - parent: 1668 - rot: 3.141592653589793 rad - pos: -11.5,-38.5 - - uid: 4796 - components: - - type: Transform - parent: 1668 - rot: 3.141592653589793 rad - pos: 10.5,-38.5 - uid: 5510 components: - type: Transform From f66ed7d269d68d838c8f822f1f9193f176c41420 Mon Sep 17 00:00:00 2001 From: Emisse <99158783+Emisse@users.noreply.github.com> Date: Wed, 9 Sep 2026 17:44:47 +0000 Subject: [PATCH 099/197] bagel update (#45949) --- Resources/Maps/bagel.yml | 220 +++++++++++++++++++++------------------ 1 file changed, 116 insertions(+), 104 deletions(-) diff --git a/Resources/Maps/bagel.yml b/Resources/Maps/bagel.yml index a425639e35..6a4ae45417 100644 --- a/Resources/Maps/bagel.yml +++ b/Resources/Maps/bagel.yml @@ -4,8 +4,8 @@ meta: engineVersion: 289.0.0 forkId: "" forkVersion: "" - time: 08/23/2026 14:45:10 - entityCount: 25862 + time: 09/09/2026 17:22:54 + entityCount: 25864 maps: - 943 grids: @@ -13,8 +13,6 @@ grids: - 7536 orphans: [] nullspace: -- 24127 -- 24128 - 24129 - 24130 - 24131 @@ -82,6 +80,8 @@ nullspace: - 24534 - 24535 - 24536 +- 24537 +- 24646 tilemap: 0: Space 1: FloorArcadeBlue @@ -162,11 +162,11 @@ entities: version: 7 0,0: ind: 0,0 - tiles: HwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAEAfQAAAAAAAH0AAAAAAAB+AAAAAAAAPAAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAAB9AAAAAAAAfgAAAAAAADwAAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAvAAAAAAAADAAAAAAAAAwAAAAABQAMAAAAAAUALwAAAAAAAH4AAAAAAAA8AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAB9AAAAAAEAAAAAAAAAAH0AAAAAAgAvAAAAAAAADAAAAAAEAAwAAAAAAAAMAAAAAAMADAAAAAAAAAwAAAAAAgAvAAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAABAAAAAAAAAAB9AAAAAAIALwAAAAAAAAwAAAAABQAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAMALwAAAAAAADwAAAAAAAB9AAAAAAIAfQAAAAACAH0AAAAAAgB9AAAAAAIAfQAAAAABAAAAAAAAAAAAAAAAAAAAfQAAAAAAAC8AAAAAAAAfAAAAAAAADAAAAAABAAwAAAAAAwAMAAAAAAMAHwAAAAAAAC8AAAAAAAA8AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAEAfQAAAAABAH4AAAAAAAB+AAAAAAAALwAAAAAAAC8AAAAAAABOAAAAAAAALwAAAAAAAC8AAAAAAAB+AAAAAAAATQAAAAAAAH0AAAAAAQB9AAAAAAIAfQAAAAABAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAATQAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAE0AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAABNAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAE0AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAPAAAAAAAAA== + tiles: HwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAEAfQAAAAAAAH0AAAAAAAB+AAAAAAAAPAAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAAB9AAAAAAAAfgAAAAAAADwAAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAvAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAALwAAAAAAAH4AAAAAAAA8AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAB9AAAAAAEAAAAAAAAAAH0AAAAAAgAvAAAAAAAADQAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAA0AAAAAAAAvAAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAABAAAAAAAAAAB9AAAAAAIALwAAAAAAAA0AAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAANAAAAAAAALwAAAAAAADwAAAAAAAB9AAAAAAIAfQAAAAACAH0AAAAAAgB9AAAAAAIAfQAAAAABAAAAAAAAAAAAAAAAAAAAfQAAAAAAAC8AAAAAAAAfAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAHwAAAAAAAC8AAAAAAAA8AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAEAfQAAAAABAH4AAAAAAAB+AAAAAAAALwAAAAAAAC8AAAAAAABOAAAAAAAALwAAAAAAAC8AAAAAAAB+AAAAAAAATQAAAAAAAH0AAAAAAQB9AAAAAAIAfQAAAAABAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAE0AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAPAAAAAAAAA== version: 7 -1,0: ind: -1,0 - tiles: fgAAAAAAAH4AAAAAAAB9AAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAIAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAAAfAAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAIAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAHwAAAAAAAH4AAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAA4AAAAAAEAOAAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAB8AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAACAH0AAAAAAgB9AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAQB9AAAAAAIAfQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAA8AAAAAAAATQAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAA8AAAAAAAAPAAAAAAAAE0AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAABNAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAE0AAAAAAABNAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAB8AAAAAAAB+AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAAfAAAAAAAAfgAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAHwAAAAAAAH4AAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAegAAAAAAAHoAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAB6AAAAAAAAegAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAPAAAAAAAAA== + tiles: fgAAAAAAAH4AAAAAAAB9AAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAIAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAAAfAAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAIAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAHwAAAAAAAH4AAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAA4AAAAAAEAOAAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAB8AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAACAH0AAAAAAgB9AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAQB9AAAAAAIAfQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAE0AAAAAAABNAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAB8AAAAAAAB+AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAAfAAAAAAAAfgAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAHwAAAAAAAH4AAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAegAAAAAAAHoAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAB6AAAAAAAAegAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAPAAAAAAAAA== version: 7 0,-2: ind: 0,-2 @@ -198,7 +198,7 @@ entities: version: 7 -2,-2: ind: -2,-2 - tiles: fgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB6AAAAAAAAegAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAHoAAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAFsAAAAABAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAB6AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABbAAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAegAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB6AAAAAAAAfgAAAAAAAH0AAAAAAQB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAHoAAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAEAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB8AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAE0AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAABNAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAAwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAHwAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAAMAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAB8AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAGwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAADAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAABsAAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAABsAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAAwAAAAABAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAbAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAA== + tiles: fgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB6AAAAAAAAegAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAHoAAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAFsAAAAABAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAB6AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABbAAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAegAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB6AAAAAAAAfgAAAAAAAH0AAAAAAQB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAHoAAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAEAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB8AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAATQAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAE0AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAABNAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAA0AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAHwAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAANAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAB8AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAGwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAADQAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAABsAAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAABsAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAA0AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAbAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAA== version: 7 -2,-1: ind: -2,-1 @@ -218,11 +218,11 @@ entities: version: 7 -3,-2: ind: -3,-2 - tiles: PAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAACAH0AAAAAAQB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAH4AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAHwAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAfgAAAAAAAA== + tiles: PAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAACAH0AAAAAAQB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAHwAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAfgAAAAAAAA== version: 7 -3,-1: ind: -3,-1 - tiles: fgAAAAAAAHwAAAAAAAB8AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAfAAAAAAAAHwAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAABsAAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAB8AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAAfAAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAHwAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAAfAAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAHwAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAbAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAE0AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAABsAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAoAAAAAAAAKAAAAAAAAB8AAAAAAABNAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAbAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAA== + tiles: fgAAAAAAAHwAAAAAAAB8AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAfAAAAAAAAHwAAAAAAAB+AAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAABsAAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAB8AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAAfAAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAHwAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAAfAAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAHwAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAbAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAE0AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAABsAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAoAAAAAAAAKAAAAAAAAB8AAAAAAABNAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAbAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAA== version: 7 2,-3: ind: 2,-3 @@ -314,7 +314,7 @@ entities: version: 7 0,-5: ind: 0,-5 - tiles: fgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAgB9AAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAQB9AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAABAANAAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAABADwAAAAAAAA8AAAAAAAAPAAAAAAAAA8AAAAAAQB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAEAA0AAAAABAA8AAAAAAAAPAAAAAAAADwAAAAAAAAPAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAABAANAAAAAAMAPAAAAAAAADwAAAAAAAA8AAAAAAAADwAAAAAEAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAABADwAAAAAAAA8AAAAAAAAPAAAAAAAAA8AAAAAAQB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAEAA0AAAAAAgA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: fgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAgB9AAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAQB9AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAABAANAAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAABADwAAAAAAAA8AAAAAAAAPAAAAAAAAA0AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAEAA0AAAAABAA8AAAAAAAAPAAAAAAAADwAAAAAAAANAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAABAANAAAAAAMAPAAAAAAAADwAAAAAAAA8AAAAAAAADQAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAABADwAAAAAAAA8AAAAAAAAPAAAAAAAAA0AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAEAA0AAAAAAgA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -3,-3: ind: -3,-3 @@ -338,7 +338,7 @@ entities: version: 7 -1,-5: ind: -1,-5 - tiles: fQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAABAH0AAAAAAgB9AAAAAAEAfgAAAAAAADwAAAAAAAA8AAAAAAAAfQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAAH0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAEAAAAAAAAAAAAAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAA8AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAgAAAAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAIAAAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB9AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAAA0AAAAABQB9AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAA8AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAANAAAAAAUAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAAPAAAAAAIAPAAAAAAAADwAAAAAAAA8AAAAAAAADQAAAAAFAH0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAADwAAAAADADwAAAAAAAA8AAAAAAAAPAAAAAAAAA0AAAAAAwB9AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAA8AAAAAAgA8AAAAAAAAPAAAAAAAADwAAAAAAAANAAAAAAUAfQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAADQAAAAACAA== + tiles: fQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAABAH0AAAAAAgB9AAAAAAEAfgAAAAAAADwAAAAAAAA8AAAAAAAAfQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAAH0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAEAAAAAAAAAAAAAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAA8AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAgAAAAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAIAAAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB9AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAAA0AAAAABQB9AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAA0AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAANAAAAAAUAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAANAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAADQAAAAAFAH0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAADQAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAA0AAAAAAwB9AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAA0AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAANAAAAAAUAfQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAADQAAAAACAA== version: 7 1,1: ind: 1,1 @@ -346,7 +346,7 @@ entities: version: 7 2,1: ind: 2,1 - tiles: fgAAAAAAAH4AAAAAAAAmAAAAAAAAJgAAAAAAACYAAAAAAAAmAAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB+AAAAAAAAPAAAAAAAAGwAAAAAAAB+AAAAAAAAJgAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAACYAAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAAJAAAAAAMACQAAAAADAAkAAAAAAgB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAE0AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAABNAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAATQAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB9AAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: fgAAAAAAAH4AAAAAAAAmAAAAAAAAJgAAAAAAACYAAAAAAAAmAAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB+AAAAAAAAPAAAAAAAAGwAAAAAAAB+AAAAAAAAJgAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAACYAAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAE0AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAABNAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAATQAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB9AAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 4,-2: ind: 4,-2 @@ -362,11 +362,11 @@ entities: version: 7 2,0: ind: 2,0 - tiles: fgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAfAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAH4AAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB+AAAAAAAAfgAAAAAAAA== + tiles: fgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAE0AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAABNAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAATQAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAfAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAH4AAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB+AAAAAAAAfgAAAAAAAA== version: 7 3,1: ind: 3,1 - tiles: PAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfQAAAAACAH0AAAAAAQB9AAAAAAEAfQAAAAABAH0AAAAAAgB9AAAAAAEAfQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAkAAAAAAAAJAAAAAAMACQAAAAADAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAQAAAAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAAAAAAAAAAAfQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAEAfgAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAgB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAIAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: PAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfQAAAAACAH0AAAAAAQB9AAAAAAEAfQAAAAABAH0AAAAAAgB9AAAAAAEAfQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAQAAAAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAAAAAAAAAAAfQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAEAfgAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAgB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAIAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -3,1: ind: -3,1 @@ -3326,8 +3326,6 @@ entities: chunkHistory: {} - type: ChunkContainer chunkEntities: - - 24127 - - 24128 - 24129 - 24130 - 24131 @@ -3393,6 +3391,8 @@ entities: - 24532 - 24533 - 24534 + - 24535 + - 24536 - type: GridSplitNode - uid: 943 components: @@ -3532,8 +3532,8 @@ entities: chunkHistory: {} - type: ChunkContainer chunkEntities: - - 24535 - - 24536 + - 24537 + - 24646 - type: GridSplitNode - proto: AcousticGuitarInstrument entities: @@ -9139,13 +9139,6 @@ entities: - type: Transform parent: 60 pos: 47.5,22.5 -- proto: AsimovCircuitBoard - entities: - - uid: 19807 - components: - - type: Transform - parent: 60 - pos: -112.765816,8.588821 - proto: AtmosDeviceFanDirectional entities: - uid: 280 @@ -12748,6 +12741,12 @@ entities: pos: -35.5,-34.5 - type: SpamEmitSound enabled: False + - uid: 24127 + components: + - type: Transform + parent: 60 + rot: 1.5707963267948966 rad + pos: -19.5,-20.5 - uid: 25282 components: - type: Transform @@ -55825,7 +55824,7 @@ entities: pos: 34.480053,51.56334 - proto: ChunkEntity entities: - - uid: 24127 + - uid: 24129 components: - type: ChunkEntity root: 60 @@ -56018,7 +56017,7 @@ entities: cleanable: True decals: 6488: -8.215054,-20.979568 - - uid: 24128 + - uid: 24130 components: - type: ChunkEntity root: 60 @@ -56241,7 +56240,7 @@ entities: 3697: 13,-27 3698: 14,-27 3699: 15,-27 - - uid: 24129 + - uid: 24131 components: - type: ChunkEntity root: 60 @@ -56388,7 +56387,7 @@ entities: color: '#A46106FF' decals: 3499: 26,-41 - - uid: 24130 + - uid: 24132 components: - type: ChunkEntity root: 60 @@ -56806,7 +56805,7 @@ entities: cleanable: True decals: 2899: 35,-29 - - uid: 24131 + - uid: 24133 components: - type: ChunkEntity root: 60 @@ -56970,7 +56969,7 @@ entities: 3181: 40.159973,-45.371067 3182: 39.909973,-44.996067 3183: 40.191223,-44.621067 - - uid: 24132 + - uid: 24134 components: - type: ChunkEntity root: 60 @@ -57087,7 +57086,7 @@ entities: cleanable: True decals: 609: 19,-8 - - uid: 24133 + - uid: 24135 components: - type: ChunkEntity root: 60 @@ -57304,7 +57303,7 @@ entities: cleanable: True decals: 2401: 32.02958,-5.0098457 - - uid: 24134 + - uid: 24136 components: - type: ChunkEntity root: 60 @@ -57694,7 +57693,7 @@ entities: color: '#FFFFFFFF' decals: 811: -42,8 - - uid: 24135 + - uid: 24138 components: - type: ChunkEntity root: 60 @@ -57974,7 +57973,7 @@ entities: 5363: -11,14 5364: -10,14 5365: -9,14 - - uid: 24136 + - uid: 24142 components: - type: ChunkEntity root: 60 @@ -58274,7 +58273,7 @@ entities: 571: 24,15 572: 23,15 573: 22,15 - - uid: 24138 + - uid: 24271 components: - type: ChunkEntity root: 60 @@ -58522,7 +58521,7 @@ entities: decals: 3650: 13,20 3651: 12,20 - - uid: 24142 + - uid: 24275 components: - type: ChunkEntity root: 60 @@ -58862,7 +58861,7 @@ entities: color: '#FFFFFFFF' decals: 1762: 15,6 - - uid: 24271 + - uid: 24276 components: - type: ChunkEntity root: 60 @@ -59043,7 +59042,7 @@ entities: cleanable: True decals: 2698: 9.979055,-45.00161 - - uid: 24275 + - uid: 24283 components: - type: ChunkEntity root: 60 @@ -59198,7 +59197,7 @@ entities: 3703: 19,-27 3704: 20,-27 3705: 21,-27 - - uid: 24276 + - uid: 24284 components: - type: ChunkEntity root: 60 @@ -59320,7 +59319,7 @@ entities: cleanable: True decals: 2617: -10.991777,-32.08159 - - uid: 24283 + - uid: 24286 components: - type: ChunkEntity root: 60 @@ -59378,7 +59377,7 @@ entities: cleanable: True decals: 138: -45,-35 - - uid: 24284 + - uid: 24294 components: - type: ChunkEntity root: 60 @@ -59423,7 +59422,7 @@ entities: cleanable: True decals: 2415: -49,-31 - - uid: 24286 + - uid: 24299 components: - type: ChunkEntity root: 60 @@ -59733,7 +59732,7 @@ entities: decals: 2046: -47,-16 2047: -46,-16 - - uid: 24294 + - uid: 24310 components: - type: ChunkEntity root: 60 @@ -59896,7 +59895,7 @@ entities: cleanable: True decals: 2505: -45.397133,-31.934364 - - uid: 24299 + - uid: 24333 components: - type: ChunkEntity root: 60 @@ -60198,7 +60197,7 @@ entities: 776: -23,19 777: -23,20 778: -23,21 - - uid: 24310 + - uid: 24334 components: - type: ChunkEntity root: 60 @@ -60565,7 +60564,7 @@ entities: 5360: -7,16 5361: -7,17 5362: -7,18 - - uid: 24333 + - uid: 24337 components: - type: ChunkEntity root: 60 @@ -60663,7 +60662,7 @@ entities: color: '#FFFFFFFF' decals: 2995: -41,25 - - uid: 24334 + - uid: 24350 components: - type: ChunkEntity root: 60 @@ -60739,7 +60738,7 @@ entities: color: '#3EB38896' decals: 3959: -62.042515,28.021345 - - uid: 24337 + - uid: 24352 components: - type: ChunkEntity root: 60 @@ -60856,7 +60855,7 @@ entities: 2474: 51.849873,-9.726813 2475: 52.084248,-9.383063 2476: 51.849873,-9.070563 - - uid: 24350 + - uid: 24353 components: - type: ChunkEntity root: 60 @@ -61070,7 +61069,7 @@ entities: angle: 1.5707963267948966 rad decals: 565: 56,10 - - uid: 24352 + - uid: 24365 components: - type: ChunkEntity root: 60 @@ -61349,7 +61348,7 @@ entities: 2886: 43,12 2887: 44,12 2888: 45,12 - - uid: 24353 + - uid: 24428 components: - type: ChunkEntity root: 60 @@ -61540,7 +61539,7 @@ entities: color: '#FFFFFFFF' decals: 3584: -15,-52 - - uid: 24365 + - uid: 24429 components: - type: ChunkEntity root: 60 @@ -61582,7 +61581,7 @@ entities: 1051: -20,-56 1052: -20,-55 1053: -20,-54 - - uid: 24428 + - uid: 24430 components: - type: ChunkEntity root: 60 @@ -61727,7 +61726,7 @@ entities: 3542: 5,-56 3543: 5,-55 3544: 5,-54 - - uid: 24429 + - uid: 24431 components: - type: ChunkEntity root: 60 @@ -61933,7 +61932,7 @@ entities: color: '#FFFFFFFF' decals: 1048: -1,-78 - - uid: 24430 + - uid: 24432 components: - type: ChunkEntity root: 60 @@ -62122,7 +62121,7 @@ entities: decals: 1046: 0,-78 1047: 1,-78 - - uid: 24431 + - uid: 24433 components: - type: ChunkEntity root: 60 @@ -62314,7 +62313,7 @@ entities: 4245: 19,23 4246: 19,24 4292: 19,25 - - uid: 24432 + - uid: 24436 components: - type: ChunkEntity root: 60 @@ -62593,7 +62592,7 @@ entities: cleanable: True decals: 2471: 36.93115,20.930944 - - uid: 24433 + - uid: 24439 components: - type: ChunkEntity root: 60 @@ -62811,7 +62810,7 @@ entities: 4251: 53,27 4252: 54,27 4253: 55,27 - - uid: 24436 + - uid: 24440 components: - type: ChunkEntity root: 60 @@ -62995,7 +62994,7 @@ entities: 435: -11,36 436: -12,36 437: -13,36 - - uid: 24439 + - uid: 24441 components: - type: ChunkEntity root: 60 @@ -63083,7 +63082,7 @@ entities: color: '#FFFFFFFF' decals: 2: 48,-33 - - uid: 24440 + - uid: 24443 components: - type: ChunkEntity root: 60 @@ -63130,7 +63129,7 @@ entities: cleanable: True decals: 2504: -51.97618,-34.20235 - - uid: 24441 + - uid: 24445 components: - type: ChunkEntity root: 60 @@ -63228,7 +63227,7 @@ entities: 4399: 36,41 4400: 36,42 4401: 36,43 - - uid: 24443 + - uid: 24446 components: - type: ChunkEntity root: 60 @@ -63329,7 +63328,7 @@ entities: 4390: 56,41 4391: 56,42 4392: 56,43 - - uid: 24445 + - uid: 24447 components: - type: ChunkEntity root: 60 @@ -63369,7 +63368,7 @@ entities: decals: 4473: 56,49 4474: 56,50 - - uid: 24446 + - uid: 24448 components: - type: ChunkEntity root: 60 @@ -63574,7 +63573,7 @@ entities: 1536: -58,2 1537: -59,2 1538: -60,2 - - uid: 24447 + - uid: 24450 components: - type: ChunkEntity root: 60 @@ -63596,7 +63595,7 @@ entities: 3287: -40,40 3288: -40,42 3289: -40,44 - - uid: 24448 + - uid: 24512 components: - type: ChunkEntity root: 60 @@ -63759,7 +63758,7 @@ entities: 445: -21,36 446: -22,36 447: -23,36 - - uid: 24450 + - uid: 24513 components: - type: ChunkEntity root: 60 @@ -63980,7 +63979,7 @@ entities: decals: 7200: -31,-9 7201: -31,-8 - - uid: 24512 + - uid: 24514 components: - type: ChunkEntity root: 60 @@ -64029,7 +64028,7 @@ entities: 745: -62,40 746: -63,40 747: -64,40 - - uid: 24513 + - uid: 24515 components: - type: ChunkEntity root: 60 @@ -64180,7 +64179,7 @@ entities: 5490: 6,42 5512: 0,42 5513: 1,42 - - uid: 24514 + - uid: 24516 components: - type: ChunkEntity root: 60 @@ -64425,7 +64424,7 @@ entities: 825: -26,-28 826: -27,-28 2024: -23,-28 - - uid: 24515 + - uid: 24517 components: - type: ChunkEntity root: 60 @@ -64446,7 +64445,7 @@ entities: color: '#8800FFFF' decals: 5632: 7,49 - - uid: 24516 + - uid: 24518 components: - type: ChunkEntity root: 60 @@ -64485,7 +64484,7 @@ entities: color: '#FFFFFFFF' decals: 7244: -16,49 - - uid: 24517 + - uid: 24519 components: - type: ChunkEntity root: 60 @@ -64642,7 +64641,7 @@ entities: color: '#FFFFFFFF' decals: 794: -6,-5 - - uid: 24518 + - uid: 24520 components: - type: ChunkEntity root: 60 @@ -64732,7 +64731,7 @@ entities: decals: 3878: -112,30 3879: -111,30 - - uid: 24519 + - uid: 24521 components: - type: ChunkEntity root: 60 @@ -64800,7 +64799,7 @@ entities: color: '#FFFFFFFF' decals: 3877: -113,30 - - uid: 24520 + - uid: 24522 components: - type: ChunkEntity root: 60 @@ -64941,7 +64940,7 @@ entities: cleanable: True decals: 3875: -62.06539,-6.96041 - - uid: 24521 + - uid: 24523 components: - type: ChunkEntity root: 60 @@ -65069,7 +65068,7 @@ entities: 2340: 3,-8 2341: 3,-7 2342: 3,-6 - - uid: 24522 + - uid: 24524 components: - type: ChunkEntity root: 60 @@ -65237,7 +65236,7 @@ entities: angle: 3.141592653589793 rad decals: 3: 48,-32 - - uid: 24523 + - uid: 24525 components: - type: ChunkEntity root: 60 @@ -65338,7 +65337,7 @@ entities: angle: -1.5707963267948966 rad decals: 624: -72,19 - - uid: 24524 + - uid: 24526 components: - type: ChunkEntity root: 60 @@ -65548,7 +65547,7 @@ entities: cleanable: True decals: 5823: -21,5 - - uid: 24525 + - uid: 24527 components: - type: ChunkEntity root: 60 @@ -65588,7 +65587,7 @@ entities: 735: -119,15 736: -120,15 737: -121,15 - - uid: 24526 + - uid: 24528 components: - type: ChunkEntity root: 60 @@ -65619,7 +65618,7 @@ entities: color: '#FFFFFFFF' decals: 2958: -109,13 - - uid: 24527 + - uid: 24529 components: - type: ChunkEntity root: 60 @@ -65668,7 +65667,7 @@ entities: color: '#FFFFFFFF' decals: 5727: -95,17 - - uid: 24528 + - uid: 24530 components: - type: ChunkEntity root: 60 @@ -65703,7 +65702,7 @@ entities: color: '#FFFFFFFF' decals: 7243: -17,49 - - uid: 24529 + - uid: 24531 components: - type: ChunkEntity root: 60 @@ -65730,7 +65729,7 @@ entities: 53: 17,-51 54: 17,-51 2771: 22,-49 - - uid: 24530 + - uid: 24532 components: - type: ChunkEntity root: 60 @@ -65764,7 +65763,7 @@ entities: color: '#D4D4D428' decals: 1656: -30,-36 - - uid: 24531 + - uid: 24533 components: - type: ChunkEntity root: 60 @@ -65790,7 +65789,7 @@ entities: cleanable: True decals: 1665: 32,-54 - - uid: 24532 + - uid: 24534 components: - type: ChunkEntity root: 60 @@ -65827,7 +65826,7 @@ entities: cleanable: True decals: 2759: -64,51 - - uid: 24533 + - uid: 24535 components: - type: ChunkEntity root: 60 @@ -65861,7 +65860,7 @@ entities: decals: 4465: 36,49 4466: 36,50 - - uid: 24534 + - uid: 24536 components: - type: ChunkEntity root: 60 @@ -65883,7 +65882,7 @@ entities: cleanable: True decals: 2692: -66.02228,7.9843655 - - uid: 24535 + - uid: 24537 components: - type: ChunkEntity root: 7536 @@ -65935,7 +65934,7 @@ entities: color: '#FFFFFFFF' decals: 3: -1,-3 - - uid: 24536 + - uid: 24646 components: - type: ChunkEntity root: 7536 @@ -70302,6 +70301,13 @@ entities: - type: SingletonDeviceNetServer available: False active: False +- proto: CrewsimovCircuitBoard + entities: + - uid: 19807 + components: + - type: Transform + parent: 60 + pos: -112.765816,8.588821 - proto: Crowbar entities: - uid: 23156 @@ -128256,11 +128262,6 @@ entities: - type: Transform parent: 60 pos: -69.5,-17.5 - - uid: 2657 - components: - - type: Transform - parent: 60 - pos: 36.5,-22.5 - uid: 2663 components: - type: Transform @@ -128311,11 +128312,6 @@ entities: - type: Transform parent: 60 pos: 32.5,-41.5 - - uid: 2767 - components: - - type: Transform - parent: 60 - pos: 36.5,-24.5 - uid: 2975 components: - type: Transform @@ -139564,6 +139560,12 @@ entities: parent: 60 rot: 3.141592653589793 rad pos: -45.5,-8.5 + - uid: 24128 + components: + - type: Transform + parent: 60 + rot: -1.5707963267948966 rad + pos: -18.5,-20.5 - uid: 25283 components: - type: Transform @@ -162129,6 +162131,16 @@ entities: - type: Transform parent: 60 pos: 15.5,-25.5 + - uid: 2657 + components: + - type: Transform + parent: 60 + pos: 36.5,-22.5 + - uid: 2767 + components: + - type: Transform + parent: 60 + pos: 36.5,-24.5 - uid: 3347 components: - type: Transform From a7a5c3944aff4620c157776d28d91400a4380db7 Mon Sep 17 00:00:00 2001 From: Emisse <99158783+Emisse@users.noreply.github.com> Date: Wed, 9 Sep 2026 19:11:00 +0000 Subject: [PATCH 100/197] exo update (#45952) * exo update * fard time --- Resources/Maps/exo.yml | 4980 +++++++++++++++------------------------- 1 file changed, 1819 insertions(+), 3161 deletions(-) diff --git a/Resources/Maps/exo.yml b/Resources/Maps/exo.yml index d20a956d00..9b5f1d79ae 100644 --- a/Resources/Maps/exo.yml +++ b/Resources/Maps/exo.yml @@ -1,71 +1,71 @@ meta: format: 7 category: Map - engineVersion: 288.1.0 + engineVersion: 289.0.0 forkId: "" forkVersion: "" - time: 08/14/2026 12:21:06 - entityCount: 20270 + time: 09/09/2026 18:53:51 + entityCount: 20082 maps: - 1 grids: - 2 orphans: [] nullspace: -- 7297 -- 20218 -- 20219 -- 20220 -- 20221 -- 20222 -- 20223 -- 20224 -- 20225 -- 20226 -- 20227 -- 20228 -- 20229 -- 20230 -- 20231 -- 20232 -- 20233 -- 20234 -- 20235 -- 20236 -- 20237 -- 20238 -- 20239 -- 20240 -- 20241 -- 20242 -- 20243 -- 20244 -- 20245 -- 20246 -- 20247 -- 20248 -- 20249 -- 20250 -- 20251 -- 20252 -- 20253 -- 20254 -- 20255 -- 20256 -- 20257 -- 20258 -- 20259 -- 20260 -- 20261 -- 20262 -- 20263 -- 20264 -- 20265 -- 20266 -- 20267 -- 20268 -- 20269 -- 20270 +- 14405 +- 14407 +- 14408 +- 14926 +- 14928 +- 14973 +- 15216 +- 15236 +- 15269 +- 15404 +- 15413 +- 15417 +- 15471 +- 15478 +- 15545 +- 15596 +- 15621 +- 15694 +- 15696 +- 15697 +- 15698 +- 15699 +- 15700 +- 15790 +- 15849 +- 15852 +- 15853 +- 15856 +- 15857 +- 15912 +- 15913 +- 16021 +- 16045 +- 16046 +- 16047 +- 16164 +- 16175 +- 16193 +- 16449 +- 16535 +- 16606 +- 16856 +- 16859 +- 16871 +- 17098 +- 17099 +- 17103 +- 17108 +- 17113 +- 17114 +- 17115 +- 17173 +- 17247 +- 17248 tilemap: 0: Space 29: FloorArcadeBlue @@ -111,6 +111,7 @@ tilemap: 48: FloorSteelPavement 49: FloorSteelPavementVertical 111: FloorTechMaint2 + 5: FloorTechMaint3 30: FloorTechMaintDark 25: FloorWhite 42: FloorWhiteMono @@ -178,11 +179,11 @@ entities: version: 7 1,-2: ind: 1,-2 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAC0AAAAAAAAlAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAKQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAA3AAAAAAAALQAAAAAAAy4AAAAAAACBAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAJQAAAAAAACUAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAGAAAAAABABgAAAAAAgAYAAAAAAEAgQAAAAAAACkAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAQAYAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAABgAAAAAAgAYAAAAAAAAGAAAAAACAIEAAAAAAAApAAAAAAAAGAAAAAABABgAAAAAAAAYAAAAAAIAGAAAAAABAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAEAGAAAAAACABgAAAAAAgCBAAAAAAAAKQAAAAAAABgAAAAAAgAYAAAAAAEAGAAAAAAAABgAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAANgAAAAAAAC0AAAAAAAM1AAAAAAAAgQAAAAAAAIEAAAAAAAApAAAAAAAAKQAAAAAAACUAAAAAAAAlAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAABYAAAAAAACBAAAAAAAAgQAAAAAAADcAAAAAAAAtAAAAAAADLQAAAAAAAzUAAAAAAACBAAAAAAAAKQAAAAAAACkAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAAAeAAAAAAAAGAAAAAABADYAAAAAAAAuAAAAAAABHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAC0AAAAAAAMCAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHgAAAAAAADYAAAAAAAAuAAAAAAAAJQAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB4AAAAAAAAtAAAAAAADNQAAAAAAAAEAAAAAAAA2AAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAA4EAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAANwAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAABABgAAAAAAQACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAGAAAAAACACkAAAAAAAApAAAAAAAAKQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAABgAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAGAAAAAABABgAAAAAAgAYAAAAAAEAgQAAAAAAAIEAAAAAAAApAAAAAAAAKQAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAC0AAAAAAAAlAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAA3AAAAAAAALQAAAAAAAy4AAAAAAACBAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAGAAAAAABABgAAAAAAgAYAAAAAAEAgQAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAABgAAAAAAgAYAAAAAAAAGAAAAAACAIEAAAAAAAAeAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAEAGAAAAAACABgAAAAAAgCBAAAAAAAAHgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAANgAAAAAAAC0AAAAAAAM1AAAAAAAAgQAAAAAAAIEAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAABYAAAAAAACBAAAAAAAAgQAAAAAAADcAAAAAAAAtAAAAAAADLQAAAAAAAzUAAAAAAACBAAAAAAAAKQAAAAAAACkAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAAAeAAAAAAAAGAAAAAABADYAAAAAAAAuAAAAAAABHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAC0AAAAAAAMCAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHgAAAAAAADYAAAAAAAAuAAAAAAAAJQAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB4AAAAAAAAtAAAAAAADNQAAAAAAAAEAAAAAAAA2AAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAA4EAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAANwAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAABABgAAAAAAQACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAGAAAAAACACkAAAAAAAApAAAAAAAAKQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAABgAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAGAAAAAABABgAAAAAAgAYAAAAAAEAgQAAAAAAAIEAAAAAAAApAAAAAAAAKQAAAAAAAA== version: 7 0,-3: ind: 0,-3 - tiles: IAAAAAAAAAMAAAAAAQADAAAAAAIAgQAAAAAAAC0AAAAAAAAtAAAAAAAAIAAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAADAAAAAAIAAwAAAAADAIEAAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAEANgAAAAAAAC0AAAAAAAMCAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAABABgAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAANgAAAAAAAC4AAAAAAAAYAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAgQAAAAAAAC0AAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAgQAAAAAAAC0AAAAAAAAtAAAAAAAAGAAAAAAAAIEAAAAAAAAAAAAAAAAAFwAAAAACAIEAAAAAAAAtAAAAAAAALQAAAAAAAC8AAAAAAAAvAAAAAAAAgQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAIEAAAAAAAAYAAAAAAEAGAAAAAACABgAAAAAAACBAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAAAvAAAAAAAAGAAAAAACABgAAAAAAQAYAAAAAAIAGAAAAAABABgAAAAAAQAYAAAAAAIAGAAAAAACABgAAAAAAQAYAAAAAAIAAAAAAAAAAAAAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAAAtAAAAAAAALwAAAAAAAC8AAAAAAACBAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAgQAAAAAAABgAAAAAAQAYAAAAAAAAGAAAAAAAABcAAAAAAgAAAAAAAAAAgQAAAAAAAC0AAAAAAAAlAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAIEAAAAAAAAtAAAAAAAALQAAAAAAABgAAAAAAQCBAAAAAAAAAAAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAANwAAAAAAADUAAAAAAAAYAAAAAAEAgQAAAAAAABcAAAAAAQCBAAAAAAAAGAAAAAABABgAAAAAAQAYAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAQA3AAAAAAAALQAAAAAAA4EAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMuAAAAAAAAAQAAAAAAADcAAAAAAAAYAAAAAAIALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACUAAAAAAAArAAAAAAAAGAAAAAACACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAADYAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAxgAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAANwAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAA4EAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: IAAAAAAAAAMAAAAAAQADAAAAAAIAgQAAAAAAAC0AAAAAAAAtAAAAAAAAIAAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAADAAAAAAIAAwAAAAADAIEAAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAEANgAAAAAAAC0AAAAAAAMCAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAABABgAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAANgAAAAAAAC4AAAAAAAAYAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAAAGAAAAAAAAC0AAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAgQAAAAAAAC0AAAAAAAAtAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAtAAAAAAAALQAAAAAAAC8AAAAAAAAvAAAAAAAAgQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAIEAAAAAAAAYAAAAAAEAGAAAAAACABgAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAAAvAAAAAAAAGAAAAAACABgAAAAAAQAYAAAAAAIAGAAAAAABABgAAAAAAQAYAAAAAAIAGAAAAAACABgAAAAAAQAYAAAAAAIAAAAAAAAAAAAAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAAAtAAAAAAAALwAAAAAAAC8AAAAAAACBAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAgQAAAAAAABgAAAAAAQAYAAAAAAAAGAAAAAAAABcAAAAAAgAAAAAAAAAAgQAAAAAAAC0AAAAAAAAlAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAIEAAAAAAAAtAAAAAAAALQAAAAAAABgAAAAAAQCBAAAAAAAAAAAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAANwAAAAAAADUAAAAAAAAYAAAAAAEAgQAAAAAAABcAAAAAAQCBAAAAAAAAGAAAAAABABgAAAAAAQAYAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAQA3AAAAAAAALQAAAAAAA4EAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMuAAAAAAAAAQAAAAAAADcAAAAAAAAYAAAAAAIALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACUAAAAAAAArAAAAAAAAGAAAAAACACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAADYAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAxgAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAANwAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAA4EAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 1,-3: ind: 1,-3 @@ -218,7 +219,7 @@ entities: version: 7 0,-5: ind: 0,-5 - tiles: LwAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAA2AAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy8AAAAAAACBAAAAAAAAAgAAAAAAACkAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAACUAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAJQAAAAAAACsAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACkAAAAAAACBAAAAAAAAgQAAAAAAADcAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADNQAAAAAAAAEAAAAAAAA2AAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAApAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAIEAAAAAAAAYAAAAAAEAGAAAAAAAABgAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAApAAAAAAAAgQAAAAAAACkAAAAAAACBAAAAAAAAgQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAIEAAAAAAAA2AAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAA2AAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy4AAAAAAAABAAAAAAAALQAAAAAAAAIAAAAAAACBAAAAAAAAKQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAALQAAAAAAACUAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAJQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAABoAAAAAAAACAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALgAAAAAAAi0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMuAAAAAAAALQAAAAAAAy0AAAAAAAM1AAAAAAAAgQAAAAAAAAIAAAAAAAAaAAAAAAAAAgAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAC0AAAAAAAM1AAAAAAAALQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAgAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAApAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAB4AAAAAAACBAAAAAAAAIAAAAAAAAC0AAAAAAAA3AAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMuAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAACAAAAAAAAAtAAAAAAAAJQAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACUAAAAAAAAtAAAAAAAAIAAAAAAAAB4AAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAANwAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLgAAAAAAAIEAAAAAAABvAAAAAAAAbwAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAEAGAAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA== + tiles: LwAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAA2AAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy8AAAAAAACBAAAAAAAAAgAAAAAAACkAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAACUAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAJQAAAAAAACsAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACkAAAAAAACBAAAAAAAAgQAAAAAAADcAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADNQAAAAAAAAEAAAAAAAA2AAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAApAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAIEAAAAAAAAYAAAAAAEAGAAAAAAAABgAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAApAAAAAAAAgQAAAAAAACkAAAAAAACBAAAAAAAAgQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAIEAAAAAAAA2AAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAQAAAAAAAAEAAAAAAAAIEAAAAAAAA2AAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy4AAAAAAAABAAAAAAAALQAAAAAAAAIAAAAAAACBAAAAAAAAKQAAAAAAAIEAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACBAAAAAAAALQAAAAAAACUAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAJQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALgAAAAAAAi0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMuAAAAAAAALQAAAAAAAy0AAAAAAAM1AAAAAAAAgQAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAC0AAAAAAAM1AAAAAAAALQAAAAAAAIEAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACBAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAgAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAApAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAB4AAAAAAACBAAAAAAAAIAAAAAAAAC0AAAAAAAA3AAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMuAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAACAAAAAAAAAtAAAAAAAAJQAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACUAAAAAAAAtAAAAAAAAIAAAAAAAAB4AAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAANwAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLgAAAAAAAIEAAAAAAABvAAAAAAAAbwAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAEAGAAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA== version: 7 -2,-4: ind: -2,-4 @@ -234,7 +235,7 @@ entities: version: 7 -3,-2: ind: -3,-2 - tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAABABgAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAgCBAAAAAAAAbwAAAAAAAIEAAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAEAGAAAAAABABgAAAAAAQCBAAAAAAAAgQAAAAAAAC8AAAAAAACBAAAAAAAAGAAAAAAAAIEAAAAAAABvAAAAAAAAgQAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAA2AAAAAAAALQAAAAAAA4EAAAAAAACBAAAAAAAAGAAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAgAAAAAAAALQAAAAAAAC0AAAAAAAOBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAADcAAAAAAAAtAAAAAAADgQAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAACABcAAAAAAAAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAADcAAAAAAAAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAAAFwAAAAABABcAAAAAAgAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAgAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAgAXAAAAAAIAFwAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFgAAAAAAABYAAAAAAACBAAAAAAAANgAAAAAAAC0AAAAAAAM1AAAAAAAAgQAAAAAAAA== + tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAABABgAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAgCBAAAAAAAAbwAAAAAAAIEAAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAEAGAAAAAABABgAAAAAAQCBAAAAAAAAgQAAAAAAAC8AAAAAAACBAAAAAAAAGAAAAAAAAIEAAAAAAABvAAAAAAAAgQAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAAAYAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAA2AAAAAAAALQAAAAAAA4EAAAAAAACBAAAAAAAAGAAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAgAAAAAAAALQAAAAAAAC0AAAAAAAOBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAADcAAAAAAAAtAAAAAAADgQAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAACABcAAAAAAAAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAADcAAAAAAAAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAAAFwAAAAABABcAAAAAAgAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAgAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAgAXAAAAAAIAFwAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFgAAAAAAABYAAAAAAACBAAAAAAAANgAAAAAAAC0AAAAAAAM1AAAAAAAAgQAAAAAAAA== version: 7 -3,-1: ind: -3,-1 @@ -246,7 +247,7 @@ entities: version: 7 -4,-2: ind: -4,-2 - tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAQAYAAAAAAIAGAAAAAABAIEAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAQAYAAAAAAAAGAAAAAABAAsAAAAAAACBAAAAAAAACQAAAAAAAAkAAAAAAAArAAAAAAAAKwAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAEAGAAAAAABABgAAAAAAQALAAAAAAAAgQAAAAAAAAkAAAAAAAAJAAAAAAAAKwAAAAAAACsAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAgQAAAAAAABgAAAAAAAAYAAAAAAIAGAAAAAABABgAAAAAAgAYAAAAAAIACwAAAAAAAIEAAAAAAAAJAAAAAAAACQAAAAAAACsAAAAAAAArAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAADMAAAAAAgAzAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAMwAAAAAEAIEAAAAAAAAvAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAAAABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAXAAAAAAIAFwAAAAABABcAAAAAAQAXAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAXAAAAAAEAFwAAAAAAABcAAAAAAAAXAAAAAAIAgQAAAAAAABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAAAABcAAAAAAgAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAACABcAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA== + tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAQAYAAAAAAIAGAAAAAABAIEAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAQAYAAAAAAAAGAAAAAABAAsAAAAAAACBAAAAAAAACQAAAAAAAAkAAAAAAAArAAAAAAAAKwAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAEAGAAAAAABABgAAAAAAQALAAAAAAAAgQAAAAAAAAkAAAAAAAAJAAAAAAAAKwAAAAAAACsAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAgQAAAAAAABgAAAAAAAAYAAAAAAIAGAAAAAABABgAAAAAAgAYAAAAAAIACwAAAAAAAIEAAAAAAAAJAAAAAAAACQAAAAAAACsAAAAAAAArAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAAIEAAAAAAAAvAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAAAABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAXAAAAAAIAFwAAAAABABcAAAAAAQAXAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAXAAAAAAEAFwAAAAAAABcAAAAAAAAXAAAAAAIAgQAAAAAAABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAAAABcAAAAAAgAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAACABcAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA== version: 7 -5,-2: ind: -5,-2 @@ -294,7 +295,7 @@ entities: version: 7 0,-6: ind: 0,-6 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAACAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAQCBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAIAAAAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAIEAAAAAAAAXAAAAAAEAgQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAgAAAAAAAAAAFwAAAAAAAIEAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACBAAAAAAAAAAAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAABcAAAAAAACBAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAgQAAAAAAAAAAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAXAAAAAAIAgQAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAIEAAAAAAAAAAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAABAAAAAAAAAAAXAAAAAAIAFwAAAAAAAIEAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACBAAAAAAAAFwAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAEAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAIAAAAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAABABcAAAAAAgCBAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAARAAAAAAAAIEAAAAAAABEAAAAAAAAgQAAAAAAAEQAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAEQAAAAAAACBAAAAAAAARAAAAAAAAIEAAAAAAABEAAAAAAAAgQAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAACAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAQCBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAIAAAAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAIEAAAAAAAAXAAAAAAEAgQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAgAAAAAAAAAAFwAAAAAAAIEAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACBAAAAAAAAAAAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAABcAAAAAAACBAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAgQAAAAAAAAAAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAXAAAAAAIAgQAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAIEAAAAAAAAAAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAABAAAAAAAAAAAXAAAAAAIAFwAAAAAAAIEAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACBAAAAAAAAFwAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAEAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAIAAAAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAABABcAAAAAAgCBAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAARAAAAAAAAIEAAAAAAABEAAAAAAAAgQAAAAAAAEQAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAEQAAAAAAACBAAAAAAAARAAAAAAAAIEAAAAAAABEAAAAAAAAgQAAAAAAAA== version: 7 0,-7: ind: 0,-7 @@ -302,7 +303,7 @@ entities: version: 7 1,-6: ind: 1,-6 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAaAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAABoAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAABvAAAAAAAAbwAAAAAAAG8AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAaAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAABoAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAG8AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA== version: 7 1,-7: ind: 1,-7 @@ -314,7 +315,7 @@ entities: version: 7 2,-6: ind: 2,-6 - tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAEAFwAAAAAAABcAAAAAAgAXAAAAAAEAFwAAAAAAABcAAAAAAgAXAAAAAAIAFwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAFwAAAAAAABcAAAAAAgAXAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAIAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAACABcAAAAAAAAXAAAAAAEAFwAAAAACAAIAAAAAAACBAAAAAAAAFwAAAAACABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAFwAAAAABABcAAAAAAQAXAAAAAAEAFwAAAAACABcAAAAAAgBvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABAAAAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAQAXAAAAAAAAFwAAAAAAABcAAAAAAgAXAAAAAAIARAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAAAAAAAAAABcAAAAAAgAAAAAAAAAAFwAAAAABAAAAAAAAAAAXAAAAAAAAFwAAAAACAA== + tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAEAFwAAAAAAABcAAAAAAgAXAAAAAAEAFwAAAAAAABcAAAAAAgAXAAAAAAIAFwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAAAABcAAAAAAgAXAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAFwAAAAACABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAFwAAAAABABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABAAAAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAQAXAAAAAAAAFwAAAAAAABcAAAAAAgAXAAAAAAIARAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAAAAAAAAAABcAAAAAAgAAAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAAAFwAAAAACAA== version: 7 2,-5: ind: 2,-5 @@ -326,7 +327,7 @@ entities: version: 7 3,-5: ind: 3,-5 - tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAAAFwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAAAAAAAAAABcAAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAABvAAAAAAAAgQAAAAAAABgAAAAAAgAYAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAbwAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA== + tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAAAFwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAAAAAAAAAABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAgAYAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAbwAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA== version: 7 4,-5: ind: 4,-5 @@ -334,7 +335,7 @@ entities: version: 7 3,-6: ind: 3,-6 - tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAAAFwAAAAAAABcAAAAAAQAXAAAAAAIAFwAAAAABABcAAAAAAgAXAAAAAAEAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAQAXAAAAAAAAFwAAAAABABcAAAAAAQAXAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAIAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAACABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAgAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAAAABcAAAAAAQAXAAAAAAEAFwAAAAABABcAAAAAAgAXAAAAAAIAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAgAXAAAAAAAAFwAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAIAFwAAAAACABcAAAAAAgAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAQAXAAAAAAIAFwAAAAABABcAAAAAAQAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAAAAAAAAAAFwAAAAAAABcAAAAAAQAXAAAAAAIAFwAAAAACABcAAAAAAgAXAAAAAAEAFwAAAAABABcAAAAAAgAXAAAAAAIAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAEAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAABABcAAAAAAQAXAAAAAAAAFwAAAAABABcAAAAAAgAXAAAAAAIAFwAAAAABABcAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAACABcAAAAAAAAXAAAAAAEAFwAAAAAAABcAAAAAAQAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAFwAAAAAAABcAAAAAAQAAAAAAAAAAFwAAAAAAAA== + tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAAAFwAAAAAAABcAAAAAAQAXAAAAAAIAFwAAAAABABcAAAAAAgAXAAAAAAEAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAQAXAAAAAAAAFwAAAAABABcAAAAAAQAXAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAIAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAACABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAABABcAAAAAAgAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAXAAAAAAEAFwAAAAABABcAAAAAAgAXAAAAAAIAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAIAFwAAAAACABcAAAAAAgAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABABcAAAAAAQAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAAAAAAAAAAFwAAAAAAABcAAAAAAQAXAAAAAAIAFwAAAAACAIEAAAAAAACBAAAAAAAAFwAAAAABABcAAAAAAgAXAAAAAAIAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAEAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAABABcAAAAAAQAXAAAAAAAAFwAAAAABABcAAAAAAgAXAAAAAAIAFwAAAAABABcAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAACABcAAAAAAAAXAAAAAAEAFwAAAAAAABcAAAAAAQAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAFwAAAAAAABcAAAAAAQAAAAAAAAAAFwAAAAAAAA== version: 7 4,-4: ind: 4,-4 @@ -346,7 +347,7 @@ entities: version: 7 5,-5: ind: 5,-5 - tiles: FwAAAAAAABcAAAAAAgAXAAAAAAEAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAgAXAAAAAAIAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAgAXAAAAAAIAFwAAAAACABcAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAQAXAAAAAAAAFwAAAAAAABcAAAAAAgAXAAAAAAAAFwAAAAACABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAQAXAAAAAAAAFwAAAAAAABcAAAAAAQAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAEAFwAAAAACABcAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABABcAAAAAAgAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAHQAAAAAAAB0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: FwAAAAAAABcAAAAAAgAXAAAAAAEAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAgAXAAAAAAIAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAgAXAAAAAAIAFwAAAAACABcAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAQAXAAAAAAAAFwAAAAAAABcAAAAAAgAXAAAAAAAAFwAAAAACABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAQAXAAAAAAAAFwAAAAAAABcAAAAAAQAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAEAFwAAAAACABcAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABABcAAAAAAgAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAC8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAAAAAAAAgQAAAAAAAAUAAAAAAAAFAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 3,-4: ind: 3,-4 @@ -370,19 +371,19 @@ entities: version: 7 3,-2: ind: 3,-2 - tiles: gQAAAAAAAIEAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAYAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAQCBAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAgCBAAAAAAAALgAAAAAAAiAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAABLwAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAM1AAAAAAAANgAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAABLQAAAAAAAS8AAAAAAAA3AAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMuAAAAAAAANwAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAS0AAAAAAAEvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAABgAAAAAAgAYAAAAAAAAGAAAAAAAABgAAAAAAQAYAAAAAAIAGAAAAAACABgAAAAAAgAYAAAAAAIAGAAAAAABACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAACAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAACQAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAIAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAAAfAAAAAAIAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAA== + tiles: gQAAAAAAAIEAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAQCBAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAgCBAAAAAAAALgAAAAAAAiAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAABLwAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAM1AAAAAAAANgAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAABLQAAAAAAAS8AAAAAAAA3AAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMuAAAAAAAANwAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAS0AAAAAAAEvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAABgAAAAAAgAYAAAAAAAAGAAAAAAAABgAAAAAAQAYAAAAAAIAGAAAAAACABgAAAAAAgAYAAAAAAIAGAAAAAABACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAACAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAACQAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAIAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAAAfAAAAAAIAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAA== version: 7 2,-2: ind: 2,-2 - tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAACBAAAAAAAALwAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACkAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAABAIEAAAAAAAAYAAAAAAIAGAAAAAABAIEAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAgApAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAACAIEAAAAAAACBAAAAAAAAGAAAAAABABgAAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAQAYAAAAAAEAGAAAAAABABgAAAAAAQAYAAAAAAEAGAAAAAACABgAAAAAAAAYAAAAAAEAgQAAAAAAAIEAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAAAgQAAAAAAABgAAAAAAQAYAAAAAAEAGAAAAAABACkAAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAgCBAAAAAAAAGAAAAAACABgAAAAAAgAYAAAAAAEAGAAAAAABAIEAAAAAAAAYAAAAAAAAGAAAAAAAAIEAAAAAAAAlAAAAAAAAJQAAAAAAACkAAAAAAAApAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAACABgAAAAAAQAYAAAAAAAAGAAAAAABABgAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAA2AAAAAAAALQAAAAAAAy0AAAAAAAM1AAAAAAAANgAAAAAAAIEAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAC0AAAAAAAMYAAAAAAIALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy4AAAAAAAMtAAAAAAADNwAAAAAAAC4AAAAAAAEtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAzYAAAAAAAArAAAAAAAAGAAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACUAAAAAAAAtAAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMuAAAAAAAALQAAAAAAAxgAAAAAAgAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAQAYAAAAAAAAGAAAAAACABgAAAAAAQAYAAAAAAIAGAAAAAABABgAAAAAAQApAAAAAAAAKQAAAAAAAIEAAAAAAAAvAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAKQAAAAAAACkAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAAAAIEAAAAAAAAZAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAgQAAAAAAABcAAAAAAgCBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAAIEAAAAAAAAAAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAAfAAAAAAIAHwAAAAADAAIAAAAAAAAfAAAAAAQAKQAAAAAAAIEAAAAAAACBAAAAAAAAKQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAgQAAAAAAAA== + tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAAAGAAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAeAAAAAAAAgQAAAAAAABgAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAAIEAAAAAAACBAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAHgAAAAAAABgAAAAAAQAYAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAB4AAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAAAgQAAAAAAAIEAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAACABgAAAAAAAAYAAAAAAAAGAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAA2AAAAAAAALQAAAAAAAy0AAAAAAAM1AAAAAAAANgAAAAAAAIEAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAC0AAAAAAAMYAAAAAAIALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy4AAAAAAAMtAAAAAAADNwAAAAAAAC4AAAAAAAEtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAzYAAAAAAAArAAAAAAAAGAAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACUAAAAAAAAtAAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMuAAAAAAAALQAAAAAAAxgAAAAAAgAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAQAYAAAAAAAAGAAAAAACABgAAAAAAQAYAAAAAAIAGAAAAAABABgAAAAAAQApAAAAAAAAKQAAAAAAAIEAAAAAAAAvAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAKQAAAAAAACkAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAAAAIEAAAAAAAAZAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAgQAAAAAAABcAAAAAAgCBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAAIEAAAAAAAAAAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAAfAAAAAAIAHwAAAAADAAIAAAAAAAAfAAAAAAQAKQAAAAAAAIEAAAAAAACBAAAAAAAAKQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAgQAAAAAAAA== version: 7 2,-3: ind: 2,-3 - tiles: gQAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAgAAAAAAAAgQAAAAAAACAAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAlAAAAAAAAJQAAAAAAAG8AAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAJQAAAAAAACUAAAAAAABvAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACUAAAAAAAAlAAAAAAAAbwAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAlAAAAAAAAJQAAAAAAAG8AAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAJQAAAAAAACUAAAAAAABvAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACUAAAAAAAAlAAAAAAAAbwAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAlAAAAAAAAJQAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAJQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAJQAAAAAAACUAAAAAAABvAAAAAAAAgQAAAAAAAC8AAAAAAACBAAAAAAAALwAAAAAAAIEAAAAAAAA0AAAAAAIANAAAAAAAABgAAAAAAgAYAAAAAAEANAAAAAAEADQAAAAABQCBAAAAAAAAgQAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAlAAAAAAAAGAAAAAABABgAAAAAAAAYAAAAAAAAGAAAAAACADQAAAAAAgA0AAAAAAQAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAAgQAAAAAAADQAAAAABAAYAAAAAAIAGAAAAAACADQAAAAABAA0AAAAAAUANAAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAADQAAAAABQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAC8AAAAAAAAYAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAIEAAAAAAAAYAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAAGAAAAAACAC8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAABgAAAAAAAAvAAAAAAAAgQAAAAAAAA== + tiles: gQAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAgAAAAAAAAgQAAAAAAACAAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAlAAAAAAAAJQAAAAAAAG8AAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAJQAAAAAAACUAAAAAAABvAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACUAAAAAAAAlAAAAAAAAbwAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAlAAAAAAAAJQAAAAAAAG8AAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAJQAAAAAAACUAAAAAAABvAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACUAAAAAAAAlAAAAAAAAbwAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAlAAAAAAAAJQAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAJQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAJQAAAAAAACUAAAAAAABvAAAAAAAAgQAAAAAAAC8AAAAAAACBAAAAAAAALwAAAAAAAIEAAAAAAAA0AAAAAAIANAAAAAAAABgAAAAAAgAYAAAAAAEANAAAAAAEADQAAAAABQCBAAAAAAAAgQAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAlAAAAAAAAGAAAAAABABgAAAAAAAAYAAAAAAAAGAAAAAACADQAAAAAAgA0AAAAAAQAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAAgQAAAAAAADQAAAAABAAYAAAAAAIAGAAAAAACADQAAAAABAA0AAAAAAUANAAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAC8AAAAAAAAYAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA== version: 7 5,-2: ind: 5,-2 - tiles: gQAAAAAAAIEAAAAAAAAXAAAAAAEAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAHAAAAAAFABwAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAFwAAAAACABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: gQAAAAAAAIEAAAAAAAAXAAAAAAEAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAFwAAAAACABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 5,-1: ind: 5,-1 @@ -469,6 +470,14 @@ entities: - volume: 2500 moles: {} immutable: True + - temperature: 293.15 + volume: 2500 + moles: {} + - temperature: 235 + volume: 2500 + moles: + Oxygen: 27.225372 + Nitrogen: 102.419266 - temperature: 293.15 volume: 2500 moles: @@ -477,18 +486,10 @@ entities: volume: 2500 moles: Nitrogen: 6666.982 - - temperature: 293.15 - volume: 2500 - moles: {} - temperature: 293.15 volume: 2500 moles: Plasma: 6666.982 - - temperature: 235 - volume: 2500 - moles: - Oxygen: 27.225372 - Nitrogen: 102.419266 tiles: 0,0: 0: 4095 @@ -762,16 +763,15 @@ entities: 8,-5: 0: 40955 0,-12: - 0: 375 - 1: 16384 + 0: 16759 -1,-12: 0: 47279 + 0,-11: + 0: 34831 + 1: 4096 -1,-11: 0: 13087 1: 34816 - 0,-11: - 1: 4100 - 0: 34816 0,-10: 1: 32 0: 63624 @@ -787,24 +787,24 @@ entities: 0: 49075 2,-12: 0: 57359 + 2,-11: + 0: 61182 2,-10: 0: 65280 2,-13: 0: 65524 - 2,-11: - 0: 61166 + 3,-11: + 0: 43256 3,-10: 0: 61670 3,-12: - 0: 26336 - 3,-11: - 0: 24800 + 0: 42720 3,-13: 0: 61164 4,-12: - 0: 240 + 0: 61680 4,-11: - 0: 1911 + 0: 65535 4,-10: 0: 61680 4,-13: @@ -882,7 +882,7 @@ entities: -8,-7: 0: 56782 -9,-7: - 0: 64799 + 0: 64989 -8,-6: 0: 65501 -9,-6: @@ -1033,13 +1033,13 @@ entities: 7,-14: 0: 65523 7,-17: - 0: 51711 + 0: 55807 8,-16: 0: 271 - 2: 17408 + 4: 17408 8,-15: 1: 4096 - 2: 4 + 4: 4 8,-14: 0: 32752 8,-13: @@ -1289,7 +1289,7 @@ entities: -17,-8: 0: 34816 -16,-7: - 0: 17935 + 0: 19983 -17,-7: 0: 4360 1: 25104 @@ -1594,7 +1594,7 @@ entities: 0: 65535 3,-23: 1: 16 - 0: 52420 + 0: 52428 3,-22: 1: 16 0: 64716 @@ -1603,7 +1603,7 @@ entities: 4,-24: 0: 61167 4,-21: - 0: 239 + 0: 254 1,-26: 1: 51200 2,-26: @@ -1714,21 +1714,31 @@ entities: 10,-24: 1: 15 10,-22: - 1: 12561 + 1: 47377 10,-21: 1: 24234 11,-24: 1: 143 - 11,-21: - 1: 57343 11,-22: - 1: 49152 + 1: 4383 + 2: 52224 + 11,-21: + 1: 65297 + 2: 12 + 11,-23: + 1: 65520 12,-24: 1: 4080 + 12,-23: + 1: 30576 12,-22: - 1: 65160 + 1: 35023 + 2: 4352 + 0: 17408 12,-21: - 1: 65535 + 2: 1 + 1: 65480 + 0: 4 9,-19: 0: 47919 9,-18: @@ -1737,8 +1747,8 @@ entities: 0: 65535 9,-16: 0: 15 - 3: 4352 - 4: 17408 + 5: 4352 + 2: 17408 10,-20: 0: 65280 10,-19: @@ -1749,10 +1759,10 @@ entities: 0: 65535 10,-16: 0: 15 - 4: 4352 - 5: 17408 + 2: 4352 + 6: 17408 11,-20: - 0: 65024 + 0: 65248 11,-19: 0: 62990 11,-18: @@ -1762,11 +1772,11 @@ entities: 11,-16: 0: 15 1: 35840 - 4: 4352 + 2: 4352 12,-20: - 0: 65280 + 0: 64440 12,-19: - 0: 61695 + 0: 64767 12,-18: 0: 65535 12,-17: @@ -1796,7 +1806,7 @@ entities: 0: 61183 12,-16: 0: 7 - 4: 2184 + 2: 2184 1: 8960 13,-20: 0: 65024 @@ -1810,7 +1820,7 @@ entities: 13,-21: 1: 16179 13,-16: - 4: 819 + 2: 819 1: 8 14,-20: 0: 53504 @@ -1890,7 +1900,7 @@ entities: 1: 15 0: 49152 20,-18: - 0: 57297 + 0: 57309 20,-17: 0: 4445 13,-24: @@ -2014,7 +2024,7 @@ entities: 0: 59392 11,-15: 1: 32904 - 4: 1 + 2: 1 12,-14: 0: 62926 11,-14: @@ -2042,13 +2052,13 @@ entities: 14,-13: 0: 52424 14,-12: - 0: 61452 + 0: 61580 15,-14: 0: 119 15,-13: 0: 30579 15,-12: - 0: 28679 + 0: 28695 16,-11: 0: 63359 15,-11: @@ -2138,12 +2148,11 @@ entities: 0: 60625 11,-10: 0: 34944 - 6: 13104 + 3: 13104 12,-9: 0: 56784 11,-9: - 0: 65416 - 6: 2 + 0: 65528 12,-8: 0: 57117 13,-11: @@ -2212,13 +2221,13 @@ entities: 20,-6: 0: 57293 20,-5: - 0: 193 + 0: 3789 11,-8: - 0: 18024 + 0: 48120 12,-7: 0: 61681 11,-7: - 0: 63590 + 0: 61627 12,-6: 0: 65295 11,-6: @@ -2249,31 +2258,31 @@ entities: 0: 3 1: 43008 9,-7: - 0: 65030 + 0: 65038 9,-6: 0: 4991 9,-5: 0: 272 1: 68 9,-9: - 0: 15091 + 0: 45811 9,-8: - 0: 57574 + 0: 43690 9,-4: 0: 4369 1: 17408 10,-8: - 0: 40176 + 0: 65520 10,-7: - 0: 64461 + 0: 62351 10,-6: 0: 53007 10,-5: 0: 63485 - 10,-9: - 0: 65520 10,-4: 0: 4087 + 10,-9: + 0: 61168 11,-4: 0: 4095 9,-12: @@ -2289,7 +2298,7 @@ entities: 10,-11: 0: 65535 10,-10: - 6: 65520 + 3: 65520 0: 4 10,-13: 0: 12276 @@ -2352,14 +2361,14 @@ entities: 11,-3: 1: 12288 9,-15: - 3: 1 - 4: 4 + 5: 1 + 2: 4 1: 32768 9,-14: 0: 36848 10,-15: - 4: 1 - 5: 4 + 2: 1 + 6: 4 10,-14: 0: 65520 -8,-24: @@ -2446,60 +2455,61 @@ entities: - type: ExplosionAirtightGrid - type: ChunkContainer chunkEntities: - - 7297 - - 20218 - - 20219 - - 20220 - - 20221 - - 20222 - - 20223 - - 20224 - - 20225 - - 20226 - - 20227 - - 20228 - - 20229 - - 20230 - - 20231 - - 20232 - - 20233 - - 20234 - - 20235 - - 20236 - - 20237 - - 20238 - - 20239 - - 20240 - - 20241 - - 20242 - - 20243 - - 20244 - - 20245 - - 20246 - - 20247 - - 20248 - - 20249 - - 20250 - - 20251 - - 20252 - - 20253 - - 20254 - - 20255 - - 20256 - - 20257 - - 20258 - - 20259 - - 20260 - - 20261 - - 20262 - - 20263 - - 20264 - - 20265 - - 20266 - - 20267 - - 20268 - - 20269 - - 20270 + - 14405 + - 14407 + - 14408 + - 14926 + - 14928 + - 14973 + - 15216 + - 15236 + - 15269 + - 15404 + - 15413 + - 15417 + - 15471 + - 15478 + - 15545 + - 15596 + - 15621 + - 15694 + - 15696 + - 15697 + - 15698 + - 15699 + - 15700 + - 15790 + - 15849 + - 15852 + - 15853 + - 15856 + - 15857 + - 15912 + - 15913 + - 16021 + - 16045 + - 16046 + - 16047 + - 16164 + - 16175 + - 16193 + - 16449 + - 16535 + - 16606 + - 16856 + - 16859 + - 16871 + - 17098 + - 17099 + - 17103 + - 17108 + - 17113 + - 17114 + - 17115 + - 17173 + - 17247 + - 17248 + - type: GridSplitNode - proto: ActionStethoscope entities: - uid: 6661 @@ -2526,36 +2536,10 @@ entities: container: 13901 - proto: ActionToggleInternals entities: - - uid: 3031 - mapInit: true - paused: true - components: - - type: Transform - parent: 7689 - - type: Action - container: 7689 - uid: 7333 components: - type: Transform parent: 5264 - - uid: 7690 - mapInit: true - paused: true - components: - - type: Transform - parent: 7689 - - uid: 7694 - mapInit: true - paused: true - components: - - type: Transform - parent: 7691 - - uid: 7698 - mapInit: true - paused: true - components: - - type: Transform - parent: 7697 - uid: 7999 components: - type: Transform @@ -2590,14 +2574,6 @@ entities: components: - type: Transform parent: 18387 - - uid: 18526 - mapInit: true - paused: true - components: - - type: Transform - parent: 18513 - - type: Action - container: 18513 - uid: 18567 mapInit: true paused: true @@ -2606,14 +2582,6 @@ entities: parent: 19423 - type: Action container: 19423 - - uid: 18754 - components: - - type: Transform - parent: 18753 - - uid: 18756 - components: - - type: Transform - parent: 18755 - uid: 19632 mapInit: true paused: true @@ -4117,7 +4085,6 @@ entities: - 17130 - 17153 - 18091 - - 13567 - uid: 18059 components: - type: Transform @@ -4179,7 +4146,6 @@ entities: devices: - 18092 - 16173 - - 13567 - 3659 - uid: 18736 components: @@ -4728,6 +4694,11 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 14.5,-91.5 + - uid: 5541 + components: + - type: Transform + parent: 2 + pos: 15.5,-91.5 - proto: AirlockCargoLocked entities: - uid: 384 @@ -4748,24 +4719,11 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 20.5,-82.5 - - uid: 529 + - uid: 3685 components: - type: Transform parent: 2 - rot: -1.5707963267948966 rad - pos: 16.5,-83.5 -- proto: AirlockChapelGlassLocked - entities: - - uid: 176 - components: - - type: Transform - parent: 2 - pos: -19.5,-36.5 - - uid: 180 - components: - - type: Transform - parent: 2 - pos: -19.5,-34.5 + pos: 16.5,-82.5 - proto: AirlockChapelLocked entities: - uid: 2804 @@ -5143,6 +5101,30 @@ entities: 6008: - - DoorStatus - DoorBolt + - uid: 6388 + components: + - type: Transform + parent: 2 + pos: 51.5,-77.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 10675: + - - DoorStatus + - Close + - uid: 10675 + components: + - type: Transform + parent: 2 + pos: 51.5,-80.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 6388: + - - DoorStatus + - Close - uid: 15217 components: - type: Transform @@ -5695,11 +5677,6 @@ entities: pos: 0.5,-65.5 - proto: AirlockGlassXeno entities: - - uid: 270 - components: - - type: Transform - parent: 2 - pos: -3.5,-42.5 - uid: 327 components: - type: Transform @@ -6281,6 +6258,16 @@ entities: - type: Transform parent: 2 pos: 37.5,-74.5 + - uid: 7429 + components: + - type: Transform + parent: 2 + pos: 51.5,-73.5 + - uid: 10774 + components: + - type: Transform + parent: 2 + pos: 50.5,-73.5 - proto: AirlockMaintBarLocked entities: - uid: 1448 @@ -6468,7 +6455,7 @@ entities: pos: 11.5,-30.5 - type: Door state: Opening - secondsUntilStateChange: -297176.12 + secondsUntilStateChange: -299802.9 - type: DeviceLinkSource lastSignals: DoorStatus: True @@ -6500,6 +6487,16 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 16.5,-23.5 + - uid: 14285 + components: + - type: Transform + parent: 2 + pos: 18.5,-21.5 + - uid: 14349 + components: + - type: Transform + parent: 2 + pos: 17.5,-21.5 - proto: AirlockMedicalLocked entities: - uid: 2251 @@ -6571,6 +6568,30 @@ entities: pos: -19.5,-18.5 - proto: AirlockScienceGlassLocked entities: + - uid: 541 + components: + - type: Transform + parent: 2 + pos: -19.5,-34.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 555: + - - DoorStatus + - Close + - uid: 555 + components: + - type: Transform + parent: 2 + pos: -19.5,-36.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 541: + - - DoorStatus + - Close - uid: 1215 components: - type: Transform @@ -6581,11 +6602,25 @@ entities: - type: Transform parent: 2 pos: -19.5,-30.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 2210: + - - DoorStatus + - Close - uid: 2210 components: - type: Transform parent: 2 pos: -19.5,-28.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 2209: + - - DoorStatus + - Close - uid: 2379 components: - type: Transform @@ -6767,12 +6802,6 @@ entities: pos: 35.5,-41.5 - proto: AirlockServiceLocked entities: - - uid: 3617 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -34.5,-27.5 - uid: 6039 components: - type: Transform @@ -6815,25 +6844,18 @@ entities: - type: Transform parent: 2 pos: -59.5,-64.5 -- proto: AirlockVirologyGlassLocked +- proto: AirlockVirologyGlass entities: - - uid: 7953 - components: - - type: Transform - parent: 2 - pos: 31.5,-13.5 - - uid: 8785 - components: - - type: Transform - parent: 2 - pos: 31.5,-16.5 -- proto: AirlockVirologyLocked - entities: - - uid: 7807 + - uid: 12981 components: - type: Transform parent: 2 pos: 35.5,-16.5 + - uid: 13452 + components: + - type: Transform + parent: 2 + pos: 31.5,-16.5 - proto: AirlockXeno entities: - uid: 153 @@ -6865,7 +6887,7 @@ entities: pos: 34.5,-36.5 - type: Door state: Opening - secondsUntilStateChange: -72673.78 + secondsUntilStateChange: -75300.58 - type: DeviceLinkSource lastSignals: DoorStatus: True @@ -6879,6 +6901,11 @@ entities: - type: Transform parent: 2 pos: -50.5,-63.5 + - uid: 557 + components: + - type: Transform + parent: 2 + pos: -3.5,-42.5 - uid: 586 components: - type: Transform @@ -6951,12 +6978,6 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: -34.5,-17.5 - - uid: 3160 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 44.5,-33.5 - uid: 3291 components: - type: Transform @@ -6999,11 +7020,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 57.5,-75.5 - - uid: 3436 - components: - - type: Transform - parent: 2 - pos: 43.5,-25.5 - uid: 3487 components: - type: Transform @@ -7016,12 +7032,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 60.5,-64.5 - - uid: 3592 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 38.5,-34.5 - uid: 3638 components: - type: Transform @@ -7033,18 +7043,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 63.5,-56.5 - - uid: 3685 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 44.5,-32.5 - - uid: 3687 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 46.5,-33.5 - uid: 3756 components: - type: Transform @@ -7170,12 +7168,6 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 76.5,-40.5 - - uid: 5892 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 46.5,-32.5 - uid: 6253 components: - type: Transform @@ -7260,16 +7252,17 @@ entities: - type: Transform parent: 2 pos: 77.5,-55.5 - - uid: 12960 - components: - - type: Transform - parent: 2 - pos: 43.5,-28.5 - uid: 13881 components: - type: Transform parent: 2 pos: 75.5,-24.5 + - uid: 14025 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 3.5,-43.5 - uid: 14237 components: - type: Transform @@ -8008,33 +8001,18 @@ entities: - type: DeviceNetwork deviceLists: - 14759 -- proto: AirTank +- proto: AltarSpawner entities: - - uid: 18513 + - uid: 1135 components: - type: Transform parent: 2 - pos: 46.752895,-75.3866 - - type: GasTank - toggleActionEntity: 18526 - - type: ActionsContainer - - type: ContainerContainer - containers: - actions: !type:Container - ents: - - 18526 -- proto: AltarSpawner - entities: + pos: -19.5,-39.5 - uid: 7717 components: - type: Transform parent: 2 pos: -22.5,-43.5 - - uid: 18768 - components: - - type: Transform - parent: 2 - pos: -18.5,-32.5 - proto: AmeController entities: - uid: 2283 @@ -8650,13 +8628,6 @@ entities: - type: Transform parent: 2 pos: 71.754875,-48.25979 -- proto: AsimovCircuitBoard - entities: - - uid: 18617 - components: - - type: Transform - parent: 2 - pos: 82.54185,-40.442722 - proto: AtmosDeviceFanDirectional entities: - uid: 135 @@ -8784,6 +8755,26 @@ entities: pos: 25.5,-9.5 - proto: AtmosFixBlockerMarker entities: + - uid: 2944 + components: + - type: Transform + parent: 2 + pos: 47.5,-85.5 + - uid: 3149 + components: + - type: Transform + parent: 2 + pos: 48.5,-85.5 + - uid: 3168 + components: + - type: Transform + parent: 2 + pos: 47.5,-84.5 + - uid: 3426 + components: + - type: Transform + parent: 2 + pos: 47.5,-83.5 - uid: 3629 components: - type: Transform @@ -8804,6 +8795,31 @@ entities: - type: Transform parent: 2 pos: 53.5,-62.5 + - uid: 3686 + components: + - type: Transform + parent: 2 + pos: 46.5,-85.5 + - uid: 3729 + components: + - type: Transform + parent: 2 + pos: 48.5,-84.5 + - uid: 6922 + components: + - type: Transform + parent: 2 + pos: 46.5,-83.5 + - uid: 6926 + components: + - type: Transform + parent: 2 + pos: 48.5,-83.5 + - uid: 10446 + components: + - type: Transform + parent: 2 + pos: 46.5,-84.5 - uid: 13837 components: - type: Transform @@ -8956,11 +8972,6 @@ entities: - type: Transform parent: 2 pos: 45.5,-37.5 - - uid: 5834 - components: - - type: Transform - parent: 2 - pos: 45.5,-35.5 - uid: 8146 components: - type: Transform @@ -9048,23 +9059,11 @@ entities: pos: -64.37506,-61.441326 - proto: BanjoInstrument entities: - - uid: 285 + - uid: 12792 components: - type: Transform parent: 2 - pos: -61.48744,-25.476637 -- proto: BannerCargo - entities: - - uid: 6762 - components: - - type: Transform - parent: 2 - pos: 22.5,-79.5 - - uid: 6763 - components: - - type: Transform - parent: 2 - pos: 26.5,-79.5 + pos: -61.62356,-25.437422 - proto: Barricade entities: - uid: 1674 @@ -9125,11 +9124,6 @@ entities: - type: Transform parent: 2 pos: 76.5,-40.5 - - uid: 7590 - components: - - type: Transform - parent: 2 - pos: 80.5,-27.5 - uid: 11847 components: - type: Transform @@ -9176,11 +9170,6 @@ entities: - type: Transform parent: 2 pos: 23.5,-50.5 - - uid: 7258 - components: - - type: Transform - parent: 2 - pos: 80.5,-26.5 - uid: 7380 components: - type: Transform @@ -9338,6 +9327,16 @@ entities: - type: Transform parent: 2 pos: 14.5,-63.5 + - uid: 6457 + components: + - type: Transform + parent: 2 + pos: -40.5,-14.5 + - uid: 6458 + components: + - type: Transform + parent: 2 + pos: -37.5,-16.5 - uid: 6814 components: - type: Transform @@ -9685,6 +9684,12 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: -21.5,-31.5 + - uid: 6243 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 49.5,-84.5 - uid: 8421 components: - type: Transform @@ -10017,12 +10022,6 @@ entities: pos: 73.5,-48.5 - proto: BorgCharger entities: - - uid: 2774 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 15.5,-90.5 - uid: 5064 components: - type: Transform @@ -10101,11 +10100,6 @@ entities: pos: -20.542322,-41.278927 - proto: BoxCartridgeCap entities: - - uid: 17387 - components: - - type: Transform - parent: 2 - pos: 86.57508,-17.524826 - uid: 17966 components: - type: Transform @@ -10335,11 +10329,11 @@ entities: pos: 13.433219,-59.536785 - proto: BriefcaseBrown entities: - - uid: 6063 + - uid: 12791 components: - type: Transform parent: 2 - pos: -33.507446,-25.328426 + pos: -32.492767,-26.34273 - proto: BriefcaseBrownFilled entities: - uid: 9364 @@ -10465,12 +10459,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 50.5,-66.5 - - uid: 15697 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 36.5,-27.5 - uid: 16048 components: - type: Transform @@ -10581,12 +10569,6 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 65.5,-53.5 - - uid: 15699 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 36.5,-29.5 - uid: 16618 components: - type: Transform @@ -10741,6 +10723,16 @@ entities: - type: Transform parent: 2 pos: -22.5,-18.5 + - uid: 1140 + components: + - type: Transform + parent: 2 + pos: 39.5,-29.5 + - uid: 1159 + components: + - type: Transform + parent: 2 + pos: 39.5,-30.5 - uid: 1172 components: - type: Transform @@ -10756,6 +10748,11 @@ entities: - type: Transform parent: 2 pos: -5.5,-11.5 + - uid: 1220 + components: + - type: Transform + parent: 2 + pos: 39.5,-28.5 - uid: 1257 components: - type: Transform @@ -10786,11 +10783,26 @@ entities: - type: Transform parent: 2 pos: -37.5,-12.5 + - uid: 1559 + components: + - type: Transform + parent: 2 + pos: 47.5,-30.5 - uid: 1563 components: - type: Transform parent: 2 pos: -46.5,-66.5 + - uid: 1642 + components: + - type: Transform + parent: 2 + pos: -33.5,-26.5 + - uid: 1645 + components: + - type: Transform + parent: 2 + pos: -33.5,-25.5 - uid: 1709 components: - type: Transform @@ -10836,11 +10848,6 @@ entities: - type: Transform parent: 2 pos: -16.5,-74.5 - - uid: 2246 - components: - - type: Transform - parent: 2 - pos: 38.5,-28.5 - uid: 2275 components: - type: Transform @@ -10906,6 +10913,11 @@ entities: - type: Transform parent: 2 pos: -42.5,-78.5 + - uid: 3004 + components: + - type: Transform + parent: 2 + pos: 46.5,-30.5 - uid: 3022 components: - type: Transform @@ -10966,11 +10978,6 @@ entities: - type: Transform parent: 2 pos: 63.5,-20.5 - - uid: 3091 - components: - - type: Transform - parent: 2 - pos: 45.5,-31.5 - uid: 3095 components: - type: Transform @@ -10991,11 +10998,6 @@ entities: - type: Transform parent: 2 pos: 58.5,-68.5 - - uid: 3149 - components: - - type: Transform - parent: 2 - pos: 45.5,-32.5 - uid: 3153 components: - type: Transform @@ -11096,6 +11098,11 @@ entities: - type: Transform parent: 2 pos: 77.5,-28.5 + - uid: 3312 + components: + - type: Transform + parent: 2 + pos: 40.5,-30.5 - uid: 3316 components: - type: Transform @@ -11191,11 +11198,6 @@ entities: - type: Transform parent: 2 pos: 43.5,-38.5 - - uid: 3426 - components: - - type: Transform - parent: 2 - pos: 39.5,-28.5 - uid: 3435 components: - type: Transform @@ -11231,6 +11233,11 @@ entities: - type: Transform parent: 2 pos: -14.5,-79.5 + - uid: 3530 + components: + - type: Transform + parent: 2 + pos: 45.5,-30.5 - uid: 3554 components: - type: Transform @@ -11251,6 +11258,11 @@ entities: - type: Transform parent: 2 pos: 63.5,-25.5 + - uid: 3592 + components: + - type: Transform + parent: 2 + pos: 45.5,-27.5 - uid: 3601 components: - type: Transform @@ -11261,11 +11273,6 @@ entities: - type: Transform parent: 2 pos: 64.5,-67.5 - - uid: 3608 - components: - - type: Transform - parent: 2 - pos: 37.5,-28.5 - uid: 3610 components: - type: Transform @@ -11281,6 +11288,11 @@ entities: - type: Transform parent: 2 pos: 46.5,-52.5 + - uid: 3617 + components: + - type: Transform + parent: 2 + pos: 43.5,-27.5 - uid: 3622 components: - type: Transform @@ -11340,67 +11352,12 @@ entities: components: - type: Transform parent: 2 - pos: 43.5,-27.5 - - uid: 3686 - components: - - type: Transform - parent: 2 - pos: 40.5,-27.5 - - uid: 3694 - components: - - type: Transform - parent: 2 - pos: 43.5,-26.5 - - uid: 3695 - components: - - type: Transform - parent: 2 - pos: 45.5,-26.5 - - uid: 3696 - components: - - type: Transform - parent: 2 - pos: 46.5,-27.5 - - uid: 3698 - components: - - type: Transform - parent: 2 - pos: 45.5,-27.5 - - uid: 3699 - components: - - type: Transform - parent: 2 - pos: 46.5,-28.5 - - uid: 3700 - components: - - type: Transform - parent: 2 - pos: 45.5,-33.5 - - uid: 3701 - components: - - type: Transform - parent: 2 - pos: 45.5,-35.5 - - uid: 3702 - components: - - type: Transform - parent: 2 - pos: 45.5,-30.5 - - uid: 3703 - components: - - type: Transform - parent: 2 - pos: 45.5,-29.5 + pos: 41.5,-30.5 - uid: 3704 components: - type: Transform parent: 2 pos: 45.5,-38.5 - - uid: 3707 - components: - - type: Transform - parent: 2 - pos: 45.5,-36.5 - uid: 3712 components: - type: Transform @@ -11410,7 +11367,7 @@ entities: components: - type: Transform parent: 2 - pos: 45.5,-34.5 + pos: 45.5,-29.5 - uid: 3735 components: - type: Transform @@ -11451,6 +11408,11 @@ entities: - type: Transform parent: 2 pos: 31.5,-32.5 + - uid: 3766 + components: + - type: Transform + parent: 2 + pos: 47.5,-77.5 - uid: 3781 components: - type: Transform @@ -11551,6 +11513,11 @@ entities: - type: Transform parent: 2 pos: 37.5,-79.5 + - uid: 4003 + components: + - type: Transform + parent: 2 + pos: 47.5,-80.5 - uid: 4017 components: - type: Transform @@ -11566,6 +11533,11 @@ entities: - type: Transform parent: 2 pos: 9.5,-48.5 + - uid: 4079 + components: + - type: Transform + parent: 2 + pos: 47.5,-82.5 - uid: 4080 components: - type: Transform @@ -11601,6 +11573,16 @@ entities: - type: Transform parent: 2 pos: 58.5,-24.5 + - uid: 4193 + components: + - type: Transform + parent: 2 + pos: 47.5,-78.5 + - uid: 4199 + components: + - type: Transform + parent: 2 + pos: 47.5,-81.5 - uid: 4206 components: - type: Transform @@ -11636,6 +11618,11 @@ entities: - type: Transform parent: 2 pos: 47.5,-19.5 + - uid: 4224 + components: + - type: Transform + parent: 2 + pos: 47.5,-83.5 - uid: 4264 components: - type: Transform @@ -11726,6 +11713,11 @@ entities: - type: Transform parent: 2 pos: 32.5,-68.5 + - uid: 4817 + components: + - type: Transform + parent: 2 + pos: 47.5,-79.5 - uid: 4881 components: - type: Transform @@ -11771,6 +11763,11 @@ entities: - type: Transform parent: 2 pos: -12.5,-34.5 + - uid: 5201 + components: + - type: Transform + parent: 2 + pos: 67.5,-48.5 - uid: 5207 components: - type: Transform @@ -11791,11 +11788,6 @@ entities: - type: Transform parent: 2 pos: 4.5,-52.5 - - uid: 5281 - components: - - type: Transform - parent: 2 - pos: 40.5,-28.5 - uid: 5282 components: - type: Transform @@ -11861,11 +11853,6 @@ entities: - type: Transform parent: 2 pos: 51.5,-41.5 - - uid: 5307 - components: - - type: Transform - parent: 2 - pos: 41.5,-27.5 - uid: 5309 components: - type: Transform @@ -12165,7 +12152,7 @@ entities: components: - type: Transform parent: 2 - pos: 44.5,-26.5 + pos: 47.5,-84.5 - uid: 6384 components: - type: Transform @@ -12176,6 +12163,11 @@ entities: - type: Transform parent: 2 pos: 83.5,-43.5 + - uid: 6400 + components: + - type: Transform + parent: 2 + pos: 41.5,-27.5 - uid: 6402 components: - type: Transform @@ -12196,6 +12188,11 @@ entities: - type: Transform parent: 2 pos: -2.5,-36.5 + - uid: 6554 + components: + - type: Transform + parent: 2 + pos: 37.5,-31.5 - uid: 6626 components: - type: Transform @@ -12346,11 +12343,21 @@ entities: - type: Transform parent: 2 pos: 52.5,-14.5 + - uid: 7327 + components: + - type: Transform + parent: 2 + pos: 39.5,-31.5 - uid: 7339 components: - type: Transform parent: 2 pos: 3.5,-59.5 + - uid: 7369 + components: + - type: Transform + parent: 2 + pos: 37.5,-29.5 - uid: 7393 components: - type: Transform @@ -12536,11 +12543,6 @@ entities: - type: Transform parent: 2 pos: 77.5,-54.5 - - uid: 7750 - components: - - type: Transform - parent: 2 - pos: 46.5,-29.5 - uid: 7757 components: - type: Transform @@ -12556,6 +12558,11 @@ entities: - type: Transform parent: 2 pos: 7.5,-59.5 + - uid: 7891 + components: + - type: Transform + parent: 2 + pos: 37.5,-30.5 - uid: 7892 components: - type: Transform @@ -12731,6 +12738,16 @@ entities: - type: Transform parent: 2 pos: 59.5,-27.5 + - uid: 8617 + components: + - type: Transform + parent: 2 + pos: -33.5,-27.5 + - uid: 8623 + components: + - type: Transform + parent: 2 + pos: 44.5,-27.5 - uid: 8626 components: - type: Transform @@ -12751,6 +12768,16 @@ entities: - type: Transform parent: 2 pos: 18.5,-82.5 + - uid: 8733 + components: + - type: Transform + parent: 2 + pos: 42.5,-27.5 + - uid: 8785 + components: + - type: Transform + parent: 2 + pos: 40.5,-27.5 - uid: 8798 components: - type: Transform @@ -18931,16 +18958,6 @@ entities: - type: Transform parent: 2 pos: -35.5,-27.5 - - uid: 12634 - components: - - type: Transform - parent: 2 - pos: -34.5,-27.5 - - uid: 12635 - components: - - type: Transform - parent: 2 - pos: -33.5,-27.5 - uid: 12636 components: - type: Transform @@ -19556,11 +19573,6 @@ entities: - type: Transform parent: 2 pos: 24.5,-68.5 - - uid: 12792 - components: - - type: Transform - parent: 2 - pos: 42.5,-27.5 - uid: 12798 components: - type: Transform @@ -19981,6 +19993,11 @@ entities: - type: Transform parent: 2 pos: 65.5,-43.5 + - uid: 12961 + components: + - type: Transform + parent: 2 + pos: 39.5,-27.5 - uid: 12966 components: - type: Transform @@ -21606,6 +21623,11 @@ entities: - type: Transform parent: 2 pos: 75.5,-58.5 + - uid: 14262 + components: + - type: Transform + parent: 2 + pos: 45.5,-28.5 - uid: 14263 components: - type: Transform @@ -31364,6 +31386,11 @@ entities: - type: Transform parent: 2 pos: -2.5,-48.5 + - uid: 7796 + components: + - type: Transform + parent: 2 + pos: 67.5,-48.5 - uid: 7946 components: - type: Transform @@ -35188,6 +35215,12 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 70.5,-53.5 + - uid: 3450 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 42.5,-30.5 - uid: 3540 components: - type: Transform @@ -35255,26 +35288,12 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 69.5,-52.5 - - uid: 17424 + - uid: 8148 components: - type: Transform parent: 2 - pos: 36.5,-44.5 - - uid: 17425 - components: - - type: Transform - parent: 2 - pos: 36.5,-42.5 - - uid: 17429 - components: - - type: Transform - parent: 2 - pos: 36.5,-45.5 - - uid: 17430 - components: - - type: Transform - parent: 2 - pos: 36.5,-43.5 + rot: -1.5707963267948966 rad + pos: 41.5,-30.5 - uid: 18257 components: - type: Transform @@ -35701,6 +35720,12 @@ entities: pos: -24.5,-35.5 - proto: CarpetBlue entities: + - uid: 1804 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 4.5,-69.5 - uid: 5129 components: - type: Transform @@ -35821,11 +35846,6 @@ entities: - type: Transform parent: 2 pos: 5.5,-69.5 - - uid: 20118 - components: - - type: Transform - parent: 2 - pos: 4.5,-69.5 - proto: CarpetChapel entities: - uid: 5030 @@ -35853,6 +35873,30 @@ entities: pos: -18.5,-33.5 - proto: CarpetGreen entities: + - uid: 1667 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 36.5,-43.5 + - uid: 1668 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 36.5,-45.5 + - uid: 1673 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 36.5,-42.5 + - uid: 1696 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 36.5,-44.5 - uid: 5945 components: - type: Transform @@ -36853,6 +36897,23 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 37.5,-88.5 + - uid: 1073 + components: + - type: Transform + parent: 2 + pos: 31.5,-29.5 + - uid: 1171 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 38.5,-34.5 + - uid: 1209 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 39.5,-34.5 - uid: 1485 components: - type: Transform @@ -36886,11 +36947,51 @@ entities: - type: Transform parent: 2 pos: -32.5,-48.5 + - uid: 2536 + components: + - type: Transform + parent: 2 + pos: 32.5,-29.5 + - uid: 2578 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 43.5,-32.5 + - uid: 2701 + components: + - type: Transform + parent: 2 + pos: 32.5,-27.5 + - uid: 2703 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 42.5,-32.5 + - uid: 2705 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 45.5,-76.5 - uid: 2930 components: - type: Transform parent: 2 pos: -14.5,-71.5 + - uid: 2969 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 55.5,-76.5 + - uid: 2970 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 32.5,-32.5 - uid: 3049 components: - type: Transform @@ -36906,6 +37007,18 @@ entities: - type: Transform parent: 2 pos: 74.5,-29.5 + - uid: 3160 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 54.5,-76.5 + - uid: 3169 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 35.5,-32.5 - uid: 3213 components: - type: Transform @@ -36941,16 +37054,12 @@ entities: - type: Transform parent: 2 pos: 31.5,-72.5 - - uid: 3450 - components: - - type: Transform - parent: 2 - pos: 50.5,-26.5 - uid: 3471 components: - type: Transform parent: 2 - pos: 49.5,-26.5 + rot: 1.5707963267948966 rad + pos: 49.5,-76.5 - uid: 3508 components: - type: Transform @@ -36966,6 +37075,12 @@ entities: - type: Transform parent: 2 pos: -15.5,-65.5 + - uid: 3531 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 36.5,-32.5 - uid: 3632 components: - type: Transform @@ -36989,11 +37104,47 @@ entities: - type: Transform parent: 2 pos: 33.5,-35.5 + - uid: 3707 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 47.5,-32.5 - uid: 3713 components: - type: Transform parent: 2 pos: 79.5,-31.5 + - uid: 3720 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 28.5,-32.5 + - uid: 3722 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 37.5,-32.5 + - uid: 3723 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 34.5,-35.5 + - uid: 3725 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 28.5,-33.5 + - uid: 3732 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 48.5,-29.5 - uid: 3748 components: - type: Transform @@ -37130,11 +37281,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: -8.5,-35.5 - - uid: 4193 - components: - - type: Transform - parent: 2 - pos: 51.5,-26.5 - uid: 4393 components: - type: Transform @@ -37550,12 +37696,71 @@ entities: - type: Transform parent: 2 pos: 24.5,-53.5 + - uid: 6368 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 37.5,-34.5 + - uid: 6376 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 51.5,-76.5 - uid: 6381 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad pos: 74.5,-31.5 + - uid: 6394 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 50.5,-76.5 + - uid: 6395 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 47.5,-33.5 + - uid: 6396 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 47.5,-34.5 + - uid: 6397 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 41.5,-32.5 + - uid: 6456 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 40.5,-34.5 + - uid: 6461 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 43.5,-76.5 + - uid: 6552 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 41.5,-34.5 + - uid: 6763 + components: + - type: Transform + parent: 2 + pos: 34.5,-27.5 - uid: 7084 components: - type: Transform @@ -37567,6 +37772,12 @@ entities: - type: Transform parent: 2 pos: 74.5,-52.5 + - uid: 7257 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 53.5,-76.5 - uid: 7284 components: - type: Transform @@ -37582,6 +37793,24 @@ entities: - type: Transform parent: 2 pos: 33.5,-70.5 + - uid: 7337 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 37.5,-33.5 + - uid: 7590 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 45.5,-32.5 + - uid: 7603 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 48.5,-76.5 - uid: 7608 components: - type: Transform @@ -37592,6 +37821,11 @@ entities: - type: Transform parent: 2 pos: 75.5,-46.5 + - uid: 7699 + components: + - type: Transform + parent: 2 + pos: 33.5,-27.5 - uid: 7714 components: - type: Transform @@ -37612,6 +37846,12 @@ entities: - type: Transform parent: 2 pos: 75.5,-47.5 + - uid: 7990 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 41.5,-33.5 - uid: 8071 components: - type: Transform @@ -37663,6 +37903,12 @@ entities: - type: Transform parent: 2 pos: 77.5,-71.5 + - uid: 8150 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 56.5,-76.5 - uid: 8155 components: - type: Transform @@ -37873,21 +38119,46 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 46.5,-47.5 - - uid: 9711 - components: - - type: Transform - parent: 2 - pos: 37.5,-30.5 - uid: 10407 components: - type: Transform parent: 2 pos: 93.5,-50.5 + - uid: 10447 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 56.5,-75.5 - uid: 10530 components: - type: Transform parent: 2 pos: -25.5,-21.5 + - uid: 10661 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 46.5,-32.5 + - uid: 10668 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 44.5,-32.5 + - uid: 10818 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 46.5,-76.5 + - uid: 11402 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 47.5,-76.5 - uid: 11793 components: - type: Transform @@ -37899,6 +38170,16 @@ entities: - type: Transform parent: 2 pos: 77.5,-29.5 + - uid: 11979 + components: + - type: Transform + parent: 2 + pos: 30.5,-29.5 + - uid: 11980 + components: + - type: Transform + parent: 2 + pos: 34.5,-29.5 - uid: 12410 components: - type: Transform @@ -37910,6 +38191,41 @@ entities: - type: Transform parent: 2 pos: 33.5,-72.5 + - uid: 12871 + components: + - type: Transform + parent: 2 + pos: 29.5,-27.5 + - uid: 12879 + components: + - type: Transform + parent: 2 + pos: 28.5,-29.5 + - uid: 12881 + components: + - type: Transform + parent: 2 + pos: 28.5,-27.5 + - uid: 12884 + components: + - type: Transform + parent: 2 + pos: 30.5,-27.5 + - uid: 12926 + components: + - type: Transform + parent: 2 + pos: 31.5,-27.5 + - uid: 12952 + components: + - type: Transform + parent: 2 + pos: 29.5,-29.5 + - uid: 12958 + components: + - type: Transform + parent: 2 + pos: 33.5,-29.5 - uid: 12992 components: - type: Transform @@ -38097,24 +38413,6 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 3.5,-60.5 - - uid: 16164 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 39.5,-30.5 - - uid: 16175 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 40.5,-30.5 - - uid: 16193 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 41.5,-30.5 - uid: 16587 components: - type: Transform @@ -38475,18 +38773,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 83.5,-68.5 - - uid: 18720 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 83.5,-70.5 - - uid: 18721 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 82.5,-70.5 - uid: 18846 components: - type: Transform @@ -39031,12 +39317,6 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: -48.5,-47.5 - - uid: 5955 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -61.426323,-25.462961 - uid: 6904 components: - type: Transform @@ -39092,18 +39372,6 @@ entities: pos: -46.5,-44.5 - proto: ChairFoldingSpawnFolded entities: - - uid: 7752 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 47.450993,-25.454924 - - uid: 15417 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 47.482243,-25.298674 - uid: 16294 components: - type: Transform @@ -39488,13 +39756,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: -25.5,-33.5 -- proto: CheapLighter - entities: - - uid: 3613 - components: - - type: Transform - parent: 2 - pos: 45.30708,-27.668627 - proto: CheapRollerBed entities: - uid: 2888 @@ -39610,7 +39871,7 @@ entities: pos: 27.466145,-45.479877 - proto: ChunkEntity entities: - - uid: 7297 + - uid: 14405 components: - type: ChunkEntity root: 2 @@ -39663,7 +39924,7 @@ entities: 4806: 49,-98 4807: 50,-98 4808: 51,-98 - - uid: 20218 + - uid: 14407 components: - type: ChunkEntity root: 2 @@ -39900,7 +40161,7 @@ entities: color: '#FFFFFFFF' decals: 242: 22,-85 - - uid: 20219 + - uid: 14408 components: - type: ChunkEntity root: 2 @@ -40127,7 +40388,7 @@ entities: 571: -3,-9 572: -2,-9 573: -1,-9 - - uid: 20220 + - uid: 14926 components: - type: ChunkEntity root: 2 @@ -40357,7 +40618,7 @@ entities: 1084: 5,-15 1085: 6,-15 1086: 7,-15 - - uid: 20221 + - uid: 14928 components: - type: ChunkEntity root: 2 @@ -40394,7 +40655,7 @@ entities: decals: 2175: -32,-81 2176: -32,-83 - - uid: 20222 + - uid: 14973 components: - type: ChunkEntity root: 2 @@ -40536,7 +40797,7 @@ entities: angle: 1.5707963267948966 rad decals: 413: 75.21097,-20.015972 - - uid: 20223 + - uid: 15216 components: - type: ChunkEntity root: 2 @@ -40699,7 +40960,7 @@ entities: color: '#FFFFFFFF' decals: 1724: 56.020706,-14.938012 - - uid: 20224 + - uid: 15236 components: - type: ChunkEntity root: 2 @@ -41077,7 +41338,7 @@ entities: color: '#FFFFFFFF' decals: 5238: 58,-20 - - uid: 20225 + - uid: 15269 components: - type: ChunkEntity root: 2 @@ -41138,7 +41399,7 @@ entities: color: '#95FF6F72' decals: 553: 6,1 - - uid: 20226 + - uid: 15404 components: - type: ChunkEntity root: 2 @@ -41209,7 +41470,7 @@ entities: color: '#95FF6F72' decals: 550: -4,1 - - uid: 20227 + - uid: 15413 components: - type: ChunkEntity root: 2 @@ -41492,7 +41753,7 @@ entities: color: '#FFFFFFFF' decals: 3112: -8,-23 - - uid: 20228 + - uid: 15417 components: - type: ChunkEntity root: 2 @@ -41560,7 +41821,7 @@ entities: color: '#52B4E996' decals: 3975: -39,-17 - - uid: 20229 + - uid: 15471 components: - type: ChunkEntity root: 2 @@ -41661,7 +41922,7 @@ entities: color: '#FFFFFFFF' decals: 5192: 13,-43 - - uid: 20230 + - uid: 15478 components: - type: ChunkEntity root: 2 @@ -41918,7 +42179,7 @@ entities: angle: 6.283185307179586 rad decals: 24: 9.606441,-22.615063 - - uid: 20231 + - uid: 15545 components: - type: ChunkEntity root: 2 @@ -42029,7 +42290,7 @@ entities: decals: 5274: 1,-56 5275: 1,-57 - - uid: 20232 + - uid: 15596 components: - type: ChunkEntity root: 2 @@ -42138,7 +42399,7 @@ entities: color: '#FF940093' decals: 1870: 41,-15 - - uid: 20233 + - uid: 15621 components: - type: ChunkEntity root: 2 @@ -42211,7 +42472,7 @@ entities: 231: -15,-67 232: -15,-66 3906: -13,-70 - - uid: 20234 + - uid: 15694 components: - type: ChunkEntity root: 2 @@ -42388,7 +42649,7 @@ entities: decals: 4076: 46,-71 4104: 45,-72 - - uid: 20235 + - uid: 15696 components: - type: ChunkEntity root: 2 @@ -42460,7 +42721,7 @@ entities: decals: 4071: 51,-67 4084: 48,-71 - - uid: 20236 + - uid: 15697 components: - type: ChunkEntity root: 2 @@ -42611,41 +42872,11 @@ entities: 1927: 47,-19 1928: 46,-18 1929: 46,-19 - - node: - id: MiniTileDarkCornerNe - color: '#FFFFFFFF' - decals: - 4177: 34,-28 - - node: - id: MiniTileDarkCornerSe - color: '#FFFFFFFF' - decals: - 4176: 34,-30 - - node: - id: MiniTileDarkInnerNe - color: '#FFFFFFFF' - decals: - 4191: 34,-29 - - node: - id: MiniTileDarkInnerSe - color: '#FFFFFFFF' - decals: - 4190: 34,-29 - node: id: MiniTileDarkLineN color: '#FFFFFFFF' decals: - 4181: 32,-28 - 4182: 33,-28 - 4193: 35,-29 4383: 35,-18 - - node: - id: MiniTileDarkLineS - color: '#FFFFFFFF' - decals: - 4186: 32,-30 - 4187: 33,-30 - 4192: 35,-29 - node: id: MiniTileInnerOverlayNE color: '#FF940093' @@ -42720,7 +42951,7 @@ entities: 1604: 45,-21 1605: 46,-21 1606: 47,-21 - - uid: 20237 + - uid: 15698 components: - type: ChunkEntity root: 2 @@ -42847,36 +43078,11 @@ entities: color: '#FA750096' decals: 4509: 19,-26 - - node: - id: MiniTileDarkCornerNw - color: '#FFFFFFFF' - decals: - 4174: 28,-28 - - node: - id: MiniTileDarkCornerSw - color: '#FFFFFFFF' - decals: - 4175: 28,-30 - - node: - id: MiniTileDarkLineN - color: '#FFFFFFFF' - decals: - 4178: 29,-28 - 4179: 30,-28 - 4180: 31,-28 - node: id: MiniTileDarkLineS color: '#FFFFFFFF' decals: 2960: 26,-30 - 4183: 29,-30 - 4184: 30,-30 - 4185: 31,-30 - - node: - id: MiniTileDarkLineW - color: '#FFFFFFFF' - decals: - 4188: 28,-29 - node: id: MiniTileInnerOverlayNE color: '#52B4E996' @@ -43007,7 +43213,7 @@ entities: color: '#FFFFFFFF' decals: 4514: 20,-25 - - uid: 20238 + - uid: 15699 components: - type: ChunkEntity root: 2 @@ -43177,7 +43383,7 @@ entities: decals: 4632: 73,-48 4633: 72,-48 - - uid: 20239 + - uid: 15700 components: - type: ChunkEntity root: 2 @@ -43510,7 +43716,7 @@ entities: decals: 4529: 59,-45 4530: 60,-45 - - uid: 20240 + - uid: 15790 components: - type: ChunkEntity root: 2 @@ -43619,7 +43825,7 @@ entities: color: '#FFFFFFFF' decals: 5328: -16,-57 - - uid: 20241 + - uid: 15849 components: - type: ChunkEntity root: 2 @@ -43772,7 +43978,7 @@ entities: 5042: -7,-34 5043: -6,-34 5044: -5,-34 - - uid: 20242 + - uid: 15852 components: - type: ChunkEntity root: 2 @@ -43911,7 +44117,7 @@ entities: decals: 5123: -30,-50 5124: -30,-49 - - uid: 20243 + - uid: 15853 components: - type: ChunkEntity root: 2 @@ -43975,18 +44181,7 @@ entities: id: FullTileOverlayGreyscale color: '#5287D431' decals: - 5421: 5,-74 - 5422: 4,-72 - 5423: 6,-74 - 5424: 6,-73 - 5425: 4,-71 - 5426: 5,-73 5427: 4,-73 - 5428: 4,-70 - 5429: 5,-70 - 5430: 6,-70 - 5431: 6,-71 - 5432: 6,-72 5433: 6,-69 - node: id: HalfTileOverlayGreyscale @@ -44000,12 +44195,6 @@ entities: decals: 1573: 14,-71 1574: 13,-71 - - node: - id: MiniTileOverlay - color: '#5287D431' - decals: - 5434: 5,-72 - 5435: 5,-71 - node: id: MonoOverlay color: '#D381C971' @@ -44078,7 +44267,7 @@ entities: 5339: 8,-74 5340: 9,-74 5341: 10,-74 - - uid: 20244 + - uid: 15856 components: - type: ChunkEntity root: 2 @@ -44169,7 +44358,7 @@ entities: color: '#52B4E996' decals: 3976: -38,-15 - - uid: 20245 + - uid: 15857 components: - type: ChunkEntity root: 2 @@ -44321,7 +44510,7 @@ entities: color: '#FFFFFFFF' decals: 5322: 23,-69 - - uid: 20246 + - uid: 15912 components: - type: ChunkEntity root: 2 @@ -44443,7 +44632,7 @@ entities: color: '#FFFFFFFF' decals: 5560: 24,-53 - - uid: 20247 + - uid: 15913 components: - type: ChunkEntity root: 2 @@ -44674,7 +44863,7 @@ entities: 3465: -18,-17 3466: -17,-17 3467: -17,-20 - - uid: 20248 + - uid: 16021 components: - type: ChunkEntity root: 2 @@ -44827,7 +45016,7 @@ entities: angle: 4.71238898038469 rad decals: 3907: -18,-70 - - uid: 20249 + - uid: 16045 components: - type: ChunkEntity root: 2 @@ -44969,7 +45158,7 @@ entities: 3037: 18,-101 3038: 18,-100 3039: 18,-99 - - uid: 20250 + - uid: 16046 components: - type: ChunkEntity root: 2 @@ -45017,7 +45206,7 @@ entities: 2237: 23,-12 2238: 24,-12 2239: 25,-12 - - uid: 20251 + - uid: 16047 components: - type: ChunkEntity root: 2 @@ -45151,7 +45340,7 @@ entities: 2335: 14,-83 2337: 10,-83 2366: 12,-83 - - uid: 20252 + - uid: 16164 components: - type: ChunkEntity root: 2 @@ -45251,7 +45440,7 @@ entities: decals: 4144: 94,-47 4145: 94,-45 - - uid: 20253 + - uid: 16175 components: - type: ChunkEntity root: 2 @@ -45310,7 +45499,7 @@ entities: 3: 86,-50 4130: 90,-50 4131: 91,-50 - - uid: 20254 + - uid: 16193 components: - type: ChunkEntity root: 2 @@ -45347,7 +45536,7 @@ entities: color: '#FFFFFFFF' decals: 5456: 32,-82 - - uid: 20255 + - uid: 16449 components: - type: ChunkEntity root: 2 @@ -45418,7 +45607,7 @@ entities: 5109: -37,-47 5112: -35,-47 5113: -36,-47 - - uid: 20256 + - uid: 16535 components: - type: ChunkEntity root: 2 @@ -45489,7 +45678,7 @@ entities: cleanable: True decals: 5466: -40,-77 - - uid: 20257 + - uid: 16606 components: - type: ChunkEntity root: 2 @@ -45549,24 +45738,6 @@ entities: 4827: 40,-47 4828: 40,-48 4829: 39,-47 - - node: - id: DiagonalCheckerAOverlay - color: '#0000008C' - decals: - 1455: 37,-47 - 1456: 36,-47 - 1457: 36,-46 - 1458: 37,-46 - 1459: 37,-45 - 1460: 36,-45 - 1461: 36,-44 - 1462: 37,-44 - 1463: 37,-43 - 1464: 36,-43 - 1465: 36,-42 - 1466: 37,-42 - 1467: 37,-41 - 1468: 36,-41 - node: id: LoadingArea color: '#FFFFFFFF' @@ -45603,7 +45774,7 @@ entities: color: '#48D256FF' decals: 4836: 39,-48 - - uid: 20258 + - uid: 16856 components: - type: ChunkEntity root: 2 @@ -45619,7 +45790,7 @@ entities: cleanable: True decals: 950: 80,-68 - - uid: 20259 + - uid: 16859 components: - type: ChunkEntity root: 2 @@ -45636,7 +45807,7 @@ entities: decals: 958: 80,-29 960: 80,-27 - - uid: 20260 + - uid: 16871 components: - type: ChunkEntity root: 2 @@ -45721,7 +45892,7 @@ entities: decals: 311: 31,-39 312: 31,-38 - - uid: 20261 + - uid: 17098 components: - type: ChunkEntity root: 2 @@ -45751,7 +45922,7 @@ entities: cleanable: True decals: 1519: -53,-69 - - uid: 20262 + - uid: 17099 components: - type: ChunkEntity root: 2 @@ -45792,7 +45963,7 @@ entities: decals: 4167: 76,-65 4168: 76,-66 - - uid: 20263 + - uid: 17103 components: - type: ChunkEntity root: 2 @@ -45821,7 +45992,7 @@ entities: 3996: 52,-62 3997: 53,-63 3998: 53,-64 - - uid: 20264 + - uid: 17108 components: - type: ChunkEntity root: 2 @@ -45859,7 +46030,7 @@ entities: color: '#FFFFFFFF' decals: 1584: -57,-27 - - uid: 20265 + - uid: 17113 components: - type: ChunkEntity root: 2 @@ -45985,7 +46156,7 @@ entities: color: '#FFFFFFFF' decals: 4627: 72,-50 - - uid: 20266 + - uid: 17114 components: - type: ChunkEntity root: 2 @@ -46051,7 +46222,7 @@ entities: decals: 789: 42,-52 790: 42,-51 - - uid: 20267 + - uid: 17115 components: - type: ChunkEntity root: 2 @@ -46098,7 +46269,7 @@ entities: decals: 5121: -30,-43 5122: -30,-42 - - uid: 20268 + - uid: 17173 components: - type: ChunkEntity root: 2 @@ -46128,7 +46299,7 @@ entities: 2529: -56,-64 2530: -56,-63 2531: -56,-62 - - uid: 20269 + - uid: 17247 components: - type: ChunkEntity root: 2 @@ -46179,7 +46350,7 @@ entities: decals: 5117: -35,-50 5118: -35,-49 - - uid: 20270 + - uid: 17248 components: - type: ChunkEntity root: 2 @@ -46399,6 +46570,11 @@ entities: - type: Transform parent: 2 pos: 62.5,-63.5 + - uid: 12801 + components: + - type: Transform + parent: 2 + pos: 47.5,-28.5 - uid: 12971 components: - type: Transform @@ -46424,21 +46600,11 @@ entities: - type: Transform parent: 2 pos: 38.5,-25.5 - - uid: 15596 - components: - - type: Transform - parent: 2 - pos: 47.5,-31.5 - uid: 17038 components: - type: Transform parent: 2 pos: -12.5,-80.5 - - uid: 17396 - components: - - type: Transform - parent: 2 - pos: 83.5,-20.5 - uid: 17888 components: - type: Transform @@ -46707,16 +46873,16 @@ entities: pos: 36.5,-18.5 - proto: ClosetMaintenanceFilledRandom entities: - - uid: 919 - components: - - type: Transform - parent: 2 - pos: 37.5,-30.5 - uid: 3006 components: - type: Transform parent: 2 pos: 53.5,-26.5 + - uid: 3721 + components: + - type: Transform + parent: 2 + pos: 39.5,-32.5 - uid: 6013 components: - type: Transform @@ -46802,6 +46968,11 @@ entities: - type: Transform parent: 2 pos: 64.5,-70.5 + - uid: 9913 + components: + - type: Transform + parent: 2 + pos: 81.5,-17.5 - uid: 10672 components: - type: Transform @@ -46852,11 +47023,6 @@ entities: - type: Transform parent: 2 pos: -5.5,-79.5 - - uid: 17395 - components: - - type: Transform - parent: 2 - pos: 82.5,-20.5 - uid: 18250 components: - type: Transform @@ -47052,13 +47218,6 @@ entities: components: - Armor - ClothingSpeedModifier -- proto: ClothingBackpackSalvage - entities: - - uid: 19414 - components: - - type: Transform - parent: 2 - pos: -61.625114,-24.788584 - proto: ClothingBackpackSatchelChemistry entities: - uid: 2201 @@ -47209,6 +47368,13 @@ entities: - type: Transform parent: 2 pos: -22.554304,-49.354877 +- proto: ClothingHandsGlovesFingerlessInsulated + entities: + - uid: 7726 + components: + - type: Transform + parent: 2 + pos: 47.5,-27.5 - proto: ClothingHandsGlovesLatex entities: - uid: 7432 @@ -47317,13 +47483,6 @@ entities: - type: Transform parent: 2 pos: -42.64476,-62.24417 -- proto: ClothingHeadHatChef - entities: - - uid: 19742 - components: - - type: Transform - parent: 2 - pos: 42.692513,-34.382397 - proto: ClothingHeadHatCone entities: - uid: 2336 @@ -47398,13 +47557,6 @@ entities: - type: Transform parent: 2 pos: -9.642316,-74.35967 -- proto: ClothingHeadHatJesterAlt - entities: - - uid: 17525 - components: - - type: Transform - parent: 2 - pos: 83.39368,-72.298546 - proto: ClothingHeadHatPaper entities: - uid: 16035 @@ -47426,13 +47578,6 @@ entities: - type: Transform parent: 2 pos: -47.547234,-67.10405 -- proto: ClothingHeadHatSombrero - entities: - - uid: 15852 - components: - - type: Transform - parent: 2 - pos: -39.57097,-57.9909 - proto: ClothingHeadHatSquid entities: - uid: 615 @@ -47447,13 +47592,6 @@ entities: - type: Transform parent: 2 pos: 9.493862,-24.97992 -- proto: ClothingHeadHatTacticalMaidHeadband - entities: - - uid: 17303 - components: - - type: Transform - parent: 2 - pos: 71.34251,-16.212269 - proto: ClothingHeadHatTophat entities: - uid: 17440 @@ -47487,13 +47625,6 @@ entities: - type: Transform parent: 2 pos: 67.39528,-68.335495 -- proto: ClothingHeadHatXmasCrown - entities: - - uid: 15216 - components: - - type: Transform - parent: 2 - pos: -40.07226,-57.868195 - proto: ClothingHeadHatYellowsoftFlipped entities: - uid: 17335 @@ -47503,12 +47634,11 @@ entities: pos: 13.455537,-101.396515 - proto: ClothingHeadHelmetEVA entities: - - uid: 15545 + - uid: 7441 components: - type: Transform parent: 2 - rot: -1.5707963267948966 rad - pos: 38.77258,-19.393414 + pos: -61.68606,-24.781172 - uid: 16569 components: - type: Transform @@ -47551,13 +47681,6 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage -- proto: ClothingHeadHelmetEVALarge - entities: - - uid: 19417 - components: - - type: Transform - parent: 2 - pos: -61.573032,-24.340357 - proto: ClothingHeadHelmetRiot entities: - uid: 11848 @@ -47577,13 +47700,6 @@ entities: - type: Transform parent: 2 pos: -41.253063,-26.41991 -- proto: ClothingMaskBee - entities: - - uid: 16046 - components: - - type: Transform - parent: 2 - pos: 82.43702,-18.143408 - proto: ClothingMaskBreathMedical entities: - uid: 18336 @@ -47608,15 +47724,6 @@ entities: - type: Transform parent: 2 pos: 29.816557,-76.46657 -- proto: ClothingMaskMime - entities: - - uid: 17524 - components: - - type: MetaData - desc: Something about this particular mime mask makes you feel like you should run amok across the station... - - type: Transform - parent: 2 - pos: 83.56729,-72.486176 - proto: ClothingMultipleHeadphones entities: - uid: 17553 @@ -47638,44 +47745,6 @@ entities: - type: Transform parent: 2 pos: -9.488791,-1.3849742 -- proto: ClothingNeckCloakAro - entities: - - uid: 8150 - components: - - type: Transform - parent: 2 - pos: 39.571434,-28.464401 - - type: CollisionWake - enabled: False - - type: Conveyed -- proto: ClothingNeckCloakBi - entities: - - uid: 6921 - components: - - type: Transform - parent: 2 - pos: 57.523323,-96.46691 -- proto: ClothingNeckCloakEnby - entities: - - uid: 13645 - components: - - type: Transform - parent: 2 - pos: 79.02105,-25.344301 -- proto: ClothingNeckCloakGay - entities: - - uid: 17328 - components: - - type: Transform - parent: 2 - pos: -39.37852,-58.430256 -- proto: ClothingNeckCloakIntersex - entities: - - uid: 7509 - components: - - type: Transform - parent: 2 - pos: 105.5457,-45.44423 - proto: ClothingNeckCloakLesbian entities: - uid: 3874 @@ -47697,13 +47766,6 @@ entities: - type: Transform parent: 2 pos: 44.5,-38.5 -- proto: ClothingNeckCloakPirateCap - entities: - - uid: 17307 - components: - - type: Transform - parent: 2 - pos: -38.53285,-69.49862 - proto: ClothingNeckCloakTrans entities: - uid: 17331 @@ -47867,12 +47929,12 @@ entities: - type: InsideEntityStorage - proto: ClothingOuterHardsuitEVAPrisoner entities: - - uid: 7441 + - uid: 2917 components: - type: Transform parent: 2 rot: -1.5707963267948966 rad - pos: 38.522278,-19.49277 + pos: 38.534485,-19.501558 - proto: ClothingOuterHardsuitSecurity entities: - uid: 18200 @@ -47917,13 +47979,6 @@ entities: - type: Transform parent: 2 pos: -44.48925,-61.39967 -- proto: ClothingOuterVest - entities: - - uid: 17405 - components: - - type: Transform - parent: 2 - pos: 82.44165,-18.62059 - proto: ClothingOuterVestHazard entities: - uid: 2736 @@ -47991,13 +48046,6 @@ entities: - type: Transform parent: 2 pos: -60.494183,-61.195236 -- proto: ClothingShoesJester - entities: - - uid: 17526 - components: - - type: Transform - parent: 2 - pos: 83.45022,-72.70801 - proto: ClothingShoesSlippers entities: - uid: 16481 @@ -48017,13 +48065,6 @@ entities: - type: Transform parent: 2 pos: 13.501459,-50.591175 -- proto: ClothingUnderSocksBee - entities: - - uid: 16047 - components: - - type: Transform - parent: 2 - pos: 82.43239,-18.852234 - proto: ClothingUnderSocksCoder entities: - uid: 1826 @@ -48043,14 +48084,6 @@ entities: - type: Transform parent: 2 pos: 66.51943,-29.493935 -- proto: ClothingUniformJumpskirtLawyerBlack - entities: - - uid: 4442 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 8.669764,-86.37532 - proto: ClothingUniformJumpskirtMedicalDoctor entities: - uid: 6664 @@ -48066,13 +48099,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 42.513027,-17.663967 -- proto: ClothingUniformJumpskirtSeniorOfficer - entities: - - uid: 4803 - components: - - type: Transform - parent: 2 - pos: 9.473994,-47.657307 - proto: ClothingUniformJumpskirtWeb entities: - uid: 249 @@ -48083,11 +48109,6 @@ entities: pos: 67.63037,-53.474205 - proto: ClothingUniformJumpskirtYellowOldDress entities: - - uid: 15236 - components: - - type: Transform - parent: 2 - pos: -47.497868,-43.43454 - uid: 20217 components: - type: Transform @@ -48105,20 +48126,6 @@ entities: - type: Transform parent: 2 pos: 66.44131,-29.366472 -- proto: ClothingUniformJumpsuitColorMaroon - entities: - - uid: 17557 - components: - - type: Transform - parent: 2 - pos: -37.338173,-33.307518 -- proto: ClothingUniformJumpsuitColorYellow - entities: - - uid: 17404 - components: - - type: Transform - parent: 2 - pos: 82.43702,-18.560364 - proto: ClothingUniformJumpsuitDetective entities: - uid: 6075 @@ -48128,14 +48135,6 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage -- proto: ClothingUniformJumpsuitLawyerBlack - entities: - - uid: 4368 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 8.433652,-86.26877 - proto: ClothingUniformJumpsuitMedicalDoctor entities: - uid: 6663 @@ -48143,13 +48142,6 @@ entities: - type: Transform parent: 2 pos: 4.3577023,-22.356575 -- proto: ClothingUniformJumpsuitMercenary - entities: - - uid: 17302 - components: - - type: Transform - parent: 2 - pos: 71.53001,-16.603165 - proto: ClothingUniformJumpsuitReporter entities: - uid: 6073 @@ -48944,18 +48936,6 @@ entities: pos: -14.353454,-63.44882 - proto: ConveyorBelt entities: - - uid: 1073 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 41.5,-27.5 - - uid: 1140 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 42.5,-27.5 - uid: 2500 components: - type: Transform @@ -48974,73 +48954,17 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 76.5,-67.5 - - uid: 3168 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 46.5,-29.5 - uid: 3314 components: - type: Transform parent: 2 pos: 72.5,-68.5 - - uid: 3530 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 45.5,-26.5 - - uid: 3531 - components: - - type: Transform - parent: 2 - pos: 46.5,-26.5 - uid: 3681 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad pos: 20.5,-90.5 - - uid: 3717 - components: - - type: Transform - parent: 2 - pos: 45.5,-30.5 - - uid: 3718 - components: - - type: Transform - parent: 2 - pos: 45.5,-29.5 - - uid: 3719 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 39.5,-28.5 - - uid: 3720 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 38.5,-28.5 - - uid: 3721 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 40.5,-28.5 - - uid: 3725 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 34.5,-28.5 - - uid: 3729 - components: - - type: Transform - parent: 2 - pos: 46.5,-27.5 - uid: 4946 components: - type: Transform @@ -49292,41 +49216,6 @@ entities: - type: Transform parent: 2 pos: 72.5,-73.5 - - uid: 6139 - components: - - type: Transform - parent: 2 - pos: 46.5,-28.5 - - uid: 6388 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 35.5,-28.5 - - uid: 6396 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 37.5,-28.5 - - uid: 6397 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 43.5,-26.5 - - uid: 6400 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 40.5,-27.5 - - uid: 6401 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 44.5,-26.5 - uid: 6403 components: - type: Transform @@ -49367,12 +49256,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 75.5,-68.5 - - uid: 7891 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 36.5,-28.5 - uid: 8075 components: - type: Transform @@ -49384,16 +49267,6 @@ entities: - type: Transform parent: 2 pos: 77.5,-63.5 - - uid: 8089 - components: - - type: Transform - parent: 2 - pos: 45.5,-34.5 - - uid: 8148 - components: - - type: Transform - parent: 2 - pos: 45.5,-31.5 - uid: 8822 components: - type: Transform @@ -49457,32 +49330,6 @@ entities: - type: Transform parent: 2 pos: 72.5,-70.5 - - uid: 11978 - components: - - type: Transform - parent: 2 - pos: 45.5,-36.5 - - uid: 11979 - components: - - type: Transform - parent: 2 - pos: 45.5,-35.5 - - uid: 11980 - components: - - type: Transform - parent: 2 - pos: 45.5,-33.5 - - uid: 12955 - components: - - type: Transform - parent: 2 - pos: 45.5,-32.5 - - uid: 12962 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 43.5,-27.5 - proto: CorporateCircuitBoard entities: - uid: 18621 @@ -49622,6 +49469,11 @@ entities: pos: 54.5,-70.5 - proto: CrateEngineeringCableHV entities: + - uid: 2246 + components: + - type: Transform + parent: 2 + pos: 83.5,-72.5 - uid: 3369 components: - type: Transform @@ -49632,11 +49484,6 @@ entities: - type: Transform parent: 2 pos: -49.5,-25.5 - - uid: 18722 - components: - - type: Transform - parent: 2 - pos: 83.5,-70.5 - proto: CrateEngineeringCableMV entities: - uid: 3009 @@ -49747,25 +49594,6 @@ entities: - type: Transform parent: 2 pos: 10.5,-25.5 -- proto: CrateFunBoxing - entities: - - uid: 6243 - components: - - type: Transform - parent: 2 - pos: -4.5,-43.5 - - type: ContainerContainer - containers: - entity_storage: !type:Container - ents: - - 6289 - - 6303 - showEnts: False - occludes: True - paper_label: !type:ContainerSlot - ent: null - showEnts: False - occludes: True - proto: CrateFunLizardPlushieBulk entities: - uid: 16273 @@ -49973,16 +49801,6 @@ entities: pos: 43.483654,-18.381348 - proto: CrayonRainbow entities: - - uid: 17324 - components: - - type: Transform - parent: 2 - pos: 86.52312,-73.470345 - - uid: 19375 - components: - - type: Transform - parent: 2 - pos: 78.83267,-25.61246 - uid: 19376 components: - type: Transform @@ -50003,6 +49821,13 @@ entities: - type: Transform parent: 2 pos: 13.5,-16.5 +- proto: CrewsimovCircuitBoard + entities: + - uid: 18617 + components: + - type: Transform + parent: 2 + pos: 82.54185,-40.442722 - proto: CriminalRecordsComputerCircuitboard entities: - uid: 18304 @@ -50071,11 +49896,6 @@ entities: - type: Transform parent: 2 pos: -4.432915,2.5572884 - - uid: 19043 - components: - - type: Transform - parent: 2 - pos: 33.526745,-84.59566 - proto: CryogenicSleepUnit entities: - uid: 5120 @@ -50258,8 +50078,21 @@ entities: - type: Transform parent: 2 pos: 67.5,-46.5 +- proto: d2Dice + entities: + - uid: 3695 + components: + - type: Transform + parent: 2 + pos: 41.5,-29.5 - proto: d6Dice entities: + - uid: 2774 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 42.5,-29.5 - uid: 6745 components: - type: Transform @@ -50785,6 +50618,11 @@ entities: pos: -52.604927,-39.291473 - proto: DefibrillatorCabinetFilled entities: + - uid: 3608 + components: + - type: Transform + parent: 2 + pos: 51.5,-30.5 - uid: 5238 components: - type: Transform @@ -50801,16 +50639,17 @@ entities: - type: Transform parent: 2 pos: -6.5,3.5 - - uid: 7369 - components: - - type: Transform - parent: 2 - pos: 51.5,-30.5 - uid: 10681 components: - type: Transform parent: 2 pos: 13.5,-68.5 + - uid: 11895 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 15.5,-18.5 - uid: 17131 components: - type: Transform @@ -56710,6 +56549,8 @@ entities: pos: -17.5,-61.5 - uid: 5833 components: + - type: MetaData + name: To Engineering - type: Transform parent: 2 pos: 27.5,-65.5 @@ -56825,6 +56666,8 @@ entities: pos: 21.5,-70.5 - uid: 16550 components: + - type: MetaData + name: To Atmos - type: Transform parent: 2 pos: -21.5,-60.5 @@ -57119,13 +56962,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: -46.486393,-46.93339 -- proto: DrinkEnergyDrinkJug - entities: - - uid: 17562 - components: - - type: Transform - parent: 2 - pos: -38.577217,-21.50278 - proto: DrinkFlask entities: - uid: 5481 @@ -57275,32 +57111,13 @@ entities: - type: Transform parent: 2 pos: 27.727837,-45.77474 -- proto: DrinkMugOne - entities: - - uid: 3394 - components: - - type: Transform - parent: 2 - pos: 45.912617,-75.52733 - proto: DrinkMugRainbow entities: - - uid: 17325 - components: - - type: Transform - parent: 2 - pos: 35.43417,-87.20909 - uid: 19664 components: - type: Transform parent: 2 pos: -47.64084,-45.744957 -- proto: DrinkMugRed - entities: - - uid: 17563 - components: - - type: Transform - parent: 2 - pos: -39.092842,-21.627867 - proto: DrinkShaker entities: - uid: 7086 @@ -57341,13 +57158,6 @@ entities: - type: Transform parent: 2 pos: -3.766451,-19.48293 -- proto: DrinkSugarJug - entities: - - uid: 6812 - components: - - type: Transform - parent: 2 - pos: 8.980915,-47.69106 - proto: DrinkTeacupEmpty entities: - uid: 20129 @@ -57369,11 +57179,6 @@ entities: pos: 6.5117655,-71.929756 - proto: DrinkWaterBottleFull entities: - - uid: 901 - components: - - type: Transform - parent: 2 - pos: 40.217396,-32.324863 - uid: 5597 components: - type: Transform @@ -57394,11 +57199,6 @@ entities: - type: Transform parent: 2 pos: -22.758299,-44.27436 - - uid: 14928 - components: - - type: Transform - parent: 2 - pos: 40.35802,-32.52799 - uid: 17710 components: - type: Transform @@ -57420,17 +57220,17 @@ entities: components: - type: Transform parent: 2 - pos: -23.117622,-14.383618 + pos: -23.80347,-14.414228 - uid: 18326 components: - type: Transform parent: 2 - pos: -22.961372,-14.195988 + pos: -23.50437,-14.398603 - uid: 18327 components: - type: Transform parent: 2 - pos: -22.992622,-14.506653 + pos: -24.082495,-14.429853 - proto: DrinkWineBottleFull entities: - uid: 5697 @@ -57881,18 +57681,18 @@ entities: pos: 87.5,-47.5 - proto: EmergencyNitrogenTankFilled entities: - - uid: 18755 + - uid: 3091 components: - type: Transform parent: 2 - pos: 38.632355,-19.621294 + pos: 38.619953,-18.954683 - proto: EmergencyOxygenTankFilled entities: - - uid: 18753 + - uid: 285 components: - type: Transform parent: 2 - pos: 38.289898,-19.609055 + pos: 38.307453,-18.923433 - proto: EmergencyRollerBedSpawnFolded entities: - uid: 5066 @@ -59002,7 +58802,6 @@ entities: pos: 13.5,-85.5 - type: DeviceList devices: - - 13567 - 18091 - 17153 - 17130 @@ -61566,17 +61365,6 @@ entities: - type: DeviceNetwork deviceLists: - 8767 - - uid: 13567 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 16.5,-83.5 - - type: DeviceNetwork - deviceLists: - - 18493 - - 18013 - - 15095 - uid: 13846 components: - type: Transform @@ -62127,11 +61915,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 30.5,-35.5 - - uid: 19067 - components: - - type: Transform - parent: 2 - pos: 37.5,-33.5 - uid: 19078 components: - type: Transform @@ -63296,18 +63079,6 @@ entities: pos: -20.5,-32.5 - type: Fixtures fixtures: {} -- proto: FloorTileItemBoxing - entities: - - uid: 6303 - components: - - type: Transform - parent: 6243 - - type: Stack - count: 30 - - type: Physics - canCollide: False - - type: InsideEntityStorage - storage: 6243 - proto: FloorTileItemSteel entities: - uid: 2497 @@ -63335,108 +63106,11 @@ entities: pos: 55.5,-13.5 - proto: FloraGreyStalagmite entities: - - uid: 5541 - components: - - type: Transform - parent: 2 - pos: 20.5,-63.5 - uid: 6553 components: - type: Transform parent: 2 pos: -49.5,-68.5 - - uid: 15856 - components: - - type: Transform - parent: 2 - pos: -42.5,-33.5 - - uid: 15857 - components: - - type: Transform - parent: 2 - pos: -41.5,-32.5 - - uid: 17098 - components: - - type: Transform - parent: 2 - pos: -16.5,-48.5 - - uid: 17099 - components: - - type: Transform - parent: 2 - pos: -25.5,-51.5 - - uid: 17103 - components: - - type: Transform - parent: 2 - pos: -6.5,-71.5 - - uid: 17108 - components: - - type: Transform - parent: 2 - pos: 77.5,-51.5 - - uid: 17113 - components: - - type: Transform - parent: 2 - pos: -44.5,-22.5 - - uid: 17114 - components: - - type: Transform - parent: 2 - pos: -46.5,-29.5 - - uid: 17115 - components: - - type: Transform - parent: 2 - pos: -38.5,-36.5 - - uid: 17308 - components: - - type: Transform - parent: 2 - pos: -39.5,-71.5 - - uid: 17309 - components: - - type: Transform - parent: 2 - pos: -40.5,-70.5 - - uid: 17310 - components: - - type: Transform - parent: 2 - pos: -40.5,-71.5 - - uid: 17568 - components: - - type: Transform - parent: 2 - pos: -41.5,-70.5 - - uid: 17569 - components: - - type: Transform - parent: 2 - pos: -41.5,-71.5 - - uid: 17570 - components: - - type: Transform - parent: 2 - pos: -40.5,-72.5 - - uid: 17571 - components: - - type: Transform - parent: 2 - pos: -39.5,-70.5 - - uid: 18266 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 37.5,-21.5 - - uid: 19011 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: -36.5,-76.5 - proto: FoamCrossbow entities: - uid: 7960 @@ -63451,11 +63125,6 @@ entities: - type: Transform parent: 2 pos: 69.39864,-60.424595 - - uid: 18854 - components: - - type: Transform - parent: 2 - pos: -39.07116,-69.530205 - uid: 18933 components: - type: Transform @@ -63473,13 +63142,6 @@ entities: - type: Transform parent: 2 pos: -1.2759836,-68.43135 -- proto: FoodBakedBunHoney - entities: - - uid: 17400 - components: - - type: Transform - parent: 2 - pos: 83.18266,-18.764208 - proto: FoodBakedCannabisBrownie entities: - uid: 4673 @@ -63525,28 +63187,6 @@ entities: - type: Transform parent: 2 pos: -44.570675,-45.410374 - - uid: 5590 - components: - - type: Transform - parent: 2 - pos: -44.382748,-45.738728 - - uid: 18217 - components: - - type: Transform - parent: 2 - pos: 6.020815,-83.09565 -- proto: FoodBoxPizzaFilled - entities: - - uid: 18319 - components: - - type: Transform - parent: 2 - pos: -24.519213,-14.14908 - - uid: 18320 - components: - - type: Transform - parent: 2 - pos: -23.894213,-14.2898035 - proto: FoodBreadBaguetteSlice entities: - uid: 18998 @@ -63578,18 +63218,6 @@ entities: - type: Transform parent: 2 pos: -24.54712,-39.366432 -- proto: FoodBurgerXeno - entities: - - uid: 17305 - components: - - type: Transform - parent: 2 - pos: -38.500965,-57.440918 - - uid: 17306 - components: - - type: Transform - parent: 2 - pos: -38.203186,-57.62665 - proto: FoodCakeClown entities: - uid: 5981 @@ -63732,65 +63360,6 @@ entities: - type: Transform parent: 2 pos: 35.688534,-91.4795 -- proto: FoodDonut - entities: - - uid: 5591 - components: - - type: Transform - parent: 2 - pos: -44.45326,-46.331154 -- proto: FoodDonutApple - entities: - - uid: 17315 - components: - - type: Transform - parent: 2 - pos: 6.042578,-82.31825 -- proto: FoodDonutBungo - entities: - - uid: 17314 - components: - - type: Transform - parent: 2 - pos: 6.151953,-82.73679 -- proto: FoodDonutCaramel - entities: - - uid: 17313 - components: - - type: Transform - parent: 2 - pos: 6.651953,-82.97133 -- proto: FoodDonutHomer - entities: - - uid: 17312 - components: - - type: Transform - parent: 2 - pos: 6.386328,-82.455345 -- proto: FoodDonutJellyScurret - entities: - - uid: 2917 - components: - - type: Transform - parent: 2 - pos: 72.49038,-74.3934 - - type: CollisionWake - enabled: False - - type: Conveyed -- proto: FoodDonutPink - entities: - - uid: 17561 - components: - - type: Transform - parent: 2 - pos: -37.754837,-33.443027 -- proto: FoodDonutSpaceman - entities: - - uid: 17317 - components: - - type: Transform - parent: 2 - pos: 6.745703,-82.29899 - proto: FoodEgg entities: - uid: 18457 @@ -63826,13 +63395,6 @@ entities: - type: Transform parent: 2 pos: 1.4920012,-49.60866 -- proto: FoodFrozenFreezy - entities: - - uid: 17567 - components: - - type: Transform - parent: 2 - pos: -39.311584,-20.823996 - proto: FoodFrozenSnowconeMime entities: - uid: 5994 @@ -63863,13 +63425,6 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage -- proto: FoodLemon - entities: - - uid: 18216 - components: - - type: Transform - parent: 2 - pos: -38.189064,-69.988914 - proto: FoodLily entities: - uid: 17556 @@ -63877,13 +63432,13 @@ entities: - type: Transform parent: 2 pos: -38.619698,-62.26088 -- proto: FoodMeatXenoCutlet +- proto: FoodMeatXenoCutletCooked entities: - - uid: 3722 + - uid: 1843 components: - type: Transform parent: 2 - pos: 42.54103,-26.571922 + pos: 43.5,-29.5 - proto: FoodOrange entities: - uid: 17558 @@ -63924,13 +63479,6 @@ entities: - type: Transform parent: 2 pos: 8.476078,-94.4169 -- proto: FoodPizzaMeatSlice - entities: - - uid: 17648 - components: - - type: Transform - parent: 2 - pos: -5.017685,-28.423168 - proto: FoodPlate entities: - uid: 5680 @@ -63955,11 +63503,6 @@ entities: - type: Transform parent: 2 pos: -19.415848,-41.425785 - - uid: 17401 - components: - - type: Transform - parent: 2 - pos: 82.76137,-18.602058 - proto: FoodSnackMREBrownie entities: - uid: 7062 @@ -64015,20 +63558,6 @@ entities: - type: Transform parent: 2 pos: -56.426476,-61.394897 -- proto: FoodTinBeansTrash - entities: - - uid: 7328 - components: - - type: Transform - parent: 2 - pos: 79.62434,-25.69585 -- proto: FoodTinMRETrash - entities: - - uid: 7327 - components: - - type: Transform - parent: 2 - pos: 79.27017,-25.581188 - proto: ForkPlastic entities: - uid: 6962 @@ -64399,6 +63928,12 @@ entities: pos: -22.5,-45.5 - type: AtmosPipeColor color: '#990000FF' + - uid: 5834 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 49.5,-81.5 - uid: 5840 components: - type: Transform @@ -64512,13 +64047,6 @@ entities: pos: 81.5,-43.5 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 7699 - components: - - type: Transform - parent: 2 - pos: 47.5,-77.5 - - type: AtmosPipeLayers - pipeLayer: Tertiary - uid: 7839 components: - type: Transform @@ -64603,6 +64131,11 @@ entities: pos: 14.5,-58.5 - type: AtmosPipeColor color: '#990000FF' + - uid: 8016 + components: + - type: Transform + parent: 2 + pos: 75.5,-23.5 - uid: 8072 components: - type: Transform @@ -64627,14 +64160,6 @@ entities: pos: -39.5,-12.5 - type: AtmosPipeColor color: '#990000FF' - - uid: 8810 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 74.5,-23.5 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 8821 components: - type: Transform @@ -65379,6 +64904,11 @@ entities: pos: 5.5,-17.5 - type: AtmosPipeColor color: '#990000FF' + - uid: 10655 + components: + - type: Transform + parent: 2 + pos: 46.5,-81.5 - uid: 10753 components: - type: Transform @@ -65497,6 +65027,18 @@ entities: pos: -2.5,-39.5 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 13978 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 48.5,-81.5 + - uid: 14084 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 45.5,-81.5 - uid: 14293 components: - type: Transform @@ -66425,12 +65967,6 @@ entities: pos: 51.5,-65.5 - type: AtmosPipeColor color: '#947507FF' - - uid: 18409 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 47.5,-76.5 - proto: GasPipeBendAlt2 entities: - uid: 10411 @@ -66587,11 +66123,6 @@ entities: color: '#990000FF' - proto: GasPipeManifold entities: - - uid: 3312 - components: - - type: Transform - parent: 2 - pos: 47.5,-78.5 - uid: 10223 components: - type: Transform @@ -66608,12 +66139,6 @@ entities: pos: 46.5,-66.5 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 18416 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 48.5,-76.5 - proto: GasPipeSensorDistribution entities: - uid: 10763 @@ -66656,6 +66181,18 @@ entities: color: '#990000FF' - proto: GasPipeStraight entities: + - uid: 164 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 46.5,-86.5 + - uid: 176 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 48.5,-87.5 - uid: 303 components: - type: Transform @@ -66671,12 +66208,6 @@ entities: pos: 18.5,-19.5 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 564 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 49.5,-79.5 - uid: 752 components: - type: Transform @@ -66908,6 +66439,12 @@ entities: pos: 59.5,-27.5 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 3613 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 48.5,-86.5 - uid: 3627 components: - type: Transform @@ -67072,6 +66609,11 @@ entities: pos: -37.5,-63.5 - type: AtmosPipeColor color: '#990000FF' + - uid: 5307 + components: + - type: Transform + parent: 2 + pos: 47.5,-80.5 - uid: 5407 components: - type: Transform @@ -67088,12 +66630,27 @@ entities: pos: 65.5,-27.5 - type: AtmosPipeColor color: '#990000FF' + - uid: 5422 + components: + - type: Transform + parent: 2 + pos: 47.5,-81.5 - uid: 5567 components: - type: Transform parent: 2 rot: 3.141592653589793 rad pos: -18.5,-25.5 + - uid: 5590 + components: + - type: Transform + parent: 2 + pos: 46.5,-82.5 + - uid: 5591 + components: + - type: Transform + parent: 2 + pos: 45.5,-80.5 - uid: 5740 components: - type: Transform @@ -67118,6 +66675,31 @@ entities: pos: -27.5,-61.5 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 5892 + components: + - type: Transform + parent: 2 + pos: 47.5,-79.5 + - uid: 5955 + components: + - type: Transform + parent: 2 + pos: 47.5,-78.5 + - uid: 6063 + components: + - type: Transform + parent: 2 + pos: 49.5,-80.5 + - uid: 6139 + components: + - type: Transform + parent: 2 + pos: 47.5,-82.5 + - uid: 6246 + components: + - type: Transform + parent: 2 + pos: 49.5,-78.5 - uid: 6263 components: - type: Transform @@ -67126,6 +66708,11 @@ entities: pos: -38.5,-12.5 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 6303 + components: + - type: Transform + parent: 2 + pos: 49.5,-79.5 - uid: 6357 components: - type: Transform @@ -67133,6 +66720,12 @@ entities: pos: 13.5,-71.5 - type: AtmosPipeColor color: '#990000FF' + - uid: 6460 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 46.5,-87.5 - uid: 6466 components: - type: Transform @@ -67297,6 +66890,16 @@ entities: pos: 77.5,-44.5 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 7750 + components: + - type: Transform + parent: 2 + pos: 45.5,-78.5 + - uid: 7752 + components: + - type: Transform + parent: 2 + pos: 45.5,-79.5 - uid: 7753 components: - type: Transform @@ -67516,6 +67119,11 @@ entities: pos: 78.5,-44.5 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 8089 + components: + - type: Transform + parent: 2 + pos: 75.5,-24.5 - uid: 8097 components: - type: Transform @@ -67618,11 +67226,6 @@ entities: pos: 85.5,-43.5 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 8621 - components: - - type: Transform - parent: 2 - pos: 47.5,-77.5 - uid: 8631 components: - type: Transform @@ -67707,6 +67310,11 @@ entities: pos: 73.5,-23.5 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 8810 + components: + - type: Transform + parent: 2 + pos: 48.5,-82.5 - uid: 8820 components: - type: Transform @@ -74830,18 +74438,6 @@ entities: pos: 18.5,-24.5 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 12925 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 49.5,-78.5 - - uid: 12926 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 47.5,-79.5 - uid: 12968 components: - type: Transform @@ -79348,6 +78944,12 @@ entities: pos: 10.5,-36.5 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 3842 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 74.5,-23.5 - uid: 4200 components: - type: Transform @@ -81034,12 +80636,6 @@ entities: pos: 31.5,-24.5 - type: AtmosPipeColor color: '#990000FF' - - uid: 18406 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 49.5,-76.5 - uid: 18419 components: - type: Transform @@ -81119,30 +80715,18 @@ entities: - type: Transform parent: 2 pos: -18.5,-24.5 - - uid: 12871 - components: - - type: Transform - parent: 2 - pos: 47.5,-75.5 - - uid: 12879 + - uid: 7697 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad - pos: 45.5,-77.5 - - type: AtmosPipeLayers - pipeLayer: Tertiary + pos: 48.5,-74.5 - uid: 13329 components: - type: Transform parent: 2 rot: -1.5707963267948966 rad pos: 13.5,-65.5 - - uid: 14385 - components: - - type: Transform - parent: 2 - pos: 49.5,-74.5 - uid: 14859 components: - type: Transform @@ -81222,17 +80806,6 @@ entities: - type: GasPressurePump targetPressure: 4500 enabled: True - - uid: 7990 - components: - - type: Transform - parent: 2 - pos: 47.5,-76.5 - - uid: 10655 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 49.5,-77.5 - uid: 17412 components: - type: Transform @@ -81319,13 +80892,6 @@ entities: pos: 31.5,-67.5 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 6926 - components: - - type: Transform - parent: 2 - pos: 49.5,-75.5 - - type: GasValve - open: False - uid: 7906 components: - type: Transform @@ -81356,23 +80922,6 @@ entities: open: False - type: AtmosPipeColor color: '#947507FF' - - uid: 18401 - components: - - type: Transform - parent: 2 - pos: 47.5,-77.5 - - type: GasValve - open: False -- proto: GasValveAlt2 - entities: - - uid: 12884 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 46.5,-77.5 - - type: GasValve - open: False - proto: GasVentPump entities: - uid: 518 @@ -82815,6 +82364,12 @@ entities: - 3424 - type: AtmosPipeColor color: '#990000FF' + - uid: 3436 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 75.5,-25.5 - uid: 3445 components: - type: Transform @@ -84175,6 +83730,11 @@ entities: - type: Transform parent: 2 pos: 79.5,-30.5 + - uid: 7953 + components: + - type: Transform + parent: 2 + pos: 43.5,-33.5 - uid: 9615 components: - type: Transform @@ -84190,6 +83750,11 @@ entities: - type: Transform parent: 2 pos: 62.5,-70.5 + - uid: 12957 + components: + - type: Transform + parent: 2 + pos: 44.5,-33.5 - uid: 13804 components: - type: Transform @@ -84735,32 +84300,17 @@ entities: components: - type: Transform parent: 2 - pos: 19.5,-43.5 + pos: 16.5,-83.5 - uid: 540 components: - type: Transform parent: 2 pos: 20.5,-40.5 - - uid: 541 - components: - - type: Transform - parent: 2 - pos: 19.5,-44.5 - uid: 542 components: - type: Transform parent: 2 pos: 14.5,-41.5 - - uid: 555 - components: - - type: Transform - parent: 2 - pos: 15.5,-41.5 - - uid: 557 - components: - - type: Transform - parent: 2 - pos: 15.5,-40.5 - uid: 560 components: - type: Transform @@ -84776,26 +84326,11 @@ entities: - type: Transform parent: 2 pos: 14.5,-43.5 - - uid: 565 - components: - - type: Transform - parent: 2 - pos: 18.5,-40.5 - uid: 566 components: - type: Transform parent: 2 pos: 17.5,-39.5 - - uid: 568 - components: - - type: Transform - parent: 2 - pos: 17.5,-40.5 - - uid: 581 - components: - - type: Transform - parent: 2 - pos: 16.5,-40.5 - uid: 600 components: - type: Transform @@ -85346,26 +84881,11 @@ entities: - type: Transform parent: 2 pos: 15.5,-45.5 - - uid: 1559 - components: - - type: Transform - parent: 2 - pos: 19.5,-40.5 - - uid: 1560 - components: - - type: Transform - parent: 2 - pos: 19.5,-41.5 - uid: 1561 components: - type: Transform parent: 2 pos: 59.5,-35.5 - - uid: 1564 - components: - - type: Transform - parent: 2 - pos: 3.5,-42.5 - uid: 1592 components: - type: Transform @@ -85376,11 +84896,6 @@ entities: - type: Transform parent: 2 pos: -49.5,-31.5 - - uid: 1596 - components: - - type: Transform - parent: 2 - pos: 15.5,-43.5 - uid: 1597 components: - type: Transform @@ -85421,21 +84936,11 @@ entities: - type: Transform parent: 2 pos: -57.5,-27.5 - - uid: 1642 - components: - - type: Transform - parent: 2 - pos: 17.5,-44.5 - uid: 1644 components: - type: Transform parent: 2 pos: 18.5,-45.5 - - uid: 1645 - components: - - type: Transform - parent: 2 - pos: 19.5,-42.5 - uid: 1646 components: - type: Transform @@ -85481,21 +84986,6 @@ entities: - type: Transform parent: 2 pos: -30.5,-46.5 - - uid: 1667 - components: - - type: Transform - parent: 2 - pos: 18.5,-44.5 - - uid: 1668 - components: - - type: Transform - parent: 2 - pos: 16.5,-44.5 - - uid: 1673 - components: - - type: Transform - parent: 2 - pos: -0.5,-42.5 - uid: 1681 components: - type: Transform @@ -85516,11 +85006,6 @@ entities: - type: Transform parent: 2 pos: 26.5,-40.5 - - uid: 1696 - components: - - type: Transform - parent: 2 - pos: 15.5,-44.5 - uid: 1703 components: - type: Transform @@ -85706,16 +85191,6 @@ entities: - type: Transform parent: 2 pos: -49.5,-59.5 - - uid: 2205 - components: - - type: Transform - parent: 2 - pos: 3.5,-43.5 - - uid: 2208 - components: - - type: Transform - parent: 2 - pos: 3.5,-44.5 - uid: 2214 components: - type: Transform @@ -85911,16 +85386,6 @@ entities: - type: Transform parent: 2 pos: 53.5,-58.5 - - uid: 2536 - components: - - type: Transform - parent: 2 - pos: 43.5,-81.5 - - uid: 2550 - components: - - type: Transform - parent: 2 - pos: 43.5,-82.5 - uid: 2567 components: - type: Transform @@ -85971,11 +85436,6 @@ entities: - type: Transform parent: 2 pos: 13.5,-89.5 - - uid: 2578 - components: - - type: Transform - parent: 2 - pos: 15.5,-91.5 - uid: 2579 components: - type: Transform @@ -86091,11 +85551,6 @@ entities: - type: Transform parent: 2 pos: 45.5,-79.5 - - uid: 2701 - components: - - type: Transform - parent: 2 - pos: 45.5,-78.5 - uid: 2713 components: - type: Transform @@ -86236,11 +85691,6 @@ entities: - type: Transform parent: 2 pos: 26.5,-80.5 - - uid: 3004 - components: - - type: Transform - parent: 2 - pos: 49.5,-78.5 - uid: 3005 components: - type: Transform @@ -86436,11 +85886,6 @@ entities: - type: Transform parent: 2 pos: 38.5,-9.5 - - uid: 4224 - components: - - type: Transform - parent: 2 - pos: 2.5,-42.5 - uid: 4233 components: - type: Transform @@ -86771,11 +86216,6 @@ entities: - type: Transform parent: 2 pos: 47.5,-79.5 - - uid: 5069 - components: - - type: Transform - parent: 2 - pos: 47.5,-78.5 - uid: 5079 components: - type: Transform @@ -86801,6 +86241,11 @@ entities: - type: Transform parent: 2 pos: 7.5,-13.5 + - uid: 5273 + components: + - type: Transform + parent: 2 + pos: 14.5,-40.5 - uid: 5415 components: - type: Transform @@ -87226,36 +86671,6 @@ entities: - type: Transform parent: 2 pos: 55.5,-85.5 - - uid: 6456 - components: - - type: Transform - parent: 2 - pos: 49.5,-85.5 - - uid: 6457 - components: - - type: Transform - parent: 2 - pos: 50.5,-85.5 - - uid: 6458 - components: - - type: Transform - parent: 2 - pos: 48.5,-84.5 - - uid: 6459 - components: - - type: Transform - parent: 2 - pos: 44.5,-83.5 - - uid: 6460 - components: - - type: Transform - parent: 2 - pos: 45.5,-83.5 - - uid: 6461 - components: - - type: Transform - parent: 2 - pos: 46.5,-84.5 - uid: 6481 components: - type: Transform @@ -87776,6 +87191,11 @@ entities: - type: Transform parent: 2 pos: 20.5,-21.5 + - uid: 7807 + components: + - type: Transform + parent: 2 + pos: 14.5,-44.5 - uid: 7971 components: - type: Transform @@ -88851,11 +88271,6 @@ entities: - type: Transform parent: 2 pos: -7.5,12.5 - - uid: 19004 - components: - - type: Transform - parent: 2 - pos: 0.5,-43.5 - uid: 19284 components: - type: Transform @@ -89559,11 +88974,6 @@ entities: - type: Transform parent: 2 pos: 56.5,-84.5 - - uid: 15621 - components: - - type: Transform - parent: 2 - pos: 47.5,-84.5 - uid: 15622 components: - type: Transform @@ -89943,13 +89353,6 @@ entities: - type: Transform parent: 2 pos: -61.358208,-63.517513 -- proto: HappyHonkCluwne - entities: - - uid: 7218 - components: - - type: Transform - parent: 2 - pos: 78.45767,-25.4561 - proto: HappyHonkMime entities: - uid: 6003 @@ -90014,34 +89417,6 @@ entities: pos: 52.5,-61.5 - type: AtmosPipeColor color: '#FFAD4FFF' - - uid: 10661 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 47.5,-81.5 - - uid: 10668 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 49.5,-81.5 - - uid: 18101 - components: - - type: Transform - parent: 2 - pos: 49.5,-80.5 - - uid: 18102 - components: - - type: Transform - parent: 2 - pos: 47.5,-80.5 - - uid: 19145 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 48.5,-82.5 - proto: HeatExchangerBend entities: - uid: 4136 @@ -90059,18 +89434,6 @@ entities: pos: 47.5,-58.5 - type: AtmosPipeColor color: '#03FCD3FF' - - uid: 19147 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 47.5,-82.5 - - uid: 19151 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 49.5,-82.5 - proto: HighSecArmoryLocked entities: - uid: 3561 @@ -90946,12 +90309,6 @@ entities: - type: Transform parent: 2 pos: 69.5,-25.5 - - uid: 19381 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 54.5,-26.5 - proto: IntercomService entities: - uid: 17768 @@ -91206,11 +90563,6 @@ entities: parent: 14704 - type: Physics canCollide: False - - uid: 18324 - components: - - type: Transform - parent: 2 - pos: -23.242622,-14.164716 - proto: Lamp entities: - uid: 10252 @@ -91385,11 +90737,6 @@ entities: - type: Transform parent: 2 pos: 2.5591927,-78.68594 - - uid: 19735 - components: - - type: Transform - parent: 2 - pos: 42.364388,-34.14802 - uid: 19746 components: - type: Transform @@ -91455,6 +90802,19 @@ entities: 3324: - - Pressed - Toggle +- proto: LockableButtonAtmospherics + entities: + - uid: 7997 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 49.5,-82.5 + - type: DeviceLinkSource + linkedPorts: + 6243: + - - Pressed + - Toggle - proto: LockableButtonChiefEngineer entities: - uid: 6608 @@ -91669,6 +91029,11 @@ entities: pos: 73.5,-49.5 - proto: LockerElectricalSuppliesFilled entities: + - uid: 2208 + components: + - type: Transform + parent: 2 + pos: 82.5,-72.5 - uid: 5832 components: - type: Transform @@ -91686,11 +91051,6 @@ entities: - type: Transform parent: 2 pos: 6.5,-63.5 - - uid: 16045 - components: - - type: Transform - parent: 2 - pos: 82.5,-70.5 - uid: 17796 components: - type: Transform @@ -92213,11 +91573,6 @@ entities: pos: 66.5,-66.5 - proto: MachineFrame entities: - - uid: 14973 - components: - - type: Transform - parent: 2 - pos: 43.5,-34.5 - uid: 17019 components: - type: Transform @@ -92284,6 +91639,17 @@ entities: pos: 17.5,-98.5 - proto: MaintenanceFluffSpawner entities: + - uid: 3718 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 42.5,-33.5 + - uid: 6812 + components: + - type: Transform + parent: 2 + pos: 79.5,-25.5 - uid: 17360 components: - type: Transform @@ -92358,6 +91724,11 @@ entities: pos: 54.5,-77.5 - proto: MaintenanceToolSpawner entities: + - uid: 1564 + components: + - type: Transform + parent: 2 + pos: 47.5,-26.5 - uid: 7684 components: - type: Transform @@ -92380,6 +91751,16 @@ entities: pos: -3.5,-77.5 - proto: MaintenanceWeaponSpawner entities: + - uid: 966 + components: + - type: Transform + parent: 2 + pos: 45.5,-33.5 + - uid: 2203 + components: + - type: Transform + parent: 2 + pos: 45.5,-26.5 - uid: 7421 components: - type: Transform @@ -92411,51 +91792,16 @@ entities: - type: Transform parent: 2 pos: 72.446846,-56.49303 - - uid: 10675 - components: - - type: Transform - parent: 2 - pos: 79.30142,-25.841785 - uid: 10843 components: - type: Transform parent: 2 pos: 96.498116,-44.486084 - - uid: 17247 - components: - - type: Transform - parent: 2 - pos: 79.27017,-26.060688 - - uid: 17248 - components: - - type: Transform - parent: 2 - pos: 79.44725,-26.27959 - - uid: 17249 - components: - - type: Transform - parent: 2 - pos: -64.26435,-27.585804 - uid: 17250 components: - type: Transform parent: 2 pos: 12.563929,-2.5076818 - - uid: 17253 - components: - - type: Transform - parent: 2 - pos: -37.510273,-57.51299 - - uid: 17254 - components: - - type: Transform - parent: 2 - pos: 33.540226,-88.563354 - - uid: 17255 - components: - - type: Transform - parent: 2 - pos: -46.522686,-76.43295 - uid: 17256 components: - type: Transform @@ -92545,11 +91891,6 @@ entities: - type: Transform parent: 2 pos: -5.5,-38.5 - - uid: 7336 - components: - - type: Transform - parent: 2 - pos: 79.666,-26.185774 - proto: MaterialWoodPlank10 entities: - uid: 7008 @@ -92584,11 +91925,6 @@ entities: - type: Transform parent: 2 pos: -9.5,0.5 - - uid: 6246 - components: - - type: Transform - parent: 2 - pos: -37.5,-16.5 - uid: 7765 components: - type: Transform @@ -92599,11 +91935,6 @@ entities: - type: Transform parent: 2 pos: 50.5,-33.5 - - uid: 8733 - components: - - type: Transform - parent: 2 - pos: -40.5,-14.5 - uid: 9356 components: - type: Transform @@ -92737,11 +92068,6 @@ entities: - type: Transform parent: 2 pos: -33.9196,-29.568325 - - uid: 19739 - components: - - type: Transform - parent: 2 - pos: 40.69203,-32.54189 - proto: MicrophoneInstrument entities: - uid: 6064 @@ -92754,13 +92080,6 @@ entities: - type: Transform parent: 2 pos: 27.508257,-39.500587 -- proto: MicrowaveMachineCircuitboard - entities: - - uid: 19422 - components: - - type: Transform - parent: 2 - pos: 41.349373,-34.246284 - proto: Mirror entities: - uid: 6157 @@ -93013,11 +92332,6 @@ entities: - type: Transform parent: 2 pos: -45.5,-25.5 - - uid: 8623 - components: - - type: Transform - parent: 2 - pos: 50.5,-77.5 - uid: 10816 components: - type: Transform @@ -93045,11 +92359,6 @@ entities: pos: 40.5,-72.5 - proto: NitrogenTankFilled entities: - - uid: 7697 - components: - - type: Transform - parent: 2 - pos: 45.59677,-75.42367 - uid: 18198 components: - type: Transform @@ -93094,13 +92403,6 @@ entities: - type: Transform parent: 2 pos: 43.5,-73.5 -- proto: NitrousOxideTank - entities: - - uid: 18511 - components: - - type: Transform - parent: 2 - pos: 46.5314,-75.36489 - proto: NitrousOxideTankFilled entities: - uid: 6652 @@ -93125,11 +92427,6 @@ entities: - type: Transform parent: 2 pos: -16.524597,-27.14951 - - uid: 19413 - components: - - type: Transform - parent: 2 - pos: -61.340405,-25.290606 - proto: NoticeBoard entities: - uid: 7003 @@ -93167,6 +92464,11 @@ entities: pos: 60.5,-19.5 - proto: OperatingTable entities: + - uid: 3701 + components: + - type: Transform + parent: 2 + pos: 35.5,-28.5 - uid: 5072 components: - type: Transform @@ -93196,20 +92498,6 @@ entities: - type: Transform parent: 2 pos: 31.5,-96.5 -- proto: OrganHumanHeart - entities: - - uid: 17528 - components: - - type: Transform - parent: 2 - pos: 82.48561,-72.595604 -- proto: OrganSkeletonPersonTorso - entities: - - uid: 7331 - components: - - type: Transform - parent: 2 - pos: 78.98892,-25.47695 - proto: OxygenCanister entities: - uid: 1114 @@ -93217,11 +92505,6 @@ entities: - type: Transform parent: 2 pos: -16.5,-47.5 - - uid: 2306 - components: - - type: Transform - parent: 2 - pos: 15.5,-82.5 - uid: 3482 components: - type: Transform @@ -93242,21 +92525,11 @@ entities: - type: Transform parent: 2 pos: 85.5,-70.5 - - uid: 8624 - components: - - type: Transform - parent: 2 - pos: 51.5,-77.5 - uid: 10814 components: - type: Transform parent: 2 pos: 60.5,-54.5 - - uid: 15413 - components: - - type: Transform - parent: 2 - pos: 42.5,-29.5 - uid: 15432 components: - type: Transform @@ -93297,13 +92570,6 @@ entities: - type: Transform parent: 2 pos: 39.5,-73.5 -- proto: OxygenTankFilled - entities: - - uid: 7691 - components: - - type: Transform - parent: 2 - pos: 45.417492,-75.34028 - proto: PaintingCafeTerraceAtNight entities: - uid: 20140 @@ -93654,14 +92920,6 @@ entities: - type: Transform parent: 2 pos: 8.644315,-84.24774 - - uid: 6289 - components: - - type: Transform - parent: 6243 - - type: Physics - canCollide: False - - type: InsideEntityStorage - storage: 6243 - uid: 18766 components: - type: Transform @@ -93792,11 +93050,6 @@ entities: - type: Transform parent: 2 pos: -52.315937,-52.474583 - - uid: 19815 - components: - - type: Transform - parent: 2 - pos: -34.31944,-81.546196 - proto: PillCanisterRandom entities: - uid: 20137 @@ -93999,25 +93252,12 @@ entities: pos: -59.5,-61.5 - proto: PlasmaTank entities: - - uid: 7689 - components: - - type: Transform - parent: 2 - pos: 46.344013,-75.307045 - - type: GasTank - toggleActionEntity: 3031 - - type: ActionsContainer - - type: ContainerContainer - containers: - actions: !type:Container - ents: - - 3031 - uid: 18387 components: - type: Transform parent: 2 pos: -25.621885,-66.30062 -- proto: PlasmaWindoorSecureAtmosphericsLocked +- proto: PlasmaWindoorAtmosphericsLocked entities: - uid: 10456 components: @@ -94049,7 +93289,7 @@ entities: - type: Transform parent: 2 pos: 44.5,-61.5 -- proto: PlasmaWindoorSecureChemistryLocked +- proto: PlasmaWindoorChemistryLocked entities: - uid: 6282 components: @@ -94069,7 +93309,7 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 20.5,-76.5 -- proto: PlasmaWindoorSecureCommandLocked +- proto: PlasmaWindoorCommandLocked entities: - uid: 2896 components: @@ -94110,7 +93350,7 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 83.5,-45.5 -- proto: PlasmaWindoorSecureEngineeringLocked +- proto: PlasmaWindoorEngineeringLocked entities: - uid: 356 components: @@ -94142,7 +93382,7 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: -32.5,-74.5 -- proto: PlasmaWindoorSecureScienceLocked +- proto: PlasmaWindoorScienceLocked entities: - uid: 11364 components: @@ -94154,7 +93394,7 @@ entities: - type: Transform parent: 2 pos: -6.5,-18.5 -- proto: PlasmaWindoorSecureSecurityLocked +- proto: PlasmaWindoorSecurityLocked entities: - uid: 2724 components: @@ -94188,11 +93428,6 @@ entities: pos: 62.5,-20.5 - proto: PlasticFlapsAirtightClear entities: - - uid: 3692 - components: - - type: Transform - parent: 2 - pos: 45.5,-31.5 - uid: 6682 components: - type: Transform @@ -94213,11 +93448,6 @@ entities: - type: Transform parent: 2 pos: 72.5,-69.5 - - uid: 12791 - components: - - type: Transform - parent: 2 - pos: 45.5,-34.5 - uid: 13545 components: - type: Transform @@ -94242,26 +93472,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 32.5,-85.5 -- proto: PlasticFlapsAirtightOpaque - entities: - - uid: 19283 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 44.5,-26.5 - - uid: 19843 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 41.5,-27.5 - - uid: 19844 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 36.5,-28.5 - proto: PlayerStationAi entities: - uid: 10852 @@ -94269,13 +93479,6 @@ entities: - type: Transform parent: 2 pos: 91.5,-45.5 -- proto: PlushieArachind - entities: - - uid: 20121 - components: - - type: Transform - parent: 2 - pos: 5.417511,-69.24368 - proto: PlushieAtmosian entities: - uid: 892 @@ -94283,36 +93486,6 @@ entities: - type: Transform parent: 2 pos: 52.515114,-62.52821 -- proto: PlushieBee - entities: - - uid: 17397 - components: - - type: MetaData - name: good bee plushie - desc: Know who you can trust... - - type: Transform - parent: 2 - pos: 83.24284,-18.388948 - - uid: 17403 - components: - - type: MetaData - name: evil bee plushie - desc: Or is it?... - - type: Transform - parent: 2 - pos: 83.57618,-18.55573 - - uid: 20120 - components: - - type: Transform - parent: 2 - pos: 5.2693624,-69.42899 -- proto: PlushieDiona - entities: - - uid: 20119 - components: - - type: Transform - parent: 2 - pos: 4.773992,-69.164925 - proto: PlushieHampter entities: - uid: 16194 @@ -94327,32 +93500,8 @@ entities: - type: Transform parent: 2 pos: 10.276115,-44.41428 - - uid: 20122 - components: - - type: Transform - parent: 2 - pos: 5.625844,-69.164925 -- proto: PlushieLizard - entities: - - uid: 20111 - components: - - type: Transform - parent: 2 - pos: 5.523992,-69.58437 -- proto: PlushieLizardInversed - entities: - - uid: 6922 - components: - - type: Transform - parent: 2 - pos: 83.443275,-72.485634 - proto: PlushieLizardMirrored entities: - - uid: 2944 - components: - - type: Transform - parent: 2 - pos: -40.104343,-58.180084 - uid: 11678 components: - type: Transform @@ -94370,11 +93519,6 @@ entities: - type: Transform parent: 2 pos: -31.508543,-62.98768 - - uid: 20123 - components: - - type: Transform - parent: 2 - pos: 5.6860294,-69.66991 - proto: PlushiePenguin entities: - uid: 15800 @@ -94382,13 +93526,6 @@ entities: - type: Transform parent: 2 pos: 36.477215,-72.420235 -- proto: PlushieRatvar - entities: - - uid: 20112 - components: - - type: Transform - parent: 2 - pos: 5.1952887,-69.130585 - proto: PlushieRGBee entities: - uid: 15420 @@ -94432,11 +93569,6 @@ entities: - type: Transform parent: 2 pos: -51.020004,-60.457893 - - uid: 20117 - components: - - type: Transform - parent: 2 - pos: 4.602696,-69.46879 - proto: PlushieSlime entities: - uid: 5788 @@ -94446,28 +93578,6 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage - - uid: 15790 - components: - - type: Transform - parent: 2 - pos: -39.603485,-58.0853 - - uid: 20113 - components: - - type: Transform - parent: 2 - pos: 5.1814,-69.66991 -- proto: PlushieVox - entities: - - uid: 19377 - components: - - type: Transform - parent: 2 - pos: 9.483602,-47.419678 - - uid: 20115 - components: - - type: Transform - parent: 2 - pos: 5.463807,-69.237144 - proto: PlushieVulp entities: - uid: 13963 @@ -94475,11 +93585,6 @@ entities: - type: Transform parent: 2 pos: 21.464287,-73.453964 - - uid: 20114 - components: - - type: Transform - parent: 2 - pos: 4.352696,-69.23905 - proto: PlushieXeno entities: - uid: 11682 @@ -94492,11 +93597,6 @@ entities: - type: Transform parent: 2 pos: -22.499308,-16.520548 - - uid: 20116 - components: - - type: Transform - parent: 2 - pos: 5.536271,-69.37542 - proto: PortableFlasher entities: - uid: 2164 @@ -94757,13 +93857,6 @@ entities: - type: Transform parent: 2 pos: 16.5,-85.5 -- proto: PosterContrabandDonutCorp - entities: - - uid: 17316 - components: - - type: Transform - parent: 2 - pos: 6.5,-81.5 - proto: PosterContrabandEAT entities: - uid: 15130 @@ -94869,13 +93962,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 16.5,-21.5 -- proto: PosterContrabandHackingGuide - entities: - - uid: 19421 - components: - - type: Transform - parent: 2 - pos: 39.5,-32.5 - proto: PosterContrabandLamarr entities: - uid: 17407 @@ -94900,8 +93986,18 @@ entities: - type: Transform parent: 2 pos: -21.5,-17.5 + - uid: 12635 + components: + - type: Transform + parent: 2 + pos: 38.5,-30.5 - proto: PosterContrabandRouny entities: + - uid: 2550 + components: + - type: Transform + parent: 2 + pos: 46.5,-28.5 - uid: 7949 components: - type: Transform @@ -95265,6 +94361,11 @@ entities: pos: 26.5,-38.5 - proto: PosterLegitTyrone entities: + - uid: 12960 + components: + - type: Transform + parent: 2 + pos: 42.5,-26.5 - uid: 18011 components: - type: Transform @@ -95355,11 +94456,6 @@ entities: - type: Transform parent: 2 pos: 68.5,-46.5 - - uid: 17301 - components: - - type: Transform - parent: 2 - pos: -61.24472,-24.790556 - proto: PottedPlant7 entities: - uid: 10797 @@ -95394,13 +94490,6 @@ entities: - type: Transform parent: 2 pos: 22.5,-76.5 -- proto: PottedPlantRandomPlastic - entities: - - uid: 18249 - components: - - type: Transform - parent: 2 - pos: 15.5,-89.5 - proto: PowerCellMedium entities: - uid: 1670 @@ -95463,6 +94552,11 @@ entities: - type: Transform parent: 2 pos: 77.5,-21.5 + - uid: 11468 + components: + - type: Transform + parent: 2 + pos: 18.5,-17.5 - uid: 14432 components: - type: Transform @@ -96808,11 +95902,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: -66.5,-25.5 - - uid: 14407 - components: - - type: Transform - parent: 2 - pos: 50.5,-80.5 - uid: 14420 components: - type: Transform @@ -96943,12 +96032,6 @@ entities: - type: Transform parent: 2 pos: -39.5,-64.5 - - uid: 5201 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 18.5,-42.5 - uid: 5302 components: - type: Transform @@ -96960,6 +96043,14 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: -36.5,-50.5 +- proto: PoweredlightOrange + entities: + - uid: 2205 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 19.5,-42.5 - proto: PoweredlightPink entities: - uid: 2342 @@ -97060,12 +96151,6 @@ entities: - type: Transform parent: 2 pos: -20.5,-43.5 - - uid: 1209 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -59.5,-25.5 - uid: 1702 components: - type: Transform @@ -97166,6 +96251,17 @@ entities: - type: Transform parent: 2 pos: 48.5,-74.5 + - uid: 6371 + components: + - type: Transform + parent: 2 + pos: 48.5,-80.5 + - uid: 6392 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 46.5,-84.5 - uid: 6603 components: - type: Transform @@ -97193,12 +96289,6 @@ entities: - type: Transform parent: 2 pos: -9.5,-24.5 - - uid: 7997 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 42.5,-26.5 - uid: 10743 components: - type: Transform @@ -97384,12 +96474,6 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 3.5,-54.5 - - uid: 14285 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: -32.5,-25.5 - uid: 14286 components: - type: Transform @@ -97407,11 +96491,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 80.5,-23.5 - - uid: 14349 - components: - - type: Transform - parent: 2 - pos: 82.5,-20.5 - uid: 14369 components: - type: Transform @@ -97521,11 +96600,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 57.5,-59.5 - - uid: 16021 - components: - - type: Transform - parent: 2 - pos: 41.5,-32.5 - uid: 16041 components: - type: Transform @@ -97566,11 +96640,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: -51.5,-23.5 - - uid: 16535 - components: - - type: Transform - parent: 2 - pos: -33.5,-27.5 - uid: 16545 components: - type: Transform @@ -97703,6 +96772,12 @@ entities: pos: 31.5,-48.5 - proto: PoweredWarmSmallLight entities: + - uid: 529 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 43.5,-30.5 - uid: 1187 components: - type: Transform @@ -97727,6 +96802,18 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: -17.5,-41.5 + - uid: 3687 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 42.5,-30.5 + - uid: 3699 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 41.5,-30.5 - uid: 4183 components: - type: Transform @@ -97942,11 +97029,6 @@ entities: - type: Transform parent: 2 pos: -26.5,-43.5 - - uid: 17529 - components: - - type: Transform - parent: 2 - pos: 82.5,-72.5 - uid: 18332 components: - type: Transform @@ -98291,11 +97373,6 @@ entities: pos: 56.5,-41.5 - proto: PuddleFluorosulfuricAcid entities: - - uid: 3169 - components: - - type: Transform - parent: 2 - pos: 42.5,-26.5 - uid: 7934 components: - type: Transform @@ -98558,6 +97635,12 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 69.5,-32.5 + - uid: 7297 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 42.5,-33.5 - uid: 7675 components: - type: Transform @@ -98680,6 +97763,21 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 29.5,-61.5 + - uid: 12634 + components: + - type: Transform + parent: 2 + pos: 45.5,-33.5 + - uid: 12925 + components: + - type: Transform + parent: 2 + pos: 47.5,-26.5 + - uid: 12959 + components: + - type: Transform + parent: 2 + pos: 47.5,-27.5 - uid: 13906 components: - type: Transform @@ -98816,11 +97914,6 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 50.5,-94.5 - - uid: 19737 - components: - - type: Transform - parent: 2 - pos: 40.5,-32.5 - uid: 19965 components: - type: Transform @@ -99171,11 +98264,6 @@ entities: pos: -12.5,-17.5 - proto: RandomArtifactSpawner entities: - - uid: 1135 - components: - - type: Transform - parent: 2 - pos: -39.5,-75.5 - uid: 5150 components: - type: Transform @@ -99186,6 +98274,13 @@ entities: - type: Transform parent: 2 pos: -19.5,-32.5 +- proto: RandomArtifactSpawner20 + entities: + - uid: 7698 + components: + - type: Transform + parent: 2 + pos: -39.5,-76.5 - proto: RandomDrinkBottle entities: - uid: 15435 @@ -99234,83 +98329,6 @@ entities: - type: Transform parent: 2 pos: 21.5,-20.5 -- proto: RandomGreyStalagmite - entities: - - uid: 3766 - components: - - type: Transform - parent: 2 - pos: -9.5,-75.5 - - uid: 8836 - components: - - type: Transform - parent: 2 - pos: -43.5,-78.5 - - uid: 10818 - components: - - type: Transform - parent: 2 - pos: 71.5,-70.5 - - uid: 14262 - components: - - type: Transform - parent: 2 - pos: 76.5,-58.5 - - uid: 15269 - components: - - type: Transform - parent: 2 - pos: -43.5,-77.5 - - uid: 15404 - components: - - type: Transform - parent: 2 - pos: 75.5,-57.5 - - uid: 15471 - components: - - type: Transform - parent: 2 - pos: 64.5,-58.5 - - uid: 15478 - components: - - type: Transform - parent: 2 - pos: 66.5,-60.5 - - uid: 16606 - components: - - type: Transform - parent: 2 - pos: 76.5,-57.5 - - uid: 17730 - components: - - type: Transform - parent: 2 - pos: -8.5,-75.5 - - uid: 17732 - components: - - type: Transform - parent: 2 - pos: 72.5,-59.5 - - uid: 17784 - components: - - type: Transform - parent: 2 - pos: -36.5,-73.5 - - uid: 18512 - components: - - type: Transform - parent: 2 - pos: 35.5,-32.5 - - uid: 19588 - components: - - type: Transform - parent: 2 - pos: 4.5,-78.5 - - uid: 19589 - components: - - type: Transform - parent: 2 - pos: -0.5,-75.5 - proto: RandomInstruments entities: - uid: 6007 @@ -99342,11 +98360,6 @@ entities: - type: Transform parent: 2 pos: 72.5,-66.5 - - uid: 19217 - components: - - type: Transform - parent: 2 - pos: 38.5,-33.5 - proto: RandomPosterContraband entities: - uid: 6911 @@ -99354,11 +98367,6 @@ entities: - type: Transform parent: 2 pos: 56.5,-97.5 - - uid: 12952 - components: - - type: Transform - parent: 2 - pos: 47.5,-28.5 - uid: 15134 components: - type: Transform @@ -99448,21 +98456,16 @@ entities: pos: 10.5,-46.5 - proto: RandomProduce entities: - - uid: 19740 + - uid: 919 components: - type: Transform parent: 2 - pos: 39.5,-33.5 - - uid: 19741 + pos: 44.5,-30.5 + - uid: 1568 components: - type: Transform parent: 2 - pos: 41.5,-34.5 - - uid: 19743 - components: - - type: Transform - parent: 2 - pos: 43.5,-33.5 + pos: 36.5,-34.5 - uid: 20049 components: - type: Transform @@ -99514,16 +98517,6 @@ entities: - type: Transform parent: 2 pos: 23.5,-65.5 - - uid: 17320 - components: - - type: Transform - parent: 2 - pos: 50.5,-82.5 - - uid: 17321 - components: - - type: Transform - parent: 2 - pos: 48.5,-80.5 - uid: 17359 components: - type: Transform @@ -99580,11 +98573,6 @@ entities: - type: Transform parent: 2 pos: -34.5,-52.5 - - uid: 9913 - components: - - type: Transform - parent: 2 - pos: -42.5,-67.5 - uid: 10767 components: - type: Transform @@ -99602,11 +98590,6 @@ entities: - type: Transform parent: 2 pos: -35.5,-38.5 - - uid: 5273 - components: - - type: Transform - parent: 2 - pos: 10.5,-19.5 - uid: 8663 components: - type: Transform @@ -99653,11 +98636,6 @@ entities: pos: -52.72353,-51.759876 - proto: ReagentContainerFlour entities: - - uid: 7031 - components: - - type: Transform - parent: 2 - pos: 40.70177,-32.37174 - uid: 15274 components: - type: Transform @@ -99736,6 +98714,11 @@ entities: - type: Transform parent: 2 pos: -22.5,-34.5 + - uid: 564 + components: + - type: Transform + parent: 2 + pos: 14.5,-44.5 - uid: 808 components: - type: Transform @@ -99821,6 +98804,11 @@ entities: - type: Transform parent: 2 pos: -17.5,-30.5 + - uid: 5077 + components: + - type: Transform + parent: 2 + pos: 14.5,-40.5 - uid: 6248 components: - type: Transform @@ -99972,6 +98960,11 @@ entities: - type: Transform parent: 2 pos: 51.5,-64.5 + - uid: 13909 + components: + - type: Transform + parent: 2 + pos: -13.5,-77.5 - uid: 13942 components: - type: Transform @@ -99982,6 +98975,11 @@ entities: - type: Transform parent: 2 pos: 20.5,-41.5 + - uid: 14069 + components: + - type: Transform + parent: 2 + pos: -13.5,-76.5 - uid: 14151 components: - type: Transform @@ -100278,81 +99276,72 @@ entities: pos: 14.5,-39.5 - proto: ReinforcedUraniumWindow entities: - - uid: 7264 + - uid: 270 components: - type: Transform parent: 2 - pos: 19.5,-41.5 - - uid: 8016 + rot: -1.5707963267948966 rad + pos: 49.5,-85.5 + - uid: 4001 components: - type: Transform parent: 2 - pos: 16.5,-40.5 - - uid: 10446 + rot: -1.5707963267948966 rad + pos: 45.5,-83.5 + - uid: 4005 components: - type: Transform parent: 2 - pos: 19.5,-40.5 - - uid: 10447 + rot: -1.5707963267948966 rad + pos: 45.5,-84.5 + - uid: 4268 components: - type: Transform parent: 2 - pos: 19.5,-43.5 - - uid: 10774 + rot: -1.5707963267948966 rad + pos: 45.5,-85.5 + - uid: 4368 components: - type: Transform parent: 2 - pos: 19.5,-42.5 - - uid: 11402 + rot: -1.5707963267948966 rad + pos: 49.5,-83.5 + - uid: 4418 components: - type: Transform parent: 2 - pos: 15.5,-40.5 - - uid: 13274 + rot: -1.5707963267948966 rad + pos: 47.5,-86.5 + - uid: 4442 components: - type: Transform parent: 2 - pos: 17.5,-44.5 - - uid: 13452 + rot: -1.5707963267948966 rad + pos: 48.5,-82.5 + - uid: 4492 components: - type: Transform parent: 2 - pos: 16.5,-44.5 - - uid: 13978 + rot: -1.5707963267948966 rad + pos: 46.5,-86.5 + - uid: 4741 components: - type: Transform parent: 2 - pos: 18.5,-40.5 - - uid: 14005 + rot: -1.5707963267948966 rad + pos: 46.5,-82.5 + - uid: 4803 components: - type: Transform parent: 2 - pos: 18.5,-44.5 - - uid: 14025 + rot: -1.5707963267948966 rad + pos: 47.5,-82.5 + - uid: 5004 components: - type: Transform parent: 2 - pos: 17.5,-40.5 - - uid: 14029 - components: - - type: Transform - parent: 2 - pos: 19.5,-44.5 - - uid: 14047 - components: - - type: Transform - parent: 2 - pos: 15.5,-41.5 - - uid: 15698 - components: - - type: Transform - parent: 2 - pos: 15.5,-44.5 - - uid: 17173 - components: - - type: Transform - parent: 2 - pos: 15.5,-43.5 + rot: -1.5707963267948966 rad + pos: 48.5,-86.5 - proto: ReinforcedWindow entities: - uid: 79 @@ -100845,11 +99834,6 @@ entities: - type: Transform parent: 2 pos: 26.5,-87.5 - - uid: 4741 - components: - - type: Transform - parent: 2 - pos: 15.5,-91.5 - uid: 4745 components: - type: Transform @@ -101754,13 +100738,6 @@ entities: - type: Transform parent: 2 pos: -12.36079,-23.400194 -- proto: SheetGlass10 - entities: - - uid: 19738 - components: - - type: Transform - parent: 2 - pos: 42.067513,-34.49177 - proto: SheetPlasma entities: - uid: 3506 @@ -103088,178 +102065,6 @@ entities: 2528: - - Pressed - Toggle - - uid: 15700 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 36.5,-27.5 - - type: DeviceLinkSource - linkedPorts: - 3725: - - - Pressed - - Forward - 6388: - - - Pressed - - Forward - 7891: - - - Pressed - - Forward - 6396: - - - Pressed - - Forward - 3720: - - - Pressed - - Forward - 3719: - - - Pressed - - Forward - 3721: - - - Pressed - - Forward - 6400: - - - Pressed - - Forward - 1073: - - - Pressed - - Forward - 1140: - - - Pressed - - Forward - 12962: - - - Pressed - - Forward - 6397: - - - Pressed - - Forward - 6401: - - - Pressed - - Forward - 3530: - - - Pressed - - Forward - 3531: - - - Pressed - - Forward - 3729: - - - Pressed - - Forward - 6139: - - - Pressed - - Forward - 3168: - - - Pressed - - Forward - 3718: - - - Pressed - - Forward - 3717: - - - Pressed - - Forward - 8148: - - - Pressed - - Forward - 12955: - - - Pressed - - Forward - 11980: - - - Pressed - - Forward - 8089: - - - Pressed - - Forward - 11979: - - - Pressed - - Forward - 11978: - - - Pressed - - Forward - - uid: 15849 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 36.5,-29.5 - - type: DeviceLinkSource - linkedPorts: - 3725: - - - Pressed - - Off - 6388: - - - Pressed - - Off - 7891: - - - Pressed - - Off - 6396: - - - Pressed - - Off - 3720: - - - Pressed - - Off - 3719: - - - Pressed - - Off - 3721: - - - Pressed - - Off - 6400: - - - Pressed - - Off - 1073: - - - Pressed - - Off - 1140: - - - Pressed - - Off - 12962: - - - Pressed - - Off - 6397: - - - Pressed - - Off - 6401: - - - Pressed - - Off - 3530: - - - Pressed - - Off - 3531: - - - Pressed - - Off - 3729: - - - Pressed - - Off - 6139: - - - Pressed - - Off - 3168: - - - Pressed - - Off - 3718: - - - Pressed - - Off - 3717: - - - Pressed - - Off - 8148: - - - Pressed - - Off - 12955: - - - Pressed - - Off - 11980: - - - Pressed - - Off - 8089: - - - Pressed - - Off - 11979: - - - Pressed - - Off - 11978: - - - Pressed - - Off - uid: 16040 components: - type: Transform @@ -104980,18 +103785,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 16.5,-90.5 - - uid: 15694 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 39.5,-27.5 - - uid: 15696 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 45.5,-28.5 - uid: 18910 components: - type: Transform @@ -105150,6 +103943,11 @@ entities: pos: 39.5,-18.5 - proto: SignSpace entities: + - uid: 6393 + components: + - type: Transform + parent: 2 + pos: 50.5,-77.5 - uid: 8658 components: - type: Transform @@ -105296,13 +104094,6 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 12.5,-25.5 -- proto: Skub - entities: - - uid: 16871 - components: - - type: Transform - parent: 2 - pos: -61.753063,-25.19519 - proto: SmartFridge entities: - uid: 13948 @@ -105405,12 +104196,6 @@ entities: - type: Transform parent: 2 pos: 61.5,-67.5 - - uid: 5004 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -22.5,-14.5 - uid: 7005 components: - type: Transform @@ -106569,13 +105354,13 @@ entities: - type: Transform parent: 2 pos: -53.5,-65.5 -- proto: SpearReinforced +- proto: SpearBone entities: - - uid: 7337 + - uid: 3730 components: - type: Transform parent: 2 - pos: 78.48892,-25.591612 + pos: 78.51151,-25.470703 - proto: SpeedLoaderMagnum entities: - uid: 10259 @@ -106583,28 +105368,6 @@ entities: - type: Transform parent: 2 pos: 68.498024,-48.389458 -- proto: SprayBottle - entities: - - uid: 7125 - components: - - type: MetaData - name: bee spray - desc: 'May contain: Bees.' - - type: Transform - parent: 2 - pos: 83.78669,-18.784428 - - type: Tag - tags: - - Spray - - type: Solution - solution: - temperature: 293.15 - maxVol: 60 - reagents: - - ReagentId: BuzzochloricBees - data: [] - Quantity: 60 - canReact: True - proto: SprayBottleSpaceCleaner entities: - uid: 6971 @@ -107090,6 +105853,31 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 60.5,-71.5 + - uid: 3031 + components: + - type: Transform + parent: 2 + pos: 40.5,-28.5 + - uid: 3692 + components: + - type: Transform + parent: 2 + pos: 43.5,-28.5 + - uid: 3694 + components: + - type: Transform + parent: 2 + pos: 44.5,-28.5 + - uid: 3700 + components: + - type: Transform + parent: 2 + pos: 42.5,-28.5 + - uid: 3703 + components: + - type: Transform + parent: 2 + pos: 41.5,-28.5 - uid: 7057 components: - type: Transform @@ -107127,6 +105915,11 @@ entities: - type: Transform parent: 2 pos: -22.5,-24.5 + - uid: 6375 + components: + - type: Transform + parent: 2 + pos: 48.5,-74.5 - uid: 7247 components: - type: Transform @@ -107152,16 +105945,6 @@ entities: - type: Transform parent: 2 pos: -1.5,-56.5 - - uid: 12881 - components: - - type: Transform - parent: 2 - pos: 51.5,-74.5 - - uid: 14408 - components: - - type: Transform - parent: 2 - pos: 50.5,-74.5 - proto: Stunbaton entities: - uid: 16289 @@ -109132,16 +107915,6 @@ entities: pos: -31.5,-25.5 - proto: SurvivalKnife entities: - - uid: 17304 - components: - - type: Transform - parent: 2 - pos: 71.9411,-16.53467 - - uid: 17527 - components: - - type: Transform - parent: 2 - pos: 83.72667,-72.569664 - uid: 19675 components: - type: Transform @@ -109644,6 +108417,11 @@ entities: - type: Transform parent: 2 pos: 65.5,-31.5 + - uid: 7509 + components: + - type: Transform + parent: 2 + pos: -32.5,-26.5 - uid: 7586 components: - type: Transform @@ -109819,11 +108597,6 @@ entities: - type: Transform parent: 2 pos: 21.5,-30.5 - - uid: 18219 - components: - - type: Transform - parent: 2 - pos: -22.5,-14.5 - uid: 18246 components: - type: Transform @@ -109852,6 +108625,21 @@ entities: pos: -1.5,-55.5 - proto: TableCarpet entities: + - uid: 3696 + components: + - type: Transform + parent: 2 + pos: 44.5,-30.5 + - uid: 3698 + components: + - type: Transform + parent: 2 + pos: 44.5,-29.5 + - uid: 6401 + components: + - type: Transform + parent: 2 + pos: 41.5,-29.5 - uid: 6722 components: - type: Transform @@ -109902,6 +108690,21 @@ entities: - type: Transform parent: 2 pos: 69.5,-46.5 + - uid: 7689 + components: + - type: Transform + parent: 2 + pos: 40.5,-29.5 + - uid: 7690 + components: + - type: Transform + parent: 2 + pos: 43.5,-29.5 + - uid: 7691 + components: + - type: Transform + parent: 2 + pos: 42.5,-29.5 - uid: 7970 components: - type: Transform @@ -109959,13 +108762,6 @@ entities: - type: Transform parent: 2 pos: 18.5,-76.5 -- proto: TableFancyPink - entities: - - uid: 15853 - components: - - type: Transform - parent: 2 - pos: -37.5,-33.5 - proto: TableFancyPurple entities: - uid: 165 @@ -110986,11 +109782,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: -25.5,-39.5 - - uid: 7429 - components: - - type: Transform - parent: 2 - pos: 45.5,-75.5 - uid: 7543 components: - type: Transform @@ -111070,11 +109861,6 @@ entities: - type: Transform parent: 2 pos: -32.5,-21.5 - - uid: 14069 - components: - - type: Transform - parent: 2 - pos: -33.5,-25.5 - uid: 14119 components: - type: Transform @@ -111091,12 +109877,6 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: -37.5,-75.5 - - uid: 14926 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 41.5,-34.5 - uid: 15115 components: - type: Transform @@ -111293,12 +110073,6 @@ entities: - type: Transform parent: 2 pos: -9.5,-26.5 - - uid: 19496 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 46.5,-75.5 - uid: 20162 components: - type: Transform @@ -111524,6 +110298,21 @@ entities: - type: Transform parent: 2 pos: 51.5,-35.5 + - uid: 11978 + components: + - type: Transform + parent: 2 + pos: 16.5,-83.5 + - uid: 12955 + components: + - type: Transform + parent: 2 + pos: 68.5,-60.5 + - uid: 12956 + components: + - type: Transform + parent: 2 + pos: 70.5,-59.5 - uid: 15273 components: - type: Transform @@ -111706,11 +110495,6 @@ entities: - type: InsideEntityStorage - proto: ToyAmongPequeno entities: - - uid: 17384 - components: - - type: Transform - parent: 2 - pos: 35.4657,-82.51966 - uid: 17386 components: - type: Transform @@ -111730,18 +110514,6 @@ entities: - type: Transform parent: 2 pos: -2.0095367,-62.857395 - - uid: 18012 - components: - - type: Transform - parent: 2 - pos: -22.796017,-18.004782 -- proto: ToyFigurineResearchDirector - entities: - - uid: 11468 - components: - - type: Transform - parent: 2 - pos: -23.410599,-17.994358 - proto: ToyFigurineSalvage entities: - uid: 6034 @@ -111770,23 +110542,11 @@ entities: - type: Transform parent: 2 pos: 11.488949,-44.128864 - - uid: 17381 - components: - - type: Transform - parent: 2 - pos: 35.55537,-87.765205 - uid: 18018 components: - type: Transform parent: 2 pos: 15.464093,-63.08658 -- proto: ToyNuke - entities: - - uid: 17382 - components: - - type: Transform - parent: 2 - pos: 35.326195,-88.369736 - proto: ToyRipley entities: - uid: 17383 @@ -112219,6 +110979,11 @@ entities: - type: Transform parent: 2 pos: 17.5,-49.5 + - uid: 14385 + components: + - type: Transform + parent: 2 + pos: -41.5,-67.5 - proto: VendingMachineCoffee entities: - uid: 4630 @@ -112323,6 +111088,11 @@ entities: pos: 49.5,-55.5 - proto: VendingMachineMedical entities: + - uid: 7768 + components: + - type: Transform + parent: 2 + pos: 10.5,-19.5 - uid: 7801 components: - type: Transform @@ -112444,11 +111214,6 @@ entities: - type: Transform parent: 2 pos: 68.5,-57.5 - - uid: 19362 - components: - - type: Transform - parent: 2 - pos: -2.5,-44.5 - proto: VendingMachineSustenance entities: - uid: 14273 @@ -118782,11 +117547,6 @@ entities: - type: Transform parent: 2 pos: 46.5,-79.5 - - uid: 2703 - components: - - type: Transform - parent: 2 - pos: 46.5,-78.5 - uid: 2710 components: - type: Transform @@ -118917,16 +117677,6 @@ entities: - type: Transform parent: 2 pos: 17.5,-69.5 - - uid: 2969 - components: - - type: Transform - parent: 2 - pos: 50.5,-78.5 - - uid: 2970 - components: - - type: Transform - parent: 2 - pos: 50.5,-79.5 - uid: 2971 components: - type: Transform @@ -120134,26 +118884,11 @@ entities: - type: Transform parent: 2 pos: 81.5,-19.5 - - uid: 4001 - components: - - type: Transform - parent: 2 - pos: 83.5,-17.5 - - uid: 4003 - components: - - type: Transform - parent: 2 - pos: 82.5,-17.5 - uid: 4004 components: - type: Transform parent: 2 pos: 81.5,-18.5 - - uid: 4005 - components: - - type: Transform - parent: 2 - pos: 81.5,-17.5 - uid: 4006 components: - type: Transform @@ -120999,11 +119734,6 @@ entities: - type: Transform parent: 2 pos: 48.5,-79.5 - - uid: 5077 - components: - - type: Transform - parent: 2 - pos: 48.5,-78.5 - uid: 5081 components: - type: Transform @@ -121224,16 +119954,6 @@ entities: - type: Transform parent: 2 pos: 39.5,-79.5 - - uid: 6552 - components: - - type: Transform - parent: 2 - pos: 83.5,-19.5 - - uid: 6554 - components: - - type: Transform - parent: 2 - pos: 82.5,-19.5 - uid: 6669 components: - type: Transform @@ -121324,16 +120044,6 @@ entities: - type: Transform parent: 2 pos: 38.5,-72.5 - - uid: 7257 - components: - - type: Transform - parent: 2 - pos: 51.5,-78.5 - - uid: 7259 - components: - - type: Transform - parent: 2 - pos: 51.5,-79.5 - uid: 7263 components: - type: Transform @@ -122616,16 +121326,6 @@ entities: - type: Transform parent: 2 pos: 11.5,-67.5 - - uid: 15912 - components: - - type: Transform - parent: 2 - pos: 83.5,-71.5 - - uid: 15913 - components: - - type: Transform - parent: 2 - pos: 82.5,-71.5 - uid: 16145 components: - type: Transform @@ -122736,21 +121436,11 @@ entities: - type: Transform parent: 2 pos: -23.5,-89.5 - - uid: 16856 - components: - - type: Transform - parent: 2 - pos: 50.5,-73.5 - uid: 16857 components: - type: Transform parent: 2 pos: 49.5,-73.5 - - uid: 16859 - components: - - type: Transform - parent: 2 - pos: 51.5,-73.5 - uid: 16991 components: - type: Transform @@ -123631,11 +122321,6 @@ entities: - type: Transform parent: 2 pos: 20.5,-81.5 - - uid: 8351 - components: - - type: Transform - parent: 2 - pos: 16.5,-82.5 - proto: WallSolidChitin entities: - uid: 125 @@ -123643,17 +122328,17 @@ entities: - type: Transform parent: 2 pos: -14.5,-22.5 - - uid: 164 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 39.5,-32.5 - uid: 170 components: - type: Transform parent: 2 pos: -18.5,-23.5 + - uid: 180 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 45.5,-86.5 - uid: 181 components: - type: Transform @@ -123930,6 +122615,18 @@ entities: - type: Transform parent: 2 pos: -23.5,-49.5 + - uid: 565 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 38.5,-33.5 + - uid: 568 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 40.5,-33.5 - uid: 570 components: - type: Transform @@ -123970,6 +122667,12 @@ entities: - type: Transform parent: 2 pos: -13.5,-22.5 + - uid: 581 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 39.5,-33.5 - uid: 584 components: - type: Transform @@ -124055,6 +122758,12 @@ entities: - type: Transform parent: 2 pos: 72.5,-66.5 + - uid: 901 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 43.5,-25.5 - uid: 925 components: - type: Transform @@ -124085,11 +122794,6 @@ entities: - type: Transform parent: 2 pos: -1.5,-42.5 - - uid: 966 - components: - - type: Transform - parent: 2 - pos: 0.5,-42.5 - uid: 968 components: - type: Transform @@ -125091,11 +123795,21 @@ entities: - type: Transform parent: 2 pos: -56.5,-24.5 + - uid: 1560 + components: + - type: Transform + parent: 2 + pos: -34.5,-27.5 - uid: 1581 components: - type: Transform parent: 2 pos: -52.5,-27.5 + - uid: 1596 + components: + - type: Transform + parent: 2 + pos: 45.5,-35.5 - uid: 1624 components: - type: Transform @@ -125374,6 +124088,11 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 24.5,-19.5 + - uid: 2306 + components: + - type: Transform + parent: 2 + pos: 47.5,-25.5 - uid: 2343 components: - type: Transform @@ -125566,11 +124285,6 @@ entities: - type: Transform parent: 2 pos: 18.5,-57.5 - - uid: 2705 - components: - - type: Transform - parent: 2 - pos: -33.5,-26.5 - uid: 2706 components: - type: Transform @@ -125796,6 +124510,12 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 68.5,-59.5 + - uid: 3394 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 38.5,-29.5 - uid: 3416 components: - type: Transform @@ -125930,33 +124650,24 @@ entities: - type: Transform parent: 2 pos: 58.5,-66.5 - - uid: 3723 + - uid: 3717 components: - type: Transform parent: 2 - pos: 42.5,-28.5 - - uid: 3727 + rot: 3.141592653589793 rad + pos: 38.5,-28.5 + - uid: 3719 components: - type: Transform parent: 2 - rot: 1.5707963267948966 rad - pos: 44.5,-27.5 + rot: 3.141592653589793 rad + pos: 40.5,-32.5 - uid: 3728 components: - type: Transform parent: 2 - rot: 1.5707963267948966 rad - pos: 44.5,-28.5 - - uid: 3730 - components: - - type: Transform - parent: 2 - pos: 44.5,-34.5 - - uid: 3732 - components: - - type: Transform - parent: 2 - pos: 46.5,-34.5 + rot: 3.141592653589793 rad + pos: 38.5,-32.5 - uid: 3738 components: - type: Transform @@ -126037,11 +124748,6 @@ entities: - type: Transform parent: 2 pos: 35.5,-31.5 - - uid: 3842 - components: - - type: Transform - parent: 2 - pos: 47.5,-30.5 - uid: 3862 components: - type: Transform @@ -126166,11 +124872,6 @@ entities: - type: Transform parent: 2 pos: 21.5,-14.5 - - uid: 4268 - components: - - type: Transform - parent: 2 - pos: -32.5,-26.5 - uid: 4269 components: - type: Transform @@ -126191,11 +124892,6 @@ entities: - type: Transform parent: 2 pos: -19.5,-44.5 - - uid: 4492 - components: - - type: Transform - parent: 2 - pos: 42.5,-31.5 - uid: 4541 components: - type: Transform @@ -126402,11 +125098,6 @@ entities: - type: Transform parent: 2 pos: -57.5,-26.5 - - uid: 4817 - components: - - type: Transform - parent: 2 - pos: -60.5,-25.5 - uid: 5002 components: - type: Transform @@ -126417,6 +125108,11 @@ entities: - type: Transform parent: 2 pos: -58.5,-64.5 + - uid: 5069 + components: + - type: Transform + parent: 2 + pos: 3.5,-44.5 - uid: 5098 components: - type: Transform @@ -126439,11 +125135,16 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 40.5,-35.5 + - uid: 5281 + components: + - type: Transform + parent: 2 + pos: 2.5,-42.5 - uid: 5303 components: - type: Transform parent: 2 - pos: 47.5,-28.5 + pos: 1.5,-42.5 - uid: 5316 components: - type: Transform @@ -126600,6 +125301,11 @@ entities: - type: Transform parent: 2 pos: 74.5,-34.5 + - uid: 6289 + components: + - type: Transform + parent: 2 + pos: 3.5,-42.5 - uid: 6296 components: - type: Transform @@ -126615,30 +125321,6 @@ entities: - type: Transform parent: 2 pos: 78.5,-29.5 - - uid: 6368 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 39.5,-31.5 - - uid: 6371 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 39.5,-27.5 - - uid: 6375 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 38.5,-32.5 - - uid: 6376 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 40.5,-31.5 - uid: 6377 components: - type: Transform @@ -126665,32 +125347,17 @@ entities: - type: Transform parent: 2 pos: 36.5,-26.5 - - uid: 6392 - components: - - type: Transform - parent: 2 - pos: 40.5,-29.5 - - uid: 6393 - components: - - type: Transform - parent: 2 - pos: 41.5,-29.5 - - uid: 6394 - components: - - type: Transform - parent: 2 - pos: 39.5,-29.5 - - uid: 6395 - components: - - type: Transform - parent: 2 - pos: 38.5,-29.5 - uid: 6399 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad pos: 44.5,-25.5 + - uid: 6459 + components: + - type: Transform + parent: 2 + pos: 50.5,-79.5 - uid: 6612 components: - type: Transform @@ -126707,11 +125374,28 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 24.5,-20.5 + - uid: 6762 + components: + - type: Transform + parent: 2 + pos: 50.5,-80.5 + - uid: 6921 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 45.5,-31.5 - uid: 7006 components: - type: Transform parent: 2 pos: 35.5,-40.5 + - uid: 7031 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 46.5,-27.5 - uid: 7048 components: - type: Transform @@ -126728,6 +125412,12 @@ entities: - type: Transform parent: 2 pos: 35.5,-25.5 + - uid: 7125 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 40.5,-31.5 - uid: 7141 components: - type: Transform @@ -126747,8 +125437,8 @@ entities: components: - type: Transform parent: 2 - rot: 1.5707963267948966 rad - pos: 47.5,-26.5 + rot: 3.141592653589793 rad + pos: 44.5,-31.5 - uid: 7188 components: - type: Transform @@ -126764,11 +125454,35 @@ entities: - type: Transform parent: 2 pos: 53.5,-47.5 + - uid: 7218 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 46.5,-28.5 - uid: 7233 components: - type: Transform parent: 2 pos: 31.5,-31.5 + - uid: 7258 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 46.5,-29.5 + - uid: 7259 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 43.5,-31.5 + - uid: 7264 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 42.5,-31.5 - uid: 7290 components: - type: Transform @@ -126779,6 +125493,24 @@ entities: - type: Transform parent: 2 pos: -15.5,-41.5 + - uid: 7328 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 46.5,-31.5 + - uid: 7331 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 41.5,-31.5 + - uid: 7336 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 46.5,-26.5 - uid: 7340 components: - type: Transform @@ -126843,11 +125575,6 @@ entities: - type: Transform parent: 2 pos: 32.5,-25.5 - - uid: 7603 - components: - - type: Transform - parent: 2 - pos: 37.5,-29.5 - uid: 7610 components: - type: Transform @@ -126864,6 +125591,11 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 53.5,-41.5 + - uid: 7694 + components: + - type: Transform + parent: 2 + pos: 52.5,-80.5 - uid: 7705 components: - type: Transform @@ -126874,11 +125606,6 @@ entities: - type: Transform parent: 2 pos: 72.5,-61.5 - - uid: 7726 - components: - - type: Transform - parent: 2 - pos: 41.5,-28.5 - uid: 7730 components: - type: Transform @@ -127046,18 +125773,43 @@ entities: components: - type: Transform parent: 2 - pos: 70.5,-59.5 + rot: -1.5707963267948966 rad + pos: 49.5,-86.5 + - uid: 8621 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 49.5,-82.5 + - uid: 8624 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 38.5,-30.5 - uid: 8630 components: - type: Transform parent: 2 pos: 54.5,-47.5 + - uid: 8691 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 38.5,-31.5 - uid: 8813 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad pos: 53.5,-25.5 + - uid: 8836 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 50.5,-77.5 - uid: 9328 components: - type: Transform @@ -127150,6 +125902,11 @@ entities: - type: Transform parent: 2 pos: 59.5,-58.5 + - uid: 9711 + components: + - type: Transform + parent: 2 + pos: 50.5,-78.5 - uid: 10291 components: - type: Transform @@ -127305,12 +126062,6 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 69.5,-65.5 - - uid: 11895 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 68.5,-60.5 - uid: 11898 components: - type: Transform @@ -127362,32 +126113,16 @@ entities: - type: Transform parent: 2 pos: -37.5,-74.5 - - uid: 12801 - components: - - type: Transform - parent: 2 - pos: 44.5,-31.5 - uid: 12841 components: - type: Transform parent: 2 - pos: 46.5,-31.5 - - uid: 12957 + pos: 42.5,-26.5 + - uid: 12962 components: - type: Transform parent: 2 - pos: 44.5,-30.5 - - uid: 12959 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 45.5,-28.5 - - uid: 12961 - components: - - type: Transform - parent: 2 - pos: 44.5,-29.5 + pos: 36.5,-28.5 - uid: 12973 components: - type: Transform @@ -127418,18 +126153,6 @@ entities: - type: Transform parent: 2 pos: 38.5,-26.5 - - uid: 12981 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 43.5,-31.5 - - uid: 12983 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 41.5,-31.5 - uid: 12990 components: - type: Transform @@ -127447,6 +126170,11 @@ entities: - type: Transform parent: 2 pos: 76.5,-32.5 + - uid: 13645 + components: + - type: Transform + parent: 2 + pos: -0.5,-42.5 - uid: 13650 components: - type: Transform @@ -127481,7 +126209,7 @@ entities: components: - type: Transform parent: 2 - pos: 47.5,-27.5 + pos: 0.5,-42.5 - uid: 13874 components: - type: Transform @@ -127508,12 +126236,6 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 68.5,-61.5 - - uid: 13909 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 38.5,-33.5 - uid: 13947 components: - type: Transform @@ -127537,6 +126259,12 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: -14.5,-29.5 + - uid: 14029 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 45.5,-82.5 - uid: 14046 components: - type: Transform @@ -127606,11 +126334,6 @@ entities: - type: Transform parent: 2 pos: 50.5,-25.5 - - uid: 14405 - components: - - type: Transform - parent: 2 - pos: 47.5,-29.5 - uid: 14458 components: - type: Transform @@ -127949,11 +126672,6 @@ entities: - type: Transform parent: 2 pos: 12.5,-92.5 - - uid: 18251 - components: - - type: Transform - parent: 2 - pos: 17.5,-82.5 - proto: WardrobeMixedFilled entities: - uid: 11461 @@ -128058,6 +126776,11 @@ entities: - type: Transform parent: 2 pos: 23.5,-18.5 + - uid: 8351 + components: + - type: Transform + parent: 2 + pos: -22.5,-14.5 - uid: 8564 components: - type: Transform @@ -128348,16 +127071,6 @@ entities: - type: Transform parent: 2 pos: 52.5,-21.5 - - uid: 12956 - components: - - type: Transform - parent: 2 - pos: 37.5,-27.5 - - uid: 12958 - components: - - type: Transform - parent: 2 - pos: 46.5,-30.5 - proto: WeaponWaterPistol entities: - uid: 16714 @@ -128469,6 +127182,12 @@ entities: pos: 46.5,-41.5 - proto: Windoor entities: + - uid: 3702 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 39.5,-29.5 - uid: 4706 components: - type: Transform @@ -128521,11 +127240,6 @@ entities: - type: Transform parent: 2 pos: 79.5,-22.5 - - uid: 7768 - components: - - type: Transform - parent: 2 - pos: 30.5,-16.5 - uid: 8011 components: - type: Transform @@ -128543,11 +127257,6 @@ entities: - type: Transform parent: 2 pos: 59.5,-40.5 - - uid: 8617 - components: - - type: Transform - parent: 2 - pos: 32.5,-16.5 - uid: 9213 components: - type: Transform @@ -128571,135 +127280,30 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 53.5,-13.5 + - uid: 12983 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 33.5,-15.5 + - uid: 13274 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 30.5,-16.5 + - uid: 13567 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 32.5,-16.5 - uid: 16121 components: - type: Transform parent: 2 pos: 40.5,-18.5 -- proto: WindoorBarKitchenLocked - entities: - - uid: 7018 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 38.5,-44.5 - - uid: 7019 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 38.5,-43.5 - - uid: 7020 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 38.5,-42.5 - - uid: 18763 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 38.5,-45.5 - - uid: 19747 - components: - - type: Transform - parent: 2 - pos: 39.5,-46.5 -- proto: WindoorCargoLocked - entities: - - uid: 3041 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 27.5,-85.5 - - uid: 15175 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 21.5,-85.5 -- proto: WindoorHydroponicsLocked - entities: - - uid: 5164 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -4.5,-50.5 - - uid: 5172 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -4.5,-51.5 - - uid: 5178 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 2.5,-54.5 - - uid: 5179 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 2.5,-53.5 - - uid: 10607 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 1.5,-55.5 - - uid: 12508 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 1.5,-56.5 -- proto: WindoorPlasma - entities: - - uid: 2876 - components: - - type: Transform - parent: 2 - pos: -16.5,-36.5 - - uid: 6144 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 6.5,-49.5 - - uid: 6285 - components: - - type: Transform - parent: 2 - pos: 18.5,-76.5 - - uid: 6286 - components: - - type: Transform - parent: 2 - pos: 19.5,-76.5 - - uid: 6287 - components: - - type: Transform - parent: 2 - pos: 20.5,-76.5 - - uid: 8491 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: -6.5,-18.5 - - uid: 10558 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: -7.5,-18.5 -- proto: WindoorSecureArmoryLocked +- proto: WindoorArmoryLocked entities: - uid: 1211 components: @@ -128775,21 +127379,52 @@ entities: - type: Transform parent: 2 pos: 69.5,-32.5 -- proto: WindoorSecureAtmosphericsLocked +- proto: WindoorBarKitchenLocked entities: - - uid: 8009 + - uid: 7018 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad - pos: 26.5,-70.5 - - uid: 8010 + pos: 38.5,-44.5 + - uid: 7019 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad - pos: 26.5,-69.5 -- proto: WindoorSecureCommandLocked + pos: 38.5,-43.5 + - uid: 7020 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 38.5,-42.5 + - uid: 18763 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 38.5,-45.5 + - uid: 19747 + components: + - type: Transform + parent: 2 + pos: 39.5,-46.5 +- proto: WindoorCargoLocked + entities: + - uid: 3041 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 27.5,-85.5 + - uid: 15175 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 21.5,-85.5 +- proto: WindoorCommandLocked entities: - uid: 13568 components: @@ -128803,7 +127438,7 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 29.5,-60.5 -- proto: WindoorSecureEngineeringLocked +- proto: WindoorEngineeringLocked entities: - uid: 4657 components: @@ -128856,6 +127491,18 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 67.5,-21.5 + - uid: 8009 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 26.5,-70.5 + - uid: 8010 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 26.5,-69.5 - uid: 8021 components: - type: Transform @@ -128872,7 +127519,7 @@ entities: - type: Transform parent: 2 pos: -11.5,-71.5 -- proto: WindoorSecureExternalLocked +- proto: WindoorExternalLocked entities: - uid: 5974 components: @@ -128891,7 +127538,7 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 7.5,-17.5 -- proto: WindoorSecureHeadOfPersonnelLocked +- proto: WindoorHeadOfPersonnelLocked entities: - uid: 2934 components: @@ -128905,7 +127552,45 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 12.5,-59.5 -- proto: WindoorSecureMedicalLocked +- proto: WindoorHydroponicsLocked + entities: + - uid: 5164 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -4.5,-50.5 + - uid: 5172 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -4.5,-51.5 + - uid: 5178 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 2.5,-54.5 + - uid: 5179 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 2.5,-53.5 + - uid: 10607 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 1.5,-55.5 + - uid: 12508 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 1.5,-56.5 +- proto: WindoorMedicalLocked entities: - uid: 292 components: @@ -128918,24 +127603,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 7.5,-27.5 - - uid: 5422 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 32.5,-16.5 - - uid: 7796 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 30.5,-16.5 - - uid: 8691 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 33.5,-15.5 - uid: 9483 components: - type: Transform @@ -128957,7 +127624,47 @@ entities: - type: Transform parent: 2 pos: 14.5,-70.5 -- proto: WindoorSecureSecurityLocked +- proto: WindoorPlasma + entities: + - uid: 2876 + components: + - type: Transform + parent: 2 + pos: -16.5,-36.5 + - uid: 6144 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 6.5,-49.5 + - uid: 6285 + components: + - type: Transform + parent: 2 + pos: 18.5,-76.5 + - uid: 6286 + components: + - type: Transform + parent: 2 + pos: 19.5,-76.5 + - uid: 6287 + components: + - type: Transform + parent: 2 + pos: 20.5,-76.5 + - uid: 8491 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -6.5,-18.5 + - uid: 10558 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -7.5,-18.5 +- proto: WindoorSecurityLocked entities: - uid: 3579 components: @@ -129049,7 +127756,7 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 61.5,-27.5 -- proto: WindoorSecureServiceLocked +- proto: WindoorServiceLocked entities: - uid: 6038 components: @@ -129119,6 +127826,12 @@ entities: pos: 40.5,-47.5 - proto: WindowFrostedDirectional entities: + - uid: 3727 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 40.5,-29.5 - uid: 6162 components: - type: Transform @@ -129625,16 +128338,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 53.5,-66.5 - - uid: 1159 - components: - - type: Transform - parent: 2 - pos: 3.5,-43.5 - - uid: 1171 - components: - - type: Transform - parent: 2 - pos: 3.5,-44.5 - uid: 1184 components: - type: Transform @@ -129650,21 +128353,11 @@ entities: - type: Transform parent: 2 pos: 2.5,-40.5 - - uid: 1220 - components: - - type: Transform - parent: 2 - pos: 2.5,-42.5 - uid: 1231 components: - type: Transform parent: 2 pos: -1.5,-40.5 - - uid: 1568 - components: - - type: Transform - parent: 2 - pos: -13.5,-76.5 - uid: 1593 components: - type: Transform @@ -129680,11 +128373,6 @@ entities: - type: Transform parent: 2 pos: 50.5,-22.5 - - uid: 1804 - components: - - type: Transform - parent: 2 - pos: 47.5,-78.5 - uid: 1817 components: - type: Transform @@ -129710,11 +128398,6 @@ entities: - type: Transform parent: 2 pos: 22.5,-40.5 - - uid: 1843 - components: - - type: Transform - parent: 2 - pos: -12.5,-76.5 - uid: 1844 components: - type: Transform @@ -129785,11 +128468,6 @@ entities: - type: Transform parent: 2 pos: -6.5,-23.5 - - uid: 2203 - components: - - type: Transform - parent: 2 - pos: 3.5,-42.5 - uid: 2204 components: - type: Transform @@ -130186,11 +128864,6 @@ entities: - type: Transform parent: 2 pos: 45.5,-79.5 - - uid: 4079 - components: - - type: Transform - parent: 2 - pos: 45.5,-78.5 - uid: 4195 components: - type: Transform @@ -130211,11 +128884,6 @@ entities: - type: Transform parent: 2 pos: -46.5,-70.5 - - uid: 4199 - components: - - type: Transform - parent: 2 - pos: -12.5,-77.5 - uid: 4207 components: - type: Transform @@ -130326,11 +128994,6 @@ entities: - type: Transform parent: 2 pos: 80.5,-31.5 - - uid: 4418 - components: - - type: Transform - parent: 2 - pos: -13.5,-77.5 - uid: 4420 components: - type: Transform @@ -131173,11 +129836,16 @@ entities: - type: Transform parent: 2 pos: -30.5,-44.5 - - uid: 14084 + - uid: 14005 components: - type: Transform parent: 2 - pos: 0.5,-43.5 + pos: -12.5,-77.5 + - uid: 14047 + components: + - type: Transform + parent: 2 + pos: -12.5,-76.5 - uid: 14115 components: - type: Transform @@ -131220,11 +129888,6 @@ entities: - type: Transform parent: 2 pos: 46.5,-62.5 - - uid: 16449 - components: - - type: Transform - parent: 2 - pos: 49.5,-78.5 - uid: 16677 components: - type: Transform @@ -131271,11 +129934,6 @@ entities: - type: Transform parent: 2 pos: -16.5,-70.5 - - uid: 19005 - components: - - type: Transform - parent: 2 - pos: -0.5,-42.5 - uid: 19193 components: - type: Transform From dc9f25fe158bc0a3ac9a82df0ad09cc67bf2e137 Mon Sep 17 00:00:00 2001 From: papiepie Date: Wed, 9 Sep 2026 21:14:59 +0000 Subject: [PATCH 101/197] Nyctalon duration per u increased, drinking doesn't flash (#45943) * metab reduced to 0.2 dps increased by 25% * change --- Resources/Prototypes/Reagents/narcotics.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Reagents/narcotics.yml b/Resources/Prototypes/Reagents/narcotics.yml index 47fb4f6caa..07583cc96f 100644 --- a/Resources/Prototypes/Reagents/narcotics.yml +++ b/Resources/Prototypes/Reagents/narcotics.yml @@ -661,7 +661,7 @@ color: "#1A0A2E" metabolisms: Bloodstream: - metabolismRate: 0.5 + metabolismRate: 0.2 effects: - !type:ModifyStatusEffect effectProto: StatusEffectNightVision From 033944ff28712f31e62a333ac86410c79dffa786 Mon Sep 17 00:00:00 2001 From: papiepie Date: Wed, 9 Sep 2026 21:19:14 +0000 Subject: [PATCH 102/197] Oppo and Aloxadone tweaks (#45948) oppo alox change --- Resources/Prototypes/Reagents/medicine.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Resources/Prototypes/Reagents/medicine.yml b/Resources/Prototypes/Reagents/medicine.yml index a2835edd24..6cb6a3589b 100644 --- a/Resources/Prototypes/Reagents/medicine.yml +++ b/Resources/Prototypes/Reagents/medicine.yml @@ -1314,12 +1314,14 @@ metabolisms: Bloodstream: effects: + - !type:AdjustTemperature + amount: 80000 - !type:ReduceRotting seconds: 20 conditions: #Patient must be dead and in a cryo tube (or something cold) - !type:TemperatureCondition - max: 150.0 + max: 273.15 - !type:MobStateCondition mobstate: Dead @@ -1346,7 +1348,7 @@ Burn: -3 - type: reagent - id : Aloxadone + id: Aloxadone name: reagent-name-aloxadone group: Medicine desc: reagent-desc-aloxadone @@ -1357,12 +1359,14 @@ metabolisms: Bloodstream: effects: + - !type:AdjustTemperature + amount: 80000 - !type:EvenHealthChange conditions: - !type:TemperatureCondition - max: 213.0 + max: 273.15 damage: - Burn: -4.5 + Burn: -6 - type: reagent id : Mannitol # currently this is just a way to create psicodine From 1a264626ff5e1f9385e282dd84042b26f9661348 Mon Sep 17 00:00:00 2001 From: John Muffin <161968154+MuffinLazer@users.noreply.github.com> Date: Wed, 9 Sep 2026 23:25:21 +0000 Subject: [PATCH 103/197] changed ultravasc in poison pen to stellbinin (#45740) * changed ultravasc to stellbinin, might change to diphn * ok fixed das grammarrrrr --- .../Entities/Objects/Specific/Medical/hypospray.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml index e8504b1f02..125112cf0f 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml @@ -259,7 +259,7 @@ parent: ChemicalMedipen id: AntiPoisonMedipen name: poison auto-injector - description: A single-dose, non-refillable medipen containing ultravasculine and epinephrine, used to quickly and easily treat toxin poisoning. + description: A single-dose, non-refillable medipen containing stellibinin and epinephrine, used to quickly and easily treat poisoning. components: - type: Item inhandVisuals: @@ -285,7 +285,7 @@ - type: Solution solution: reagents: - - ReagentId: Ultravasculine + - ReagentId: Stellibinin Quantity: 15 - ReagentId: Epinephrine Quantity: 5 From a6c445779b365d28edd08579a167ff5fc42d717e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?SeungWon=20Kim=20=EA=B9=80=EC=8A=B9=EC=9B=90?= Date: Thu, 10 Sep 2026 10:08:53 +0000 Subject: [PATCH 104/197] Simplify ultravasculine recipe ratio for better readability (#45962) fix: :wrench: Changed ultravasculine recipe to simpler ratio for readability --- Resources/Prototypes/Recipes/Reactions/medicine.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Resources/Prototypes/Recipes/Reactions/medicine.yml b/Resources/Prototypes/Recipes/Reactions/medicine.yml index 9995cd4426..c35205ba6f 100644 --- a/Resources/Prototypes/Recipes/Reactions/medicine.yml +++ b/Resources/Prototypes/Recipes/Reactions/medicine.yml @@ -329,12 +329,12 @@ id: Ultravasculine reactants: Histamine: - amount: 2 + amount: 1 Plasma: amount: 1 - catalyst: true + catalyst: true products: - Ultravasculine: 2 + Ultravasculine: 1 - type: reaction id: Histamine From db07b48eb133cce6e5ef4778cb9e2b692ae87dd9 Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> Date: Thu, 10 Sep 2026 10:09:55 +0000 Subject: [PATCH 105/197] Fix Organs causing PVS Reload. (#45958) Race condition :P --- Content.Shared/Body/OrganRelationSystem.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Content.Shared/Body/OrganRelationSystem.cs b/Content.Shared/Body/OrganRelationSystem.cs index d5236277e8..ac727151a4 100644 --- a/Content.Shared/Body/OrganRelationSystem.cs +++ b/Content.Shared/Body/OrganRelationSystem.cs @@ -18,10 +18,10 @@ public sealed partial class OrganRelationSystem : EntitySystem private void OnChildShutdown(Entity ent, ref ComponentShutdown args) { - if (ent.Comp.Parent is not { } parentUid) + // Parent shut down before the child. + if (ent.Comp.Parent is not { } parentUid || !_parent.TryComp(parentUid, out var parentComp)) return; - var parentComp = _parent.Comp(parentUid); parentComp.Children.Remove(ent); Dirty(parentUid, parentComp); } @@ -33,9 +33,11 @@ public sealed partial class OrganRelationSystem : EntitySystem foreach (var childUid in ent.Comp.Children) { - var childComp = _child.Comp(childUid); - childComp.Parent = null; + // Child shut down before the parent. + if (!_child.TryComp(childUid, out var childComp)) + continue; + childComp.Parent = null; Dirty(childUid, childComp); } } From 0b7499fe0fd962492a573a34fa99e63a4c0aa8cc Mon Sep 17 00:00:00 2001 From: Whatstone <166147148+whatston3@users.noreply.github.com> Date: Thu, 10 Sep 2026 11:13:55 +0000 Subject: [PATCH 106/197] Bugfix: fix helmets keeping species-specific shape (#45660) ClientClothing/ToggleableVisuals: copy Layers --- .../Clothing/ClientClothingSystem.cs | 8 ++++- .../Toggleable/ToggleableVisualsSystem.cs | 7 +++- Content.Shared/Clothing/ClothingEvents.cs | 35 ++++++++----------- 3 files changed, 28 insertions(+), 22 deletions(-) diff --git a/Content.Client/Clothing/ClientClothingSystem.cs b/Content.Client/Clothing/ClientClothingSystem.cs index 12b9988edb..c8bad47bf0 100644 --- a/Content.Client/Clothing/ClientClothingSystem.cs +++ b/Content.Client/Clothing/ClientClothingSystem.cs @@ -12,6 +12,7 @@ using Content.Shared.Item; using Robust.Client.GameObjects; using Robust.Client.Graphics; using Robust.Client.ResourceManagement; +using Robust.Shared.Serialization.Manager; using Robust.Shared.Serialization.TypeSerializers.Implementations; using Robust.Shared.Utility; using static Robust.Client.GameObjects.SpriteComponent; @@ -47,6 +48,7 @@ public sealed partial class ClientClothingSystem : ClothingSystem }; [Dependency] private IResourceCache _cache = default!; + [Dependency] private ISerializationManager _seriMan = default!; [Dependency] private DisplacementMapSystem _displacement = default!; [Dependency] private InventorySystem _inventorySystem = default!; [Dependency] private SpriteSystem _sprite = default!; @@ -121,7 +123,11 @@ public sealed partial class ClientClothingSystem : ClothingSystem } ent.Comp.MappedLayer = key; - args.Layers.Add((key, layer)); + + // Create a copy of the layer, which might get modified. + PrototypeLayerData newLayer = new(); + _seriMan.CopyTo(layer, ref newLayer, notNullableOverride: true); + args.Layers.Add((key, newLayer)); } } diff --git a/Content.Client/Toggleable/ToggleableVisualsSystem.cs b/Content.Client/Toggleable/ToggleableVisualsSystem.cs index 95f8af65ea..335240ed5a 100644 --- a/Content.Client/Toggleable/ToggleableVisualsSystem.cs +++ b/Content.Client/Toggleable/ToggleableVisualsSystem.cs @@ -8,6 +8,7 @@ using Content.Shared.Item; using Content.Shared.Light.Components; using Content.Shared.Toggleable; using Robust.Client.GameObjects; +using Robust.Shared.Serialization.Manager; using Robust.Shared.Utility; namespace Content.Client.Toggleable; @@ -20,6 +21,7 @@ namespace Content.Client.Toggleable; /// public sealed partial class ToggleableVisualsSystem : VisualizerSystem { + [Dependency] private ISerializationManager _seriMan = default!; [Dependency] private SharedItemSystem _item = default!; [Dependency] private SharedPointLightSystem _pointLight = default!; @@ -104,7 +106,10 @@ public sealed partial class ToggleableVisualsSystem : VisualizerSystem /// Raised directed at a piece of clothing to get the set of layers to show on the wearer's sprite. /// -public sealed class GetEquipmentVisualsEvent : EntityEventArgs +public sealed class GetEquipmentVisualsEvent(EntityUid equipee, string slot) : EntityEventArgs { /// /// Entity that is wearing the item. /// - public readonly EntityUid Equipee; + public readonly EntityUid Equipee = equipee; - public readonly string Slot; + /// + /// The name of slot that the item is being worn in. + /// + public readonly string Slot = slot; /// /// The layers that will be added to the entity that is wearing this item. + /// PrototypeLayerData objects passed may be modified, do not pass your component state directly! + /// /// NOTE: any layers will be checked for species-specific layers automatically inside ClothingSystem. /// If you return a state of "equipped-HEAD" and "equipped-HEAD-reptilian" exists, /// it will be automatically used by entities with InventoryComponent.SpeciesId set to "reptilian". @@ -26,12 +31,6 @@ public sealed class GetEquipmentVisualsEvent : EntityEventArgs /// Note that the actual ordering of the layers depends on the order in which they are added to this list. /// public List<(string, PrototypeLayerData)> Layers = new(); - - public GetEquipmentVisualsEvent(EntityUid equipee, string slot) - { - Equipee = equipee; - Slot = slot; - } } /// @@ -40,29 +39,25 @@ public sealed class GetEquipmentVisualsEvent : EntityEventArgs /// /// Useful for systems/components that modify the visual layers that an item adds to a player. (e.g. RGB memes) /// -public sealed class EquipmentVisualsUpdatedEvent : EntityEventArgs +public sealed class EquipmentVisualsUpdatedEvent( + EntityUid equipee, + string slot, + HashSet revealedLayers) : EntityEventArgs { /// /// Entity that is wearing the item. /// - public readonly EntityUid Equipee; + public readonly EntityUid Equipee = equipee; /// /// The slot that the equipment is being worn in. /// - public readonly string Slot; + public readonly string Slot = slot; /// /// The layers that this item is now revealing. /// - public HashSet RevealedLayers; - - public EquipmentVisualsUpdatedEvent(EntityUid equipee, string slot, HashSet revealedLayers) - { - Equipee = equipee; - Slot = slot; - RevealedLayers = revealedLayers; - } + public HashSet RevealedLayers = revealedLayers; } public sealed partial class ToggleMaskEvent : InstantActionEvent; From 5186b8f8ffbe68f94edc498370af7bedcb9be98a Mon Sep 17 00:00:00 2001 From: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Date: Thu, 10 Sep 2026 17:14:47 +0000 Subject: [PATCH 107/197] Changeling Carepackage (#45967) * yeah * renames * sure why not * mute! * pulling * sounds + bite * moar * unused * Update changeling.yml * consistency --- ...cs => ClientChangelingLastResortSystem.cs} | 2 +- ...cs => ServerChangelingLastResortSystem.cs} | 12 ++++---- ...ystem.cs => ChangelingLastResortSystem.cs} | 2 +- .../Locale/en-US/store/changeling-catalog.ftl | 4 +-- .../Prototypes/Catalog/changeling_catalog.yml | 4 +-- .../Entities/Mobs/Player/changeling.yml | 28 +++++++++++-------- .../Objects/Weapons/Melee/armblade.yml | 3 +- .../Entities/StatusEffects/traits.yml | 2 +- .../Prototypes/Roles/Antags/changeling.yml | 2 +- 9 files changed, 34 insertions(+), 25 deletions(-) rename Content.Client/Changeling/Systems/{ChangelingLastResortSystem.cs => ClientChangelingLastResortSystem.cs} (64%) rename Content.Server/Changeling/Systems/{ChangelingLastResortSystem.cs => ServerChangelingLastResortSystem.cs} (93%) rename Content.Shared/Changeling/Systems/{SharedChangelingLastResortSystem.cs => ChangelingLastResortSystem.cs} (96%) diff --git a/Content.Client/Changeling/Systems/ChangelingLastResortSystem.cs b/Content.Client/Changeling/Systems/ClientChangelingLastResortSystem.cs similarity index 64% rename from Content.Client/Changeling/Systems/ChangelingLastResortSystem.cs rename to Content.Client/Changeling/Systems/ClientChangelingLastResortSystem.cs index 62560c4310..0308f8ee78 100644 --- a/Content.Client/Changeling/Systems/ChangelingLastResortSystem.cs +++ b/Content.Client/Changeling/Systems/ClientChangelingLastResortSystem.cs @@ -2,4 +2,4 @@ using Content.Shared.Changeling.Systems; namespace Content.Client.Changeling.Systems; -public sealed partial class ChangelingLastResortSystem : SharedChangelingLastResortSystem; +public sealed partial class ClientChangelingLastResortSystem : ChangelingLastResortSystem; diff --git a/Content.Server/Changeling/Systems/ChangelingLastResortSystem.cs b/Content.Server/Changeling/Systems/ServerChangelingLastResortSystem.cs similarity index 93% rename from Content.Server/Changeling/Systems/ChangelingLastResortSystem.cs rename to Content.Server/Changeling/Systems/ServerChangelingLastResortSystem.cs index a2b345df8c..76cb6c338b 100644 --- a/Content.Server/Changeling/Systems/ChangelingLastResortSystem.cs +++ b/Content.Server/Changeling/Systems/ServerChangelingLastResortSystem.cs @@ -1,5 +1,4 @@ using Content.Server.Antag; -using Content.Shared.Administration.Systems; using Content.Shared.Antag; using Content.Shared.Changeling.Components; using Content.Shared.Changeling.Systems; @@ -9,11 +8,12 @@ using Content.Shared.IdentityManagement; using Content.Shared.Mind; using Content.Shared.Mobs.Systems; using Content.Shared.Popups; +using Content.Shared.Zombies; using Robust.Shared.Prototypes; namespace Content.Server.Changeling.Systems; -public sealed partial class ChangelingLastResortSystem : SharedChangelingLastResortSystem +public sealed partial class ServerChangelingLastResortSystem : ChangelingLastResortSystem { private static readonly ProtoId ChangelingAntag = "Changeling"; @@ -64,10 +64,11 @@ public sealed partial class ChangelingLastResortSystem : SharedChangelingLastRes if (!HasComp(target)) return false; - if (HasComp(target)) + if (HasComp(target) || HasComp(target)) { if (showPopups) - _popup.PopupEntity(Loc.GetString("changeling-takeover-is-changeling"), user); + _popup.PopupEntity(Loc.GetString("changeling-takeover-is-changeling"), user, user); + return false; } @@ -75,7 +76,8 @@ public sealed partial class ChangelingLastResortSystem : SharedChangelingLastRes return true; if (showPopups) - _popup.PopupEntity(Loc.GetString("changeling-takeover-not-dead"), user); + _popup.PopupEntity(Loc.GetString("changeling-takeover-not-dead"), user, user); + return false; } diff --git a/Content.Shared/Changeling/Systems/SharedChangelingLastResortSystem.cs b/Content.Shared/Changeling/Systems/ChangelingLastResortSystem.cs similarity index 96% rename from Content.Shared/Changeling/Systems/SharedChangelingLastResortSystem.cs rename to Content.Shared/Changeling/Systems/ChangelingLastResortSystem.cs index d17f9ee324..811df858f0 100644 --- a/Content.Shared/Changeling/Systems/SharedChangelingLastResortSystem.cs +++ b/Content.Shared/Changeling/Systems/ChangelingLastResortSystem.cs @@ -7,7 +7,7 @@ using Robust.Shared.Network; namespace Content.Shared.Changeling.Systems; -public abstract partial class SharedChangelingLastResortSystem : EntitySystem +public abstract partial class ChangelingLastResortSystem : EntitySystem { [Dependency] private INetManager _net = default!; [Dependency] private GibbingSystem _gibbing = default!; diff --git a/Resources/Locale/en-US/store/changeling-catalog.ftl b/Resources/Locale/en-US/store/changeling-catalog.ftl index 1bd601d198..125bb3c528 100644 --- a/Resources/Locale/en-US/store/changeling-catalog.ftl +++ b/Resources/Locale/en-US/store/changeling-catalog.ftl @@ -1,5 +1,5 @@ -changeling-catalog-arm-blade-name = Retractable Arm Blade -changeling-catalog-arm-blade-desc = Transform your arm into a terrifying flesh blade. Can be toggled. +changeling-catalog-arm-blade-name = Retractable Armblade +changeling-catalog-arm-blade-desc = Transform your arm into a terrifying blade made of flesh and bone. Can double as means of prying open powered doors. Can be toggled. changeling-catalog-flesh-clothing-name = Flesh Clothing changeling-catalog-flesh-clothing-desc = Your body's surface will adapt to mirror the clothing of any person you are transforming into. However, these clothing items are non-functional and will make you easy to identify as a changeling if someone tries to remove them. Can be toggled. diff --git a/Resources/Prototypes/Catalog/changeling_catalog.yml b/Resources/Prototypes/Catalog/changeling_catalog.yml index 36b156deeb..9d81753621 100644 --- a/Resources/Prototypes/Catalog/changeling_catalog.yml +++ b/Resources/Prototypes/Catalog/changeling_catalog.yml @@ -6,7 +6,7 @@ description: changeling-catalog-arm-blade-desc applyToMob: true cost: - ChangelingDNA: 30 + ChangelingDNA: 20 categories: - ChangelingStoreCombat conditions: @@ -20,7 +20,7 @@ description: changeling-catalog-flesh-clothing-desc icon: { sprite: /Textures/Interface/Actions/changeling2.rsi, state: flesh_clothing } cost: - ChangelingDNA: 20 + ChangelingDNA: 10 categories: - ChangelingStoreStealth conditions: diff --git a/Resources/Prototypes/Entities/Mobs/Player/changeling.yml b/Resources/Prototypes/Entities/Mobs/Player/changeling.yml index 013852bb50..83b7b08374 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/changeling.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/changeling.yml @@ -24,7 +24,7 @@ prototype: ChemicalsChangeling - type: Store balance: - ChangelingDNA: 60 + ChangelingDNA: 50 - type: entity parent: @@ -40,7 +40,7 @@ shape: !type:PhysShapeCircle radius: 0.2 - density: 15 + density: 100 mask: - SmallMobMask layer: @@ -57,13 +57,25 @@ - type: MovementSpeedModifier # Slightly faster than regular mobs baseWalkSpeed: 3 baseSprintSpeed: 5 - - type: ChangelingSlug + - type: MeleeWeapon + animation: WeaponArcBite + altDisarm: false + soundHit: + path: /Audio/Effects/bite.ogg + damage: + types: + Slash: 2.5 + Piercing: 2.5 + Structural: 15 # to destroy lockers in which bodies could be hidden - type: Speech # need these speech comps because it isnt targeted by MakeSentient. speechVerb: LargeMob - type: Emoting - type: ActionGrant actions: - ActionChangelingStasisWeak + - type: ChangelingSlug + - type: Puller + needsHands: false - type: Tag # Removes DoorBumpOpener tags: [ ] @@ -107,12 +119,6 @@ damage: types: Blunt: 0.1 - - type: MeleeWeapon - altDisarm: false - damage: - types: - Blunt: 5 - Structural: 15 # to destroy lockers in which bodies could be hidden - type: InteractionPopup successChance: 0.2 interactSuccessString: petting-success-headslug @@ -151,10 +157,10 @@ 50: Critical 75: Dead - type: MeleeWeapon - altDisarm: false damage: types: - Blunt: 10 + Slash: 7.5 + Piercing: 7.5 Structural: 25 # to destroy lockers in which bodies could be hidden - type: InteractionPopup successChance: 0.01 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/armblade.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/armblade.yml index 7fd1725df4..eb5ed9b42d 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/armblade.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/armblade.yml @@ -1,5 +1,5 @@ - type: entity - name: arm blade + name: armblade parent: BaseItem id: Armblade description: A grotesque blade made out of bone and flesh that can pry open doors and cleaves through people as a hot knife through butter. @@ -33,6 +33,7 @@ - type: entity parent: Armblade id: ArmbladeDull + suffix: Dull components: - type: MeleeWeapon damage: diff --git a/Resources/Prototypes/Entities/StatusEffects/traits.yml b/Resources/Prototypes/Entities/StatusEffects/traits.yml index 9ccf41e286..3de0cf9226 100644 --- a/Resources/Prototypes/Entities/StatusEffects/traits.yml +++ b/Resources/Prototypes/Entities/StatusEffects/traits.yml @@ -23,5 +23,5 @@ name: pain numbness - type: entity - parent: [ MutedStatusEffectBase, TraitStatusEffectBase ] + parent: [ MutedStatusEffectBase, TraitStatusEffectBase, ChangelingStatusEffectBase ] id: TraitStatusEffectMuted diff --git a/Resources/Prototypes/Roles/Antags/changeling.yml b/Resources/Prototypes/Roles/Antags/changeling.yml index 698cc233a2..2d737df993 100644 --- a/Resources/Prototypes/Roles/Antags/changeling.yml +++ b/Resources/Prototypes/Roles/Antags/changeling.yml @@ -49,7 +49,7 @@ currencyWhitelist: - ChangelingDNA balance: - ChangelingDNA: 60 + ChangelingDNA: 50 inputValidation: false mindRoles: - MindRoleChangeling From a444f26f9f5211548fb8b51fe136f90b1fb3253b Mon Sep 17 00:00:00 2001 From: _Svist_ <148935188+Svist666s@users.noreply.github.com> Date: Thu, 10 Sep 2026 23:39:51 +0400 Subject: [PATCH 108/197] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=A1=D0=A0=D0=9F=20(#3727)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ru-RU/corvax/guidebook/SOP/security.ftl | 127 ++++++++++-------- .../guidebook/corporatelaw/articles.ftl | 1 + 2 files changed, 70 insertions(+), 58 deletions(-) diff --git a/Resources/Locale/ru-RU/corvax/guidebook/SOP/security.ftl b/Resources/Locale/ru-RU/corvax/guidebook/SOP/security.ftl index 5c149cfc86..10ee6300b6 100644 --- a/Resources/Locale/ru-RU/corvax/guidebook/SOP/security.ftl +++ b/Resources/Locale/ru-RU/corvax/guidebook/SOP/security.ftl @@ -1,6 +1,6 @@ # Общие СРП guidebook-SOP-security-general-must = - 1. Соблюдать все установленные процедуры отдела службы безопасности в рамках своей должности. + 1. Соблюдать все установленные процедуры отдела Службы безопасности в рамках своей должности. 1. Применять меры подавления в отношении нарушителей в соответствии с уровнем угрозы, который они представляют. 1. Поддерживать датчики костюма в режиме «Координаты». 1. Соблюдать субординацию и использовать [tooltip="guidebook-SOP-security-tooltip-regulation-speech" text="уставную речь"] при общении с сотрудниками СБ, членами командования, сотрудниками юридического департамента, представителями Центрального Командования и ДСО. @@ -24,15 +24,21 @@ guidebook-SOP-security-general-right = - В [color=dodgerblue][bold]синий код[/bold][/color] с устного разрешения капитана получить [tooltip="guidebook-SOP-security-tooltip-extended-access" text="расширенный доступ"]. - В [color=red][bold]красный код[/bold][/color] по своему запросу получить [tooltip="guidebook-SOP-security-tooltip-extended-access" text="расширенный доступ"]. - В [color=gold][bold]гамма код[/bold][/color] получить [tooltip="guidebook-SOP-security-tooltip-full-access" text="полный доступ"]. - 1. В рамках проведения процедур службы безопасности подавать запросы главам станции для получения требуемой информации. + 1. В рамках проведения процедур Службы безопасности подавать запросы главам станции для получения требуемой информации. 1. Составить рапорт о задержании, в котором подробно описываются обстоятельства задержания, основания, ход и результаты обыска, свидетели, а также иные сведения, имеющие значение для разбирательства. + 1. Оцепить место преступления с помощью щитов, голобарьеров, маркеров улик и прочих инструментов Службы безопасности (исключая барьеры и стационарные вспышки) в целях проведения расследования. + - Для создания оцепления необходимо одобрение ГСБ или капитана. Обязательно уведомление экипажа о создании оцепления в общий канал связи. + - Район не может быть оцеплен более, чем на 5 минут и не может оцепляться повторно в рамках того же дела. + - Пересечение оцепленной территории членами экипажа расценивается как помеха при проведении следственных мероприятий. + guidebook-SOP-security-general-prohibited = - 1. Проводить процедуры СБ в отношении равных либо старших по иерархии сотрудников СБ, лиц с [tooltip="guidebook-SOP-security-tooltip-legal-immunity" text="юридической неприкосновенностью"] без приказа уполномоченного лица. + 1. Проводить процедуры СБ и применять силу в отношении равных либо старших по иерархии сотрудников СБ, лиц с [tooltip="guidebook-SOP-security-tooltip-legal-immunity" text="юридической неприкосновенностью"] без приказа уполномоченного лица. - Приказ в отношении сотрудника СБ может быть издан вышестоящим сотрудником СБ. - Приказ в отношении главы СБ может быть издан капитаном. - Лица с [tooltip="guidebook-SOP-security-tooltip-legal-immunity" text="юридической неприкосновенностью"] могут быть подвергнуты процедурам СБ только после снятия неприкосновенности. - Все вышеперечисленные лица могут быть задержаны до издания приказа в случае, если они представляют [tooltip="guidebook-SOP-security-tooltip-significant-threat" text="значительную угрозу безопасности"]. + - Исключением является проведение тренировочного мероприятия в специально отведенном месте в бриге, либо в пределах ринга. 1. Находиться в состоянии опьянения или нести службу при наличии серьёзных травм. 1. При пилотировании шаттлов допускать столкновения со станцией и иными объектами, кроме случаев, когда столкновение необходимо для исполнения служебных обязанностей. 1. Переодевать свою [tooltip="guidebook-SOP-security-tooltip-uniform" text="униформу"]. Также запрещено надевать элементы униформы и брони других должностей внутри отдела. @@ -40,19 +46,19 @@ guidebook-SOP-security-general-prohibited = # Должностные СРП ## Глава службы безопасности guidebook-SOP-HeadOfSecurity-must = - 1. Координировать работу отдела службы безопасности, обеспечивать поддержание порядка на станции и в ближайшем космическом пространстве. - 1. Контролировать исполнение процедур службы безопасности сотрудниками отдела, в случае необходимости исполнять процедуры лично либо передать их исполнение уполномоченным лицам. + 1. Координировать работу отдела Службы безопасности, обеспечивать поддержание порядка на станции и в ближайшем космическом пространстве. + 1. Контролировать исполнение процедур Службы безопасности сотрудниками отдела, в случае необходимости исполнять процедуры лично либо передать их исполнение уполномоченным лицам. 1. Обеспечивать сохранность диска ядерной авторизации. 1. Организовать патрульные группы для поддержания порядка на станции. 1. В случае отсутствия в отделе смотрителя назначить на пост ВрИО помощника смотрителя, а при его отсутствии — выбрать сотрудника из числа офицеров или самому исполнять его обязанности. 1. Назначить кадетов в помощники офицеру, смотрителю, детективу или пилоту; при отсутствии таковых назначить кадетов в помощники себе. guidebook-SOP-HeadOfSecurity-right = - 1. Проводить и контролировать проведение любых процедур отдела службы безопасности. + 1. Проводить и контролировать проведение любых процедур отдела Службы безопасности. 1. При приёме в отдел нового сотрудника из числа членов экипажа обязать кандидата пройти процедуру установки импланта «Щит разума». 1. При выдаче сотруднику станции доступов уровней «бриг», «служба безопасности» или «оружейная» потребовать от него пройти процедуру установки импланта «Щит разума». 1. В любой код держать при себе личный энергетический пистолет/револьвер и/или энергетический меч «Правосудие» (при наличии). - 1. Провести процедуру личного досмотра в отношении любого нижестоящего сотрудника службы безопасности при подозрении в хранении контрабандных предметов или недопустимого для текущего уровня угрозы вооружения. + 1. Провести процедуру личного досмотра в отношении любого нижестоящего сотрудника Службы безопасности при подозрении в хранении контрабандных предметов или недопустимого для текущего уровня угрозы вооружения. 1. При отсутствии пилота/помощника смотрителя одобрить перевод сотрудника из числа офицеров на данную должность. 1. Временно отстранить от службы любого сотрудника СБ при подтверждении состояния опьянения или при наличии серьёзных травм, а также в случае нарушения корпоративного закона или СРП сотрудником. - Отстранение может отменить капитан. @@ -74,7 +80,7 @@ guidebook-SOP-HeadOfSecurity-prohibited = ## Смотритель guidebook-SOP-Warden-must = 1. На постоянной основе нести службу в бриге. - 1. Выдавать оружие сотрудникам службы безопасности в соответствии с положением о вооружении отдела. + 1. Выдавать оружие сотрудникам Службы безопасности в соответствии с положением о вооружении отдела. 1. Следить за достаточным количеством вооружения в арсенале, вести учёт выданного и полученного снаряжения, следить за своевременной сдачей оружия при понижении кода. 1. При наличии задержанных лиц проводить процедуры допроса, вынесения вердикта и реализации наказания. - При наличии нескольких задержанных или при необходимости срочной выдачи оружия поручить исполнение нижестоящему сотруднику СБ. @@ -84,12 +90,12 @@ guidebook-SOP-Warden-must = 1. Обеспечивать поддержание чистоты и порядка в бриге. guidebook-SOP-Warden-right = - 1. Проводить любые процедуры службы безопасности в рамках, установленных процедурами. + 1. Проводить любые процедуры Службы безопасности в рамках, установленных процедурами. 1. Отдавать [tooltip="guidebook-SOP-security-tooltip-lawful-orders" text="правомерные приказы"] помощнику и сотрудникам на территории брига, если они не противоречат указаниям ГСБ или капитана. 1. При отсутствии связи с главой службы безопасности в течение 5 минут временно заменить его до выяснения обстоятельств. - 1. В любой код держать при себе личный энергетический дробовик. - - В [color=dodgerblue][bold]синий код[/bold][/color] передать энергетический дробовик одному из сотрудников СБ на основании письменного разрешения. - - В [color=red][bold]красный код[/bold][/color] и выше передать энергетический дробовик одному из сотрудников СБ на основании устного разрешения. + 1. В любой код держать при себе личный энергетический дробовик и перчатки крав-мага. + - В [color=dodgerblue][bold]синий код[/bold][/color] возможна передача этих предметов одному из сотрудников СБ на основании письменного разрешения. + - В [color=red][bold]красный код[/bold][/color] и выше передача возможна с устного разрешения. 1. Проводить личный досмотр нижестоящих сотрудников при подозрении в хранении контрабанды или недопустимого вооружения. 1. Временно отстранить от службы любого сотрудника СБ, кроме ГСБ, при подтверждении состояния опьянения или при наличии серьёзных травм, а также в случае нарушения корпоративного закона или СРП сотрудником. - Отстранение могут отменить ГСБ и капитан; @@ -109,7 +115,7 @@ guidebook-SOP-WardenHelper-must = 1. Поддерживать чистоту и порядок в бриге. guidebook-SOP-WardenHelper-right = - 1. Проводить процедуры службы безопасности в рамках установленных процедур. + 1. Проводить процедуры Службы безопасности в рамках установленных процедур. 1. При проверке карцера, пермабрига или каторги иметь при себе летальное оружие и средства подавления вне зависимости от уровня угрозы. - По окончании проверки вооружение, запрещенное для текущего уровня угрозы, должно быть возвращено в арсенал. 1. В [color=dodgerblue][bold]синий код[/bold][/color] и выше размещать переносные вспышки и развертываемые барьеры в бриге; при снижении уровня угрозы возвращать их в место хранения. @@ -124,7 +130,7 @@ guidebook-SOP-Security-must = 1. Поддерживать порядок на станции и среди персонала, предотвращая нарушения закона. guidebook-SOP-Security-right = - 1. Проводить любые процедуры службы безопасности в рамках, установленных самими процедурами. + 1. Проводить любые процедуры Службы безопасности в рамках, установленных самими процедурами. 1. Изменять статус представителей персонала станции в консоли криминалистических записей с разрешения уполномоченных лиц или при личном свидетельстве нарушения корпоративного закона. 1. С разрешения смотрителя и главы службы безопасности перейти на должность помощника смотрителя в качестве специализации. 1. С разрешения главы службы безопасности пройти обучение навыку пилотирования и перейти на должность пилота в качестве специализации. @@ -132,16 +138,14 @@ guidebook-SOP-Security-right = ## Детектив guidebook-SOP-Detective-must = 1. Проводить следственные мероприятия с целью установления деталей преступления и привлечения виновных лиц к ответственности. - 1. Оказывать содействие офицерам службы безопасности в поддержании порядка на станции. + 1. Оказывать содействие офицерам СБ в поддержании порядка на станции. guidebook-SOP-Detective-right = - 1. Проводить любые процедуры службы безопасности в рамках, установленных процедурами. + 1. Проводить любые процедуры Службы безопасности в рамках, установленных процедурами. - Исключение — процедура задержания. Детектив может проводить задержание в следующих случаях: - В условиях [color=red][bold]красного кода[/bold][/color]. - Если детектив является свидетелем [tooltip="guidebook-SOP-security-tooltip-public-dangerous-crime" text="общественно опасного преступления"]. - В отношении лиц в розыске. - 1. Оцепить место преступления с помощью голобарьеров и маркеров улик. - - Детектив обязан оповестить главу службы безопасности и ответственного за отсек об оцеплении, убрать оцепление по их первому требованию. 1. Изъять у члена экипажа имущество, если есть основания полагать, что они являются орудием преступления. - Запрещено изъятие особо ценного имущества без разрешения капитана. - Запрещено изъятие имущества у лиц с [tooltip="guidebook-SOP-security-tooltip-legal-immunity" text="юридической неприкосновенностью"]. @@ -149,13 +153,13 @@ guidebook-SOP-Detective-right = ## Пилот службы безопасности guidebook-SOP-SecurityPilot-must = - 1. Проверять космическое пространство, ИИ и каторжный лагерь с челнока службы безопасности или вне его. + 1. Проверять космическое пространство, ИИ и каторжный лагерь с челнока Службы безопасности или вне его. 1. Поддерживать станцию в неподвижном состоянии. При её движении — стабилизировать её. 1. Конвоировать приговорённых к каторжным работам на каторгу. 1. Следить за техническим состоянием челнока СБ и сообщать инженерам о поломках. guidebook-SOP-SecurityPilot-right = - 1. Проводить процедуры службы безопасности в рамках установленных процедур. + 1. Проводить процедуры Службы безопасности в рамках установленных процедур. 1. Носить и использовать лучевое вооружение за пределами станции вне зависимости от уровня угрозы. 1. Носить и использовать летальное вооружение и средства подавления при проверке каторжного лагеря, если там есть заключённые. @@ -167,6 +171,8 @@ guidebook-SOP-SecurityPilot-prohibited = ## Бригмедик guidebook-SOP-Brigmedic-must = + 1. На постоянной основе находиться в пределах брига или лазарета Службы безопасности. + - Допускается покинуть бриг на короткий срок с разрешения смотрителя или ГСБ 1. Оказывать медицинскую помощь сотрудникам СБ, заключённым и лицам под следствием. - Оказывать помощь любым членам экипажа в критическом состоянии. 1. Проводить принудительное хирургическое вмешательство на законных основаниях. @@ -175,7 +181,11 @@ guidebook-SOP-Brigmedic-must = 1. Обеспечивать заключённым питание, питьё и поддерживать чистоту в бриге. guidebook-SOP-Brigmedic-right = - 1. Проводить процедуру задержания если бригмедик свидетель [tooltip="guidebook-SOP-security-tooltip-public-dangerous-crime" text="общественно опасного преступления"]. + 1. Проводить любые процедуры Службы безопасности в рамках, установленных процедурами, за исключением процедуры задержания. + - Проведение процедуры задержания возможно в следующих случаях: + - В условиях [color=red][bold]красного кода[/bold][/color]. + - Если бригмедик является свидетелем [tooltip="guidebook-SOP-security-tooltip-public-dangerous-crime" text="общественно опасного преступления"]. + - В отношении лиц в розыске или доставленных для лечения заключенных и подозреваемых. 1. Отказать в помощи при самоповреждении. 1. Временно отстранить сотрудника СБ, кроме смотрителя и ГСБ, при подтверждённом опьянении или тяжёлой травме. - Отстранение могут отменить ГСБ и капитан; @@ -196,33 +206,33 @@ guidebook-SOP-SecurityCadet-must = 1. Исполнять правомерные приказы назначенного сотрудника СБ и находиться рядом при выполнении задач. guidebook-SOP-SecurityCadet-prohibited = - 1. Самостоятельно проводить процедуры службы безопасности. + 1. Самостоятельно проводить процедуры Службы безопасности. # Процедуры и протоколы ## Общее положение о вооружении отдела СБ guidebook-SOP-security-procedure-weapons-regulation = 1. Глава службы безопасности и смотритель заведуют арсеналом: выдавать и принимать вооружение в соответствии с уровнем угроз. - - По усмотрению главы службы безопасности или смотрителя может быть заказано дополнительное оружие в отделе снабжения и доставлено в арсенал. - - По усмотрению главы службы безопасности или смотрителя может быть заказано дополнительное оружие в научном отделе и доставлено в арсенал. + - По усмотрению главы службы безопасности или смотрителя может быть заказано дополнительное оружие в отделе Снабжения или в Научном отделе и доставлено в арсенал. - По усмотрению главы службы безопасности или смотрителя может быть создано новое вооружение и гранаты на ОхранФабе. 1. Сотрудник службы безопасности обязан соблюдать следующие правила обращения с оружием: - В [color=green][bold]зелёный код[/bold][/color] допустимо держать оружие в руках лишь при необходимости его применения. - - В [color=dodgerblue][bold]синий код[/bold][/color] допустимо держать оружие в руках при необходимости его применения или при исполнении процедур службы безопасности. + - В [color=dodgerblue][bold]синий код[/bold][/color] допустимо держать оружие в руках при необходимости его применения или при исполнении процедур Службы безопасности. - В [color=red][bold]красный код[/bold][/color] и выше допускается свободное ношение оружия на постоянной основе. - 1. В штатном режиме сотрудники службы безопасности могут владеть оружием только в соответствии с таблицей стандартного вооружения или особыми разрешениями в личных СРП. - - Сотрудник службы безопасности имеет право получить бронированный скафандр вне зависимости от текущего уровня угрозы в случае необходимости работы в условиях экстремального давления. + 1. В штатном режиме сотрудники Службы безопасности могут владеть оружием только в соответствии с таблицей стандартного вооружения или особыми разрешениями в личных СРП. + - Сотрудник Службы безопасности имеет право получить бронированный скафандр вне зависимости от текущего уровня угрозы в случае необходимости работы в условиях экстремального давления. - Пилот во время работы в космическом пространстве может иметь при себе лучевое вооружение при любом уровне угрозы. - Пилот во время проверки каторжного лагеря при наличии в нём заключённых может иметь при себе любое неконтрабандное летальное вооружение при любом уровне угрозы. - Смотритель во время проверки пермабрига, каторжного лагеря и карцера при наличии в них заключённых может иметь при себе любое неконтрабандное летальное вооружение при любом уровне угрозы. - Помощник смотрителя во время проверки пермабрига, каторжного лагеря и карцера при наличии в них заключённых может иметь при себе любое неконтрабандное летальное вооружение при любом уровне угрозы. - Смотритель имеет право держать при себе личный энергетический дробовик. - Глава службы безопасности имеет право держать при себе личный энергетический пистолет/револьвер и/или личный энергетический меч. + - Корабельные орудия доступны для установки только на шаттлах Службы безопасности. Исключением является дематерилизатор материи как рабочее оборудование утилизаторов. 1. Главе службы безопасности разрешается выдать разрешение на ношение оружия гражданским лицам, если на то есть причины. - Разрешение на оружие без печати главы службы безопасности является недействительным, ношение оружия гражданскими лицами без разрешения является незаконным. - Глава службы безопасности может в любой момент времени отозвать разрешение на ношение оружия у любого члена экипажа с изъятием оружия. - - Сотрудникам службы безопасности запрещено получать разрешение на ношение оружия. - 1. После понижения кода, сотрудники службы безопасности обязаны сдать неразрешённое в текущий код оружие в арсенал в течение 5 минут. - - Смотрителю и главе службы безопасности разрешено проводить личный досмотр нижестоящих сотрудников службы безопасности с целью выявления несданного оружия. + - Сотрудникам Службы безопасности запрещено получать разрешение на ношение оружия. + 1. После понижения кода, сотрудники Службы безопасности обязаны сдать неразрешённое в текущий код оружие в арсенал в течение 5 минут. + - Смотрителю и главе службы безопасности разрешено проводить личный досмотр нижестоящих сотрудников Службы безопасности с целью выявления несданного оружия. ### Таблица вооружения guidebook-SOP-security-weapons-table-green = [tooltip="guidebook-SOP-security-weapons-tooltip-pistols" text="Пистолеты"], станнер, шоковая дубинка, DT-8 «Терминус», [tooltip="guidebook-SOP-security-weapons-tooltip-melee-list" text="личное холодное оружие"], вспышка, [tooltip="guidebook-SOP-security-weapons-tooltip-special-grenades" text="специальные гранаты"], [tooltip="guidebook-SOP-security-weapons-tooltip-restraints" text="средства ограничения мобильности"], [tooltip="guidebook-SOP-security-weapons-tooltip-standard-armor" text="стандартная броня"], пояс корпоративного дзюдо. @@ -259,11 +269,11 @@ guidebook-SOP-security-procedure-search = guidebook-SOP-security-procedure-search-personal = {"[italic]Личный досмотр — процедура проверки имущества, которое находится в непосредственном распоряжении у обыскиваемого лица.[/italic]"} 1. В ходе данной процедуры досматривающий имеет право осмотреть любое имущество, которое в данный момент имеется в распоряжении досматриваемого. - 1. Сотрудник службы безопасности имеет право выбрать, каким способом будет проводиться процедура досмотра: + 1. Сотрудник Службы безопасности имеет право выбрать, каким способом будет проводиться процедура досмотра: - Досматриваемый самостоятельно предъявляет необходимое имущество. - - Сотрудник службы безопасности принудительно изымает требуемые для досмотра предметы. + - Сотрудник Службы безопасности принудительно изымает требуемые для досмотра предметы. - В случае оказания сопротивления обыску, допустимо ограничить свободу перемещения обыскиваемого. - 1. В рамках процедуры досмотра сотрудник службы безопасности уполномочен снять отпечатки пальцев и изучить образцы ДНК с любой вещи обыскиваемого. + 1. В рамках процедуры досмотра сотрудник Службы безопасности уполномочен снять отпечатки пальцев и изучить образцы ДНК с любой вещи обыскиваемого. 1. В рамках процедуры досмотра допускается взятие образца ДНК и отпечатков пальцев у досматриваемого лица. 1. При выявлении у досматриваемого лица незаконного имущества, оно должно быть незамедлительно изъято, а лицо задержано. 1. При наличии подозрений касательно законности какого-либо предмета, он может быть временно изъят для подтверждения его законности. @@ -282,10 +292,10 @@ guidebook-SOP-security-procedure-search-personal = ### Обыск отдела guidebook-SOP-security-procedure-search-department = {"[italic]Обыск отдела — процедура обыска территории целого отдела, включающая в себя доскональное исследование всего отдела.[/italic]"} - 1. При проведении обыска отдела сотрудники службы безопасности могут запросить набор доступов к обыскиваемому отделу. + 1. При проведении обыска отдела сотрудники Службы безопасности могут запросить набор доступов к обыскиваемому отделу. 1. На время проведения обыска все выходы из отдела могут быть заблокированы. - 1. При проведении обыска все сотрудники отдела обязаны исполнять правомерные приказы сотрудников службы безопасности и содействовать в проведении процедуры. - 1. В рамках процедуры обыска, сотрудники службы безопасности уполномочены снять отпечатки пальцев и изучить образцы ДНК на любом обыскиваемом предмете. + 1. При проведении обыска все сотрудники отдела обязаны исполнять правомерные приказы сотрудников Службы безопасности и содействовать в проведении процедуры. + 1. В рамках процедуры обыска, сотрудники Службы безопасности уполномочены снять отпечатки пальцев и изучить образцы ДНК на любом обыскиваемом предмете. 1. При выявлении незаконного имущества, оно должно быть незамедлительно изъято. 1. При наличии подозрений касательно законности какого-либо предмета, он может быть временно изъят для подтверждения его законности. @@ -296,8 +306,8 @@ guidebook-SOP-security-procedure-search-department = ### Опознание guidebook-SOP-security-procedure-search-identification = {"[italic]Опознание — процедура, направленная на подтверждение личности определённого лица.[/italic]"} - 1. При проведении опознания сотрудник службы безопасности уполномочен получить у опознаваемого лица образец ДНК и отпечатки пальцев. - 1. В рамках процедуры опознания сотрудник службы безопасности имеет право снять любые предметы одежды, скрывающие лицо и прочие отличительные признаки опознаваемого. + 1. При проведении опознания сотрудник Службы безопасности уполномочен получить у опознаваемого лица образец ДНК и отпечатки пальцев. + 1. В рамках процедуры опознания сотрудник Службы безопасности имеет право снять любые предметы одежды, скрывающие лицо и прочие отличительные признаки опознаваемого. 1. В случае несоответствия каких-либо данных опознаваемое лицо должно быть задержано и подвергнуто протоколу работы с незарегистрированными лицами. {"[head=3]Основания для проведения процедуры опознания[/head]"} @@ -314,7 +324,7 @@ guidebook-SOP-security-procedure-search-surgical = 1. Достаточно устного приказа, если на станции действует [color=gold][bold]гамма код[/bold][/color]. 1. Для проведения хирургических процедур в отношении лиц, осуждённых по статьям ХХ5 и ХХ6, разрешение не требуется. 1. Внедрение импланта "Трекер" лицам, освобожденным по УДО, является добровольной процедурой и не требует приказа. - 1. Внедрение импланта "Щит разума" лицам, заступающим на пост ВрИО главы, поступающим на службу в СБ или получающим доступы службы безопасности, является добровольной процедурой и не требует приказа. + 1. Внедрение импланта "Щит разума" лицам, заступающим на пост ВрИО главы, поступающим на службу в СБ или получающим доступы Службы безопасности, является добровольной процедурой и не требует приказа. 1. Проведение данной процедуры возможно непосредственно в месте заключения, лазарете брига или в операционной медицинского отдела. 1. Лицо, подвергаемое процедуре, должно быть ограничено в свободе перемещения, а при необходимости, возможно введение анестезии. 1. При извлечении голопаразитов допускается временное умертвление владельца с последующей реанимацией. @@ -352,8 +362,8 @@ guidebook-SOP-security-procedure-investigation-rozysk = {"[head=3]Основания для объявления лица в розыск[/head]"} 1. Сообщение о правонарушении со стороны свидетелей. Правонарушение может быть обнаружено непосредственно, либо при помощи средств связи. 1. Для объявления лица в розыск требуются показания как минимум двух свидетелей. - 1. Достаточно показаний одного свидетеля, если он является членом командования, сотрудником службы безопасности, сотрудником юридического департамента, центрального командования или департамента специальных операций. - 1. В распоряжении службы безопасности имеются [tooltip="guidebook-SOP-security-procedure-tooltip-direct-evidence" text="прямые доказательства"] причастности подозреваемого к преступлению. + 1. Достаточно показаний одного свидетеля, если он является членом командования, сотрудником Службы безопасности, сотрудником юридического департамента, центрального командования или департамента специальных операций. + 1. В распоряжении Службы безопасности имеются [tooltip="guidebook-SOP-security-procedure-tooltip-direct-evidence" text="прямые доказательства"] причастности подозреваемого к преступлению. 1. Лицо отказалось прибыть в бриг на законный вызов от сотрудника СБ. 1. Имеется обвинительное заключение, заверенное печатью главы службы безопасности. @@ -361,20 +371,20 @@ guidebook-SOP-security-procedure-investigation-rozysk = guidebook-SOP-security-procedure-investigation-arrest = {"[italic]Задержание — кратковременное ограничение свободы перемещения какого-либо лица с последующим сопровождением в бриг для установления причастности лица к совершению преступления.[/italic]"} 1. Перед началом задержания оценить ситуацию и принять меры для задержания, которые будут наиболее эффективны в данной ситуации и соответствовать дозволенному уровню применения силы. - 1. В случае отсутствия прямой угрозы со стороны подозреваемого, сотрудник службы безопасности обязан сообщить подозреваемому о факте его задержания, а также о составе инкриминируемого преступления. - 1. В случае добровольного согласия задержанного следовать в бриг, сотрудник службы безопасности имеет право не применять средства ограничения мобильности. + 1. В случае отсутствия прямой угрозы со стороны подозреваемого, сотрудник Службы безопасности обязан сообщить подозреваемому о факте его задержания, а также о составе инкриминируемого преступления. + 1. В случае добровольного согласия задержанного следовать в бриг, сотрудник Службы безопасности имеет право не применять средства ограничения мобильности. 1. Отказ добровольно следовать в бриг является поводом для перехода на более высокий уровень воздействия. - 1. Ситуации, в которых сотрудник службы безопасности имеет право сообщить о задержании после нейтрализации правонарушителя: + 1. Ситуации, в которых сотрудник Службы безопасности имеет право сообщить о задержании после нейтрализации правонарушителя: - Правонарушитель находится в нетрезвом состоянии. - Правонарушитель захватил заложника. - Правонарушитель вооружен холодным или стрелковым оружием, либо имеет при себе взрывчатые вещества. - - Правонарушитель совершает общественно опасное деяние на глазах сотрудника службы безопасности. + - Правонарушитель совершает общественно опасное деяние на глазах сотрудника Службы безопасности. 1. После доставки в бриг в отношении задержанного должна быть инициирована процедура допроса. 1. Допускается вынесение вердикта на месте правонарушения, согласно пункту 5 процедуры вынесения вердикта. {"[head=3]Основания для задержания лица[/head]"} 1. Лицо находится в розыске. - 1. Лицо совершает правонарушение непосредственно на глазах сотрудника службы безопасности. + 1. Лицо совершает правонарушение непосредственно на глазах сотрудника Службы безопасности. 1. Лицо нарушает процедуры экипажа, предусмотренные для текущего уровня угрозы. 1. Лицо не является членом экипажа, либо принадлежность к экипажу невозможно установить. @@ -384,17 +394,17 @@ guidebook-SOP-security-procedure-investigation-interrogation = 1. Процедура допроса может быть пропущена при следующих условиях: - В случае получения письменного признания вины, заверенного подписью задержанного. - На станции действует [color=gold][bold]гамма код[/bold][/color], либо введен режим ЧС, требующий [tooltip="guidebook-SOP-security-procedure-tooltip-emergencies" text="непосредственного участия сотрудников службы безопасности"]. - 1. С момента доставки в бриг у сотрудников службы безопасности имеется 10 минут для вынесения вердикта, всё время, проведённое в бриге сверх данного времени, должно быть вычтено из срока заключения, если подозреваемый был признан виновным в правонарушении. + 1. С момента доставки в бриг у сотрудников Службы безопасности имеется 10 минут для вынесения вердикта, всё время, проведённое в бриге сверх данного времени, должно быть вычтено из срока заключения, если подозреваемый был признан виновным в правонарушении. - Сокращение срока не предусмотрено, если итоговый срок заключения, к которому может быть приговорён подозреваемый составляет более 75 минут. - Суммарное время допроса не может превышать срок, равный 10 минутам в сумме с потенциальным сроком заключения, к которому подозреваемый может быть приговорён при подтверждении его виновности. - Если в результате сокращения срока заключения фактический срок заключения равен 0, подозреваемый должен быть признан как отбывший срок заключения в полном объеме. - В случае направления задержанного в корпоративный суд, допрос ограничивается сроком до 5 минут, после чего задержанный должен быть незамедлительно направлен в суд. Магистрат может отменить это требование в случае занятости судебными делами. 1. В процедуре допроса принимают участие задержанный, допрашивающий, а также адвокат, свидетели и эксперты, если таковые имеются. - - В роли допрашивающего может выступать смотритель, помощник смотрителя, глава службы безопасности, капитан, либо иной сотрудник службы безопасности — с разрешения ранее упомянутых лиц. + - В роли допрашивающего может выступать смотритель, помощник смотрителя, глава службы безопасности, капитан, либо иной сотрудник Службы безопасности — с разрешения ранее упомянутых лиц. - При нарушении порядка проведения процедуры агент внутренних дел уполномочен отстранить допрашивающего от дальнейшего проведения допроса, в таком случае проведение допроса должно быть передано вышестоящему сотруднику, вплоть до капитана. Агент внутренних дел не может отстранить допрашивающего в [color=red][bold]красном коде[/bold][/color] и выше. - В роли адвоката может выступать агент внутренних дел, адвокат либо глава отдела, к которому относится подозреваемый. - Адвокат должен быть приглашен на допрос непосредственно перед началом процедуры. - - При допросе главы отдела обязательным условием должно быть присутствие агента внутренних дел либо капитана. + - При допросе главы отдела обязательным условием должно быть присутствие агента внутренних дел, представителя NT, либо капитана. - В роли свидетелей выступают лица, которые могут дать показания, подтверждающие причастность либо непричастность задержанного к совершению правонарушения. - В роли экспертов могут выступать лица, профессиональные навыки которых способствуют установлению виновности или невиновности задержанного. - Личное присутствие экспертов и свидетелей может быть исключено, если данные ими показания представлены в виде документа, заверенного личной подписью эксперта/свидетеля и печатью АВД. @@ -433,7 +443,7 @@ guidebook-SOP-security-procedure-investigation-analysis = - Наличие у подозреваемого судимостей. - Нахождение подозреваемого в состоянии алкогольного или наркотического опьянения. 1. Если собранной доказательной базы недостаточно для вынесения обвинительного приговора, то подозреваемый не может быть признан виновным. - 1. Если сотрудник службы безопасности не уполномочен вынести вердикт, который должен быть вынесен в отношении подозреваемого, он обязан предоставить все материалы дела лицу, уполномоченному вынести требуемый вердикт. + 1. Если сотрудник Службы безопасности не уполномочен вынести вердикт, который должен быть вынесен в отношении подозреваемого, он обязан предоставить все материалы дела лицу, уполномоченному вынести требуемый вердикт. ### Вынесение вердикта guidebook-SOP-security-procedure-investigation-verdict = @@ -446,11 +456,11 @@ guidebook-SOP-security-procedure-investigation-verdict = 1. капитан; 1. глава службы безопасности; 1. смотритель, помощник смотрителя; - 1. иные сотрудники службы безопасности, исключая кадетов. + 1. иные сотрудники Службы безопасности, исключая кадетов. {"[head=3]Уровни наказаний[/head]"} {"[italic]В зависимости от тяжести совершённого правонарушения осуждённому лицу могут быть назначены различные виды наказания. В зависимости от тяжести наказания одобрить его вынесение могут лишь лица, занимающие определённые должности.[/italic]"} - 1. Предупреждение. Вынести приговор о выдаче предупреждения может любой сотрудник службы безопасности, исключая кадетов, а также все вышестоящие лица. + 1. Предупреждение. Вынести приговор о выдаче предупреждения может любой сотрудник Службы безопасности, исключая кадетов, а также все вышестоящие лица. 1. Временное заключение. Вынести приговор о временном заключении могут смотритель, либо помощник смотрителя с разрешения самого смотрителя и все вышестоящие лица. 1. Пожизненное лишение свободы. Вынести приговор о пожизненном лишении свободы могут глава службы безопасности и все вышестоящие лица. 1. Высшая мера наказания. Вынести приговор о высшей мере наказания могут капитан и все вышестоящие лица. @@ -537,7 +547,7 @@ guidebook-SOP-security-procedure-seizure-storage = 1. Изъятое имущество первоначально должно быть доставлено в бриг. 1. Изъятое имущество может быть исследовано при помощи криминалистического сканера для получения следов. 1. В случае затруднения в определении свойств предмета, он может быть доставлен в соответствующий отдел для идентификации. - - В условиях [color=red][bold]красного кода[/bold][/color] сотрудники службы безопасности уполномочены вызвать эксперта непосредственно в бриг. + - В условиях [color=red][bold]красного кода[/bold][/color] сотрудники Службы безопасности уполномочены вызвать эксперта непосредственно в бриг. 1. После оценки всех свойств предмета, его дальнейшее перемещение регламентируется соответствующими процедурами. ### Оборот изъятого имущества @@ -549,7 +559,7 @@ guidebook-SOP-security-procedure-seizure-turnover = - Изъятое имущество может быть передано в пользу отдела (сотрудника) с законным правом владения изъятыми предметами. 1. Предметы, регулируемые статьями 435 и 436 подлежат хранению в запираемом шкафу. Его оборот и использование без надлежащего разрешения строго запрещены. - В рамках любого кода ГСБ может одобрить использование [tooltip="guidebook-SOP-security-procedure-tooltip-limited-contraband-use" text="некоторых"] запрещенных к обороту предметов в интересах следствия. - - В рамках [color=gold][bold]гамма кода[/bold][/color] глава службы безопасности может одобрить использование любых запрещенных к обороту предметов. + - В рамках [color=gold][bold]гамма кода[/bold][/color], либо в условиях ЧС при отсутствии ответа от ЦК на запрос [color=gold][bold]гамма кода[/bold][/color], глава службы безопасности может одобрить использование любых запрещенных к обороту предметов. ## Процедура выдачи УДО guidebook-SOP-security-procedure-parole = @@ -700,11 +710,11 @@ guidebook-SOP-security-procedure-prisoner-cell = ## Уровни Применения Силы guidebook-SOP-security-procedure-force-levels = - {"[italic]Сотрудник службы безопасности должен применять рекомендуемый данным положением уровень силы в отношении цели, стремясь снизить его до минимального. Если конкретная ситуация не предусмотрена в данном положении, сотрудник службы безопасности обязан снизить уровень воздействия до минимального, при котором будет возможна нейтрализация цели.[/italic]"} + {"[italic]Сотрудник службы безопасности должен применять рекомендуемый данным положением уровень силы в отношении цели, стремясь снизить его до минимального. Если конкретная ситуация не предусмотрена в данном положении, сотрудник Службы безопасности обязан снизить уровень воздействия до минимального, при котором будет возможна нейтрализация цели.[/italic]"} ### Уровень 1 guidebook-SOP-security-procedure-force-level-1 = - {"[italic]Вербальное воздействие — ненасильственные методы воздействия в отношении какого-либо лица, направленные на добровольную сдачу и содействие сотрудникам службы безопасности.[/italic]"} + {"[italic]Вербальное воздействие — ненасильственные методы воздействия в отношении какого-либо лица, направленные на добровольную сдачу и содействие сотрудникам Службы безопасности.[/italic]"} {"[head=3]Меры воздействия[/head]"} 1. Вербальное обращение к лицу с прямым приказом о сдаче, сообщением о задержании, указанием следовать в бриг и т. д. @@ -732,7 +742,7 @@ guidebook-SOP-security-procedure-force-level-2 = {"[head=3]Основания для применения[/head]"} 1. Применяется в ситуациях, когда предыдущий уровень силы не оказал должного влияния на цель. 1. Применяется в ситуациях, когда цель представляет угрозу для себя или окружающих. - 1. Применяется в отношении лиц, отказавшихся от сотрудничества с сотрудниками службы безопасности при проведении процедур обыска и следствия. + 1. Применяется в отношении лиц, отказавшихся от сотрудничества с сотрудниками Службы безопасности при проведении процедур обыска и следствия. {"[head=3]Рекомендуемые случаи[/head]"} 1. В отношении лиц, ранее скрывшихся при задержании или обыске. @@ -757,7 +767,7 @@ guidebook-SOP-security-procedure-force-level-3 = {"[head=3]Основания для применения[/head]"} 1. Применяется в ситуациях, когда предыдущий уровень силы не оказал должного влияния на цель. 1. Применяется в ситуациях, когда цель представляет значительную угрозу для себя и/или окружающих. - 1. Применяется в отношении лиц, оказывающих агрессивное сопротивление сотрудникам службы безопасности. + 1. Применяется в отношении лиц, оказывающих агрессивное сопротивление сотрудникам Службы безопасности. {"[head=3]Рекомендуемые случаи[/head]"} 1. При нарушении норм экипажа в условиях [color=gold][bold]гамма кода[/bold][/color]. @@ -782,6 +792,7 @@ guidebook-SOP-security-procedure-force-level-4 = 1. Применяется в ситуациях, когда предыдущие уровни силы [tooltip="guidebook-SOP-security-procedure-tooltip-previous-levels" text="полностью исчерпали себя"]. 1. Применяется в ситуациях, когда цель представляет значительную угрозу для безопасности станции. 1. В случае, если нарушители больше не соответствуют рекомендуемым уровням применения силы и/или сдались/прекратили оказывать сопротивление — необходимо немедленно понизить уровень применения силы. + 1. С целью подавления транспортного средства, включая сегвеи и их аналоги, а также шаттлы. Целью должно быть устранение мобильности, после чего уровень силы необходимо понизить до актуального. {"[head=3]Рекомендуемые случаи[/head]"} 1. В отношении лиц, оказывающих агрессивное сопротивление при помощи холодного оружия. diff --git a/Resources/Locale/ru-RU/corvax/guidebook/corporatelaw/articles.ftl b/Resources/Locale/ru-RU/corvax/guidebook/corporatelaw/articles.ftl index 8928ce2d8d..8ed009a4d5 100644 --- a/Resources/Locale/ru-RU/corvax/guidebook/corporatelaw/articles.ftl +++ b/Resources/Locale/ru-RU/corvax/guidebook/corporatelaw/articles.ftl @@ -22,6 +22,7 @@ guidebook-corporatelaw-112-note = { -guidebook-corporatelaw-article } - Побег, попытка побега, отказ, помеха при проведении следственных мероприятий. + - Попытка завладеть нелетальным снаряжением СБ, не повлиявшая на успех задержания. - Нарушение норм экипажа. guidebook-corporatelaw-113-desc = [italic]Несанкционированное отказ от работы сотрудников или призывы к забастовке с целью требования от командования станции выполнения условий забастовщиков.[/italic] From de8c80e2c46d8796fa11730cbf3095f9ff181ea8 Mon Sep 17 00:00:00 2001 From: _Svist_ <148935188+Svist666s@users.noreply.github.com> Date: Thu, 10 Sep 2026 23:42:47 +0400 Subject: [PATCH 109/197] =?UTF-8?q?=D0=90=D0=B4=D0=B2=D0=BE=D0=BA=D0=B0?= =?UTF-8?q?=D1=82=D1=81=D0=BA=D0=B0=D1=8F=20=D0=BE=D0=B4=D0=B5=D0=B6=D0=B4?= =?UTF-8?q?=D0=B0=20(#3726)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../equipped-INNERCLOTHING.png | Bin 1014 -> 1138 bytes .../Service/lawyerblack.rsi/icon.png | Bin 458 -> 498 bytes .../Service/lawyerblack.rsi/meta.json | 2 +- .../lawyerblue.rsi/equipped-INNERCLOTHING.png | Bin 1119 -> 1113 bytes .../Service/lawyerblue.rsi/icon.png | Bin 499 -> 474 bytes .../Service/lawyerblue.rsi/meta.json | 2 +- .../lawyergood.rsi/equipped-INNERCLOTHING.png | Bin 1102 -> 1097 bytes .../Service/lawyergood.rsi/icon.png | Bin 483 -> 492 bytes .../Service/lawyergood.rsi/meta.json | 2 +- .../equipped-INNERCLOTHING.png | Bin 1027 -> 1122 bytes .../Service/lawyerpurple.rsi/icon.png | Bin 477 -> 528 bytes .../Service/lawyerpurple.rsi/meta.json | 2 +- .../lawyerred.rsi/equipped-INNERCLOTHING.png | Bin 1113 -> 1110 bytes .../Jumpskirts/Service/lawyerred.rsi/icon.png | Bin 510 -> 476 bytes .../Service/lawyerred.rsi/meta.json | 2 +- .../equipped-INNERCLOTHING-monkey.png | Bin 1080 -> 1198 bytes .../equipped-INNERCLOTHING.png | Bin 1383 -> 1266 bytes .../Centcomm/centcom_agent.rsi/icon.png | Bin 496 -> 476 bytes .../centcom_agent.rsi/inhand-left.png | Bin 644 -> 488 bytes .../centcom_agent.rsi/inhand-right.png | Bin 620 -> 494 bytes .../Centcomm/centcom_agent.rsi/meta.json | 2 +- .../equipped-INNERCLOTHING.png | Bin 1091 -> 1265 bytes .../Service/lawyerblack.rsi/icon.png | Bin 452 -> 482 bytes .../Service/lawyerblack.rsi/meta.json | 2 +- .../lawyerblue.rsi/equipped-INNERCLOTHING.png | Bin 1223 -> 1268 bytes .../Jumpsuits/Service/lawyerblue.rsi/icon.png | Bin 493 -> 465 bytes .../Service/lawyerblue.rsi/meta.json | 2 +- .../lawyergood.rsi/equipped-INNERCLOTHING.png | Bin 1191 -> 1271 bytes .../Jumpsuits/Service/lawyergood.rsi/icon.png | Bin 473 -> 484 bytes .../Service/lawyergood.rsi/meta.json | 2 +- .../equipped-INNERCLOTHING.png | Bin 1133 -> 1176 bytes .../Service/lawyerpurple.rsi/icon.png | Bin 455 -> 516 bytes .../Service/lawyerpurple.rsi/meta.json | 2 +- .../lawyerred.rsi/equipped-INNERCLOTHING.png | Bin 1201 -> 1284 bytes .../Jumpsuits/Service/lawyerred.rsi/icon.png | Bin 494 -> 470 bytes .../Jumpsuits/Service/lawyerred.rsi/meta.json | 2 +- 36 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirts/Service/lawyerblack.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirts/Service/lawyerblack.rsi/equipped-INNERCLOTHING.png index 41246ba8c18c76f7e529bc60e3d88477838e189a..106b83cfb43bbaa6cf6f76771c07e436d8dc0b8d 100644 GIT binary patch delta 1117 zcmV-j1fu))2l5DzB!2;OQb$4nuFf3k000CmNkl`^nc#Wtlj_ygTY`h7z~Dw zlOdJHV{Va0afqkSUSR6hHF0ibX_bHf-B+-fjeqwVO4n4?2Y{)sr*ZL%&&2ne>wluM zxBvjk`k5P-%RaZyS=gynQLoo={pK9b7BAqSv5l4GS$Lj@^W&2UTM=Hr-Ws?QNS}DK zR~Mfh*At&r^?yIf(rC;r3UQ0sc=+HkR+eYQ%|Cqb7#6bu0QNacJgGq;>l2RaiA_dT zzpn$zWuH5)hp-h1;mYCy)?TgSZ1DotUah0DxF8G(TM-=BL%Hk^#0g3LeyHl7>DS=s za9`}3&0U-yp9Ij(JD~J-53K!U;nN@f5RpLVos^`$#eeLsrw+7JB8o$0{hql(c^9@K zG@H8sARO>!ua0s5Thz9G7Y6OrssMmOp#(bbB>h2}exXnT&<=HiqC;+zRljEnkQbZH zUBq!bB#Sw&hs}-oj?f2yIF5(NkdsD1nm!S>BC*M+>i0|mdAOOnb*=07e}4NCS08of z=F?{{0DrX8{l3E> zVKE!SBcq@(nR?meF#yDItaNjE^?_2yK97FpnSWqf-lZ`-GOA@Js7pUn1ju2YoRZ4u z>I-!0XL7*XoN9Yj`V%70(vA-Ih47&J0G;~EhBC&E4KE#?--o7eFc=I5gTY`h7z_r3 z!SM0H7~^AZk&n4WURhe@K@f2I{(ag206`G&%F?Q^CyxzEuaFpHoC=S?yG06He^+t+ z=6@VEH|Dj!mST+Yi=Y39mE~FZ6YWB+T%Sy#eNgdhjPEF@5JUF5P&d za=Bbwy72_lcP_)9m`q(9(XW1(M9Bg4Za!>9*r`>;vEzD}xqDkl_$18Sy^X)-d|}g0 zttyHlS?dRck^|Dp&2qW?ps}qao`-|RHh&z~!_`OKrSaoz?1hp8fOj{X7HXRt^QxCq zCQXBE$-0atH`MC~LBMD3-RF!kUM~A$YdpWAeI#f+ztW+}7~?bd?hCsrORGvYD31ck zCokumY7d+T8i|Nx$ZM+(%L1|!%{EmsJAj`4@W`mB$IBE7B~~0A z?t?MLbwvS9bmTPwX*K}JY=iRpfMh*h-V?f_K!**dVts&48&1Xg0G&3RiuD0HZ8&x7 j13nZR3l=hZqNOXq>u)`~xlp5z>N7rKsTIqGX7YDRWdRNSj5-pi37)vKv96V2pzx zge;Z})|PCad1qdHy?jZ(OYU02-4DX$yYIgHz3+GL?mq6lQ-5GNoB&`soB&`soB&`s zoB&`soB%3~W3iZrWu;PqbUGcP`f9c6EiW&N|GT@pAut5azj!0numAM12IKMv768ek z(I^}o90>A8qv0i~9VaRj3Xn`DyKlPytyW81lL7oW9U{p5 zWCH@dQRY?U599%;e!JZkgz

)Co7dc3+g}evLONm|1!&45IeB;K%QWX0xfxKT-g4 zJt8NN>c1a+hO77f&Hco!ny908I;MgjKOc2I`ux5Me}5nkz)rirP?yl-LY%+-9%x}? zZISTEIjaKB-|2LG-5%@5;U6hLKA(r|>WbKAy4&6%BE-wpIe1vvA9!widt2-jxHzt_ zufw>Y?N07Tp8I?N5XE9~!0urfDL|JrH0lM`Hh=k!2LDEw1jG8FLBOejBh3c|ag^O0 z%3p%=T7Mv`ZyNGiFzI5eEPy=Xqg>Ghbn^!m02d%6!z~Y8&adpj>n%iDVTxbL1K8*8 z(9)zAnBWg20I5H03nH-lTD`y|f6(s$vA6mWQi(sdKxv%}Smct1Emct1Emct1Emct1EmVd(u0G7iE0G7iEFwR4zQb`<2V1N_@ z7qc^`PvneXZ~u>n!H;^qF0L^ipxTGB02r^!<#OUb9#WReWnswd-5NkSeLO;BtKQy= zl!*Lfv)TU9*fsr(?AY6O@^nx@~YLLSQ+Z0AM++7vL`i=7p{+x(xFG O0000-1M&lqB!2;OQb$4nuFf3k00053Nklz%>Co@sw~!7lq6jYHCg>L^B2I$n{kI#i)UXmhlkJcpXvP^)+1 znBS6nxtI6ey+0R-iHV7cF(BvWl@LOe&#%?+`||m<5<;k)n}1j1z8%MuiF3#G2wi%`JEha8Q9e7xaXpGh!HAv?+RY+_PypHNEOy!g`WcyDSROcTHlG2I zQvQDverNRYWKB!&CybQCIZviC05qG=WV5pX^twI(CL;)jO&G{_#M#xR6OqGx6O4Mm z5_ZJNIN78O+BcykY?7%Aj_c8G1=wkeb}JZ>0i=|=W>NJ@kaP1Ytov^yQyEPD30fH# zPIEYd-|?4T&$xVvndW^BN1H&+2nkKn29f(#fc$nYA_kG~)u3BC3bz3O` zi0ny}Wf+EVT^F!+k)|nM*V&`?Q?7y%03Dj=IWNECIDC)ye1FC*l|Ol$V)N*UgOGm( zpmMYtfCw%mvVZ-!c*WlNckd_1FMLn->kWX)Sp{Lu0NW?e5QEwD?-ig9%puCMTOgq zW_|`E$ppQ2Ih!-zyn7Ex)==45VY(-)J^&;KyAkV))AKupBC?zN0Kly8x^Z-P!c;mX z>=tu4{P`7&y#ok!oS{@e#_U14QEq z0O$QKcCiJ3x2I8GlCQpX;Jiy1r+){``Zq=Z@jd_;r}jRV-P}i| z?xSyiWc9hNT`Qu%N#7p`UWo?1X22f^deXnq0mO^tQXcwYv5klkfwb9f3w;344~uQ( zQr>pGSDf?-dd;9e+j&O)8@m9VZeI6cB$>GK|K7BMk=3i$W#(r906PUAKI}BL!L>da zXs<((HGk+RGU+p~0|3x)E0^-UXLAGy+MV_oCl)8YD=v27e$3GAApY5}k9c z#{i(C$n#FIBvde z`+tkE?Je{SjRSx!Kk1Z5ya}evkR)qxDpcqh8b@d@jf_-hxt%96QXQeWG=Yr4Er zcb#bROr`Fl^$1Q?BdjTTCI)lSX%Ji7meE*Ya=^mmC^lB6u(2|Q ze;`Oh-%6L-kCWpgZuJ4YY+$YrXw1i3w>`kc zG|4Fnc-ZhD>H~P%@F3~~c-rt_>H~P$@ZjnL?u!iqfj}VmANU9N6{5GIOpp`+0000< KMNUMnLSTXzD+rDN delta 1098 zcmV-Q1hxCw2;T^hB!3BTNLh0L01m_e01m_fl`9S#000CLNklMlXe}he_C2*;5eFgAz_83ffcjN63220hl z_?jD#OeR^K8z6qq3K0tVxeWyJ#zJ0Mep4Pm>c_t&kp8(0zwaz-BR3q(mE?Y}Z>+%G zvxLUxHeA^n)?qGK|LVIYea&rd7k?vEgHrRbm!Lm%;`@T`fgO1- zg|L;~BBXx_ihBWVIAVP}!1>ZSeiES?NDDxurRv)uhSmJ01)vRx$mqx;mn&8xYmAoL zh%ALFekl(i5`F}hD$`I075t_I;Odt;f;gzZQGbCKsN^>#fN{3!h#PE4V>hO9P57~5 z^%79YZ+Zy`lQKiNtEG#Nu^g)SrB4Bs54jWk&W#Xk4o3jk9F736IUE6Cb2tLP=5Pdn z&EW_Do5K;Hk}r*ojj>A!3XoFZ!o9nGNA3tRf7Ue$e#GP1dm@Sl$j%`x0LAMbJpaHx zdw=Q{F*=krBzd|U?XlRl2$AsnwU)PUSmfvC{iqQbsU#vTogpH|=_zQLHDDZ(;bDZ% z_h^yy52Yf68uw~Ro$FNhW#dXbFLwY65+p?MxEwt^zow>}S{5#EZh$TTRDyC6h|73r z-5#=qXRpXYN&vcb^|W@B?4N860Lv>-34g}1ktx|P8y&Lj6tFreq7*i}e08w&82obU zFB;~c6vT1ig>~~u3-JEcBUbVqSOg_Zs0MNPeMj=z#I(76N4uovlNR9Qx$Aj#F2tR_kV6e_C-{dh#@UN(Rh5WEruqlKqV+C1DLUFzN+&BL~K{Ggq1ebOhbNv zDjRAlKR|^IHIW~n(uSJI4^U}C&EyBDvZ3bk1FW{exeAs=6vzK9ZVkZ@2xJfk z?*gSrD`c=sHwR0*hq<6;W|h{f?DpC zj`v&cF8A`@yZ^m=fI^{AC6ydf zk7gJQCn%hJV=$b+AI*^7r>HKV85U!(S9;-0lX!}6qmFjjJ{rzU;uDe`^>E4eF~%+&~%;&a%fGt2I(u%bPm(9 z!5ofo9l^+J2-nfh8UX1Uq#KcG*-{Qo%O*7rrB!3BTNLh0L01m_e01m_fl`9S#0004{Nkl6j%l?)Zv zn0L*Uh^^eE)h_v#%UvG#e(&E+V9bgDB7g`W0*C;l0Or;TE`P0+!)@rg9^>b=TFu=& zIA`CjdNl?K2?LOGZ6S;IwvFYL94yOnQ7i)GGSag%P~%l3)wE|>aAhDumEiiS0>dzH zWIkix--neD0FRzTQC{3UK+`njQd6*Po9(;N16@1uEC>P6rRIwT=e3E|+&Vj>nwR`l zjVrj_eS)&lKz|~YVfL*$gd_yOopZ5hyQ71#xRinLR6G4`ge5%%VVsN^ zI!#SXFmcT=aDQxWqjPZywp~Hz;u4O{ZD@v3y&jFQH`OS3eF{ks_Tv%Nuj_!h*%^l< z2#TdL6CQ0Xw#OG_KhtwW5qmYE^NQuXh-*_nnop;o^hqWX1*z-i%#9j#0jPhUK* zwsQr9FOF!f_FZ3DWsyMd`&(-DHN&{{)&aoUwNT9Gg@5(0jR5L>04V13>^zME+pf6Y zKHskqQQ)N?)8m(-p;#&-rpE*6U+VzsMJtoVaylKNVpL$byUP{&0I-}+hpbH2b$?L2 z^eM$snf-V~^{;h+c^1KZA%tAti0AcJvmZRq=lVu4UkJfGi+Eo5ORYW)@2jBKMf8Qg z0|2mavwt#KkmL}6KiVGDxB0i;B?*plyDhkO8l6WwNegP<`Lt8cU@d z%`jXdSG8-$Ya^)DC&?iefpp9V(f9o&s2K)gdK`33)}j%%=JIV>c2WDvg0l2|MSv^JqgT(YvgQJr`a*L6@PB8iiRp2i7LM4F7nU^#$j}!ylp5lN zjDP&L=_?cpg+ifFC=?2XLZMJJJ%M(F=(g0C=mUgF2fjUf92!fdoSWK_p;`lLo6fm) zh`~~|Rv^fhyzgysDop5BGyv@G0~`Cm+NQHL{t`Fggt1i0+4}Jd18bX3|Aq+wEI)a% zbAK#kgHUEjGmJ~SvLr#!zhOe3e21Nb6OqRSV&~ul`s6$GZ0qQp9imfFk4ouXHn?F1PK9ka!SmyK*Td&m)?W7jghE z>J@6k-Cd%O6UIw}+7cu+CNyF7PA@uP(tiN}I5xNOu)N38;{cFMJwXq-FLe^!vwk|6 z^k>$#GFg0$^x)p;BLKj;b?7SLtA~)W{1Qmv$DCIsN28%D5v4ZdrDcbC0p1CGT1s>V z4uWPFtXRs+Hc^D@17dod<>PrsatNn|BWd*kvTP8p52($@^GDgpu%RjH17zCJ6fN}u uGHqy@`T$urG+lkbZLvY2P$(4t0>1&k7?wXkiwdm(0000GV z5P1k`v$arbAqb2PMnys%Ja|&jk|^rnB?SorLA>o%3L%g{yA%j&Nt>8Ldk}U5O`|Ud*+%`W7D3N%1QMT@GW=Nu;BF@pkr(WKTERuH z7hi*6#IBU33=p5QLIgcOw}C)*=y_%NO?d#RA6^J!YkeI}w{Nn#&hp=w-AJ2KYt5f~0f)T$Fa^XKv0PcF6oP(?G_xUjL@*fmFSI?~4mSnAG|c|8mK%tQ-dl z@MogmHGenJpRxUUUmx3Zdh8DLxONASH!_XG7a<(_z&ub~6hbz;MM(b>OnVn-lNav` zfz-P|D~X>($OqB_=vQ34FN7FY^P3icUMxgL|G3EIj7r{*UPQ1Ms`#ZmfJpS8AbqLQ z3smr%5`e3p=@Z1k+O>XGdx1)RQv&dBs}UhD>3_%7w|Wbx5N&O3 z@qeH9J6U2xS8NTDy<}h{hlsRvhKLw*qo8G16%d&Y!C%(`cQ6=_Mx#naaJ$`cO3G-R zew{iJ7j2Ra$jV2Cl5shjJU^ypC$$S9%zC}h1b|9-HIBN)5cCVdvsYvxB>){j@&JSp zZZ$VyetsS*K^*#6pa>;#0W+{VDIyc}E`OgdEd302`+St81(hI<;QJ}d#*-GnUvrI> z6npQ%ep(wPOsEEN=+k6)9s#spm1MM7T7cGX$vy5#6k@UhB}|M40#FI!h^&22aT9tx z+Cn7llHG*T0vN^P)$ja&pri~dk#~N8h(aYxSZPDimZf167b|EGvCML#$n(OMSVH}P&SKssxT+`s5^95N zc3qdt+d7+F*9o-&fT}2LlQ2$Tf{>D@n>L&E2IKK7oAm}yH*JKJwypqJFfodrUK9k& z&prBYNj@I#Nv>^i_}(L`mpO6P>2}Xed|OrEu6Y~o{YP(V{jN8~IDz3P2=}U@I7$VK z$FCfvg7Ea;?SD)#YC)&lJzq&Io&ls+Go+VNh=Snb<%NCcAPnq#9=_*s)ojk0CSY8F z>sITB)8mUvBfGyy*cb~b@x4JP-!)HAd%FPm-r!$1!DzA7-0Cwd!<%T;w8 zEu@?ZGE25;gK-Oll;lfAR7Eiy1&CaR;VAea+hWv$noH~Ie5q*UFkdQKJ;z2Bm@0EF zGt=%rvtTs?Ksf37QW4)9gljag%?w!G*=QoaVfzNe#KZu60?9C~NkX2~fQ2+n{ delta 457 zcmV;)0XF{Z1LFgbB!3BTNLh0L01m_e01m_fl`9S#0004%Nklw*t?Bt*hqTtZQtU{r5>skcCH7+{UI#>r?ic1_i2zGX{T1BeR-9d+# zd-OtDE4-Jabjc6l@-9d2ySw+^1jeiwAO?s5Vt^Px2_SEp4u9F&QU)&vy9xF$99Nvp z$2;+UWLXI)NE(2Wr&rSGe0HHN&H!%G<;E2rRyV|2`_hq|okkv}qXH3V1W&h3Od4~r zZ5vZA0Ii`RkfZ>(dJh*~kg*a3b4WU{d?zoDLQ00000NkvXXu0mjfDaFOF diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirts/Service/lawyergood.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirts/Service/lawyergood.rsi/meta.json index 3f112c22d3..25e7f40cc1 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirts/Service/lawyergood.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirts/Service/lawyergood.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/305131e20cfe53eb41de61db79a99aa12c2925b0, monkey derivative made by brainfood1183 (github) for ss14", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/8ef1b863b67ed708de551bba5d550b2c6f1d24e1, monkey derivative made by brainfood1183 (github) for ss14", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirts/Service/lawyerpurple.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirts/Service/lawyerpurple.rsi/equipped-INNERCLOTHING.png index 4ee67801d72c16b74e8651e76b42dedfc51536b3..28700624ebed65748e4fc72fb8c5375ff43cac07 100644 GIT binary patch delta 1101 zcmV-T1hV^s2;vBkB!2;OQb$4nuFf3k000CWNklpmm<3Sh?b;jA4raQ@QusR=Dc6Ty6-#2gG{vq!H3V(${p-?CkiocTqna(k7 zls23?=4Kag_ufr@ZEk*%E&o<-X65m|ylKP$;V3>KDNv8k+VG=PsS0sr%B44Z{X81$6;Xeu zw%NANPHnR*{f-VW%sgeQyk1!2?JNqWCdXW>4*=_hHGdu*y+%Ph{lU;M>bnhBzxr+i zgQ4NB^gB9$4Ypob<4=7iKBC2O;ruy1dDedS-pv8=x?X6fP<_$DH&f8Z_9X%P0{ zlf6y`ahy(it-pKKm;Mf5p#}h!wSj2#I6wc|{MeW80MQ0f8<77FI3m-z;nX1-AbR|3 z^CSN~D1RDG9bppTT4565d(pl?n2ukjdNNB1A$(hX_sw;#C$n@qemRg2p;mo%+}b9q z?>PdZp%}Cw4GU-Qt&Jt2ZazqpTBsC ziNrWhTC)7zjDE2%|Hz0r!>P$JZp(%9=ioR_a5fM^=<2K2)V6JE+cu49qco|#Fp(Gs09U<0?#6XId0Ox#BisqL@=u-?kh^i+ zRg(Y!6Nz!m%`QldDdhl0xv~Xwd4;FQm=l7&4QBL<1I1F+HTl8NFwEtZu4@vya)5}K zF83=V+==zV+Ak^jUg+5YB1;eM_&Ho(G=HSB!vJvm)_s1=(&KC;!XyI6as0Ec4Pg>- zt-NJz007M8m9EBp-?Cke*)hD=PJnF TfOM6(00000NkvXXu0mjfzEuy= delta 1005 zcmV_rE>?t2)cA|aVTyb6|A5`Y27lp_z#pohi*b?Lxpy6C`h4H zyToc!QU|GsO6u>$@Adk8n!9*s33tEc-n+YZzwi6q_b%amUwa$yz6qg93ewsexR+b&F|mc-Sw|k`K1MT z`*FECI+&w_g9GpW^V*kcS4WCAer!^?v{_rMwbh$<|8_>Z2w3;g@Th+;IxUK!$}c4V z79Hrn<=-dMDSu+;(Tc!4-690}0nzF6@YfX}NRD03-pNq$!?G^|?$O_<5i0yLP~n$; z1y)u+c`d&J!3aP`?RmQ&d z-DmJP=Ht2ZMnRB&dwZJ_iA3mJh)}6il=-D201M$1W`DJ@+e=GJUJJ*$AM-#=n!)_I z7I&ZT`AksduPeaT&+@5bi;Ig5J*R?3*O7hhOabbJ&)C=)Ei5c3KPQVu*U|nn7zTtr zB0xMBE(!?u$=*qtTAiZV{#lw^pKEw6B>_gdM<^XnQ#goy#10X&~H!X&@+ zE5M7gAz`6r;@vmRulzG;(#ik9@4g6;?Gl;`;52j15&d@Qbz z5^38|fMEyPen-`+F7R08`q~EFUY~L)Pq)`+eQg8Xom$nk>VokV09^FWV!Kv#>Gt|) zVdLjh7jSWT9e>-p3*}P&MfKx;Qxj14c4z#9Ljc0RQ7mHn(^i~Z@B0Ub)VmKVDJkmrBzI;uRu?_t~Qb(vro1@mr~kU=mhTM;CUkL)Z zAKenk&?-4tT)|G^v&zopIO(_Jz3)Ho*sf&a=e>NL!Efk>)2pND&w#hOubg>@#Y~Yu zcb5~_U>M+^e>0A2bOk!O3C_HOx4LiqBQhGo!RRKo7c<3)e!(z!<^MmdW&j{NmjfOv s4TeFyK2Q86GcYdXU)Us0NJ!8;09$jcwk>%x%K!iX07*qoM6N<$g8I4nn*aa+ delta 451 zcmV;!0X+VY1lS5XYyO zOC%>TT9OJ?@d3Oj6ha?Ch)BKW-p9$Qm%KrqAQuS~^x{=0h@c786;GkPw8YG&(}M)u z%?G{Yf5_~|Wac-s$ttj8wE!(Z3(x|z08#+DuBT{y-v`UGI)AhthGA;kHXk#_Iv^oo zfQP4PdVg~ZtJR9nUtVXaanyzQYYr@$=fM<(`wg!K!Vsm7KsUQU$mJ?#X3l07)k)-deeaZB@$$Q~MZ7pq_TXUTFeoBZ7&>G_HrlJL zh@r+rvP1h`lNvR@tQm8@50w1r%lrQF%kRBB^7{b-fj}S-2!8~Et4Rl?vD!Cm?;O^k zzMsY8N2C1O`Nb7G|Kus;cog|xUr2pY^#P!Jd<;W(@9^^*#dRDkEdu~q-*@Ag{z1Dp zW+7h&K79X-TLZVz+1UldIKuYUCLY|p2Q>wh^av(?d~LfEm_9?>kMeybQRDkm{cC<2 zseQv-T#iREJ%9NQ+gqFb=BFp$L5|lA>Wx|aNwo{7K0`^=_|FMd|3U}M^bgufqK1+l z;lc+?%P6cC(b?IB!fFu*OUvAlk{*GQs9~mmuq{q#)xQX;{)Gz5gtQeA(T;9kl8@L*I$E9}T2`t^=6&0bu8_8GmXl3Jl|jKmAW{%C2_phypMD zv}B%&hLRpZS~3IapX&hT#X{ABw)d@ri7^5BIOYm{0MPcnbrh-wO0=`%`tg#VmS z_0Jtx-Q#1x-8)bLXpcru{lAb)@h9&@eLq{jzPJv&{c@oZe)a1Ut$Aj9IUa?!N7E;- z0|4-FD}PiiWP9p9WZwQ8>j0+jB&fcx*C2z9FDCZtq2W4q&J$ta)Gt&m*EXoWZ*M8d zj4j8bE|Ig2TgPiVXw}d5M0f}*f{6Ex7w)Xr>t#I1qbkdI@bf0j~`8GGlt zj(_c~O-u}p)XzEclU{km^B`r0jd&JE zutE*LkQ~6i&6o5D^5y2SlBhv@{(>a@Cuq-K;N?`3+mtUiv(tX_2Mm$}ywc6ibh%+1 zk;H>w7)QJw!K-S7nvy3u0BGK@SE$LyF@I`zWV|$(Eq=>roRA!#yqyvkmIqD1?1okFkw1zx2J4_w| zt$DXyQ{s7g>I@tNIUeOT0bVyxgSA;<3d`0`W}a3kJgCs2zr>z2 zg%0Vq2VZ(fh4u7$-?;M}pZnG~Z)aAPncrph&6}OyH^2F2=6^BYw+|GD7625776257 z76257762577J#R5*TJI}mX}77kVqs#w0>%8${KHNC%^lb7D6BiEdS}VXPo-)U%x?6 ze%}Hhc~i6w7R@z6J~uaK_4M>WUtb^8M-M}Ke-#{w)Ib-2B|`+{kJ=mv9PGI3J$;Am zc=&w@KnG9pCVx2$&CSg)Jw5F_Q(!yMBDnd%+}Q@jCnfMr!ma{Pw_}MGA3cR^JPxr~ z46@lQY}n7#0QP?(L~!#{8xZJ?ZeCt~Umk$!f6DxY`G4!s-f)c6ku`Uso|Nc**9PNo z<=h82SzGP27llIng^-;2&COp_0P1>_oPwxsyWvFlA%A#zcZEEUb)Z{j55iwm zfLL!gTxf5Duzk#=5{Yd@i0d6SkRHqJ_}{(v@5o89gqx#bKv2-*4*N+l{kYdYI{}D` zPaZmU_kZW@_Ciqs48sT+MF#M8XpO8nH`s54QsC7OnFM}EF$?k_=h zFTlaG&*cE+n}>D6k0O);ZUNjg&OVnz4AK0)1;7mm$?(WSmn&34t=-PvfN&!M!H~tz z_0w*FJus?1A3dZAU-3&+vCS?Hd@Ah6OIX{3!xsoMB+E6k10kUkUs6G4u z88%czet=9HDk48XrVSO7A0W$yipviWZG*lM0>z;P0L7ua0RI70t*kLkWR0Hy0000< KMNUMnLSTXp()79j diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirts/Service/lawyerred.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirts/Service/lawyerred.rsi/icon.png index ccbaf16989a364e6b385372d63893bdc44194137..1a74b3394cdc4a3154c6c64017dc0bbd5931b262 100644 GIT binary patch delta 450 zcmV;z0X_cy1Kb0UB!2;OQb$4nuFf3k0004&NklX4+t_c8?v-x7s~srVUmrlz&*0}Jo-C#Nyqfu`{R~2d~egTK4H&YH) zoi6%=5fX_j^amrXI$a#DQ>s9!z}sTq{~CQp+Pfz$vVL{}b6X1gyDGTuCOrMe%i?Gs z4;Q=}&9uP)pnrNTA(z|&@GDZ&_5%Aq{`_$H%^jD!0{;blf7Q75okalP-vG;#F}Eem zZ3z#Li?DBb@<}&=Bw)7ooo;zD0O0xFjf{8e6i6P>RV9)nZcO zCAXN{$784phD+Y4gomgodt3pFvPXJ|xGFGPJ3wHt96PqL`%du!mjM5t8o{Xor`tio sptXMGFfqjgq&o}jAEbDp0)c?WA0I8Z+D2nr^8f$<07*qoM6N<$f*rHYbN~PV delta 484 zcmVJ~cc;|*F3Vep(@ z?;O4I`XSt_mdpDt=biHo_k7N|KgKX(c>o@O2jBsC07?L?hL6<^gRQEN1@w6ctHxooG?X=E}PM6?-{#{Gzf14se33PfL9aGkwE zB9TC`SnT@!N(w-9PogesCucC@al~RVn5K!A<5QeOc`8$o0-!~oj2BeiKagCU;~4Mx ze1xs$jDPz)j(@GSJQjizoR4}{W@$M9QCx_-Z2%9))3`W#V?THJ%>OvgfV89lXq=n= z5Z?egghKm!k5~_fzQjcSPytAH)+<98Evp;bIS8PXvwq}3K?6NRx0g-c^FgEx;64jf z-0lAh!1s>bem^kM0JQ&9jIJD=gWoKIPM-4ysGI|(30-KN=a#NuFI$1y6r=z|_ta?= zfu4EvpYl|uAO*lz&{?!yr4wwl3kqu(R`(42$rgx31&A26d*rHbfD*tUMTQD6YLu%54LKEs1lY{A{7n?v%LcSPGn?qBS1`5V8ZBI^0noAOb z+y;6mq)=Q?MTu%uSUdhB(_OD+T$Aa++RaMZb!Jw(rZw|}0e|gd{k~6cMk9IO02~g7 z!{Kl^oaZw#JPdz4N^-dz$>nl-JeSK6e>_Sek;tCt7YYTUsO$PD6bkO^YvR%4hjr1f zd%JZr(c_0*HDT2E$D<9yuKod9@$2_*5?|O00GOV-0RZ?*_0(MZ!d`3!1;>j}ukQ$uGs>tW_0D#`l ze+Tev7N%xq95ZRAZ-u5$o11wBR8}_u?5u);Z^}qdj@QJEG&_4E!^23to-ox10Ao?i z^l6|fz{F?<#o0VELzgiznh`Xy+ZRH*c)RD2kQus+;(u%&6Qdc7jg8qd#G3Okd|@w?l8kq5twJfu@P)mQw%3U9J^=XgiJ#ht8Pf-k;ETu+Q+*>= z`ZRd#7*k3z0v*AcYfsC;hWpg-KC_cvXX)xCEL{aY$YyKec9**u)Rh8&^QTYa`#*j$ z-HfFRJ%D{}#iGhZ&3cU}YqM?aT#^sAd7qR}YRs%9#H zS0+Lz6w<}tP9)IY*@>x{nP+j7SyD2wo4(zgFMqJyEQ%s3l?p1A3IO2exjA%3A}B5_ z)WkP7HthPbt#5=ypQ!*J4-Vqu&>&iaFQQcx@!R9a=s9{6Z}#=+@dpndvZQ1})9>wh z6~3*1bp3PZ-^aQ425jlu`e$fA@xLp8w7AR^e;!Pmpfo=ZX?~tM?le|9kAC>kb!`rZ z!++s$I2;a#!`WBZdX&_1b_4*>+MhsM{3ZM}@Rp;dXz9EC01L$@SektVp!q%o6Is>rlp-p(7b4?fF)N`t+D!U&|dThjUJ4;Mqlg2W$O3Ev;vHMdNb~v3ZVGa8!RcA zxpOLD8n<&c0ASw(Ec@?DNyeFb3S&BU&fHU=l;nnZ)sr@;vDF-H>**rf>J}7rOMj0A zI)Z!F9}IK^8;a1@(?u5M{$&1LJ-qwMYr?m8?^5S; zq%oqs`B*IGM7mvx#bS86s5YDvvI}zojE548#9}d&%Vk$*AK2*%TNT>M+io!bK_n8f sJcsA@SKxm^pTpsBI2;a#vtRfZFB1uEyqmA-OaK4?07*qoM6N<$f=Qu50{{R3 delta 1059 zcmV+;1l;?s3AhN5B!3BTNLh0L01FcU01FcV0GgZ_000B(NklHp$(W)3mqJEbc~Rs)czOT3cX!`+-~Imu-u*;eSbqUlfE8c`SOHdm6<`J8 zDR6J3-xg8D}Ks`C_pCD12nt&g=&>5y}5FoZhw47 z=f+F)bm9_iv<_+IXVq#<7yO07K}WX-^+6~6OvgwO6+`EX-rIthTfRjjFIQ=LdRhXa z`780fIMpKBPk+(SaM9cQzSVOPO#B>W+bs75Wupu{4(K=GInD_zC$~-mz6#G z(fAk-_+iDbx5ba;s+xcRY19uXR~V41-K-u^wlpY7>3@1b4t6iYAPQgW5a89=YR1No zwFk`XW@xgW7BPP;HaQXB@CX{9rJHAH?!&R3@QlAnZnQjF(dt()0J8&Z zOkTRa|9=9ZK!Q}i%CE+eh%<5R7>JJeP6A-X&CN)8fI%lwQ{tODzP|^!fLevXaB0+& z-~uTa0su$dZgtygOdHZcd=qQ*;<)F6@8khNpkewWjLn2x+jiiKh1vdEaT4A-Z~-1x zqUyuio}?}c2i}3}Bx7@5R)7^?1y})AfE8c`SbqUlfE8c`SOHdm6<`He0akz&`2Q7f z`jToUBRr{;X(*3#^ZpkkNz9F3(7-Oa3D#eQRgwe}C2%1(07RCTm;3fb7FfUpw&H=i zxiDIlE{65W>66;Pz}tnpMDORV#|sP-@A2A0Z?yhQ<|K^W+0=b(PK8w`D-SRyFV6$T zk$;pbyR)B_nfP5{$;k^2l8ZpK%?$uiD*^P(jESo=!l_4}s2>LtzyOvkAv`q4n1+=A zIH$k=Elsy-?QqAjv{@=kSIx&n>>!5X08ZcrjyA$D05p^#!L&7G4 zFieSD0F{{n0dQPy9+Zali>kBo05u3mz<&lX&gw9EGhaZpOX?0RU;)%YanTZJCpqBXKyY%|f2>0QbBKyJ7XmJt{B3*}&fJF;UuH0;?AGh(CG=EA4}}fVT(Wy%jEt@=g}|WcAuXiPLnt|oT+)`Fatmpo^x~0G zJnF!hDHhn4u@GX~!FxY`mQ~wNk`-8gA2721Sl{QT_xq#Ydw+mJp-?Ck3Weg+B*nQ{ zU&woI$HC5nXSjatiumpB-huc158pz|reRe-upk~se6=mgvQTL8e; zAN%6`a=}aM8X6T7fBpU^9+xkpkacm^(Xe`ai1{x*L+;W=IF^eKug_w40_hXY_m=o> zlyvc(tAAmfi+}Wmyb#y2Y23a25Uak(g;<>6*B=E}f20Gt4I7T- zqT8_1sF>pTo1>Gy?d$J8N26l)T^|R2eL3`Hn(wVp`hP>)3bi}Oa?!4}006m57lq)D z7v}KGKYxp-PY#+c&VYUwr9TMLpDxY-=!H5#(IH!Jml6BzT1$i^(DQf_^8ncfSsUQb1I8K#3Af|)h1H9zxjqBj zj>EYf8@hkDVWVAZ^=;+z9ELW5fs3>0o)iAt|K_)r2s^jqj118@pg&2r&^9bA2TbKM zKrSPCTUnf%f>jM|%UDnk??)afIItW5^oF15;(rXf4I5Lr47%t!hK8L2H!mY69{$Y2wmn$4$_SMsI&`axw|x)@M0Do&)$vY9bW3KFb00LXw#^`rftOjx+GG zGJgrqTVJ72C=?2XLZMJ7K3y`ihNmy&J$)hX?d~0TrfGU~JV_e>z%)&7cke*h6UGMC zD`aNY@Z@D_%GB0QPVu;W85`}|#9vD@vxc`ZUBv3~A&N_j0MM7849X)8gS8|Uv;b<9 zbQG5sQMhv-J9G1#+l69hZXSg@_fcG041X++;4Y1`96;;uj^(0JF~z=7(sA?F4VG{e zZr-|qKYspF*wm<)VqrEYZ#axltHLsJy8Ns&`Q`Dmjs~NoWBJLuz(fppWtzPzOrk-d zw$ZL}Z^tG`L(Uj+VL9N@y{9;R`4*=y-(qcLUF71ZP@%e6W*fkzx>@ckjA++dSbtkt z7j`|m_mp)%_9)5-QD8>^5ZwN0O+JYT zh|>mkxBan#gs6oI=Vb%?X;D8wZC@^9ODZ`b&q(FOY?uTIyAQDI%@lc=W`*5`ooHsp zt~XQE{>g^0*`ZLK;INS(Dg2sY>sON^j{?B?)CI()8Oi~2M>FZVpkc_`VLRZ^llLTR z0)`Q_Fgw!QOOyh|s0^zW;1JpY@}EAB+`L_HrjlHRQv6@}7dqqaduda&~CEmN+^xBt<s-@epWqU_ENzm=ulrM&m#{*pBk zbn?gdR;g>bHW9k1s0gJ3~B>Fg^J#ee?b&bmIH3Y4p^` zf%7$y(o$JfY>-e7KQv^yO4OYRn_Q9LZywEBv?rX0(|_f~^`$pIKd&VC`Pa3#RX^l( zvNScuRp^6L&>dIM4><{b>Sw`%F-7TUNb;F=fHtxEk`qq&31%v;yG#Vt#W8#;5B)QUh`D<3}Xpn|_4EmU(G z$7wQ2s_XbNJ(6*;ArLik$6&wL`P%wsc=??yUASEf4ak-smBW=19c!bFkZ5mjqim-? zZ+aN`6Mz-4y6TBTE_MaP84bWQvt?584ue`1N)>Gn#F8hfy#T%_o&)6~0=!(N?lHt0p?(ZSjknQ` z;%9@+7`jn6!50w_IuU?jMna>)&K6X3eE*bEe;XLW8tnmK8qVX)$J2y)LwnUQ#J-N7 zW`8d*A|Q?NTWzc(V5`kYtL+hOf`~gDgVE#WMel7p!#GjBI08+N!Kg0Rb__TM90QI4 z$ADwNG2j?*3^)cH1Fr-F(SPg`IXy8kp)O2^hllCl;X~Bh-D9LD5m<~6as+<;`4{5* z$+5Aq=G(zZ3V8PK8}c|=;o`2shNOuYyMI%60SnFp8#d@RNtKJf2LOnZBmh(@uF&zb zC)GE>*{NGJdh`Qty7*61XJNGGb??a3bsBhUulg8@?~#Q}?ZOr|!N#Py0gx9N%LE`v zL0v;@H??TvPEG<21Ed8u+}crDzXA`w5UVTkpf0%}6@3%@Zu>JDe?z;OkXmn19)I}= z^$NZkNs5SoIK`5rgg8A(`hd0j(>qB-8_HNC07%FeXm+uUA=(3QJ^op#Tlt7=u$cjW zxOPpQHX|end7L#8%KCBt-a}6%N8#OmqH4DEmrerP1KXtWCzU5`gkf4t5c@p)lGsbb z7Hm-0@|?Ws?*&)|()foB;t+_Y!L{0X7#&{AYoTD`yb%EygpwxiY8veQPEBKrcm>!q zduwP)M}T$?zchDJ+K`R_-|JQ!eJ>){2DUK)*mO8$u2s9gP6T7Z2H4_?W56+B#K3dX WbA6Gvgp{NWG?cis zh2m6j5JdU~931@$4t@$ZMI7Ah&@a%Tql*eo-HHls9Shb)krdh{7((zIVuFQMa^iT; zlDpj9`{(!Gy`WGi6bcEfMnxE|ExNsH@$-MTcP$Lp7FMGoR)3vcg(lG3G>-23oSn4MOkLJgVlU68 zG|9;4-P)mQ#@yTu=v-a$a~%m4q!jRmlWhDncwG2C9BwYG=OtH^R-+;cj=_99 z!)cZQm_GX)uYYfF`uUn=?+qsuYb8Fskh}`yzAT1o3xHy+gl=h>!!)4CkC~5W0EBPT z|G$LGjE*jLbM5;Lsm*CAQs(0s#abzw%SfLhbqV7j;=>EG`R#$T;5-f@8FRoN6o`W; zd-Kc2vI^wxga8G{fbZ7;NmEL*PD|mBWGw!n6Y7?R(>pAqnK}i>Kr?lmW;uHqvPj7V sNf{uKJbat38LlnTGRVrWP$(1tUn&%u*7LrEVE_OC07*qoM6N<$f}ma07XSbN delta 470 zcmV;{0V)361MmZoB!3BTNLh0L01m_e01m_fl`9S#0004^NklY5Pi8M zUW_1#ABCQX;BOEF8?m$y`~hlZW$VvStgJhT1NMRWSzfogyQFHEFnd3wP zbJvKl1IO&lzMYS^vj;eF3^)cH1CD|J#K3wri1^j(^(a|4ZGYKI`Za4$10seAro1Bf zjZXx4X};Q|)U;)fIBiVg3R>_{xdT7QBf5V_b^ib>YpXUX&mS6lrxGGJTtwLD0FTyVOBO5mUVmCu<;e6{)M#z|>F!e5 zYMQa1MhZz?fW&6U8z*nJbMa--nFC_L;wH)00000002;yooAK{oCLNHx($GrB>R zBGn)pcLladG{{CTfJB3A^a2o_-yn;(!@mg)G609RrJl3EBeIx*f$se3R|7Z4u)b#X! zbN`l^tMnM=s5mg;K=n-BLOX7(WXsE0ewlO8n|1fUNc`)Vz3pLjkgT~~)|`GLy(H%% z_Mcy8UhrC*mGIp+u0-JZHWjP9H>Zv-&9b~{J9om*}D@9Mv|-_~zC>-g(< z*xhr7^W%hNe=PRg^JPQgTnpJBKex?UpFBt2@6R@&Q@PL2Zup%zIY-nzZSk&DpZB-t z*s?tPwNrZcylH+h`;68XF)Os4<&AF(+rD9EnqGb%Zw z%yg~kyW{7TWc06WDM=CwXBXhv_hwS~@_N_Xr!Ca_XJ&Rrho!sSFkHdB;n%~Lrtf}z zdu#n#RXXeCnaI*V9?vaQ=1TF}^>W&;zq>r<oMC%^hU lF`WQ<->W-KMeib9q-Ow7|X=~1fH&bF6*2UngDAw7rg)g diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuits/Centcomm/centcom_agent.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuits/Centcomm/centcom_agent.rsi/inhand-right.png index 32b49e37e429a6a7256e024ae080e76dfe8c979f..855940002282233d72d234a0669ad219b012c3b7 100644 GIT binary patch delta 468 zcmV;_0W1FO1nvWnB!2;OQb$4nuFf3k0004~Nkl1n490u^OMI>M#LkR&> z35KkW9>Af{wO8;A-5qsu%&s1wYZot2Pw*~K=-^N^RD$q2lmv}Qn$(DS<@+r`n_w#!vw88wnq^4cHKjf1O0(aQLI^qWdQu1> z&3;GPgRazFGj~f}!#TN+cEEHrhT-T~4LtzBa=AP@0)XM@n2yF5y`Zw9+>vDN)zB-R z+xPu=YMN!piGSCVnq|b(t?R8&Y3^vD?way_@epsXx^4ZWzvRw*2!`7|3`d9i{076( z5pMUFNnNqBxibgwwcY^$UZ3ucUe{gO+?fLaex~{OvR3BTkCe&X$U3nPLTrK%yN}Ns z0JXmN52>1)h=_=Yh=_=YsE$-^jq~LGD||@R*7!Gt2Tc%BwKYDAs;zMmg?50dt#PGP zZH+6XYHOUQ^g~e9);LS)0jSyfP delta 595 zcmaFI{Dx(MNEZzcbO{uT{2R4gdA{&G{|!{QczFJ1)du)2)iwKQ%9M zN#VV)-pkYK*nFm~7yNGdPN~JW*QRU!m=bk^6}Z2 z|L4U%?@R6VJtJ+)cyiybX{Kh333HyFon31x82ChDvGf5ZpU-LW-6rXqwi`BN7@mHU zZF2r%n<>NXH>(%#Q;xjG@WrS5P4B|Ueib0O~s#OcTBzK@=Jet*1r-xttmG#ZUYqtU#d zjBrjKw+g=NIe78%HD>PIkl!t@toz@7^92lH;-7;$>zZ7B0GRo57MDN$SiZl#`3K6& zO8~&uANb^AvE-Yh2KK5I)M_={yuE-6g-bZ9?_zCr9=2`c;^Z`(mW#J-NH-CiLb=QG*O1PfG*6*1sly^?c zMWe9~0MY^P4r-VzeU0kQFVdjBY6So=HZ}qJUYvRmrav||0iYe~1Vx8>&Y=1|Q-HkK zXzauDyb)C_Z`s)1TI>jY0Ps9-gbaxr1!4Mx({klQg{$8)1=MykbLU3a=YRkF8LmI= z&dnDuUw;E=r^%C_e(Y<+p!yWvXJH5vp69Xj+2eprHYZ;<8v8ONfwsrf7zd~}sM-L3 z957HDBwWww2&><|%6AyxdJgAuZ0Pz_5Y?mlIfuSoK*bPdhsfu@o>pC|z@F!^jo?7~ zWJ}N{E-VLRvN>e3IazI0@zYeOM>b{EG_)z9zCYzIO zXP8j5IW4y%70He$5y+|mDpU`Ko%dm=y1}}{C6WWoQA7UoGlYrYIDMFyqXshBT!%hI zU=&ymAWsKFon9w3{7sWsDWD$HCMkV(5eya}Al*Bkv_8uLy}X^~KmB|->a2;m2x zr+>wH>uWR`jYgx1vhUmV0&w^YYi`Hgb@DaPrk?6>O4wQ?S)!(eKKqvu@|fxV&D4xssWr{!X=T9L2wmW{dl zcUi)5n7e-$e=d}yO?%afoR|$;H|#~ESz#4*x%{ZU%My>mQGFMA%f|Jm-Am(V+1LyA ztT2g&h1&MkBKLA^!Zg$sqoG1ozu9d1a}OT+LI}TDEXhax)wQ8_g8Hj#9hyQ2e}C@5 zLupreWu0XMy9)&Gd~m-&8eJf`Cqc#aoZ)qWFiwsSr4j0Wfnh-!s%{+E5deheKh4Rf z5dlfsz+M?TYePcZjSA;w1N&}K9iZG-x3LZT?yEMaTj7Ayl_9PT>>A*C-UxY_MujKG zhpGK|vVroSY>4vXfrv%0S0_k|pjIY#2u#H80>Js~3rI>ck^|I2GxX6{4^-`_1(@9h zi2uuOkg)v%93ndaK&%alaY;%uvIA5D((C{MO}#Hb6O(@d|Fzp!`$zJj00000NkvXX Hu0mjfZWZpXgj(@`o0FJ{80FJ{80FJ{8 z0FJ{8zeU4g@t;27QO`arh$%K#eC<*4ANe zZVq7UUFYe!cz-5z-!m$L${&WV`0P$NQ~(-wGSSk~66EvwPHU&3*=&kuGC=;F2@zC& zvH^jkQRU_GM;ZaB{?5*hAk1d7qO4x8_gx$BXCZy_gD{BRH-#|%Fl=vcv-yV#Ktqqn z2{a1e%KcvN=WcC^@8~@fQz49B?sd8M%gf85c86i803FhlN=)ts8~ytB8F==w-76;{ zECI;Jk|Fpk`)1W$ng&fbc_T#Jcuymf1Fb1QWZ2*^pKKd)WAPei`o&rU$me2NQUcJZ zllf^>&|ZK8e;xpiXpz%hd|3j>E+|U5X@3mjiQ@{n0;Hmp*@6xJV>bm%!wUe8 z!wUe8!wUe8!wUe8!wUe8!waDEqt(?_aSDV1QVd*-rB5aHhe*cm-k$)29~7U&cmTH! zwg4EfTUb~S_jnXlsZ@j^V-Gh0DurZ(DAj`9x3ePhQ!15uM`1bSGI#&t2_%mP6Dl#eX!E-q@W8$no;iKW>ED5gZtu0#B-YU>nGh z$(%G+pD_V!M}`SX5>#xk1(2h$v;)%#O2&m83{majKqoK~$QvLsMvB&21=%3yDs;=W zY|z;W_JzcgYIm008*d<(I#5hY+Fc7nb@5U~nKtn5<=HX=c^(Bc$R1anKYaxFqugFozw z<$lf0+|JI-&de@291e%Wf_zv|LI_nqYO2rw>qku`gi!ggpnrba`x8l<;6Yd3`=tpg;%M}2Eun3?Y9;1Y*-!a>aJ>j!m+oN&3Mn7uPI9_ABwudKtTUP*# zn-~pG4=^b*v|49O&CYZ6Fu`Q9%kItwpV!BD+mtfiGVyIyf!mu)Enl?GN4}@4-pINs z#tHPEV=V_^k$?K(0sW{={qTSwEK=Q#zu1{zJS;*81(3^?@G~ATsL1q8SqJWP?f{Td z{{Iku=k$7i!N~46tc>$vL8a1Jt#>+imgzrJ*_xq@Ihgt6@L`qI_<$x1L1JeEBh zcfcPi5X+vv^WVv~6)=7Y0aEEKsdQEknW@}LHbE}!5&-Zs9)70G)8jqEc^E!I ywpS1=TL6PLz@X$(%7hR?4clN_euu;10C)$2=9}|o5=4Xm0000e;04Xt6I0!qm9#cK?{JFPN&mFn~|pJ(wN`(uygQ)s;X3c1E6!Y9srZ` z?I{9?3)nlISAQQJj#YAr)0Gwg?QD|Nayctx()YnL_Ak6&kpI$z&E*QBohyLNqep~c zxKuUcU?AgPz&;R&>;48VAIkZ@sr^;}BEI+8=-UZ_vXK>lG#l+NibCz#LKp+E*(fHL zkq|caTLFmWiwXHFY`&l|K-=Lp0mKObU~0BISn UfOck0bpQYW07*qoM6N<$f{D$*MF0Q* diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuits/Service/lawyerblack.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuits/Service/lawyerblack.rsi/meta.json index 138aaf3905..31713b5f02 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuits/Service/lawyerblack.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuits/Service/lawyerblack.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/3a72dd925f7d6aeec620fe83bc4f88a3d7e5f693, monkey made by brainfood1183 (github) for ss14", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/8ef1b863b67ed708de551bba5d550b2c6f1d24e1, monkey made by brainfood1183 (github) for ss14", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuits/Service/lawyerblue.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuits/Service/lawyerblue.rsi/equipped-INNERCLOTHING.png index 484aeba84b8ecf12451eec5f9159986f4d44b585..361ae56220a851d74ab061e2dd374e0bb3c80ee5 100644 GIT binary patch delta 1248 zcmV<61Rwjy3G@k&B!2;OQb$4nuFf3k000E8Nkl=xcc)~ym;^k>3i?c8b+~kdW6iUUm#yxh2A%C{>zVnJAvslntwO= zem1A^eX9OP(|;V4F065JC8lBbSp^%XNBrh@pH-m5Mn3r1G=3y zfE2o&Hm;iut z0ALKPF;_jjL~9u3Pk;T@XO`oFXa!FCiDYW5HRycINCc zpkZlNKY!k{7$D|}S-`G8N{Gjnt@uBMiM@b`64NXqUo}6561x>=O>mYleP)Z@CMqNc zB$6p4k}0qxBZ{+7Xn8heI__r|aXTo|_*U;5+{r5{k?YFD;Oi14LLpn04GcA?n)m5*1GlP~!@J^HX9P?Bn!VqQ(^@k|~Qm zYk^)MIe>ZEX(T58|9`?)2#DLT2}+-w1nmh3xP4&>gP`?E4si2!m;<4^(&wm|qN!$z zrhk1uEbdxgB9TZW5{X12kw`u~)J)M#7uL*lVa?pH*34e7$KT4rv;hEmy`H&Wt#Nz2 z*g#rEQ8PtToR(%q3V;3f6J9)cgt9p|wuTopYNlv@8~GO-r$<;=-UI;4`lQo3q8p?s zF{cU8Y)-?%@+Q*H%cv+r%H=#!QHDrAFMnfUdDF2tV$%Ad9g+js{JY*aa9*$R@7bJ& z?Y);IVLxo|y~H0||8Sem>oq$Gm@hNoF!5plV^H6%|ll4%X2ydJ@6A%;3LO`a8I zqE1b%Y|c?HN5)A*Trr|Ta=_m9W4t|hg0}}xP+FSjYjLbl;bKQ68$jh^N3|42Tz@x@ zQCgbkcI|CHCS8x*3)r8$ykMAi-~;!d=-wep)OKu-IpH0b#_yXagIOiVL&U_y@dngIDzk^D-M1 zc029RZl2k|;-A^z<>mp8Nzkn)2w4leCUpqR@ZAdlcT*P-l%^*Kh>2#_bwO^3+Flc| z=fQiJH34oo)eBJY_4eYYK+!KjX?k{mB@9CB0W6vs$hrWDPyPd)*~q<9>Z8Q~0000< KMNUMnLSTaWa$J}I delta 1203 zcmV;k1Wfz%3C9VLB!3BTNLh0L01m_e01m_fl`9S#000DeNklF|82=W! zWUe6QMpooWS%fIe4oaA8*(s1tTBt}Av=BsvkabK0v*=_bgt$xWp+kX(s0f2_52+ws z*42bWSZGZa(!5UZo1Jfbvux|UH-AcIexNh^cJ}?g_j`Z7H-GQ@_JGIX3jiL6F93KP zz5w8H_yT~(;R_)0@R61-1+TFO*PyMfEkNZ{Q&URM{W0}^bvh9MhrsinJk_L^&wiN! zS$@+3AbGg99@euNl{}qJE6~>mFg^}7hYvxhECE%a8unzD;)DpuA1Vu~_xZ+-8NR3Q zphb+|lmOItLVtWB29Zbv22;y$Py0;BKWDE9h5W!ep%8iT*;V~-o_|LHXxQ;YFJ8|> zI2?wi>I%qYGU{hCfd8ExA{6qI4G0{Kg}kEtrbYm&pZcDL+}a{EH(gN6QmK^T`tJ4; z1Una?vbs)x-Yyj5FNWmIq%eO;0chwEIRRCVzg>n)?0=qm|NLY8Wz`?{g%EG^>nUdU-yppc z#36V6<9@d2Y;5~rmr=?Kn1z%8*mzozapeWJ^13MkO}X^S99UgxgatrS1i2#;AqVaN zg(t51qm8;fvJeu0d@O>7A71sn0rLcG6$YnJseg?$ej`NOc#k7flwWEJ5LsH=cz_La zQHCE!L*h)o47&r0k*{qq3uICh-?>qTCLOO@{gApvmS zCApWPoyzS7?*e&PafLzxXp7E{Wlq5f{#`c(?1nD@cpSa};Boi@fXCqr03L@g0C*g} z0Dm$+8XX-~1C|&d#lS^yU%6{9L_9WrZz>r4p!g)l14Qc(769XQ4_|&(??YwtFfx!g zBy+AE>XS)Vgh)3xD>Wb9tC62OLkT@BCKHhs&Jf|_^mq!KH((56gM-j>u~UiVemE*Z zPvrq6!?@12UsVr7vGIo70dOEef(IRkV}Il6h#C(>F>9m0x&oL0;3P070lD->GkYjt zD|0F&d?JJ=u>Ui1f+th9c>%RY)@H#Cgl!DH+v)}}U*JZ^5;%!`PJ(^)2@CM)%@g%X zD=?3SM|;6(AV;{?SjMN#9X!!0RG+W_XF6^fKJy{!p<_wto(4yO9PwY<@kvC!BY)%) zF>IXz17Dlj{}pf&$Wb@~tiUz_3KOZEf-wooI)nwta?x1Yfn{w>i8Bj64X)505y%8a z^k^(agsJ!42$GNue69kbAYyD9!Xp3)nDz=%(~i)s#`89?i$YTY8;{{J85{i9VemM7 z0jyTwhU+WIZP6V{3!uj2wYa>S3oIaka);GCMGKG;;9oSj80@gaUjxA7_ybrfU_j28 R;Hm%s002ovPDHLkV1j0i8$$p9 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuits/Service/lawyerblue.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuits/Service/lawyerblue.rsi/icon.png index a13b6ba003e4c0aad67abb491043f7bc4cb70a73..012d2ee4c00604b3e7945df63a0a36d0745148d1 100644 GIT binary patch delta 439 zcmV;o0Z9Js1JMJJB!2;OQb$4nuFf3k0004tNkle(;;?PDPaff zHowcfo%i;=|2*CdXfzs)MuAMBDy*C<+MTY5?zcN#VdY$rDSuSOx_{TPty0|1I{=hR zCp7It(LUN2P5V%kOD6!>c?VSyu?2(}rbFYhMeXs9=`um>@s7r23&V6&Q^gk$J-wZG z==6u&_6B5jzPRlT==6s~{VH8h>cF$tmG;xXTUpy@4=etS3-ITGw8Jh;mkD|Li<{G5 zadFs+8))TR0e_ISi&(n`@Y9iFw;~I_jqiW#i5EL>{0{t)^rddaira_)Ku)?p5Af#! z2X$ZCQUAXQ2o@tg-e>ary7VdSkM|kDVx%k}p%QGE&PtK<@g9ablj021!N>bQ0m)RF zWGXF(Eh;E$7Xg?ml~)u1VC@=MZiVsdh-4}aARi&sD=-KO*Dxe}<$}csf8uRfIah?k hH+{NN&Zp66G~XFSnvgzielGw3002ovPDHLkV1h%8%_9H+ delta 467 zcmV;^0WAK}1MLHlB!3BTNLh0L01m_e01m_fl`9S#0004>NklY5Qg7? zm0u8IQk;rbImAYYX<~VPRQ`Yz8nF{gLEAKzf{j=ysD*`vMJl6L#zqe8!bJrodPP)H zB-)-gn`}(1b{9jMeVf_Y8+M+VoxMKvSQzdjC#P7+ ztYWwLgoCE9Dj@(~J&CG3y1a*FSx82Q;k~{wzfnEVh!gLE5C9!oe0JN~4A{2aVXw9x zFuOB=%6E;$mwyWok`MqTufCUnXdDszc3~}8^XixO5F~HJ6(KGm0BYx8JmK@hsX|Jc z*_=l1!svvA+)EH1!g|SJ5VWS3Kmf*e8L8w9^V{PfA?a5@bHE`Etq<%!daeB`Kv>ZtrqzI8`B}0o)gdSxidKEkUTXUkM=GthRmd%!x#+ zD_sR>PPiWn67o)P07@?V0;B;rgi~@l_Wt@^1^91i01eP{fFBaEu4kfXDKY>6002ov JPDHLkV1kaa&zk@M diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuits/Service/lawyerblue.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuits/Service/lawyerblue.rsi/meta.json index 138aaf3905..31713b5f02 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuits/Service/lawyerblue.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuits/Service/lawyerblue.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/3a72dd925f7d6aeec620fe83bc4f88a3d7e5f693, monkey made by brainfood1183 (github) for ss14", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/8ef1b863b67ed708de551bba5d550b2c6f1d24e1, monkey made by brainfood1183 (github) for ss14", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuits/Service/lawyergood.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuits/Service/lawyergood.rsi/equipped-INNERCLOTHING.png index 71a9d19cb1d589a6673aa2f051324c48cc595dd2..f4ed2dee7cf4a96eda722dfd410c9d1e5dc13497 100644 GIT binary patch delta 1251 zcmV<91RVRP3HJ$*B!2;OQb$4nuFf3k000EBNklYUZlTCm6@JHkg1J7Q*B;Av$4*-?3406*&@qMe_!181V0Lc33 zK`-1`U-R?X3|z-SnoZ&6&G-F@i5u{|F4AlYI0V=X!$xt<|917eksE>Q0{{bHA03Nx zY>@#d1lJMu-+vqAqDLz$LOgF6IISFDdh-=LuZ!u;S2(R4Aa5AK`D{i!sZk;8bJz?M ze==14D-E!*zUH$T2DjZ2!poB#oZBaun7Dy+`vl9A9WfBM9sIwszBUpgMD?$Ns(MR)2`O=`Bz^C$Mpu%y-!RA*Y0j@3s2y`80o?ik z;5v@@o_m4kbwf{IzHSs=5T~Cj7A|;$+wLG&EGX&sH2}AwU9F*PSt%~Y1r~4L3b{T2 zlr1Y|S8Ji)s}iTraoZj7CqvcmYkZ)MuAs&wsQ2L+tnU*(JPaq)<7_#GW6N zs6Kb^%YWeKDf;9*fV&zHJQ=nyFOFM{W+HijJO)`CpyvSty#_h1e$e&3w zDt&Sgj0PYe*(X10eUbtCSv$!@Xq5US1Mme&$uvW&EZ1=^ELO(Bb?a+18jVJy(P%Up z&3}Ie@(QYCnm*rr{5ks((rgO9e(`ClWSV|bD>ANiZ)e{>w@+}t9rOyQtO`lX;gV_k z^0qXNj)A>nU}xWd{ordPVT6)t`mcZg6ZdxZ{kgpgfWNoLd%MG=F_5;z;x<6p48z=B z1;vL?arpKf<#tLOzI}({!>5?rtHd@(P=B|^Nd^!l=ynIYTifE8%`oAHNpQb?9D3@z zTiaq|Hm+{i52amU8M$2Ud0mpY3ZB=!P?DFS?hlf8g}G>)t1aHXMZF!FI1RaCM1>Tv z?mpS{(`*U=a9TOQ$DKE!n&5)@8SbzT#~K9R*njv{>nCw+S8Mnsa|a(Re*yqFw|`GU zEqqr&8m#;ZMm%F|Sy zuRaD4AA`nT7vREiLc=yHT-O+sQ(;k)@AU;FG5_T;@QhS0%&Mfq1Bnj zMl;dMOxdzheE#z>s8)y6`UCpB30#sQs;SzaH1t~lxSqa%QE4g}Kn^tH?hEQW4oO=z z0F&PWoPSC;NL;@F1!V&O7^*>WSVpC(Yyf!x*HN1L`3p|OxU$o-|I`2g N002ovPDHLkV1nX&QxE_E delta 1171 zcmV;E1Z?~F38x8=B!3BTNLh0L01m_e01m_fl`9S#000D8Nklx`s)K<))kO*xp zm_tA)V(pJVjcG0(Y%dr7y<;U(l*1}6kejgnj^?^+g`2)ur3gwxV zEU5Au768dx&$PnEkDN}TXCA@F%=HCO`jSxKIhY0j*c8Gxdfu=@&&pW$R{G6U) zJsEyO0#N4(>3>JB;qZl4NF)+a&ji5l;kJYP8P>B}gi`);K=J7+!(USXayyY|xDDX$ z=Wh@Sgte|R~3L$h z$9>nkx->Kf8%Oe3ECz`;)4UETPW5WdSs94@ne{Ja-5$$T_^S#qlC6hRheEJ?q7xt< z-!UjZ3X#4(?vkWFVV2cjXTM8lKY|&I)rDXI+u7g3zQw^PrdWOCU#|OEvu;%ZwkD&# z`N?Qe8Gmgz*y&qCLy%gSFO-w}ZQdXBZQcjdP;IB2-IbvHCWtQgF!`1*IwXqIsJ06j zg^~c+d0LTilY60XQiGZAT=6xJ%dxz#c>CTW78ET96Vz+=7ghTa8LQX0}2p0dUbVQf3$I;NNpoz-o8` zfXm?t04|3o0Jt2U0N`?X0)Wfm383<$16Lya6bK{47#g3y-09dKA`$1NW;M(W*i7hW zk$)HukZnU+06kj!i{A&fSK+~mZphKG5tx{ma72ino*wP{&D%UNVu0C@Y0&Kfg^09t zhKLw*!&BgaCV|aO^xC zM)CvE#U#vyLcjz7JApX~?Mq209SF)^k$;8siO_C^!Hh!oWXiH#07qahodzdhW$4|~ zZ4mPXg25oz2{9+Z3P=kOYdOoW7<(Ut-$l=&!^2=VkfYQCD31Wxr%CdFR9b-Whj;o- zK);9~>WjU-n5PGJ0y#3Pp9A;8>jitFyqwhqJglrIV6%b;?Sf)K`56BZ}n3_Uw zgidu{w1L9%^ahCGF%=uUzr)~icmkMhz^Ux8O5A3*LuCPQ(V>mV$pw%=3nAqxszOPC l-RN*RSYd~^27t@)2RP|sVfB5xvF1LOmcB!2;OQb$4nuFf3k0004=Nklosi){u zhla)j-708!&>9&21?~wBE$Y$`)NXDrqR`~zB(+GxgQg~fdkVft1R-$9;Tp=)f>A?~Je002!<$chjaFoS3s`i(Xcl`1BaF%p$3`i(Y-rpcB90IZ56 zIag1@1e>p2u(x$gpB}Nkvy0>RE}U^KK#Cp1D2ddTa-dniwa3=8`Qtes7e!dW;ALo! zX^JB48DcUSBY*7~+N+<>6G3PTI)+i&a<3Huz`N~(cf$h`CYX*!IMk2q#+GTqGELmn z>n>3N!Vc70t%agz7neeLzu}fio}KiW&CPlq^k9D>E`!t|954pU?Ah;52Q0IP0b|kv zq#bZJxjxT-yTaI?9FP(aj7AWQMqu3CF9>pO#lHyv07DY+ft;SecrXx*Mn0Q=T|?O` z2mn$i7J&V)A25bmtL4h*I-gm8RW3`{Qz#UQ4<=rchgIT(1ONa407*qoM6N<$g4u)9 AegFUf delta 447 zcmV;w0YLub1K9(RB!3BTNLh0L01m_e01m_fl`9S#0004tNkl z{{_*jP^;0wIfI*>q?3ydqTtZQI0}W*e?o8(jH{psnn4{bBBTzALuMC$RMA%Htcyd; zJA5(da(7TfxG#jedpYtx?|bhcefVQp01IFNEPw^j0;qakOn+lAQNsP|Vvge@>pSu6 zbyLpQd_M;bDFaY)chW`sr3*1S0C9L04{dMad1*zy7w-k+2m4Wl7wbS69l_0Mgt2KC zVHjdO0iZPmjHCp>)sv{o8oJoHdxhgT=p;RlXbRwO3wRKr365BE|kkLf1E0$q(KlMJURXa z*^?&RZ8RhV&Bh37mF#B ziHrca*~tE*y#pCDh0q3wlB!9RoJWE%vEK-QEzdTdTR56Bx`NsOd=m(OonQb;u6qNt p0T?2Ae#T&`|Mfp$0W3f-^a&zWui=EO361~&002ovPDHLkV1kMp%W41s diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuits/Service/lawyergood.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuits/Service/lawyergood.rsi/meta.json index 98f1cf18e2..31713b5f02 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuits/Service/lawyergood.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuits/Service/lawyergood.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/305131e20cfe53eb41de61db79a99aa12c2925b0, monkey made by brainfood1183 (github) for ss14", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/8ef1b863b67ed708de551bba5d550b2c6f1d24e1, monkey made by brainfood1183 (github) for ss14", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuits/Service/lawyerpurple.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuits/Service/lawyerpurple.rsi/equipped-INNERCLOTHING.png index d935927c5146bb7eca2810d6253377e27efba6a5..9c163e1793648c71263d6511c7d1194cd4a9715a 100644 GIT binary patch delta 1155 zcmV-}1bqAL2$%_wB!2;OQb$4nuFf3k000D1NklVHQEv{#&U}Reh>2{kkH~XP$0|x~l#+ej8@2 zERV*f008re>qxJzbKqp~^NH&KfM{$A87s@r?nNKcr;>TPA&Td`qP{N&WUMStB@+OE zFpD6SOknZOZGU8}EML5H8>wUhVHN=Zq>_oAJ3-bbYwWX5-*hxh49?fYbX>e zn4OtGp;*D()oa3#Qu(l_PH5LZ4^@3%5l|{0qEM`$RD3JWrIHC0iWSH+Q!2haY3I{e zzsUOU?SoU>ytfau^gB8rV`Vwbaz3{!&Qlc3&P;e_AAbPyxm^(*-A2J_`h%en)Q;<( zcD3U=216rS`W+oWo#k`8V$~<{Xlx1#H*bi+)A@&w?hnYa!3Tb0K3Mh&t7 zvd2HQK7WeugQDK3A&xRe}skkVR77OG<5pZ(jOZ74$bDV z_|(-`YW(xmFMKpKhS*RHcGLdq(`i-l;^2?K93blh5ZYAN(O0?!Nc_rh99M?p*sE+~ zZsI4EF1kY2C*-;gN)8~w4@YI;@x98nFv@P)U4I$l7g>K)iUJ*c{~2nB!p&(_wZ(Oj z!`*3ByK=m?11^&G8NZMS_`h)J9iX%bI<2Z$fMn=6==I>N{`;kGFc=I5gTY`h7z~%2 z^y)efDh;kf#>#R^*Q=uZ2A46$U%vVi)A31>w50sq(&DWkUx^FkoZ;-ugs^4d<_$C& zjep>5V2tsd*KfG%y4-bLJ{BA2W3h3bv9jEC-M&PHtVQ}{&(7;NoH5q>4HCr4@*1Y& zlK|k^FOa@>7tfyOdXf?D1kL=j=Q*VB-SzBA0D$TEBvzK!l={?qB~~gQ!rI&tDKc_G z(6_E_67haDRLDXlq29Q;la>I-y)!0yPt5mFc#&EF;RBjeGdFNVCUUuk0xVLk9{2T+!n($jmD?ZEd3$Tm<~o@|ga#ws=_8{6&#GUBg)@_`Rtw&BO`=RNwm8zhu} z2HR88B;K#VlMQy$#)qRa0R7z|fJu%T2N(xjv;h~5_Ja^@kfM6OAx&BU4F-c2{{no6 V&a$%erbPe%002ovPDHLkV1l0QM#}&I delta 1112 zcmV-e1gHC$3GE1wB!3BTNLh0L01m_e01m_fl`9S#000CZNklrhYOWnr0uefR$=KMUV+1RhpqCC_JnhL&i-HKs9x6|J^5UV6AtZDY!j>evcnCxY z6|8l&4U-T=6gI!N{nK-Hbmz^^%%OQ7$eZ`(&HMiUdvE@6`G5Z!3OKX?6mVz(DB#cn zP{5%DpnyXQpfWiUi4@V!&CO9f9uM(&Hk&Q>_4SGCLZJ{MkHGvuU0t0qet39jT&wci z7GUx7QgN{N37wpri2mBf*J4X!Gj0Fap+at_v{+4znD^jL%ykj4?$iE3qc1xxi=oPI zO8_j|-F4gOM}MNt#LlCYfq8C=VCDy8r>o(wD1ez9yBzO{QFeLB5CMIRJ2gUu-wssx zZNCC5t6xORuYmakU>qV~o~pri`NQEb9UUEs-8a7i=;OXB|AhiT#ir|#GUtJgw)Rpm zJl%Z;-^YABSM4b<^Y8EPQ$s_8z_d@ z;Mn5?$Z^3h;JA;rjndfa7)^Ff($waZ3CXP=MHkB%@i`^ z6-GKoD1UmT#2pGqZq)dLkRiW5Af^94zmbOPoU!<2(r@{ z5K49@i)@r1kVVg|WCTC@8243x{{>nA)d%FLYkz0lZMe;^EP&N}=127RieE_p1RXnL zUcn1~9Rn!f&;n4vp#`9TLkmCwhZcYW4lMu$99jU?2jsL<%hiZzn{Jd6rJe1!eEDU_ zwF$fVQeDFKuYXw})ntm20PMV+eMOR#Q{^zsYZ2tajCd?Y>zf;50{|pNJt>foAv+I3 zbAP>nmm-{T{%=i!oDN6JnPj_g6a!!Yl8^n5dyTB@!+ZDX{l^cUi6A=E2t$sKkBy=UFHQi~WD%It4Y>9dfI%;xzo3bU3D05xL>M0*FS_MC zpe%q<6&Ai+cF!tR?l!<-B>-2dsX|!*5Pxw^ARt#~3=a?E1dx{i2Nz~=r3m5xfRY`n zjkyR)0xUgSr0KQkvT-)VuM==yO#(IsDRdPmp8&2AutH|VyV?LoKA)##cha@>9MuO{ zWrC5Vg<)Qcz|PBQd4`khkdgq%2B+icqB$kbscJuxB%BeJYXfA*VWY}=j#6WCI#C>k zZ2jJ%`Sp2UGen7wg!s3-+5!#zYmfpCEdT`^js)Of!>ykIkO5Bq8dL*i0sO27s024` e(XRjn9De{nFFL=H9@B~d0000L`r#X%G@#6ia!(mi7dWS8bY=-Ay1H>RZ-T{?6qIN8A%5tU$QDC*rSm!a@F zq<0vLa1ZSEK5*Rc-uvC}_x=6e?+y$GgTbId##&TD2-R$~)PLReW}~Hq5GrFWs)ycv zh$nF!+iq7aSUCVz?KPT>mhz;pnvIrPwbuYxuyVBBu9k=y9cO@~NKviW6bo5Ceg1;; zW|x=wC6Xeg8w!ZofwtRK)rt*Fsw^+B(CZH<7P9pE1Io)Qgx#rDY^^TDJ_3N#{!wIC zD>l9UfKb@|{eMRnaC&wb*rq)*wPI_3aFFl_AwZnZWrA|n_A@rrk zIJo{t5WqON#+RN}a&4SaT?rwg>)Xlisb{BD*Zvb~onzPAS9=Oz_-n{0xFS89iSE`j z3xM~B@BZHm0L;(jnV-w^eeg9(TF$-(;OEVmZaBRTz~mSJM!^*a7atQ_xgC|B%>dvY gf6$I+Fc=Jf0AdWAlRZ1_sQ>@~07*qoM6N<$f^D4YLjV8( delta 429 zcmV;e0aE^i1jhrAB!3BTNLh0L01m_e01m_fl`9S#0004bNklLRhH%2WmH>i((nI2SFlX+BY&1%O0Fm zBA748n;GBCeCGR9l;Dpg00e*l5C8&z3qVy>g3T%0q~Yve%Hwb={45z@b_nBHOmXahy6!R0kLw56I+wQufhy zbYQ*im^XSDHD7||=Msk9A#F!#M5DLxz&a|vfV!g7IRBUfkGM-Xgs zttXoNHC6wML4QulP0w?2Egr?Qr!R1Fe8g}5+0z%$;%$S{F^fN`VIk@>^hA^YiBR?X zI$&*P*47hER2m8wKHuF#;dK#_$So9J7jeG3#|^186zGX2)@Ejh;sm#TKdAbB9Z)t^ zR2mA(riy&E^ZsG+z;XQMrxfy4=lR3HtuKbYi19J%OMkzo1DN*#pmfm*H5LV})+K-X zZ-1*g&KpJ)cJbqmJX=>!vF0@_u~5&8gNoSjY->XzgC ze(}<0R2mBZ6QSz&99WafOTdHs$N?}OJ-qSx)<%jyd6C@9_4fCR2f**|`x-H*eml{c zUC-CzQGXa`G<|X%z(NgZKbgg;jt|SG8cH1?+8}BJ^g3XmX^>I6Xgb2`*Y8>m1H?Qr z3fT3_riwz{ava6aDGWBZT%*OKZISCazpxX57Vn6&5F91!CYdeVCZCWTkWo!!rW6$F zP9p$Z4~6dIb66}+DQFi(P3Q^mW2K>hB|i!z2Y&$VN^24Ac{Zb(Ks<_!Y9bx81};|o z!jhnSo@Y71PXv;3fC$S6qaOEOh`R2)M8%f_(lLww^3&o`xa;&$l8#x(sHQ`oMW7!@ z4q%@4s>H<4|4#%O0^%`jhNVx=TAc*c3AwVV0*yd+j7^{90I>#e6IvlOMtzQ+%-VV~ zYk#|6hsC({B@&55B9TZW5{cyVLr-Sy-1NMio1V8fxA*N@t;T=?2LGZ2i5`P>`>7 z{?`*t7>}Qjgo9u_eu7_Clia3!wX-nmwQtx9U#r3*;&yqfbx9KUL#uVk`w_f0VyG+A zJ@6*Rg8K$GF}?Y7C$>vBnRlvSCM;XAotF|zd#tXfV(F_q;%07-7Mfm*;Kg^V!yzsU>c%s5Xggu z?a8|-)GZWtB7qI+$Im+v02c2{aN9~I23P&{N6e^9BY7n0NoD}kUws4AaJr-%irm5 z*iVGtkpMJ#!heg*1ax$C!2JBY`JI6MycWUA589u7P<-|Tu|=pU0J$AcwD#aJ6q89v zBoa_87Gc}?P6qJ*=Yk&DDya1Z_o2x(FSAQ0Q^(%O@73}!=Rp(b9+hzD2 zc>oSNQ`(4Jtc&Vs3=WRuvjYcV_TEp{hZJZ14B|Fu0763^R6ply)a(};p!V_0}ENa>#3n2k0#v;i5 z@JV8@NKkTTP%Zv=<&~RkAa4B3B7q>k)D|GJ+<)Q*GYVf#-R?yhe)NVG%I&#mVzF zi6&%)J%Fymaq@IUjTfR=wSn~lh5+CvkbeWY%t>qIg`nycQ3&4%;SKD+3_gwT1fE3! zT!FU`40e>uxP+%+5bFgRFN3cr*CecZHlDBmeV-TDGg>);dEC9V0Dc2GtRBFZ&E=xI zm(bWjSb(wPCwF}3Q`9Fqjl=f|_zK4H{x>%Q7a}h?o~K(NKdpn`K#sP!cjI{`fPb}+ z$}jLmP+mY-fC86|r8h8{q@-K$WpGw|L?E0P;j^)n5vJ7-B1u9v@U;pEK4UC0p0Ecn z0u6L5O`$i!peE1Tz|!)St$>rq^q7nd>gO<>V`Q`5+HK v0@V()Iz<(`)==~U!qw|> z8>?0uX19lE^crTjhgGYMu%D$1OdY7t5B7KO^XPl`ls@vGUBGN31h(G=$Jqwef4t29 z?4uzH@5%vTU#xQ0IdD>q)-uok0; mu4u#`zWVfwIUa|@;rs$b$eK544a1`V0000rX2o4SHg>LD~L31e|Xv^!J z3-_i?_g)g0`z`n0^DgK7&bjBj35;0=zyKHk17HA@0MfIIE`O~jl}E(maUZu=t5x@M zZG-JET6G^3Bn?2pSFIT|+Fi_B5qvpa_vkQ%>zge5ZcX~J5Dp*>xGE4@PjHvJ#eVVt z<#Jh^btMJBvnNrOjq?nei3Fn2D4O;=`reuBB)X?k1t|b>`ec8IGLwqM;?TN%wT#Tx zGwgnk-AAh~<9}KXfP&XP9U$mc00B`2M5aad_s6d+IJ;* zQ39|@@cwdE*e@!<0VufY1SkV=h Date: Fri, 11 Sep 2026 06:31:49 +0700 Subject: [PATCH 110/197] Contraband clearing (#3728) corvax --- .../ru-RU/contraband/contraband-severity.ftl | 2 +- .../Corvax/Entities/Clothing/Neck/pins.yml | 18 +++++++++--------- .../Entities/Objects/Devices/secapartment.yml | 2 +- .../Entities/Clothing/Back/backpacks.yml | 2 +- .../Entities/Clothing/Back/duffel.yml | 4 ++-- .../Entities/Clothing/Back/smuggler.yml | 2 +- .../Prototypes/Entities/Clothing/Head/hats.yml | 8 ++++---- .../Prototypes/Entities/Clothing/Head/misc.yml | 2 +- .../Entities/Clothing/Neck/scarfs.yml | 4 ++-- .../Clothing/OuterClothing/wintercoats.yml | 4 ++-- .../Entities/Clothing/Shoes/boots.yml | 2 +- .../Entities/Clothing/Shoes/magboots.yml | 2 +- .../Uniforms/Jumpsuits/ship_vs_ship.yml | 2 +- .../Clothing/Uniforms/Jumpsuits/special.yml | 10 +++++----- .../Entities/Objects/Devices/pda.yml | 2 +- .../Entities/Objects/Misc/briefcases.yml | 2 +- .../Entities/Objects/Misc/handy_flags.yml | 2 +- .../Objects/Specific/Medical/hypospray.yml | 2 +- .../Entities/Objects/Tools/jetpacks.yml | 2 +- .../Entities/Objects/Tools/toolbox.yml | 2 +- .../Structures/Storage/Closets/big_boxes.yml | 2 +- .../Structures/Wallmounts/Signs/flags.yml | 2 +- 22 files changed, 40 insertions(+), 40 deletions(-) diff --git a/Resources/Locale/ru-RU/contraband/contraband-severity.ftl b/Resources/Locale/ru-RU/contraband/contraband-severity.ftl index 2c80a102a6..4fa96e38d3 100644 --- a/Resources/Locale/ru-RU/contraband/contraband-severity.ftl +++ b/Resources/Locale/ru-RU/contraband/contraband-severity.ftl @@ -46,7 +46,7 @@ contraband-examine-text-Magical = [reagent] [color={ $color }]Этот реагент является крайне незаконной магической контрабандой![/color] } -contraband-examine-text-avoid-carrying-around = [color=red][italic]Вам, вероятно, не стоит носить его с собой без веской причины.[/italic][/color] +contraband-examine-text-avoid-carrying-around = [color=orange][italic]Вам, вероятно, не стоит носить его с собой без причины.(см. КЗ контрабанды)[/italic][/color] contraband-examine-text-in-the-clear = [color=green][italic]Вам ничто не мешает носить это на виду.[/italic][/color] contraband-examinable-verb-text = Легальность diff --git a/Resources/Prototypes/Corvax/Entities/Clothing/Neck/pins.yml b/Resources/Prototypes/Corvax/Entities/Clothing/Neck/pins.yml index 5f7755f08d..86d5eae0c9 100644 --- a/Resources/Prototypes/Corvax/Entities/Clothing/Neck/pins.yml +++ b/Resources/Prototypes/Corvax/Entities/Clothing/Neck/pins.yml @@ -10,7 +10,7 @@ - type: Clothing sprite: Corvax/Clothing/Neck/Misc/pins.rsi equippedPrefix: ath - + - type: entity parent: ClothingNeckPinBase id: ClothingNeckUSSPPin @@ -23,7 +23,7 @@ - type: Clothing sprite: Corvax/Clothing/Neck/Misc/pins.rsi equippedPrefix: comm - + - type: entity parent: ClothingNeckPinBase id: ClothingNeckCorvaxPin @@ -36,7 +36,7 @@ - type: Clothing sprite: Corvax/Clothing/Neck/Misc/pins.rsi equippedPrefix: cor - + - type: entity parent: ClothingNeckPinBase id: ClothingNeckDonkPin @@ -62,8 +62,8 @@ - type: Clothing sprite: Corvax/Clothing/Neck/Misc/pins.rsi equippedPrefix: earth - -- type: entity + +- type: entity parent: ClothingNeckPinBase id: ClothingNeckEchoPin name: comet pin @@ -101,7 +101,7 @@ - type: Clothing sprite: Corvax/Clothing/Neck/Misc/pins.rsi equippedPrefix: logistika - + - type: entity parent: ClothingNeckPinBase id: ClothingNeckMainPin @@ -114,7 +114,7 @@ - type: Clothing sprite: Corvax/Clothing/Neck/Misc/pins.rsi equippedPrefix: main - + - type: entity parent: ClothingNeckPinBase id: ClothingNeckDeForestPin @@ -166,7 +166,7 @@ - type: Clothing sprite: Corvax/Clothing/Neck/Misc/pins.rsi equippedPrefix: neb - + - type: entity parent: ClothingNeckPinBase id: ClothingNeckNovaPin @@ -181,7 +181,7 @@ equippedPrefix: nova - type: entity - parent: ClothingNeckPinBase + parent: [BaseCorvaxContraband131, ClothingNeckPinBase] id: ClothingNeckSyndicakePin name: Syndicake pin description: The pin of Syndicakes, on backside have a little numbers "2559". diff --git a/Resources/Prototypes/Corvax/Entities/Objects/Devices/secapartment.yml b/Resources/Prototypes/Corvax/Entities/Objects/Devices/secapartment.yml index 1835d022f6..c50678676d 100644 --- a/Resources/Prototypes/Corvax/Entities/Objects/Devices/secapartment.yml +++ b/Resources/Prototypes/Corvax/Entities/Objects/Devices/secapartment.yml @@ -1,5 +1,5 @@ - type: entity - parent: BaseItem + parent: [ BaseCorvaxContraband433DepartmentsCommandSecurity, BaseItem ] id: SecApartmentTabletUnpowered name: SecApartment handheld tablet description: "A NanoTrasen-approved device for organizing and coordinating the actions of security personnel at corporate facilities." diff --git a/Resources/Prototypes/Entities/Clothing/Back/backpacks.yml b/Resources/Prototypes/Entities/Clothing/Back/backpacks.yml index 0927dfd470..93442055b4 100644 --- a/Resources/Prototypes/Entities/Clothing/Back/backpacks.yml +++ b/Resources/Prototypes/Entities/Clothing/Back/backpacks.yml @@ -287,7 +287,7 @@ #Syndicate - type: entity - parent: [ClothingBackpack, BaseSyndicateContraband] + parent: [ClothingBackpack] # Corvax-Contraband BaseSyndicateContraband id: ClothingBackpackSyndicate name: syndicate backpack description: diff --git a/Resources/Prototypes/Entities/Clothing/Back/duffel.yml b/Resources/Prototypes/Entities/Clothing/Back/duffel.yml index 4c15bb4377..a644f8bab8 100644 --- a/Resources/Prototypes/Entities/Clothing/Back/duffel.yml +++ b/Resources/Prototypes/Entities/Clothing/Back/duffel.yml @@ -163,7 +163,7 @@ sprite: Clothing/Back/Duffels/salvage.rsi - type: entity - parent: [ClothingBackpackDuffel, BaseSyndicateContraband] + parent: [ClothingBackpackDuffel] # Corvax-Contraband BaseSyndicateContraband id: ClothingBackpackDuffelSyndicate name: syndicate duffel bag description: A large duffel bag for holding various traitor goods. @@ -177,7 +177,7 @@ - 0,0,8,4 - type: entity - parent: [ ClothingBackpackDuffelSyndicate, BaseSyndicateContraband ] + parent: [ ClothingBackpackDuffelSyndicate ] # Corvax-Contraband BaseSyndicateContraband id: ClothingBackpackDuffelSyndicateBundle abstract: true components: diff --git a/Resources/Prototypes/Entities/Clothing/Back/smuggler.yml b/Resources/Prototypes/Entities/Clothing/Back/smuggler.yml index 5df747a949..7ead6f09ca 100644 --- a/Resources/Prototypes/Entities/Clothing/Back/smuggler.yml +++ b/Resources/Prototypes/Entities/Clothing/Back/smuggler.yml @@ -40,7 +40,7 @@ state: icon - type: entity - parent: [ BaseSubfloorAnchorStorage, ClothingBackpackSatchel, BaseMinorContraband ] + parent: [ BaseSubfloorAnchorStorage, ClothingBackpackSatchel ] # Corvax-Contraband BaseMinorContraband id: ClothingBackpackSatchelSmugglerUnanchored name: smuggler's satchel suffix: Empty, Unanchored diff --git a/Resources/Prototypes/Entities/Clothing/Head/hats.yml b/Resources/Prototypes/Entities/Clothing/Head/hats.yml index 3ad37fe77f..beb4181846 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/hats.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/hats.yml @@ -860,7 +860,7 @@ sprite: Clothing/Head/Hats/truckershat.rsi - type: entity - parent: [ ClothingHeadBase, BaseSyndicateContraband ] + parent: [ ClothingHeadBase] # Corvax-Contraband BaseSyndicateContraband id: ClothingHeadPyjamaSyndicateBlack name: syndicate black pyjama hat description: For keeping that traitor head of yours warm. @@ -876,7 +876,7 @@ HeadSide : HEAD - type: entity - parent: [ ClothingHeadBase, BaseSyndicateContraband ] + parent: [ ClothingHeadBase] # Corvax-Contraband BaseSyndicateContraband id: ClothingHeadPyjamaSyndicatePink name: syndicate pink pyjama hat description: For keeping that traitor head of yours warm. @@ -892,7 +892,7 @@ HeadSide : HEAD - type: entity - parent: [ ClothingHeadBase, BaseSyndicateContraband ] + parent: [ ClothingHeadBase] # Corvax-Contraband BaseSyndicateContraband id: ClothingHeadPyjamaSyndicateRed name: syndicate red pyjama hat description: For keeping that traitor head of yours warm. @@ -1096,7 +1096,7 @@ Caustic: 0.95 - type: entity - parent: [ClothingHeadBase, BaseSyndicateContraband] + parent: [ClothingHeadBase] # Corvax-Contraband BaseSyndicateContraband id: ClothingHeadHatSyndie name: syndicate hat description: A souvenir hat from "Syndieland", their production has already been closed. diff --git a/Resources/Prototypes/Entities/Clothing/Head/misc.yml b/Resources/Prototypes/Entities/Clothing/Head/misc.yml index 79f3df6a8d..31a848ff06 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/misc.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/misc.yml @@ -219,7 +219,7 @@ relayAccent: true - type: entity - parent: [ ClothingHeadBase, BaseSyndicateContraband ] + parent: [ ClothingHeadBase ] # Corvax-Contraband BaseSyndicateContraband id: ClothingHeadHatCatEars name: cat ears description: "NYAH!" diff --git a/Resources/Prototypes/Entities/Clothing/Neck/scarfs.yml b/Resources/Prototypes/Entities/Clothing/Neck/scarfs.yml index fe037a888f..85bfa47dbe 100644 --- a/Resources/Prototypes/Entities/Clothing/Neck/scarfs.yml +++ b/Resources/Prototypes/Entities/Clothing/Neck/scarfs.yml @@ -87,7 +87,7 @@ sprite: Clothing/Neck/Scarfs/purple.rsi - type: entity - parent: [ ClothingScarfBase, BaseSyndicateContraband ] + parent: [ ClothingScarfBase ] # Corvax-Contraband BaseSyndicateContraband id: ClothingNeckScarfStripedSyndieGreen name: striped syndicate green scarf description: A stylish striped syndicate green scarf. The perfect winter accessory for those with a keen fashion sense, and those who are in the mood to steal something. @@ -100,7 +100,7 @@ price: 500 - type: entity - parent: [ ClothingScarfBase, BaseSyndicateContraband ] + parent: [ ClothingScarfBase ] # Corvax-Contraband BaseSyndicateContraband id: ClothingNeckScarfStripedSyndieRed name: striped syndicate red scarf description: A stylish striped syndicate red scarf. The perfect winter accessory for those with a keen fashion sense, and those who are in the mood to steal something. diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml index 0a06ba3fa2..895fcb9cfa 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml @@ -756,7 +756,7 @@ clothingPrototype: ClothingHeadHatHoodWinterWarden - type: entity - parent: [ClothingOuterWinterCoatToggleable, BaseSyndicateContraband] + parent: [ClothingOuterWinterCoatToggleable] # Corvax-Contraband BaseSyndicateContraband id: ClothingOuterWinterSyndieCap name: syndicate's winter coat description: "The syndicate's winter coat is made of durable fabric, with gilded patterns, and coarse wool." @@ -795,7 +795,7 @@ ############################################################## - type: entity - parent: [ClothingOuterWinterCoatToggleable, BaseSyndicateContraband] + parent: [ClothingOuterWinterCoatToggleable] # Corvax-Contraband BaseSyndicateContraband id: ClothingOuterWinterSyndie name: syndicate's winter coat description: Insulated winter coat, looks like a merch from "Syndieland". diff --git a/Resources/Prototypes/Entities/Clothing/Shoes/boots.yml b/Resources/Prototypes/Entities/Clothing/Shoes/boots.yml index 44027e7c9b..914166cf63 100644 --- a/Resources/Prototypes/Entities/Clothing/Shoes/boots.yml +++ b/Resources/Prototypes/Entities/Clothing/Shoes/boots.yml @@ -168,7 +168,7 @@ sprite: Clothing/Shoes/Boots/winterbootssec.rsi - type: entity - parent: [ClothingShoesBaseWinterBoots, BaseSyndicateContraband] + parent: [ClothingShoesBaseWinterBoots] # Corvax-Contraband BaseSyndicateContraband id: ClothingShoesBootsWinterSyndicate name: syndicate's winter boots description: Durable heavy boots, looks like merch from "Syndieland". diff --git a/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml b/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml index 55d86208c6..450eb36d19 100644 --- a/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml +++ b/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml @@ -88,7 +88,7 @@ price: 3000 - type: entity - parent: [ClothingShoesBootsMagBase, BaseJetpack, BaseSyndicateContraband] + parent: [ClothingShoesBootsMagBase, BaseJetpack] # Corvax-Contraband BaseSyndicateContraband id: ClothingShoesBootsMagSyndie name: blood-red magboots description: Reverse-engineered from ERT magboots, they have a heavy magnetic pull and integrated thrusters. It can hold 0.75 L of gas. diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/Jumpsuits/ship_vs_ship.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/Jumpsuits/ship_vs_ship.yml index 406faaacbc..5b148e55f2 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/Jumpsuits/ship_vs_ship.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/Jumpsuits/ship_vs_ship.yml @@ -15,7 +15,7 @@ sprite: Clothing/Uniforms/Jumpsuits/ShipVsShip/recruit_nt.rsi - type: entity - parent: [ ClothingUniformBase, BaseSyndicateContraband ] + parent: [ ClothingUniformBase] # Corvax-Contraband BaseSyndicateContraband id: ClothingUniformJumpsuitRecruitSyndie name: syndicate recruit jumpsuit description: A dubious, dark-grey jumpsuit. As if passengers weren't dubious enough already. diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/Jumpsuits/special.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/Jumpsuits/special.yml index 370ad2fed6..a9e5ad9547 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/Jumpsuits/special.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/Jumpsuits/special.yml @@ -1,5 +1,5 @@ - type: entity - parent: [UnsensoredClothingUniformBase, BaseSyndicateContraband] + parent: [UnsensoredClothingUniformBase] # Corvax-Contraband BaseSyndicateContraband id: ClothingUniformJumpsuitPyjamaSyndicateBlack name: black syndicate pyjamas description: For those long nights in perma. @@ -10,7 +10,7 @@ sprite: Clothing/Uniforms/Jumpsuits/Special/pyjamasyndicateblack.rsi - type: entity - parent: [UnsensoredClothingUniformBase, BaseSyndicateContraband] + parent: [UnsensoredClothingUniformBase] # Corvax-Contraband BaseSyndicateContraband id: ClothingUniformJumpsuitPyjamaSyndicatePink name: pink syndicate pyjamas description: For those long nights in perma. @@ -21,7 +21,7 @@ sprite: Clothing/Uniforms/Jumpsuits/Special/pyjamasyndicatepink.rsi - type: entity - parent: [UnsensoredClothingUniformBase, BaseSyndicateContraband] + parent: [UnsensoredClothingUniformBase] # Corvax-Contraband BaseSyndicateContraband id: ClothingUniformJumpsuitPyjamaSyndicateRed name: red syndicate pyjamas description: For those long nights in perma. @@ -32,7 +32,7 @@ sprite: Clothing/Uniforms/Jumpsuits/Special/pyjamasyndicatered.rsi - type: entity - parent: [UnsensoredClothingUniformBase, BaseSyndicateContraband] + parent: [UnsensoredClothingUniformBase] # Corvax-Contraband BaseSyndicateContraband id: ClothingUniformJumpsuitOperative name: operative jumpsuit description: Uniform for elite syndicate operatives performing tactical operations in deep space. @@ -95,7 +95,7 @@ relayAccent: true - type: entity - parent: [ClothingUniformBase, BaseSyndicateContraband] + parent: [ClothingUniformBase] # Corvax-Contraband BaseSyndicateContraband id: ClothingUniformJumpsuitSyndieFormal name: syndicate formal suit description: "The syndicate's uniform is made in an elegant style, it's even a pity to do dirty tricks in this." diff --git a/Resources/Prototypes/Entities/Objects/Devices/pda.yml b/Resources/Prototypes/Entities/Objects/Devices/pda.yml index 542900554f..6016b241ba 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/pda.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/pda.yml @@ -1165,7 +1165,7 @@ - DoorBumpOpener - type: entity - parent: [ BasePDA, BaseSyndicateContraband ] + parent: [ BasePDA ] # Corvax-Contraband BaseSyndicateContraband id: SyndiPDA name: syndicate PDA description: Ok, time to be a productive member of- oh cool I'm a bad guy time to kill people! diff --git a/Resources/Prototypes/Entities/Objects/Misc/briefcases.yml b/Resources/Prototypes/Entities/Objects/Misc/briefcases.yml index acb253219f..22a3427a18 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/briefcases.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/briefcases.yml @@ -34,7 +34,7 @@ size: Huge - type: entity - parent: [BriefcaseBase, BaseSyndicateContraband] + parent: [BriefcaseBase] # Corvax-Contraband BaseSyndicateContraband id: BriefcaseWeapon name: secure weapon case suffix: Gun, Empty diff --git a/Resources/Prototypes/Entities/Objects/Misc/handy_flags.yml b/Resources/Prototypes/Entities/Objects/Misc/handy_flags.yml index 6df1a39dc8..4f1edfde1c 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/handy_flags.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/handy_flags.yml @@ -23,7 +23,7 @@ sprite: Objects/Misc/Handy_Flags/NT_handy_flag.rsi - type: entity - parent: [BaseItem, BaseSyndicateContraband] + parent: [BaseCorvaxContraband131, BaseItem] # Corvax-Contraband BaseSyndicateContraband id: SyndieHandyFlag name: syndicate handheld flag description: "For truly rebellious patriots. Death to NT!" diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml index e8504b1f02..00fa9b3aec 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml @@ -539,7 +539,7 @@ - type: entity abstract: true - parent: [SolutionToolSmall, ChemicalMedipen, BaseSyndicateContraband] + parent: [SolutionToolSmall, ChemicalMedipen] # Corvax-Contraband BaseSyndicateContraband id: SyndicateMedipen # Interdyne gets more capacity - type: entity diff --git a/Resources/Prototypes/Entities/Objects/Tools/jetpacks.yml b/Resources/Prototypes/Entities/Objects/Tools/jetpacks.yml index eca7f43725..f1e7d49328 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/jetpacks.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/jetpacks.yml @@ -116,7 +116,7 @@ #Empty black - type: entity id: JetpackBlack - parent: [BaseJetpack, BaseSyndicateContraband] + parent: [BaseJetpack] # Corvax-Contraband BaseSyndicateContraband name: jetpack suffix: Empty components: diff --git a/Resources/Prototypes/Entities/Objects/Tools/toolbox.yml b/Resources/Prototypes/Entities/Objects/Tools/toolbox.yml index 194dcd8827..0303c7d685 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/toolbox.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/toolbox.yml @@ -116,7 +116,7 @@ - type: entity name: suspicious toolbox - parent: [ToolboxBase, BaseSyndicateContraband] + parent: [ToolboxBase] # Corvax-Contraband BaseSyndicateContraband id: ToolboxSyndicate description: A sinister looking toolbox filled with elite syndicate tools. components: diff --git a/Resources/Prototypes/Entities/Structures/Storage/Closets/big_boxes.yml b/Resources/Prototypes/Entities/Structures/Storage/Closets/big_boxes.yml index 9607da0341..5c3287faf7 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Closets/big_boxes.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Closets/big_boxes.yml @@ -83,7 +83,7 @@ - type: entity id: StealthBox suffix: stealth - parent: [BaseCorvaxContraband435, BaseBigBox] # Corvax-Contraband + parent: BaseBigBox description: Kept ya waiting, huh? components: - type: Damageable diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/flags.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/flags.yml index e081ac23d7..82a4e146ae 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/flags.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/flags.yml @@ -27,7 +27,7 @@ state: NT_flag - type: entity - parent: BaseFlag + parent: [BaseCorvaxContraband131, BaseFlag] # Corvax-Contraband id: SyndieFlag name: syndicate flag description: Smells bloody. Death to NT! From 77fcab910dc3dde4f4fa230a25deae1d90898c59 Mon Sep 17 00:00:00 2001 From: Emisse <99158783+Emisse@users.noreply.github.com> Date: Fri, 11 Sep 2026 03:53:25 +0000 Subject: [PATCH 111/197] bagel update (#45972) * bagel update * cargo docks --- Resources/Maps/bagel.yml | 461 +++++++++++++++++++++++++-------------- 1 file changed, 296 insertions(+), 165 deletions(-) diff --git a/Resources/Maps/bagel.yml b/Resources/Maps/bagel.yml index 6a4ae45417..5f6b855892 100644 --- a/Resources/Maps/bagel.yml +++ b/Resources/Maps/bagel.yml @@ -4,8 +4,8 @@ meta: engineVersion: 289.0.0 forkId: "" forkVersion: "" - time: 09/09/2026 17:22:54 - entityCount: 25864 + time: 09/10/2026 21:27:00 + entityCount: 25873 maps: - 943 grids: @@ -13,17 +13,8 @@ grids: - 7536 orphans: [] nullspace: -- 24129 -- 24130 -- 24131 -- 24132 -- 24133 -- 24134 -- 24135 -- 24136 -- 24138 -- 24142 -- 24271 +- 13184 +- 13760 - 24275 - 24276 - 24283 @@ -82,6 +73,15 @@ nullspace: - 24536 - 24537 - 24646 +- 24647 +- 24648 +- 24649 +- 24650 +- 24651 +- 24652 +- 24653 +- 24654 +- 24655 tilemap: 0: Space 1: FloorArcadeBlue @@ -3326,17 +3326,8 @@ entities: chunkHistory: {} - type: ChunkContainer chunkEntities: - - 24129 - - 24130 - - 24131 - - 24132 - - 24133 - - 24134 - - 24135 - - 24136 - - 24138 - - 24142 - - 24271 + - 13184 + - 13760 - 24275 - 24276 - 24283 @@ -3393,6 +3384,15 @@ entities: - 24534 - 24535 - 24536 + - 24537 + - 24646 + - 24647 + - 24648 + - 24649 + - 24650 + - 24651 + - 24652 + - 24653 - type: GridSplitNode - uid: 943 components: @@ -3532,8 +3532,8 @@ entities: chunkHistory: {} - type: ChunkContainer chunkEntities: - - 24537 - - 24646 + - 24654 + - 24655 - type: GridSplitNode - proto: AcousticGuitarInstrument entities: @@ -5770,6 +5770,19 @@ entities: pos: -24.5,-34.5 - proto: AirlockExternalGlassCargoLocked entities: + - uid: 8251 + components: + - type: Transform + parent: 60 + rot: 1.5707963267948966 rad + pos: 57.5,14.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 6768: + - - DoorStatus + - Close - uid: 8358 components: - type: Transform @@ -5800,18 +5813,19 @@ entities: 19006: - - DoorStatus - DoorBolt - - uid: 13183 - components: - - type: Transform - parent: 60 - rot: 1.5707963267948966 rad - pos: 57.5,14.5 - - uid: 13184 + - uid: 13181 components: - type: Transform parent: 60 rot: 1.5707963267948966 rad pos: 57.5,12.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 5477: + - - DoorStatus + - Close - proto: AirlockExternalGlassEngineeringLocked entities: - uid: 3334 @@ -6259,6 +6273,34 @@ entities: parent: 60 rot: -1.5707963267948966 rad pos: -5.5,-63.5 +- proto: AirlockExternalGlassShuttleCargo + entities: + - uid: 5477 + components: + - type: Transform + parent: 60 + rot: 1.5707963267948966 rad + pos: 59.5,12.5 + - type: DeviceLinkSource + linkedPorts: + 13181: + - - DoorStatus + - Close + - type: DeviceLinkSink + invokeCounter: 1 + - uid: 6768 + components: + - type: Transform + parent: 60 + rot: 1.5707963267948966 rad + pos: 59.5,14.5 + - type: DeviceLinkSource + linkedPorts: + 8251: + - - DoorStatus + - Close + - type: DeviceLinkSink + invokeCounter: 1 - proto: AirlockExternalGlassShuttleEmergencyLocked entities: - uid: 6372 @@ -6417,18 +6459,6 @@ entities: parent: 60 rot: 1.5707963267948966 rad pos: 58.5,39.5 - - uid: 13181 - components: - - type: Transform - parent: 60 - rot: 1.5707963267948966 rad - pos: 59.5,12.5 - - uid: 13182 - components: - - type: Transform - parent: 60 - rot: 1.5707963267948966 rad - pos: 59.5,14.5 - proto: AirlockExternalGlassShuttleSyndicateLocked entities: - uid: 8108 @@ -9218,12 +9248,6 @@ entities: parent: 60 rot: 1.5707963267948966 rad pos: 6.5,-70.5 - - uid: 5477 - components: - - type: Transform - parent: 60 - rot: 1.5707963267948966 rad - pos: 59.5,14.5 - uid: 5779 components: - type: Transform @@ -9236,12 +9260,6 @@ entities: parent: 7536 rot: 3.141592653589793 rad pos: -11.5,-0.5 - - uid: 6768 - components: - - type: Transform - parent: 60 - rot: 1.5707963267948966 rad - pos: 59.5,12.5 - uid: 7581 components: - type: Transform @@ -12091,11 +12109,6 @@ entities: - type: Transform parent: 60 pos: -6.5,-17.5 - - uid: 13760 - components: - - type: Transform - parent: 60 - pos: 47.5,16.5 - uid: 14632 components: - type: Transform @@ -13159,6 +13172,13 @@ entities: - type: Transform parent: 60 pos: -58.50381,1.496242 +- proto: BoxFolderYellowThreePapers + entities: + - uid: 24136 + components: + - type: Transform + parent: 60 + pos: 40.549213,9.608847 - proto: BoxLatexGloves entities: - uid: 261 @@ -46848,6 +46868,13 @@ entities: - type: Transform parent: 60 pos: 51.5,6.5 +- proto: CargoTelepad + entities: + - uid: 24129 + components: + - type: Transform + parent: 60 + pos: 50.5,8.5 - proto: Carpet entities: - uid: 309 @@ -54668,18 +54695,6 @@ entities: parent: 60 rot: 1.5707963267948966 rad pos: 29.5,-5.5 - - uid: 20080 - components: - - type: Transform - parent: 60 - rot: -1.5707963267948966 rad - pos: 41.5,10.5 - - uid: 20081 - components: - - type: Transform - parent: 60 - rot: -1.5707963267948966 rad - pos: 41.5,11.5 - uid: 21025 components: - type: Transform @@ -55824,7 +55839,7 @@ entities: pos: 34.480053,51.56334 - proto: ChunkEntity entities: - - uid: 24129 + - uid: 13184 components: - type: ChunkEntity root: 60 @@ -56017,7 +56032,7 @@ entities: cleanable: True decals: 6488: -8.215054,-20.979568 - - uid: 24130 + - uid: 13760 components: - type: ChunkEntity root: 60 @@ -56240,7 +56255,7 @@ entities: 3697: 13,-27 3698: 14,-27 3699: 15,-27 - - uid: 24131 + - uid: 24275 components: - type: ChunkEntity root: 60 @@ -56387,7 +56402,7 @@ entities: color: '#A46106FF' decals: 3499: 26,-41 - - uid: 24132 + - uid: 24276 components: - type: ChunkEntity root: 60 @@ -56805,7 +56820,7 @@ entities: cleanable: True decals: 2899: 35,-29 - - uid: 24133 + - uid: 24283 components: - type: ChunkEntity root: 60 @@ -56969,7 +56984,7 @@ entities: 3181: 40.159973,-45.371067 3182: 39.909973,-44.996067 3183: 40.191223,-44.621067 - - uid: 24134 + - uid: 24284 components: - type: ChunkEntity root: 60 @@ -57086,7 +57101,7 @@ entities: cleanable: True decals: 609: 19,-8 - - uid: 24135 + - uid: 24286 components: - type: ChunkEntity root: 60 @@ -57303,7 +57318,7 @@ entities: cleanable: True decals: 2401: 32.02958,-5.0098457 - - uid: 24136 + - uid: 24294 components: - type: ChunkEntity root: 60 @@ -57693,7 +57708,7 @@ entities: color: '#FFFFFFFF' decals: 811: -42,8 - - uid: 24138 + - uid: 24299 components: - type: ChunkEntity root: 60 @@ -57973,7 +57988,7 @@ entities: 5363: -11,14 5364: -10,14 5365: -9,14 - - uid: 24142 + - uid: 24310 components: - type: ChunkEntity root: 60 @@ -58273,7 +58288,7 @@ entities: 571: 24,15 572: 23,15 573: 22,15 - - uid: 24271 + - uid: 24333 components: - type: ChunkEntity root: 60 @@ -58521,7 +58536,7 @@ entities: decals: 3650: 13,20 3651: 12,20 - - uid: 24275 + - uid: 24334 components: - type: ChunkEntity root: 60 @@ -58861,7 +58876,7 @@ entities: color: '#FFFFFFFF' decals: 1762: 15,6 - - uid: 24276 + - uid: 24337 components: - type: ChunkEntity root: 60 @@ -59042,7 +59057,7 @@ entities: cleanable: True decals: 2698: 9.979055,-45.00161 - - uid: 24283 + - uid: 24350 components: - type: ChunkEntity root: 60 @@ -59197,7 +59212,7 @@ entities: 3703: 19,-27 3704: 20,-27 3705: 21,-27 - - uid: 24284 + - uid: 24352 components: - type: ChunkEntity root: 60 @@ -59319,7 +59334,7 @@ entities: cleanable: True decals: 2617: -10.991777,-32.08159 - - uid: 24286 + - uid: 24353 components: - type: ChunkEntity root: 60 @@ -59377,7 +59392,7 @@ entities: cleanable: True decals: 138: -45,-35 - - uid: 24294 + - uid: 24365 components: - type: ChunkEntity root: 60 @@ -59422,7 +59437,7 @@ entities: cleanable: True decals: 2415: -49,-31 - - uid: 24299 + - uid: 24428 components: - type: ChunkEntity root: 60 @@ -59732,7 +59747,7 @@ entities: decals: 2046: -47,-16 2047: -46,-16 - - uid: 24310 + - uid: 24429 components: - type: ChunkEntity root: 60 @@ -59895,7 +59910,7 @@ entities: cleanable: True decals: 2505: -45.397133,-31.934364 - - uid: 24333 + - uid: 24430 components: - type: ChunkEntity root: 60 @@ -60197,7 +60212,7 @@ entities: 776: -23,19 777: -23,20 778: -23,21 - - uid: 24334 + - uid: 24431 components: - type: ChunkEntity root: 60 @@ -60564,7 +60579,7 @@ entities: 5360: -7,16 5361: -7,17 5362: -7,18 - - uid: 24337 + - uid: 24432 components: - type: ChunkEntity root: 60 @@ -60662,7 +60677,7 @@ entities: color: '#FFFFFFFF' decals: 2995: -41,25 - - uid: 24350 + - uid: 24433 components: - type: ChunkEntity root: 60 @@ -60738,7 +60753,7 @@ entities: color: '#3EB38896' decals: 3959: -62.042515,28.021345 - - uid: 24352 + - uid: 24436 components: - type: ChunkEntity root: 60 @@ -60855,7 +60870,7 @@ entities: 2474: 51.849873,-9.726813 2475: 52.084248,-9.383063 2476: 51.849873,-9.070563 - - uid: 24353 + - uid: 24439 components: - type: ChunkEntity root: 60 @@ -61069,7 +61084,7 @@ entities: angle: 1.5707963267948966 rad decals: 565: 56,10 - - uid: 24365 + - uid: 24440 components: - type: ChunkEntity root: 60 @@ -61102,7 +61117,6 @@ entities: 3111: 47,2 3115: 46,2 3116: 40,2 - 3132: 41,8 3133: 40,9 3134: 39,8 3135: 41,13 @@ -61116,8 +61130,13 @@ entities: color: '#FFFFFFFF' angle: -1.5707963267948966 rad decals: - 4129: 41,7 + 8: 41,7 4130: 43,5 + - node: + id: Arrows + color: '#FFFFFFFF' + decals: + 9: 41,11 - node: id: Arrows color: '#FFFFFFFF' @@ -61128,6 +61147,8 @@ entities: id: Bot color: '#FFFFFFFF' decals: + 4: 41,10 + 5: 41,9 2321: 47,14 2366: 36,4 2893: 45,10 @@ -61164,6 +61185,7 @@ entities: id: Delivery color: '#FFFFFFFF' decals: + 6: 41,8 3061: 38,1 4141: 40,5 4575: 46,0 @@ -61232,10 +61254,10 @@ entities: id: HalfTileOverlayGreyscale90 color: '#A4610696' decals: - 531: 41,7 - 532: 41,8 - 533: 41,9 - 534: 41,10 + 0: 41,7 + 1: 41,8 + 2: 41,9 + 3: 41,10 544: 46,6 545: 46,7 546: 46,8 @@ -61276,7 +61298,7 @@ entities: id: QuarterTileOverlayGreyscale180 color: '#A4610696' decals: - 625: 41,11 + 7: 41,11 638: 34,7 639: 33,7 640: 32,7 @@ -61348,7 +61370,7 @@ entities: 2886: 43,12 2887: 44,12 2888: 45,12 - - uid: 24428 + - uid: 24441 components: - type: ChunkEntity root: 60 @@ -61539,7 +61561,7 @@ entities: color: '#FFFFFFFF' decals: 3584: -15,-52 - - uid: 24429 + - uid: 24443 components: - type: ChunkEntity root: 60 @@ -61581,7 +61603,7 @@ entities: 1051: -20,-56 1052: -20,-55 1053: -20,-54 - - uid: 24430 + - uid: 24445 components: - type: ChunkEntity root: 60 @@ -61726,7 +61748,7 @@ entities: 3542: 5,-56 3543: 5,-55 3544: 5,-54 - - uid: 24431 + - uid: 24446 components: - type: ChunkEntity root: 60 @@ -61932,7 +61954,7 @@ entities: color: '#FFFFFFFF' decals: 1048: -1,-78 - - uid: 24432 + - uid: 24447 components: - type: ChunkEntity root: 60 @@ -62121,7 +62143,7 @@ entities: decals: 1046: 0,-78 1047: 1,-78 - - uid: 24433 + - uid: 24448 components: - type: ChunkEntity root: 60 @@ -62313,7 +62335,7 @@ entities: 4245: 19,23 4246: 19,24 4292: 19,25 - - uid: 24436 + - uid: 24450 components: - type: ChunkEntity root: 60 @@ -62592,7 +62614,7 @@ entities: cleanable: True decals: 2471: 36.93115,20.930944 - - uid: 24439 + - uid: 24512 components: - type: ChunkEntity root: 60 @@ -62810,7 +62832,7 @@ entities: 4251: 53,27 4252: 54,27 4253: 55,27 - - uid: 24440 + - uid: 24513 components: - type: ChunkEntity root: 60 @@ -62994,7 +63016,7 @@ entities: 435: -11,36 436: -12,36 437: -13,36 - - uid: 24441 + - uid: 24514 components: - type: ChunkEntity root: 60 @@ -63082,7 +63104,7 @@ entities: color: '#FFFFFFFF' decals: 2: 48,-33 - - uid: 24443 + - uid: 24515 components: - type: ChunkEntity root: 60 @@ -63129,7 +63151,7 @@ entities: cleanable: True decals: 2504: -51.97618,-34.20235 - - uid: 24445 + - uid: 24516 components: - type: ChunkEntity root: 60 @@ -63227,7 +63249,7 @@ entities: 4399: 36,41 4400: 36,42 4401: 36,43 - - uid: 24446 + - uid: 24517 components: - type: ChunkEntity root: 60 @@ -63328,7 +63350,7 @@ entities: 4390: 56,41 4391: 56,42 4392: 56,43 - - uid: 24447 + - uid: 24518 components: - type: ChunkEntity root: 60 @@ -63368,7 +63390,7 @@ entities: decals: 4473: 56,49 4474: 56,50 - - uid: 24448 + - uid: 24519 components: - type: ChunkEntity root: 60 @@ -63573,7 +63595,7 @@ entities: 1536: -58,2 1537: -59,2 1538: -60,2 - - uid: 24450 + - uid: 24520 components: - type: ChunkEntity root: 60 @@ -63595,7 +63617,7 @@ entities: 3287: -40,40 3288: -40,42 3289: -40,44 - - uid: 24512 + - uid: 24521 components: - type: ChunkEntity root: 60 @@ -63758,7 +63780,7 @@ entities: 445: -21,36 446: -22,36 447: -23,36 - - uid: 24513 + - uid: 24522 components: - type: ChunkEntity root: 60 @@ -63979,7 +64001,7 @@ entities: decals: 7200: -31,-9 7201: -31,-8 - - uid: 24514 + - uid: 24523 components: - type: ChunkEntity root: 60 @@ -64028,7 +64050,7 @@ entities: 745: -62,40 746: -63,40 747: -64,40 - - uid: 24515 + - uid: 24524 components: - type: ChunkEntity root: 60 @@ -64179,7 +64201,7 @@ entities: 5490: 6,42 5512: 0,42 5513: 1,42 - - uid: 24516 + - uid: 24525 components: - type: ChunkEntity root: 60 @@ -64424,7 +64446,7 @@ entities: 825: -26,-28 826: -27,-28 2024: -23,-28 - - uid: 24517 + - uid: 24526 components: - type: ChunkEntity root: 60 @@ -64445,7 +64467,7 @@ entities: color: '#8800FFFF' decals: 5632: 7,49 - - uid: 24518 + - uid: 24527 components: - type: ChunkEntity root: 60 @@ -64484,7 +64506,7 @@ entities: color: '#FFFFFFFF' decals: 7244: -16,49 - - uid: 24519 + - uid: 24528 components: - type: ChunkEntity root: 60 @@ -64641,7 +64663,7 @@ entities: color: '#FFFFFFFF' decals: 794: -6,-5 - - uid: 24520 + - uid: 24529 components: - type: ChunkEntity root: 60 @@ -64731,7 +64753,7 @@ entities: decals: 3878: -112,30 3879: -111,30 - - uid: 24521 + - uid: 24530 components: - type: ChunkEntity root: 60 @@ -64799,7 +64821,7 @@ entities: color: '#FFFFFFFF' decals: 3877: -113,30 - - uid: 24522 + - uid: 24531 components: - type: ChunkEntity root: 60 @@ -64940,7 +64962,7 @@ entities: cleanable: True decals: 3875: -62.06539,-6.96041 - - uid: 24523 + - uid: 24532 components: - type: ChunkEntity root: 60 @@ -65068,7 +65090,7 @@ entities: 2340: 3,-8 2341: 3,-7 2342: 3,-6 - - uid: 24524 + - uid: 24533 components: - type: ChunkEntity root: 60 @@ -65236,7 +65258,7 @@ entities: angle: 3.141592653589793 rad decals: 3: 48,-32 - - uid: 24525 + - uid: 24534 components: - type: ChunkEntity root: 60 @@ -65337,7 +65359,7 @@ entities: angle: -1.5707963267948966 rad decals: 624: -72,19 - - uid: 24526 + - uid: 24535 components: - type: ChunkEntity root: 60 @@ -65547,7 +65569,7 @@ entities: cleanable: True decals: 5823: -21,5 - - uid: 24527 + - uid: 24536 components: - type: ChunkEntity root: 60 @@ -65587,7 +65609,7 @@ entities: 735: -119,15 736: -120,15 737: -121,15 - - uid: 24528 + - uid: 24537 components: - type: ChunkEntity root: 60 @@ -65618,7 +65640,7 @@ entities: color: '#FFFFFFFF' decals: 2958: -109,13 - - uid: 24529 + - uid: 24646 components: - type: ChunkEntity root: 60 @@ -65667,7 +65689,7 @@ entities: color: '#FFFFFFFF' decals: 5727: -95,17 - - uid: 24530 + - uid: 24647 components: - type: ChunkEntity root: 60 @@ -65702,7 +65724,7 @@ entities: color: '#FFFFFFFF' decals: 7243: -17,49 - - uid: 24531 + - uid: 24648 components: - type: ChunkEntity root: 60 @@ -65729,7 +65751,7 @@ entities: 53: 17,-51 54: 17,-51 2771: 22,-49 - - uid: 24532 + - uid: 24649 components: - type: ChunkEntity root: 60 @@ -65763,7 +65785,7 @@ entities: color: '#D4D4D428' decals: 1656: -30,-36 - - uid: 24533 + - uid: 24650 components: - type: ChunkEntity root: 60 @@ -65789,7 +65811,7 @@ entities: cleanable: True decals: 1665: 32,-54 - - uid: 24534 + - uid: 24651 components: - type: ChunkEntity root: 60 @@ -65826,7 +65848,7 @@ entities: cleanable: True decals: 2759: -64,51 - - uid: 24535 + - uid: 24652 components: - type: ChunkEntity root: 60 @@ -65860,7 +65882,7 @@ entities: decals: 4465: 36,49 4466: 36,50 - - uid: 24536 + - uid: 24653 components: - type: ChunkEntity root: 60 @@ -65882,7 +65904,7 @@ entities: cleanable: True decals: 2692: -66.02228,7.9843655 - - uid: 24537 + - uid: 24654 components: - type: ChunkEntity root: 7536 @@ -65934,7 +65956,7 @@ entities: color: '#FFFFFFFF' decals: 3: -1,-3 - - uid: 24646 + - uid: 24655 components: - type: ChunkEntity root: 7536 @@ -68842,11 +68864,27 @@ entities: pos: 50.5,14.5 - proto: ComputerCargoOrders entities: + - uid: 12009 + components: + - type: Transform + parent: 60 + rot: 1.5707963267948966 rad + pos: 40.5,8.5 + - type: DeviceLinkSource + linkedPorts: + 24129: + - - OrderSender + - OrderReceiver - uid: 18899 components: - type: Transform parent: 60 pos: 43.5,10.5 + - type: DeviceLinkSource + linkedPorts: + 24129: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersEngineering entities: - uid: 1921 @@ -68854,6 +68892,11 @@ entities: - type: Transform parent: 60 pos: -1.5,21.5 + - type: DeviceLinkSource + linkedPorts: + 24129: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersMedical entities: - uid: 22116 @@ -68862,6 +68905,11 @@ entities: parent: 60 rot: 1.5707963267948966 rad pos: 47.5,-10.5 + - type: DeviceLinkSource + linkedPorts: + 24129: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersScience entities: - uid: 7070 @@ -68870,6 +68918,11 @@ entities: parent: 60 rot: 1.5707963267948966 rad pos: -45.5,-9.5 + - type: DeviceLinkSource + linkedPorts: + 24129: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersSecurity entities: - uid: 1643 @@ -68878,6 +68931,11 @@ entities: parent: 60 rot: 1.5707963267948966 rad pos: -27.5,-4.5 + - type: DeviceLinkSource + linkedPorts: + 24129: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersService entities: - uid: 9591 @@ -68885,6 +68943,16 @@ entities: - type: Transform parent: 60 pos: 21.5,-26.5 + - uid: 24138 + components: + - type: Transform + parent: 60 + pos: 9.5,-39.5 + - type: DeviceLinkSource + linkedPorts: + 24129: + - - OrderSender + - OrderReceiver - proto: ComputerComms entities: - uid: 18508 @@ -111017,11 +111085,6 @@ entities: - type: Transform parent: 60 pos: 44.5,17.5 - - uid: 13110 - components: - - type: Transform - parent: 60 - pos: 42.5,10.5 - uid: 13111 components: - type: Transform @@ -113502,6 +113565,11 @@ entities: - type: Transform parent: 60 pos: 20.5,-3.5 + - uid: 20081 + components: + - type: Transform + parent: 60 + pos: 42.5,10.5 - uid: 20099 components: - type: Transform @@ -119099,6 +119167,13 @@ entities: - type: Transform parent: 60 pos: -26.668507,-6.333041 +- proto: MailCart + entities: + - uid: 24142 + components: + - type: Transform + parent: 60 + pos: 52.5,6.5 - proto: MaintenanceFluffSpawner entities: - uid: 1463 @@ -119322,6 +119397,13 @@ entities: - type: Transform parent: 60 pos: 51.428207,-36.33008 +- proto: Mattress + entities: + - uid: 13182 + components: + - type: Transform + parent: 60 + pos: 47.5,16.5 - proto: MechEquipmentGrabberSmall entities: - uid: 25380 @@ -127426,11 +127508,6 @@ entities: - type: Transform parent: 60 pos: 10.5,11.5 - - uid: 8251 - components: - - type: Transform - parent: 60 - pos: -31.5,-4.5 - uid: 11241 components: - type: Transform @@ -130037,11 +130114,6 @@ entities: - type: Transform parent: 60 pos: 56.5,46.5 - - uid: 12009 - components: - - type: Transform - parent: 60 - pos: 42.5,10.5 - uid: 12011 components: - type: Transform @@ -131692,6 +131764,11 @@ entities: - type: Transform parent: 60 pos: -16.5,26.5 + - uid: 20080 + components: + - type: Transform + parent: 60 + pos: 42.5,10.5 - uid: 20512 components: - type: Transform @@ -135519,6 +135596,13 @@ entities: - type: Transform parent: 60 pos: -7.5,10.5 +- proto: SignMail + entities: + - uid: 24271 + components: + - type: Transform + parent: 60 + pos: 51.5,5.5 - proto: SignMaterials entities: - uid: 7203 @@ -142782,6 +142866,12 @@ entities: - type: Transform parent: 60 pos: 44.5,13.5 + - uid: 13110 + components: + - type: Transform + parent: 60 + rot: 1.5707963267948966 rad + pos: 40.5,9.5 - uid: 13146 components: - type: Transform @@ -143208,6 +143298,12 @@ entities: - type: Transform parent: 60 pos: -41.5,-6.5 + - uid: 24130 + components: + - type: Transform + parent: 60 + rot: 1.5707963267948966 rad + pos: 40.5,10.5 - uid: 24231 components: - type: Transform @@ -161242,6 +161338,12 @@ entities: - type: Transform parent: 7536 pos: 13.5,-1.5 + - uid: 13183 + components: + - type: Transform + parent: 60 + rot: 1.5707963267948966 rad + pos: -34.5,-8.5 - uid: 18572 components: - type: Transform @@ -164822,6 +164924,35 @@ entities: parent: 60 rot: 3.141592653589793 rad pos: -103.5,11.5 + - uid: 24131 + components: + - type: Transform + parent: 60 + pos: 40.5,8.5 + - uid: 24132 + components: + - type: Transform + parent: 60 + rot: -1.5707963267948966 rad + pos: 40.5,8.5 + - uid: 24133 + components: + - type: Transform + parent: 60 + rot: -1.5707963267948966 rad + pos: 40.5,9.5 + - uid: 24134 + components: + - type: Transform + parent: 60 + rot: -1.5707963267948966 rad + pos: 40.5,10.5 + - uid: 24135 + components: + - type: Transform + parent: 60 + rot: 3.141592653589793 rad + pos: 40.5,10.5 - uid: 24660 components: - type: Transform From dbe2a4992624d90be4eaa67cc8382bf0a223d5bf Mon Sep 17 00:00:00 2001 From: Emisse <99158783+Emisse@users.noreply.github.com> Date: Fri, 11 Sep 2026 03:53:34 +0000 Subject: [PATCH 112/197] box update (#45974) --- Resources/Maps/box.yml | 314 +++++++++++++++++++++++++---------------- 1 file changed, 191 insertions(+), 123 deletions(-) diff --git a/Resources/Maps/box.yml b/Resources/Maps/box.yml index f8c2a79c9a..b1adfc94b1 100644 --- a/Resources/Maps/box.yml +++ b/Resources/Maps/box.yml @@ -4,8 +4,8 @@ meta: engineVersion: 289.0.0 forkId: "" forkVersion: "" - time: 08/30/2026 10:30:27 - entityCount: 28909 + time: 09/10/2026 21:42:45 + entityCount: 28908 maps: - 780 grids: @@ -13,6 +13,7 @@ grids: - 11906 orphans: [] nullspace: +- 20699 - 28831 - 28832 - 28833 @@ -91,7 +92,6 @@ nullspace: - 28906 - 28907 - 28908 -- 28909 tilemap: 0: Space 41: FloorArcadeBlue @@ -260,7 +260,7 @@ entities: version: 7 2,0: ind: 2,0 - tiles: PgAAAAAAAD4AAAAAAAB5AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAeQAAAAAAAAkAAAAAAQAJAAAAAAEACQAAAAACADoAAAAAAAA6AAAAAAAAOgAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAaAAAAAAAAHkAAAAAAAB5AAAAAAAAaAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAeQAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAHkAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAaAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAaAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAGgAAAAAAAB5AAAAAAAAeQAAAAAAAGgAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAGgAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAeQAAAAAAAAEAAAAABAABAAAAAAQAAQAAAAADAAEAAAAAAgABAAAAAAEAAQAAAAADAHkAAAAAAABoAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAaAAAAAAAAHkAAAAAAAABAAAAAAEAAQAAAAADAAEAAAAAAgABAAAAAAMAAQAAAAAAAAEAAAAAAgB5AAAAAAAAaAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAQAAAAACAAEAAAAABAABAAAAAAQAAQAAAAAAAAEAAAAAAgABAAAAAAQAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAeQAAAAAAAAEAAAAAAwABAAAAAAEAAQAAAAADAAEAAAAAAgABAAAAAAIAAQAAAAADADoAAAAAAAA6AAAAAAAAOgAAAAAAAHkAAAAAAAB5AAAAAAAAaAAAAAAAAGgAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAABAAAAAAIAAQAAAAAEAAEAAAAABAABAAAAAAQAAQAAAAAEAAEAAAAAAgB5AAAAAAAAOgAAAAAAADoAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAGgAAAAAAABoAAAAAAAAAQAAAAACAAEAAAAABAABAAAAAAAAAQAAAAACAAEAAAAAAAABAAAAAAEAeQAAAAAAADoAAAAAAAA6AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAEAAAAAAwABAAAAAAIAAQAAAAACAAEAAAAAAAABAAAAAAQAAQAAAAAEADoAAAAAAAA6AAAAAAAAOgAAAAAAAHkAAAAAAAAAAAAAAAAAeAAAAAABAAAAAAAAAAB5AAAAAAAAaAAAAAAAAHkAAAAAAAABAAAAAAQAAQAAAAAAAAEAAAAABAABAAAAAAMAAQAAAAADAAEAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAHgAAAAAAgAAAAAAAAAAeQAAAAAAAGgAAAAAAAB5AAAAAAAAAQAAAAACAAEAAAAAAwABAAAAAAIAAQAAAAACAAEAAAAABAABAAAAAAIAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAEAAAAAAAAAAHkAAAAAAABoAAAAAAAAeQAAAAAAAA== + tiles: PgAAAAAAAD4AAAAAAAB5AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAeQAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAaAAAAAAAAHkAAAAAAAB5AAAAAAAAaAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAeQAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAHkAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAaAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAaAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAGgAAAAAAAB5AAAAAAAAeQAAAAAAAGgAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAGgAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAeQAAAAAAAAEAAAAABAABAAAAAAQAAQAAAAADAAEAAAAAAgABAAAAAAEAAQAAAAADAHkAAAAAAABoAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAaAAAAAAAAHkAAAAAAAABAAAAAAEAAQAAAAADAAEAAAAAAgABAAAAAAMAAQAAAAAAAAEAAAAAAgB5AAAAAAAAaAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAQAAAAACAAEAAAAABAABAAAAAAQAAQAAAAAAAAEAAAAAAgABAAAAAAQAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAeQAAAAAAAAEAAAAAAwABAAAAAAEAAQAAAAADAAEAAAAAAgABAAAAAAIAAQAAAAADADoAAAAAAAA6AAAAAAAAOgAAAAAAAHkAAAAAAAB5AAAAAAAAaAAAAAAAAGgAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAABAAAAAAIAAQAAAAAEAAEAAAAABAABAAAAAAQAAQAAAAAEAAEAAAAAAgB5AAAAAAAAOgAAAAAAADoAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAGgAAAAAAABoAAAAAAAAAQAAAAACAAEAAAAABAABAAAAAAAAAQAAAAACAAEAAAAAAAABAAAAAAEAeQAAAAAAADoAAAAAAAA6AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAEAAAAAAwABAAAAAAIAAQAAAAACAAEAAAAAAAABAAAAAAQAAQAAAAAEADoAAAAAAAA6AAAAAAAAOgAAAAAAAHkAAAAAAAAAAAAAAAAAeAAAAAABAAAAAAAAAAB5AAAAAAAAaAAAAAAAAHkAAAAAAAABAAAAAAQAAQAAAAAAAAEAAAAABAABAAAAAAMAAQAAAAADAAEAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAHgAAAAAAgAAAAAAAAAAeQAAAAAAAGgAAAAAAAB5AAAAAAAAAQAAAAACAAEAAAAAAwABAAAAAAIAAQAAAAACAAEAAAAABAABAAAAAAIAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAEAAAAAAAAAAHkAAAAAAABoAAAAAAAAeQAAAAAAAA== version: 7 -2,1: ind: -2,1 @@ -320,7 +320,7 @@ entities: version: 7 2,-1: ind: 2,-1 - tiles: eQAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAAHkAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAAHkAAAAAAAB5AAAAAAAAOgAAAAAAADoAAAAAAAB5AAAAAAAAOgAAAAAAADoAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAeQAAAAAAAHkAAAAAAAA6AAAAAAAAHQAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAeQAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAAB0AAAAAAAAdAAAAAAAAOgAAAAAAAHkAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAHkAAAAAAAAdAAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAB2AAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAAB5AAAAAAAAHQAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAeQAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAOgAAAAAAAB0AAAAAAAA6AAAAAAAAOgAAAAAAAB0AAAAAAAAdAAAAAAAAOgAAAAAAAB0AAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAADoAAAAAAAAdAAAAAAAAOgAAAAAAADoAAAAAAAAdAAAAAAAAHQAAAAAAADoAAAAAAAB5AAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAAA6AAAAAAAAHQAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAPgAAAAAAAD4AAAAAAAB5AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAAAkAAAAAAAAJAAAAAAQACQAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAAA== + tiles: eQAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAAHkAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAAHkAAAAAAAB5AAAAAAAAOgAAAAAAADoAAAAAAAB5AAAAAAAAOgAAAAAAADoAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAeQAAAAAAAHkAAAAAAAA6AAAAAAAAHQAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAeQAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAAB0AAAAAAAAdAAAAAAAAOgAAAAAAAHkAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAHkAAAAAAAAdAAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAB2AAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAAB5AAAAAAAAHQAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAeQAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAOgAAAAAAAB0AAAAAAAA6AAAAAAAAOgAAAAAAAB0AAAAAAAAdAAAAAAAAOgAAAAAAAB0AAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAADoAAAAAAAAdAAAAAAAAOgAAAAAAADoAAAAAAAAdAAAAAAAAHQAAAAAAADoAAAAAAAB5AAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAAA6AAAAAAAAHQAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAPgAAAAAAAD4AAAAAAAB5AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAAA== version: 7 3,1: ind: 3,1 @@ -3427,6 +3427,7 @@ entities: chunkHistory: {} - type: ChunkContainer chunkEntities: + - 20699 - 28831 - 28832 - 28833 @@ -3505,7 +3506,7 @@ entities: - 28906 - 28907 - 28908 - - 28909 + - type: GridSplitNode - uid: 11906 components: - type: MetaData @@ -3561,6 +3562,7 @@ entities: chunkHistory: {} - type: ChunkContainer chunkEntities: [] + - type: GridSplitNode - proto: AcousticGuitarInstrument entities: - uid: 19976 @@ -6624,12 +6626,26 @@ entities: parent: 8364 rot: 1.5707963267948966 rad pos: -42.5,-28.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 17677: + - - DoorStatus + - Close - uid: 18233 components: - type: Transform parent: 8364 rot: 1.5707963267948966 rad pos: -42.5,-30.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 18039: + - - DoorStatus + - Close - proto: AirlockExternalGlassEngineeringLocked entities: - uid: 3707 @@ -6909,6 +6925,34 @@ entities: - type: Transform parent: 8364 pos: -77.5,7.5 +- proto: AirlockExternalGlassShuttleCargo + entities: + - uid: 17677 + components: + - type: Transform + parent: 8364 + rot: -1.5707963267948966 rad + pos: -44.5,-28.5 + - type: DeviceLinkSource + linkedPorts: + 18040: + - - DoorStatus + - Close + - type: DeviceLinkSink + invokeCounter: 1 + - uid: 18039 + components: + - type: Transform + parent: 8364 + rot: -1.5707963267948966 rad + pos: -44.5,-30.5 + - type: DeviceLinkSource + linkedPorts: + 18233: + - - DoorStatus + - Close + - type: DeviceLinkSink + invokeCounter: 1 - proto: AirlockExternalGlassShuttleEmergencyLocked entities: - uid: 682 @@ -6955,20 +6999,6 @@ entities: parent: 8364 rot: -1.5707963267948966 rad pos: -67.5,-9.5 -- proto: AirlockExternalGlassShuttleLocked - entities: - - uid: 18302 - components: - - type: Transform - parent: 8364 - rot: -1.5707963267948966 rad - pos: -44.5,-28.5 - - uid: 18325 - components: - - type: Transform - parent: 8364 - rot: -1.5707963267948966 rad - pos: -44.5,-30.5 - proto: AirlockExternalLocked entities: - uid: 610 @@ -11022,13 +11052,6 @@ entities: - type: Transform parent: 8364 pos: -36.5,20.5 -- proto: AsimovCircuitBoard - entities: - - uid: 27912 - components: - - type: Transform - parent: 8364 - pos: -3.6,-23.45 - proto: AsteroidRock entities: - uid: 2042 @@ -11223,18 +11246,6 @@ entities: parent: 8364 rot: 3.141592653589793 rad pos: -66.5,21.5 - - uid: 18039 - components: - - type: Transform - parent: 8364 - rot: -1.5707963267948966 rad - pos: -44.5,-30.5 - - uid: 20699 - components: - - type: Transform - parent: 8364 - rot: -1.5707963267948966 rad - pos: -44.5,-28.5 - uid: 20800 components: - type: Transform @@ -54778,6 +54789,13 @@ entities: - type: Transform parent: 8364 pos: -22.5,-19.5 +- proto: CargoTelepad + entities: + - uid: 18325 + components: + - type: Transform + parent: 8364 + pos: -38.5,-21.5 - proto: Carpet entities: - uid: 4508 @@ -62569,7 +62587,7 @@ entities: pos: 57.5,15.5 - proto: ChunkEntity entities: - - uid: 28831 + - uid: 20699 components: - type: ChunkEntity root: 8364 @@ -62734,7 +62752,7 @@ entities: color: '#FFFFFFFF' decals: 2437: 31,-35 - - uid: 28832 + - uid: 28831 components: - type: ChunkEntity root: 8364 @@ -63098,7 +63116,7 @@ entities: color: '#52B4E996' decals: 2421: 37,-35 - - uid: 28833 + - uid: 28832 components: - type: ChunkEntity root: 8364 @@ -63450,7 +63468,7 @@ entities: 3179: -32,-29 3180: -31,-29 3185: -32,-25 - - uid: 28834 + - uid: 28833 components: - type: ChunkEntity root: 8364 @@ -63702,7 +63720,7 @@ entities: color: '#A4610696' decals: 2323: -27,-16 - - uid: 28835 + - uid: 28834 components: - type: ChunkEntity root: 8364 @@ -64019,7 +64037,7 @@ entities: 6299: 13,-72 6300: 14,-72 6301: 15,-72 - - uid: 28836 + - uid: 28835 components: - type: ChunkEntity root: 8364 @@ -64200,7 +64218,7 @@ entities: color: '#D381C996' decals: 1461: 66,-51 - - uid: 28837 + - uid: 28836 components: - type: ChunkEntity root: 8364 @@ -64451,7 +64469,7 @@ entities: color: '#FFFFFFFF' decals: 2474: 8,-49 - - uid: 28838 + - uid: 28837 components: - type: ChunkEntity root: 8364 @@ -64712,7 +64730,7 @@ entities: 721: 75,-47 722: 76,-47 723: 77,-47 - - uid: 28839 + - uid: 28838 components: - type: ChunkEntity root: 8364 @@ -65016,7 +65034,7 @@ entities: 6582: -8,29 6583: -9,29 6584: -10,29 - - uid: 28840 + - uid: 28839 components: - type: ChunkEntity root: 8364 @@ -65435,7 +65453,7 @@ entities: color: '#FFFFFFFF' decals: 2959: 10,-36 - - uid: 28841 + - uid: 28840 components: - type: ChunkEntity root: 8364 @@ -65501,7 +65519,7 @@ entities: color: '#FED83DFF' decals: 69: 87,-58 - - uid: 28842 + - uid: 28841 components: - type: ChunkEntity root: 8364 @@ -65699,7 +65717,7 @@ entities: decals: 6429: -17,24 6430: -17,23 - - uid: 28843 + - uid: 28842 components: - type: ChunkEntity root: 8364 @@ -65802,7 +65820,7 @@ entities: color: '#FFFFFFFF' decals: 3638: 57,-52 - - uid: 28844 + - uid: 28843 components: - type: ChunkEntity root: 8364 @@ -65899,7 +65917,7 @@ entities: color: '#FFFFFFFF' decals: 1017: -33,3 - - uid: 28845 + - uid: 28844 components: - type: ChunkEntity root: 8364 @@ -66235,7 +66253,7 @@ entities: 3498: -8,-24 3499: -8,-23 3500: -8,-22 - - uid: 28846 + - uid: 28845 components: - type: ChunkEntity root: 8364 @@ -66568,7 +66586,7 @@ entities: 1656: 54,-21 1657: 53,-21 1658: 52,-21 - - uid: 28847 + - uid: 28846 components: - type: ChunkEntity root: 8364 @@ -66686,7 +66704,7 @@ entities: color: '#DE3A3A96' decals: 986: 82,-2 - - uid: 28848 + - uid: 28847 components: - type: ChunkEntity root: 8364 @@ -66865,7 +66883,7 @@ entities: 1642: 55,-38 1643: 56,-38 1644: 57,-38 - - uid: 28849 + - uid: 28848 components: - type: ChunkEntity root: 8364 @@ -66989,7 +67007,7 @@ entities: color: '#FFFFFFFF' decals: 2286: -79,9 - - uid: 28850 + - uid: 28849 components: - type: ChunkEntity root: 8364 @@ -67149,7 +67167,7 @@ entities: 2295: -78,-4 2296: -79,-4 2297: -77,-4 - - uid: 28851 + - uid: 28850 components: - type: ChunkEntity root: 8364 @@ -67449,7 +67467,7 @@ entities: color: '#FFFFFFFF' decals: 3508: -12,-63 - - uid: 28852 + - uid: 28851 components: - type: ChunkEntity root: 8364 @@ -67759,7 +67777,7 @@ entities: decals: 757: 41,-52 758: 39,-52 - - uid: 28853 + - uid: 28852 components: - type: ChunkEntity root: 8364 @@ -67995,7 +68013,7 @@ entities: 3188: -34,-28 3189: -34,-27 3190: -34,-26 - - uid: 28854 + - uid: 28853 components: - type: ChunkEntity root: 8364 @@ -68147,7 +68165,7 @@ entities: 2391: -30,-37 2392: -30,-36 2393: -30,-39 - - uid: 28855 + - uid: 28854 components: - type: ChunkEntity root: 8364 @@ -68374,7 +68392,7 @@ entities: color: '#FFFFFFFF' decals: 6958: 11,47 - - uid: 28856 + - uid: 28855 components: - type: ChunkEntity root: 8364 @@ -68776,7 +68794,7 @@ entities: 6448: -9,42 7548: -10,46 7616: -10,42 - - uid: 28857 + - uid: 28856 components: - type: ChunkEntity root: 8364 @@ -68921,7 +68939,7 @@ entities: 6960: 11,49 6961: 11,50 6962: 11,51 - - uid: 28858 + - uid: 28857 components: - type: ChunkEntity root: 8364 @@ -69083,7 +69101,7 @@ entities: 6502: -10,52 6503: -10,53 6513: -6,55 - - uid: 28859 + - uid: 28858 components: - type: ChunkEntity root: 8364 @@ -69105,7 +69123,7 @@ entities: decals: 6350: -9,-91 6357: -9,-83 - - uid: 28860 + - uid: 28859 components: - type: ChunkEntity root: 8364 @@ -69131,7 +69149,7 @@ entities: decals: 6289: 12,-81 6307: 12,-82 - - uid: 28861 + - uid: 28860 components: - type: ChunkEntity root: 8364 @@ -69383,7 +69401,7 @@ entities: 1240: 7,-13 1241: 6,-13 1242: 5,-13 - - uid: 28862 + - uid: 28861 components: - type: ChunkEntity root: 8364 @@ -69689,7 +69707,7 @@ entities: color: '#334E6DC8' decals: 2061: -1,-9 - - uid: 28863 + - uid: 28862 components: - type: ChunkEntity root: 8364 @@ -69869,7 +69887,7 @@ entities: 6060: 17,-78 6061: 18,-78 6062: 19,-78 - - uid: 28864 + - uid: 28863 components: - type: ChunkEntity root: 8364 @@ -70095,7 +70113,7 @@ entities: 5971: -26,-70 5972: -25,-70 5973: -24,-70 - - uid: 28865 + - uid: 28864 components: - type: ChunkEntity root: 8364 @@ -70418,7 +70436,7 @@ entities: 3401: 10,-27 3402: 8,-27 3403: 7,-27 - - uid: 28866 + - uid: 28865 components: - type: ChunkEntity root: 8364 @@ -70703,7 +70721,7 @@ entities: 2602: -1,-79 2603: -2,-79 2604: -3,-79 - - uid: 28867 + - uid: 28866 components: - type: ChunkEntity root: 8364 @@ -70882,7 +70900,7 @@ entities: cleanable: True decals: 7386: -18,33 - - uid: 28868 + - uid: 28867 components: - type: ChunkEntity root: 8364 @@ -71134,7 +71152,7 @@ entities: color: '#FFFFFFFF' decals: 2825: 32,-1 - - uid: 28869 + - uid: 28868 components: - type: ChunkEntity root: 8364 @@ -71226,7 +71244,7 @@ entities: 3644: 32.88275,8.297449 3645: 32.88275,9.188074 3646: 32.88275,10.078699 - - uid: 28870 + - uid: 28869 components: - type: ChunkEntity root: 8364 @@ -71388,7 +71406,7 @@ entities: 1667: 53,-15 1668: 52,-15 1675: 58,-15 - - uid: 28871 + - uid: 28870 components: - type: ChunkEntity root: 8364 @@ -71629,7 +71647,7 @@ entities: color: '#FFFFFFFF' decals: 1534: -12,6 - - uid: 28872 + - uid: 28871 components: - type: ChunkEntity root: 8364 @@ -71969,7 +71987,7 @@ entities: 1612: 21,-18 1613: 21,-19 1614: 21,-20 - - uid: 28873 + - uid: 28872 components: - type: ChunkEntity root: 8364 @@ -72184,7 +72202,7 @@ entities: 1154: 78,-26 1155: 79,-26 1173: 71,-22 - - uid: 28874 + - uid: 28873 components: - type: ChunkEntity root: 8364 @@ -72255,7 +72273,7 @@ entities: cleanable: True decals: 4969: 60,1 - - uid: 28875 + - uid: 28874 components: - type: ChunkEntity root: 8364 @@ -72567,7 +72585,7 @@ entities: 1268: 46,-20 1269: 46,-19 1270: 46,-18 - - uid: 28876 + - uid: 28875 components: - type: ChunkEntity root: 8364 @@ -72635,7 +72653,7 @@ entities: 1156: 80,-26 1157: 82,-26 1158: 81,-26 - - uid: 28877 + - uid: 28876 components: - type: ChunkEntity root: 8364 @@ -72806,7 +72824,7 @@ entities: 6658: 5,31 6659: 5,30 6660: 5,29 - - uid: 28878 + - uid: 28877 components: - type: ChunkEntity root: 8364 @@ -72927,7 +72945,7 @@ entities: decals: 6262: 8,1 6263: 9,1 - - uid: 28879 + - uid: 28878 components: - type: ChunkEntity root: 8364 @@ -73005,7 +73023,7 @@ entities: color: '#FFFFFFFF' decals: 7636: 25,-84 - - uid: 28880 + - uid: 28879 components: - type: ChunkEntity root: 8364 @@ -73254,7 +73272,7 @@ entities: 418: -38,-13 419: -38,-12 3703: -38,-11 - - uid: 28881 + - uid: 28880 components: - type: ChunkEntity root: 8364 @@ -73397,7 +73415,7 @@ entities: 2201: 16,-10 2202: 16,-12 2203: 16,-13 - - uid: 28882 + - uid: 28881 components: - type: ChunkEntity root: 8364 @@ -73499,7 +73517,7 @@ entities: decals: 2489: -1,-33 2490: -2,-33 - - uid: 28883 + - uid: 28882 components: - type: ChunkEntity root: 8364 @@ -73711,7 +73729,7 @@ entities: 2395: 75,-15 2396: 75,-14 2397: 75,-13 - - uid: 28884 + - uid: 28883 components: - type: ChunkEntity root: 8364 @@ -73848,7 +73866,7 @@ entities: color: '#FED83DFF' decals: 83: -62,15 - - uid: 28885 + - uid: 28884 components: - type: ChunkEntity root: 8364 @@ -73942,7 +73960,7 @@ entities: 2012: -54,-6 2013: -54,-5 2014: -54,-4 - - uid: 28886 + - uid: 28885 components: - type: ChunkEntity root: 8364 @@ -73997,7 +74015,7 @@ entities: decals: 1018: -32,3 1019: -31,3 - - uid: 28887 + - uid: 28886 components: - type: ChunkEntity root: 8364 @@ -74100,7 +74118,7 @@ entities: 2779: 27,14 2788: 17,12 2789: 16,12 - - uid: 28888 + - uid: 28887 components: - type: ChunkEntity root: 8364 @@ -74168,7 +74186,7 @@ entities: cleanable: True decals: 5945: 35,-67 - - uid: 28889 + - uid: 28888 components: - type: ChunkEntity root: 8364 @@ -74233,7 +74251,7 @@ entities: color: '#FED83DFF' decals: 77: -62,-22 - - uid: 28890 + - uid: 28889 components: - type: ChunkEntity root: 8364 @@ -74282,7 +74300,7 @@ entities: 4949: 70,3 4950: 69,3 4951: 68,1 - - uid: 28891 + - uid: 28890 components: - type: ChunkEntity root: 8364 @@ -74310,7 +74328,7 @@ entities: color: '#FFFFFFFF' decals: 5980: 62,-71 - - uid: 28892 + - uid: 28891 components: - type: ChunkEntity root: 8364 @@ -74336,7 +74354,7 @@ entities: 5464: 70,-67 5465: 68,-67 5471: 74,-65 - - uid: 28893 + - uid: 28892 components: - type: ChunkEntity root: 8364 @@ -74358,7 +74376,7 @@ entities: color: '#FED83DFF' decals: 70: 81,-67 - - uid: 28894 + - uid: 28893 components: - type: ChunkEntity root: 8364 @@ -74397,7 +74415,7 @@ entities: color: '#FED83DFF' decals: 68: 87,-39 - - uid: 28895 + - uid: 28894 components: - type: ChunkEntity root: 8364 @@ -74420,7 +74438,7 @@ entities: 5597: 55,19 5598: 58,19 5599: 57,16 - - uid: 28896 + - uid: 28895 components: - type: ChunkEntity root: 8364 @@ -74445,7 +74463,7 @@ entities: 5607: 65,21 5608: 65,22 5609: 65,23 - - uid: 28897 + - uid: 28896 components: - type: ChunkEntity root: 8364 @@ -74531,7 +74549,7 @@ entities: color: '#FFFFFFFF' decals: 3518: 25,18 - - uid: 28898 + - uid: 28897 components: - type: ChunkEntity root: 8364 @@ -74558,7 +74576,7 @@ entities: color: '#FED83DFF' decals: 84: -50,24 - - uid: 28899 + - uid: 28898 components: - type: ChunkEntity root: 8364 @@ -74584,7 +74602,7 @@ entities: 5722: -38,21 5723: -34,20 5724: -35,19 - - uid: 28900 + - uid: 28899 components: - type: ChunkEntity root: 8364 @@ -74610,7 +74628,7 @@ entities: decals: 7422: 17,48 7423: 16,50 - - uid: 28901 + - uid: 28900 components: - type: ChunkEntity root: 8364 @@ -74627,7 +74645,7 @@ entities: cleanable: True decals: 7261: 16,32 - - uid: 28902 + - uid: 28901 components: - type: ChunkEntity root: 8364 @@ -74665,7 +74683,7 @@ entities: 5863: -23,-59 5864: -25,-59 5865: -27,-59 - - uid: 28903 + - uid: 28902 components: - type: ChunkEntity root: 8364 @@ -74690,7 +74708,7 @@ entities: decals: 5842: -33,-65 5843: -33,-65 - - uid: 28904 + - uid: 28903 components: - type: ChunkEntity root: 8364 @@ -74723,7 +74741,7 @@ entities: 5926: 16,-56 5928: 18,-56 5929: 20,-52 - - uid: 28905 + - uid: 28904 components: - type: ChunkEntity root: 8364 @@ -74767,7 +74785,7 @@ entities: 73: -43,-49 74: -43,-50 75: -43,-51 - - uid: 28906 + - uid: 28905 components: - type: ChunkEntity root: 8364 @@ -74782,7 +74800,7 @@ entities: color: '#FED83DFF' decals: 64: 47,21 - - uid: 28907 + - uid: 28906 components: - type: ChunkEntity root: 8364 @@ -74797,7 +74815,7 @@ entities: color: '#FED83DFF' decals: 82: -67,19 - - uid: 28908 + - uid: 28907 components: - type: ChunkEntity root: 8364 @@ -74821,7 +74839,7 @@ entities: 1011: -74,-17 1012: -72,-17 1013: -71,-17 - - uid: 28909 + - uid: 28908 components: - type: ChunkEntity root: 8364 @@ -78857,16 +78875,31 @@ entities: parent: 8364 rot: 3.141592653589793 rad pos: -24.5,-23.5 + - type: DeviceLinkSource + linkedPorts: + 18325: + - - OrderSender + - OrderReceiver - uid: 14971 components: - type: Transform parent: 8364 pos: -32.5,-24.5 + - type: DeviceLinkSource + linkedPorts: + 18325: + - - OrderSender + - OrderReceiver - uid: 17667 components: - type: Transform parent: 8364 pos: -22.5,-21.5 + - type: DeviceLinkSource + linkedPorts: + 18325: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersEngineering entities: - uid: 20632 @@ -78874,6 +78907,11 @@ entities: - type: Transform parent: 8364 pos: -1.5,-66.5 + - type: DeviceLinkSource + linkedPorts: + 18325: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersMedical entities: - uid: 5493 @@ -78882,6 +78920,11 @@ entities: parent: 8364 rot: -1.5707963267948966 rad pos: 46.5,-25.5 + - type: DeviceLinkSource + linkedPorts: + 18325: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersScience entities: - uid: 28356 @@ -78890,6 +78933,11 @@ entities: parent: 8364 rot: 1.5707963267948966 rad pos: 69.5,-25.5 + - type: DeviceLinkSource + linkedPorts: + 18325: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersSecurity entities: - uid: 8556 @@ -78898,6 +78946,11 @@ entities: parent: 8364 rot: -1.5707963267948966 rad pos: 5.5,47.5 + - type: DeviceLinkSource + linkedPorts: + 18325: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersService entities: - uid: 5773 @@ -78906,6 +78959,11 @@ entities: parent: 8364 rot: -1.5707963267948966 rad pos: 31.5,-10.5 + - type: DeviceLinkSource + linkedPorts: + 18325: + - - OrderSender + - OrderReceiver - proto: ComputerComms entities: - uid: 1073 @@ -80509,6 +80567,13 @@ entities: - type: SingletonDeviceNetServer available: False active: False +- proto: CrewsimovCircuitBoard + entities: + - uid: 27912 + components: + - type: Transform + parent: 8364 + pos: -3.6,-23.45 - proto: Crowbar entities: - uid: 5342 @@ -137116,6 +137181,14 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage +- proto: MailCart + entities: + - uid: 18302 + components: + - type: Transform + parent: 8364 + rot: 1.5707963267948966 rad + pos: -22.5,-17.5 - proto: MailingUnit entities: - uid: 8179 @@ -165628,11 +165701,6 @@ entities: - type: Transform parent: 8364 pos: -2.5,43.5 - - uid: 17677 - components: - - type: Transform - parent: 8364 - pos: -21.5,-31.5 - proto: VendingMachineSeeds entities: - uid: 10713 From 3b43703e63b5797538096f5c362070024fe0e525 Mon Sep 17 00:00:00 2001 From: ProPeperos <61984624+ProPeperos@users.noreply.github.com> Date: Fri, 11 Sep 2026 03:53:42 +0000 Subject: [PATCH 113/197] [map] Snowball - cargo telepad (#45976) --- Resources/Maps/snowball.yml | 238 ++++++++++++++++++++++-------------- 1 file changed, 149 insertions(+), 89 deletions(-) diff --git a/Resources/Maps/snowball.yml b/Resources/Maps/snowball.yml index c8e14094f8..33bb221e78 100644 --- a/Resources/Maps/snowball.yml +++ b/Resources/Maps/snowball.yml @@ -4,14 +4,15 @@ meta: engineVersion: 289.0.0 forkId: "" forkVersion: "" - time: 08/22/2026 19:17:59 - entityCount: 19009 + time: 09/10/2026 21:54:07 + entityCount: 19008 maps: - 1793 grids: - 1 orphans: [] nullspace: +- 8071 - 17974 - 17976 - 17977 @@ -56,7 +57,6 @@ nullspace: - 19006 - 19007 - 19008 -- 19009 tilemap: 0: Space 119: FloorAstroSnow @@ -1754,6 +1754,7 @@ entities: chunkHistory: {} - type: ChunkContainer chunkEntities: + - 8071 - 17974 - 17976 - 17977 @@ -1798,7 +1799,6 @@ entities: - 19006 - 19007 - 19008 - - 19009 - uid: 1793 components: - type: MetaData @@ -4293,12 +4293,26 @@ entities: parent: 1 rot: 1.5707963267948966 rad pos: 94.5,87.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 7882: + - - DoorStatus + - DoorBolt - uid: 7817 components: - type: Transform parent: 1 rot: 1.5707963267948966 rad pos: 94.5,89.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 7883: + - - DoorStatus + - DoorBolt - uid: 9001 components: - type: Transform @@ -4477,6 +4491,34 @@ entities: pos: 0.5,74.5 - type: DeviceLinkSink invokeCounter: 1 +- proto: AirlockExternalGlassShuttleCargo + entities: + - uid: 7882 + components: + - type: Transform + parent: 1 + rot: 1.5707963267948966 rad + pos: 99.5,87.5 + - type: DeviceLinkSource + linkedPorts: + 7816: + - - DoorStatus + - DoorBolt + - type: DeviceLinkSink + invokeCounter: 1 + - uid: 7883 + components: + - type: Transform + parent: 1 + rot: 1.5707963267948966 rad + pos: 99.5,89.5 + - type: DeviceLinkSource + linkedPorts: + 7817: + - - DoorStatus + - DoorBolt + - type: DeviceLinkSink + invokeCounter: 1 - proto: AirlockExternalGlassShuttleEmergencyLocked entities: - uid: 5 @@ -4511,20 +4553,6 @@ entities: pos: 102.5,72.5 - type: DeviceLinkSink invokeCounter: 1 -- proto: AirlockExternalGlassShuttleLocked - entities: - - uid: 7882 - components: - - type: Transform - parent: 1 - rot: 1.5707963267948966 rad - pos: 99.5,87.5 - - uid: 7883 - components: - - type: Transform - parent: 1 - rot: 1.5707963267948966 rad - pos: 99.5,89.5 - proto: AirlockExternalLocked entities: - uid: 8625 @@ -7389,13 +7417,6 @@ entities: - type: Transform parent: 1 pos: 58.507614,127.52353 -- proto: AsimovCircuitBoard - entities: - - uid: 11216 - components: - - type: Transform - parent: 1 - pos: 63.5,18.5 - proto: AtmosDeviceFanDirectional entities: - uid: 2686 @@ -7404,18 +7425,6 @@ entities: parent: 1 rot: 1.5707963267948966 rad pos: 40.5,79.5 - - uid: 7884 - components: - - type: Transform - parent: 1 - rot: 1.5707963267948966 rad - pos: 99.5,87.5 - - uid: 7885 - components: - - type: Transform - parent: 1 - rot: 1.5707963267948966 rad - pos: 99.5,89.5 - proto: AtmosFixBlockerMarker entities: - uid: 119 @@ -36238,6 +36247,13 @@ entities: - type: Transform parent: 1 pos: 80.5,79.5 +- proto: CargoTelepad + entities: + - uid: 7885 + components: + - type: Transform + parent: 1 + pos: 88.5,84.5 - proto: Carpet entities: - uid: 9553 @@ -40733,7 +40749,7 @@ entities: pos: 55.5,64.5 - proto: ChunkEntity entities: - - uid: 17974 + - uid: 8071 components: - type: ChunkEntity root: 1 @@ -40856,7 +40872,7 @@ entities: 136: 59,102 137: 59,103 138: 59,104 - - uid: 17976 + - uid: 17974 components: - type: ChunkEntity root: 1 @@ -41056,7 +41072,7 @@ entities: cleanable: True decals: 3903: 63,82 - - uid: 17977 + - uid: 17976 components: - type: ChunkEntity root: 1 @@ -41243,7 +41259,7 @@ entities: 142: 66,101 279: 70,105 280: 71,105 - - uid: 17979 + - uid: 17977 components: - type: ChunkEntity root: 1 @@ -41454,7 +41470,7 @@ entities: cleanable: True decals: 3907: 66,83 - - uid: 17983 + - uid: 17979 components: - type: ChunkEntity root: 1 @@ -41614,7 +41630,7 @@ entities: decals: 4010: 34,71 4028: 37,74 - - uid: 17986 + - uid: 17983 components: - type: ChunkEntity root: 1 @@ -41722,7 +41738,7 @@ entities: 4299: 49,21 4326: 61,25 4350: 50,30 - - uid: 17988 + - uid: 17986 components: - type: ChunkEntity root: 1 @@ -41865,7 +41881,7 @@ entities: 4374: 61.263626,61.66695 4375: 61.076126,61.99009 4376: 60.74279,62.136024 - - uid: 17989 + - uid: 17988 components: - type: ChunkEntity root: 1 @@ -42067,7 +42083,7 @@ entities: 4328: 57,36 4340: 54,32 4366: 50,45 - - uid: 17993 + - uid: 17989 components: - type: ChunkEntity root: 1 @@ -42288,7 +42304,7 @@ entities: cleanable: True decals: 797: 95,83 - - uid: 18000 + - uid: 17993 components: - type: ChunkEntity root: 1 @@ -42475,7 +42491,7 @@ entities: cleanable: True decals: 3858: 9,72 - - uid: 18001 + - uid: 18000 components: - type: ChunkEntity root: 1 @@ -42658,7 +42674,7 @@ entities: angle: 1.5707963267948966 rad decals: 4026: 31.960068,73.10345 - - uid: 18005 + - uid: 18001 components: - type: ChunkEntity root: 1 @@ -42848,7 +42864,7 @@ entities: decals: 4298: 43,22 4329: 35,25 - - uid: 18010 + - uid: 18005 components: - type: ChunkEntity root: 1 @@ -43100,7 +43116,7 @@ entities: cleanable: True decals: 3856: 22,95 - - uid: 18011 + - uid: 18010 components: - type: ChunkEntity root: 1 @@ -43454,7 +43470,7 @@ entities: cleanable: True decals: 4030: 21,63 - - uid: 18014 + - uid: 18011 components: - type: ChunkEntity root: 1 @@ -43688,7 +43704,7 @@ entities: color: '#FFFFFFFF' decals: 2050: 54,74 - - uid: 18016 + - uid: 18014 components: - type: ChunkEntity root: 1 @@ -43926,7 +43942,7 @@ entities: color: '#FFFFFFFF' decals: 2851: 47,39 - - uid: 18018 + - uid: 18016 components: - type: ChunkEntity root: 1 @@ -44180,7 +44196,7 @@ entities: cleanable: True decals: 4373: 66,61 - - uid: 18019 + - uid: 18018 components: - type: ChunkEntity root: 1 @@ -44408,7 +44424,7 @@ entities: 1165: 79,42 1166: 79,43 1167: 79,44 - - uid: 18020 + - uid: 18019 components: - type: ChunkEntity root: 1 @@ -44683,7 +44699,7 @@ entities: cleanable: True decals: 4370: 47,54 - - uid: 18022 + - uid: 18020 components: - type: ChunkEntity root: 1 @@ -44853,7 +44869,7 @@ entities: 3904: 47,87 3905: 43,89 3906: 33,81 - - uid: 18041 + - uid: 18022 components: - type: ChunkEntity root: 1 @@ -44900,7 +44916,7 @@ entities: color: '#EFB34196' decals: 6192: 68,112 - - uid: 18060 + - uid: 18041 components: - type: ChunkEntity root: 1 @@ -45124,7 +45140,7 @@ entities: 3783: 40,107 3785: 33,109 3819: 37,105 - - uid: 18062 + - uid: 18060 components: - type: ChunkEntity root: 1 @@ -45312,7 +45328,7 @@ entities: 1298: 79.27742,28.883457 1299: 79.52279,29.184593 1308: 79.81342,28.966824 - - uid: 18086 + - uid: 18062 components: - type: ChunkEntity root: 1 @@ -45447,7 +45463,7 @@ entities: cleanable: True decals: 3908: 67,70 - - uid: 18088 + - uid: 18086 components: - type: ChunkEntity root: 1 @@ -45690,7 +45706,7 @@ entities: cleanable: True decals: 1178: 92,63 - - uid: 18098 + - uid: 18088 components: - type: ChunkEntity root: 1 @@ -45934,7 +45950,7 @@ entities: decals: 796: 83,71 3787: 90,77 - - uid: 18143 + - uid: 18098 components: - type: ChunkEntity root: 1 @@ -46247,7 +46263,7 @@ entities: decals: 4029: 13,61 4032: 5,52 - - uid: 18144 + - uid: 18143 components: - type: ChunkEntity root: 1 @@ -46449,7 +46465,7 @@ entities: 4232: 20.707903,33.27366 4233: 20.367624,33.363937 4234: 20.59679,32.856995 - - uid: 18145 + - uid: 18144 components: - type: ChunkEntity root: 1 @@ -46654,7 +46670,7 @@ entities: cleanable: True decals: 3859: 7,84 - - uid: 18146 + - uid: 18145 components: - type: ChunkEntity root: 1 @@ -46779,7 +46795,7 @@ entities: decals: 1751: 66,12 1752: 67,12 - - uid: 18147 + - uid: 18146 components: - type: ChunkEntity root: 1 @@ -46902,7 +46918,7 @@ entities: 9: 53,122 10: 54,122 11: 55,122 - - uid: 18148 + - uid: 18147 components: - type: ChunkEntity root: 1 @@ -47015,7 +47031,7 @@ entities: cleanable: True decals: 3784: 38,114 - - uid: 18997 + - uid: 18148 components: - type: ChunkEntity root: 1 @@ -47158,7 +47174,7 @@ entities: 3786: 29,97 3820: 23,100 3822: 19,102 - - uid: 18998 + - uid: 18997 components: - type: ChunkEntity root: 1 @@ -47188,7 +47204,7 @@ entities: 7016: 55,129 7017: 58,130 7018: 60,129 - - uid: 18999 + - uid: 18998 components: - type: ChunkEntity root: 1 @@ -47210,7 +47226,7 @@ entities: cleanable: True decals: 7011: 47,129 - - uid: 19000 + - uid: 18999 components: - type: ChunkEntity root: 1 @@ -47260,7 +47276,7 @@ entities: color: '#FFFFFFFF' decals: 1709: 63,5 - - uid: 19001 + - uid: 19000 components: - type: ChunkEntity root: 1 @@ -47318,7 +47334,7 @@ entities: color: '#8D1C9996' decals: 6094: 85,96 - - uid: 19002 + - uid: 19001 components: - type: ChunkEntity root: 1 @@ -47395,7 +47411,7 @@ entities: 941: 99,75 942: 98,75 943: 97,75 - - uid: 19003 + - uid: 19002 components: - type: ChunkEntity root: 1 @@ -47497,7 +47513,7 @@ entities: 1263: 86.8568,47.701492 1265: 86.18318,47.562508 1266: 86.4193,47.38878 - - uid: 19004 + - uid: 19003 components: - type: ChunkEntity root: 1 @@ -47608,7 +47624,7 @@ entities: cleanable: True decals: 4247: 21,29 - - uid: 19005 + - uid: 19004 components: - type: ChunkEntity root: 1 @@ -47693,7 +47709,7 @@ entities: 4127: 11,40 4128: 11.999264,39.70429 4129: 10.999714,39.70429 - - uid: 19006 + - uid: 19005 components: - type: ChunkEntity root: 1 @@ -47765,7 +47781,7 @@ entities: cleanable: True decals: 1177: 96,53 - - uid: 19007 + - uid: 19006 components: - type: ChunkEntity root: 1 @@ -47782,7 +47798,7 @@ entities: cleanable: True decals: 4662: 96,80 - - uid: 19008 + - uid: 19007 components: - type: ChunkEntity root: 1 @@ -47821,7 +47837,7 @@ entities: 3557: 8,101 3558: 9,101 3559: 10,101 - - uid: 19009 + - uid: 19008 components: - type: ChunkEntity root: 1 @@ -49083,12 +49099,22 @@ entities: - type: Transform parent: 1 pos: 80.5,91.5 + - type: DeviceLinkSource + linkedPorts: + 7885: + - - OrderSender + - OrderReceiver - uid: 8083 components: - type: Transform parent: 1 rot: -1.5707963267948966 rad pos: 92.5,83.5 + - type: DeviceLinkSource + linkedPorts: + 7885: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersEngineering entities: - uid: 6769 @@ -49097,6 +49123,11 @@ entities: parent: 1 rot: 3.141592653589793 rad pos: 69.5,86.5 + - type: DeviceLinkSource + linkedPorts: + 7885: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersMedical entities: - uid: 10800 @@ -49105,6 +49136,11 @@ entities: parent: 1 rot: 3.141592653589793 rad pos: 54.5,52.5 + - type: DeviceLinkSource + linkedPorts: + 7885: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersScience entities: - uid: 16043 @@ -49113,6 +49149,11 @@ entities: parent: 1 rot: -1.5707963267948966 rad pos: 16.5,72.5 + - type: DeviceLinkSource + linkedPorts: + 7885: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersSecurity entities: - uid: 14636 @@ -49121,6 +49162,11 @@ entities: parent: 1 rot: 1.5707963267948966 rad pos: 48.5,35.5 + - type: DeviceLinkSource + linkedPorts: + 7885: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersService entities: - uid: 12593 @@ -49129,6 +49175,11 @@ entities: parent: 1 rot: 1.5707963267948966 rad pos: 55.5,77.5 + - type: DeviceLinkSource + linkedPorts: + 7885: + - - OrderSender + - OrderReceiver - proto: ComputerComms entities: - uid: 14971 @@ -49923,6 +49974,13 @@ entities: - type: Transform parent: 1 pos: 11.5,84.5 +- proto: CrewsimovCircuitBoard + entities: + - uid: 11216 + components: + - type: Transform + parent: 1 + pos: 63.5,18.5 - proto: Crowbar entities: - uid: 16100 @@ -90935,6 +90993,14 @@ entities: - type: Transform parent: 1 pos: 80.50337,80.503456 +- proto: MailCart + entities: + - uid: 7884 + components: + - type: Transform + parent: 1 + rot: -1.5707963267948966 rad + pos: 82.5,82.5 - proto: MailingUnit entities: - uid: 8101 @@ -94697,11 +94763,6 @@ entities: - type: Transform parent: 1 pos: 13.5,72.5 - - uid: 8071 - components: - - type: Transform - parent: 1 - pos: 82.5,82.5 - uid: 8274 components: - type: Transform @@ -98318,8 +98379,7 @@ entities: components: - type: Transform parent: 1 - rot: -6.283185307179586 rad - pos: 82.53075,82.528824 + pos: 84.47835,88.97516 - proto: SheetRGlass entities: - uid: 2213 From 5d248f7e62be3b1efa7e4516fca132f1811f9822 Mon Sep 17 00:00:00 2001 From: ProPeperos <61984624+ProPeperos@users.noreply.github.com> Date: Fri, 11 Sep 2026 03:53:54 +0000 Subject: [PATCH 114/197] [map] Plasma - cargo telepad (#45978) --- Resources/Maps/plasma.yml | 285 +++++++++++++++++++++----------------- 1 file changed, 161 insertions(+), 124 deletions(-) diff --git a/Resources/Maps/plasma.yml b/Resources/Maps/plasma.yml index 24f480ebe5..1be4afe5e7 100644 --- a/Resources/Maps/plasma.yml +++ b/Resources/Maps/plasma.yml @@ -4,15 +4,14 @@ meta: engineVersion: 289.0.0 forkId: "" forkVersion: "" - time: 09/07/2026 21:36:39 - entityCount: 27222 + time: 09/10/2026 21:38:49 + entityCount: 27223 maps: - 1 grids: - 2 orphans: [] nullspace: -- 27157 - 27158 - 27159 - 27160 @@ -78,6 +77,7 @@ nullspace: - 27220 - 27221 - 27222 +- 27223 tilemap: 0: Space 28: FloorArcadeRed @@ -119,6 +119,7 @@ tilemap: 44: FloorSteelCheckerDark 29: FloorSteelCheckerLight 45: FloorSteelMini + 34: FloorSteelMono 11: FloorTechMaint2 13: FloorWhite 5: FloorWood @@ -193,7 +194,7 @@ entities: version: 7 -6,0: ind: -6,0 - tiles: AwAAAAAAAAMAAAAAAAADAAAAAAAAgwAAAAAAAAcAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAADAAAAAABACAAAAAAAAAMAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAIMAAAAAAAAHAAAAAAUAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAwAAAAAAQAgAAAAAAAADAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAACDAAAAAAAABwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAMAAAAAAEAIAAAAAAAAAwAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAMAAAAAAACDAAAAAAAAAwAAAAAAACAAAAAAAAAgAAAAAAAAAwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAIAgwAAAAAAAAQAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAADAAAAAAAAgwAAAAAAAAMAAAAAAAAgAAAAAAAAIAAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAIMAAAAAAAAEAAAAAAAAAwAAAAAAACAAAAAAAAAgAAAAAAAAAwAAAAAAAIMAAAAAAAADAAAAAAAAIAAAAAAAACAAAAAAAAADAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAQCDAAAAAAAABAAAAAAAAAMAAAAAAAAgAAAAAAAAIAAAAAAAAAMAAAAAAACDAAAAAAAAAwAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAYAAAAAAAAAAAAAAAAAAAADAAAAAAAAIAAAAAAAACAAAAAAAAADAAAAAAAAgwAAAAAAAAMAAAAAAAAgAAAAAAAAIAAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAwAAAAAAAIMAAAAAAAADAAAAAAAAIAAAAAAAACAAAAAAAAADAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAIMAAAAAAAAgAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACAAAAAAAAAgAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAACgAAAAAAAAoAAAAAAAAHAAAAAAMABwAAAAADAAcAAAAAAwCDAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAACgAAAAABAAoAAAAAAQAKAAAAAAEABwAAAAAAAAcAAAAABQAHAAAAAAIABwAAAAACAAcAAAAAAgAHAAAAAAUAgwAAAAAAAAEAAAAAAAABAAAAAAIAAAAAAAAAAA== + tiles: AwAAAAAAAAMAAAAAAAADAAAAAAAAgwAAAAAAAAcAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAADAAAAAABACAAAAAAAAAMAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAIMAAAAAAAAHAAAAAAUAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAwAAAAAAQAgAAAAAAAADAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAACDAAAAAAAABwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAMAAAAAAEAIAAAAAAAAAwAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAMAAAAAAACDAAAAAAAAAwAAAAAAACAAAAAAAAAgAAAAAAAAAwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAIAgwAAAAAAAAQAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAADAAAAAAAAgwAAAAAAAAMAAAAAAAAgAAAAAAAAIAAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAIMAAAAAAAAEAAAAAAAAAwAAAAAAACAAAAAAAAAgAAAAAAAAAwAAAAAAAIMAAAAAAAADAAAAAAAAIAAAAAAAACAAAAAAAAADAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAQCDAAAAAAAABAAAAAAAAAMAAAAAAAAgAAAAAAAAIAAAAAAAAAMAAAAAAACDAAAAAAAAAwAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAYAAAAAAAAAAAAAAAAAAAADAAAAAAAAIAAAAAAAACAAAAAAAAADAAAAAAAAgwAAAAAAAAMAAAAAAAAgAAAAAAAAIAAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAwAAAAAAAIMAAAAAAAADAAAAAAAAIAAAAAAAACAAAAAAAAADAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAIMAAAAAAAAgAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACAAAAAAAAAgAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIgAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAACgAAAAAAAAoAAAAAAAAHAAAAAAMABwAAAAADAAcAAAAAAwCDAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAIgAAAAAAACIAAAAAAAAiAAAAAAAACgAAAAABAAoAAAAAAQAKAAAAAAEABwAAAAAAAAcAAAAABQAHAAAAAAIABwAAAAACAAcAAAAAAgAHAAAAAAUAgwAAAAAAAAEAAAAAAAABAAAAAAIAAAAAAAAAAA== version: 7 -4,-1: ind: -4,-1 @@ -309,7 +310,7 @@ entities: version: 7 -7,0: ind: -7,0 - tiles: gwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAABgCDAAAAAAAABwAAAAAFAAcAAAAAAwAKAAAAAAAACgAAAAABAAcAAAAABQCDAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAABAAAAAAIAgwAAAAAAAAcAAAAABAAHAAAAAAAACgAAAAACAAoAAAAAAAACAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAAQAAAAACAIMAAAAAAAAHAAAAAAQABwAAAAAEAAoAAAAAAAAKAAAAAAEABwAAAAABAIMAAAAAAAADAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAAEAAAAAAACDAAAAAAAABwAAAAACAAcAAAAAAQAKAAAAAAIACgAAAAADAAcAAAAABQCDAAAAAAAAgwAAAAAAAIMAAAAAAAAgAAAAAAAAgwAAAAAAAIMAAAAAAAASAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAAgwAAAAAAAAcAAAAAAwAHAAAAAAIACgAAAAACAAoAAAAAAwACAAAAAAAAAgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAIAAQAAAAAAAAEAAAAAAAAHAAAAAAUABwAAAAAEAIMAAAAAAAAHAAAAAAYABwAAAAABAAoAAAAAAwAKAAAAAAMAAgAAAAAAAAIAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABIAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAABQCDAAAAAAAABwAAAAAGAAcAAAAABAAKAAAAAAAACgAAAAACAAcAAAAAAQAHAAAAAAYAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAIACgAAAAAAAAoAAAAAAwAKAAAAAAIACgAAAAABAAoAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAGAAoAAAAAAQAKAAAAAAMACgAAAAABAAoAAAAAAQAgAAAAAAAAIAAAAAAAAIMAAAAAAAAgAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAABwAAAAACAAcAAAAABgAKAAAAAAMACgAAAAAAAAoAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACDAAAAAAAAAwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAUAgwAAAAAAAAcAAAAABgACAAAAAAAACgAAAAAAAAoAAAAAAAAgAAAAAAAABwAAAAAAAAcAAAAAAAAgAAAAAAAAgwAAAAAAAAMAAAAAAAABAAAAAAEAAQAAAAACAAEAAAAAAAAHAAAAAAEABwAAAAABAIMAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAAAgAKAAAAAAEAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIMAAAAAAAADAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIMAAAAAAACDAAAAAAAAIAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIMAAAAAAAAgAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAA== + tiles: gwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAABgCDAAAAAAAABwAAAAAFAAcAAAAAAwAKAAAAAAAACgAAAAABAAcAAAAABQCDAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAABAAAAAAIAgwAAAAAAAAcAAAAABAAHAAAAAAAACgAAAAACAAoAAAAAAAACAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAAQAAAAACAIMAAAAAAAAHAAAAAAQABwAAAAAEAAoAAAAAAAAKAAAAAAEABwAAAAABAIMAAAAAAAADAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAAEAAAAAAACDAAAAAAAABwAAAAACAAcAAAAAAQAKAAAAAAIACgAAAAADAAcAAAAABQCDAAAAAAAAgwAAAAAAAIMAAAAAAAAgAAAAAAAAgwAAAAAAAIMAAAAAAAASAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAAgwAAAAAAAAcAAAAAAwAHAAAAAAIACgAAAAACAAoAAAAAAwACAAAAAAAAAgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAIAAQAAAAAAAAEAAAAAAAAHAAAAAAUABwAAAAAEAIMAAAAAAAAHAAAAAAYABwAAAAABAAoAAAAAAwAKAAAAAAMAAgAAAAAAAAIAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABIAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAABQCDAAAAAAAABwAAAAAGAAcAAAAABAAKAAAAAAAACgAAAAACAAcAAAAAAQAHAAAAAAYAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAIACgAAAAAAAAoAAAAAAwAKAAAAAAIACgAAAAABAAoAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAGAAoAAAAAAQAKAAAAAAMACgAAAAABAAoAAAAAAQAgAAAAAAAAIAAAAAAAAIMAAAAAAAAgAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAABwAAAAACAAcAAAAABgAKAAAAAAMACgAAAAAAAAoAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACDAAAAAAAAAwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAUAgwAAAAAAAAcAAAAABgACAAAAAAAACgAAAAAAAAoAAAAAAAAgAAAAAAAABwAAAAAAAAcAAAAAAAAgAAAAAAAAgwAAAAAAAAMAAAAAAAABAAAAAAEAAQAAAAACAAEAAAAAAAAHAAAAAAEABwAAAAABAIMAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAAAgAKAAAAAAEAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIMAAAAAAAADAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIMAAAAAAACDAAAAAAAAIAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIMAAAAAAAAgAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIgAAAAAAAA== version: 7 -9,-4: ind: -9,-4 @@ -329,7 +330,7 @@ entities: version: 7 -6,1: ind: -6,1 - tiles: IAAAAAAAACAAAAAAAAAgAAAAAAAACgAAAAAAAAcAAAAABQAHAAAAAAEABwAAAAACAAcAAAAAAAAHAAAAAAAABwAAAAABAAcAAAAABACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAACgAAAAADAAoAAAAAAgAHAAAAAAIABwAAAAAEAAcAAAAAAgAHAAAAAAUABwAAAAADAAcAAAAAAgCDAAAAAAAAgwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAAAoAAAAAAgAHAAAAAAMABwAAAAADAAcAAAAABAAHAAAAAAUABwAAAAAFAAcAAAAAAQAHAAAAAAIAgwAAAAAAAIMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAKAAAAAAMABwAAAAADAAcAAAAAAgAHAAAAAAYABwAAAAABAAcAAAAABgAHAAAAAAQABwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAACAAAAAAAAAKAAAAAAMACgAAAAABAAcAAAAABQAHAAAAAAMABwAAAAAFAAcAAAAABAAHAAAAAAIABwAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAgAAAAAAAACgAAAAABAAcAAAAAAAAHAAAAAAUABwAAAAACAAcAAAAABAAHAAAAAAMABwAAAAADAAcAAAAABgCDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAAAAAoAAAAAAAAHAAAAAAEABwAAAAAFAAcAAAAABAAHAAAAAAUABwAAAAACAAcAAAAABgAHAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAACAAAAAAAAAHAAAAAAYABwAAAAADABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAIAAQAAAAAAAAAAAAAAAAAgAAAAAAAABwAAAAAEAAcAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAACAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAcAAAAAAgAHAAAAAAUAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAAADAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAIAAQAAAAABAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAMAAAAAAACDAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAACDAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAADAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAEAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAwAAAAAAAIMAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAMAAAAAAACDAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAACDAAAAAAAAAAAAAAAAAAEAAAAAAgAAAAAAAAAAgwAAAAAAACAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAIAAAAAAAAAAA== + tiles: IAAAAAAAACIAAAAAAAAgAAAAAAAACgAAAAAAAAcAAAAABQAHAAAAAAEABwAAAAACAAcAAAAAAAAHAAAAAAAABwAAAAABAAcAAAAABACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAACAAAAAAAAAiAAAAAAAACgAAAAADAAoAAAAAAgAHAAAAAAIABwAAAAAEAAcAAAAAAgAHAAAAAAUABwAAAAADAAcAAAAAAgCDAAAAAAAAgwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAgAAAAAAAAIgAAAAAAAAoAAAAAAgAHAAAAAAMABwAAAAADAAcAAAAABAAHAAAAAAUABwAAAAAFAAcAAAAAAQAHAAAAAAIAgwAAAAAAAIMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAAAACIAAAAAAAAKAAAAAAMABwAAAAADAAcAAAAAAgAHAAAAAAYABwAAAAABAAcAAAAABgAHAAAAAAQABwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAACAAAAAAAAAKAAAAAAMACgAAAAABAAcAAAAABQAHAAAAAAMABwAAAAAFAAcAAAAABAAHAAAAAAIABwAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAgAAAAAAAACgAAAAABAAcAAAAAAAAHAAAAAAUABwAAAAACAAcAAAAABAAHAAAAAAMABwAAAAADAAcAAAAABgCDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAAAAAoAAAAAAAAHAAAAAAEABwAAAAAFAAcAAAAABAAHAAAAAAUABwAAAAACAAcAAAAABgAHAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAACAAAAAAAAAHAAAAAAYABwAAAAADABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAIAAQAAAAAAAAAAAAAAAAAgAAAAAAAABwAAAAAEAAcAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAACAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAcAAAAAAgAHAAAAAAUAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAAADAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAIAAQAAAAABAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAMAAAAAAACDAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAACDAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAADAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAEAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAwAAAAAAAIMAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAMAAAAAAACDAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAACDAAAAAAAAAAAAAAAAAAEAAAAAAgAAAAAAAAAAgwAAAAAAACAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAIAAAAAAAAAAA== version: 7 -6,2: ind: -6,2 @@ -2842,7 +2843,6 @@ entities: - type: ExplosionAirtightGrid - type: ChunkContainer chunkEntities: - - 27157 - 27158 - 27159 - 27160 @@ -2908,6 +2908,7 @@ entities: - 27220 - 27221 - 27222 + - 27223 - proto: AccordionInstrument entities: - uid: 25884 @@ -5641,7 +5642,7 @@ entities: invokeCounter: 2 - type: DeviceLinkSource linkedPorts: - 10563: + 6587: - - DoorStatus - DoorBolt - uid: 10566 @@ -5654,7 +5655,7 @@ entities: invokeCounter: 2 - type: DeviceLinkSource linkedPorts: - 10564: + 10563: - - DoorStatus - DoorBolt - uid: 21370 @@ -5931,6 +5932,38 @@ entities: pos: -39.5,19.5 - type: DeviceLinkSink invokeCounter: 2 +- proto: AirlockExternalGlassShuttleCargo + entities: + - uid: 6587 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -81.5,18.5 + - type: DeviceLinkSource + linkedPorts: + 8961: + - - DoorStatus + - InputA + - - DockStatus + - InputB + - type: DeviceLinkSink + invokeCounter: 1 + - uid: 10563 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -81.5,20.5 + - type: DeviceLinkSource + linkedPorts: + 12421: + - - DoorStatus + - InputA + - - DockStatus + - InputB + - type: DeviceLinkSink + invokeCounter: 1 - proto: AirlockExternalGlassShuttleEmergencyLocked entities: - uid: 8718 @@ -6407,36 +6440,6 @@ entities: - InputB - type: DeviceLinkSink invokeCounter: 2 - - uid: 10563 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -81.5,18.5 - - type: DeviceLinkSource - linkedPorts: - 8961: - - - DoorStatus - - InputA - - - DockStatus - - InputB - - type: DeviceLinkSink - invokeCounter: 2 - - uid: 10564 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -81.5,20.5 - - type: DeviceLinkSource - linkedPorts: - 12421: - - - DoorStatus - - InputA - - - DockStatus - - InputB - - type: DeviceLinkSink - invokeCounter: 2 - uid: 24212 components: - type: Transform @@ -7454,7 +7457,7 @@ entities: pos: -131.5,-45.5 - type: Door state: Opening - secondsUntilStateChange: -100831.81 + secondsUntilStateChange: -101415.96 - type: DeviceLinkSource lastSignals: DoorStatus: True @@ -50954,6 +50957,13 @@ entities: - type: Transform parent: 2 pos: -102.5,16.5 +- proto: CargoTelepad + entities: + - uid: 27157 + components: + - type: Transform + parent: 2 + pos: -88.5,19.5 - proto: Carpet entities: - uid: 3375 @@ -59947,7 +59957,7 @@ entities: pos: -85.48848,-41.319702 - proto: ChunkEntity entities: - - uid: 27157 + - uid: 27158 components: - type: ChunkEntity root: 2 @@ -60290,7 +60300,7 @@ entities: 7763: -116,-43 7764: -115,-43 7765: -114,-43 - - uid: 27158 + - uid: 27159 components: - type: ChunkEntity root: 2 @@ -60464,7 +60474,7 @@ entities: decals: 2408: -113,17 2409: -114,17 - - uid: 27159 + - uid: 27160 components: - type: ChunkEntity root: 2 @@ -60854,7 +60864,7 @@ entities: decals: 1451: -58,-21 1452: -59,-21 - - uid: 27160 + - uid: 27161 components: - type: ChunkEntity root: 2 @@ -61102,7 +61112,7 @@ entities: 724: -27,-51 725: -27,-50 726: -27,-49 - - uid: 27161 + - uid: 27162 components: - type: ChunkEntity root: 2 @@ -61353,7 +61363,7 @@ entities: 6803: -104,15 6804: -103,15 6805: -99,15 - - uid: 27162 + - uid: 27163 components: - type: ChunkEntity root: 2 @@ -61476,7 +61486,7 @@ entities: color: '#FFFFFFFF' decals: 292: -47,1 - - uid: 27163 + - uid: 27164 components: - type: ChunkEntity root: 2 @@ -61648,7 +61658,7 @@ entities: 7807: -121,10 7808: -120,10 7809: -119,10 - - uid: 27164 + - uid: 27165 components: - type: ChunkEntity root: 2 @@ -61993,7 +62003,7 @@ entities: decals: 7873: -22,-21 7874: -22,-20 - - uid: 27165 + - uid: 27166 components: - type: ChunkEntity root: 2 @@ -62194,7 +62204,7 @@ entities: color: '#FFFFFFFF' decals: 7605: -98,-9 - - uid: 27166 + - uid: 27167 components: - type: ChunkEntity root: 2 @@ -62484,7 +62494,7 @@ entities: color: '#FFFFFFFF' decals: 308: -47,-6 - - uid: 27167 + - uid: 27168 components: - type: ChunkEntity root: 2 @@ -62690,7 +62700,7 @@ entities: color: '#DE3A3A96' decals: 8075: -78,-29 - - uid: 27168 + - uid: 27169 components: - type: ChunkEntity root: 2 @@ -62926,7 +62936,7 @@ entities: 1308: -31,-11 1309: -30,-11 1310: -29,-11 - - uid: 27169 + - uid: 27170 components: - type: ChunkEntity root: 2 @@ -63331,7 +63341,7 @@ entities: 1784: -82,-32 1785: -81,-32 8262: -84,-32 - - uid: 27170 + - uid: 27171 components: - type: ChunkEntity root: 2 @@ -63536,7 +63546,7 @@ entities: decals: 6683: -119,-66 6684: -119,-67 - - uid: 27171 + - uid: 27172 components: - type: ChunkEntity root: 2 @@ -63611,7 +63621,7 @@ entities: color: '#D381C996' decals: 7011: -122,-83 - - uid: 27172 + - uid: 27173 components: - type: ChunkEntity root: 2 @@ -63795,7 +63805,7 @@ entities: 86: -65,-6 115: -65,-12 116: -65,-11 - - uid: 27173 + - uid: 27174 components: - type: ChunkEntity root: 2 @@ -63965,7 +63975,7 @@ entities: decals: 2181: -132,-17 2182: -132,-18 - - uid: 27174 + - uid: 27175 components: - type: ChunkEntity root: 2 @@ -64242,7 +64252,7 @@ entities: 271: -54,-6 272: -54,-7 290: -54,-1 - - uid: 27175 + - uid: 27176 components: - type: ChunkEntity root: 2 @@ -64439,7 +64449,7 @@ entities: 475: -29,0 630: -30,4 631: -30,8 - - uid: 27176 + - uid: 27177 components: - type: ChunkEntity root: 2 @@ -64763,7 +64773,7 @@ entities: 542: -40,-25 543: -39,-25 1204: -48,-23 - - uid: 27177 + - uid: 27178 components: - type: ChunkEntity root: 2 @@ -64997,7 +65007,7 @@ entities: 458: -14,-13 459: -14,-14 460: -14,-15 - - uid: 27178 + - uid: 27179 components: - type: ChunkEntity root: 2 @@ -65145,7 +65155,7 @@ entities: 966: -12,-20 996: -12,-21 1004: -12,-19 - - uid: 27179 + - uid: 27180 components: - type: ChunkEntity root: 2 @@ -65530,7 +65540,7 @@ entities: 1941: -85,-35 1942: -85,-34 1943: -85,-33 - - uid: 27180 + - uid: 27181 components: - type: ChunkEntity root: 2 @@ -65731,7 +65741,7 @@ entities: color: '#FFFFFFFF' decals: 2175: -128,-16 - - uid: 27181 + - uid: 27182 components: - type: ChunkEntity root: 2 @@ -65834,7 +65844,7 @@ entities: 2055: -151,-4 2056: -149,-4 2058: -151,-12 - - uid: 27182 + - uid: 27183 components: - type: ChunkEntity root: 2 @@ -66031,7 +66041,7 @@ entities: decals: 2382: -89,12 2383: -90,12 - - uid: 27183 + - uid: 27184 components: - type: ChunkEntity root: 2 @@ -66256,7 +66266,7 @@ entities: 2633: -135,-46 2634: -134,-46 2635: -133,-46 - - uid: 27184 + - uid: 27185 components: - type: ChunkEntity root: 2 @@ -66473,7 +66483,7 @@ entities: 2798: -104,-37 7366: -105,-37 8167: -97,-43 - - uid: 27185 + - uid: 27186 components: - type: ChunkEntity root: 2 @@ -66779,7 +66789,7 @@ entities: cleanable: True decals: 5965: -40,-47 - - uid: 27186 + - uid: 27187 components: - type: ChunkEntity root: 2 @@ -66820,7 +66830,7 @@ entities: 2759: -131,-49 2760: -130,-49 2761: -129,-49 - - uid: 27187 + - uid: 27188 components: - type: ChunkEntity root: 2 @@ -66903,7 +66913,7 @@ entities: 6522: -95,35 6523: -94,35 7863: -96,35 - - uid: 27188 + - uid: 27189 components: - type: ChunkEntity root: 2 @@ -67084,7 +67094,7 @@ entities: 6510: -94,30 6511: -93,30 6512: -92,30 - - uid: 27189 + - uid: 27190 components: - type: ChunkEntity root: 2 @@ -67370,7 +67380,7 @@ entities: 703: -31,-40 704: -30,-40 705: -29,-40 - - uid: 27190 + - uid: 27191 components: - type: ChunkEntity root: 2 @@ -67532,7 +67542,7 @@ entities: color: '#FFFFFFFF' decals: 2176: -128,-17 - - uid: 27191 + - uid: 27192 components: - type: ChunkEntity root: 2 @@ -67783,7 +67793,7 @@ entities: 7998: -101,-31 7999: -101,-30 8001: -101,-29 - - uid: 27192 + - uid: 27193 components: - type: ChunkEntity root: 2 @@ -68082,7 +68092,7 @@ entities: decals: 7606: -96,-8 7608: -93,-10 - - uid: 27193 + - uid: 27194 components: - type: ChunkEntity root: 2 @@ -68239,7 +68249,7 @@ entities: 5456: -134,-1 5457: -135,-1 5461: -134,-5 - - uid: 27194 + - uid: 27195 components: - type: ChunkEntity root: 2 @@ -68424,7 +68434,7 @@ entities: color: '#FFFFFFFF' decals: 291: -54,0 - - uid: 27195 + - uid: 27196 components: - type: ChunkEntity root: 2 @@ -68520,7 +68530,7 @@ entities: decals: 176: -68,0 177: -67,0 - - uid: 27196 + - uid: 27197 components: - type: ChunkEntity root: 2 @@ -68712,7 +68722,7 @@ entities: color: '#FFFFFFFF' decals: 1038: -64,-37 - - uid: 27197 + - uid: 27198 components: - type: ChunkEntity root: 2 @@ -68815,7 +68825,7 @@ entities: 6342: -148,-43 6343: -147,-43 6344: -149,-43 - - uid: 27198 + - uid: 27199 components: - type: ChunkEntity root: 2 @@ -68858,7 +68868,7 @@ entities: 6345: -149,-49 6346: -148,-49 6347: -147,-49 - - uid: 27199 + - uid: 27200 components: - type: ChunkEntity root: 2 @@ -69058,7 +69068,7 @@ entities: color: '#FFFFFFFF' decals: 6103: -67,-38 - - uid: 27200 + - uid: 27201 components: - type: ChunkEntity root: 2 @@ -69255,7 +69265,7 @@ entities: 7284: -56,-52 7303: -53,-56 7304: -53,-55 - - uid: 27201 + - uid: 27202 components: - type: ChunkEntity root: 2 @@ -69334,7 +69344,7 @@ entities: 5458: -135,0 5459: -134,0 5460: -134,1 - - uid: 27202 + - uid: 27203 components: - type: ChunkEntity root: 2 @@ -69444,7 +69454,7 @@ entities: 8084: -98,-51 8085: -98,-50 8086: -98,-49 - - uid: 27203 + - uid: 27204 components: - type: ChunkEntity root: 2 @@ -69621,7 +69631,7 @@ entities: color: '#FFFFFFFF' decals: 7599: -91,-63 - - uid: 27204 + - uid: 27205 components: - type: ChunkEntity root: 2 @@ -69764,7 +69774,7 @@ entities: 2953: -36,-70 2954: -34,-70 2955: -35,-70 - - uid: 27205 + - uid: 27206 components: - type: ChunkEntity root: 2 @@ -69795,7 +69805,7 @@ entities: color: '#FFFFFFFF' decals: 7818: -52,-66 - - uid: 27206 + - uid: 27207 components: - type: ChunkEntity root: 2 @@ -69929,7 +69939,7 @@ entities: 7841: -76,-56 7847: -73,-58 7849: -73,-56 - - uid: 27207 + - uid: 27208 components: - type: ChunkEntity root: 2 @@ -70139,7 +70149,7 @@ entities: color: '#B02E26FF' decals: 7771: -35.00467,-54.105 - - uid: 27208 + - uid: 27209 components: - type: ChunkEntity root: 2 @@ -70205,7 +70215,7 @@ entities: 393: -36,18 394: -36,20 395: -36,19 - - uid: 27209 + - uid: 27210 components: - type: ChunkEntity root: 2 @@ -70257,7 +70267,7 @@ entities: cleanable: True decals: 5397: -16,-55 - - uid: 27210 + - uid: 27211 components: - type: ChunkEntity root: 2 @@ -70364,7 +70374,7 @@ entities: color: '#FFFFFFFF' decals: 2938: -25,-68 - - uid: 27211 + - uid: 27212 components: - type: ChunkEntity root: 2 @@ -70431,7 +70441,7 @@ entities: decals: 7896: -91.05765,-72.96845 7897: -93.05765,-71.09345 - - uid: 27212 + - uid: 27213 components: - type: ChunkEntity root: 2 @@ -70505,7 +70515,7 @@ entities: 5445: -6,-38 5446: -4,-35 5447: -4,-35 - - uid: 27213 + - uid: 27214 components: - type: ChunkEntity root: 2 @@ -70575,7 +70585,7 @@ entities: 7237: -137,26 7238: -137,27 7239: -137,28 - - uid: 27214 + - uid: 27215 components: - type: ChunkEntity root: 2 @@ -70610,7 +70620,7 @@ entities: color: '#FFFFFFFF' decals: 7825: -77,-73 - - uid: 27215 + - uid: 27216 components: - type: ChunkEntity root: 2 @@ -70715,7 +70725,6 @@ entities: 6799: -99,16 6800: -100,16 6801: -101,16 - 6802: -102,16 7102: -97,21 7103: -97,22 7106: -97,19 @@ -70768,7 +70777,7 @@ entities: color: '#FFFFFFFF' angle: -1.5707963267948966 rad decals: - 6806: -102,16 + 0: -101,16 - node: id: LoadingArea color: '#FFFFFFFF' @@ -70839,7 +70848,7 @@ entities: decals: 2916: -111,22 2922: -110,21 - - uid: 27216 + - uid: 27217 components: - type: ChunkEntity root: 2 @@ -71036,7 +71045,7 @@ entities: 7766: -114,-49 7767: -115,-49 7768: -116,-49 - - uid: 27217 + - uid: 27218 components: - type: ChunkEntity root: 2 @@ -71121,7 +71130,7 @@ entities: 399: -30,21 405: -32,21 406: -28,21 - - uid: 27218 + - uid: 27219 components: - type: ChunkEntity root: 2 @@ -71168,7 +71177,7 @@ entities: 5669: -10,6 5670: -9,6 5671: -8,6 - - uid: 27219 + - uid: 27220 components: - type: ChunkEntity root: 2 @@ -71201,7 +71210,7 @@ entities: 6529: -98,33 6530: -98,34 6534: -98,35 - - uid: 27220 + - uid: 27221 components: - type: ChunkEntity root: 2 @@ -71234,7 +71243,7 @@ entities: 6540: -113.43667,36.99878 6541: -112.06167,35.358154 6542: -113.98354,35.201904 - - uid: 27221 + - uid: 27222 components: - type: ChunkEntity root: 2 @@ -71250,7 +71259,7 @@ entities: cleanable: True decals: 7057: -102.71358,-66.1344 - - uid: 27222 + - uid: 27223 components: - type: ChunkEntity root: 2 @@ -72885,12 +72894,22 @@ entities: - type: Transform parent: 2 pos: -101.5,12.5 + - type: DeviceLinkSource + linkedPorts: + 27157: + - - OrderSender + - OrderReceiver - uid: 17840 components: - type: Transform parent: 2 rot: -1.5707963267948966 rad pos: -98.5,13.5 + - type: DeviceLinkSource + linkedPorts: + 27157: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersEngineering entities: - uid: 22274 @@ -72899,6 +72918,11 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: -112.5,-18.5 + - type: DeviceLinkSource + linkedPorts: + 27157: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersMedical entities: - uid: 19332 @@ -72907,6 +72931,11 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: -21.5,-46.5 + - type: DeviceLinkSource + linkedPorts: + 27157: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersScience entities: - uid: 25821 @@ -72914,6 +72943,11 @@ entities: - type: Transform parent: 2 pos: -131.5,-38.5 + - type: DeviceLinkSource + linkedPorts: + 27157: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersSecurity entities: - uid: 12908 @@ -72922,6 +72956,11 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: -80.5,-27.5 + - type: DeviceLinkSource + linkedPorts: + 27157: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersService entities: - uid: 24116 @@ -72929,6 +72968,11 @@ entities: - type: Transform parent: 2 pos: -72.5,-24.5 + - type: DeviceLinkSource + linkedPorts: + 27157: + - - OrderSender + - OrderReceiver - proto: ComputerComms entities: - uid: 2690 @@ -73523,12 +73567,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: -112.5,18.5 - - uid: 6587 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -100.5,16.5 - uid: 6610 components: - type: Transform @@ -135913,7 +135951,7 @@ entities: pos: -82.5,18.5 anchored: True - type: DeviceLinkSink - invokeCounter: 2 + invokeCounter: 1 - type: DeviceLinkSource linkedPorts: 10565: @@ -136432,6 +136470,13 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage +- proto: MailCart + entities: + - uid: 10564 + components: + - type: Transform + parent: 2 + pos: -101.5,16.5 - proto: MailingUnit entities: - uid: 3012 @@ -147542,7 +147587,6 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: -53.5,-10.5 - - type: DeviceNetwork - uid: 14291 components: - type: Transform @@ -160205,13 +160249,6 @@ entities: pos: -96.5,17.5 - type: DeviceLinkSource linkedPorts: - 6587: - - - Left - - Reverse - - - Right - - Forward - - - Middle - - Off 18870: - - Left - Reverse @@ -178223,7 +178260,7 @@ entities: DoorStatus: True - type: Door state: Opening - secondsUntilStateChange: -300938.62 + secondsUntilStateChange: -301522.78 - type: Airlock autoClose: False - uid: 23283 From d690b95d6fcfdc68301474b55842df66f0cafe99 Mon Sep 17 00:00:00 2001 From: ProPeperos <61984624+ProPeperos@users.noreply.github.com> Date: Fri, 11 Sep 2026 03:54:01 +0000 Subject: [PATCH 115/197] [map] Elkridge - cargo telepad (#45979) --- Resources/Maps/elkridge.yml | 261 ++++++++++++++++++++++-------------- 1 file changed, 161 insertions(+), 100 deletions(-) diff --git a/Resources/Maps/elkridge.yml b/Resources/Maps/elkridge.yml index ca580dc881..fbccec0cc9 100644 --- a/Resources/Maps/elkridge.yml +++ b/Resources/Maps/elkridge.yml @@ -4,8 +4,8 @@ meta: engineVersion: 289.0.0 forkId: "" forkVersion: "" - time: 08/23/2026 14:45:58 - entityCount: 18753 + time: 09/10/2026 21:51:29 + entityCount: 18752 maps: - 1 grids: @@ -17,6 +17,7 @@ nullspace: - 16520 - 16545 - 16579 +- 16911 - 17458 - 18048 - 18107 @@ -61,7 +62,6 @@ nullspace: - 18750 - 18751 - 18752 -- 18753 tilemap: 0: Space 44: FloorArcadeBlue @@ -2171,6 +2171,7 @@ entities: - 16520 - 16545 - 16579 + - 16911 - 17458 - 18048 - 18107 @@ -2215,7 +2216,6 @@ entities: - 18750 - 18751 - 18752 - - 18753 - proto: AcousticGuitarInstrument entities: - uid: 15607 @@ -4740,7 +4740,7 @@ entities: pos: -15.5,-9.5 - type: Door state: Opening - secondsUntilStateChange: -6525.6064 + secondsUntilStateChange: -7192.4497 - type: DeviceLinkSource lastSignals: DoorStatus: True @@ -4838,11 +4838,25 @@ entities: - type: Transform parent: 2 pos: 7.5,40.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 6505: + - - DoorStatus + - DoorBolt - uid: 6503 components: - type: Transform parent: 2 pos: 9.5,40.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 6504: + - - DoorStatus + - DoorBolt - uid: 7670 components: - type: Transform @@ -5080,6 +5094,34 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: -10.5,46.5 +- proto: AirlockExternalGlassShuttleCargo + entities: + - uid: 6504 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 9.5,42.5 + - type: DeviceLinkSource + linkedPorts: + 6503: + - - DoorStatus + - DoorBolt + - type: DeviceLinkSink + invokeCounter: 1 + - uid: 6505 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 7.5,42.5 + - type: DeviceLinkSource + linkedPorts: + 6502: + - - DoorStatus + - DoorBolt + - type: DeviceLinkSink + invokeCounter: 1 - proto: AirlockExternalGlassShuttleEmergencyLocked entities: - uid: 3591 @@ -5440,20 +5482,6 @@ entities: - type: Transform parent: 2 pos: 7.5,22.5 -- proto: AirlockGlassShuttle - entities: - - uid: 6504 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 7.5,42.5 - - uid: 6505 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 9.5,42.5 - proto: AirlockHeadOfPersonnelLocked entities: - uid: 10830 @@ -5554,7 +5582,7 @@ entities: pos: 16.5,24.5 - type: Door state: Opening - secondsUntilStateChange: -6302.0063 + secondsUntilStateChange: -6968.8496 - type: DeviceLinkSource lastSignals: DoorStatus: True @@ -5742,7 +5770,7 @@ entities: pos: 4.5,-15.5 - type: Door state: Opening - secondsUntilStateChange: -1236.4108 + secondsUntilStateChange: -1903.254 - type: DeviceLinkSource lastSignals: DoorStatus: True @@ -5817,7 +5845,7 @@ entities: pos: 9.5,-11.5 - type: Door state: Opening - secondsUntilStateChange: -2220.8098 + secondsUntilStateChange: -2887.653 - type: DeviceLinkSource lastSignals: DoorStatus: True @@ -8458,13 +8486,6 @@ entities: - type: Transform parent: 2 pos: 33.491795,61.631714 -- proto: AsimovCircuitBoard - entities: - - uid: 5102 - components: - - type: Transform - parent: 2 - pos: -42.6537,16.70864 - proto: AtmosDeviceFanDirectional entities: - uid: 247 @@ -8562,18 +8583,6 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: -54.5,-8.5 - - uid: 10896 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 7.5,42.5 - - uid: 10897 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 9.5,42.5 - uid: 15145 components: - type: Transform @@ -13163,11 +13172,6 @@ entities: - type: Transform parent: 2 pos: 7.524176,9.531988 - - uid: 16911 - components: - - type: Transform - parent: 2 - pos: 11.396216,25.5396 - proto: Biogenerator entities: - uid: 9690 @@ -13486,12 +13490,12 @@ entities: components: - type: Transform parent: 2 - pos: 11.9063835,25.245644 + pos: 11.894741,23.706411 - uid: 16986 components: - type: Transform parent: 2 - pos: 11.4845085,25.167519 + pos: 11.665574,23.43558 - proto: BoxDarts entities: - uid: 18242 @@ -36664,6 +36668,13 @@ entities: - type: Transform parent: 2 pos: 15.5,25.5 +- proto: CargoTelepad + entities: + - uid: 10897 + components: + - type: Transform + parent: 2 + pos: 7.5,36.5 - proto: Carpet entities: - uid: 1583 @@ -45139,7 +45150,7 @@ entities: cleanable: True decals: 3560: -16,-14 - - uid: 17458 + - uid: 16911 components: - type: ChunkEntity root: 2 @@ -45340,7 +45351,7 @@ entities: cleanable: True decals: 12003: 26,-29 - - uid: 18048 + - uid: 17458 components: - type: ChunkEntity root: 2 @@ -45736,7 +45747,7 @@ entities: decals: 3594: 24,-13 3600: 30,-4 - - uid: 18107 + - uid: 18048 components: - type: ChunkEntity root: 2 @@ -45871,7 +45882,7 @@ entities: angle: 1.5707963267948966 rad decals: 11297: 30,-46 - - uid: 18630 + - uid: 18107 components: - type: ChunkEntity root: 2 @@ -46155,7 +46166,7 @@ entities: decals: 3502: 37,-1 3503: 36,-15 - - uid: 18646 + - uid: 18630 components: - type: ChunkEntity root: 2 @@ -46372,7 +46383,7 @@ entities: 12588: 53,-25 12589: 54,-25 12599: 51,-24 - - uid: 18714 + - uid: 18646 components: - type: ChunkEntity root: 2 @@ -46396,6 +46407,12 @@ entities: 5517: 11,21 5518: 11,19 5519: 10,19 + - node: + id: BotGreyscale + color: '#FFFFFFFF' + angle: -1.5707963267948966 rad + decals: + 0: 11,25 - node: id: BrickTileSteelCornerNe color: '#A4610696' @@ -46924,7 +46941,7 @@ entities: cleanable: True decals: 6483: 4,21 - - uid: 18715 + - uid: 18714 components: - type: ChunkEntity root: 2 @@ -47182,7 +47199,7 @@ entities: decals: 14309: 22.270153,41.347107 14310: 21.863903,40.956482 - - uid: 18716 + - uid: 18715 components: - type: ChunkEntity root: 2 @@ -47544,7 +47561,7 @@ entities: cleanable: True decals: 14067: -2,-33 - - uid: 18717 + - uid: 18716 components: - type: ChunkEntity root: 2 @@ -47730,7 +47747,7 @@ entities: color: '#FFFFFFFF' decals: 14524: 2,-38 - - uid: 18718 + - uid: 18717 components: - type: ChunkEntity root: 2 @@ -48257,7 +48274,7 @@ entities: decals: 3558: -25,-6 6692: -21,-8 - - uid: 18719 + - uid: 18718 components: - type: ChunkEntity root: 2 @@ -48728,7 +48745,7 @@ entities: decals: 3540: 34,13 3601: 42,14 - - uid: 18720 + - uid: 18719 components: - type: ChunkEntity root: 2 @@ -49289,7 +49306,7 @@ entities: 12098: -15,17 12099: -14,17 12757: -9,17 - - uid: 18721 + - uid: 18720 components: - type: ChunkEntity root: 2 @@ -49767,7 +49784,7 @@ entities: cleanable: True decals: 3588: -26,-29 - - uid: 18722 + - uid: 18721 components: - type: ChunkEntity root: 2 @@ -50129,7 +50146,7 @@ entities: cleanable: True decals: 12349: -28,11 - - uid: 18723 + - uid: 18722 components: - type: ChunkEntity root: 2 @@ -50214,7 +50231,7 @@ entities: cleanable: True decals: 13437: -39,15 - - uid: 18724 + - uid: 18723 components: - type: ChunkEntity root: 2 @@ -50342,7 +50359,7 @@ entities: color: '#FFFFFFFF' decals: 14811: 58,-1 - - uid: 18725 + - uid: 18724 components: - type: ChunkEntity root: 2 @@ -50802,7 +50819,7 @@ entities: 3423: 4,8 3550: 4,3 3551: 6,5 - - uid: 18726 + - uid: 18725 components: - type: ChunkEntity root: 2 @@ -51236,7 +51253,7 @@ entities: cleanable: True decals: 14070: 1,-16 - - uid: 18727 + - uid: 18726 components: - type: ChunkEntity root: 2 @@ -51637,7 +51654,7 @@ entities: 3562: -34,-12 3563: -37,-10 3564: -40,-13 - - uid: 18728 + - uid: 18727 components: - type: ChunkEntity root: 2 @@ -51922,7 +51939,7 @@ entities: decals: 3520: 32,23 3523: 45,19 - - uid: 18729 + - uid: 18728 components: - type: ChunkEntity root: 2 @@ -52337,7 +52354,7 @@ entities: cleanable: True decals: 13216: -29,28 - - uid: 18730 + - uid: 18729 components: - type: ChunkEntity root: 2 @@ -52468,7 +52485,7 @@ entities: cleanable: True decals: 13219: -32,32 - - uid: 18731 + - uid: 18730 components: - type: ChunkEntity root: 2 @@ -52974,7 +52991,7 @@ entities: cleanable: True decals: 3571: -18,-44 - - uid: 18732 + - uid: 18731 components: - type: ChunkEntity root: 2 @@ -53258,7 +53275,7 @@ entities: cleanable: True decals: 13209: -34,30 - - uid: 18733 + - uid: 18732 components: - type: ChunkEntity root: 2 @@ -53552,7 +53569,7 @@ entities: cleanable: True decals: 6315: -42,-37 - - uid: 18734 + - uid: 18733 components: - type: ChunkEntity root: 2 @@ -53842,7 +53859,7 @@ entities: cleanable: True decals: 3491: 5,-25 - - uid: 18735 + - uid: 18734 components: - type: ChunkEntity root: 2 @@ -53980,7 +53997,7 @@ entities: cleanable: True decals: 3469: -56,-12 - - uid: 18736 + - uid: 18735 components: - type: ChunkEntity root: 2 @@ -54500,7 +54517,7 @@ entities: angle: 2.5656340004316642 rad decals: 14326: 21.051403,30.893982 - - uid: 18737 + - uid: 18736 components: - type: ChunkEntity root: 2 @@ -55140,7 +55157,7 @@ entities: cleanable: True decals: 3543: 25,4 - - uid: 18738 + - uid: 18737 components: - type: ChunkEntity root: 2 @@ -55182,7 +55199,7 @@ entities: cleanable: True decals: 13208: -33,34 - - uid: 18739 + - uid: 18738 components: - type: ChunkEntity root: 2 @@ -55396,7 +55413,7 @@ entities: decals: 6353: -11.556236,57.953625 6354: -10.5999,57.645977 - - uid: 18740 + - uid: 18739 components: - type: ChunkEntity root: 2 @@ -55763,7 +55780,7 @@ entities: angle: 2.251474735072685 rad decals: 10208: -37.270893,-19.01579 - - uid: 18741 + - uid: 18740 components: - type: ChunkEntity root: 2 @@ -56002,7 +56019,7 @@ entities: color: '#FFFFFFFF' decals: 14668: -1,39 - - uid: 18742 + - uid: 18741 components: - type: ChunkEntity root: 2 @@ -56134,7 +56151,7 @@ entities: color: '#FFFFFFFF' decals: 14810: 49,3 - - uid: 18743 + - uid: 18742 components: - type: ChunkEntity root: 2 @@ -56216,7 +56233,7 @@ entities: color: '#D4D4D496' decals: 10833: -19,55 - - uid: 18744 + - uid: 18743 components: - type: ChunkEntity root: 2 @@ -56286,7 +56303,7 @@ entities: decals: 3580: -69,-32 3581: -68,-32 - - uid: 18745 + - uid: 18744 components: - type: ChunkEntity root: 2 @@ -56424,7 +56441,7 @@ entities: angle: 1.5707963267948966 rad decals: 11298: 32,-45 - - uid: 18746 + - uid: 18745 components: - type: ChunkEntity root: 2 @@ -56459,7 +56476,7 @@ entities: decals: 10738: 50,33 10739: 52,33 - - uid: 18747 + - uid: 18746 components: - type: ChunkEntity root: 2 @@ -56577,7 +56594,7 @@ entities: 10987: -61,-28 10988: -55,-28 10989: -53,-28 - - uid: 18748 + - uid: 18747 components: - type: ChunkEntity root: 2 @@ -56615,7 +56632,7 @@ entities: 10986: -61,-34 10990: -53,-34 10991: -55,-34 - - uid: 18749 + - uid: 18748 components: - type: ChunkEntity root: 2 @@ -56656,7 +56673,7 @@ entities: 10729: 48,23 10731: 50,17 10734: 48,27 - - uid: 18750 + - uid: 18749 components: - type: ChunkEntity root: 2 @@ -56678,7 +56695,7 @@ entities: cleanable: True decals: 12727: 50,-33 - - uid: 18751 + - uid: 18750 components: - type: ChunkEntity root: 2 @@ -56762,7 +56779,7 @@ entities: 13007: -36,-54 13008: -35,-54 13009: -34,-54 - - uid: 18752 + - uid: 18751 components: - type: ChunkEntity root: 2 @@ -56840,7 +56857,7 @@ entities: decals: 13357: -27,-51 13358: -23,-51 - - uid: 18753 + - uid: 18752 components: - type: ChunkEntity root: 2 @@ -58855,11 +58872,21 @@ entities: - type: Transform parent: 2 pos: 10.5,30.5 + - type: DeviceLinkSource + linkedPorts: + 10897: + - - OrderSender + - OrderReceiver - uid: 4247 components: - type: Transform parent: 2 pos: 8.5,30.5 + - type: DeviceLinkSource + linkedPorts: + 10897: + - - OrderSender + - OrderReceiver - uid: 4637 components: - type: Transform @@ -58873,6 +58900,11 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 26.5,-14.5 + - type: DeviceLinkSource + linkedPorts: + 10897: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersMedical entities: - uid: 9592 @@ -58881,6 +58913,11 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 37.5,17.5 + - type: DeviceLinkSource + linkedPorts: + 10897: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersScience entities: - uid: 5526 @@ -58888,6 +58925,11 @@ entities: - type: Transform parent: 2 pos: -19.5,21.5 + - type: DeviceLinkSource + linkedPorts: + 10897: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersSecurity entities: - uid: 13009 @@ -58896,6 +58938,11 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: -2.5,-23.5 + - type: DeviceLinkSource + linkedPorts: + 10897: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersService entities: - uid: 11732 @@ -60006,6 +60053,13 @@ entities: - type: Transform parent: 2 pos: 27.5,-1.5 +- proto: CrewsimovCircuitBoard + entities: + - uid: 5102 + components: + - type: Transform + parent: 2 + pos: -42.6537,16.70864 - proto: CrowbarOrange entities: - uid: 16048 @@ -66221,13 +66275,6 @@ entities: - type: Transform parent: 2 pos: -3.4372268,-43.335434 -- proto: DrinkWaterJug - entities: - - uid: 15217 - components: - - type: Transform - parent: 2 - pos: -31.180569,-11.36548 - proto: DrinkWhiskeyBottleFull entities: - uid: 4913 @@ -94791,6 +94838,13 @@ entities: - type: Transform parent: 2 pos: 28.622116,-32.039066 +- proto: JugWater + entities: + - uid: 15217 + components: + - type: Transform + parent: 2 + pos: -31.180569,-11.36548 - proto: KitchenElectricGrill entities: - uid: 1431 @@ -96273,6 +96327,13 @@ entities: - type: Transform parent: 2 pos: -18.5,15.5 +- proto: MailCart + entities: + - uid: 10896 + components: + - type: Transform + parent: 2 + pos: 11.5,25.5 - proto: MailingUnit entities: - uid: 11816 From af6d4a293aedd944544b57daad3dc65a001a1aaf Mon Sep 17 00:00:00 2001 From: ProPeperos <61984624+ProPeperos@users.noreply.github.com> Date: Fri, 11 Sep 2026 03:54:16 +0000 Subject: [PATCH 116/197] [map] Packed - cargo telepad (#45980) --- Resources/Maps/packed.yml | 244 +++++++++++++++++++++++--------------- 1 file changed, 148 insertions(+), 96 deletions(-) diff --git a/Resources/Maps/packed.yml b/Resources/Maps/packed.yml index 6802da8902..fd68bac942 100644 --- a/Resources/Maps/packed.yml +++ b/Resources/Maps/packed.yml @@ -4,16 +4,14 @@ meta: engineVersion: 289.0.0 forkId: "" forkVersion: "" - time: 08/22/2026 13:31:38 - entityCount: 16511 + time: 09/10/2026 21:56:10 + entityCount: 16513 maps: - 126 grids: - 2 orphans: [] nullspace: -- 15155 -- 15534 - 15658 - 15681 - 16468 @@ -60,6 +58,8 @@ nullspace: - 16509 - 16510 - 16511 +- 16512 +- 16513 tilemap: 0: Space 41: FloorArcadeBlue @@ -2052,8 +2052,6 @@ entities: - type: ExplosionAirtightGrid - type: ChunkContainer chunkEntities: - - 15155 - - 15534 - 15658 - 15681 - 16468 @@ -2100,6 +2098,8 @@ entities: - 16509 - 16510 - 16511 + - 16512 + - 16513 - uid: 126 components: - type: MetaData @@ -4228,7 +4228,7 @@ entities: invokeCounter: 1 - type: DeviceLinkSource linkedPorts: - 607: + 451: - - DoorStatus - DoorBolt - uid: 428 @@ -4241,7 +4241,7 @@ entities: invokeCounter: 1 - type: DeviceLinkSource linkedPorts: - 451: + 607: - - DoorStatus - DoorBolt - uid: 974 @@ -4395,6 +4395,38 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: -9.5,-16.5 +- proto: AirlockExternalGlassShuttleCargo + entities: + - uid: 451 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 3.5,24.5 + - type: DeviceLinkSource + linkedPorts: + 553: + - - DoorStatus + - InputA + - - DockStatus + - InputB + - type: DeviceLinkSink + invokeCounter: 1 + - uid: 607 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 3.5,26.5 + - type: DeviceLinkSource + linkedPorts: + 10982: + - - DoorStatus + - InputA + - - DockStatus + - InputB + - type: DeviceLinkSink + invokeCounter: 1 - proto: AirlockExternalGlassShuttleEmergencyLocked entities: - uid: 139 @@ -4446,36 +4478,6 @@ entities: invokeCounter: 1 - proto: AirlockExternalGlassShuttleLocked entities: - - uid: 451 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 3.5,26.5 - - type: DeviceLinkSource - linkedPorts: - 10982: - - - DoorStatus - - InputA - - - DockStatus - - InputB - - type: DeviceLinkSink - invokeCounter: 1 - - uid: 607 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 3.5,24.5 - - type: DeviceLinkSource - linkedPorts: - 553: - - - DoorStatus - - InputA - - - DockStatus - - InputB - - type: DeviceLinkSink - invokeCounter: 1 - uid: 9303 components: - type: Transform @@ -5194,7 +5196,7 @@ entities: pos: 88.5,-10.5 - type: Door state: Opening - secondsUntilStateChange: -7441.542 + secondsUntilStateChange: -10138.046 - type: DeviceLinkSource lastSignals: DoorStatus: True @@ -7067,13 +7069,6 @@ entities: - type: Transform parent: 2 pos: 38.30913,-29.45608 -- proto: AsimovCircuitBoard - entities: - - uid: 14276 - components: - - type: Transform - parent: 2 - pos: 86.51151,28.70847 - proto: AtmosDeviceFanDirectional entities: - uid: 16 @@ -32189,6 +32184,13 @@ entities: - type: Transform parent: 2 pos: 17.5,23.5 +- proto: CargoTelepad + entities: + - uid: 15155 + components: + - type: Transform + parent: 2 + pos: 12.5,30.5 - proto: Carpet entities: - uid: 266 @@ -37333,7 +37335,7 @@ entities: pos: -17.5,0.5 - proto: ChunkEntity entities: - - uid: 15155 + - uid: 15658 components: - type: ChunkEntity root: 2 @@ -37405,7 +37407,7 @@ entities: 4385: -14,0 4386: -15,0 4387: -16,0 - - uid: 15534 + - uid: 15681 components: - type: ChunkEntity root: 2 @@ -37811,7 +37813,7 @@ entities: 3522: 17.269722,20.829908 3523: 16.759306,20.339985 3524: 16.155138,20.871605 - - uid: 15658 + - uid: 16468 components: - type: ChunkEntity root: 2 @@ -38286,7 +38288,7 @@ entities: 3382: 10.194764,22.185247 3383: 9.790189,21.868116 3384: 10.158244,21.353868 - - uid: 15681 + - uid: 16469 components: - type: ChunkEntity root: 2 @@ -38347,7 +38349,7 @@ entities: color: '#FFFFFFFF' decals: 2731: -23,-23 - - uid: 16468 + - uid: 16470 components: - type: ChunkEntity root: 2 @@ -38451,7 +38453,7 @@ entities: 2658: -22,-15 2659: -23,-16 2686: -23,-12 - - uid: 16469 + - uid: 16471 components: - type: ChunkEntity root: 2 @@ -38738,7 +38740,7 @@ entities: 873: 30.736248,-12.531016 874: 29.954998,-11.531016 875: 29.470623,-11.749766 - - uid: 16470 + - uid: 16472 components: - type: ChunkEntity root: 2 @@ -38929,7 +38931,7 @@ entities: 1094: -2,-11 1095: -3,-11 1096: -4,-11 - - uid: 16471 + - uid: 16473 components: - type: ChunkEntity root: 2 @@ -39309,7 +39311,7 @@ entities: color: '#FFFFFFFF' decals: 5301: 43,24 - - uid: 16472 + - uid: 16474 components: - type: ChunkEntity root: 2 @@ -39367,7 +39369,7 @@ entities: color: '#FFFFFFFF' decals: 2732: -6,-20 - - uid: 16473 + - uid: 16475 components: - type: ChunkEntity root: 2 @@ -39842,7 +39844,7 @@ entities: angle: -4.71238898038469 rad decals: 509: 19.872448,-39.76645 - - uid: 16474 + - uid: 16476 components: - type: ChunkEntity root: 2 @@ -40139,7 +40141,7 @@ entities: 2289: 55.174343,-14.3750925 2290: 55.549343,-14.7657175 2291: 56.455593,-14.1563425 - - uid: 16475 + - uid: 16477 components: - type: ChunkEntity root: 2 @@ -40344,7 +40346,7 @@ entities: 1896: 8,-8 1897: 8,-9 1898: 8,-10 - - uid: 16476 + - uid: 16478 components: - type: ChunkEntity root: 2 @@ -40569,7 +40571,7 @@ entities: cleanable: True decals: 4514: 35,-33 - - uid: 16477 + - uid: 16479 components: - type: ChunkEntity root: 2 @@ -40748,7 +40750,7 @@ entities: color: '#FFFFFFFF' decals: 6894: 64,10 - - uid: 16478 + - uid: 16480 components: - type: ChunkEntity root: 2 @@ -40768,7 +40770,7 @@ entities: color: '#FFFFFFFF' decals: 3102: 96,27 - - uid: 16479 + - uid: 16481 components: - type: ChunkEntity root: 2 @@ -40854,7 +40856,7 @@ entities: color: '#D4D4D428' decals: 2469: 40,-19 - - uid: 16480 + - uid: 16482 components: - type: ChunkEntity root: 2 @@ -41303,7 +41305,7 @@ entities: 594: 21.536638,-27.946724 595: 20.599138,-27.556099 597: 20.724138,-25.931099 - - uid: 16481 + - uid: 16483 components: - type: ChunkEntity root: 2 @@ -41658,7 +41660,7 @@ entities: decals: 6257: 60,10 6258: 60,9 - - uid: 16482 + - uid: 16484 components: - type: ChunkEntity root: 2 @@ -41795,7 +41797,7 @@ entities: color: '#DE3A3A47' decals: 1716: 25,47 - - uid: 16483 + - uid: 16485 components: - type: ChunkEntity root: 2 @@ -41969,7 +41971,7 @@ entities: decals: 4522: 2,-32 4523: 2,-31 - - uid: 16484 + - uid: 16486 components: - type: ChunkEntity root: 2 @@ -42090,7 +42092,7 @@ entities: color: '#334E6DC8' decals: 3114: 67,23 - - uid: 16485 + - uid: 16487 components: - type: ChunkEntity root: 2 @@ -42175,7 +42177,7 @@ entities: 7012: 51,-46 7023: 50,-48 7024: 49,-45 - - uid: 16486 + - uid: 16488 components: - type: ChunkEntity root: 2 @@ -42197,7 +42199,7 @@ entities: color: '#FFFFFFFF' decals: 3156: 28,-53 - - uid: 16487 + - uid: 16489 components: - type: ChunkEntity root: 2 @@ -42220,7 +42222,7 @@ entities: 3151: 14,-51 3152: 14,-52 3153: 14,-53 - - uid: 16488 + - uid: 16490 components: - type: ChunkEntity root: 2 @@ -42354,7 +42356,7 @@ entities: 5146: 13,-36 5147: 13,-35 5148: 13,-34 - - uid: 16489 + - uid: 16491 components: - type: ChunkEntity root: 2 @@ -42587,7 +42589,7 @@ entities: 3547: 6.580261,32.77003 3548: 7.2885942,33.08275 3549: 7.799011,32.811726 - - uid: 16490 + - uid: 16492 components: - type: ChunkEntity root: 2 @@ -42843,7 +42845,7 @@ entities: 6305: 46,40 6314: 46,41 6315: 42,42 - - uid: 16491 + - uid: 16493 components: - type: ChunkEntity root: 2 @@ -43122,7 +43124,7 @@ entities: color: '#DE3A3A96' decals: 6297: 58.007366,36.859516 - - uid: 16492 + - uid: 16494 components: - type: ChunkEntity root: 2 @@ -43370,7 +43372,7 @@ entities: color: '#FFFFFFFF' decals: 6726: 59,25 - - uid: 16493 + - uid: 16495 components: - type: ChunkEntity root: 2 @@ -43475,7 +43477,7 @@ entities: angle: 0.13962634015954636 rad decals: 6457: 62.048172,49.059433 - - uid: 16494 + - uid: 16496 components: - type: ChunkEntity root: 2 @@ -43749,7 +43751,7 @@ entities: color: '#9FED5896' decals: 6934: 42,-8 - - uid: 16495 + - uid: 16497 components: - type: ChunkEntity root: 2 @@ -43916,7 +43918,7 @@ entities: color: '#D381C996' decals: 6817: 44,10 - - uid: 16496 + - uid: 16498 components: - type: ChunkEntity root: 2 @@ -43969,7 +43971,7 @@ entities: color: '#9FED5896' decals: 2207: 82,-4 - - uid: 16497 + - uid: 16499 components: - type: ChunkEntity root: 2 @@ -44122,7 +44124,7 @@ entities: decals: 2240: 77,-1 2241: 78,-1 - - uid: 16498 + - uid: 16500 components: - type: ChunkEntity root: 2 @@ -44208,7 +44210,7 @@ entities: decals: 5267: 67,47 5268: 67,46 - - uid: 16499 + - uid: 16501 components: - type: ChunkEntity root: 2 @@ -44412,7 +44414,7 @@ entities: color: '#34A2C0B2' decals: 909: 18,5 - - uid: 16500 + - uid: 16502 components: - type: ChunkEntity root: 2 @@ -44517,7 +44519,7 @@ entities: color: '#FFFFFFFF' decals: 3247: 5,15 - - uid: 16501 + - uid: 16503 components: - type: ChunkEntity root: 2 @@ -44555,7 +44557,7 @@ entities: 4390: -19,0 4391: -20,0 4392: -21,0 - - uid: 16502 + - uid: 16504 components: - type: ChunkEntity root: 2 @@ -44604,7 +44606,7 @@ entities: 7001: 49,-49 7009: 51,-49 7022: 48,-49 - - uid: 16503 + - uid: 16505 components: - type: ChunkEntity root: 2 @@ -44648,7 +44650,7 @@ entities: color: '#FFFFFFFF' decals: 5263: 92,30 - - uid: 16504 + - uid: 16506 components: - type: ChunkEntity root: 2 @@ -44690,7 +44692,7 @@ entities: color: '#FFFFFFFF' decals: 2556: 40,-49 - - uid: 16505 + - uid: 16507 components: - type: ChunkEntity root: 2 @@ -44715,7 +44717,7 @@ entities: 1713: 24,48 1714: 23,48 1715: 22,48 - - uid: 16506 + - uid: 16508 components: - type: ChunkEntity root: 2 @@ -44730,7 +44732,7 @@ entities: color: '#9FED581F' decals: 1709: 32,48 - - uid: 16507 + - uid: 16509 components: - type: ChunkEntity root: 2 @@ -44879,7 +44881,7 @@ entities: 2493: 104,-17 2494: 103,-17 2495: 106,-19 - - uid: 16508 + - uid: 16510 components: - type: ChunkEntity root: 2 @@ -44947,7 +44949,7 @@ entities: color: '#D381C996' decals: 2530: 104,-16 - - uid: 16509 + - uid: 16511 components: - type: ChunkEntity root: 2 @@ -44968,7 +44970,7 @@ entities: decals: 3110: 80,34 6896: 80,34 - - uid: 16510 + - uid: 16512 components: - type: ChunkEntity root: 2 @@ -44983,7 +44985,7 @@ entities: color: '#FFFFFFFF' decals: 5264: 96,33 - - uid: 16511 + - uid: 16513 components: - type: ChunkEntity root: 2 @@ -46586,11 +46588,21 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 7.5,21.5 + - type: DeviceLinkSource + linkedPorts: + 15155: + - - OrderSender + - OrderReceiver - uid: 5285 components: - type: Transform parent: 2 pos: 20.5,23.5 + - type: DeviceLinkSource + linkedPorts: + 15155: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersEngineering entities: - uid: 2050 @@ -46598,6 +46610,11 @@ entities: - type: Transform parent: 2 pos: 20.5,-23.5 + - type: DeviceLinkSource + linkedPorts: + 15155: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersMedical entities: - uid: 10276 @@ -46605,6 +46622,11 @@ entities: - type: Transform parent: 2 pos: 71.5,8.5 + - type: DeviceLinkSource + linkedPorts: + 15155: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersScience entities: - uid: 12164 @@ -46613,6 +46635,11 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 57.5,17.5 + - type: DeviceLinkSource + linkedPorts: + 15155: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersSecurity entities: - uid: 2367 @@ -46621,6 +46648,11 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 39.5,24.5 + - type: DeviceLinkSource + linkedPorts: + 15155: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersService entities: - uid: 6619 @@ -46629,6 +46661,11 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 32.5,-7.5 + - type: DeviceLinkSource + linkedPorts: + 15155: + - - OrderSender + - OrderReceiver - proto: ComputerComms entities: - uid: 405 @@ -47620,6 +47657,13 @@ entities: - type: Transform parent: 2 pos: 15.5,-17.5 +- proto: CrewsimovCircuitBoard + entities: + - uid: 14276 + components: + - type: Transform + parent: 2 + pos: 86.51151,28.70847 - proto: Crowbar entities: - uid: 686 @@ -47752,7 +47796,7 @@ entities: pos: 59.5,39.5 - type: Door state: Closing - secondsUntilStateChange: -39008.316 + secondsUntilStateChange: -41704.82 - proto: CurtainsWhiteOpen entities: - uid: 5741 @@ -77354,7 +77398,7 @@ entities: pos: 12.5,12.5 - type: Door state: Closing - secondsUntilStateChange: -24474.053 + secondsUntilStateChange: -27170.557 - uid: 5750 components: - type: Transform @@ -78888,6 +78932,14 @@ entities: - type: Transform parent: 2 pos: 19.434057,-38.4118 +- proto: MailCart + entities: + - uid: 15534 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 17.5,22.5 - proto: MaintenanceFluffSpawner entities: - uid: 7459 From 337206657be0c51a2fe345a4ae661ab110fd2fba Mon Sep 17 00:00:00 2001 From: Emisse <99158783+Emisse@users.noreply.github.com> Date: Fri, 11 Sep 2026 03:54:42 +0000 Subject: [PATCH 117/197] centcomm update (#45981) * centcomm update * yurg --- Resources/Maps/centcomm.yml | 625 ++++++++++++++++++++---------------- 1 file changed, 356 insertions(+), 269 deletions(-) diff --git a/Resources/Maps/centcomm.yml b/Resources/Maps/centcomm.yml index f07f6a80d3..7a797c6e26 100644 --- a/Resources/Maps/centcomm.yml +++ b/Resources/Maps/centcomm.yml @@ -4,8 +4,8 @@ meta: engineVersion: 289.0.0 forkId: "" forkVersion: "" - time: 09/09/2026 17:13:32 - entityCount: 9824 + time: 09/10/2026 23:43:42 + entityCount: 9833 maps: [] grids: - 1668 @@ -96,35 +96,35 @@ entities: chunks: -1,-1: ind: -1,-1 - tiles: eQAAAAAAAE0AAAAAAABNAAAAAAAAeQAAAAAAAE0AAAAAAABNAAAAAAAAeQAAAAAAAE0AAAAAAABNAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAAAwACAAAAAAAAAgAAAAAAAAoAAAAAAgAKAAAAAAQACgAAAAAEAAoAAAAAAgAKAAAAAAIACgAAAAAEAAoAAAAAAQAKAAAAAAUACgAAAAAEAAoAAAAAAQAKAAAAAAUACgAAAAACAAoAAAAAAgAKAAAAAAUAAgAAAAAAAAIAAAAAAAAKAAAAAAUACgAAAAAAAAoAAAAAAwAKAAAAAAAACgAAAAAEAAoAAAAABAAKAAAAAAAACgAAAAADAAoAAAAAAQAKAAAAAAIACgAAAAAFAAoAAAAAAAAKAAAAAAAACgAAAAADAAIAAAAAAAACAAAAAAAACgAAAAAFAAoAAAAAAwAKAAAAAAMACgAAAAACAAoAAAAAAwAKAAAAAAMACgAAAAAEAAoAAAAAAQAKAAAAAAMACgAAAAADAAoAAAAAAQAKAAAAAAUACgAAAAABAAoAAAAAAgACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAKAAAAAAEAAgAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAACgAAAAAAAAIAAAAAAAACAAAAAAAACwAAAAABAAsAAAAAAAAdAAAAAAAAEQAAAAAAABEAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAHQAAAAAAAAoAAAAABAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAKAAAAAAQAAgAAAAAAAAIAAAAAAAA2AAAAAAEANgAAAAAAAB0AAAAAAAARAAAAAAAAEQAAAAABAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAKAAAAAAEACgAAAAABAAoAAAAABQAKAAAAAAQACgAAAAADAAoAAAAAAgACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAACgAAAAABAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAMAAQAAAAAEAAEAAAAAAwABAAAAAAQAAQAAAAADAAEAAAAABQABAAAAAAEAeQAAAAAAAAoAAAAAAQACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAKAAAAAAUAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAABQAKAAAAAAMACgAAAAAEAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAABQB5AAAAAAAACgAAAAACAAIAAAAAAAACAAAAAAAAeQAAAAAAAB0AAAAAAAB2AAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAdAAAAAAAAdgAAAAAAAD4AAAAAAAA+AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAHQAAAAAAAHYAAAAAAAA+AAAAAAAAPgAAAAAAAA== + tiles: eQAAAAAAAE0AAAAAAABNAAAAAAAAeQAAAAAAAE0AAAAAAABNAAAAAAAAeQAAAAAAAE0AAAAAAABNAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAAAQACAAAAAAAAAgAAAAAAAAoAAAAABAAKAAAAAAAACgAAAAAAAAoAAAAAAwAKAAAAAAMACgAAAAAFAAoAAAAAAQAKAAAAAAIACgAAAAABAAoAAAAABAAKAAAAAAIACgAAAAADAAoAAAAABQAKAAAAAAQAAgAAAAAAAAIAAAAAAAAKAAAAAAUACgAAAAAEAAoAAAAAAwAKAAAAAAIACgAAAAAAAAoAAAAABAAKAAAAAAQACgAAAAAFAAoAAAAAAQAKAAAAAAQACgAAAAAEAAoAAAAABQAKAAAAAAMACgAAAAAAAAIAAAAAAAACAAAAAAAACgAAAAAEAAoAAAAABAAKAAAAAAQACgAAAAAEAAoAAAAAAwAKAAAAAAQACgAAAAAAAAoAAAAAAAAKAAAAAAMACgAAAAAEAAoAAAAAAwAKAAAAAAEACgAAAAAAAAoAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAKAAAAAAAAAgAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAACgAAAAAFAAIAAAAAAAACAAAAAAAACwAAAAABAAsAAAAAAQAdAAAAAAAAEQAAAAAAABEAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAHQAAAAAAAAoAAAAABQACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAKAAAAAAMAAgAAAAAAAAIAAAAAAAA2AAAAAAAANgAAAAAAAB0AAAAAAAARAAAAAAAAEQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAKAAAAAAMACgAAAAACAAoAAAAAAgAKAAAAAAEACgAAAAAAAAoAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAACgAAAAAEAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAUAAQAAAAADAAEAAAAAAwABAAAAAAAAAQAAAAABAAEAAAAABAABAAAAAAIAeQAAAAAAAAoAAAAABQACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAKAAAAAAIAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAAAwAKAAAAAAIACgAAAAAAAAoAAAAAAwAKAAAAAAUACgAAAAAAAAoAAAAAAAB5AAAAAAAACgAAAAABAAIAAAAAAAACAAAAAAAAeQAAAAAAAB0AAAAAAAB2AAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAdAAAAAAAAdgAAAAAAAD4AAAAAAAA+AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAHQAAAAAAAHYAAAAAAAA+AAAAAAAAPgAAAAAAAA== version: 7 0,-1: ind: 0,-1 - tiles: AgAAAAAAAAoAAAAAAwABAAAAAAEAHQAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAAKAAAAAAQAAQAAAAACAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAACgAAAAADAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAAAoAAAAAAgB5AAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAbAAAAAAAAGwAAAAAAAACAAAAAAAAFAAAAAAAAAIAAAAAAAAKAAAAAAIAHQAAAAAAAB0AAAAAAAAdAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAACAAAAAAAAHQAAAAAAAGwAAAAAAABsAAAAAAAAFAAAAAAAAAIAAAAAAAACAAAAAAAACgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAAgAAAAAAAB0AAAAAAABsAAAAAAAAbAAAAAAAAAIAAAAAAAAUAAAAAAAAAgAAAAAAAAoAAAAAAwAdAAAAAAAAHQAAAAAAAB0AAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAAAIAAAAAAAAdAAAAAAAAbAAAAAAAAGwAAAAAAAAUAAAAAAAAAgAAAAAAAAIAAAAAAAAKAAAAAAUAeQAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAGwAAAAAAABsAAAAAAAAAgAAAAAAABQAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAABsAAAAAAAAbAAAAAAAABQAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAAAwAKAAAAAAQACgAAAAADAAoAAAAAAAAKAAAAAAIACgAAAAAEAHkAAAAAAAACAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAACAAAAAAAAFAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAAAwB5AAAAAAAAAgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAKAAAAAAIAeQAAAAAAAAIAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAACgAAAAADAHkAAAAAAAB5AAAAAAAAbAAAAAAAAGwAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAB2AAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAABQB5AAAAAAAACgAAAAADAAoAAAAAAQAKAAAAAAUACgAAAAABAAoAAAAABAAKAAAAAAQACgAAAAAFAAoAAAAAAgA+AAAAAAAAdgAAAAAAAB0AAAAAAABNAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAPgAAAAAAAHYAAAAAAAAdAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: AgAAAAAAAAoAAAAAAwABAAAAAAUAHQAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAAKAAAAAAAAAQAAAAACAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAACgAAAAAEAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAAAoAAAAABQB5AAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAbAAAAAAAAGwAAAAAAAACAAAAAAAAFAAAAAAAAAIAAAAAAAAKAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAACAAAAAAAAHQAAAAAAAGwAAAAAAABsAAAAAAAAFAAAAAAAAAIAAAAAAAACAAAAAAAACgAAAAADAB0AAAAAAAAdAAAAAAAAHQAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAAgAAAAAAAB0AAAAAAABsAAAAAAAAbAAAAAAAAAIAAAAAAAAUAAAAAAAAAgAAAAAAAAoAAAAAAwAdAAAAAAAAHQAAAAAAAB0AAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAAAIAAAAAAAAdAAAAAAAAbAAAAAAAAGwAAAAAAAAUAAAAAAAAAgAAAAAAAAIAAAAAAAAKAAAAAAQAeQAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAGwAAAAAAABsAAAAAAAAAgAAAAAAABQAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAABsAAAAAAAAbAAAAAAAABQAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAAAgAKAAAAAAUACgAAAAAEAAoAAAAABAAKAAAAAAUACgAAAAADAHkAAAAAAAACAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAACAAAAAAAAFAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAAAAB5AAAAAAAAAgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAKAAAAAAAAeQAAAAAAAAIAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAACgAAAAAAAHkAAAAAAAB5AAAAAAAAJgAAAAAAACYAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAB2AAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAAAgB5AAAAAAAACgAAAAADAAoAAAAABQAKAAAAAAEACgAAAAAEAAoAAAAAAgAKAAAAAAIACgAAAAADAAoAAAAABAA+AAAAAAAAdgAAAAAAAB0AAAAAAABNAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAPgAAAAAAAHYAAAAAAAAdAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 -1,0: ind: -1,0 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAAoAAAAABQAKAAAAAAAACgAAAAAFAAoAAAAAAgAKAAAAAAIACgAAAAABAAoAAAAABAB5AAAAAAAACgAAAAABAAIAAAAAAAACAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAQAAAAAFAAEAAAAABAABAAAAAAQAAQAAAAAAAAEAAAAABQABAAAAAAUAAQAAAAACAHkAAAAAAAAKAAAAAAEAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAACgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAA+AAAAAAAAeQAAAAAAAAoAAAAAAAAKAAAAAAQACgAAAAAEAAoAAAAAAgAKAAAAAAQAeQAAAAAAAAoAAAAAAgAKAAAAAAQACgAAAAACAAoAAAAABQAKAAAAAAUACgAAAAAAAAIAAAAAAAACAAAAAAAAPgAAAAAAAAoAAAAAAQAKAAAAAAIACgAAAAAEAAoAAAAABQAKAAAAAAMACgAAAAABAHkAAAAAAAB5AAAAAAAAAQAAAAAAAAEAAAAABQB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAD4AAAAAAAB5AAAAAAAACgAAAAABAAoAAAAABQAKAAAAAAEACgAAAAADAAoAAAAABAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAKAAAAAAIAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAABAAAAAAEACgAAAAAFAAIAAAAAAAACAAAAAAAACgAAAAAEAHkAAAAAAAAKAAAAAAEACgAAAAADAAoAAAAABAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAAQAAAAAEAAoAAAAAAAACAAAAAAAAAgAAAAAAAD4AAAAAAAB5AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAKAAAAAAUAAgAAAAAAAAIAAAAAAAA+AAAAAAAAeQAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAABAAAAAAQACgAAAAAEAAIAAAAAAAACAAAAAAAAPgAAAAAAAB0AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAAQAAAAADAAoAAAAAAgACAAAAAAAAAgAAAAAAAAoAAAAABQB5AAAAAAAACgAAAAACAAoAAAAAAQAKAAAAAAIAeQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAaAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAAoAAAAAAQAKAAAAAAQACgAAAAAAAAoAAAAABAAKAAAAAAEACgAAAAADAAoAAAAABQB5AAAAAAAACgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAABQACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAQAAAAACAAEAAAAABAABAAAAAAAAAQAAAAAAAAEAAAAAAQABAAAAAAAAAQAAAAADAHkAAAAAAAAKAAAAAAMAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAACgAAAAABAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAA+AAAAAAAAeQAAAAAAAAoAAAAAAwAKAAAAAAIACgAAAAAFAAoAAAAAAQAKAAAAAAMAeQAAAAAAAAoAAAAABQAKAAAAAAAACgAAAAAEAAoAAAAAAgAKAAAAAAUACgAAAAACAAIAAAAAAAACAAAAAAAAPgAAAAAAAAoAAAAAAwAKAAAAAAUACgAAAAACAAoAAAAAAwAKAAAAAAUACgAAAAABAHkAAAAAAAB5AAAAAAAAAQAAAAACAAEAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAD4AAAAAAAB5AAAAAAAACgAAAAACAAoAAAAAAQAKAAAAAAUACgAAAAACAAoAAAAABAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAKAAAAAAQAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAABAAAAAAEACgAAAAAFAAIAAAAAAAACAAAAAAAACgAAAAAAAHkAAAAAAAAKAAAAAAIACgAAAAADAAoAAAAABQB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAAQAAAAAFAAoAAAAABQACAAAAAAAAAgAAAAAAAD4AAAAAAAB5AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAKAAAAAAAAAgAAAAAAAAIAAAAAAAA+AAAAAAAAeQAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAABAAAAAAAACgAAAAACAAIAAAAAAAACAAAAAAAAPgAAAAAAAB0AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAAQAAAAABAAoAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAAAAB5AAAAAAAACgAAAAAFAAoAAAAAAAAKAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAaAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 0,0: ind: 0,0 - tiles: dgAAAAAAAHYAAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAAAAB5AAAAAAAACgAAAAAEAAoAAAAAAQAKAAAAAAMACgAAAAAEAAoAAAAAAQAKAAAAAAAACgAAAAACAAoAAAAABAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAAKAAAAAAUAeQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACgAAAAADAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAACgAAAAAFAAoAAAAAAAAKAAAAAAIACgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAAAQB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAoAAAAAAwAKAAAAAAQACgAAAAADAAoAAAAABAACAAAAAAAACgAAAAAEAAoAAAAAAwAKAAAAAAAACgAAAAABAAoAAAAAAAAKAAAAAAIAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAKAAAAAAAACgAAAAAFAAoAAAAAAwAKAAAAAAMAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAACgAAAAADAAoAAAAABAAKAAAAAAAACgAAAAAAAAIAAAAAAAAKAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAoAAAAAAgAKAAAAAAEACgAAAAAAAAoAAAAAAgACAAAAAAAACgAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAKAAAAAAUACgAAAAACAAoAAAAAAgAKAAAAAAMAAgAAAAAAAAoAAAAABAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAACgAAAAADAAoAAAAABAAKAAAAAAUACgAAAAACAAIAAAAAAAAKAAAAAAUAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAoAAAAABAAKAAAAAAEACgAAAAABAAoAAAAAAwACAAAAAAAACgAAAAACAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAKAAAAAAIACgAAAAACAAoAAAAABQAKAAAAAAIAAgAAAAAAAAoAAAAAAwB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAACgAAAAABAAoAAAAABQAKAAAAAAIACgAAAAAEAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAoAAAAAAgAKAAAAAAAACgAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: dgAAAAAAAHYAAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAAAQB5AAAAAAAACgAAAAABAAoAAAAAAgAKAAAAAAAACgAAAAACAAoAAAAAAAAKAAAAAAUACgAAAAACAAoAAAAAAgB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAAKAAAAAAQAeQAAAAAAAHkAAAAAAAAmAAAAAAAAJgAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACgAAAAADAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAACgAAAAABAAoAAAAABQAKAAAAAAMACgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAAAQB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAoAAAAABQAKAAAAAAAACgAAAAABAAoAAAAABAACAAAAAAAACgAAAAAAAAoAAAAABQAKAAAAAAMACgAAAAAAAAoAAAAAAAAKAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAKAAAAAAAACgAAAAABAAoAAAAAAQAKAAAAAAUAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAACgAAAAAFAAoAAAAAAgAKAAAAAAMACgAAAAAFAAIAAAAAAAAKAAAAAAMAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAJgAAAAAAAAoAAAAAAgAKAAAAAAUACgAAAAADAAoAAAAAAgACAAAAAAAACgAAAAABAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAACYAAAAAAAAKAAAAAAMACgAAAAAFAAoAAAAABAAKAAAAAAAAAgAAAAAAAAoAAAAAAwB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAACgAAAAAFAAoAAAAABAAKAAAAAAMACgAAAAAEAAIAAAAAAAAKAAAAAAEAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAoAAAAABQAKAAAAAAIACgAAAAACAAoAAAAAAwACAAAAAAAACgAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAKAAAAAAMACgAAAAACAAoAAAAABQAKAAAAAAEAAgAAAAAAAAoAAAAAAQB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAACgAAAAACAAoAAAAAAwAKAAAAAAUACgAAAAAEAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAoAAAAAAQAKAAAAAAQACgAAAAAFAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 1,-1: ind: 1,-1 - tiles: HQAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAB4AAAAAAEAeAAAAAABAHgAAAAAAQB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAABQAAAAAAAACAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAABQAAAAAAAACAAAAAAAAFAAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAeQAAAAAAAHgAAAAAAAB4AAAAAAEAeAAAAAABAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAFAAAAAAAAAIAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAFAAAAAAAAAIAAAAAAAAUAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAAUAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAUAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAAgAAAAAAABQAAAAAAAB5AAAAAAAACgAAAAADAAoAAAAABQAKAAAAAAEACgAAAAAEAAoAAAAAAwAKAAAAAAUACgAAAAABAAoAAAAAAQAKAAAAAAMACgAAAAADAAoAAAAABAAKAAAAAAAACgAAAAADAGwAAAAAAABsAAAAAAAAHQAAAAAAAAoAAAAAAgACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAABsAAAAAAAAAgAAAAAAAHkAAAAAAAAKAAAAAAMAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAACgAAAAAEAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAAAgAKAAAAAAUAeQAAAAAAAAoAAAAAAwACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAKAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACgAAAAADAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: HQAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAJgAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAB4AAAAAAEAeAAAAAACAHgAAAAAAQB5AAAAAAAACgAAAAAEAAoAAAAAAwAKAAAAAAEAAgAAAAAAABQAAAAAAAACAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAoAAAAABQAKAAAAAAUACgAAAAAFABQAAAAAAAACAAAAAAAAFAAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAeQAAAAAAAHgAAAAAAQB4AAAAAAAAeAAAAAABAHkAAAAAAAAKAAAAAAIACgAAAAADAAoAAAAAAwACAAAAAAAAFAAAAAAAAAIAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAACgAAAAAAAAoAAAAAAgAKAAAAAAUAFAAAAAAAAAIAAAAAAAAUAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAoAAAAABAAKAAAAAAAACgAAAAAEAAIAAAAAAAAUAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAKAAAAAAMACgAAAAAEAAoAAAAABQAUAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAAAQB5AAAAAAAAAgAAAAAAABQAAAAAAAB5AAAAAAAACgAAAAADAAoAAAAAAQAKAAAAAAIACgAAAAAFAAoAAAAAAgAKAAAAAAMACgAAAAACAAoAAAAABAAKAAAAAAEACgAAAAAAAAoAAAAABAAKAAAAAAMACgAAAAAFAGwAAAAAAABsAAAAAAAAJgAAAAAAAAoAAAAABQACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAABsAAAAAAAAAgAAAAAAAHkAAAAAAAAKAAAAAAQAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAACgAAAAAEAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAAAwAKAAAAAAAAeQAAAAAAAAoAAAAAAgACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 1,0: ind: 1,0 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAACgAAAAAEAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAAAgAKAAAAAAUAeQAAAAAAAAoAAAAABAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAKAAAAAAQAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACgAAAAADAAoAAAAAAQB5AAAAAAAACgAAAAABAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAABQAKAAAAAAEACgAAAAADAAoAAAAABAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAKAAAAAAAACgAAAAACAHkAAAAAAAAKAAAAAAIACgAAAAAFAAoAAAAAAwAKAAAAAAEACgAAAAAEAAoAAAAABQAKAAAAAAIACgAAAAAEAAoAAAAABAAKAAAAAAQACgAAAAADAAoAAAAAAQAKAAAAAAUACgAAAAACAAoAAAAABQB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAQAAAAADAAEAAAAAAwABAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAAAAAKAAAAAAIAeQAAAAAAAAEAAAAAAgABAAAAAAUAAQAAAAAEAAEAAAAABQABAAAAAAMAeQAAAAAAAAEAAAAABQABAAAAAAIAAQAAAAACAHkAAAAAAAABAAAAAAMAAQAAAAAAAAEAAAAABQAKAAAAAAIACgAAAAAAAHkAAAAAAAABAAAAAAAAAQAAAAADAAEAAAAAAAABAAAAAAUAAQAAAAAEAHkAAAAAAAABAAAAAAMAAQAAAAAEAAEAAAAAAgB5AAAAAAAAAQAAAAADAAEAAAAABAABAAAAAAEACgAAAAABAAoAAAAABAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAAAAAKAAAAAAUAAgAAAAAAAAMAAAAABgADAAAAAAUAAwAAAAADAAMAAAAAAwADAAAAAAMAAwAAAAAGAHkAAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAAKAAAAAAMACgAAAAABAAIAAAAAAAADAAAAAAIAAwAAAAAFAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAgB5AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAACgAAAAAEAAoAAAAAAQACAAAAAAAAAwAAAAABAAMAAAAAAQADAAAAAAMAAwAAAAAFAAMAAAAAAwADAAAAAAMAeQAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAAoAAAAAAgB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAHQAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAAAQAKAAAAAAIAeQAAAAAAAAoAAAAAAQACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAKAAAAAAUAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACgAAAAAFAAoAAAAAAwB5AAAAAAAACgAAAAADAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAAAwAKAAAAAAIACgAAAAABAAoAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAKAAAAAAIACgAAAAAFAHkAAAAAAAAKAAAAAAQACgAAAAACAAoAAAAABQAKAAAAAAUACgAAAAAEAAoAAAAAAgAKAAAAAAUACgAAAAACAAoAAAAAAQAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAABAAoAAAAAAgB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAQAAAAAAAAEAAAAAAQABAAAAAAIAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAAAQAKAAAAAAUAeQAAAAAAAAEAAAAABQABAAAAAAEAAQAAAAAAAAEAAAAAAgABAAAAAAAAeQAAAAAAAAEAAAAAAQABAAAAAAUAAQAAAAAAAHkAAAAAAAABAAAAAAEAAQAAAAADAAEAAAAAAwAKAAAAAAMACgAAAAADAHkAAAAAAAABAAAAAAEAAQAAAAAAAAEAAAAAAQABAAAAAAUAAQAAAAAEAHkAAAAAAAABAAAAAAAAAQAAAAACAAEAAAAABAB5AAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAIACgAAAAACAAoAAAAAAwB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAAAwAKAAAAAAUAAgAAAAAAAAMAAAAABAADAAAAAAUAAwAAAAADAAMAAAAAAwADAAAAAAYAAwAAAAACAHkAAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAAKAAAAAAUACgAAAAACAAIAAAAAAAADAAAAAAEAAwAAAAAAAAMAAAAAAgADAAAAAAQAAwAAAAAGAAMAAAAAAwB5AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAACgAAAAAAAAoAAAAABQACAAAAAAAAAwAAAAAFAAMAAAAAAAADAAAAAAMAAwAAAAACAAMAAAAAAwADAAAAAAIAeQAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAAoAAAAAAQB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAHQAAAAAAAA== version: 7 2,0: ind: 2,0 - tiles: AgAAAAAAAHkAAAAAAABNAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAKAAAAAAUATQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAACgAAAAABAE0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAoAAAAABABNAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAKAAAAAAIATQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAADAE0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAUAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAMAAQAAAAAEAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAA+AAAAAAAAHQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2AAAAAAAAdgAAAAAAAB0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdgAAAAAAAHYAAAAAAAAdAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AgAAAAAAAHkAAAAAAABNAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAKAAAAAAUATQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAACgAAAAADAE0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAoAAAAAAwBNAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAKAAAAAAIATQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAQACgAAAAADAE0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAABQABAAAAAAIAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAUAAQAAAAADAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAA+AAAAAAAAHQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2AAAAAAAAdgAAAAAAAB0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdgAAAAAAAHYAAAAAAAAdAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 2,-1: ind: 2,-1 - tiles: HQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAEAAoAAAAAAwBNAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAKAAAAAAQATQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAACgAAAAACAE0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAoAAAAAAQBNAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAKAAAAAAMATQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAeQAAAAAAAE0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAHkAAAAAAABNAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: HQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAADAAoAAAAABQBNAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAKAAAAAAAATQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAACgAAAAAFAE0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAoAAAAAAABNAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAKAAAAAAUATQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAeQAAAAAAAE0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAHkAAAAAAABNAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 1,-2: ind: 1,-2 @@ -132,11 +132,11 @@ entities: version: 7 0,-2: ind: 0,-2 - tiles: HQAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAAEAAAAAAgB5AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAB0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAAgAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAABAAAAAAIAeQAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAAIAAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAAQAAAAADAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAACgAAAAACAB0AAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAgAAAAAAAAoAAAAAAQABAAAAAAQAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAB5AAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAIAAAAAAAAKAAAAAAAAAQAAAAAEAB0AAAAAAAACAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAAdAAAAAAAAeQAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAACAAAAAAAACgAAAAAEAAEAAAAAAwAdAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAIAAAAAAAB5AAAAAAAAAgAAAAAAAAoAAAAAAgAdAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAdAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAHQAAAAAAAAIAAAAAAAAKAAAAAAEAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAACAAAAAAAACgAAAAAEAB0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAgAAAAAAAAoAAAAAAgABAAAAAAUAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAB5AAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAA== + tiles: HQAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAAEAAAAABQB5AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAB0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAAgAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAABAAAAAAEAeQAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAAIAAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAAQAAAAADAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAACgAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAgAAAAAAAAoAAAAAAwABAAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAB5AAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAIAAAAAAAAKAAAAAAMAAQAAAAABAB0AAAAAAAACAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAAdAAAAAAAAeQAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAACAAAAAAAACgAAAAAEAAEAAAAAAgAdAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAIAAAAAAAB5AAAAAAAAAgAAAAAAAAoAAAAABAAdAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAB0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAdAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAHQAAAAAAAAIAAAAAAAAKAAAAAAMAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAACAAAAAAAACgAAAAAEAB0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAgAAAAAAAAoAAAAAAQABAAAAAAMAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAB5AAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAA== version: 7 -1,-2: ind: -1,-2 - tiles: eQAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAB0AAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAeQAAAAAAAAEAAAAAAQB5AAAAAAAAHQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAHkAAAAAAAABAAAAAAQAeQAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAQAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAACgAAAAABAAIAAAAAAAACAAAAAAAAAQAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADAAoAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAwAKAAAAAAEAAgAAAAAAAAIAAAAAAAABAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAMACgAAAAADAAIAAAAAAAACAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAoAAAAABQACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAKAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAPAAAAAAAADwAAAAAAAB5AAAAAAAANgAAAAABADYAAAAAAQB5AAAAAAAAEQAAAAABABEAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAACgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAADwAAAAAAAA8AAAAAAAAeQAAAAAAADYAAAAAAAA2AAAAAAAAeQAAAAAAABEAAAAAAQARAAAAAAEAeQAAAAAAAHkAAAAAAABoAAAAAAAAeQAAAAAAAAoAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: eQAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAB0AAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAeQAAAAAAAAEAAAAAAgB5AAAAAAAAHQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAB0AAAAAAAAdAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAHkAAAAAAAABAAAAAAQAeQAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAQAAAAADAHkAAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAACgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAFAAoAAAAAAgACAAAAAAAAAgAAAAAAAAEAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAgAKAAAAAAQAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAIACgAAAAABAAIAAAAAAAACAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAoAAAAABQACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAKAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAPAAAAAAAADwAAAAAAAB5AAAAAAAANgAAAAABADYAAAAAAAB5AAAAAAAAEQAAAAAAABEAAAAAAQB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAACgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAADwAAAAAAAA8AAAAAAAAeQAAAAAAADYAAAAAAQA2AAAAAAEAeQAAAAAAABEAAAAAAQARAAAAAAEAeQAAAAAAAHkAAAAAAABoAAAAAAAAeQAAAAAAAAoAAAAAAwACAAAAAAAAAgAAAAAAAA== version: 7 2,-2: ind: 2,-2 @@ -144,7 +144,7 @@ entities: version: 7 1,1: ind: 1,1 - tiles: AgAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAAKAAAAAAEAeQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAACgAAAAAAAHkAAAAAAAA+AAAAAAAAPgAAAAAAAHkAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAAoAAAAAAgB5AAAAAAAAPgAAAAAAAD4AAAAAAAAdAAAAAAAAdgAAAAAAAHYAAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAdgAAAAAAAHYAAAAAAAB5AAAAAAAAeQAAAAAAAD4AAAAAAAA+AAAAAAAAHQAAAAAAAHYAAAAAAAB2AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHYAAAAAAAB2AAAAAAAATQAAAAAAAHkAAAAAAAA+AAAAAAAAPgAAAAAAAB0AAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAE0AAAAAAAB5AAAAAAAAPgAAAAAAAD4AAAAAAAB5AAAAAAAAdgAAAAAAAHkAAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAeQAAAAAAAHYAAAAAAABNAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAB0AAAAAAAAdAAAAAAAATQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAE0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAABNAAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAATQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAE0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAHkAAAAAAAB5AAAAAAAATQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAAKAAAAAAQAeQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAACgAAAAAFAHkAAAAAAAA+AAAAAAAAPgAAAAAAAHkAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAAoAAAAAAQB5AAAAAAAAPgAAAAAAAD4AAAAAAAAdAAAAAAAAdgAAAAAAAHYAAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAdgAAAAAAAHYAAAAAAAB5AAAAAAAAeQAAAAAAAD4AAAAAAAA+AAAAAAAAHQAAAAAAAHYAAAAAAAB2AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHYAAAAAAAB2AAAAAAAATQAAAAAAAHkAAAAAAAA+AAAAAAAAPgAAAAAAAB0AAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAE0AAAAAAAB5AAAAAAAAPgAAAAAAAD4AAAAAAAB5AAAAAAAAdgAAAAAAAHkAAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAeQAAAAAAAHYAAAAAAABNAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAB0AAAAAAAAdAAAAAAAATQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAE0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAABNAAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAATQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAE0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAHkAAAAAAAB5AAAAAAAATQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 2,1: ind: 2,1 @@ -152,11 +152,11 @@ entities: version: 7 0,1: ind: 0,1 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAKAAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAACgAAAAAAAAoAAAAAAwAKAAAAAAAACgAAAAAAAAoAAAAAAQAKAAAAAAQAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAAoAAAAABQAKAAAAAAAACgAAAAABAAoAAAAAAgAKAAAAAAIACgAAAAAFAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAKAAAAAAUACgAAAAABAAoAAAAAAgAKAAAAAAMACgAAAAAAAAoAAAAAAgAKAAAAAAIACgAAAAAAAAoAAAAAAAAKAAAAAAUACgAAAAAEAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAAoAAAAAAgAKAAAAAAUACgAAAAADAAoAAAAABQAKAAAAAAUAeQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAAdAAAAAAAATQAAAAAAAE0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAKAAAAAAQAeQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAACgAAAAADAAoAAAAABQAKAAAAAAMACgAAAAAAAAoAAAAAAwAKAAAAAAQAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHQAAAAAAAAoAAAAABAAKAAAAAAAACgAAAAAFAAoAAAAAAQAKAAAAAAQACgAAAAACAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAKAAAAAAAACgAAAAADAAoAAAAABQAKAAAAAAQACgAAAAAFAAoAAAAAAgAKAAAAAAIACgAAAAACAAoAAAAAAwAKAAAAAAQACgAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAAoAAAAAAwAKAAAAAAMACgAAAAADAAoAAAAABQAKAAAAAAQAeQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAAdAAAAAAAATQAAAAAAAE0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAA== version: 7 -1,1: ind: -1,1 - tiles: aAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAGgAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAaAAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAABoAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAGgAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAANAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAaAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAAEAAAAABQACAAAAAAAAAgAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAAQAAAAACAAIAAAAAAAAKAAAAAAMAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAADQAAAAAAAHkAAAAAAAACAAAAAAAAeQAAAAAAAA0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAoAAAAABAANAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAADQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAA0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAANAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAHgAAAAAAQB4AAAAAAIAeAAAAAACAHgAAAAAAQB4AAAAAAEAeAAAAAAAAHgAAAAAAQB4AAAAAAIAeAAAAAAAAHgAAAAAAAB4AAAAAAIAeAAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: aAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAGgAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAaAAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAABoAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAGgAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAANAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAaAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAAEAAAAAAwACAAAAAAAAAgAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAAQAAAAAAAAIAAAAAAAAKAAAAAAUAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAADQAAAAAAAHkAAAAAAAACAAAAAAAAeQAAAAAAAA0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAoAAAAAAwANAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAADQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAA0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAANAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAHgAAAAAAgB4AAAAAAEAeAAAAAACAHgAAAAAAAB4AAAAAAAAeAAAAAABAHgAAAAAAQB4AAAAAAAAeAAAAAACAHgAAAAAAgB4AAAAAAAAeAAAAAABAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 1,2: ind: 1,2 @@ -168,23 +168,23 @@ entities: version: 7 -2,0: ind: -2,0 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAAAwAKAAAAAAUACgAAAAAFAAoAAAAABAAKAAAAAAEACgAAAAADAAoAAAAABQAKAAAAAAQACgAAAAACAAoAAAAAAwAKAAAAAAAACgAAAAAEAAoAAAAABQAKAAAAAAMACgAAAAADAAoAAAAABAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAAAQB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAdgAAAAAAAAoAAAAABQB5AAAAAAAAAQAAAAABAAEAAAAABQABAAAAAAUAAQAAAAACAHkAAAAAAAAQAAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAAoAAAAAAwAKAAAAAAQAHQAAAAAAAHYAAAAAAAAKAAAAAAIAeQAAAAAAAA8AAAAABQAPAAAAAAIADwAAAAAAAA8AAAAAAQB5AAAAAAAACgAAAAABAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAA+AAAAAAAAPgAAAAAAAHkAAAAAAAB2AAAAAAAACgAAAAABAAoAAAAAAAADAAAAAAIAAwAAAAAFAAMAAAAABQADAAAAAAMACgAAAAABAAoAAAAABQB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAdgAAAAAAAAoAAAAAAAAKAAAAAAUAAwAAAAAEAAMAAAAAAwADAAAAAAIAAwAAAAAFAAoAAAAABQAKAAAAAAIAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHYAAAAAAAAKAAAAAAQAeQAAAAAAAA8AAAAAAwAPAAAAAAEADwAAAAAEAA8AAAAAAgB5AAAAAAAACgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAKAAAAAAMAdgAAAAAAAAoAAAAAAgB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAKAAAAAAQACgAAAAACAAoAAAAAAwAKAAAAAAMACgAAAAABAAoAAAAAAgAKAAAAAAUACgAAAAACAHYAAAAAAAAKAAAAAAUAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAACgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAPgAAAAAAAD4AAAAAAAB2AAAAAAAACgAAAAABAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAoAAAAABQB2AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAdgAAAAAAAD4AAAAAAAA+AAAAAAAAdgAAAAAAAAoAAAAAAgB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAKAAAAAAQAdgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHYAAAAAAAA+AAAAAAAAPgAAAAAAAHYAAAAAAAAKAAAAAAUAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAACgAAAAAAAAoAAAAABQAKAAAAAAMACgAAAAADAAoAAAAAAgAKAAAAAAQACgAAAAADAAoAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB4AAAAAAEAeAAAAAABAHgAAAAAAgB4AAAAAAEAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAEAAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAABAAAAAAAAAQAAAAAAAAeQAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAABAAKAAAAAAUACgAAAAAEAAoAAAAABAAKAAAAAAAACgAAAAAAAAoAAAAABQAKAAAAAAQACgAAAAAEAAoAAAAABAAKAAAAAAQACgAAAAADAAoAAAAAAQAKAAAAAAUACgAAAAAEAAoAAAAABQB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAdgAAAAAAAAoAAAAAAAB5AAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAMAAQAAAAAEAHkAAAAAAAAQAAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAAoAAAAABQAKAAAAAAEACgAAAAADAHYAAAAAAAAKAAAAAAEAeQAAAAAAAA8AAAAABQAPAAAAAAEADwAAAAADAA8AAAAAAwB5AAAAAAAACgAAAAADAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAA+AAAAAAAAPgAAAAAAAHkAAAAAAAB2AAAAAAAACgAAAAACAAoAAAAABAADAAAAAAIAAwAAAAAAAAMAAAAABgADAAAAAAQACgAAAAABAAoAAAAABQB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAdgAAAAAAAAoAAAAAAwAKAAAAAAMAAwAAAAACAAMAAAAABAADAAAAAAAAAwAAAAACAAoAAAAAAQAKAAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHYAAAAAAAAKAAAAAAAAeQAAAAAAAA8AAAAABQAPAAAAAAMADwAAAAAEAA8AAAAABAB5AAAAAAAACgAAAAACAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAACgAAAAABAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAKAAAAAAEAdgAAAAAAAAoAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAKAAAAAAMACgAAAAAEAAoAAAAAAQAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAMACgAAAAABAHYAAAAAAAAKAAAAAAEAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAACgAAAAAEAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAPgAAAAAAAD4AAAAAAAB2AAAAAAAACgAAAAABAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAoAAAAAAgB2AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAdgAAAAAAAD4AAAAAAAA+AAAAAAAAdgAAAAAAAAoAAAAAAgB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAKAAAAAAAAdgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHYAAAAAAAA+AAAAAAAAPgAAAAAAAHYAAAAAAAAKAAAAAAEAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAACgAAAAADAAoAAAAAAQAKAAAAAAQACgAAAAAFAAoAAAAAAQAKAAAAAAUACgAAAAAFAAoAAAAABAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB4AAAAAAEAeAAAAAABAHgAAAAAAgB4AAAAAAEAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAEAAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAABAAAAAAAAAQAAAAAAAAeQAAAAAAAA== version: 7 -2,-1: ind: -2,-1 - tiles: TQAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAAoAAAAAAwAKAAAAAAAACgAAAAACAAoAAAAABQAKAAAAAAUACgAAAAACAAoAAAAAAAAKAAAAAAQACgAAAAABAAoAAAAAAwAKAAAAAAEACgAAAAAAAAoAAAAAAwAKAAAAAAAACgAAAAACAAoAAAAAAgAKAAAAAAMACgAAAAAEAAoAAAAAAwAKAAAAAAUACgAAAAAAAAoAAAAAAQAKAAAAAAQACgAAAAACAAoAAAAAAAAKAAAAAAEACgAAAAAFAAoAAAAAAwAKAAAAAAMACgAAAAADAAoAAAAAAQAKAAAAAAMACgAAAAAEAAoAAAAABQAKAAAAAAIACgAAAAAFAAoAAAAAAgAKAAAAAAQACgAAAAADAAoAAAAAAwAKAAAAAAIACgAAAAADAAoAAAAABAAKAAAAAAEACgAAAAAFAAoAAAAAAQAKAAAAAAMACgAAAAADAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAADwAAAAAFAA8AAAAABAAPAAAAAAIADwAAAAAAAA8AAAAAAAB2AAAAAAAADwAAAAAEAA8AAAAAAQAPAAAAAAAADwAAAAADAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAA8AAAAAAgB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAA8AAAAABQB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAPAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHYAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAPAAAAAAQAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAADwAAAAADAHkAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB5AAAAAAAADwAAAAACAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAA8AAAAAAwB5AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAeQAAAAAAAA8AAAAABAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAPAAAAAAEAeQAAAAAAAHYAAAAAAAB2AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAdgAAAAAAAHkAAAAAAAAPAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAADwAAAAACAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAADwAAAAAFAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAA8AAAAABAAPAAAAAAAAAwAAAAAGAAMAAAAAAQADAAAAAAEAAwAAAAAAAAMAAAAAAQAPAAAAAAAADwAAAAAFAA8AAAAAAgAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAAAgAKAAAAAAEACgAAAAABAAoAAAAAAwAKAAAAAAEACgAAAAAFAAoAAAAAAwAKAAAAAAQACgAAAAACAAoAAAAABAAKAAAAAAMACgAAAAADAAoAAAAABAAKAAAAAAAACgAAAAAFAAoAAAAAAgACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: TQAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAHkAAAAAAABNAAAAAAAATQAAAAAAAAoAAAAAAwAKAAAAAAAACgAAAAAEAAoAAAAABQAKAAAAAAEACgAAAAADAAoAAAAAAgAKAAAAAAEACgAAAAABAAoAAAAABAAKAAAAAAAACgAAAAAEAAoAAAAAAAAKAAAAAAIACgAAAAADAAoAAAAABQAKAAAAAAEACgAAAAAAAAoAAAAABQAKAAAAAAUACgAAAAAFAAoAAAAABQAKAAAAAAMACgAAAAABAAoAAAAABQAKAAAAAAIACgAAAAAAAAoAAAAAAAAKAAAAAAUACgAAAAAAAAoAAAAAAAAKAAAAAAEACgAAAAABAAoAAAAABAAKAAAAAAAACgAAAAAAAAoAAAAAAQAKAAAAAAQACgAAAAACAAoAAAAABAAKAAAAAAMACgAAAAACAAoAAAAAAwAKAAAAAAUACgAAAAACAAoAAAAAAgAKAAAAAAAACgAAAAAFAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAADwAAAAADAA8AAAAAAgAPAAAAAAIADwAAAAACAA8AAAAABAB2AAAAAAAADwAAAAAAAA8AAAAABAAPAAAAAAIADwAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAA8AAAAABQB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAA8AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAPAAAAAAMAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHYAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAPAAAAAAUAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAADwAAAAAEAHkAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB5AAAAAAAADwAAAAABAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAA8AAAAABAB5AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAeQAAAAAAAA8AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAPAAAAAAIAeQAAAAAAAHYAAAAAAAB2AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAdgAAAAAAAHkAAAAAAAAPAAAAAAQAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAADwAAAAACAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAADwAAAAABAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAA8AAAAAAwAPAAAAAAAAAwAAAAAGAAMAAAAABAADAAAAAAQAAwAAAAAFAAMAAAAABAAPAAAAAAAADwAAAAAEAA8AAAAAAwAKAAAAAAEAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAABAAKAAAAAAEACgAAAAAAAAoAAAAAAwAKAAAAAAUACgAAAAAEAAoAAAAAAQAKAAAAAAAACgAAAAAEAAoAAAAAAwAKAAAAAAUACgAAAAAEAAoAAAAAAgAKAAAAAAMACgAAAAADAAoAAAAAAgACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 -2,1: ind: -2,1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAABAAAAAAAAAQAAAAAAAAeQAAAAAAAHgAAAAAAAB4AAAAAAEAeAAAAAACAHgAAAAAAAB4AAAAAAEAeAAAAAACAHgAAAAAAAB4AAAAAAIAeAAAAAAAAHgAAAAAAgB4AAAAAAAAeAAAAAACAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAeQAAAAAAAHgAAAAAAgB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAaAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAHkAAAAAAAB4AAAAAAEAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAGgAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAB5AAAAAAAAeAAAAAACAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHgAAAAAAQB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAaAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHgAAAAAAgB4AAAAAAEAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAGgAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeAAAAAABAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAeQAAAAAAAHgAAAAAAgB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAaAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAHkAAAAAAAB4AAAAAAEAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAGgAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAB5AAAAAAAAeAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHgAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHgAAAAAAAB4AAAAAAIAeAAAAAAAAHgAAAAAAQB4AAAAAAAAeAAAAAACAHgAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB4AAAAAAIAeAAAAAACAHgAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAABAAAAAAAAAQAAAAAAAAeQAAAAAAAHgAAAAAAgB4AAAAAAAAeAAAAAABAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAgB4AAAAAAIAeAAAAAACAHgAAAAAAAB4AAAAAAAAeAAAAAACAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAeQAAAAAAAHgAAAAAAgB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAaAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAHkAAAAAAAB4AAAAAAEAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAGgAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAB5AAAAAAAAeAAAAAACAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHgAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAaAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHgAAAAAAgB4AAAAAAAAeAAAAAABAHgAAAAAAgB4AAAAAAEAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAGgAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAeQAAAAAAAHgAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAaAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAHkAAAAAAAB4AAAAAAEAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAGgAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAB5AAAAAAAAeAAAAAABAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHgAAAAAAQB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHgAAAAAAQB4AAAAAAEAeAAAAAABAHgAAAAAAAB4AAAAAAIAeAAAAAABAHgAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB4AAAAAAEAeAAAAAAAAHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -1,2: ind: -1,2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAEAAAAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAACAAAAAAAAAAB5AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAQAAAAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAEAAAAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAABAAAAAAAAAAB5AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAQAAAAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -3,1: ind: -3,1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAABAHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAgB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAIAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAgB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAEAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAABAHgAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAQB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAEAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAgB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAIAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAABAHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAABAHgAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAIAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAABAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAQB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAABAHgAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAEAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAQB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAACAHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 0,-3: ind: 0,-3 @@ -192,19 +192,19 @@ entities: version: 7 -1,-3: ind: -1,-3 - tiles: HQAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAdAAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAA2AAAAAAEANgAAAAABAAIAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAANgAAAAABADYAAAAAAQACAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAB0AAAAAAAAMAAAAAAAADAAAAAAAAB0AAAAAAAAOAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAdAAAAAAAADAAAAAAAAAwAAAAAAAAdAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAHQAAAAAAAAwAAAAAAAAMAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAB0AAAAAAAAMAAAAAAAADAAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAA== + tiles: HQAAAAAAAAIAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAdAAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAA2AAAAAAAANgAAAAAAAAIAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAANgAAAAABADYAAAAAAQACAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAB0AAAAAAAAMAAAAAAAADAAAAAAAAB0AAAAAAAAOAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAdAAAAAAAADAAAAAAAAAwAAAAAAAAdAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAHQAAAAAAAAwAAAAAAAAMAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAB0AAAAAAAAMAAAAAAAADAAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAA== version: 7 -2,-2: ind: -2,-2 - tiles: AQAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAGwAAAAAAABsAAAAAAAAAgAAAAAAAAEAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAABsAAAAAAAAbAAAAAAAAAIAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAbAAAAAAAAGwAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAeQAAAAAAABMAAAAAAAATAAAAAAAAeQAAAAAAAGwAAAAAAABsAAAAAAAAeQAAAAAAAAsAAAAAAQALAAAAAAAAeQAAAAAAAGwAAAAAAABsAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAATAAAAAAAAEwAAAAAAAHkAAAAAAABsAAAAAAAAbAAAAAAAAHkAAAAAAAALAAAAAAEACwAAAAABAHkAAAAAAABsAAAAAAAAbAAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAA== + tiles: AQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAGwAAAAAAABsAAAAAAAAAgAAAAAAAAEAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAABsAAAAAAAAbAAAAAAAAAIAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAbAAAAAAAAGwAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAeQAAAAAAABMAAAAAAAATAAAAAAAAeQAAAAAAAGwAAAAAAABsAAAAAAAAeQAAAAAAAAsAAAAAAAALAAAAAAEAeQAAAAAAAGwAAAAAAABsAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAATAAAAAAAAEwAAAAAAAHkAAAAAAABsAAAAAAAAbAAAAAAAAHkAAAAAAAALAAAAAAEACwAAAAABAHkAAAAAAABsAAAAAAAAbAAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAA== version: 7 -2,-3: ind: -2,-3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAwAAAAAEAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAMAAAAAAwB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAwAAAAAGAHkAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAADAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAwAAAAABAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAADAAAAAAUAeQAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAMAAAAABgB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAADAAAAAAIAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAbAAAAAAAAGwAAAAAAAACAAAAAAAAAQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAGwAAAAAAABsAAAAAAAAAgAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAwAAAAADAHkAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAMAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAwAAAAABAHkAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAADAAAAAAUAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAwAAAAADAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAADAAAAAAUAeQAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAMAAAAAAQB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAADAAAAAAAAeQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAbAAAAAAAAGwAAAAAAAACAAAAAAAAAQAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAGwAAAAAAABsAAAAAAAAAgAAAAAAAA== version: 7 1,-3: ind: 1,-3 - tiles: eQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAMAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAADAAAAAAIAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAAMAAAAAAQB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAAwAAAAADAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAAMAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAAwAAAAAEAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAADAAAAAAUAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAAwAAAAAFAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAbAAAAAAAAHkAAAAAAAAmAAAAAAAAJgAAAAAAACYAAAAAAAAmAAAAAAAAHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAAGwAAAAAAAB5AAAAAAAAJgAAAAAAACYAAAAAAAAmAAAAAAAAJgAAAAAAAB0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: eQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAAMAAAAABgB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAADAAAAAAMAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAAMAAAAABgB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAAwAAAAAEAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAAMAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAAwAAAAACAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAHkAAAAAAAADAAAAAAYAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAB5AAAAAAAAAwAAAAAEAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAbAAAAAAAAHkAAAAAAAAmAAAAAAAAJgAAAAAAACYAAAAAAAAmAAAAAAAAHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAAGwAAAAAAAB5AAAAAAAAJgAAAAAAACYAAAAAAAAmAAAAAAAAJgAAAAAAAB0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 1,-4: ind: 1,-4 @@ -224,27 +224,27 @@ entities: version: 7 -3,0: ind: -3,0 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAAAgAKAAAAAAUACgAAAAACAAoAAAAAAAAKAAAAAAIACgAAAAAFAAoAAAAABAAKAAAAAAMACgAAAAAFAAoAAAAABQAKAAAAAAMACgAAAAABAAoAAAAABQAKAAAAAAIACgAAAAACAAoAAAAAAwB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAdgAAAAAAAHkAAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHkAAAAAAAAKAAAAAAQAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB5AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAB5AAAAAAAACgAAAAACAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAeQAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAeQAAAAAAAAoAAAAAAwA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHkAAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHkAAAAAAAAKAAAAAAEAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAACgAAAAAEAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAACgAAAAABAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAoAAAAAAQB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAA2AAAAAAAACAAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAACgAAAAACAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAoAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAABQAKAAAAAAQACgAAAAABAAoAAAAABQAKAAAAAAUACgAAAAAFAAoAAAAAAAAKAAAAAAQACgAAAAADAAoAAAAAAQAKAAAAAAAACgAAAAAAAAoAAAAAAQAKAAAAAAAACgAAAAACAAoAAAAAAwB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAACgAAAAABAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAAAQB5AAAAAAAAdgAAAAAAAHkAAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHkAAAAAAAAKAAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB5AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAB5AAAAAAAACgAAAAABAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAeQAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAeQAAAAAAAAoAAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHkAAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHkAAAAAAAAKAAAAAAMAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAACgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAACgAAAAABAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAACgAAAAAFAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAoAAAAAAQB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAA2AAAAAAEACAAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAACgAAAAABAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAoAAAAABAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -3,-1: ind: -3,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAATQAAAAAAAE0AAAAAAAB5AAAAAAAATQAAAAAAAE0AAAAAAAB5AAAAAAAATQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAoAAAAABQAKAAAAAAEACgAAAAADAAoAAAAAAwAKAAAAAAAACgAAAAABAAoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAKAAAAAAQACgAAAAACAAoAAAAABQAKAAAAAAEACgAAAAAFAAoAAAAABAAKAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAACgAAAAAFAAoAAAAAAwAKAAAAAAQACgAAAAADAAoAAAAAAQAKAAAAAAAACgAAAAABAAAAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAAAAAAAAAAHkAAAAAAAAdAAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAASAAAAAAAAeQAAAAAAAB0AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAAdAAAAAAAAHQAAAAAAADYAAAAAAAA2AAAAAAEAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAEgAAAAAAAHkAAAAAAAAdAAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAABIAAAAAAAB5AAAAAAAAHQAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAASAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAAAgAKAAAAAAQACgAAAAACAAoAAAAAAAAKAAAAAAMACgAAAAAEAAoAAAAABAAKAAAAAAIACgAAAAAAAAoAAAAABQAKAAAAAAMACgAAAAAFAAoAAAAABQAKAAAAAAEACgAAAAACAAoAAAAABAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAATQAAAAAAAE0AAAAAAAB5AAAAAAAATQAAAAAAAE0AAAAAAAB5AAAAAAAATQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAoAAAAAAQAKAAAAAAAACgAAAAAEAAoAAAAAAQAKAAAAAAAACgAAAAACAAoAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAKAAAAAAMACgAAAAABAAoAAAAABQAKAAAAAAEACgAAAAABAAoAAAAAAAAKAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAACgAAAAABAAoAAAAABQAKAAAAAAAACgAAAAAFAAoAAAAABAAKAAAAAAEACgAAAAAEAAAAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAAAAAAAAAAHkAAAAAAAAdAAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAHQAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAASAAAAAAAAeQAAAAAAAB0AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAAdAAAAAAAAHQAAAAAAADYAAAAAAQA2AAAAAAEAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAEgAAAAAAAHkAAAAAAAAdAAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAABIAAAAAAAB5AAAAAAAAHQAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAASAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAB0AAAAAAAAdAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAAAwB5AAAAAAAACgAAAAAEAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAAAQAKAAAAAAMACgAAAAAEAAoAAAAAAwAKAAAAAAUACgAAAAACAAoAAAAABAAKAAAAAAIACgAAAAAFAAoAAAAAAwAKAAAAAAUACgAAAAAFAAoAAAAAAwAKAAAAAAQACgAAAAADAAoAAAAABAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 -3,-2: ind: -3,-2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAaAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAQAAAAAAAAEAAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAEAAAAAAAABAAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAaAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAQAAAAAAAAEAAAAAAAAHkAAAAAAAAdAAAAAAAAHQAAAAAAAHkAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAEAAAAAAAABAAAAAAAAB5AAAAAAAAHQAAAAAAAB0AAAAAAAB5AAAAAAAAeQAAAAAAAA== version: 7 -4,-1: ind: -4,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAdAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAAAgAKAAAAAAUACgAAAAAEAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAGgAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAKAAAAAAUAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAAAAAKAAAAAAEACgAAAAACAAoAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAGgAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 -4,0: ind: -4,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAAAwAKAAAAAAIACgAAAAAEAAoAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAB0AAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAABoAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAABAAKAAAAAAAACgAAAAAEAAoAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAAoAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAB2AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAdgAAAAAAAHYAAAAAAAB2AAAAAAAAdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -3,-3: ind: -3,-3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 - type: Broadphase - type: Physics @@ -3366,6 +3366,38 @@ entities: - type: Transform parent: 1668 pos: 33.5,-4.5 + - uid: 210 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 18.5,4.5 + - type: DeviceLinkSink + invokeCounter: 1 + - uid: 211 + components: + - type: Transform + parent: 1668 + rot: -1.5707963267948966 rad + pos: 18.5,-5.5 + - type: DeviceLinkSink + invokeCounter: 1 + - uid: 308 + components: + - type: Transform + parent: 1668 + rot: 3.141592653589793 rad + pos: 31.5,-14.5 + - type: DeviceLinkSink + invokeCounter: 1 + - uid: 309 + components: + - type: Transform + parent: 1668 + rot: 3.141592653589793 rad + pos: 30.5,-14.5 + - type: DeviceLinkSink + invokeCounter: 1 - uid: 314 components: - type: Transform @@ -3418,6 +3450,38 @@ entities: - type: Transform parent: 1668 pos: -1.5,2.5 + - uid: 517 + components: + - type: Transform + parent: 1668 + rot: 3.141592653589793 rad + pos: 29.5,-14.5 + - type: DeviceLinkSink + invokeCounter: 1 + - uid: 518 + components: + - type: Transform + parent: 1668 + rot: 3.141592653589793 rad + pos: 30.5,-7.5 + - type: DeviceLinkSink + invokeCounter: 1 + - uid: 519 + components: + - type: Transform + parent: 1668 + rot: 3.141592653589793 rad + pos: 29.5,-7.5 + - type: DeviceLinkSink + invokeCounter: 1 + - uid: 520 + components: + - type: Transform + parent: 1668 + rot: 3.141592653589793 rad + pos: 31.5,-7.5 + - type: DeviceLinkSink + invokeCounter: 1 - uid: 559 components: - type: Transform @@ -3468,16 +3532,6 @@ entities: - type: Transform parent: 1668 pos: 12.5,-3.5 - - uid: 609 - components: - - type: Transform - parent: 1668 - pos: 18.5,4.5 - - uid: 612 - components: - - type: Transform - parent: 1668 - pos: 18.5,-5.5 - uid: 729 components: - type: Transform @@ -3493,38 +3547,6 @@ entities: - type: Transform parent: 1668 pos: 20.5,-7.5 - - uid: 1140 - components: - - type: Transform - parent: 1668 - pos: 31.5,-8.5 - - type: DeviceLinkSink - invokeCounter: 1 - - uid: 1141 - components: - - type: Transform - parent: 1668 - pos: 30.5,-8.5 - - uid: 1142 - components: - - type: Transform - parent: 1668 - pos: 29.5,-8.5 - - uid: 1143 - components: - - type: Transform - parent: 1668 - pos: 31.5,-13.5 - - uid: 1144 - components: - - type: Transform - parent: 1668 - pos: 30.5,-13.5 - - uid: 1145 - components: - - type: Transform - parent: 1668 - pos: 29.5,-13.5 - uid: 2104 components: - type: Transform @@ -21286,11 +21308,6 @@ entities: decals: 544: 20,-12 545: 22,-12 - - node: - id: BrickTileSteelCornerNw - color: '#43990996' - decals: - 3: 17,-3 - node: id: BrickTileSteelLineS color: '#52B4E996' @@ -21301,11 +21318,6 @@ entities: color: '#334E6DC8' decals: 640: 19,-16 - - node: - id: BrickTileWhiteInnerSe - color: '#334E6DC8' - decals: - 662: 26,-16 - node: id: BrickTileWhiteLineE color: '#43990947' @@ -21318,8 +21330,8 @@ entities: id: BrickTileWhiteLineN color: '#334E6DC8' decals: + 3: 26,-16 629: 31,-16 - 633: 26,-16 634: 25,-16 635: 24,-16 636: 23,-16 @@ -22575,11 +22587,6 @@ entities: 966: 24,15 967: 29,15 968: 28,15 - - node: - id: BrickTileSteelCornerSw - color: '#43990996' - decals: - 1: 17,1 - node: id: BrickTileSteelLineN color: '#DE3A3A96' @@ -45045,6 +45052,13 @@ entities: - type: Transform parent: 1668 pos: -3.3831449,-0.61700773 +- proto: Jukebox + entities: + - uid: 9768 + components: + - type: Transform + parent: 1668 + pos: 29.5,-15.5 - proto: KillerTomatoSeeds entities: - uid: 1015 @@ -47221,11 +47235,11 @@ entities: pos: -7.5,14.5 - proto: PosterContrabandVoteWeh entities: - - uid: 308 + - uid: 7487 components: - type: Transform parent: 1668 - pos: 29.5,6.5 + pos: 35.5,-15.5 - proto: PosterContrabandWaffleCorp entities: - uid: 9330 @@ -47387,16 +47401,6 @@ entities: - type: Transform parent: 1668 pos: 2.5,-7.5 - - uid: 801 - components: - - type: Transform - parent: 1668 - pos: 3.5,-3.5 - - uid: 802 - components: - - type: Transform - parent: 1668 - pos: -4.5,-3.5 - uid: 1270 components: - type: Transform @@ -47617,11 +47621,6 @@ entities: - type: Transform parent: 1668 pos: -8.5,-37.5 - - uid: 9328 - components: - - type: Transform - parent: 1668 - pos: -0.5,-50.5 - uid: 9336 components: - type: Transform @@ -47782,11 +47781,11 @@ entities: pos: 11.5,6.5 - proto: PosterLegitUeNo entities: - - uid: 309 + - uid: 7102 components: - type: Transform parent: 1668 - pos: 23.5,6.5 + pos: 28.5,-10.5 - proto: PosterLegitVacation entities: - uid: 98 @@ -48229,16 +48228,6 @@ entities: parent: 1668 rot: 3.141592653589793 rad pos: 0.5,-2.5 - - uid: 210 - components: - - type: Transform - parent: 1668 - pos: 23.5,5.5 - - uid: 211 - components: - - type: Transform - parent: 1668 - pos: 29.5,5.5 - uid: 212 components: - type: Transform @@ -48251,42 +48240,12 @@ entities: parent: 1668 rot: 1.5707963267948966 rad pos: 19.5,2.5 - - uid: 517 - components: - - type: Transform - parent: 1668 - rot: -1.5707963267948966 rad - pos: 6.5,2.5 - - uid: 518 - components: - - type: Transform - parent: 1668 - rot: -1.5707963267948966 rad - pos: 6.5,-3.5 - - uid: 519 - components: - - type: Transform - parent: 1668 - rot: 1.5707963267948966 rad - pos: -7.5,-3.5 - - uid: 520 - components: - - type: Transform - parent: 1668 - rot: 1.5707963267948966 rad - pos: -7.5,2.5 - - uid: 521 - components: - - type: Transform - parent: 1668 - rot: 3.141592653589793 rad - pos: 2.5,-6.5 - uid: 522 components: - type: Transform parent: 1668 - rot: 3.141592653589793 rad - pos: -3.5,-6.5 + rot: -1.5707963267948966 rad + pos: -5.5,-3.5 - uid: 523 components: - type: Transform @@ -48303,6 +48262,23 @@ entities: parent: 1668 rot: 3.141592653589793 rad pos: 19.5,-13.5 + - uid: 547 + components: + - type: Transform + parent: 1668 + rot: 1.5707963267948966 rad + pos: 4.5,-3.5 + - uid: 548 + components: + - type: Transform + parent: 1668 + rot: 3.141592653589793 rad + pos: -11.5,-27.5 + - uid: 612 + components: + - type: Transform + parent: 1668 + pos: 24.5,5.5 - uid: 619 components: - type: Transform @@ -48329,8 +48305,7 @@ entities: components: - type: Transform parent: 1668 - rot: 1.5707963267948966 rad - pos: 12.5,-7.5 + pos: 28.5,5.5 - uid: 747 components: - type: Transform @@ -48340,14 +48315,50 @@ entities: components: - type: Transform parent: 1668 - rot: 1.5707963267948966 rad - pos: 3.5,-8.5 + rot: -1.5707963267948966 rad + pos: -5.5,2.5 - uid: 751 components: - type: Transform parent: 1668 rot: -1.5707963267948966 rad pos: 10.5,-12.5 + - uid: 801 + components: + - type: Transform + parent: 1668 + rot: 1.5707963267948966 rad + pos: 4.5,2.5 + - uid: 1140 + components: + - type: Transform + parent: 1668 + rot: 1.5707963267948966 rad + pos: -1.5,20.5 + - uid: 1141 + components: + - type: Transform + parent: 1668 + rot: 3.141592653589793 rad + pos: 4.5,-6.5 + - uid: 1142 + components: + - type: Transform + parent: 1668 + rot: 3.141592653589793 rad + pos: -5.5,-6.5 + - uid: 1143 + components: + - type: Transform + parent: 1668 + rot: 3.141592653589793 rad + pos: 11.5,-6.5 + - uid: 1144 + components: + - type: Transform + parent: 1668 + rot: 3.141592653589793 rad + pos: 4.5,-12.5 - uid: 1190 components: - type: Transform @@ -48359,12 +48370,29 @@ entities: - type: Transform parent: 1668 pos: 17.5,-15.5 + - uid: 1250 + components: + - type: Transform + parent: 1668 + rot: 3.141592653589793 rad + pos: -1.5,-2.5 + - uid: 1255 + components: + - type: Transform + parent: 1668 + rot: 3.141592653589793 rad + pos: 3.5,14.5 + - uid: 1294 + components: + - type: Transform + parent: 1668 + pos: -17.5,16.5 - uid: 1524 components: - type: Transform parent: 1668 - rot: -1.5707963267948966 rad - pos: 17.5,7.5 + rot: 3.141592653589793 rad + pos: 3.5,18.5 - uid: 1631 components: - type: Transform @@ -48402,7 +48430,8 @@ entities: components: - type: Transform parent: 1668 - pos: 26.5,27.5 + rot: -1.5707963267948966 rad + pos: 1.5,10.5 - uid: 2101 components: - type: Transform @@ -48437,19 +48466,30 @@ entities: components: - type: Transform parent: 1668 - pos: -2.5,1.5 + pos: 3.5,-14.5 - uid: 2124 components: - type: Transform parent: 1668 - rot: 3.141592653589793 rad - pos: 2.5,14.5 + pos: 25.5,27.5 - uid: 2439 components: - type: Transform parent: 1668 rot: -1.5707963267948966 rad pos: 16.5,19.5 + - uid: 2445 + components: + - type: Transform + parent: 1668 + rot: 3.141592653589793 rad + pos: 18.5,14.5 + - uid: 2446 + components: + - type: Transform + parent: 1668 + rot: 3.141592653589793 rad + pos: -1.5,-31.5 - uid: 2612 components: - type: Transform @@ -48471,13 +48511,13 @@ entities: components: - type: Transform parent: 1668 - rot: 3.141592653589793 rad - pos: -17.5,15.5 + pos: 8.5,-29.5 - uid: 2915 components: - type: Transform parent: 1668 - pos: 1.5,21.5 + rot: 3.141592653589793 rad + pos: 0.5,-31.5 - uid: 2917 components: - type: Transform @@ -48511,13 +48551,7 @@ entities: components: - type: Transform parent: 1668 - rot: -1.5707963267948966 rad - pos: 1.5,9.5 - - uid: 3197 - components: - - type: Transform - parent: 1668 - pos: 2.5,-14.5 + pos: 0.5,-33.5 - uid: 3306 components: - type: Transform @@ -48584,12 +48618,18 @@ entities: components: - type: Transform parent: 1668 - pos: 9.5,16.5 + pos: -9.5,-29.5 - uid: 3910 components: - type: Transform parent: 1668 - pos: 17.5,16.5 + pos: 14.5,-45.5 + - uid: 4084 + components: + - type: Transform + parent: 1668 + rot: 3.141592653589793 rad + pos: -4.5,-27.5 - uid: 4115 components: - type: Transform @@ -48600,46 +48640,47 @@ entities: components: - type: Transform parent: 1668 - pos: 3.5,-33.5 + rot: 3.141592653589793 rad + pos: -19.5,-27.5 - uid: 4272 components: - type: Transform parent: 1668 - pos: -4.5,-33.5 + rot: 3.141592653589793 rad + pos: -0.5,-49.5 - uid: 4273 components: - type: Transform parent: 1668 - rot: 3.141592653589793 rad - pos: -3.5,-31.5 + pos: 27.5,27.5 - uid: 4274 components: - type: Transform parent: 1668 - rot: 3.141592653589793 rad - pos: 2.5,-31.5 + pos: -15.5,-45.5 - uid: 4275 components: - type: Transform parent: 1668 - rot: 3.141592653589793 rad - pos: 7.5,-31.5 + pos: -30.5,-4.5 - uid: 4276 components: - type: Transform parent: 1668 rot: 3.141592653589793 rad - pos: -8.5,-31.5 + pos: -27.5,-27.5 - uid: 4313 components: - type: Transform parent: 1668 - pos: 2.5,-25.5 + rot: 3.141592653589793 rad + pos: 11.5,14.5 - uid: 4314 components: - type: Transform parent: 1668 - pos: -3.5,-25.5 + rot: 3.141592653589793 rad + pos: -29.5,-2.5 - uid: 4315 components: - type: Transform @@ -48649,13 +48690,14 @@ entities: components: - type: Transform parent: 1668 - pos: -27.5,-25.5 + rot: 3.141592653589793 rad + pos: -31.5,-10.5 - uid: 4782 components: - type: Transform parent: 1668 rot: 3.141592653589793 rad - pos: -0.5,-49.5 + pos: -35.5,-27.5 - uid: 4783 components: - type: Transform @@ -48736,18 +48778,11 @@ entities: parent: 1668 rot: -1.5707963267948966 rad pos: 19.5,-43.5 - - uid: 4808 - components: - - type: Transform - parent: 1668 - rot: 3.141592653589793 rad - pos: 16.5,-46.5 - uid: 4809 components: - type: Transform parent: 1668 - rot: 3.141592653589793 rad - pos: -17.5,-46.5 + pos: -15.5,27.5 - uid: 4811 components: - type: Transform @@ -48786,16 +48821,6 @@ entities: parent: 1668 rot: 3.141592653589793 rad pos: -11.5,-22.5 - - uid: 5718 - components: - - type: Transform - parent: 1668 - pos: -11.5,-25.5 - - uid: 5719 - components: - - type: Transform - parent: 1668 - pos: -19.5,-25.5 - uid: 5875 components: - type: Transform @@ -48847,11 +48872,6 @@ entities: - type: Transform parent: 1668 pos: -16.5,1.5 - - uid: 5912 - components: - - type: Transform - parent: 1668 - pos: -24.5,1.5 - uid: 5928 components: - type: Transform @@ -48901,19 +48921,14 @@ entities: components: - type: Transform parent: 1668 - pos: -29.5,1.5 + rot: 1.5707963267948966 rad + pos: 12.5,9.5 - uid: 7101 components: - type: Transform parent: 1668 rot: -1.5707963267948966 rad pos: -28.5,-9.5 - - uid: 7102 - components: - - type: Transform - parent: 1668 - rot: 1.5707963267948966 rad - pos: -33.5,-5.5 - uid: 7103 components: - type: Transform @@ -48980,11 +48995,6 @@ entities: - type: Transform parent: 1668 pos: -31.5,-30.5 - - uid: 7487 - components: - - type: Transform - parent: 1668 - pos: -35.5,-25.5 - uid: 8778 components: - type: Transform @@ -48997,6 +49007,48 @@ entities: parent: 1668 rot: 1.5707963267948966 rad pos: -2.5,-16.5 + - uid: 8819 + components: + - type: Transform + parent: 1668 + rot: 3.141592653589793 rad + pos: 3.5,-27.5 + - uid: 9328 + components: + - type: Transform + parent: 1668 + rot: 3.141592653589793 rad + pos: -24.5,-2.5 + - uid: 9760 + components: + - type: Transform + parent: 1668 + rot: 3.141592653589793 rad + pos: 14.5,-13.5 + - uid: 9761 + components: + - type: Transform + parent: 1668 + rot: 3.141592653589793 rad + pos: 23.5,-6.5 + - uid: 9762 + components: + - type: Transform + parent: 1668 + rot: 3.141592653589793 rad + pos: -16.5,-2.5 + - uid: 9765 + components: + - type: Transform + parent: 1668 + rot: 1.5707963267948966 rad + pos: -2.5,10.5 + - uid: 9766 + components: + - type: Transform + parent: 1668 + rot: 1.5707963267948966 rad + pos: 8.5,3.5 - proto: PoweredlightBlue entities: - uid: 546 @@ -49029,18 +49081,18 @@ entities: pos: -20.5,-17.5 - proto: PoweredlightCyan entities: - - uid: 1250 + - uid: 4786 components: - type: Transform parent: 1668 rot: 3.141592653589793 rad - pos: 29.5,-27.5 - - uid: 1255 + pos: 22.5,-27.5 + - uid: 4799 components: - type: Transform parent: 1668 rot: 3.141592653589793 rad - pos: 23.5,-27.5 + pos: 30.5,-27.5 - uid: 9133 components: - type: Transform @@ -49085,20 +49137,26 @@ entities: parent: 1668 rot: 3.141592653589793 rad pos: -23.5,-17.5 -- proto: PoweredlightRed +- proto: PoweredlightPink entities: - - uid: 2445 + - uid: 9767 components: - type: Transform parent: 1668 rot: -1.5707963267948966 rad - pos: 16.5,32.5 - - uid: 2446 + pos: 30.5,-21.5 +- proto: PoweredlightRed + entities: + - uid: 802 components: - type: Transform parent: 1668 - rot: 1.5707963267948966 rad - pos: 10.5,32.5 + pos: 16.5,34.5 + - uid: 4808 + components: + - type: Transform + parent: 1668 + pos: 10.5,34.5 - uid: 6079 components: - type: Transform @@ -49196,6 +49254,12 @@ entities: - type: Transform parent: 1668 pos: 19.5,-48.5 + - uid: 3197 + components: + - type: Transform + parent: 1668 + rot: 3.141592653589793 rad + pos: -10.5,-36.5 - uid: 3359 components: - type: Transform @@ -49238,11 +49302,6 @@ entities: parent: 1668 rot: 1.5707963267948966 rad pos: 21.5,26.5 - - uid: 4084 - components: - - type: Transform - parent: 1668 - pos: -16.5,27.5 - uid: 4664 components: - type: Transform @@ -49255,12 +49314,6 @@ entities: parent: 1668 rot: 1.5707963267948966 rad pos: 8.5,-45.5 - - uid: 4786 - components: - - type: Transform - parent: 1668 - rot: 1.5707963267948966 rad - pos: 8.5,-36.5 - uid: 4788 components: - type: Transform @@ -49272,17 +49325,17 @@ entities: - type: Transform parent: 1668 pos: -15.5,-38.5 - - uid: 4799 - components: - - type: Transform - parent: 1668 - rot: -1.5707963267948966 rad - pos: -9.5,-36.5 - uid: 5194 components: - type: Transform parent: 1668 pos: -20.5,-48.5 + - uid: 5718 + components: + - type: Transform + parent: 1668 + rot: 3.141592653589793 rad + pos: 9.5,-36.5 - uid: 7184 components: - type: Transform @@ -49355,20 +49408,32 @@ entities: parent: 1668 rot: 3.141592653589793 rad pos: -22.5,3.5 + - uid: 9763 + components: + - type: Transform + parent: 1668 + rot: 3.141592653589793 rad + pos: -18.5,3.5 + - uid: 9764 + components: + - type: Transform + parent: 1668 + rot: 3.141592653589793 rad + pos: -18.5,9.5 - proto: PoweredWarmSmallLight entities: + - uid: 1145 + components: + - type: Transform + parent: 1668 + rot: 1.5707963267948966 rad + pos: 29.5,-13.5 - uid: 1280 components: - type: Transform parent: 1668 rot: 1.5707963267948966 rad pos: 32.5,-21.5 - - uid: 1294 - components: - - type: Transform - parent: 1668 - rot: 1.5707963267948966 rad - pos: 29.5,-10.5 - uid: 2100 components: - type: Transform @@ -49392,17 +49457,23 @@ entities: parent: 1668 rot: -1.5707963267948966 rad pos: 8.5,21.5 + - uid: 5719 + components: + - type: Transform + parent: 1668 + pos: -7.5,-8.5 + - uid: 5912 + components: + - type: Transform + parent: 1668 + rot: 1.5707963267948966 rad + pos: 29.5,-8.5 - uid: 6172 components: - type: Transform parent: 1668 rot: 3.141592653589793 rad pos: -22.5,-8.5 - - uid: 8819 - components: - - type: Transform - parent: 1668 - pos: -6.5,-8.5 - uid: 9562 components: - type: Transform @@ -52160,16 +52231,16 @@ entities: pos: -35.37574,11.823141 - proto: Screen entities: - - uid: 547 + - uid: 521 components: - type: Transform parent: 1668 - pos: 28.5,6.5 - - uid: 548 + pos: 23.5,6.5 + - uid: 609 components: - type: Transform parent: 1668 - pos: 24.5,6.5 + pos: 29.5,6.5 - uid: 6906 components: - type: Transform @@ -52995,11 +53066,13 @@ entities: pos: 18.5,-4.5 - type: DeviceLinkSource linkedPorts: - 612: + 211: - - On - Open - - Off - Close + - - Status + - Toggle - uid: 611 components: - type: MetaData @@ -53010,11 +53083,13 @@ entities: pos: 18.5,3.5 - type: DeviceLinkSource linkedPorts: - 609: + 210: - - On - Open - - Off - Close + - - Status + - Toggle - uid: 728 components: - type: MetaData @@ -53047,21 +53122,27 @@ entities: pos: 32.5,-9.5 - type: DeviceLinkSource linkedPorts: - 1142: + 519: - - On - Open - - Off - Close - 1141: + - - Status + - Toggle + 518: - - On - Open - - Off - Close - 1140: + - - Status + - Toggle + 520: - - On - Open - - Off - Close + - - Status + - Toggle - uid: 1131 components: - type: Transform @@ -53070,21 +53151,27 @@ entities: pos: 32.5,-12.5 - type: DeviceLinkSource linkedPorts: - 1143: + 309: - - On - Open - - Off - Close - 1144: + - - Status + - Toggle + 517: - - On - Open - - Off - Close - 1145: + - - Status + - Toggle + 308: - - On - Open - - Off - Close + - - Status + - Toggle - uid: 1630 components: - type: MetaData From 04f1d22e591cbee184cdf4d9b1367767d48aa2f7 Mon Sep 17 00:00:00 2001 From: Emisse <99158783+Emisse@users.noreply.github.com> Date: Fri, 11 Sep 2026 04:23:07 +0000 Subject: [PATCH 118/197] marton update (#45973) * marton update * fixe some tile --- Resources/Maps/marathon.yml | 420 ++++++++++++++++++------------------ 1 file changed, 215 insertions(+), 205 deletions(-) diff --git a/Resources/Maps/marathon.yml b/Resources/Maps/marathon.yml index b7128f7df6..266085bccb 100644 --- a/Resources/Maps/marathon.yml +++ b/Resources/Maps/marathon.yml @@ -4,14 +4,25 @@ meta: engineVersion: 289.0.0 forkId: "" forkVersion: "" - time: 08/23/2026 15:02:00 - entityCount: 23941 + time: 09/10/2026 23:17:57 + entityCount: 23929 maps: - 5350 grids: - 30 orphans: [] nullspace: +- 11787 +- 11788 +- 11789 +- 11790 +- 11791 +- 11792 +- 11793 +- 11794 +- 11864 +- 12012 +- 12083 - 20341 - 20600 - 20606 @@ -19,6 +30,7 @@ nullspace: - 20609 - 20610 - 20611 +- 23196 - 23890 - 23891 - 23892 @@ -59,18 +71,6 @@ nullspace: - 23927 - 23928 - 23929 -- 23930 -- 23931 -- 23932 -- 23933 -- 23934 -- 23935 -- 23936 -- 23937 -- 23938 -- 23939 -- 23940 -- 23941 tilemap: 0: Space 43: FloorArcadeBlue @@ -100,6 +100,7 @@ tilemap: 63: FloorLaundry 64: FloorLino 67: FloorMime + 1: FloorMowedAstroGrass 76: FloorPlanetGrass 77: FloorPlastic 78: FloorRGlass @@ -146,7 +147,7 @@ entities: version: 7 0,-1: ind: 0,-1 - tiles: fgAAAAAAAH4AAAAAAABsAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAfgAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAH4AAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAB+AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAfgAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAADMAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAmAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAB8AAAAAAAA8AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAJgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAAfAAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAACYAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAzAAAAAAIAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAMwAAAAADADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAzAAAAAAMAJgAAAAAAADMAAAAAAgAzAAAAAAQAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAA== + tiles: fgAAAAAAAH4AAAAAAABsAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAfgAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAH4AAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAB+AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAfgAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAAEAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAmAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAB8AAAAAAAA8AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAJgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAAfAAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAACYAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAABAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAAQAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAABAAAAAAAAJgAAAAAAAAEAAAAAAAABAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAA== version: 7 -2,0: ind: -2,0 @@ -174,7 +175,7 @@ entities: version: 7 -4,0: ind: -4,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAAAAAAAAAAH0AAAAAAQB9AAAAAAEAfgAAAAAAAGwAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAAAAAAAAAAB9AAAAAAIAAAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAAAAAAAAAAH0AAAAAAgAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAAAAAAAAAAB9AAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAAAAAAAAAAAfQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAAyAAAAAAEAfgAAAAAAADEAAAAABAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAAAAAAAAAAH0AAAAAAQB9AAAAAAEAfgAAAAAAAGwAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAAAAAAAAAAB9AAAAAAIAAAAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAAAAAAAAAAH0AAAAAAgAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAAAAAAAAAAB9AAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAAAAAAAAAAAfQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAA== version: 7 -3,-1: ind: -3,-1 @@ -198,7 +199,7 @@ entities: version: 7 -4,1: ind: -4,1 - tiles: fgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH0AAAAAAQB9AAAAAAIAfQAAAAACAH0AAAAAAQB9AAAAAAIAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADEAAAAAAwAxAAAAAAMAMQAAAAABADwAAAAAAAA8AAAAAAAAPAAAAAAAAB8AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAABAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAAxAAAAAAUAMQAAAAAAADEAAAAABAA8AAAAAAAAPAAAAAAAADwAAAAAAAAfAAAAAAAAfQAAAAABAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAMQAAAAABADEAAAAAAAAxAAAAAAQAPAAAAAAAADwAAAAAAAA8AAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAMQAAAAAFAH4AAAAAAAAxAAAAAAUAfgAAAAAAADwAAAAAAAA8AAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAABAAAAAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAA== + tiles: fgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH0AAAAAAQB9AAAAAAIAfQAAAAACAH0AAAAAAQB9AAAAAAIAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADEAAAAAAwAxAAAAAAMAMQAAAAABADwAAAAAAAA8AAAAAAAAPAAAAAAAAB8AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAABAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAAxAAAAAAUAMQAAAAAAADEAAAAABAA8AAAAAAAAPAAAAAAAADwAAAAAAAAfAAAAAAAAfQAAAAABAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAMQAAAAABADEAAAAAAAAxAAAAAAQAPAAAAAAAADwAAAAAAAA8AAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAAQAAAAAAAH4AAAAAAAABAAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAABAAAAAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAA== version: 7 -4,2: ind: -4,2 @@ -226,7 +227,7 @@ entities: version: 7 -1,2: ind: -1,2 - tiles: HwAAAAAAAB8AAAAAAAAfAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAACQAAAAAAAAfAAAAAAAAegAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAEAAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAEAAAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAHwAAAAAAAHoAAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAABAAAAAAAAAegAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAHoAAAAAAABAAAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAQAAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAQAAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAB6AAAAAAAAegAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAGwAAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAAfAAAAAAAAHwAAAAAAACQAAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAJAAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAMAAAAAAUADAAAAAACAAwAAAAAAQAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAgB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAkAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAgB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAABAH0AAAAAAQB9AAAAAAIAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAgB9AAAAAAAAfQAAAAABAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAEAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAABAAAAAAAAAAB9AAAAAAEAfQAAAAABAA== + tiles: HwAAAAAAAB8AAAAAAAAfAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAACQAAAAAAAAfAAAAAAAAegAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAEAAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAEAAAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAHwAAAAAAAHoAAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAABAAAAAAAAAegAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAHoAAAAAAABAAAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAQAAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAQAAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAB6AAAAAAAAegAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAGwAAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAAfAAAAAAAAHwAAAAAAACQAAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAJAAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAgB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAkAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAgB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAABAH0AAAAAAQB9AAAAAAIAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAgB9AAAAAAAAfQAAAAABAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAEAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAABAAAAAAAAAAB9AAAAAAEAfQAAAAABAA== version: 7 0,2: ind: 0,2 @@ -266,7 +267,7 @@ entities: version: 7 -2,-2: ind: -2,-2 - tiles: fgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAHoAAAAAAAB6AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAHoAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAegAAAAAAAH4AAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAADAAAAAABAHAAAAAAAABwAAAAAAAAcAAAAAAAAH4AAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAB+AAAAAAAALgAAAAAAAC4AAAAAAAAuAAAAAAAAfgAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAAwAAAAAAgBwAAAAAAAAcAAAAAAAAHAAAAAAAAB+AAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAfgAAAAAAAC4AAAAAAAAuAAAAAAAALgAAAAAAAH4AAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAfgAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAADAAAAAAFAHAAAAAAAABwAAAAAAAAcAAAAAAAAH4AAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAB+AAAAAAAALgAAAAAAAC4AAAAAAAAuAAAAAAAAfgAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAAwAAAAAAgBwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAfgAAAAAAAC4AAAAAAAAuAAAAAAAALgAAAAAAAH4AAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAfgAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAA== + tiles: fgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAHoAAAAAAAB6AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAHoAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAegAAAAAAAH4AAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAAQAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAH4AAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAB+AAAAAAAALgAAAAAAAC4AAAAAAAAuAAAAAAAAfgAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAAEAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAB+AAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAfgAAAAAAAC4AAAAAAAAuAAAAAAAALgAAAAAAAH4AAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAfgAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAAQAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAH4AAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAB+AAAAAAAALgAAAAAAAC4AAAAAAAAuAAAAAAAAfgAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAAEAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAfgAAAAAAAC4AAAAAAAAuAAAAAAAALgAAAAAAAH4AAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAfgAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAA== version: 7 -3,-2: ind: -3,-2 @@ -2929,6 +2930,17 @@ entities: chunkHistory: {} - type: ChunkContainer chunkEntities: + - 11787 + - 11788 + - 11789 + - 11790 + - 11791 + - 11792 + - 11793 + - 11794 + - 11864 + - 12012 + - 12083 - 20341 - 20600 - 20606 @@ -2936,6 +2948,7 @@ entities: - 20609 - 20610 - 20611 + - 23196 - 23890 - 23891 - 23892 @@ -2976,18 +2989,7 @@ entities: - 23927 - 23928 - 23929 - - 23930 - - 23931 - - 23932 - - 23933 - - 23934 - - 23935 - - 23936 - - 23937 - - 23938 - - 23939 - - 23940 - - 23941 + - type: GridSplitNode - uid: 5350 components: - type: MetaData @@ -5910,12 +5912,32 @@ entities: 11800: - - DoorStatus - DoorBolt + - uid: 11704 + components: + - type: Transform + parent: 30 + rot: -1.5707963267948966 rad + pos: 36.5,-3.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 1475: + - - DoorStatus + - Close - uid: 11710 components: - type: Transform parent: 30 - rot: 1.5707963267948966 rad - pos: 36.5,-3.5 + rot: -1.5707963267948966 rad + pos: 36.5,-5.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 1083: + - - DoorStatus + - Close - uid: 11800 components: - type: Transform @@ -5926,12 +5948,6 @@ entities: 11658: - - DoorStatus - DoorBolt - - uid: 12083 - components: - - type: Transform - parent: 30 - rot: 1.5707963267948966 rad - pos: 36.5,-5.5 - proto: AirlockExternalGlassEngineeringLocked entities: - uid: 20059 @@ -6080,6 +6096,34 @@ entities: - type: Transform parent: 30 pos: -59.5,2.5 +- proto: AirlockExternalGlassShuttleCargo + entities: + - uid: 1083 + components: + - type: Transform + parent: 30 + rot: 1.5707963267948966 rad + pos: 38.5,-5.5 + - type: DeviceLinkSource + linkedPorts: + 11710: + - - DoorStatus + - Close + - type: DeviceLinkSink + invokeCounter: 1 + - uid: 1475 + components: + - type: Transform + parent: 30 + rot: 1.5707963267948966 rad + pos: 38.5,-3.5 + - type: DeviceLinkSource + linkedPorts: + 11704: + - - DoorStatus + - Close + - type: DeviceLinkSink + invokeCounter: 1 - proto: AirlockExternalGlassShuttleEmergencyLocked entities: - uid: 16406 @@ -6122,18 +6166,6 @@ entities: pos: -53.5,36.5 - proto: AirlockExternalGlassShuttleLocked entities: - - uid: 11864 - components: - - type: Transform - parent: 30 - rot: 1.5707963267948966 rad - pos: 38.5,-5.5 - - uid: 12012 - components: - - type: Transform - parent: 30 - rot: 1.5707963267948966 rad - pos: 38.5,-3.5 - uid: 15244 components: - type: Transform @@ -7036,7 +7068,7 @@ entities: pos: 34.5,45.5 - type: Door state: Opening - secondsUntilStateChange: -58851.754 + secondsUntilStateChange: -59275.88 - type: DeviceLinkSource lastSignals: DoorStatus: True @@ -8873,13 +8905,6 @@ entities: - type: Transform parent: 30 pos: -28.507416,-46.550377 -- proto: AsimovCircuitBoard - entities: - - uid: 21606 - components: - - type: Transform - parent: 30 - pos: -3.4068027,64.40575 - proto: AsteroidRock entities: - uid: 332 @@ -9515,18 +9540,6 @@ entities: parent: 30 rot: 3.141592653589793 rad pos: 25.5,43.5 - - uid: 1083 - components: - - type: Transform - parent: 30 - rot: 1.5707963267948966 rad - pos: 38.5,-3.5 - - uid: 1475 - components: - - type: Transform - parent: 30 - rot: 1.5707963267948966 rad - pos: 38.5,-5.5 - uid: 1490 components: - type: Transform @@ -42398,11 +42411,18 @@ entities: pos: -5.5,-50.5 - proto: CargoMailTeleporter entities: - - uid: 23196 + - uid: 11783 components: - type: Transform parent: 30 - pos: 27.5,-1.5 + pos: 16.5,2.5 +- proto: CargoTelepad + entities: + - uid: 11785 + components: + - type: Transform + parent: 30 + pos: 25.5,-2.5 - proto: Carpet entities: - uid: 560 @@ -49282,7 +49302,7 @@ entities: pos: -56.515633,10.561228 - proto: ChunkEntity entities: - - uid: 20341 + - uid: 11787 components: - type: ChunkEntity root: 30 @@ -49548,7 +49568,7 @@ entities: 1280: -44,32 2183: -42,32 2184: -45,32 - - uid: 20600 + - uid: 11788 components: - type: ChunkEntity root: 30 @@ -49600,7 +49620,7 @@ entities: 1284: -52,32 1285: -53,32 1292: -54,32 - - uid: 20606 + - uid: 11789 components: - type: ChunkEntity root: 30 @@ -49784,7 +49804,7 @@ entities: 1622: 28,16 1630: 27,16 1631: 26,16 - - uid: 20607 + - uid: 11790 components: - type: ChunkEntity root: 30 @@ -50033,7 +50053,7 @@ entities: 1606: 9,-17 1607: 8,-17 1608: 7,-17 - - uid: 20609 + - uid: 11791 components: - type: ChunkEntity root: 30 @@ -50128,7 +50148,7 @@ entities: 1181: 19,-21 2802: 16,-19 2803: 17,-19 - - uid: 20610 + - uid: 11792 components: - type: ChunkEntity root: 30 @@ -50157,7 +50177,7 @@ entities: color: '#FFFFFFFF' decals: 3387: 21,-37 - - uid: 20611 + - uid: 11793 components: - type: ChunkEntity root: 30 @@ -50488,7 +50508,7 @@ entities: 2358: -31,-3 2359: -31,-2 2360: -31,-1 - - uid: 23890 + - uid: 11794 components: - type: ChunkEntity root: 30 @@ -50571,7 +50591,7 @@ entities: color: '#FFFFFFFF' decals: 1119: 32,-12 - - uid: 23891 + - uid: 11864 components: - type: ChunkEntity root: 30 @@ -50736,7 +50756,7 @@ entities: color: '#FFFFFFFF' decals: 1600: 0,15 - - uid: 23892 + - uid: 12012 components: - type: ChunkEntity root: 30 @@ -50941,7 +50961,7 @@ entities: color: '#FFFFFFFF' decals: 3062: -37,22 - - uid: 23893 + - uid: 12083 components: - type: ChunkEntity root: 30 @@ -51149,7 +51169,7 @@ entities: color: '#FFFFFFFF' decals: 3065: -37,12 - - uid: 23894 + - uid: 20341 components: - type: ChunkEntity root: 30 @@ -51332,7 +51352,7 @@ entities: 1289: -50,29 1290: -49,29 1291: -54,29 - - uid: 23895 + - uid: 20600 components: - type: ChunkEntity root: 30 @@ -51452,7 +51472,7 @@ entities: 1295: -24,52 1296: -25,52 1297: -26,52 - - uid: 23896 + - uid: 20606 components: - type: ChunkEntity root: 30 @@ -51605,7 +51625,7 @@ entities: color: '#FFFFFFFF' decals: 1336: -22,30 - - uid: 23897 + - uid: 20607 components: - type: ChunkEntity root: 30 @@ -51885,7 +51905,7 @@ entities: 7: 0,21 8: 0,22 9: 0,23 - - uid: 23898 + - uid: 20609 components: - type: ChunkEntity root: 30 @@ -51997,7 +52017,7 @@ entities: 1436: 4,34 1437: 5,34 1438: 2,34 - - uid: 23899 + - uid: 20610 components: - type: ChunkEntity root: 30 @@ -52309,7 +52329,7 @@ entities: 3073: -5,-3 3074: -1,-3 3110: -5,-12 - - uid: 23900 + - uid: 20611 components: - type: ChunkEntity root: 30 @@ -52581,7 +52601,7 @@ entities: 1616: 3,-8 1617: 3,-7 1618: 3,-6 - - uid: 23901 + - uid: 23196 components: - type: ChunkEntity root: 30 @@ -52791,7 +52811,7 @@ entities: 1649: 27,0 1650: 27,1 1651: 27,2 - - uid: 23902 + - uid: 23890 components: - type: ChunkEntity root: 30 @@ -53011,7 +53031,7 @@ entities: color: '#FFFFFFFF' decals: 1443: -19,32 - - uid: 23903 + - uid: 23891 components: - type: ChunkEntity root: 30 @@ -53218,7 +53238,7 @@ entities: color: '#FFFFFFFF' decals: 3187: -38,51 - - uid: 23904 + - uid: 23892 components: - type: ChunkEntity root: 30 @@ -53438,7 +53458,7 @@ entities: 3092: 21,-4 3093: 20,-4 3094: 19,-4 - - uid: 23905 + - uid: 23893 components: - type: ChunkEntity root: 30 @@ -53538,7 +53558,7 @@ entities: 688: 37,12 689: 36,12 690: 35,12 - - uid: 23906 + - uid: 23894 components: - type: ChunkEntity root: 30 @@ -53796,7 +53816,7 @@ entities: color: '#FFFFFFFF' decals: 1432: -2,31 - - uid: 23907 + - uid: 23895 components: - type: ChunkEntity root: 30 @@ -53867,7 +53887,7 @@ entities: decals: 1528: 34,30 1529: 33,30 - - uid: 23908 + - uid: 23896 components: - type: ChunkEntity root: 30 @@ -54198,7 +54218,7 @@ entities: color: '#FFFFFFFF' decals: 1461: -9,41 - - uid: 23909 + - uid: 23897 components: - type: ChunkEntity root: 30 @@ -54258,7 +54278,7 @@ entities: 1536: 43,38 1537: 43,39 1538: 43,40 - - uid: 23910 + - uid: 23898 components: - type: ChunkEntity root: 30 @@ -54338,7 +54358,7 @@ entities: color: '#FFFFFFFF' decals: 3170: 29,42 - - uid: 23911 + - uid: 23899 components: - type: ChunkEntity root: 30 @@ -54614,7 +54634,7 @@ entities: color: '#FFFFFFFF' decals: 3107: -4,-22 - - uid: 23912 + - uid: 23900 components: - type: ChunkEntity root: 30 @@ -54739,7 +54759,7 @@ entities: 1596: -3,15 1597: -2,15 1598: -1,15 - - uid: 23913 + - uid: 23901 components: - type: ChunkEntity root: 30 @@ -54895,7 +54915,7 @@ entities: decals: 2423: -47,-10 2424: -47,-9 - - uid: 23914 + - uid: 23902 components: - type: ChunkEntity root: 30 @@ -55140,7 +55160,7 @@ entities: 2526: -23,-23 2527: -23,-17 2642: -31,-18 - - uid: 23915 + - uid: 23903 components: - type: ChunkEntity root: 30 @@ -55292,7 +55312,7 @@ entities: 2875: -1,-48 3357: -3,-48 3358: -4,-48 - - uid: 23916 + - uid: 23904 components: - type: ChunkEntity root: 30 @@ -55434,7 +55454,7 @@ entities: 2816: -9,-51 2867: -2,-52 2868: -1,-52 - - uid: 23917 + - uid: 23905 components: - type: ChunkEntity root: 30 @@ -55560,7 +55580,7 @@ entities: 2878: 2,-48 3382: 3,-48 3383: 4,-48 - - uid: 23918 + - uid: 23906 components: - type: ChunkEntity root: 30 @@ -55632,7 +55652,7 @@ entities: decals: 2869: 0,-52 2870: 0,-52 - - uid: 23919 + - uid: 23907 components: - type: ChunkEntity root: 30 @@ -55706,7 +55726,7 @@ entities: angle: 1.5707963267948966 rad decals: 892: -57,-22 - - uid: 23920 + - uid: 23908 components: - type: ChunkEntity root: 30 @@ -55729,7 +55749,7 @@ entities: angle: -3.141592653589793 rad decals: 3414: -22,-72 - - uid: 23921 + - uid: 23909 components: - type: ChunkEntity root: 30 @@ -55818,7 +55838,7 @@ entities: color: '#FFFFFFFF' decals: 2941: -18,-53 - - uid: 23922 + - uid: 23910 components: - type: ChunkEntity root: 30 @@ -55880,7 +55900,7 @@ entities: angle: -1.5707963267948966 rad decals: 893: -47,-22 - - uid: 23923 + - uid: 23911 components: - type: ChunkEntity root: 30 @@ -56066,7 +56086,7 @@ entities: color: '#FFFFFFFF' decals: 1566: -56,-54 - - uid: 23924 + - uid: 23912 components: - type: ChunkEntity root: 30 @@ -56238,7 +56258,7 @@ entities: 1551: -74,-54 1552: -74,-53 1553: -74,-52 - - uid: 23925 + - uid: 23913 components: - type: ChunkEntity root: 30 @@ -56406,7 +56426,7 @@ entities: 1681: -58,13 1682: -58,14 1683: -58,15 - - uid: 23926 + - uid: 23914 components: - type: ChunkEntity root: 30 @@ -56599,7 +56619,7 @@ entities: color: '#FFFFFFFF' decals: 3066: -30,3 - - uid: 23927 + - uid: 23915 components: - type: ChunkEntity root: 30 @@ -56703,7 +56723,7 @@ entities: 855: -26,-37 856: -28,-37 857: -28,-37 - - uid: 23928 + - uid: 23916 components: - type: ChunkEntity root: 30 @@ -56743,7 +56763,7 @@ entities: color: '#FFFFFFFF' decals: 966: -67.18431,-28.324245 - - uid: 23929 + - uid: 23917 components: - type: ChunkEntity root: 30 @@ -56877,7 +56897,7 @@ entities: 780: -79,-48 781: -78,-48 782: -77,-48 - - uid: 23930 + - uid: 23918 components: - type: ChunkEntity root: 30 @@ -56932,7 +56952,7 @@ entities: color: '#FFFFFFFF' decals: 1591: -52.942307,-42.899807 - - uid: 23931 + - uid: 23919 components: - type: ChunkEntity root: 30 @@ -56966,7 +56986,7 @@ entities: cleanable: True decals: 700: 52,19 - - uid: 23932 + - uid: 23920 components: - type: ChunkEntity root: 30 @@ -57011,7 +57031,7 @@ entities: color: '#EFB34196' decals: 778: -81,-48 - - uid: 23933 + - uid: 23921 components: - type: ChunkEntity root: 30 @@ -57060,7 +57080,7 @@ entities: color: '#FFFFFFFF' decals: 3028: -5,78 - - uid: 23934 + - uid: 23922 components: - type: ChunkEntity root: 30 @@ -57117,7 +57137,7 @@ entities: decals: 3355: -50,52 3356: -50,56 - - uid: 23935 + - uid: 23923 components: - type: ChunkEntity root: 30 @@ -57139,7 +57159,7 @@ entities: decals: 906: -4,62 907: -4,63 - - uid: 23936 + - uid: 23924 components: - type: ChunkEntity root: 30 @@ -57166,7 +57186,7 @@ entities: color: '#DE3A3A96' decals: 3312: -52,67 - - uid: 23937 + - uid: 23925 components: - type: ChunkEntity root: 30 @@ -57209,7 +57229,7 @@ entities: color: '#FFFFFFFF' decals: 3031: 4,79 - - uid: 23938 + - uid: 23926 components: - type: ChunkEntity root: 30 @@ -57231,7 +57251,7 @@ entities: decals: 903: 2,62 904: 2,63 - - uid: 23939 + - uid: 23927 components: - type: ChunkEntity root: 30 @@ -57274,7 +57294,7 @@ entities: color: '#DE3A3A96' decals: 3310: -44,67 - - uid: 23940 + - uid: 23928 components: - type: ChunkEntity root: 30 @@ -57299,7 +57319,7 @@ entities: color: '#FFFFFFFF' decals: 3034: 4,87 - - uid: 23941 + - uid: 23929 components: - type: ChunkEntity root: 30 @@ -59874,11 +59894,28 @@ entities: - type: Transform parent: 30 pos: 24.5,2.5 - - uid: 11704 + - uid: 11718 components: - type: Transform parent: 30 - pos: 16.5,2.5 + rot: 3.141592653589793 rad + pos: 17.5,-2.5 + - type: DeviceLinkSource + linkedPorts: + 11785: + - - OrderSender + - OrderReceiver + - uid: 11729 + components: + - type: Transform + parent: 30 + rot: 1.5707963267948966 rad + pos: 15.5,0.5 + - type: DeviceLinkSource + linkedPorts: + 11785: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersEngineering entities: - uid: 21714 @@ -59887,6 +59924,11 @@ entities: parent: 30 rot: 3.141592653589793 rad pos: -24.5,-44.5 + - type: DeviceLinkSource + linkedPorts: + 11785: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersMedical entities: - uid: 2187 @@ -59895,6 +59937,11 @@ entities: parent: 30 rot: -1.5707963267948966 rad pos: -12.5,-20.5 + - type: DeviceLinkSource + linkedPorts: + 11785: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersScience entities: - uid: 21715 @@ -59903,6 +59950,11 @@ entities: parent: 30 rot: -1.5707963267948966 rad pos: 23.5,12.5 + - type: DeviceLinkSource + linkedPorts: + 11785: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersSecurity entities: - uid: 21719 @@ -59910,6 +59962,11 @@ entities: - type: Transform parent: 30 pos: -30.5,51.5 + - type: DeviceLinkSource + linkedPorts: + 11785: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersService entities: - uid: 22904 @@ -59917,6 +59974,11 @@ entities: - type: Transform parent: 30 pos: -12.5,16.5 + - type: DeviceLinkSource + linkedPorts: + 11785: + - - OrderSender + - OrderReceiver - proto: ComputerComms entities: - uid: 5009 @@ -60180,12 +60242,6 @@ entities: parent: 30 rot: -1.5707963267948966 rad pos: 35.5,-4.5 - - uid: 11718 - components: - - type: Transform - parent: 30 - rot: 1.5707963267948966 rad - pos: 15.5,0.5 - proto: ComputerSolarControl entities: - uid: 5594 @@ -61033,6 +61089,13 @@ entities: - type: SingletonDeviceNetServer available: False active: False +- proto: CrewsimovCircuitBoard + entities: + - uid: 21606 + components: + - type: Transform + parent: 30 + pos: -3.4068027,64.40575 - proto: Crowbar entities: - uid: 18695 @@ -110704,6 +110767,13 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage +- proto: MailCart + entities: + - uid: 11784 + components: + - type: Transform + parent: 30 + pos: 18.5,2.5 - proto: MaintenanceFluffSpawner entities: - uid: 9199 @@ -111912,66 +111982,6 @@ entities: - type: Transform parent: 30 pos: 25.685026,1.976799 - - uid: 11783 - components: - - type: Transform - parent: 30 - pos: 18.397085,2.638605 - - uid: 11784 - components: - - type: Transform - parent: 30 - pos: 18.47521,2.59173 - - uid: 11785 - components: - - type: Transform - parent: 30 - pos: 18.60021,2.52923 - - uid: 11786 - components: - - type: Transform - parent: 30 - pos: 18.428335,2.62298 - - uid: 11787 - components: - - type: Transform - parent: 30 - pos: 18.53771,2.56048 - - uid: 11788 - components: - - type: Transform - parent: 30 - pos: 18.60021,2.52923 - - uid: 11789 - components: - - type: Transform - parent: 30 - pos: 18.428335,2.62298 - - uid: 11790 - components: - - type: Transform - parent: 30 - pos: 18.490835,2.59173 - - uid: 11791 - components: - - type: Transform - parent: 30 - pos: 18.56896,2.544855 - - uid: 11792 - components: - - type: Transform - parent: 30 - pos: 18.397085,2.638605 - - uid: 11793 - components: - - type: Transform - parent: 30 - pos: 18.490835,2.59173 - - uid: 11794 - components: - - type: Transform - parent: 30 - pos: 18.60021,2.52923 - uid: 17650 components: - type: Transform @@ -131933,11 +131943,6 @@ entities: - type: Transform parent: 30 pos: 20.5,2.5 - - uid: 11729 - components: - - type: Transform - parent: 30 - pos: 18.5,2.5 - uid: 11730 components: - type: Transform @@ -151704,6 +151709,11 @@ entities: - type: Transform parent: 30 pos: -23.5,4.5 + - uid: 11786 + components: + - type: Transform + parent: 30 + pos: 17.5,-2.5 - uid: 12728 components: - type: Transform From fe6b83c5c73114b618592b6ee3091518890e968e Mon Sep 17 00:00:00 2001 From: riccardi48 <39341154+riccardi48@users.noreply.github.com> Date: Fri, 11 Sep 2026 14:14:04 +0000 Subject: [PATCH 119/197] Telepad can link to multiple consoles (#44936) * init * oops * whitespace Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com> * whitespace Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com> * cleanup * Doc up Signed-off-by: Connor Huffine * Simplify Signed-off-by: Connor Huffine * datafield --------- Signed-off-by: Connor Huffine Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com> Co-authored-by: Connor Huffine --- .../StationCargoOrderDatabaseComponent.cs | 32 +++++++++++---- .../Cargo/Systems/CargoSystem.Orders.cs | 8 +++- .../Cargo/Systems/CargoSystem.Telepad.cs | 28 +++++-------- Content.Shared/Cargo/CargoOrderData.cs | 40 +++++++++++++++++-- 4 files changed, 78 insertions(+), 30 deletions(-) diff --git a/Content.Server/Cargo/Components/StationCargoOrderDatabaseComponent.cs b/Content.Server/Cargo/Components/StationCargoOrderDatabaseComponent.cs index 56401602b3..b9344c35f4 100644 --- a/Content.Server/Cargo/Components/StationCargoOrderDatabaseComponent.cs +++ b/Content.Server/Cargo/Components/StationCargoOrderDatabaseComponent.cs @@ -1,6 +1,5 @@ using System.Linq; using Content.Shared.Cargo; -using Content.Shared.Cargo.Components; using Content.Shared.Cargo.Prototypes; using Content.Shared.Station.Components; using Robust.Shared.Prototypes; @@ -19,14 +18,20 @@ public sealed partial class StationCargoOrderDatabaseComponent : Component [DataField] public int Capacity = 20; + ///

+ /// Every outstanding order across every account. + /// [ViewVariables] public IEnumerable AllOrders => Orders.SelectMany(p => p.Value); + /// + /// A dictionary containing every outstanding order on the system, indexed by account. + /// [DataField] public Dictionary, List> Orders = new(); /// - /// Used to determine unique order IDs + /// Used to determine unique order IDs. /// [ViewVariables] public int NumOrdersCreated; @@ -49,7 +54,7 @@ public sealed partial class StationCargoOrderDatabaseComponent : Component public EntityUid? Shuttle; /// - /// The paper-type prototype to spawn with the order information. + /// The paper-type prototype to spawn with the order information. /// [DataField] public EntProtoId PrinterOutput = "PaperCargoInvoice"; @@ -59,12 +64,25 @@ public sealed partial class StationCargoOrderDatabaseComponent : Component /// Event broadcast before a cargo order is fulfilled, allowing alternate systems to fulfill the order. ///
[ByRefEvent] -public record struct FulfillCargoOrderEvent(Entity Station, CargoOrderData Order, Entity OrderConsole) +public record struct FulfillCargoOrderEvent(Entity Station, CargoOrderData Order) { - public Entity OrderConsole = OrderConsole; - public Entity Station = Station; - public CargoOrderData Order = Order; + /// + /// The station that placed the order. + /// + public readonly Entity Station = Station; + /// + /// The representing the order. + /// + public readonly CargoOrderData Order = Order; + + /// + /// The entity that is fulfilling the order, e.g. the telepad where an order will arrive. + /// public EntityUid? FulfillmentEntity; + + /// + /// If this event has already been handled. + /// public bool Handled = false; } diff --git a/Content.Server/Cargo/Systems/CargoSystem.Orders.cs b/Content.Server/Cargo/Systems/CargoSystem.Orders.cs index c69ff8aacd..da60070370 100644 --- a/Content.Server/Cargo/Systems/CargoSystem.Orders.cs +++ b/Content.Server/Cargo/Systems/CargoSystem.Orders.cs @@ -218,7 +218,10 @@ namespace Content.Server.Cargo.Systems order.SetApproverData(_identity.GetIdentityShortInfo(player, uid)); } - var ev = new FulfillCargoOrderEvent((station.Value, stationData), order, (uid, component)); + order.ApprovingConsole = GetNetEntity(uid); + order.Approved = true; + + var ev = new FulfillCargoOrderEvent((station.Value, stationData), order); RaiseLocalEvent(ref ev); ev.FulfillmentEntity ??= station.Value; @@ -231,11 +234,12 @@ namespace Content.Server.Cargo.Systems _popup.PopupCursor(Loc.GetString("cargo-console-unfulfilled"), args.Actor); PlayDenySound(uid, component); order.Approver = null; + order.ApprovingConsole = null; + order.Approved = false; return; } } - order.Approved = true; _audio.PlayPvs(ApproveSound, uid); if (!emagged) diff --git a/Content.Server/Cargo/Systems/CargoSystem.Telepad.cs b/Content.Server/Cargo/Systems/CargoSystem.Telepad.cs index c3c5dcdf47..d61422c9ea 100644 --- a/Content.Server/Cargo/Systems/CargoSystem.Telepad.cs +++ b/Content.Server/Cargo/Systems/CargoSystem.Telepad.cs @@ -10,7 +10,6 @@ using Content.Shared.Power; using Content.Shared.Station.Components; using Robust.Shared.Audio; using Robust.Shared.Random; -using Robust.Shared.Utility; namespace Content.Server.Cargo.Systems; @@ -40,9 +39,7 @@ public sealed partial class CargoSystem if (_station.GetOwningStation(uid, xform) != args.Station) continue; - // todo cannot be fucking asked to figure out device linking rn but this shouldn't just default to the first port. - if (!TryGetLinkedConsole((uid, tele), out var console) || - console.Value.Owner != args.OrderConsole.Owner) + if (!IsLinkedToConsole(uid, GetEntity(args.Order.ApprovingConsole))) continue; tele.CurrentOrders.Add(args.Order); @@ -54,22 +51,20 @@ public sealed partial class CargoSystem } } - private bool TryGetLinkedConsole(Entity ent, - [NotNullWhen(true)] out Entity? console) + private bool IsLinkedToConsole( + EntityUid uid, + EntityUid? approvingConsole + ) { - console = null; - if (!TryComp(ent, out var sinkComponent) || - sinkComponent.LinkedSources.FirstOrNull() is not { } linked) + if (approvingConsole is null) return false; - if (!TryComp(linked, out var consoleComp)) + if (!TryComp(uid, out var sinkComponent)) return false; - console = (linked, consoleComp); - return true; + return sinkComponent.LinkedSources.Any(ent => ent == approvingConsole.Value); } - private void UpdateTelepad(float frameTime) { var query = EntityQueryEnumerator(); @@ -94,7 +89,7 @@ public sealed partial class CargoSystem continue; } - if (comp.CurrentOrders.Count == 0 || !TryGetLinkedConsole((uid, comp), out var console)) + if (comp.CurrentOrders.Count == 0) { comp.Accumulator += comp.Delay; continue; @@ -149,12 +144,9 @@ public sealed partial class CargoSystem !TryComp(station, out var data)) return; - if (!TryGetLinkedConsole(ent, out var console)) - return; - foreach (var order in ent.Comp.CurrentOrders) { - TryFulfillOrder((station, data), console.Value.Comp.Account, order, db); + TryFulfillOrder((station, data), order.Account, order, db); } } diff --git a/Content.Shared/Cargo/CargoOrderData.cs b/Content.Shared/Cargo/CargoOrderData.cs index f7e56e59f5..ec316925c5 100644 --- a/Content.Shared/Cargo/CargoOrderData.cs +++ b/Content.Shared/Cargo/CargoOrderData.cs @@ -27,27 +27,51 @@ namespace Content.Shared.Cargo public int OrderQuantity; /// - /// How many instances of this order that we've already dispatched + /// How many instances of this order that we've already dispatched. /// [DataField] public int NumDispatched = 0; + /// + /// A string representation of the requestor's name. + /// [DataField] public string Requester { get; private set; } // public String RequesterRank; // TODO Figure out how to get Character ID card data // public int RequesterId; + + /// + /// A player-provided string of the reason for the order. + /// [DataField] public string Reason { get; private set; } - public bool Approved; + + /// + /// If the order has been approved. + /// + public bool Approved; + + /// + /// The console that approved the order. + /// + [DataField] + public NetEntity? ApprovingConsole { get; set; } + + /// + /// A string representation of the approver's name, unless the ordering console was emagged. + /// [DataField] public string? Approver; /// - /// Which account to deduct funds from when ordering + /// Which account to deduct funds from when ordering. /// [DataField] public ProtoId Account; + /// + /// Constructor. + /// public CargoOrderData(int orderId, ProtoId product, int amount, string requester, string reason, ProtoId account) { OrderId = orderId; @@ -58,11 +82,21 @@ namespace Content.Shared.Cargo Account = account; } + /// + /// Sets the approver for this order. + /// + /// Nullable string representation of the approver's name. public void SetApproverData(string? approver) { Approver = approver; } + /// + /// Sets the approver for this order by concatenating the name and job title. + /// If both are null, will be an empty string. + /// + /// Nullable string representation of the approver's full name. + /// Nullable string representation of the approver's job title. public void SetApproverData(string? fullName, string? jobTitle) { var sb = new StringBuilder(); From 5c94377dc9e03018bb6bac75875d7833ea23bb59 Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Fri, 11 Sep 2026 17:53:10 +0000 Subject: [PATCH 120/197] Update Exo, Science layout rework (#45986) * Initial commit * Fix energy gates --- Resources/Maps/Shuttles/emergency_exo.yml | 17 +- Resources/Maps/exo.yml | 4993 +++++++++++---------- Resources/Prototypes/Maps/exo.yml | 3 +- 3 files changed, 2675 insertions(+), 2338 deletions(-) diff --git a/Resources/Maps/Shuttles/emergency_exo.yml b/Resources/Maps/Shuttles/emergency_exo.yml index bc41a5a6b6..b23afb35ec 100644 --- a/Resources/Maps/Shuttles/emergency_exo.yml +++ b/Resources/Maps/Shuttles/emergency_exo.yml @@ -4,7 +4,7 @@ meta: engineVersion: 289.0.0 forkId: "" forkVersion: "" - time: 08/23/2026 06:47:09 + time: 09/11/2026 16:53:43 entityCount: 1017 maps: [] grids: @@ -20,6 +20,9 @@ tilemap: 2: Space 5: FloorDark 7: FloorDarkMini + 12: FloorExoCornerNE + 13: FloorExoCornerNW + 14: FloorExoCornerSE 8: FloorExoCornerSW 9: FloorExoHull 10: FloorExoTechmaint @@ -43,27 +46,27 @@ entities: chunks: 0,0: ind: 0,0 - tiles: AAAAAAAAAAAAAAAAAAABAAAAAAAACAAAAAAAAgkAAAAAAAMJAAAAAAADCQAAAAAAAwkAAAAAAAMJAAAAAAADCQAAAAAAAwkAAAAAAAMKAAAAAAAACQAAAAAAAwkAAAAAAAMIAAAAAAAACAAAAAAAAgAAAAAAAAAAAAAAAAAAAQAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAACwAAAAAAAAsAAAAAAgABAAAAAAAAAQAAAAAAAAgAAAAAAAIJAAAAAAADCQAAAAAAAwgAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAAACwAAAAAAAAgAAAAAAAIJAAAAAAADCQAAAAAAAwEAAAAAAAAIAAAAAAAACAAAAAAAAgkAAAAAAAMJAAAAAAADAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAACCQAAAAAAAwkAAAAAAAMIAAAAAAAACwAAAAAAAAsAAAAAAgABAAAAAAAAAQAAAAAAAAkAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAwkAAAAAAAMJAAAAAAADCAAAAAAAAAsAAAAAAgALAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAEAAQAAAAAAAAsAAAAAAgAJAAAAAAAACwAAAAABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAAACwAAAAABAAsAAAAAAAALAAAAAAAACwAAAAABAAEAAAAAAAALAAAAAAEACQAAAAAAAAsAAAAAAAALAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAACwAAAAABAAEAAAAAAAABAAAAAAAACwAAAAABAAEAAAAAAAABAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAMAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAKAAAAAAAACgAAAAAAAAsAAAAAAgALAAAAAAIAAQAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAADAAAAAAAAAwAAAAAAAAsAAAAAAgAKAAAAAAAACwAAAAAAAAsAAAAAAgALAAAAAAAACwAAAAABAAEAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAACgAAAAAAAAsAAAAAAgALAAAAAAIACgAAAAAAAAoAAAAAAAABAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAMAAAAAAAADAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAADAAAAAAAAAwAAAAAAAAEAAAAAAAAEAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAABAAAAAAAADAAAAAAAAAkAAAAAAAMJAAAAAAADCQAAAAAAAwkAAAAAAAMJAAAAAAADCQAAAAAAAwkAAAAAAAMKAAAAAAAACQAAAAAAAwkAAAAAAAMNAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAACQAAAAAAAAkAAAAAAAABAAAAAAAAAQAAAAAAAA4AAAAAAAAJAAAAAAADCQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAIACwAAAAAAAAwAAAAAAAAJAAAAAAADCQAAAAAAAwEAAAAAAAALAAAAAAAACQAAAAAAAAkAAAAAAAMJAAAAAAADAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAACQAAAAAAAwkAAAAAAAMIAAAAAAAACwAAAAABAAsAAAAAAgABAAAAAAAAAQAAAAAAAAkAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAwkAAAAAAAMJAAAAAAADCAAAAAAAAAsAAAAAAQALAAAAAAIACwAAAAACAAsAAAAAAQALAAAAAAAAAQAAAAAAAAsAAAAAAQAJAAAAAAAACwAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAIACwAAAAACAAsAAAAAAgALAAAAAAIACwAAAAAAAAEAAAAAAAALAAAAAAIACQAAAAAAAAsAAAAAAgALAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAACwAAAAAAAAEAAAAAAAABAAAAAAAACwAAAAAAAAEAAAAAAAABAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAMAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAKAAAAAAAACgAAAAAAAAsAAAAAAgALAAAAAAAAAQAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAADAAAAAAAAAwAAAAAAAAsAAAAAAAAKAAAAAAAACwAAAAACAAsAAAAAAAALAAAAAAAACwAAAAACAAEAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAACgAAAAAAAAsAAAAAAQALAAAAAAIACgAAAAAAAAoAAAAAAAABAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAMAAAAAAAADAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAADAAAAAAAAAwAAAAAAAAEAAAAAAAAEAAAAAAIAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 -1,0: ind: -1,0 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAABAAAAAABAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAABAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 0,-1: ind: 0,-1 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAABAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAQAAAAAAgAEAAAAAAIAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAFAAAAAAAAAQAAAAAAAAQAAAAAAQABAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAQAAAAAAAAQAAAAAAQAEAAAAAAAABAAAAAAAAAEAAAAAAAAGAAAAAAAAAQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAsAAAAAAQALAAAAAAAACwAAAAACAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAABAAAAAAAACgAAAAAAAAEAAAAAAAABAAAAAAAACgAAAAAAAAsAAAAAAgALAAAAAAEACwAAAAAAAAsAAAAAAQABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAQAAAAAAAAgAAAAAAAIIAAAAAAADAQAAAAAAAAsAAAAAAgALAAAAAAIACwAAAAABAAsAAAAAAAALAAAAAAIACwAAAAACAAUAAAAAAAAFAAAAAAAABwAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAEAAAAAAAAIAAAAAAABCQAAAAAAAAEAAAAAAAALAAAAAAEACwAAAAACAAsAAAAAAgALAAAAAAEACwAAAAABAAsAAAAAAgAFAAAAAAAABQAAAAAAAAcAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAABAAAAAAAACQAAAAAAAwgAAAAAAAABAAAAAAAAAQAAAAAAAAsAAAAAAQALAAAAAAEACwAAAAAAAAsAAAAAAQALAAAAAAIABQAAAAAAAAUAAAAAAAABAAAAAAAAAQAAAAAAAAUAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAALAAAAAAEAAQAAAAAAAAkAAAAAAAMKAAAAAAAACQAAAAAAAwgAAAAAAAALAAAAAAIACwAAAAACAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAQkAAAAAAAMJAAAAAAADCQAAAAAAAwkAAAAAAAMIAAAAAAACCgAAAAAAAAgAAAAAAAMIAAAAAAACCQAAAAAAAwkAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAACwAAAAAAAAsAAAAAAQALAAAAAAEACQAAAAAAAAEAAAAAAAAJAAAAAAAACQAAAAAAAAgAAAAAAAIIAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAsAAAAAAgALAAAAAAEACwAAAAAAAAgAAAAAAAAKAAAAAAAACAAAAAAAAQgAAAAAAAAIAAAAAAACCAAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAABAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAQAAAAAAAAEAAAAAAIAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAFAAAAAAAAAQAAAAAAAAQAAAAAAAABAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAQAAAAAAAAQAAAAAAgAEAAAAAAEABAAAAAABAAEAAAAAAAAGAAAAAAAAAQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAsAAAAAAAALAAAAAAIACwAAAAABAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAABAAAAAAAACgAAAAAAAAEAAAAAAAABAAAAAAAACgAAAAAAAAsAAAAAAgALAAAAAAEACwAAAAABAAsAAAAAAgABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAQAAAAAAAAsAAAAAAAAIAAAAAAADAQAAAAAAAAsAAAAAAQALAAAAAAEACwAAAAABAAsAAAAAAQALAAAAAAIACwAAAAABAAUAAAAAAAAFAAAAAAAABwAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAEAAAAAAAAMAAAAAAAACQAAAAAAAAEAAAAAAAALAAAAAAAACwAAAAABAAsAAAAAAgALAAAAAAIACwAAAAACAAsAAAAAAQAFAAAAAAAABQAAAAAAAAcAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAABAAAAAAAACQAAAAAAAwgAAAAAAAABAAAAAAAAAQAAAAAAAAsAAAAAAAALAAAAAAEACwAAAAABAAsAAAAAAAALAAAAAAIABQAAAAAAAAUAAAAAAAABAAAAAAAAAQAAAAAAAAUAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAJAAAAAAAAAQAAAAAAAAkAAAAAAAMKAAAAAAAACQAAAAAAAwkAAAAAAAALAAAAAAIACwAAAAACAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAkAAAAAAAMJAAAAAAADCQAAAAAAAwkAAAAAAAMIAAAAAAACCgAAAAAAAA4AAAAAAAAJAAAAAAAACQAAAAAAAwsAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAACwAAAAABAAsAAAAAAgALAAAAAAEACQAAAAAAAAEAAAAAAAAJAAAAAAAACQAAAAAAAAgAAAAAAAILAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAsAAAAAAAALAAAAAAEACwAAAAACAA0AAAAAAAAKAAAAAAAADAAAAAAAAAgAAAAAAAALAAAAAAIACwAAAAABAA== version: 7 -1,-1: ind: -1,-1 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAABAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABAAAAAACAAQAAAAAAgABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAYAAAAAAAAGAAAAAAAAAQAAAAAAAAYAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAABAAAAAABAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABAAAAAABAAQAAAAAAQABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAYAAAAAAAAGAAAAAAAAAQAAAAAAAAYAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAA== version: 7 1,-1: ind: 1,-1 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAQAAAAAAgACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAABAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAsAAAAAAgABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAALAAAAAAEAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACwAAAAACAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgAAAAAAAMBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAJAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAQAAAAAAgACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAABAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAsAAAAAAQABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAALAAAAAAIAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACwAAAAACAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAsAAAAAAQABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAALAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACwAAAAABAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 1,0: ind: 1,0 - tiles: CAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAAAAAKAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAABAAAAAACAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAABAAAAAACAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: CQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAAAAAKAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAJAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAABAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAABAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 - type: Broadphase - type: Physics diff --git a/Resources/Maps/exo.yml b/Resources/Maps/exo.yml index 9b5f1d79ae..d76d709b66 100644 --- a/Resources/Maps/exo.yml +++ b/Resources/Maps/exo.yml @@ -4,68 +4,69 @@ meta: engineVersion: 289.0.0 forkId: "" forkVersion: "" - time: 09/09/2026 18:53:51 - entityCount: 20082 + time: 09/11/2026 17:17:27 + entityCount: 20127 maps: - 1 grids: - 2 orphans: [] nullspace: -- 14405 -- 14407 -- 14408 -- 14926 -- 14928 -- 14973 -- 15216 -- 15236 -- 15269 -- 15404 -- 15413 -- 15417 -- 15471 -- 15478 -- 15545 -- 15596 -- 15621 -- 15694 -- 15696 -- 15697 -- 15698 -- 15699 -- 15700 -- 15790 -- 15849 -- 15852 -- 15853 -- 15856 -- 15857 -- 15912 -- 15913 -- 16021 -- 16045 -- 16046 -- 16047 -- 16164 -- 16175 -- 16193 -- 16449 -- 16535 -- 16606 -- 16856 -- 16859 -- 16871 -- 17098 -- 17099 -- 17103 -- 17108 -- 17113 -- 17114 -- 17115 -- 17173 -- 17247 -- 17248 +- 17429 +- 17430 +- 17524 +- 17525 +- 17526 +- 17527 +- 17528 +- 17529 +- 17557 +- 17561 +- 17562 +- 17563 +- 17567 +- 17568 +- 17569 +- 17570 +- 17571 +- 17614 +- 17617 +- 17637 +- 17648 +- 17682 +- 17693 +- 17694 +- 17716 +- 17730 +- 17732 +- 17784 +- 17794 +- 17795 +- 17842 +- 17873 +- 17874 +- 17875 +- 17876 +- 17916 +- 17918 +- 17988 +- 18010 +- 18012 +- 18101 +- 18102 +- 18109 +- 18149 +- 18150 +- 18216 +- 18217 +- 18219 +- 18249 +- 18251 +- 18266 +- 18303 +- 18319 +- 18320 +- 18324 tilemap: 0: Space 29: FloorArcadeBlue @@ -151,155 +152,155 @@ entities: chunks: 0,0: ind: 0,0 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAAAAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAAAAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACAAAAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAAAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABAAAAAAAAAAAXAAAAAAIAAAAAAAAAAIEAAAAAAAAXAAAAAAEAgQAAAAAAAIEAAAAAAAAXAAAAAAEAgQAAAAAAABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAFwAAAAACAIEAAAAAAAAAAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAgQAAAAAAABcAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAgQAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAAAAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACAAAAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAABAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACAAAAAAAAAAAXAAAAAAIAAAAAAAAAAIEAAAAAAAAXAAAAAAEAgQAAAAAAAIEAAAAAAAAXAAAAAAAAgQAAAAAAABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAFwAAAAACAIEAAAAAAAAAAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAgQAAAAAAABcAAAAAAQCBAAAAAAAAgQAAAAAAABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAgQAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -1,0: ind: -1,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAFgAAAAAAABYAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAABYAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABYAAAAAAAAWAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAABAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAAAAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAAAAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAAAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAABAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAAAAAAAAAAgQAAAAAAABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAgQAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgCBAAAAAAAAgQAAAAAAABcAAAAAAAAXAAAAAAEAgQAAAAAAABcAAAAAAgCBAAAAAAAAgQAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAFgAAAAAAABYAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAABYAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABYAAAAAAAAWAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAAAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAACAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAAAAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAAAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAACAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACAAAAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAAAAAAAAAAgQAAAAAAABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAgQAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQCBAAAAAAAAgQAAAAAAABcAAAAAAgAXAAAAAAAAgQAAAAAAABcAAAAAAACBAAAAAAAAgQAAAAAAAA== version: 7 0,-1: ind: 0,-1 - tiles: JQAAAAAAACUAAAAAAAAlAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAIEAAAAAAAAlAAAAAAAAJQAAAAAAAIEAAAAAAACBAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAlAAAAAAAAJQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMYAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACUAAAAAAACBAAAAAAAAKwAAAAAAACsAAAAAAACBAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAGAAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAADgQAAAAAAABgAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAbwAAAAAAAIEAAAAAAACBAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: JQAAAAAAACUAAAAAAAAlAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAIEAAAAAAAAlAAAAAAAAJQAAAAAAAIEAAAAAAACBAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAlAAAAAAAAJQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMYAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACUAAAAAAACBAAAAAAAAKwAAAAAAACsAAAAAAACBAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAGAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAADgQAAAAAAABgAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAbwAAAAAAAIEAAAAAAACBAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -1,-1: ind: -1,-1 - tiles: gQAAAAAAAAQAAAAAAQAEAAAAAAEABAAAAAABAIEAAAAAAAAkAAAAAAAAJAAAAAAAAIEAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAJQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAACUAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAEYAAAAAAIALQAAAAAAATUAAAAAAAAlAAAAAAAARAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAEQAAAAAAAAlAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAGAAAAAACACUAAAAAAAAtAAAAAAAAJQAAAAAAAIEAAAAAAACBAAAAAAAARAAAAAAAAEQAAAAAAACBAAAAAAAAJQAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAARgAAAAAAAAtAAAAAAABLgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACUAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAABcAAAAAAQAXAAAAAAIAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAACBAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAFwAAAAACABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAA== + tiles: gQAAAAAAAAQAAAAAAAAEAAAAAAEABAAAAAABAIEAAAAAAABEAAAAAAAARAAAAAAAAIEAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAJQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAACUAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAEYAAAAAAIALQAAAAAAATUAAAAAAAAlAAAAAAAARAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAEQAAAAAAAAlAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAGAAAAAAAACUAAAAAAAAtAAAAAAAAJQAAAAAAAIEAAAAAAACBAAAAAAAARAAAAAAAAEQAAAAAAACBAAAAAAAAJQAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAARgAAAAAAAAtAAAAAAABLgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACUAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQCBAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAFwAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAA== version: 7 -1,-2: ind: -1,-2 - tiles: GAAAAAABAIEAAAAAAAAYAAAAAAIAGAAAAAABAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADNQAAAAAAADYAAAAAAAAtAAAAAAAAJQAAAAAAABgAAAAAAgCBAAAAAAAAGAAAAAAAABgAAAAAAQACAAAAAAAAAgAAAAAAADcAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADNQAAAAAAADcAAAAAAAAuAAAAAAAALQAAAAAAAAEAAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAHgAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAIEAAAAAAAAgAAAAAAAALgAAAAAAAi0AAAAAAAMuAAAAAAADIAAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAQCBAAAAAAAAIAAAAAAAAC0AAAAAAAAEAAAAAAAALQAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAC0AAAAAAAAZAAAAAAAAGQAAAAAAABkAAAAAAAAZAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAAIAAAAAAAACAAAAAAAAAuAAAAAAABLQAAAAAAAy4AAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAtAAAAAAAAHgAAAAAAABkAAAAAAAAZAAAAAAAAGQAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAALQAAAAAAAB4AAAAAAAAZAAAAAAAAGQAAAAAAABkAAAAAAACBAAAAAAAALQAAAAAAAAEAAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAAYAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAARAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAEQAAAAAAAAtAAAAAAAAGAAAAAABAB4AAAAAAAAeAAAAAAAAHgAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAAA1AAAAAAAALQAAAAAAADYAAAAAAAAuAAAAAAAALgAAAAAAABgAAAAAAAA2AAAAAAAALgAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAB4AAAAAAACBAAAAAAAALQAAAAAAAAEAAAAAAAA3AAAAAAAALQAAAAAAAC0AAAAAAAAtAAAAAAAALgAAAAAAAhgAAAAAAAA2AAAAAAAALQAAAAAAABgAAAAAAgAgAAAAAAAAIAAAAAAAACAAAAAAAAAeAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy4AAAAAAAAYAAAAAAIAGAAAAAABAB4AAAAAAAAeAAAAAAAAHgAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC8AAAAAAAAtAAAAAAAALQAAAAAAAC0AAAAAAAAvAAAAAAAAGAAAAAAAABgAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAACUAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAACQAAAAAAACBAAAAAAAAgQAAAAAAACQAAAAAAAAkAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAADcAAAAAAAAtAAAAAAADgQAAAAAAAAQAAAAAAQAEAAAAAAEABAAAAAABAIEAAAAAAAAkAAAAAAAAJAAAAAAAAC8AAAAAAAAkAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAA== + tiles: GAAAAAAAAIEAAAAAAAAYAAAAAAEAGAAAAAABADcAAAAAAAAtAAAAAAAANQAAAAAAABgAAAAAAQA2AAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADNQAAAAAAADYAAAAAAAAtAAAAAAAAJQAAAAAAABgAAAAAAQCBAAAAAAAAGAAAAAABABgAAAAAAgAYAAAAAAIANgAAAAAAAC0AAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADNQAAAAAAADcAAAAAAAAuAAAAAAAALQAAAAAAAAEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAYAAAAAAEAgQAAAAAAAC8AAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAAgQAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAIEAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAkAAAAAAAAJAAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAIEAAAAAAAAeAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAJAAAAAAAACQAAAAAAACBAAAAAAAAGAAAAAACABgAAAAAAgAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABgAAAAAAQAYAAAAAAEAgQAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAYAAAAAAIAGAAAAAAAABgAAAAAAQAuAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAIEAAAAAAAAeAAAAAAAAIAAAAAAAADYAAAAAAAA1AAAAAAAAGAAAAAACABgAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAZAAAAAAAAGQAAAAAAABkAAAAAAACBAAAAAAAALQAAAAAAAAEAAAAAAACBAAAAAAAAgQAAAAAAAB4AAAAAAAAtAAAAAAAALQAAAAAAABgAAAAAAABEAAAAAAAAgQAAAAAAAEQAAAAAAACBAAAAAAAAGQAAAAAAABkAAAAAAAAZAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAARAAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAgAAAAAAAANgAAAAAAAC0AAAAAAAA1AAAAAAAAIAAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAADUAAAAAAAA3AAAAAAAALQAAAAAAAC4AAAAAAAAtAAAAAAAAGAAAAAAAADYAAAAAAAAvAAAAAAAAIAAAAAAAAC0AAAAAAAAEAAAAAAEALQAAAAAAAEQAAAAAAACBAAAAAAAALQAAAAAAAAEAAAAAAAA3AAAAAAAALQAAAAAAAC0AAAAAAAAtAAAAAAAALgAAAAAAAjYAAAAAAAAuAAAAAAAALwAAAAAAACAAAAAAAAA3AAAAAAAALQAAAAAAAC4AAAAAAAAgAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAAALQAAAAAAAy0AAAAAAAMuAAAAAAAAGAAAAAABAIEAAAAAAABEAAAAAAAAJAAAAAAAACQAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC8AAAAAAAAtAAAAAAAALQAAAAAAAC0AAAAAAAAvAAAAAAAAGAAAAAABABgAAAAAAQCBAAAAAAAAgQAAAAAAACQAAAAAAAAkAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAACUAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAACQAAAAAAAAkAAAAAAAAgQAAAAAAACUAAAAAAAAkAAAAAAAAJAAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAADcAAAAAAAAtAAAAAAADgQAAAAAAAAQAAAAAAQAEAAAAAAAABAAAAAAAAIEAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAA== version: 7 0,-2: ind: 0,-2 - tiles: KwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAADYAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAgQAAAAAAAG8AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAABgAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAAVAAAAAAIAFQAAAAABABUAAAAAAgACAAAAAAAAAgAAAAAAAAIAAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAMAAgAAAAAAAAIAAAAAAAACAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAABUAAAAAAwAVAAAAAAAAFQAAAAAAAAIAAAAAAAAyAAAAAAAAMgAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAuAAAAAAAAJQAAAAAAACUAAAAAAACBAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAJQAAAAAAAIEAAAAAAABEAAAAAAAARAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAG8AAAAAAACBAAAAAAAAAgAAAAAAAA== + tiles: KwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAADYAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAgQAAAAAAAG8AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAABgAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAAVAAAAAAAAFQAAAAADABUAAAAAAQACAAAAAAAAAgAAAAAAAAIAAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAFQAAAAACABUAAAAAAAAVAAAAAAIAAgAAAAAAAAIAAAAAAAACAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAABUAAAAAAgAVAAAAAAAAFQAAAAADAAIAAAAAAAAyAAAAAAAAMgAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAuAAAAAAAAJQAAAAAAACUAAAAAAACBAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAJQAAAAAAAIEAAAAAAABEAAAAAAAARAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAG8AAAAAAACBAAAAAAAAAgAAAAAAAA== version: 7 1,-1: ind: 1,-1 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAANgAAAAAAAC4AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACkAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy4AAAAAAAAlAAAAAAAAJQAAAAAAADcAAAAAAAAtAAAAAAADNQAAAAAAAIEAAAAAAAApAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAArAAAAAAAAJQAAAAAAAC0AAAAAAACBAAAAAAAAKQAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAOBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMuAAAAAAAAgQAAAAAAACkAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAApAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAACBAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAANgAAAAAAAC4AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACkAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy4AAAAAAAAlAAAAAAAAJQAAAAAAADcAAAAAAAAtAAAAAAADNQAAAAAAAIEAAAAAAAApAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAArAAAAAAAAJQAAAAAAAC0AAAAAAACBAAAAAAAAKQAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAOBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMuAAAAAAAAgQAAAAAAACkAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAApAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAACBAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 1,-2: ind: 1,-2 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAC0AAAAAAAAlAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAA3AAAAAAAALQAAAAAAAy4AAAAAAACBAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAGAAAAAABABgAAAAAAgAYAAAAAAEAgQAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAABgAAAAAAgAYAAAAAAAAGAAAAAACAIEAAAAAAAAeAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAEAGAAAAAACABgAAAAAAgCBAAAAAAAAHgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAANgAAAAAAAC0AAAAAAAM1AAAAAAAAgQAAAAAAAIEAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAABYAAAAAAACBAAAAAAAAgQAAAAAAADcAAAAAAAAtAAAAAAADLQAAAAAAAzUAAAAAAACBAAAAAAAAKQAAAAAAACkAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAAAeAAAAAAAAGAAAAAABADYAAAAAAAAuAAAAAAABHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAC0AAAAAAAMCAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHgAAAAAAADYAAAAAAAAuAAAAAAAAJQAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB4AAAAAAAAtAAAAAAADNQAAAAAAAAEAAAAAAAA2AAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAA4EAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAANwAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAABABgAAAAAAQACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAGAAAAAACACkAAAAAAAApAAAAAAAAKQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAABgAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAGAAAAAABABgAAAAAAgAYAAAAAAEAgQAAAAAAAIEAAAAAAAApAAAAAAAAKQAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAC0AAAAAAAAlAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAA3AAAAAAAALQAAAAAAAy4AAAAAAACBAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAQAYAAAAAAAAgQAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAABgAAAAAAAAYAAAAAAEAGAAAAAABAIEAAAAAAAAeAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAAAABgAAAAAAACBAAAAAAAAHgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAANgAAAAAAAC0AAAAAAAM1AAAAAAAAgQAAAAAAAIEAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAABYAAAAAAACBAAAAAAAAgQAAAAAAADcAAAAAAAAtAAAAAAADLQAAAAAAAzUAAAAAAACBAAAAAAAAKQAAAAAAACkAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAAAeAAAAAAAAGAAAAAAAADYAAAAAAAAuAAAAAAABHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAC0AAAAAAAMCAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAHgAAAAAAADYAAAAAAAAuAAAAAAAAJQAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB4AAAAAAAAtAAAAAAADNQAAAAAAAAEAAAAAAAA2AAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAA4EAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAANwAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAQACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAGAAAAAACACkAAAAAAAApAAAAAAAAKQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAABgAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAIAgQAAAAAAAIEAAAAAAAApAAAAAAAAKQAAAAAAAA== version: 7 0,-3: ind: 0,-3 - tiles: IAAAAAAAAAMAAAAAAQADAAAAAAIAgQAAAAAAAC0AAAAAAAAtAAAAAAAAIAAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAADAAAAAAIAAwAAAAADAIEAAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAEANgAAAAAAAC0AAAAAAAMCAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAABABgAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAANgAAAAAAAC4AAAAAAAAYAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAAAGAAAAAAAAC0AAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAgQAAAAAAAC0AAAAAAAAtAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAtAAAAAAAALQAAAAAAAC8AAAAAAAAvAAAAAAAAgQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAIEAAAAAAAAYAAAAAAEAGAAAAAACABgAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAAAvAAAAAAAAGAAAAAACABgAAAAAAQAYAAAAAAIAGAAAAAABABgAAAAAAQAYAAAAAAIAGAAAAAACABgAAAAAAQAYAAAAAAIAAAAAAAAAAAAAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAAAtAAAAAAAALwAAAAAAAC8AAAAAAACBAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAgQAAAAAAABgAAAAAAQAYAAAAAAAAGAAAAAAAABcAAAAAAgAAAAAAAAAAgQAAAAAAAC0AAAAAAAAlAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAIEAAAAAAAAtAAAAAAAALQAAAAAAABgAAAAAAQCBAAAAAAAAAAAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAANwAAAAAAADUAAAAAAAAYAAAAAAEAgQAAAAAAABcAAAAAAQCBAAAAAAAAGAAAAAABABgAAAAAAQAYAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAQA3AAAAAAAALQAAAAAAA4EAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMuAAAAAAAAAQAAAAAAADcAAAAAAAAYAAAAAAIALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACUAAAAAAAArAAAAAAAAGAAAAAACACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAADYAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAxgAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAANwAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAA4EAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: IAAAAAAAAAMAAAAAAQADAAAAAAIAgQAAAAAAAC0AAAAAAAAtAAAAAAAAIAAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAADAAAAAAIAAwAAAAAFAIEAAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIANgAAAAAAAC0AAAAAAAMCAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAANgAAAAAAAC4AAAAAAAAYAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAAGAAAAAAAAC0AAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAgQAAAAAAAC0AAAAAAAAtAAAAAAAAGAAAAAACABgAAAAAAQAYAAAAAAAAGAAAAAAAABgAAAAAAgAtAAAAAAAALQAAAAAAAC8AAAAAAAAvAAAAAAAAgQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAACABgAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAAAvAAAAAAAAGAAAAAAAABgAAAAAAgAYAAAAAAEAGAAAAAAAABgAAAAAAgAYAAAAAAEAGAAAAAAAABgAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAAAtAAAAAAAALwAAAAAAAC8AAAAAAACBAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAgQAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAACABcAAAAAAQAAAAAAAAAAgQAAAAAAAC0AAAAAAAAlAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAIEAAAAAAAAtAAAAAAAALQAAAAAAABgAAAAAAACBAAAAAAAAAAAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAANwAAAAAAADUAAAAAAAAYAAAAAAIAgQAAAAAAABcAAAAAAACBAAAAAAAAGAAAAAABABgAAAAAAQAYAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAAA3AAAAAAAALQAAAAAAA4EAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMuAAAAAAAAAQAAAAAAADcAAAAAAAAYAAAAAAEALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACUAAAAAAAArAAAAAAAAGAAAAAACACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAADYAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAxgAAAAAAQAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAANwAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAA4EAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 1,-3: ind: 1,-3 - tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAAYAAAAAAEALQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAABABgAAAAAAQCBAAAAAAAAgQAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAM1AAAAAAAAGAAAAAABAIEAAAAAAAAYAAAAAAIAGAAAAAACABgAAAAAAACBAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAG8AAAAAAAAYAAAAAAAAGAAAAAACABgAAAAAAQAYAAAAAAEANwAAAAAAADUAAAAAAACBAAAAAAAAIAAAAAAAAAEAAAAAAAAgAAAAAAAAgQAAAAAAAG8AAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAtAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAABgAAAAAAgBvAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAABgAAAAAAgAYAAAAAAAALQAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAAAYAAAAAAIAbwAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAJAAAAAAAABAAAAAABAAkAAAAAAAAYAAAAAAIAGAAAAAABAC0AAAAAAACBAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAAG8AAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAGAAAAAAAABgAAAAAAAAtAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAABvAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAABgAAAAAAQAYAAAAAAAAGAAAAAAAABgAAAAAAgAYAAAAAAIALQAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAbwAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAYAAAAAAIAGAAAAAABABgAAAAAAQAYAAAAAAEANgAAAAAAAC4AAAAAAACBAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAAG8AAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy4AAAAAAAAYAAAAAAIAgQAAAAAAABgAAAAAAgAYAAAAAAIAGAAAAAAAAIEAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAJQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAG8AAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMYAAAAAAIALgAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAGAAAAAAAACsAAAAAAAAlAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAxgAAAAAAAA1AAAAAAAAAQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAOBAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAeAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA== + tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAAYAAAAAAIALQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAQCBAAAAAAAAgQAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAM1AAAAAAAAGAAAAAABAIEAAAAAAAAYAAAAAAIAGAAAAAABABgAAAAAAQCBAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAG8AAAAAAAAYAAAAAAEAGAAAAAACABgAAAAAAAAYAAAAAAEANwAAAAAAADUAAAAAAACBAAAAAAAAIAAAAAAAAAEAAAAAAAAgAAAAAAAAgQAAAAAAAG8AAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAGAAAAAACABgAAAAAAAAYAAAAAAIAGAAAAAACABgAAAAAAgAtAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAABgAAAAAAgBvAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAABgAAAAAAgAYAAAAAAEALQAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAAAYAAAAAAAAbwAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAJAAAAAAAABAAAAAABAAkAAAAAAAAYAAAAAAAAGAAAAAACAC0AAAAAAACBAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAAG8AAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAGAAAAAABABgAAAAAAgAtAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAABvAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAABgAAAAAAgAYAAAAAAIAGAAAAAACABgAAAAAAAAYAAAAAAAALQAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAbwAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAYAAAAAAAAGAAAAAABABgAAAAAAgAYAAAAAAIANgAAAAAAAC4AAAAAAACBAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAAG8AAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy4AAAAAAAAYAAAAAAIAgQAAAAAAABgAAAAAAQAYAAAAAAIAGAAAAAAAAIEAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAJQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAG8AAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMYAAAAAAEALgAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAGAAAAAAAACsAAAAAAAAlAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAxgAAAAAAAA1AAAAAAAAAQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAOBAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAeAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA== version: 7 -1,-3: ind: -1,-3 - tiles: gQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAAAeAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAAIEAAAAAAAAgAAAAAAAAgQAAAAAAACAAAAAAAAAYAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAGAAAAAACABgAAAAAAQAYAAAAAAAAGAAAAAABAC8AAAAAAAAYAAAAAAIALwAAAAAAABgAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAAAgAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAAAGAAAAAABAC8AAAAAAACBAAAAAAAAIAAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAABABgAAAAAAQCBAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAACBAAAAAAAALwAAAAAAABgAAAAAAQAYAAAAAAEAGAAAAAACABgAAAAAAACBAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAeAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAgCBAAAAAAAAFwAAAAABAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAAA2AAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAxgAAAAAAAAYAAAAAAEAGAAAAAAAABgAAAAAAgAYAAAAAAIAgQAAAAAAABcAAAAAAgAYAAAAAAAALQAAAAAAACUAAAAAAAArAAAAAAAAJQAAAAAAADYAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAxgAAAAAAgAYAAAAAAIAGAAAAAACACAAAAAAAACBAAAAAAAAGAAAAAAAAC0AAAAAAAAtAAAAAAAALQAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAGAAAAAAAABgAAAAAAQAYAAAAAAIAGAAAAAACABgAAAAAAAA3AAAAAAAALQAAAAAAAC0AAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAABvAAAAAAAALQAAAAAABxgAAAAAAgCBAAAAAAAAgQAAAAAAAC0AAAAAAAA3AAAAAAAAbwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAbwAAAAAAADcAAAAAAAAtAAAAAAADGAAAAAACAIEAAAAAAAA3AAAAAAAALQAAAAAAA4EAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAAAYAAAAAAIAJQAAAAAAABgAAAAAAACBAAAAAAAAGAAAAAABABgAAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAABvAAAAAAAALQAAAAAAAAEAAAAAAAAYAAAAAAEAgQAAAAAAABgAAAAAAgAYAAAAAAEAGAAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAbwAAAAAAAC0AAAAAAAABAAAAAAAAGAAAAAACAIEAAAAAAAAYAAAAAAIAGAAAAAABABgAAAAAAABvAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAG8AAAAAAAAtAAAAAAAAAQAAAAAAAA== + tiles: gQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAAAeAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAAIEAAAAAAAAgAAAAAAAAgQAAAAAAACAAAAAAAAAYAAAAAAEALQAAAAAAAAEAAAAAAAAtAAAAAAAAGAAAAAACABgAAAAAAQAYAAAAAAIAGAAAAAABAC8AAAAAAAAYAAAAAAIALwAAAAAAABgAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAAAgAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAAAGAAAAAACAC8AAAAAAACBAAAAAAAAIAAAAAAAAIEAAAAAAAAYAAAAAAEAGAAAAAABABgAAAAAAACBAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAACBAAAAAAAALwAAAAAAABgAAAAAAgAYAAAAAAAAGAAAAAABABgAAAAAAgCBAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAeAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAAAGAAAAAABABgAAAAAAgCBAAAAAAAAFwAAAAACAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAAA2AAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAxgAAAAAAQAYAAAAAAEAGAAAAAAAABgAAAAAAgAYAAAAAAEAgQAAAAAAABcAAAAAAgAYAAAAAAAALQAAAAAAACUAAAAAAAArAAAAAAAAJQAAAAAAADYAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAxgAAAAAAQAYAAAAAAAAGAAAAAACACAAAAAAAACBAAAAAAAAGAAAAAAAAC0AAAAAAAAtAAAAAAAALQAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAGAAAAAABABgAAAAAAQAYAAAAAAIAGAAAAAABABgAAAAAAQA3AAAAAAAALQAAAAAAAC0AAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAABvAAAAAAAALQAAAAAABxgAAAAAAgCBAAAAAAAAgQAAAAAAAC0AAAAAAAA3AAAAAAAAbwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAbwAAAAAAADcAAAAAAAAtAAAAAAADGAAAAAACAIEAAAAAAAA3AAAAAAAALQAAAAAAA4EAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAAAYAAAAAAAAJQAAAAAAABgAAAAAAgCBAAAAAAAAGAAAAAAAAC0AAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAABvAAAAAAAALQAAAAAAAAEAAAAAAAAYAAAAAAEAgQAAAAAAABgAAAAAAAA3AAAAAAAANQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAbwAAAAAAAC0AAAAAAAABAAAAAAAAGAAAAAACAIEAAAAAAAAYAAAAAAIAGAAAAAAAAC0AAAAAAABvAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAG8AAAAAAAAtAAAAAAAAAQAAAAAAAA== version: 7 -2,-2: ind: -2,-2 - tiles: gQAAAAAAAIEAAAAAAAAtAAAAAAAAJQAAAAAAAC0AAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAgAYAAAAAAEAAAAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAYAAAAAAEAGAAAAAABAIEAAAAAAACBAAAAAAAAGAAAAAACABgAAAAAAAAYAAAAAAEAgQAAAAAAABgAAAAAAQAYAAAAAAIAGAAAAAABABgAAAAAAgAYAAAAAAAAGAAAAAAAAB4AAAAAAAAYAAAAAAAAGAAAAAACABgAAAAAAQAYAAAAAAEAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAAAYAAAAAAAAGAAAAAACABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAeAAAAAAAAGAAAAAABABgAAAAAAQAYAAAAAAEAgQAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAHgAAAAAAABgAAAAAAgAYAAAAAAAAGAAAAAAAAIEAAAAAAAAvAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAACAAAAAAAAAgAAAAAAAANgAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAzUAAAAAAAAgAAAAAAAANQAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAIAAAAAAAADcAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMuAAAAAAAAIAAAAAAAAC0AAAAAAAAYAAAAAAIALQAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAuAAAAAAAAGAAAAAABAC0AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC8AAAAAAACBAAAAAAAALQAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAARAAAAAAAAEQAAAAAAAAtAAAAAAAARAAAAAAAAC0AAAAAAAAYAAAAAAIALQAAAAAAAAEAAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAADYAAAAAAAAtAAAAAAADLgAAAAAAADcAAAAAAAAuAAAAAAAAGAAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAALQAAAAAAABgAAAAAAgAtAAAAAAAAGAAAAAABABgAAAAAAAAYAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAAAGAAAAAABABgAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAANwAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAxgAAAAAAgCBAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAABABgAAAAAAgAYAAAAAAIAgQAAAAAAABgAAAAAAACBAAAAAAAAGAAAAAAAAEQAAAAAAAAYAAAAAAAAGAAAAAABAC0AAAAAAAABAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAGAAAAAACABgAAAAAAQAYAAAAAAEAgQAAAAAAAIEAAAAAAAAYAAAAAAAAgQAAAAAAABgAAAAAAABEAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAABgAAAAAAAAYAAAAAAIAGAAAAAABAIEAAAAAAAAEAAAAAAEAGAAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAACAA== + tiles: gQAAAAAAAIEAAAAAAAAtAAAAAAAAJQAAAAAAAC0AAAAAAACBAAAAAAAAGAAAAAABABgAAAAAAAAYAAAAAAEAAAAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAYAAAAAAEAGAAAAAABAIEAAAAAAACBAAAAAAAAGAAAAAABABgAAAAAAQAYAAAAAAAAgQAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAACABgAAAAAAgAYAAAAAAEAGAAAAAAAAB4AAAAAAAAYAAAAAAAAGAAAAAACABgAAAAAAAAYAAAAAAIAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAABABgAAAAAAQAYAAAAAAEAGAAAAAACABgAAAAAAAAeAAAAAAAAGAAAAAACABgAAAAAAQAYAAAAAAIAgQAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAgAYAAAAAAEAHgAAAAAAABgAAAAAAQAYAAAAAAAAGAAAAAABAIEAAAAAAAAvAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAACAAAAAAAAAgAAAAAAAANgAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAzUAAAAAAAAgAAAAAAAANQAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAIAAAAAAAADcAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMuAAAAAAAAIAAAAAAAAC0AAAAAAAAYAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAuAAAAAAAAGAAAAAABAC0AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC8AAAAAAACBAAAAAAAALQAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAARAAAAAAAAEQAAAAAAAAtAAAAAAAARAAAAAAAAC0AAAAAAAAYAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAADYAAAAAAAAtAAAAAAADLgAAAAAAADcAAAAAAAAuAAAAAAAAGAAAAAACAC0AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAALQAAAAAAABgAAAAAAQAtAAAAAAAAGAAAAAABABgAAAAAAgAYAAAAAAEAgQAAAAAAAIEAAAAAAAAYAAAAAAAAGAAAAAACABgAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAANwAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAxgAAAAAAgCBAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAABABgAAAAAAAAYAAAAAAEAgQAAAAAAABgAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAAAYAAAAAAIAGAAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAgAYAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAgQAAAAAAADcAAAAAAAAuAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAABgAAAAAAQAYAAAAAAEAGAAAAAACAIEAAAAAAAAEAAAAAAAAGAAAAAACAIEAAAAAAAAYAAAAAAEAGAAAAAACAA== version: 7 -2,-1: ind: -2,-1 - tiles: HgAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAABAIEAAAAAAABEAAAAAAAARAAAAAAAAB4AAAAAAAAeAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAANwAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAOBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAeAAAAAAAANgAAAAAAAC4AAAAAAAABAAAAAAAANwAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy4AAAAAAAAlAAAAAAAAJQAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAJQAAAAAAADYAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMuAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAACAIEAAAAAAAAYAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAACBAAAAAAAAGAAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAEAFwAAAAACABcAAAAAAAAXAAAAAAIAFwAAAAACABcAAAAAAgAXAAAAAAEAFwAAAAAAABcAAAAAAQAYAAAAAAEAgQAAAAAAABgAAAAAAQCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAAAABcAAAAAAQAAAAAAAAAAFwAAAAACABcAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: HgAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAEAGAAAAAACAIEAAAAAAABEAAAAAAAARAAAAAAAAB4AAAAAAAAeAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAANwAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAOBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAeAAAAAAAANgAAAAAAAC4AAAAAAAABAAAAAAAANwAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy4AAAAAAAAlAAAAAAAAJQAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAJQAAAAAAADYAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMuAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAABAIEAAAAAAAAYAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAACBAAAAAAAAGAAAAAACAIEAAAAAAACBAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAAAFwAAAAABABcAAAAAAQAYAAAAAAAAgQAAAAAAABgAAAAAAQCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAQAAAAAAAAAAFwAAAAAAABcAAAAAAQAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -2,-3: ind: -2,-3 - tiles: gQAAAAAAAIEAAAAAAAAtAAAAAAACAQAAAAAAABgAAAAAAgAtAAAAAAACgQAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAbwAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAAAAAAAAAACBAAAAAAAALQAAAAAAAgEAAAAAAAAYAAAAAAEALQAAAAAAAoEAAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAAC8AAAAAAAAAAAAAAAAAgQAAAAAAAC0AAAAAAAIBAAAAAAAAGAAAAAACAC0AAAAAAAKBAAAAAAAAgQAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAIEAAAAAAAAtAAAAAAACAQAAAAAAABgAAAAAAAAtAAAAAAACgQAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAgEAAAAAAAAYAAAAAAIALQAAAAAAAoEAAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAAAYAAAAAAAAgQAAAAAAABgAAAAAAgCBAAAAAAAAHgAAAAAAAC0AAAAAAAIBAAAAAAAAGAAAAAAAAC0AAAAAAAIYAAAAAAEAGAAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAABAIEAAAAAAAAYAAAAAAIAHgAAAAAAAB4AAAAAAAAtAAAAAAACAQAAAAAAADYAAAAAAAAuAAAAAAAAgQAAAAAAABgAAAAAAACBAAAAAAAAGAAAAAABABgAAAAAAAAYAAAAAAAAGAAAAAACABgAAAAAAAAYAAAAAAEAGAAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAQAYAAAAAAIALQAAAAAAAS0AAAAAAAEtAAAAAAABGAAAAAAAABgAAAAAAgAYAAAAAAIAGAAAAAACABgAAAAAAgAYAAAAAAAAGAAAAAABAIEAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAQAYAAAAAAEALQAAAAAAAS0AAAAAAAEYAAAAAAEALQAAAAAAAS0AAAAAAAEYAAAAAAAAGAAAAAACABgAAAAAAAAYAAAAAAAAGAAAAAACABgAAAAAAgCBAAAAAAAAGAAAAAACABgAAAAAAAAYAAAAAAIAGAAAAAAAABgAAAAAAgAtAAAAAAABLQAAAAAAAS0AAAAAAAEYAAAAAAIAGAAAAAABABgAAAAAAQAYAAAAAAEAGAAAAAACABgAAAAAAgAYAAAAAAEAGAAAAAAAABgAAAAAAAAYAAAAAAIAGAAAAAABABgAAAAAAgAYAAAAAAIAGAAAAAACABgAAAAAAQAYAAAAAAIAGAAAAAABABgAAAAAAQAYAAAAAAIAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAACABgAAAAAAQAYAAAAAAEAGAAAAAAAABgAAAAAAQAYAAAAAAIAGAAAAAACABgAAAAAAAAeAAAAAAAAGAAAAAACABgAAAAAAAAYAAAAAAEAGAAAAAACABgAAAAAAAAYAAAAAAEAGAAAAAAAABgAAAAAAgAYAAAAAAIAGAAAAAABABgAAAAAAQAYAAAAAAEAGAAAAAACABgAAAAAAQAYAAAAAAEAHgAAAAAAABgAAAAAAAAYAAAAAAEAGAAAAAAAABgAAAAAAgAYAAAAAAAAGAAAAAABABgAAAAAAAAYAAAAAAAAgQAAAAAAABgAAAAAAgAYAAAAAAEAGAAAAAACABgAAAAAAgAYAAAAAAIAGAAAAAACAB4AAAAAAAAYAAAAAAEAGAAAAAABABgAAAAAAAAYAAAAAAAAGAAAAAACABgAAAAAAQAYAAAAAAAAGAAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAACABgAAAAAAAAAAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABgAAAAAAAAYAAAAAAIAgQAAAAAAAIEAAAAAAAA2AAAAAAAALQAAAAAAATUAAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAEAAAAAAAAAAIEAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAAYAAAAAAEAGAAAAAACAA== + tiles: gQAAAAAAAIEAAAAAAAAtAAAAAAACAQAAAAAAABgAAAAAAQAtAAAAAAACgQAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAbwAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAAAAAAAAAACBAAAAAAAALQAAAAAAAgEAAAAAAAAYAAAAAAEALQAAAAAAAoEAAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAAC8AAAAAAAAAAAAAAAAAgQAAAAAAAC0AAAAAAAIBAAAAAAAAGAAAAAAAAC0AAAAAAAKBAAAAAAAAgQAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAIEAAAAAAAAtAAAAAAACAQAAAAAAABgAAAAAAQAtAAAAAAACgQAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAgEAAAAAAAAYAAAAAAAALQAAAAAAAoEAAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAAAYAAAAAAIAgQAAAAAAABgAAAAAAACBAAAAAAAAHgAAAAAAAC0AAAAAAAIBAAAAAAAAGAAAAAABAC0AAAAAAAIYAAAAAAIAGAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAAIEAAAAAAAAYAAAAAAEAHgAAAAAAAB4AAAAAAAAtAAAAAAACAQAAAAAAADYAAAAAAAAuAAAAAAAAgQAAAAAAABgAAAAAAQCBAAAAAAAAGAAAAAACABgAAAAAAAAYAAAAAAIAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAABAIEAAAAAAACBAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAgAYAAAAAAEALQAAAAAAAS0AAAAAAAEtAAAAAAABGAAAAAACABgAAAAAAQAYAAAAAAEAGAAAAAAAABgAAAAAAgAYAAAAAAEAGAAAAAACAIEAAAAAAAAYAAAAAAAAGAAAAAACABgAAAAAAgAYAAAAAAIALQAAAAAAAS0AAAAAAAEYAAAAAAIALQAAAAAAAS0AAAAAAAEYAAAAAAAAGAAAAAACABgAAAAAAgAYAAAAAAIAGAAAAAAAABgAAAAAAQCBAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAEAGAAAAAABABgAAAAAAAAtAAAAAAABLQAAAAAAAS0AAAAAAAEYAAAAAAIAGAAAAAACABgAAAAAAgAYAAAAAAEAGAAAAAAAABgAAAAAAAAYAAAAAAIAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAACABgAAAAAAAAYAAAAAAEAGAAAAAABABgAAAAAAAAYAAAAAAAAGAAAAAACABgAAAAAAQAYAAAAAAIAGAAAAAABABgAAAAAAQAYAAAAAAAAGAAAAAAAABgAAAAAAgAYAAAAAAAAGAAAAAACABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAQAeAAAAAAAAGAAAAAACABgAAAAAAQAYAAAAAAEAGAAAAAACABgAAAAAAgAYAAAAAAIAGAAAAAABABgAAAAAAQAYAAAAAAAAGAAAAAACABgAAAAAAgAYAAAAAAAAGAAAAAACABgAAAAAAQAYAAAAAAIAHgAAAAAAABgAAAAAAgAYAAAAAAEAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAACABgAAAAAAQAYAAAAAAEAgQAAAAAAABgAAAAAAQAYAAAAAAEAGAAAAAACABgAAAAAAgAYAAAAAAAAGAAAAAACAB4AAAAAAAAYAAAAAAIAGAAAAAAAABgAAAAAAQAYAAAAAAAAGAAAAAACABgAAAAAAgAYAAAAAAEAGAAAAAAAAIEAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAQAAAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABgAAAAAAAAYAAAAAAEAgQAAAAAAAIEAAAAAAAA2AAAAAAAALQAAAAAAATUAAAAAAACBAAAAAAAAGAAAAAACABgAAAAAAAAYAAAAAAEAAAAAAAAAAIEAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAAYAAAAAAAAGAAAAAABAA== version: 7 0,-4: ind: 0,-4 - tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAABAAAAAAAAAQAAAAAAAIEAAAAAAAAYAAAAAAIAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAQAAAAAAAAEAAAAAAACBAAAAAAAAGAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAABkAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAC0AAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAB4AAAAAAAAtAAAAAAAALQAAAAAAAC0AAAAAAABvAAAAAAAAbwAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAeAAAAAAAALQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAAG8AAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAABvAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAbwAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAANgAAAAAAAC0AAAAAAAMtAAAAAAADGAAAAAABAC4AAAAAAAAtAAAAAAAANwAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAyAAAAAAAAAgAAAAAAAAIAAAAAAAAC0AAAAAAAAlAAAAAAAAKwAAAAAAABgAAAAAAgArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAtAAAAAAAALQAAAAAAADYAAAAAAAAYAAAAAAEALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAEAGAAAAAAAAAMAAAAAAgADAAAAAAEAgQAAAAAAAC0AAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAIEAAAAAAAAgAAAAAAAANgAAAAAAAC0AAAAAAAMDAAAAAAQAAwAAAAACAIEAAAAAAAAtAAAAAAAALQAAAAAAAC0AAAAAAAAgAAAAAAAAJQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACUAAAAAAACBAAAAAAAAIAAAAAAAAC0AAAAAAAAlAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAACUAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAlAAAAAAAAgQAAAAAAACAAAAAAAAA3AAAAAAAALQAAAAAAAw== + tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAABAAAAAAAAAQAAAAAAAIEAAAAAAAAYAAAAAAIAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAQAAAAAAAAEAAAAAAACBAAAAAAAAGAAAAAACACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAABkAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAC0AAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAB4AAAAAAAAtAAAAAAAALQAAAAAAAC0AAAAAAABvAAAAAAAAbwAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAeAAAAAAAALQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAAG8AAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAABvAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAbwAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAANgAAAAAAAC0AAAAAAAMtAAAAAAADGAAAAAAAAC4AAAAAAAAtAAAAAAAANwAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAyAAAAAAAAAgAAAAAAAAIAAAAAAAAC0AAAAAAAAlAAAAAAAAKwAAAAAAABgAAAAAAgArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAtAAAAAAAALQAAAAAAADYAAAAAAAAYAAAAAAEALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAEAGAAAAAAAAAMAAAAABQADAAAAAAIAgQAAAAAAAC0AAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAIEAAAAAAAAgAAAAAAAANgAAAAAAAC0AAAAAAAMDAAAAAAMAAwAAAAAFAIEAAAAAAAAtAAAAAAAALQAAAAAAAC0AAAAAAAAgAAAAAAAAJQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACUAAAAAAACBAAAAAAAAIAAAAAAAAC0AAAAAAAAlAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAACUAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAlAAAAAAAAgQAAAAAAACAAAAAAAAA3AAAAAAAALQAAAAAAAw== version: 7 1,-4: ind: 1,-4 - tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAAAeAAAAAAAAIAAAAAAAAIEAAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAHgAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAAAEAAAAAAAAgAAAAAAAAgQAAAAAAAB4AAAAAAAAgAAAAAAAAHgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAuAAAAAAAAgQAAAAAAABgAAAAAAgAYAAAAAAIAGAAAAAABAIEAAAAAAAAeAAAAAAAAIAAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAAGAAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAACBAAAAAAAAgQAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAADYAAAAAAAAtAAAAAAADLgAAAAAAABgAAAAAAAA3AAAAAAAALQAAAAAAAzUAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAADYAAAAAAAAuAAAAAAAAGAAAAAABABgAAAAAAQAYAAAAAAIAGAAAAAABABgAAAAAAgA3AAAAAAAANQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACAIEAAAAAAACBAAAAAAAAGAAAAAACADYAAAAAAAAuAAAAAAAAGAAAAAABABgAAAAAAAA2AAAAAAAALQAAAAAAAzUAAAAAAAAYAAAAAAIAGAAAAAABADcAAAAAAAA1AAAAAAAAgQAAAAAAABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAAGAAAAAAAABgAAAAAAAA2AAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAANQAAAAAAABgAAAAAAAAYAAAAAAEALQAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAABgAAAAAAgAtAAAAAAADLgAAAAAAABgAAAAAAgA2AAAAAAAACQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAkAAAAAAAA1AAAAAAAAGAAAAAABADcAAAAAAAAtAAAAAAADGAAAAAAAACsAAAAAAAAYAAAAAAIAGAAAAAACABgAAAAAAgAYAAAAAAEALQAAAAAAAAkAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAJAAAAAAAALQAAAAAAABgAAAAAAAAYAAAAAAIAGAAAAAACABgAAAAAAAAgAAAAAAAAGAAAAAAAAC0AAAAAAAM1AAAAAAAAGAAAAAAAADcAAAAAAAAJAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAACQAAAAAAAC4AAAAAAAAYAAAAAAAANgAAAAAAAC0AAAAAAAMYAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAABgAAAAAAgAYAAAAAAAANwAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAC4AAAAAAAAYAAAAAAIAGAAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAM1AAAAAAAAgQAAAAAAADcAAAAAAAA1AAAAAAAAGAAAAAABABgAAAAAAAA3AAAAAAAALQAAAAAAAy4AAAAAAAAYAAAAAAIAGAAAAAAAADYAAAAAAAAuAAAAAAAAgQAAAAAAACAAAAAAAAAlAAAAAAAALQAAAAAAAIEAAAAAAAA1AAAAAAAANwAAAAAAADUAAAAAAAAYAAAAAAIAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAABADYAAAAAAAAuAAAAAAAANgAAAAAAAIEAAAAAAAAgAAAAAAAALQAAAAAAAy4AAAAAAACBAAAAAAAAgQAAAAAAADUAAAAAAAA3AAAAAAAALQAAAAAAAzUAAAAAAAAYAAAAAAIANgAAAAAAAC0AAAAAAAMuAAAAAAAANgAAAAAAAC4AAAAAAACBAAAAAAAAIAAAAAAAAA== + tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAAAeAAAAAAAAIAAAAAAAAIEAAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAHgAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAAAEAAAAAAAAgAAAAAAAAgQAAAAAAAB4AAAAAAAAgAAAAAAAAHgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAuAAAAAAAAgQAAAAAAABgAAAAAAAAYAAAAAAIAGAAAAAAAAIEAAAAAAAAeAAAAAAAAIAAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAAGAAAAAABAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAACBAAAAAAAAgQAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAADYAAAAAAAAtAAAAAAADLgAAAAAAABgAAAAAAgA3AAAAAAAALQAAAAAAAzUAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAADYAAAAAAAAuAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAIAGAAAAAABABgAAAAAAQA3AAAAAAAANQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAABADYAAAAAAAAuAAAAAAAAGAAAAAACABgAAAAAAAA2AAAAAAAALQAAAAAAAzUAAAAAAAAYAAAAAAEAGAAAAAACADcAAAAAAAA1AAAAAAAAgQAAAAAAABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAAGAAAAAAAABgAAAAAAQA2AAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAANQAAAAAAABgAAAAAAQAYAAAAAAIALQAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAABgAAAAAAgAtAAAAAAADLgAAAAAAABgAAAAAAQA2AAAAAAAACQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAkAAAAAAAA1AAAAAAAAGAAAAAABADcAAAAAAAAtAAAAAAADGAAAAAACACsAAAAAAAAYAAAAAAEAGAAAAAACABgAAAAAAgAYAAAAAAEALQAAAAAAAAkAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAJAAAAAAAALQAAAAAAABgAAAAAAAAYAAAAAAEAGAAAAAAAABgAAAAAAAAgAAAAAAAAGAAAAAACAC0AAAAAAAM1AAAAAAAAGAAAAAABADcAAAAAAAAJAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAACQAAAAAAAC4AAAAAAAAYAAAAAAAANgAAAAAAAC0AAAAAAAMYAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAABgAAAAAAAAYAAAAAAAANwAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAC4AAAAAAAAYAAAAAAIAGAAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAM1AAAAAAAAgQAAAAAAADcAAAAAAAA1AAAAAAAAGAAAAAAAABgAAAAAAgA3AAAAAAAALQAAAAAAAy4AAAAAAAAYAAAAAAAAGAAAAAACADYAAAAAAAAuAAAAAAAAgQAAAAAAACAAAAAAAAAlAAAAAAAALQAAAAAAAIEAAAAAAAA1AAAAAAAANwAAAAAAADUAAAAAAAAYAAAAAAIAGAAAAAAAABgAAAAAAQAYAAAAAAEAGAAAAAABADYAAAAAAAAuAAAAAAAANgAAAAAAAIEAAAAAAAAgAAAAAAAALQAAAAAAAy4AAAAAAACBAAAAAAAAgQAAAAAAADUAAAAAAAA3AAAAAAAALQAAAAAAAzUAAAAAAAAYAAAAAAAANgAAAAAAAC0AAAAAAAMuAAAAAAAANgAAAAAAAC4AAAAAAACBAAAAAAAAIAAAAAAAAA== version: 7 -1,-4: ind: -1,-4 - tiles: gQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAAgAAAAAAAAIAAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAC0AAAAAAAM1AAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAABAIEAAAAAAAACAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAAAlAAAAAAAANwAAAAAAADUAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAJQAAAAAAACUAAAAAAAA3AAAAAAAANQAAAAAAAIEAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAAAIAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADUAAAAAAAAlAAAAAAAAJQAAAAAAACAAAAAAAABvAAAAAAAAHgAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAACAAAAAAAAA3AAAAAAAANQAAAAAAACUAAAAAAAAgAAAAAAAAbwAAAAAAAB4AAAAAAABvAAAAAAAAbwAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAgAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAAIAAAAAAAAG8AAAAAAAAeAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAHgAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAAB4AAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAgAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAACAAAAAAAAAeAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAIAAAAAAAAA== + tiles: gQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAAgAAAAAAAAIAAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAC0AAAAAAAM1AAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAAIEAAAAAAAACAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAAAlAAAAAAAANwAAAAAAADUAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAJQAAAAAAACUAAAAAAAA3AAAAAAAANQAAAAAAAIEAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAAAIAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADUAAAAAAAAlAAAAAAAAJQAAAAAAACAAAAAAAABvAAAAAAAAHgAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAACAAAAAAAAA3AAAAAAAANQAAAAAAACUAAAAAAAAgAAAAAAAAbwAAAAAAAB4AAAAAAABvAAAAAAAAbwAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAgAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAAIAAAAAAAAG8AAAAAAAAeAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAHgAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAAB4AAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAgAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAACAAAAAAAAAeAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAIAAAAAAAAA== version: 7 0,-5: ind: 0,-5 - tiles: LwAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAA2AAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy8AAAAAAACBAAAAAAAAAgAAAAAAACkAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAACUAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAJQAAAAAAACsAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACkAAAAAAACBAAAAAAAAgQAAAAAAADcAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADNQAAAAAAAAEAAAAAAAA2AAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAApAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAIEAAAAAAAAYAAAAAAEAGAAAAAAAABgAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAApAAAAAAAAgQAAAAAAACkAAAAAAACBAAAAAAAAgQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAIEAAAAAAAA2AAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAQAAAAAAAAEAAAAAAAAIEAAAAAAAA2AAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy4AAAAAAAABAAAAAAAALQAAAAAAAAIAAAAAAACBAAAAAAAAKQAAAAAAAIEAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACBAAAAAAAALQAAAAAAACUAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAJQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALgAAAAAAAi0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMuAAAAAAAALQAAAAAAAy0AAAAAAAM1AAAAAAAAgQAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAC0AAAAAAAM1AAAAAAAALQAAAAAAAIEAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACBAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAgAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAApAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAB4AAAAAAACBAAAAAAAAIAAAAAAAAC0AAAAAAAA3AAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMuAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAACAAAAAAAAAtAAAAAAAAJQAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACUAAAAAAAAtAAAAAAAAIAAAAAAAAB4AAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAANwAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLgAAAAAAAIEAAAAAAABvAAAAAAAAbwAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAEAGAAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA== + tiles: LwAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAA2AAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy8AAAAAAACBAAAAAAAAAgAAAAAAACkAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAACUAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAJQAAAAAAACsAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACkAAAAAAACBAAAAAAAAgQAAAAAAADcAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADNQAAAAAAAAEAAAAAAAA2AAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAApAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAIEAAAAAAAAYAAAAAAAAGAAAAAABABgAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAAApAAAAAAAAgQAAAAAAACkAAAAAAACBAAAAAAAAgQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAIEAAAAAAAA2AAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAQAAAAAAAAEAAAAAAAAIEAAAAAAAA2AAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy4AAAAAAAABAAAAAAAALQAAAAAAAAIAAAAAAACBAAAAAAAAKQAAAAAAAIEAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACBAAAAAAAALQAAAAAAACUAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAJQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALgAAAAAAAi0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMuAAAAAAAALQAAAAAAAy0AAAAAAAM1AAAAAAAAgQAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAC0AAAAAAAM1AAAAAAAALQAAAAAAAIEAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACBAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAgAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAApAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAB4AAAAAAACBAAAAAAAAIAAAAAAAAC0AAAAAAAA3AAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMuAAAAAAAAAQAAAAAAAC0AAAAAAACBAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAACAAAAAAAAAtAAAAAAAAJQAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACUAAAAAAAAtAAAAAAAAIAAAAAAAAB4AAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAANwAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLgAAAAAAAIEAAAAAAABvAAAAAAAAbwAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA== version: 7 -2,-4: ind: -2,-4 - tiles: AgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAACAAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAAYAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAA8AAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAGAAAAAAAABgAAAAAAgAYAAAAAAAAGAAAAAACABgAAAAAAQAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADNQAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAABgAAAAAAAAYAAAAAAEAGAAAAAAAABgAAAAAAAAYAAAAAAIAGAAAAAAAABgAAAAAAQArAAAAAAAAKwAAAAAAACsAAAAAAAAlAAAAAAAAJQAAAAAAADcAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMYAAAAAAAAGAAAAAACABgAAAAAAAAYAAAAAAIAGAAAAAACABgAAAAAAQAYAAAAAAEAGAAAAAABABgAAAAAAAA1AAAAAAAAJQAAAAAAACUAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAAlAAAAAAAABAAAAAABABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAANwAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADNQAAAAAAABgAAAAAAgAYAAAAAAAAGAAAAAABABgAAAAAAAAYAAAAAAIAgQAAAAAAAC8AAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAEAGAAAAAACAIEAAAAAAACBAAAAAAAANQAAAAAAADcAAAAAAAAYAAAAAAEAGAAAAAACABgAAAAAAgAYAAAAAAEAGAAAAAACAIEAAAAAAAAYAAAAAAIAGAAAAAACAIEAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAAIEAAAAAAAA1AAAAAAAAGAAAAAABABgAAAAAAQAYAAAAAAEAGAAAAAAAABgAAAAAAQCBAAAAAAAAGAAAAAABAIEAAAAAAACBAAAAAAAAIAAAAAAAACUAAAAAAAAlAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAAGAAAAAACACAAAAAAAAAlAAAAAAAAJQAAAAAAACAAAAAAAAAYAAAAAAIAGAAAAAABABgAAAAAAQAeAAAAAAAAHgAAAAAAAC0AAAAAAAIBAAAAAAAANwAAAAAAADUAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAAgQAAAAAAAB4AAAAAAAAtAAAAAAACAQAAAAAAABgAAAAAAAAtAAAAAAACgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAACAAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAAYAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAA8AAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAGAAAAAABABgAAAAAAAAYAAAAAAEAGAAAAAAAABgAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADNQAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAABgAAAAAAgAYAAAAAAAAGAAAAAABABgAAAAAAAAYAAAAAAEAGAAAAAABABgAAAAAAgArAAAAAAAAKwAAAAAAACsAAAAAAAAlAAAAAAAAJQAAAAAAADcAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMYAAAAAAEAGAAAAAABABgAAAAAAgAYAAAAAAAAGAAAAAAAABgAAAAAAgAYAAAAAAIAGAAAAAAAABgAAAAAAAA1AAAAAAAAJQAAAAAAACUAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAAlAAAAAAAABAAAAAAAABgAAAAAAgAYAAAAAAAAGAAAAAABABgAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAANwAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADNQAAAAAAABgAAAAAAgAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAgQAAAAAAAC8AAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAACAIEAAAAAAACBAAAAAAAANQAAAAAAADcAAAAAAAAYAAAAAAIAGAAAAAAAABgAAAAAAgAYAAAAAAEAGAAAAAACAIEAAAAAAAAYAAAAAAIAGAAAAAACAIEAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAAIEAAAAAAAA1AAAAAAAAGAAAAAABABgAAAAAAgAYAAAAAAAAGAAAAAACABgAAAAAAgCBAAAAAAAAGAAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAACUAAAAAAAAlAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAAGAAAAAAAACAAAAAAAAAlAAAAAAAAJQAAAAAAACAAAAAAAAAYAAAAAAEAGAAAAAAAABgAAAAAAQAeAAAAAAAAHgAAAAAAAC0AAAAAAAIBAAAAAAAANwAAAAAAADUAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAAgQAAAAAAAB4AAAAAAAAtAAAAAAACAQAAAAAAABgAAAAAAgAtAAAAAAACgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAA== version: 7 -3,-4: ind: -3,-4 - tiles: gQAAAAAAAIEAAAAAAAAYAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAACBAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAACABgAAAAAAQCBAAAAAAAAGAAAAAAAABgAAAAAAQAYAAAAAAEAgQAAAAAAABgAAAAAAgAYAAAAAAIAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAgAYAAAAAAAAgQAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAABAIEAAAAAAAAtAAAAAAAAJQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAgCBAAAAAAAANwAAAAAAAC0AAAAAAAMuAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAAAGAAAAAACAIEAAAAAAAAXAAAAAAEAFwAAAAACABcAAAAAAgAXAAAAAAEAFwAAAAABABcAAAAAAAAXAAAAAAAAFwAAAAACABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAACABgAAAAAAQAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAgAXAAAAAAEAFwAAAAABABcAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAgCBAAAAAAAAgQAAAAAAABgAAAAAAAAYAAAAAAIAGAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAEAGAAAAAAAABgAAAAAAgA1AAAAAAAAgQAAAAAAABgAAAAAAgAYAAAAAAIALgAAAAAAAi0AAAAAAAMtAAAAAAADIAAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAACABgAAAAAAAAYAAAAAAAALQAAAAAAAIEAAAAAAAAYAAAAAAAAGAAAAAAAAC0AAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAgAYAAAAAAEAGAAAAAABADcAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMuAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAACABgAAAAAAAAtAAAAAAADgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAACABgAAAAAAQAYAAAAAAEALQAAAAAAA4EAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAAC0AAAAAAAMtAAAAAAAALQAAAAAAAC0AAAAAAAM3AAAAAAAANQAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADgQAAAAAAAIEAAAAAAAAtAAAAAAADLQAAAAAAAC0AAAAAAAAuAAAAAAADGAAAAAABADcAAAAAAAAtAAAAAAADLQAAAAAAAy4AAAAAAAAYAAAAAAEAGAAAAAABABgAAAAAAAAYAAAAAAEAGAAAAAABAB4AAAAAAAAeAAAAAAAALQAAAAAAAy0AAAAAAAOBAAAAAAAALQAAAAAAADUAAAAAAAA2AAAAAAAALQAAAAAAAy0AAAAAAAMYAAAAAAAANgAAAAAAAC0AAAAAAAM2AAAAAAAALQAAAAAAAC0AAAAAAAAeAAAAAAAAgQAAAAAAAA== + tiles: gQAAAAAAAIEAAAAAAAAYAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAACBAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAACABgAAAAAAQCBAAAAAAAAGAAAAAACABgAAAAAAAAYAAAAAAEAgQAAAAAAABgAAAAAAAAYAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAACABgAAAAAAQAYAAAAAAAAgQAAAAAAABgAAAAAAgAYAAAAAAAAGAAAAAABAIEAAAAAAAAYAAAAAAAAGAAAAAACAIEAAAAAAAAtAAAAAAAAJQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAgCBAAAAAAAANwAAAAAAAC0AAAAAAAMuAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAACAIEAAAAAAAAXAAAAAAIAFwAAAAAAABcAAAAAAQAXAAAAAAEAFwAAAAAAABcAAAAAAQAXAAAAAAEAFwAAAAAAABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAQAYAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAACABcAAAAAAgAXAAAAAAEAFwAAAAAAABcAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAgAYAAAAAAEAGAAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAAAABgAAAAAAgA1AAAAAAAAgQAAAAAAABgAAAAAAgAYAAAAAAIALgAAAAAAAi0AAAAAAAMtAAAAAAADIAAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAACABgAAAAAAAAYAAAAAAIALQAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAACAC0AAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAADcAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMuAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAACABgAAAAAAAAtAAAAAAADgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAACABgAAAAAAAAYAAAAAAIALQAAAAAAA4EAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAACAC0AAAAAAAMtAAAAAAAALQAAAAAAAC0AAAAAAAM3AAAAAAAANQAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADgQAAAAAAAIEAAAAAAAAtAAAAAAADLQAAAAAAAC0AAAAAAAAuAAAAAAADGAAAAAABADcAAAAAAAAtAAAAAAADLQAAAAAAAy4AAAAAAAAYAAAAAAEAGAAAAAAAABgAAAAAAQAYAAAAAAEAGAAAAAABAB4AAAAAAAAeAAAAAAAALQAAAAAAAy0AAAAAAAOBAAAAAAAALQAAAAAAADUAAAAAAAA2AAAAAAAALQAAAAAAAy0AAAAAAAMYAAAAAAIANgAAAAAAAC0AAAAAAAM2AAAAAAAALQAAAAAAAC0AAAAAAAAeAAAAAAAAgQAAAAAAAA== version: 7 -3,-3: ind: -3,-3 - tiles: LQAAAAAAAC0AAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAAC0AAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAACBAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAIEAAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAAAtAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAHgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAIEAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAAC0AAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAADLQAAAAAAA4EAAAAAAAAtAAAAAAAALgAAAAAAADcAAAAAAAAtAAAAAAADLQAAAAAAAxgAAAAAAQA3AAAAAAAALQAAAAAAAzcAAAAAAAAtAAAAAAAALQAAAAAAAB4AAAAAAACBAAAAAAAALQAAAAAAAy0AAAAAAAAtAAAAAAAANQAAAAAAABgAAAAAAQA2AAAAAAAALQAAAAAAAy0AAAAAAAM1AAAAAAAAGAAAAAABABgAAAAAAgAYAAAAAAAAGAAAAAACABgAAAAAAQAeAAAAAAAAHgAAAAAAAC0AAAAAAAMtAAAAAAAALQAAAAAAAC0AAAAAAAM2AAAAAAAALgAAAAAAAS0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADgQAAAAAAAIEAAAAAAAAtAAAAAAADgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACQAAAAAAAAkAAAAAAAAKQAAAAAAACkAAAAAAAAkAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIALQAAAAAAA4EAAAAAAAAkAAAAAAAAJAAAAAAAAIEAAAAAAACBAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAQAYAAAAAAIAGAAAAAACADYAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAABABgAAAAAAQAtAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAEAGAAAAAAAAIEAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAQAYAAAAAAAALgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAgAYAAAAAAAAGAAAAAACABgAAAAAAQAYAAAAAAAAGAAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAABABgAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAABABcAAAAAAQAXAAAAAAAAFwAAAAABABcAAAAAAgAXAAAAAAIAFwAAAAABAIEAAAAAAACBAAAAAAAAGAAAAAACABgAAAAAAAAYAAAAAAIAFwAAAAAAABcAAAAAAAAXAAAAAAIAFwAAAAACABcAAAAAAgAXAAAAAAAAFwAAAAAAABcAAAAAAgAXAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAgQAAAAAAAA== + tiles: LQAAAAAAAC0AAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAAC0AAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAACBAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAIEAAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAAAtAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAHgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAIEAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAAC0AAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAADLQAAAAAAA4EAAAAAAAAtAAAAAAAALgAAAAAAADcAAAAAAAAtAAAAAAADLQAAAAAAAxgAAAAAAgA3AAAAAAAALQAAAAAAAzcAAAAAAAAtAAAAAAAALQAAAAAAAB4AAAAAAACBAAAAAAAALQAAAAAAAy0AAAAAAAAtAAAAAAAANQAAAAAAABgAAAAAAgA2AAAAAAAALQAAAAAAAy0AAAAAAAM1AAAAAAAAGAAAAAABABgAAAAAAQAYAAAAAAAAGAAAAAAAABgAAAAAAQAeAAAAAAAAHgAAAAAAAC0AAAAAAAMtAAAAAAAALQAAAAAAAC0AAAAAAAM2AAAAAAAALgAAAAAAAS0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADgQAAAAAAAIEAAAAAAAAtAAAAAAADgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACQAAAAAAAAkAAAAAAAAKQAAAAAAACkAAAAAAAAkAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAEALQAAAAAAA4EAAAAAAAAkAAAAAAAAJAAAAAAAAIEAAAAAAACBAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAACABgAAAAAAgAYAAAAAAEAGAAAAAAAADYAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAQAYAAAAAAAAGAAAAAAAABgAAAAAAAAtAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAABAIEAAAAAAAAYAAAAAAIAGAAAAAABABgAAAAAAgAYAAAAAAEALgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAACABgAAAAAAQAYAAAAAAEAGAAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAACAIEAAAAAAACBAAAAAAAAGAAAAAACABgAAAAAAQAYAAAAAAEAFwAAAAABABcAAAAAAgAXAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAAAFwAAAAACABcAAAAAAAAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAAAgQAAAAAAAA== version: 7 -3,-2: ind: -3,-2 - tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAABABgAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAgCBAAAAAAAAbwAAAAAAAIEAAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAEAGAAAAAABABgAAAAAAQCBAAAAAAAAgQAAAAAAAC8AAAAAAACBAAAAAAAAGAAAAAAAAIEAAAAAAABvAAAAAAAAgQAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAAAYAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAA2AAAAAAAALQAAAAAAA4EAAAAAAACBAAAAAAAAGAAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAgAAAAAAAALQAAAAAAAC0AAAAAAAOBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAADcAAAAAAAAtAAAAAAADgQAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAACABcAAAAAAAAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAADcAAAAAAAAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAAAFwAAAAABABcAAAAAAgAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAgAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAgAXAAAAAAIAFwAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFgAAAAAAABYAAAAAAACBAAAAAAAANgAAAAAAAC0AAAAAAAM1AAAAAAAAgQAAAAAAAA== + tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAABABgAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAACBAAAAAAAAbwAAAAAAAIEAAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAABABgAAAAAAACBAAAAAAAAgQAAAAAAAC8AAAAAAACBAAAAAAAAGAAAAAABAIEAAAAAAABvAAAAAAAAgQAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAQAYAAAAAAEAgQAAAAAAAIEAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAA2AAAAAAAALQAAAAAAA4EAAAAAAACBAAAAAAAAGAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAgAAAAAAAALQAAAAAAAC0AAAAAAAOBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAADcAAAAAAAAtAAAAAAADgQAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAAAABcAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAACABcAAAAAAgAXAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAADcAAAAAAAAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAIAFwAAAAAAABcAAAAAAQAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAIAFwAAAAACABcAAAAAAgAXAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAQAXAAAAAAIAFwAAAAACABcAAAAAAgAXAAAAAAEAFwAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFgAAAAAAABYAAAAAAACBAAAAAAAANgAAAAAAAC0AAAAAAAM1AAAAAAAAgQAAAAAAAA== version: 7 -3,-1: ind: -3,-1 - tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABYAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAADNQAAAAAAAIEAAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAAAWAAAAAAAAgQAAAAAAAC0AAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAAAgAAAAAAAALQAAAAAAAC0AAAAAAAAvAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFgAAAAAAAIEAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAMuAAAAAAAAgQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAHgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAALQAAAAAAAC8AAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAQAXAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAFwAAAAABAAAAAAAAAACBAAAAAAAAFwAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABYAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAADNQAAAAAAAIEAAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAAAWAAAAAAAAgQAAAAAAAC0AAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAAAgAAAAAAAALQAAAAAAAC0AAAAAAAAvAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFgAAAAAAAIEAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAMuAAAAAAAAgQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAHgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAALQAAAAAAAC8AAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAQAXAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAFwAAAAACAAAAAAAAAACBAAAAAAAAFwAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -4,-1: ind: -4,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAIAAAAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAQAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAIAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAgAXAAAAAAIAAAAAAAAAABcAAAAAAgAXAAAAAAEAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -4,-2: ind: -4,-2 - tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAQAYAAAAAAIAGAAAAAABAIEAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAQAYAAAAAAAAGAAAAAABAAsAAAAAAACBAAAAAAAACQAAAAAAAAkAAAAAAAArAAAAAAAAKwAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAEAGAAAAAABABgAAAAAAQALAAAAAAAAgQAAAAAAAAkAAAAAAAAJAAAAAAAAKwAAAAAAACsAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAgQAAAAAAABgAAAAAAAAYAAAAAAIAGAAAAAABABgAAAAAAgAYAAAAAAIACwAAAAAAAIEAAAAAAAAJAAAAAAAACQAAAAAAACsAAAAAAAArAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAAIEAAAAAAAAvAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAAAABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAXAAAAAAIAFwAAAAABABcAAAAAAQAXAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAXAAAAAAEAFwAAAAAAABcAAAAAAAAXAAAAAAIAgQAAAAAAABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAAAABcAAAAAAgAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAACABcAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA== + tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAQAYAAAAAAIAGAAAAAABAIEAAAAAAAAYAAAAAAIAGAAAAAACABgAAAAAAQAYAAAAAAEAGAAAAAABAAsAAAAAAACBAAAAAAAACQAAAAAAAAkAAAAAAAArAAAAAAAAKwAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAACABgAAAAAAQAYAAAAAAEAGAAAAAAAABgAAAAAAQALAAAAAAAAgQAAAAAAAAkAAAAAAAAJAAAAAAAAKwAAAAAAACsAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAAAgQAAAAAAABgAAAAAAQAYAAAAAAIAGAAAAAACABgAAAAAAQAYAAAAAAEACwAAAAAAAIEAAAAAAAAJAAAAAAAACQAAAAAAACsAAAAAAAArAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAAAGAAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAAAYAAAAAAEAGAAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAABAIEAAAAAAAAvAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAAAABcAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAXAAAAAAEAFwAAAAABABcAAAAAAAAXAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAXAAAAAAIAFwAAAAACABcAAAAAAgAXAAAAAAEAgQAAAAAAABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAFwAAAAACABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAAAABcAAAAAAgAXAAAAAAEAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAgAXAAAAAAAAFwAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA== version: 7 -5,-2: ind: -5,-2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAABABgAAAAAAQAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAgAYAAAAAAEAGAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAGAAAAAABABgAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAgAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAQCBAAAAAAAAgQAAAAAAABcAAAAAAgCBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAEAgQAAAAAAAIEAAAAAAAAXAAAAAAEAFwAAAAABAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAIAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAABABgAAAAAAQAYAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAQAYAAAAAAEAGAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAIAGAAAAAABABgAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAACABcAAAAAAAAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAQCBAAAAAAAAgQAAAAAAABcAAAAAAgCBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAFwAAAAACAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAEAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -4,-4: ind: -4,-4 - tiles: DAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAALAAAAAAAAgQAAAAAAAA0AAAAAAAANAAAAAAAAKwAAAAAAACsAAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAACwAAAAAAAIEAAAAAAAANAAAAAAAADQAAAAAAACsAAAAAAAArAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAsAAAAAAACBAAAAAAAADQAAAAAAAA0AAAAAAAArAAAAAAAAKwAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAMtAAAAAAADAAAAAAAAABcAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADNwAAAAAAABcAAAAAAgAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADNQAAAAAAABgAAAAAAgAXAAAAAAEAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAMtAAAAAAADNwAAAAAAAC0AAAAAAAA1AAAAAAAAFwAAAAACABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAA3AAAAAAAALQAAAAAAAxcAAAAAAQAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAtAAAAAAADNQAAAAAAABgAAAAAAQA3AAAAAAAANQAAAAAAAC0AAAAAAAMXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAALgAAAAAAAC0AAAAAAAAtAAAAAAAALQAAAAAAAzcAAAAAAAA1AAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAADcAAAAAAAAtAAAAAAAALgAAAAAAAYEAAAAAAACBAAAAAAAANwAAAAAAAA== + tiles: DAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAALAAAAAAAAgQAAAAAAAA0AAAAAAAANAAAAAAAAKwAAAAAAACsAAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAACwAAAAAAAIEAAAAAAAANAAAAAAAADQAAAAAAACsAAAAAAAArAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAsAAAAAAACBAAAAAAAADQAAAAAAAA0AAAAAAAArAAAAAAAAKwAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACAAAAAAAAAAAXAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAEAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAMtAAAAAAADAAAAAAAAABcAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADNwAAAAAAABcAAAAAAgAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADNQAAAAAAABgAAAAAAgAXAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAMtAAAAAAADNwAAAAAAAC0AAAAAAAA1AAAAAAAAFwAAAAACABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAA3AAAAAAAALQAAAAAAAxcAAAAAAgAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAtAAAAAAADNQAAAAAAABgAAAAAAAA3AAAAAAAANQAAAAAAAC0AAAAAAAMXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAALgAAAAAAAC0AAAAAAAAtAAAAAAAALQAAAAAAAzcAAAAAAAA1AAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAADcAAAAAAAAtAAAAAAAALgAAAAAAAYEAAAAAAACBAAAAAAAANwAAAAAAAA== version: 7 -4,-3: ind: -4,-3 - tiles: FwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAGAAAAAACABgAAAAAAQA3AAAAAAAANQAAAAAAAIEAAAAAAAAtAAAAAAAALQAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAACADcAAAAAAAAtAAAAAAADLQAAAAAAAC0AAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAABABgAAAAAAQAYAAAAAAEAGAAAAAACAC0AAAAAAAAtAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAGAAAAAABABgAAAAAAgAYAAAAAAEANgAAAAAAAC0AAAAAAAMtAAAAAAAALQAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAABgAAAAAAQAYAAAAAAIANgAAAAAAAC4AAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAANgAAAAAAAC0AAAAAAAA1AAAAAAAAgQAAAAAAAIEAAAAAAAA2AAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAADYAAAAAAAAtAAAAAAAALQAAAAAAAC0AAAAAAAM2AAAAAAAALgAAAAAAARcAAAAAAgAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAtAAAAAAADLgAAAAAAABgAAAAAAgA2AAAAAAAALgAAAAAAAS0AAAAAAAMXAAAAAAEAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAADYAAAAAAAAtAAAAAAADFwAAAAABABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAADLQAAAAAAAzYAAAAAAAAtAAAAAAAALgAAAAAAAhcAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLgAAAAAAABgAAAAAAQAAAAAAAAAAFwAAAAABABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAM2AAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAADLQAAAAAAAxcAAAAAAQAXAAAAAAEAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAAAAAAAAAABcAAAAAAQAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: FwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAQA3AAAAAAAANQAAAAAAAIEAAAAAAAAtAAAAAAAALQAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAABgAAAAAAgAYAAAAAAIAGAAAAAACADcAAAAAAAAtAAAAAAADLQAAAAAAAC0AAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAACABgAAAAAAAAYAAAAAAAAGAAAAAACAC0AAAAAAAAtAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAGAAAAAACABgAAAAAAAAYAAAAAAEANgAAAAAAAC0AAAAAAAMtAAAAAAAALQAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAABgAAAAAAQAYAAAAAAAANgAAAAAAAC4AAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAANgAAAAAAAC0AAAAAAAA1AAAAAAAAgQAAAAAAAIEAAAAAAAA2AAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAADYAAAAAAAAtAAAAAAAALQAAAAAAAC0AAAAAAAM2AAAAAAAALgAAAAAAARcAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAtAAAAAAADLgAAAAAAABgAAAAAAAA2AAAAAAAALgAAAAAAAS0AAAAAAAMXAAAAAAIAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAADYAAAAAAAAtAAAAAAADFwAAAAACABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAADLQAAAAAAAzYAAAAAAAAtAAAAAAAALgAAAAAAAhcAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLgAAAAAAABgAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAM2AAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAADLQAAAAAAAxcAAAAAAQAXAAAAAAIAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAAAAAAAAAABcAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -3,-5: ind: -3,-5 - tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAADNQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAAAtAAAAAAADgQAAAAAAAIEAAAAAAACBAAAAAAAAbwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAMuAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAAAFwAAAAACABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAIAFwAAAAAAABcAAAAAAQAXAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAQAXAAAAAAAAFwAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACABcAAAAAAgCBAAAAAAAAgQAAAAAAAC0AAAAAAAAtAAAAAAAALwAAAAAAAIEAAAAAAAAYAAAAAAAAGAAAAAABABgAAAAAAgAYAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAACABgAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAADLQAAAAAAA4EAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAgQAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAOBAAAAAAAALQAAAAAAAy0AAAAAAAA3AAAAAAAANQAAAAAAAAIAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAAAJQAAAAAAAC0AAAAAAACBAAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAA4EAAAAAAACBAAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAAA== + tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAADNQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAAAtAAAAAAADgQAAAAAAAIEAAAAAAACBAAAAAAAAbwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAMuAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABABcAAAAAAgAXAAAAAAAAFwAAAAAAABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAgAXAAAAAAIAFwAAAAACABcAAAAAAQAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAgAXAAAAAAEAFwAAAAACABcAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAFwAAAAACABcAAAAAAAAXAAAAAAAAFwAAAAACAIEAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABABcAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAAtAAAAAAAALwAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAACABgAAAAAAAAYAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAADLQAAAAAAA4EAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAAAgQAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAOBAAAAAAAALQAAAAAAAy0AAAAAAAA3AAAAAAAANQAAAAAAAAIAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAAAJQAAAAAAAC0AAAAAAACBAAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAA4EAAAAAAACBAAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAAA== version: 7 -4,-5: ind: -4,-5 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAAAFwAAAAACABcAAAAAAgAXAAAAAAAAFwAAAAACABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACABcAAAAAAQAXAAAAAAAAFwAAAAACABcAAAAAAgAXAAAAAAAAFwAAAAAAABcAAAAAAgAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAXAAAAAAEAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAFwAAAAACABcAAAAAAgAXAAAAAAEAFwAAAAACAIEAAAAAAAAXAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAXAAAAAAAAFwAAAAACABcAAAAAAAAXAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAFwAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAIEAAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA4AAAAAAACBAAAAAAAAgQAAAAAAAA4AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAACABcAAAAAAgAXAAAAAAEAFwAAAAACABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACABcAAAAAAAAXAAAAAAEAFwAAAAACABcAAAAAAQAXAAAAAAEAFwAAAAACABcAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAAAXAAAAAAIAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAFwAAAAACABcAAAAAAgAXAAAAAAEAFwAAAAACAIEAAAAAAAAXAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAXAAAAAAEAFwAAAAAAABcAAAAAAAAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAFwAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAIEAAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA4AAAAAAACBAAAAAAAAgQAAAAAAAA4AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAA== version: 7 -3,-6: ind: -3,-6 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAIAFwAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACAIEAAAAAAAAXAAAAAAEAFwAAAAACAIEAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAAAXAAAAAAAAFwAAAAACABcAAAAAAQAXAAAAAAEAAAAAAAAAAIEAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAAAXAAAAAAIAFwAAAAACABcAAAAAAQAXAAAAAAIAFwAAAAACABcAAAAAAgAXAAAAAAAAFwAAAAACABcAAAAAAAAAAAAAAAAAgQAAAAAAAAAAAAAAAACBAAAAAAAAFwAAAAAAAIEAAAAAAAAXAAAAAAIAFwAAAAACABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAACABcAAAAAAgAXAAAAAAIAFwAAAAACAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAACABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAIEAAAAAAAAXAAAAAAEAFwAAAAABAIEAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAACABcAAAAAAgAXAAAAAAEAFwAAAAABABcAAAAAAAAXAAAAAAAAAAAAAAAAAIEAAAAAAAAXAAAAAAEAFwAAAAAAABcAAAAAAgAXAAAAAAAAFwAAAAACABcAAAAAAAAXAAAAAAAAFwAAAAACABcAAAAAAgAXAAAAAAEAFwAAAAAAABcAAAAAAQAAAAAAAAAAgQAAAAAAAAAAAAAAAACBAAAAAAAAFwAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAACABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAgAXAAAAAAIAFwAAAAACAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAACABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA== version: 7 -5,-4: ind: -5,-4 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAACAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAAAAA== version: 7 -5,-5: ind: -5,-5 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAgAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAgCBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAIAgQAAAAAAAIEAAAAAAAAXAAAAAAEAFwAAAAABAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAABAIEAAAAAAACBAAAAAAAAFwAAAAABAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAQAXAAAAAAAAFwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAACAIEAAAAAAACBAAAAAAAAFwAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAAAFwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA== version: 7 -2,-5: ind: -2,-5 - tiles: gQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAFwAAAAAAAIEAAAAAAAAXAAAAAAEAFwAAAAAAABcAAAAAAAAAAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAABcAAAAAAQCBAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAABcAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAgAXAAAAAAIAFwAAAAACABcAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAgQAAAAAAABcAAAAAAgAXAAAAAAAAAAAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACAAAAAAAAAAAXAAAAAAIAFwAAAAAAAIEAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAQAXAAAAAAIAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAACABcAAAAAAQAXAAAAAAAAFwAAAAABABcAAAAAAgAXAAAAAAAAFwAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAACQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAAJAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: gQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAFwAAAAABAIEAAAAAAAAXAAAAAAEAFwAAAAACABcAAAAAAgAAAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgCBAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAgQAAAAAAABcAAAAAAAAXAAAAAAIAFwAAAAACABcAAAAAAQAXAAAAAAIAFwAAAAABABcAAAAAAgCBAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAgQAAAAAAABcAAAAAAQAXAAAAAAEAAAAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACAAAAAAAAAAAXAAAAAAEAFwAAAAACAIEAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAIAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAABABcAAAAAAQAXAAAAAAEAFwAAAAACABcAAAAAAgAXAAAAAAEAFwAAAAACAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAACQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAkAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAAJAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 -1,-5: ind: -1,-5 - tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAC0AAAAAAAAgAAAAAAAALQAAAAAAAC8AAAAAAACBAAAAAAAALwAAAAAAAC0AAAAAAAAgAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC8AAAAAAAAtAAAAAAAALQAAAAAAAC0AAAAAAAAvAAAAAAAAgQAAAAAAAC8AAAAAAAAtAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAANwAAAAAAAC0AAAAAAAAuAAAAAAAALwAAAAAAAIEAAAAAAAAvAAAAAAAANwAAAAAAAC0AAAAAAAAuAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAACAIEAAAAAAAAYAAAAAAAAGAAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAAgAAAAAAAIEAAAAAAAAeAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAANgAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAA4EAAAAAAACBAAAAAAAAgQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAIAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAADcAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAOBAAAAAAAAgQAAAAAAAIEAAAAAAAAJAAAAAAAACQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAACAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAAgAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAA== + tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAC0AAAAAAAAgAAAAAAAALQAAAAAAAC8AAAAAAACBAAAAAAAALwAAAAAAAC0AAAAAAAAgAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC8AAAAAAAAtAAAAAAAALQAAAAAAAC0AAAAAAAAvAAAAAAAAgQAAAAAAAC8AAAAAAAAtAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAANwAAAAAAAC0AAAAAAAAuAAAAAAAALwAAAAAAAIEAAAAAAAAvAAAAAAAANwAAAAAAAC0AAAAAAAAuAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAACAIEAAAAAAAAYAAAAAAAAGAAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAgCBAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAAgAAAAAAAIEAAAAAAAAeAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAANgAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAA4EAAAAAAACBAAAAAAAAgQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAIAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAADcAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAOBAAAAAAAAgQAAAAAAAIEAAAAAAAAJAAAAAAAACQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAACAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAAgAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAA== version: 7 -1,-6: ind: -1,-6 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAXAAAAAAIAFwAAAAAAABcAAAAAAgAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAACAIEAAAAAAAAXAAAAAAIAFwAAAAACAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAgAXAAAAAAAAgQAAAAAAABcAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABAIEAAAAAAAAXAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAXAAAAAAIAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAgQAAAAAAABcAAAAAAQCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABABcAAAAAAgCBAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAgAAAAAAAAgQAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAXAAAAAAIAFwAAAAAAABcAAAAAAQAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAACAIEAAAAAAAAXAAAAAAAAFwAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAQAXAAAAAAIAgQAAAAAAABcAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAAAAIEAAAAAAAAXAAAAAAIAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAXAAAAAAEAAAAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAgQAAAAAAABcAAAAAAQCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAAAABcAAAAAAQCBAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAgAAAAAAAAgQAAAAAAAA== version: 7 0,-6: ind: 0,-6 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAACAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAQCBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAIAAAAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAIEAAAAAAAAXAAAAAAEAgQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAgAAAAAAAAAAFwAAAAAAAIEAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACBAAAAAAAAAAAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAABcAAAAAAACBAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAgQAAAAAAAAAAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAXAAAAAAIAgQAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAIEAAAAAAAAAAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAABAAAAAAAAAAAXAAAAAAIAFwAAAAAAAIEAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACBAAAAAAAAFwAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAEAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAIAAAAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAABABcAAAAAAgCBAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAARAAAAAAAAIEAAAAAAABEAAAAAAAAgQAAAAAAAEQAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAEQAAAAAAACBAAAAAAAARAAAAAAAAIEAAAAAAABEAAAAAAAAgQAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAAAAAAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAgQAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAIEAAAAAAAAXAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAQAAAAAAAAAAFwAAAAABAIEAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACBAAAAAAAAAAAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAABcAAAAAAgCBAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAgQAAAAAAAAAAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAXAAAAAAIAgQAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAIEAAAAAAAAAAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAABAAAAAAAAAAAXAAAAAAIAFwAAAAAAAIEAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACBAAAAAAAAFwAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAIAAAAAAAAAABcAAAAAAQAXAAAAAAAAFwAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAgCBAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAARAAAAAAAAIEAAAAAAABEAAAAAAAAgQAAAAAAAEQAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAEQAAAAAAACBAAAAAAAARAAAAAAAAIEAAAAAAABEAAAAAAAAgQAAAAAAAA== version: 7 0,-7: ind: 0,-7 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAQAXAAAAAAIAFwAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAABAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAQAAAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAAAAAAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAACABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAQAXAAAAAAEAFwAAAAABABcAAAAAAgAXAAAAAAIAFwAAAAABABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAIAAAAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 1,-6: ind: 1,-6 @@ -307,59 +308,59 @@ entities: version: 7 1,-7: ind: 1,-7 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAGgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAABoAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAaAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAAaAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAABoAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAGgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAABoAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAaAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAAaAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAABoAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 1,-5: ind: 1,-5 - tiles: LQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADNQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAJQAAAAAAAC0AAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADNQAAAAAAAAEAAAAAAAAtAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALgAAAAAAAoEAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAACBAAAAAAAANwAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAACAIEAAAAAAACBAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAAAGAAAAAACABgAAAAAAgCBAAAAAAAAgQAAAAAAABgAAAAAAAAYAAAAAAIAGAAAAAABABgAAAAAAACBAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAACBAAAAAAAAGAAAAAABABgAAAAAAQAYAAAAAAEAgQAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAABABgAAAAAAgAYAAAAAAEAgQAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAgQAAAAAAABgAAAAAAQAYAAAAAAIAGAAAAAACAIEAAAAAAAAYAAAAAAEAGAAAAAABABgAAAAAAQAgAAAAAAAAIAAAAAAAAIEAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAIEAAAAAAAAYAAAAAAAAGAAAAAACABgAAAAAAACBAAAAAAAAGAAAAAABABgAAAAAAAAYAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAACBAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAkAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAeAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAANwAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAHgAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAADYAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAA4EAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAACBAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAAIEAAAAAAABvAAAAAAAAgQAAAAAAAA== + tiles: LQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADNQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAJQAAAAAAAC0AAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADNQAAAAAAAAEAAAAAAAAtAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALgAAAAAAAoEAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAACBAAAAAAAANwAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAQAYAAAAAAAAGAAAAAACAIEAAAAAAACBAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAQAYAAAAAAAAGAAAAAABABgAAAAAAgCBAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAACBAAAAAAAAGAAAAAABABgAAAAAAgAYAAAAAAIAgQAAAAAAABgAAAAAAgAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAgQAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAgQAAAAAAABgAAAAAAQAYAAAAAAAAGAAAAAACAIEAAAAAAAAYAAAAAAIAGAAAAAABABgAAAAAAgAgAAAAAAAAIAAAAAAAAIEAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAIEAAAAAAAAYAAAAAAEAGAAAAAABABgAAAAAAgCBAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAACBAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAkAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAAC0AAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAeAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAANwAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAHgAAAAAAAIEAAAAAAAAtAAAAAAAAAQAAAAAAADYAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAA4EAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAACBAAAAAAAALQAAAAAAAAEAAAAAAAAtAAAAAAAAgQAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAABAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAAIEAAAAAAABvAAAAAAAAgQAAAAAAAA== version: 7 2,-6: ind: 2,-6 - tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAEAFwAAAAAAABcAAAAAAgAXAAAAAAEAFwAAAAAAABcAAAAAAgAXAAAAAAIAFwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAAAABcAAAAAAgAXAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAFwAAAAACABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAFwAAAAABABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABAAAAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAQAXAAAAAAAAFwAAAAAAABcAAAAAAgAXAAAAAAIARAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAAAAAAAAAABcAAAAAAgAAAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAAAFwAAAAACAA== + tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAAAXAAAAAAAAFwAAAAACABcAAAAAAgAXAAAAAAEAFwAAAAACABcAAAAAAQAXAAAAAAIAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAQAXAAAAAAEAFwAAAAACAIEAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAIAFwAAAAAAABcAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAAAXAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACABcAAAAAAQAXAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACAAAAAAAAAAAXAAAAAAEAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAFwAAAAAAABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAAAAAAAAAABcAAAAAAgAAAAAAAAAAFwAAAAAAABcAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABAAAAAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAAAXAAAAAAEAFwAAAAAAABcAAAAAAgAXAAAAAAIARAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAAAAAAAAAABcAAAAAAQAAAAAAAAAAFwAAAAAAABcAAAAAAgAXAAAAAAAAFwAAAAACAA== version: 7 2,-5: ind: 2,-5 - tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAABABgAAAAAAgAYAAAAAAEAGAAAAAAAABgAAAAAAgAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAgAYAAAAAAAAgQAAAAAAABgAAAAAAQAYAAAAAAIAGAAAAAACABgAAAAAAQAYAAAAAAAAGAAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAEAGAAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAbwAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAgQAAAAAAAG8AAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAABvAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA== + tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAACABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAgAYAAAAAAIAGAAAAAACABgAAAAAAAAYAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAgAYAAAAAAEAgQAAAAAAABgAAAAAAgAYAAAAAAEAGAAAAAABABgAAAAAAgAYAAAAAAAAGAAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAEAGAAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAbwAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAgQAAAAAAAG8AAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAABvAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA== version: 7 2,-7: ind: 2,-7 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAABcAAAAAAQAAAAAAAAAAFwAAAAACABcAAAAAAgAXAAAAAAIAFwAAAAACABcAAAAAAQAXAAAAAAIAFwAAAAAAABcAAAAAAgAXAAAAAAEAFwAAAAACABcAAAAAAgAXAAAAAAIAFwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAABAIEAAAAAAAAXAAAAAAIAFwAAAAAAABcAAAAAAgAXAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAXAAAAAAEAFwAAAAABAIEAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAQAXAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAABcAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAQAXAAAAAAEAFwAAAAAAABcAAAAAAgAXAAAAAAEAFwAAAAAAABcAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAgAXAAAAAAIAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAXAAAAAAEAFwAAAAABAIEAAAAAAAAXAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAXAAAAAAEAFwAAAAACAIEAAAAAAAAXAAAAAAEAFwAAAAACABcAAAAAAAAXAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAA== version: 7 3,-5: ind: 3,-5 - tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAAAFwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAAAAAAAAAABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAgAYAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAbwAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA== + tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAIAFwAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAAAAAAAAAABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAgAYAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAbwAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA== version: 7 4,-5: ind: 4,-5 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACAAAAAAAAAAAXAAAAAAIAFwAAAAACABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAAAABcAAAAAAgAXAAAAAAAAAAAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAACABcAAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAgAXAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAgAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAABcAAAAAAgAAAAAAAAAAFwAAAAACABcAAAAAAAAXAAAAAAEAFwAAAAACABcAAAAAAgAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAHgAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAAAAB4AAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAgAXAAAAAAAAFwAAAAACABcAAAAAAgAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAeAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAC8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAeAAAAAAAAgQAAAAAAABgAAAAAAgAYAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAeAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACAAAAAAAAAAAXAAAAAAAAFwAAAAABABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAACABcAAAAAAgAXAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAACABcAAAAAAQAXAAAAAAEAFwAAAAACABcAAAAAAQAXAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAgAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAABcAAAAAAQAAAAAAAAAAFwAAAAAAABcAAAAAAgAXAAAAAAEAFwAAAAACABcAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAFwAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAHgAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAFwAAAAABABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACAB4AAAAAAAAXAAAAAAAAFwAAAAABABcAAAAAAQAXAAAAAAIAFwAAAAABABcAAAAAAQAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAeAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAC8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAeAAAAAAAAgQAAAAAAABgAAAAAAQAYAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAeAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAA== version: 7 3,-6: ind: 3,-6 - tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAAAFwAAAAAAABcAAAAAAQAXAAAAAAIAFwAAAAABABcAAAAAAgAXAAAAAAEAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAQAXAAAAAAAAFwAAAAABABcAAAAAAQAXAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAIAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAACABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAABABcAAAAAAgAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAXAAAAAAEAFwAAAAABABcAAAAAAgAXAAAAAAIAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAIAFwAAAAACABcAAAAAAgAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABABcAAAAAAQAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAAAAAAAAAAFwAAAAAAABcAAAAAAQAXAAAAAAIAFwAAAAACAIEAAAAAAACBAAAAAAAAFwAAAAABABcAAAAAAgAXAAAAAAIAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAEAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAABABcAAAAAAQAXAAAAAAAAFwAAAAABABcAAAAAAgAXAAAAAAIAFwAAAAABABcAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAACABcAAAAAAAAXAAAAAAEAFwAAAAAAABcAAAAAAQAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAFwAAAAAAABcAAAAAAQAAAAAAAAAAFwAAAAAAAA== + tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAACABcAAAAAAQAXAAAAAAIAFwAAAAAAABcAAAAAAQAXAAAAAAIAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAACABcAAAAAAQAXAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAEAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAgAAAAAAAAAAFwAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAIAAAAAAAAAABcAAAAAAQAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAAAFwAAAAACAAAAAAAAAAAXAAAAAAIAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAACABcAAAAAAQAXAAAAAAIAFwAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAABABcAAAAAAQAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAXAAAAAAEAFwAAAAABABcAAAAAAQAXAAAAAAEAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAACABcAAAAAAQAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAAAAAAAAAAFwAAAAACABcAAAAAAAAXAAAAAAEAFwAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAIAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAEAFwAAAAACABcAAAAAAQAXAAAAAAEAFwAAAAACABcAAAAAAQAXAAAAAAAAFwAAAAACABcAAAAAAAAXAAAAAAEAFwAAAAACABcAAAAAAQAXAAAAAAIAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAAAgQAAAAAAABcAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAFwAAAAABABcAAAAAAgAAAAAAAAAAFwAAAAAAAA== version: 7 4,-4: ind: 4,-4 - tiles: gQAAAAAAAIEAAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAbwAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAAgQAAAAAAABgAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAeAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAAAGAAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAAAAIEAAAAAAAAYAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAIEAAAAAAAAYAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAAIEAAAAAAAAeAAAAAAAAHgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAC8AAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAaAAAAAAAARAAAAAAAAEQAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAaAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA== + tiles: gQAAAAAAAIEAAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAbwAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAAgQAAAAAAABgAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAeAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAACAIEAAAAAAAAYAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAIEAAAAAAAAYAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAACAIEAAAAAAAAeAAAAAAAAHgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAC8AAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAaAAAAAAAARAAAAAAAAEQAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAaAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA== version: 7 5,-4: ind: 5,-4 - tiles: LwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAXAAAAAAIAFwAAAAABABcAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAQAXAAAAAAEAFwAAAAACABcAAAAAAQAXAAAAAAAAFwAAAAACABcAAAAAAQAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABABcAAAAAAQAXAAAAAAIAFwAAAAAAABcAAAAAAQAXAAAAAAIAFwAAAAAAABcAAAAAAQAXAAAAAAEAFwAAAAABABcAAAAAAAAXAAAAAAAAFwAAAAABABcAAAAAAQCBAAAAAAAAgQAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAQAYAAAAAAAAGAAAAAACAIEAAAAAAACBAAAAAAAABAAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAgAYAAAAAAAAGAAAAAABABgAAAAAAQAvAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAEALwAAAAAAABgAAAAAAQAYAAAAAAEAgQAAAAAAAAQAAAAAAQAEAAAAAAEABAAAAAABAAQAAAAAAQAEAAAAAAEABAAAAAAAAAQAAAAAAQAEAAAAAAEAGAAAAAACABgAAAAAAQCBAAAAAAAAgQAAAAAAAC8AAAAAAAAYAAAAAAAAGAAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAAAYAAAAAAIABAAAAAABAAQAAAAAAAAYAAAAAAAAGAAAAAAAAA== + tiles: LwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAXAAAAAAEAFwAAAAACABcAAAAAAQAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAgAXAAAAAAIAFwAAAAAAABcAAAAAAQAXAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAAAABcAAAAAAQAXAAAAAAIAFwAAAAACABcAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAgAXAAAAAAIAFwAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAFwAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAAAYAAAAAAIAGAAAAAAAAIEAAAAAAACBAAAAAAAABAAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAACABgAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAAALwAAAAAAABgAAAAAAQAYAAAAAAEAgQAAAAAAAAQAAAAAAAAEAAAAAAEABAAAAAABAAQAAAAAAQAEAAAAAAAABAAAAAAAAAQAAAAAAQAEAAAAAAAAGAAAAAAAABgAAAAAAACBAAAAAAAAgQAAAAAAAC8AAAAAAAAYAAAAAAEAGAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAgAYAAAAAAEABAAAAAABAAQAAAAAAQAYAAAAAAAAGAAAAAABAA== version: 7 5,-5: ind: 5,-5 - tiles: FwAAAAAAABcAAAAAAgAXAAAAAAEAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAgAXAAAAAAIAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAgAXAAAAAAIAFwAAAAACABcAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAQAXAAAAAAAAFwAAAAAAABcAAAAAAgAXAAAAAAAAFwAAAAACABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAQAXAAAAAAAAFwAAAAAAABcAAAAAAQAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAEAFwAAAAACABcAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABABcAAAAAAgAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAC8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAAAAAAAAgQAAAAAAAAUAAAAAAAAFAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: FwAAAAACABcAAAAAAgAXAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAQAXAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAAAFwAAAAACABcAAAAAAQAXAAAAAAIAFwAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAgAXAAAAAAEAFwAAAAACABcAAAAAAgAXAAAAAAEAFwAAAAABABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAAAXAAAAAAEAFwAAAAACABcAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAIAFwAAAAABABcAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACABcAAAAAAgAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAC8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAAAAAAAAgQAAAAAAAAUAAAAAAAAFAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 3,-4: ind: 3,-4 - tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAeAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC8AAAAAAACBAAAAAAAAAAAAAAAAABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAACBAAAAAAAALwAAAAAAAC8AAAAAAACBAAAAAAAAGAAAAAAAAC8AAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAAAAAAAAAAgQAAAAAAAC8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAFwAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAIEAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAAC0AAAAAAAOBAAAAAAAAJQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADNQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADNQAAAAAAAC0AAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAFAAAAAAAABEAAAAAAAARAAAAAAAAEQAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAMtAAAAAAADNQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAgQAAAAAAAA== + tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAeAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC8AAAAAAACBAAAAAAAAAAAAAAAAABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAACBAAAAAAAALwAAAAAAAC8AAAAAAACBAAAAAAAAGAAAAAACAC8AAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAgQAAAAAAAC8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAFwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAIEAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAAC0AAAAAAAOBAAAAAAAAJQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADNQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADNQAAAAAAAC0AAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAFAAAAAAAABEAAAAAAAARAAAAAAAAEQAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAMtAAAAAAADNQAAAAAAAC0AAAAAAAAtAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAAtAAAAAAAALQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAAALQAAAAAAAC0AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAgQAAAAAAAA== version: 7 4,-3: ind: 4,-3 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC8AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAABvAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAbwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAACAIEAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAARAAAAAAAAEQAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAC8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAARAAAAAAAAEQAAAAAAABEAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC8AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAABvAAAAAAAAbwAAAAAAAG8AAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAbwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAACAIEAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAARAAAAAAAAEQAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAC8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAQCBAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAARAAAAAAAAEQAAAAAAABEAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA== version: 7 5,-3: ind: 5,-3 - tiles: GAAAAAABAC8AAAAAAAAYAAAAAAEAGAAAAAACABgAAAAAAQAYAAAAAAIAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAABABgAAAAAAQAYAAAAAAAAGAAAAAABAAQAAAAAAAAEAAAAAAAAGAAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAAAYAAAAAAIAgQAAAAAAABgAAAAAAQAYAAAAAAEAGAAAAAABABgAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAEABAAAAAABABgAAAAAAgAvAAAAAAAALwAAAAAAAC8AAAAAAAAeAAAAAAAAHgAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAABABgAAAAAAQAEAAAAAAEAgQAAAAAAAAQAAAAAAAACAAAAAAAABAAAAAAAAAQAAAAAAAAYAAAAAAEALwAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAABgAAAAAAgCBAAAAAAAAGAAAAAACABgAAAAAAgAYAAAAAAAAGAAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAAAEAAAAAAAAGAAAAAAAABgAAAAAAQAvAAAAAAAAGAAAAAACABgAAAAAAQAYAAAAAAAAGAAAAAACABgAAAAAAAAYAAAAAAIAGAAAAAAAABgAAAAAAgAYAAAAAAAAGAAAAAACABgAAAAAAAAEAAAAAAAABAAAAAABABgAAAAAAACBAAAAAAAALwAAAAAAABgAAAAAAgAYAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAACABgAAAAAAAAEAAAAAAAABAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAAC8AAAAAAAAYAAAAAAIAGAAAAAABAIEAAAAAAAAEAAAAAAEABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAABAAQAAAAAAQAEAAAAAAEABAAAAAABABgAAAAAAgAYAAAAAAAAgQAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAACAIEAAAAAAACBAAAAAAAABAAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAAAYAAAAAAIAGAAAAAACABgAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAAAXAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAgQAAAAAAAIEAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACABcAAAAAAQAXAAAAAAEAFwAAAAACABcAAAAAAQAXAAAAAAEAFwAAAAABABcAAAAAAQAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAACABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAACABcAAAAAAAAXAAAAAAAAFwAAAAACABcAAAAAAgAXAAAAAAAAFwAAAAAAABcAAAAAAQAXAAAAAAEAFwAAAAABABcAAAAAAQAXAAAAAAAAFwAAAAAAAA== + tiles: GAAAAAAAAC8AAAAAAAAYAAAAAAIAGAAAAAAAABgAAAAAAAAYAAAAAAIAGAAAAAAAABgAAAAAAgAYAAAAAAAAGAAAAAACABgAAAAAAAAYAAAAAAEAGAAAAAABAAQAAAAAAQAEAAAAAAAAGAAAAAACAC8AAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAAAYAAAAAAAAgQAAAAAAABgAAAAAAAAYAAAAAAIAGAAAAAACABgAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAEABAAAAAAAABgAAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAAAeAAAAAAAAHgAAAAAAAIEAAAAAAAAYAAAAAAIAGAAAAAAAABgAAAAAAgAEAAAAAAEAgQAAAAAAAAQAAAAAAQACAAAAAAAABAAAAAABAAQAAAAAAQAYAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAABgAAAAAAQCBAAAAAAAAGAAAAAAAABgAAAAAAgAYAAAAAAIAGAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAQAEAAAAAAEAGAAAAAAAABgAAAAAAQAvAAAAAAAAGAAAAAABABgAAAAAAQAYAAAAAAIAGAAAAAAAABgAAAAAAgAYAAAAAAAAGAAAAAAAABgAAAAAAQAYAAAAAAAAGAAAAAABABgAAAAAAQAEAAAAAAEABAAAAAAAABgAAAAAAgCBAAAAAAAALwAAAAAAABgAAAAAAgAYAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAABABgAAAAAAgAEAAAAAAAABAAAAAABABgAAAAAAQAYAAAAAAEAGAAAAAAAAC8AAAAAAAAYAAAAAAEAGAAAAAAAAIEAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAQAEAAAAAAEABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABgAAAAAAQAYAAAAAAAAgQAAAAAAABgAAAAAAgAYAAAAAAEAGAAAAAABAIEAAAAAAACBAAAAAAAABAAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAgAYAAAAAAAAGAAAAAABABgAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAAAXAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAgQAAAAAAAIEAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAAAFwAAAAABABcAAAAAAQAXAAAAAAEAFwAAAAACABcAAAAAAQAXAAAAAAAAFwAAAAACABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAgAXAAAAAAAAFwAAAAABABcAAAAAAQAXAAAAAAEAFwAAAAAAABcAAAAAAgAXAAAAAAEAFwAAAAACABcAAAAAAAAXAAAAAAIAFwAAAAACAA== version: 7 3,-3: ind: 3,-3 @@ -367,79 +368,79 @@ entities: version: 7 4,-2: ind: 4,-2 - tiles: AgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAB4AAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAAAAgAAAAAAAAIAAAAAAAAeAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAHgAAAAAAACAAAAAAAAAgAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAS8AAAAAAAAtAAAAAAABgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAEvAAAAAAAALQAAAAAAAS0AAAAAAAEtAAAAAAABLQAAAAAAATUAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAABLwAAAAAAAC0AAAAAAAEtAAAAAAABLQAAAAAAAS0AAAAAAAEtAAAAAAAALwAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAANwAAAAAAADUAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAADYAAAAAAAAtAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAA3AAAAAAAALgAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAy0AAAAAAAOBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAIQAAAAAAACEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAXAAAAAAAAFwAAAAACABcAAAAAAgAXAAAAAAAAFwAAAAAAABcAAAAAAgAXAAAAAAAAFwAAAAACAA== + tiles: AgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAB4AAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAEAAgAAAAAAAAIAAAAAAAAeAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAHgAAAAAAACAAAAAAAAAgAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAS8AAAAAAAAtAAAAAAABgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAACABgAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC0AAAAAAAEvAAAAAAAALQAAAAAAAS0AAAAAAAEtAAAAAAABLQAAAAAAATUAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAABLwAAAAAAAC0AAAAAAAEtAAAAAAABLQAAAAAAAS0AAAAAAAEtAAAAAAAALwAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAANwAAAAAAADUAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAADYAAAAAAAAtAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAA3AAAAAAAALgAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALQAAAAAAAy0AAAAAAAOBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAIQAAAAAAACEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAXAAAAAAIAFwAAAAABABcAAAAAAAAXAAAAAAEAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAAA== version: 7 3,-2: ind: 3,-2 - tiles: gQAAAAAAAIEAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAQCBAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAgCBAAAAAAAALgAAAAAAAiAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAABLwAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAM1AAAAAAAANgAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAABLQAAAAAAAS8AAAAAAAA3AAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMuAAAAAAAANwAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAS0AAAAAAAEvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAABgAAAAAAgAYAAAAAAAAGAAAAAAAABgAAAAAAQAYAAAAAAIAGAAAAAACABgAAAAAAgAYAAAAAAIAGAAAAAABACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAACAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAACQAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAIAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAAAfAAAAAAIAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAA== + tiles: gQAAAAAAAIEAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAAACAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAABABgAAAAAAQCBAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAgCBAAAAAAAALgAAAAAAAiAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAtAAAAAAABLwAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAM1AAAAAAAANgAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAABLQAAAAAAAS8AAAAAAAA3AAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMuAAAAAAAANwAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAS0AAAAAAAEvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAABgAAAAAAgAYAAAAAAIAGAAAAAAAABgAAAAAAAAYAAAAAAIAGAAAAAACABgAAAAAAAAYAAAAAAIAGAAAAAACACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAACAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAACQAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAIAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAAAfAAAAAAEAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAA== version: 7 2,-2: ind: 2,-2 - tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAAAGAAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAeAAAAAAAAgQAAAAAAABgAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAAIEAAAAAAACBAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAHgAAAAAAABgAAAAAAQAYAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAB4AAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAAAgQAAAAAAAIEAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAACABgAAAAAAAAYAAAAAAAAGAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAA2AAAAAAAALQAAAAAAAy0AAAAAAAM1AAAAAAAANgAAAAAAAIEAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAC0AAAAAAAMYAAAAAAIALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy4AAAAAAAMtAAAAAAADNwAAAAAAAC4AAAAAAAEtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAzYAAAAAAAArAAAAAAAAGAAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACUAAAAAAAAtAAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMuAAAAAAAALQAAAAAAAxgAAAAAAgAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAQAYAAAAAAAAGAAAAAACABgAAAAAAQAYAAAAAAIAGAAAAAABABgAAAAAAQApAAAAAAAAKQAAAAAAAIEAAAAAAAAvAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAKQAAAAAAACkAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAAAAIEAAAAAAAAZAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAgQAAAAAAABcAAAAAAgCBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAAIEAAAAAAAAAAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAAfAAAAAAIAHwAAAAADAAIAAAAAAAAfAAAAAAQAKQAAAAAAAIEAAAAAAACBAAAAAAAAKQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAgQAAAAAAAA== + tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAAAGAAAAAABAIEAAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAABgAAAAAAgCBAAAAAAAAgQAAAAAAABgAAAAAAQAYAAAAAAEAGAAAAAACABgAAAAAAAAYAAAAAAIAGAAAAAABAIEAAAAAAACBAAAAAAAABQAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAABgAAAAAAAAYAAAAAAEAgQAAAAAAAIEAAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAABAIEAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAYAAAAAAEAgQAAAAAAAC8AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAABABgAAAAAAgAYAAAAAAIAGAAAAAACAIEAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAA2AAAAAAAALQAAAAAAAy0AAAAAAAM1AAAAAAAANgAAAAAAAIEAAAAAAAAvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAC0AAAAAAAMYAAAAAAEALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy4AAAAAAAMtAAAAAAADNwAAAAAAAC4AAAAAAAEtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAzYAAAAAAAArAAAAAAAAGAAAAAACACsAAAAAAAArAAAAAAAAKwAAAAAAACUAAAAAAAAtAAAAAAAALQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLQAAAAAAAy0AAAAAAAMuAAAAAAAALQAAAAAAAxgAAAAAAgAtAAAAAAADLQAAAAAAAy0AAAAAAAMtAAAAAAADLgAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAABgAAAAAAQAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAABABgAAAAAAQApAAAAAAAAKQAAAAAAAIEAAAAAAAAvAAAAAAAALwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAKQAAAAAAACkAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAAAAIEAAAAAAAAZAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAgQAAAAAAABcAAAAAAQCBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAAIEAAAAAAAAAAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAAfAAAAAAIAHwAAAAABAAIAAAAAAAAfAAAAAAAAKQAAAAAAAIEAAAAAAACBAAAAAAAAKQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAgQAAAAAAAA== version: 7 2,-3: ind: 2,-3 - tiles: gQAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAgAAAAAAAAgQAAAAAAACAAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAlAAAAAAAAJQAAAAAAAG8AAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAJQAAAAAAACUAAAAAAABvAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACUAAAAAAAAlAAAAAAAAbwAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAlAAAAAAAAJQAAAAAAAG8AAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAJQAAAAAAACUAAAAAAABvAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACUAAAAAAAAlAAAAAAAAbwAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAlAAAAAAAAJQAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAJQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAJQAAAAAAACUAAAAAAABvAAAAAAAAgQAAAAAAAC8AAAAAAACBAAAAAAAALwAAAAAAAIEAAAAAAAA0AAAAAAIANAAAAAAAABgAAAAAAgAYAAAAAAEANAAAAAAEADQAAAAABQCBAAAAAAAAgQAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAlAAAAAAAAGAAAAAABABgAAAAAAAAYAAAAAAAAGAAAAAACADQAAAAAAgA0AAAAAAQAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAAgQAAAAAAADQAAAAABAAYAAAAAAIAGAAAAAACADQAAAAABAA0AAAAAAUANAAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAC8AAAAAAAAYAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA== + tiles: gQAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAgAAAAAAAAgQAAAAAAACAAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAlAAAAAAAAJQAAAAAAAG8AAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAJQAAAAAAACUAAAAAAABvAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACUAAAAAAAAlAAAAAAAAbwAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAlAAAAAAAAJQAAAAAAAG8AAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAJQAAAAAAACUAAAAAAABvAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACUAAAAAAAAlAAAAAAAAbwAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAlAAAAAAAAJQAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAJQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAJQAAAAAAACUAAAAAAABvAAAAAAAAgQAAAAAAAC8AAAAAAACBAAAAAAAALwAAAAAAAIEAAAAAAAA0AAAAAAIANAAAAAAAABgAAAAAAQAYAAAAAAIANAAAAAADADQAAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAlAAAAAAAAGAAAAAABABgAAAAAAgAYAAAAAAAAGAAAAAACADQAAAAABQA0AAAAAAMAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAvAAAAAAAAgQAAAAAAADQAAAAAAgAYAAAAAAEAGAAAAAACADQAAAAAAwA0AAAAAAEANAAAAAADAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAALwAAAAAAAC8AAAAAAAAYAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAABABgAAAAAAQAYAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA== version: 7 5,-2: ind: 5,-2 - tiles: gQAAAAAAAIEAAAAAAAAXAAAAAAEAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAFwAAAAACABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: gQAAAAAAAIEAAAAAAAAXAAAAAAIAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAACABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 5,-1: ind: 5,-1 - tiles: FwAAAAABABcAAAAAAQAXAAAAAAIAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAACABcAAAAAAQAXAAAAAAIAFwAAAAAAABcAAAAAAQAXAAAAAAEAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAQAXAAAAAAIAFwAAAAABABcAAAAAAQAXAAAAAAAAFwAAAAABABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAACABcAAAAAAAAXAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAIAFwAAAAACABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAEAAAAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAEAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAEAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: FwAAAAACABcAAAAAAgAXAAAAAAIAFwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAAAXAAAAAAEAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAgAXAAAAAAEAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAACABcAAAAAAQAXAAAAAAEAFwAAAAABABcAAAAAAQAXAAAAAAEAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAIAFwAAAAACAAAAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAgAXAAAAAAEAFwAAAAACABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAQAXAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAEAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAEAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAIAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 3,-1: ind: 3,-1 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAIwAAAAABACMAAAAABQAjAAAAAAEAIwAAAAADAIEAAAAAAAAlAAAAAAAAJQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAACMAAAAABQAjAAAAAAUAHwAAAAADAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAAAAAAAAAAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAgAXAAAAAAIAFwAAAAACAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAIAFwAAAAACABcAAAAAAQAXAAAAAAAAFwAAAAABABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABAAAAAAAAAAAXAAAAAAEAFwAAAAACABcAAAAAAQAXAAAAAAEAFwAAAAACABcAAAAAAAAXAAAAAAIAFwAAAAACABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAACABcAAAAAAAAXAAAAAAIAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAQAXAAAAAAEAFwAAAAABABcAAAAAAgAXAAAAAAIAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAIwAAAAADACMAAAAABQAjAAAAAAMAIwAAAAAFAIEAAAAAAAAlAAAAAAAAJQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAACMAAAAAAAAjAAAAAAEAHwAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAAAAAAAAAAFwAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAACABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAgAXAAAAAAIAFwAAAAABAAAAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAIAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABAAAAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAACABcAAAAAAQAXAAAAAAEAFwAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAACABcAAAAAAgAXAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAQAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 4,-1: ind: 4,-1 - tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAEAFwAAAAACAAAAAAAAAAAAAAAAAAAAFwAAAAACAAAAAAAAAAAXAAAAAAIAFwAAAAAAAIEAAAAAAAAXAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAABABcAAAAAAQAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAAAAAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAABABcAAAAAAgAXAAAAAAEAFwAAAAAAABcAAAAAAQAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAAAAAAAAAAFwAAAAACABcAAAAAAgAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAIAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAIAFwAAAAACAAAAAAAAAAAAAAAAAAAAFwAAAAABAAAAAAAAAAAXAAAAAAIAFwAAAAACAIEAAAAAAAAXAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAAAFwAAAAACABcAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAQAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAQAAAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAAAFwAAAAAAABcAAAAAAgAXAAAAAAIAFwAAAAAAABcAAAAAAgAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAQAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 2,-1: ind: 2,-1 - tiles: KQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAACBAAAAAAAAAAAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAgQAAAAAAAAAAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAAIEAAAAAAAAXAAAAAAIAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAKQAAAAAAAIEAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAACBAAAAAAAAFwAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACkAAAAAAACBAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAApAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAAAABcAAAAAAQAXAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAgAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: KQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAACBAAAAAAAAAAAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAgQAAAAAAAAAAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAgQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAAIEAAAAAAAAXAAAAAAEAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAKQAAAAAAAIEAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAACBAAAAAAAAFwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACkAAAAAAACBAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAApAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACABcAAAAAAgAXAAAAAAAAFwAAAAACABcAAAAAAQAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAACABcAAAAAAQAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAIAFwAAAAAAABcAAAAAAQAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 2,-4: ind: 2,-4 - tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAAAXAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAXAAAAAAIALQAAAAAAAC0AAAAAAAMtAAAAAAADGAAAAAACABgAAAAAAAAYAAAAAAAAGAAAAAABABgAAAAAAQAYAAAAAAAALQAAAAAAAy0AAAAAAAM1AAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAAAYAAAAAAEAGAAAAAABABgAAAAAAQAYAAAAAAEAGAAAAAABAC0AAAAAAAM1AAAAAAAAGAAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAC0AAAAAAAMtAAAAAAADNQAAAAAAAC0AAAAAAAMtAAAAAAAALQAAAAAAAy0AAAAAAAOBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAANwAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAABADcAAAAAAAAtAAAAAAADNQAAAAAAADcAAAAAAAAtAAAAAAADgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAACBAAAAAAAAgQAAAAAAADcAAAAAAAAtAAAAAAADLQAAAAAAAyAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAYAAAAAAAAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAYAAAAAAIAGAAAAAABACAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA== + tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAXAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAAAXAAAAAAEALQAAAAAAAC0AAAAAAAMtAAAAAAADGAAAAAAAABgAAAAAAgAYAAAAAAAAGAAAAAABABgAAAAAAgAYAAAAAAIALQAAAAAAAy0AAAAAAAM1AAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAQAYAAAAAAEAGAAAAAACAC0AAAAAAAM1AAAAAAAAGAAAAAAAAC0AAAAAAAMtAAAAAAADLQAAAAAAAC0AAAAAAAMtAAAAAAADNQAAAAAAAC0AAAAAAAMtAAAAAAAALQAAAAAAAy0AAAAAAAOBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAANwAAAAAAABgAAAAAAQAYAAAAAAIAGAAAAAACADcAAAAAAAAtAAAAAAADNQAAAAAAADcAAAAAAAAtAAAAAAADgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABgAAAAAAQCBAAAAAAAAgQAAAAAAADcAAAAAAAAtAAAAAAADLQAAAAAAAyAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAYAAAAAAEAIAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAYAAAAAAIAGAAAAAACACAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAGAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAA== version: 7 -2,-6: ind: -2,-6 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAgAXAAAAAAIAFwAAAAABABcAAAAAAgAXAAAAAAIAFwAAAAAAABcAAAAAAQAXAAAAAAIAFwAAAAACABcAAAAAAQAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAACAIEAAAAAAAAAAAAAAAAAgQAAAAAAAAAAAAAAAACBAAAAAAAAFwAAAAACABcAAAAAAgAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAgQAAAAAAABcAAAAAAgAXAAAAAAAAgQAAAAAAABcAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAQAXAAAAAAEAAAAAAAAAABcAAAAAAgCBAAAAAAAAFwAAAAABABcAAAAAAACBAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgCBAAAAAAAAFwAAAAACABcAAAAAAgAXAAAAAAAAgQAAAAAAABcAAAAAAQAXAAAAAAAAFwAAAAACAIEAAAAAAAAXAAAAAAIAgQAAAAAAAIEAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAQAXAAAAAAAAFwAAAAAAABcAAAAAAgAXAAAAAAIAFwAAAAABABcAAAAAAgAXAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAIAFwAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAAAABcAAAAAAQAXAAAAAAAAFwAAAAABABcAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAXAAAAAAEAAAAAAAAAABcAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAQAXAAAAAAEAFwAAAAABAIEAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAACBAAAAAAAAFwAAAAAAABcAAAAAAgAXAAAAAAIAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAAIEAAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAgCBAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAFwAAAAAAABcAAAAAAgAXAAAAAAIAgQAAAAAAABcAAAAAAAAAAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAgQAAAAAAABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAAAAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAABcAAAAAAACBAAAAAAAAFwAAAAABABcAAAAAAgAXAAAAAAAAFwAAAAACABcAAAAAAQAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABABcAAAAAAgAXAAAAAAAAFwAAAAABABcAAAAAAQAXAAAAAAIAgQAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAABcAAAAAAgAAAAAAAAAAFwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQCBAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAFwAAAAACAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAgAXAAAAAAIAFwAAAAABABcAAAAAAQAXAAAAAAIAFwAAAAACABcAAAAAAAAXAAAAAAIAFwAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAEAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAAAAIEAAAAAAAAAAAAAAAAAgQAAAAAAAAAAAAAAAACBAAAAAAAAFwAAAAABABcAAAAAAgAAAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAgQAAAAAAABcAAAAAAQAXAAAAAAIAgQAAAAAAABcAAAAAAgAAAAAAAAAAFwAAAAABABcAAAAAAQAXAAAAAAIAAAAAAAAAABcAAAAAAACBAAAAAAAAFwAAAAABABcAAAAAAQCBAAAAAAAAAAAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAFwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAAAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAACBAAAAAAAAFwAAAAAAABcAAAAAAgAXAAAAAAIAgQAAAAAAABcAAAAAAgAXAAAAAAAAFwAAAAABAIEAAAAAAAAXAAAAAAEAgQAAAAAAAIEAAAAAAAAXAAAAAAEAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAQAXAAAAAAAAFwAAAAAAABcAAAAAAgAXAAAAAAIAFwAAAAACABcAAAAAAAAXAAAAAAAAFwAAAAABABcAAAAAAgAXAAAAAAIAFwAAAAABABcAAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAgAAAAAAAAAAFwAAAAABAAAAAAAAAAAXAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAIAFwAAAAAAAIEAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAgCBAAAAAAAAFwAAAAABABcAAAAAAgAXAAAAAAAAFwAAAAACABcAAAAAAAAXAAAAAAEAFwAAAAACAIEAAAAAAAAXAAAAAAIAFwAAAAACABcAAAAAAgCBAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAAAXAAAAAAAAgQAAAAAAABcAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAgQAAAAAAABcAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgCBAAAAAAAAFwAAAAACABcAAAAAAAAXAAAAAAEAFwAAAAAAABcAAAAAAgAXAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAAAABcAAAAAAgAXAAAAAAIAFwAAAAAAABcAAAAAAAAXAAAAAAAAgQAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAABcAAAAAAgAAAAAAAAAAFwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQCBAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAFwAAAAACAA== version: 7 -4,-6: ind: -4,-6 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAACABcAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAAAABcAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAQAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAAAABcAAAAAAQAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAABABcAAAAAAgAAAAAAAAAAFwAAAAABABcAAAAAAQAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAA== version: 7 4,-6: ind: 4,-6 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAQAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 5,-6: ind: 5,-6 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAEAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAQAAAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAIAFwAAAAACAAAAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAIAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAQAAAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAXAAAAAAEAFwAAAAABAAAAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 6,-3: ind: 6,-3 - tiles: GAAAAAACAIEAAAAAAACBAAAAAAAAFwAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAXAAAAAAIAFwAAAAABABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACABcAAAAAAgAXAAAAAAEAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAABAIEAAAAAAACBAAAAAAAAFwAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAXAAAAAAIAAAAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAQCBAAAAAAAAgQAAAAAAABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAFwAAAAAAABcAAAAAAQAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAABcAAAAAAgAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAXAAAAAAEAAAAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAAAAAAAAAAFwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAACABcAAAAAAQAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAXAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAABcAAAAAAgAAAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAXAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAXAAAAAAEAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAFwAAAAABAAAAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAACABcAAAAAAgAXAAAAAAEAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAXAAAAAAAAFwAAAAABABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAAAFwAAAAABABcAAAAAAQAAAAAAAAAAFwAAAAABAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: GAAAAAABAIEAAAAAAACBAAAAAAAAFwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAXAAAAAAAAFwAAAAABABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAQCBAAAAAAAAgQAAAAAAABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAAAABcAAAAAAgAXAAAAAAIAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAXAAAAAAEAAAAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAABABcAAAAAAQAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAIAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAAAAAAAAAAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAAAXAAAAAAIAFwAAAAAAABcAAAAAAQAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACAAAAAAAAAAAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAXAAAAAAIAAAAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAFwAAAAABAAAAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAFwAAAAAAABcAAAAAAAAXAAAAAAIAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAXAAAAAAEAFwAAAAACABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAQAXAAAAAAEAFwAAAAACABcAAAAAAAAAAAAAAAAAFwAAAAABAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 6,-2: ind: 6,-2 - tiles: FwAAAAAAABcAAAAAAgAXAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAFwAAAAABAAAAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAQAXAAAAAAEAFwAAAAABABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: FwAAAAABABcAAAAAAgAXAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAFwAAAAACAAAAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAABABcAAAAAAAAXAAAAAAAAFwAAAAACABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 6,-4: ind: 6,-4 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAABABcAAAAAAAAXAAAAAAAAFwAAAAACABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAXAAAAAAEAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAIAFwAAAAACAAAAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAABABcAAAAAAAAXAAAAAAAAFwAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAEAFwAAAAAAABcAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAXAAAAAAIAFwAAAAAAABcAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAXAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAXAAAAAAEAAAAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAFwAAAAABAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAAAAAAAAAAFwAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAXAAAAAAAAFwAAAAAAABcAAAAAAgAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAgAXAAAAAAIAFwAAAAABABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABAAAAAAAAAAAXAAAAAAIAAAAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAAAFwAAAAAAAAAAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAACAAAAAAAAAAAXAAAAAAIAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAXAAAAAAAAFwAAAAABABcAAAAAAgAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQCBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAXAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAXAAAAAAIAAAAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAABcAAAAAAgCBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAFwAAAAABAAAAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAAAAAAAAAAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAQAXAAAAAAEAFwAAAAABABcAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAABcAAAAAAgAXAAAAAAEAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAABcAAAAAAgAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAXAAAAAAIAAAAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 3,-7: ind: 3,-7 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIEAAAAAAACBAAAAAAAAFwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -5,-3: ind: -5,-3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAFwAAAAACAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAQAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAACABcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAIAFwAAAAACAA== version: 7 - type: Broadphase - type: Physics @@ -494,7 +495,7 @@ entities: 0,0: 0: 4095 -1,0: - 0: 36863 + 0: 34815 0,3: 1: 8224 -1,3: @@ -502,7 +503,7 @@ entities: 0,-1: 0: 53247 1,0: - 0: 20479 + 0: 19455 1,3: 1: 5200 1,-1: @@ -609,7 +610,7 @@ entities: 0: 143 1: 16384 -3,-5: - 0: 57983 + 0: 58999 -3,-2: 0: 3264 -3,-1: @@ -621,47 +622,47 @@ entities: -2,-2: 0: 36795 -2,-5: - 0: 65343 + 0: 65295 -1,-5: 0: 65485 -4,-8: - 0: 58589 + 0: 57565 -4,-9: 0: 56797 -5,-8: 0: 7579 -4,-7: - 0: 65518 + 0: 61438 -5,-7: 0: 65535 -4,-6: - 0: 65308 + 0: 65436 -5,-6: 0: 65524 -5,-5: 0: 56799 -3,-8: - 0: 47359 + 0: 61183 -3,-7: - 0: 65395 + 0: 32767 -3,-6: - 0: 65411 + 0: 65303 -3,-9: 0: 65535 -2,-8: - 0: 53759 + 0: 35839 -2,-7: - 0: 65533 + 0: 49599 -2,-6: - 0: 65521 + 0: 65533 -2,-9: 0: 65535 -1,-8: 0: 56575 -1,-7: - 0: 56797 + 0: 56541 -1,-6: - 0: 56796 + 0: 56797 -1,-9: 0: 65279 0,-8: @@ -1726,7 +1727,7 @@ entities: 1: 65297 2: 12 11,-23: - 1: 65520 + 1: 65504 12,-24: 1: 4080 12,-23: @@ -1737,8 +1738,8 @@ entities: 0: 17408 12,-21: 2: 1 - 1: 65480 - 0: 4 + 1: 32712 + 0: 32772 9,-19: 0: 47919 9,-18: @@ -2221,9 +2222,9 @@ entities: 20,-6: 0: 57293 20,-5: - 0: 3789 + 0: 205 11,-8: - 0: 48120 + 0: 47864 12,-7: 0: 61681 11,-7: @@ -2455,60 +2456,61 @@ entities: - type: ExplosionAirtightGrid - type: ChunkContainer chunkEntities: - - 14405 - - 14407 - - 14408 - - 14926 - - 14928 - - 14973 - - 15216 - - 15236 - - 15269 - - 15404 - - 15413 - - 15417 - - 15471 - - 15478 - - 15545 - - 15596 - - 15621 - - 15694 - - 15696 - - 15697 - - 15698 - - 15699 - - 15700 - - 15790 - - 15849 - - 15852 - - 15853 - - 15856 - - 15857 - - 15912 - - 15913 - - 16021 - - 16045 - - 16046 - - 16047 - - 16164 - - 16175 - - 16193 - - 16449 - - 16535 - - 16606 - - 16856 - - 16859 - - 16871 - - 17098 - - 17099 - - 17103 - - 17108 - - 17113 - - 17114 - - 17115 - - 17173 - - 17247 - - 17248 + - 17429 + - 17430 + - 17524 + - 17525 + - 17526 + - 17527 + - 17528 + - 17529 + - 17557 + - 17561 + - 17562 + - 17563 + - 17567 + - 17568 + - 17569 + - 17570 + - 17571 + - 17614 + - 17617 + - 17637 + - 17648 + - 17682 + - 17693 + - 17694 + - 17716 + - 17730 + - 17732 + - 17784 + - 17794 + - 17795 + - 17842 + - 17873 + - 17874 + - 17875 + - 17876 + - 17916 + - 17918 + - 17988 + - 18010 + - 18012 + - 18101 + - 18102 + - 18109 + - 18149 + - 18150 + - 18216 + - 18217 + - 18219 + - 18249 + - 18251 + - 18266 + - 18303 + - 18319 + - 18320 + - 18324 - type: GridSplitNode - proto: ActionStethoscope entities: @@ -2756,7 +2758,7 @@ entities: components: - type: Transform parent: 2 - pos: -4.5,-29.5 + pos: -13.5,-29.5 - type: DeviceList devices: - 10003 @@ -2836,24 +2838,6 @@ entities: - 19871 - 19870 - 8480 - - uid: 1075 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -9.5,-27.5 - - type: DeviceList - devices: - - 8839 - - 8489 - - 9916 - - 8488 - - 9874 - - 7440 - - 7443 - - 18797 - - 8791 - - 19204 - uid: 1212 components: - type: Transform @@ -2960,7 +2944,6 @@ entities: pos: -5.5,-9.5 - type: DeviceList devices: - - 7442 - 10430 - 8675 - 8769 @@ -2981,9 +2964,8 @@ entities: - 10481 - 19829 - 19828 - - 8107 - - 16242 - 19830 + - 16164 - uid: 5107 components: - type: Transform @@ -3215,6 +3197,8 @@ entities: - 3081 - 18842 - 19920 + - 17099 + - 17103 - uid: 7582 components: - type: Transform @@ -3989,6 +3973,8 @@ entities: - 18726 - 18725 - 18735 + - 17307 + - 17306 - uid: 16367 components: - type: Transform @@ -4017,6 +4003,25 @@ entities: - 15526 - 1104 - 18400 + - uid: 16438 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -15.5,-24.5 + - type: DeviceList + devices: + - 8488 + - 8489 + - 379 + - 16047 + - 16522 + - 16514 + - 16513 + - 16535 + - 16021 + - 15923 + - 16175 - uid: 16603 components: - type: Transform @@ -4029,6 +4034,18 @@ entities: - 18762 - 8847 - 8849 + - uid: 16647 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -2.5,-19.5 + - type: DeviceList + devices: + - 16156 + - 16117 + - 16045 + - 16046 - uid: 17282 components: - type: Transform @@ -4214,14 +4231,14 @@ entities: - 1112 - 18761 - 44 - - 7440 - - 16242 - - 8107 - - 19203 - 8843 - 8844 - - 8792 - 8718 + - 379 + - 16047 + - 16117 + - 16156 + - 16164 - uid: 19220 components: - type: Transform @@ -4723,6 +4740,7 @@ entities: components: - type: Transform parent: 2 + rot: 1.5707963267948966 rad pos: 16.5,-82.5 - proto: AirlockChapelLocked entities: @@ -5101,30 +5119,6 @@ entities: 6008: - - DoorStatus - DoorBolt - - uid: 6388 - components: - - type: Transform - parent: 2 - pos: 51.5,-77.5 - - type: DeviceLinkSink - invokeCounter: 1 - - type: DeviceLinkSource - linkedPorts: - 10675: - - - DoorStatus - - Close - - uid: 10675 - components: - - type: Transform - parent: 2 - pos: 51.5,-80.5 - - type: DeviceLinkSink - invokeCounter: 1 - - type: DeviceLinkSource - linkedPorts: - 6388: - - - DoorStatus - - Close - uid: 15217 components: - type: Transform @@ -5375,6 +5369,30 @@ entities: - type: Transform parent: 2 pos: -56.5,-69.5 + - uid: 377 + components: + - type: Transform + parent: 2 + pos: 51.5,-80.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 378: + - - DoorStatus + - DoorBolt + - uid: 378 + components: + - type: Transform + parent: 2 + pos: 51.5,-77.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 377: + - - DoorStatus + - DoorBolt - uid: 1471 components: - type: Transform @@ -6455,7 +6473,7 @@ entities: pos: 11.5,-30.5 - type: Door state: Opening - secondsUntilStateChange: -299802.9 + secondsUntilStateChange: -317763.56 - type: DeviceLinkSource lastSignals: DoorStatus: True @@ -6621,69 +6639,73 @@ entities: 2209: - - DoorStatus - Close - - uid: 2379 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -8.5,-24.5 - - uid: 2725 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -8.5,-25.5 - proto: AirlockScienceLocked entities: + - uid: 257 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -5.5,-27.5 - uid: 513 components: - type: Transform parent: 2 pos: -17.5,-23.5 - - uid: 519 + - uid: 632 components: - type: Transform parent: 2 - pos: -7.5,-23.5 - - uid: 2271 + rot: 3.141592653589793 rad + pos: -4.5,-29.5 + - uid: 2221 components: - type: Transform parent: 2 - pos: -7.5,-27.5 - - uid: 3033 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -8.5,-16.5 - - uid: 3143 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -15.5,-25.5 - - uid: 3165 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -15.5,-24.5 + rot: 1.5707963267948966 rad + pos: -8.5,-21.5 - uid: 3166 components: - type: Transform parent: 2 rot: -1.5707963267948966 rad pos: -26.5,-26.5 - - uid: 11100 + - uid: 4210 components: - type: Transform parent: 2 - pos: -13.5,-29.5 - - uid: 13395 + rot: -1.5707963267948966 rad + pos: -15.5,-26.5 + - uid: 4982 components: - type: Transform parent: 2 - pos: -10.5,-17.5 + rot: 1.5707963267948966 rad + pos: -8.5,-20.5 + - uid: 5075 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -12.5,-22.5 + - uid: 5097 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -11.5,-22.5 + - uid: 7434 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -8.5,-16.5 + - uid: 16191 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -15.5,-25.5 - proto: AirlockSecurityGlassLocked entities: - uid: 1881 @@ -6856,6 +6878,11 @@ entities: - type: Transform parent: 2 pos: 31.5,-16.5 + - uid: 17303 + components: + - type: Transform + parent: 2 + pos: 31.5,-13.5 - proto: AirlockXeno entities: - uid: 153 @@ -6887,7 +6914,7 @@ entities: pos: 34.5,-36.5 - type: Door state: Opening - secondsUntilStateChange: -75300.58 + secondsUntilStateChange: -93261.266 - type: DeviceLinkSource lastSignals: DoorStatus: True @@ -7268,6 +7295,12 @@ entities: - type: Transform parent: 2 pos: 57.5,-66.5 + - uid: 14699 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 37.5,-30.5 - uid: 16387 components: - type: Transform @@ -7278,6 +7311,12 @@ entities: - type: Transform parent: 2 pos: -16.5,-42.5 + - uid: 17384 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 46.5,-30.5 - proto: AirSensor entities: - uid: 1800 @@ -7610,22 +7649,6 @@ entities: - type: DeviceNetwork deviceLists: - 18818 - - uid: 8791 - components: - - type: Transform - parent: 2 - pos: -14.5,-25.5 - - type: DeviceNetwork - deviceLists: - - 1075 - - uid: 8792 - components: - - type: Transform - parent: 2 - pos: -5.5,-21.5 - - type: DeviceNetwork - deviceLists: - - 19200 - uid: 8814 components: - type: Transform @@ -7732,6 +7755,14 @@ entities: - type: DeviceNetwork deviceLists: - 9236 + - uid: 16175 + components: + - type: Transform + parent: 2 + pos: -8.5,-27.5 + - type: DeviceNetwork + deviceLists: + - 16438 - uid: 16423 components: - type: Transform @@ -7757,6 +7788,14 @@ entities: deviceLists: - 14592 - 14590 + - uid: 17307 + components: + - type: Transform + parent: 2 + pos: 31.5,-11.5 + - type: DeviceNetwork + deviceLists: + - 16363 - uid: 17687 components: - type: Transform @@ -8029,31 +8068,21 @@ entities: pos: -40.61705,-80.25643 - proto: AnomalyScanner entities: - - uid: 8653 + - uid: 10250 components: - type: Transform parent: 2 - pos: -12.506874,-21.423786 - - uid: 12911 + pos: -9.50273,-17.380056 + - uid: 14125 components: - type: Transform parent: 2 - pos: -12.142291,-21.267427 + pos: -13.480247,-21.178549 - uid: 18173 components: - type: Transform parent: 2 pos: -50.451,-54.290306 - - uid: 19207 - components: - - type: Transform - parent: 2 - pos: -5.6010184,-28.223955 - - uid: 19209 - components: - - type: Transform - parent: 2 - pos: -6.6181827,-18.475647 - proto: APCBasic entities: - uid: 295 @@ -8368,14 +8397,6 @@ entities: - type: Transform parent: 2 pos: -12.5,-10.5 - - uid: 11432 - components: - - type: MetaData - name: Science Main APC - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: -9.5,-22.5 - uid: 11637 components: - type: MetaData @@ -8484,6 +8505,21 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 20.5,-62.5 + - uid: 16193 + components: + - type: MetaData + name: Science R&D APC + - type: Transform + parent: 2 + pos: -13.5,-22.5 + - uid: 16242 + components: + - type: MetaData + name: Science Anomaly & Robotics APC + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -8.5,-19.5 - uid: 17057 components: - type: MetaData @@ -8660,11 +8696,6 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 6.5,3.5 - - uid: 2475 - components: - - type: Transform - parent: 2 - pos: 21.5,-102.5 - uid: 3042 components: - type: Transform @@ -8680,11 +8711,6 @@ entities: - type: Transform parent: 2 pos: 23.5,-102.5 - - uid: 4222 - components: - - type: Transform - parent: 2 - pos: 27.5,-102.5 - uid: 5034 components: - type: Transform @@ -9035,16 +9061,22 @@ entities: pos: 42.5,-61.5 - proto: Autolathe entities: - - uid: 2325 - components: - - type: Transform - parent: 2 - pos: -3.5,-20.5 - uid: 3013 components: - type: Transform parent: 2 pos: 29.5,-89.5 + - uid: 5064 + components: + - type: Transform + parent: 2 + pos: -13.5,-28.5 + - type: TechnologyDatabase + supportedDisciplines: + - Industrial + - Arsenal + - Experimental + - CivilianServices - uid: 5705 components: - type: Transform @@ -10022,16 +10054,16 @@ entities: pos: 73.5,-48.5 - proto: BorgCharger entities: - - uid: 5064 + - uid: 7100 components: - type: Transform parent: 2 - pos: -11.5,-23.5 - - uid: 5065 + pos: -3.5,-19.5 + - uid: 15326 components: - type: Transform parent: 2 - pos: -10.5,-23.5 + pos: -3.5,-20.5 - uid: 17415 components: - type: Transform @@ -10232,11 +10264,6 @@ entities: - type: Transform parent: 2 pos: 19.714624,-17.186592 - - uid: 13336 - components: - - type: Transform - parent: 2 - pos: -11.671647,-21.385529 - proto: BoxLethalshot entities: - uid: 11826 @@ -10447,12 +10474,29 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 26.5,-100.5 + - uid: 7499 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 36.5,-82.5 - uid: 8851 components: - type: Transform parent: 2 rot: -1.5707963267948966 rad pos: -20.5,-18.5 + - uid: 11124 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 38.5,-87.5 + - uid: 15327 + components: + - type: Transform + parent: 2 + pos: -4.5,-18.5 - uid: 15387 components: - type: Transform @@ -10477,29 +10521,29 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 57.5,-20.5 - - uid: 17795 + - uid: 17305 + components: + - type: Transform + parent: 2 + pos: 32.5,-13.5 + - uid: 17397 components: - type: Transform parent: 2 rot: -1.5707963267948966 rad - pos: -9.5,-28.5 + pos: 38.5,-87.5 + - uid: 17404 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 36.5,-82.5 - uid: 17828 components: - type: Transform parent: 2 rot: -1.5707963267948966 rad pos: 25.5,-89.5 - - uid: 17873 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 38.5,-87.5 - - uid: 17874 - components: - - type: Transform - parent: 2 - pos: 36.5,-82.5 - uid: 19573 components: - type: Transform @@ -10638,6 +10682,11 @@ entities: - type: Transform parent: 2 pos: 62.5,-19.5 + - uid: 535 + components: + - type: Transform + parent: 2 + pos: -13.5,-22.5 - uid: 545 components: - type: Transform @@ -10658,6 +10707,11 @@ entities: - type: Transform parent: 2 pos: -27.5,-15.5 + - uid: 594 + components: + - type: Transform + parent: 2 + pos: -4.5,-23.5 - uid: 717 components: - type: Transform @@ -10677,7 +10731,7 @@ entities: components: - type: Transform parent: 2 - pos: -8.5,-22.5 + pos: -7.5,-21.5 - uid: 952 components: - type: Transform @@ -10708,6 +10762,11 @@ entities: - type: Transform parent: 2 pos: 35.5,-28.5 + - uid: 1075 + components: + - type: Transform + parent: 2 + pos: -7.5,-22.5 - uid: 1096 components: - type: Transform @@ -10783,6 +10842,11 @@ entities: - type: Transform parent: 2 pos: -37.5,-12.5 + - uid: 1477 + components: + - type: Transform + parent: 2 + pos: -8.5,-27.5 - uid: 1559 components: - type: Transform @@ -10803,6 +10867,16 @@ entities: - type: Transform parent: 2 pos: -33.5,-25.5 + - uid: 1665 + components: + - type: Transform + parent: 2 + pos: -13.5,-23.5 + - uid: 1670 + components: + - type: Transform + parent: 2 + pos: -13.5,-24.5 - uid: 1709 components: - type: Transform @@ -10843,6 +10917,11 @@ entities: - type: Transform parent: 2 pos: -41.5,-79.5 + - uid: 2154 + components: + - type: Transform + parent: 2 + pos: -9.5,-26.5 - uid: 2241 components: - type: Transform @@ -10878,6 +10957,11 @@ entities: - type: Transform parent: 2 pos: 3.5,-72.5 + - uid: 2475 + components: + - type: Transform + parent: 2 + pos: -11.5,-26.5 - uid: 2483 components: - type: Transform @@ -10893,16 +10977,16 @@ entities: - type: Transform parent: 2 pos: 59.5,-72.5 + - uid: 2725 + components: + - type: Transform + parent: 2 + pos: -10.5,-26.5 - uid: 2739 components: - type: Transform parent: 2 pos: 64.5,-69.5 - - uid: 2741 - components: - - type: Transform - parent: 2 - pos: -7.5,-22.5 - uid: 2936 components: - type: Transform @@ -10978,16 +11062,16 @@ entities: - type: Transform parent: 2 pos: 63.5,-20.5 - - uid: 3095 - components: - - type: Transform - parent: 2 - pos: -9.5,-22.5 - uid: 3129 components: - type: Transform parent: 2 pos: 67.5,-72.5 + - uid: 3143 + components: + - type: Transform + parent: 2 + pos: -4.5,-28.5 - uid: 3147 components: - type: Transform @@ -11353,6 +11437,16 @@ entities: - type: Transform parent: 2 pos: 41.5,-30.5 + - uid: 3694 + components: + - type: Transform + parent: 2 + pos: -8.5,-26.5 + - uid: 3698 + components: + - type: Transform + parent: 2 + pos: -13.5,-27.5 - uid: 3704 components: - type: Transform @@ -11618,6 +11712,11 @@ entities: - type: Transform parent: 2 pos: 47.5,-19.5 + - uid: 4222 + components: + - type: Transform + parent: 2 + pos: -8.5,-19.5 - uid: 4224 components: - type: Transform @@ -11668,6 +11767,11 @@ entities: - type: Transform parent: 2 pos: -17.5,-74.5 + - uid: 4470 + components: + - type: Transform + parent: 2 + pos: -13.5,-26.5 - uid: 4559 components: - type: Transform @@ -11753,6 +11857,11 @@ entities: - type: Transform parent: 2 pos: 55.5,-16.5 + - uid: 5072 + components: + - type: Transform + parent: 2 + pos: -4.5,-22.5 - uid: 5080 components: - type: Transform @@ -12003,11 +12112,6 @@ entities: - type: Transform parent: 2 pos: 80.5,-45.5 - - uid: 5835 - components: - - type: Transform - parent: 2 - pos: 68.5,-47.5 - uid: 5857 components: - type: Transform @@ -12412,22 +12516,12 @@ entities: components: - type: Transform parent: 2 - pos: 86.5,-47.5 + pos: 84.5,-47.5 - uid: 7495 components: - type: Transform parent: 2 - pos: 85.5,-47.5 - - uid: 7499 - components: - - type: Transform - parent: 2 - pos: 85.5,-43.5 - - uid: 7501 - components: - - type: Transform - parent: 2 - pos: 86.5,-43.5 + pos: 84.5,-43.5 - uid: 7502 components: - type: Transform @@ -12963,6 +13057,11 @@ entities: - type: Transform parent: 2 pos: 50.5,-72.5 + - uid: 9514 + components: + - type: Transform + parent: 2 + pos: -7.5,-27.5 - uid: 9528 components: - type: Transform @@ -13013,6 +13112,11 @@ entities: - type: Transform parent: 2 pos: 47.5,-63.5 + - uid: 10201 + components: + - type: Transform + parent: 2 + pos: -11.5,-27.5 - uid: 10267 components: - type: Transform @@ -13093,11 +13197,6 @@ entities: - type: Transform parent: 2 pos: 74.5,-60.5 - - uid: 10756 - components: - - type: Transform - parent: 2 - pos: 84.5,-43.5 - uid: 10765 components: - type: Transform @@ -14958,51 +15057,6 @@ entities: - type: Transform parent: 2 pos: -7.5,-20.5 - - uid: 11430 - components: - - type: Transform - parent: 2 - pos: -7.5,-21.5 - - uid: 11431 - components: - - type: Transform - parent: 2 - pos: -7.5,-22.5 - - uid: 11434 - components: - - type: Transform - parent: 2 - pos: -7.5,-25.5 - - uid: 11435 - components: - - type: Transform - parent: 2 - pos: -6.5,-25.5 - - uid: 11436 - components: - - type: Transform - parent: 2 - pos: -5.5,-25.5 - - uid: 11437 - components: - - type: Transform - parent: 2 - pos: -4.5,-25.5 - - uid: 11438 - components: - - type: Transform - parent: 2 - pos: -8.5,-25.5 - - uid: 11439 - components: - - type: Transform - parent: 2 - pos: -9.5,-25.5 - - uid: 11440 - components: - - type: Transform - parent: 2 - pos: -10.5,-25.5 - uid: 11441 components: - type: Transform @@ -20633,11 +20687,6 @@ entities: - type: Transform parent: 2 pos: -13.5,-39.5 - - uid: 13134 - components: - - type: Transform - parent: 2 - pos: -7.5,-29.5 - uid: 13136 components: - type: Transform @@ -21533,6 +21582,11 @@ entities: - type: Transform parent: 2 pos: 64.5,-56.5 + - uid: 14027 + components: + - type: Transform + parent: 2 + pos: -6.5,-27.5 - uid: 14051 components: - type: Transform @@ -23688,11 +23742,6 @@ entities: - type: Transform parent: 2 pos: 22.5,-16.5 - - uid: 19068 - components: - - type: Transform - parent: 2 - pos: -5.5,-26.5 - uid: 19075 components: - type: Transform @@ -23718,21 +23767,6 @@ entities: - type: Transform parent: 2 pos: -4.5,-27.5 - - uid: 19083 - components: - - type: Transform - parent: 2 - pos: -3.5,-27.5 - - uid: 19084 - components: - - type: Transform - parent: 2 - pos: -7.5,-24.5 - - uid: 19085 - components: - - type: Transform - parent: 2 - pos: -7.5,-23.5 - uid: 19086 components: - type: Transform @@ -24213,11 +24247,6 @@ entities: - type: Transform parent: 2 pos: 75.5,-42.5 - - uid: 19952 - components: - - type: Transform - parent: 2 - pos: 84.5,-47.5 - uid: 19956 components: - type: Transform @@ -24300,11 +24329,11 @@ entities: pos: 81.5,-49.5 - proto: CableApcStack entities: - - uid: 9765 + - uid: 16926 components: - type: Transform parent: 2 - pos: -12.632856,-28.148214 + pos: 35.458263,-72.7437 - uid: 18247 components: - type: Transform @@ -30211,11 +30240,6 @@ entities: - type: Transform parent: 2 pos: -34.5,-18.5 - - uid: 1477 - components: - - type: Transform - parent: 2 - pos: -7.5,-22.5 - uid: 1543 components: - type: Transform @@ -30231,11 +30255,6 @@ entities: - type: Transform parent: 2 pos: 66.5,-19.5 - - uid: 1665 - components: - - type: Transform - parent: 2 - pos: -7.5,-21.5 - uid: 1717 components: - type: Transform @@ -30251,6 +30270,11 @@ entities: - type: Transform parent: 2 pos: 33.5,-19.5 + - uid: 2108 + components: + - type: Transform + parent: 2 + pos: -13.5,-22.5 - uid: 2240 components: - type: Transform @@ -30291,6 +30315,11 @@ entities: - type: Transform parent: 2 pos: 76.5,-71.5 + - uid: 2741 + components: + - type: Transform + parent: 2 + pos: -12.5,-21.5 - uid: 2769 components: - type: Transform @@ -30346,6 +30375,11 @@ entities: - type: Transform parent: 2 pos: 61.5,-74.5 + - uid: 3033 + components: + - type: Transform + parent: 2 + pos: -12.5,-22.5 - uid: 3051 components: - type: Transform @@ -30531,6 +30565,11 @@ entities: - type: Transform parent: 2 pos: 31.5,-21.5 + - uid: 4392 + components: + - type: Transform + parent: 2 + pos: -8.5,-19.5 - uid: 4399 components: - type: Transform @@ -33646,11 +33685,6 @@ entities: - type: Transform parent: 2 pos: 13.5,-91.5 - - uid: 12418 - components: - - type: Transform - parent: 2 - pos: -9.5,-22.5 - uid: 12467 components: - type: Transform @@ -34416,11 +34450,6 @@ entities: - type: Transform parent: 2 pos: -2.5,-74.5 - - uid: 15923 - components: - - type: Transform - parent: 2 - pos: -8.5,-22.5 - uid: 16104 components: - type: Transform @@ -34541,11 +34570,6 @@ entities: - type: Transform parent: 2 pos: -10.5,-43.5 - - uid: 17693 - components: - - type: Transform - parent: 2 - pos: -7.5,-20.5 - uid: 17927 components: - type: Transform @@ -35207,6 +35231,13 @@ entities: - type: Transform parent: 2 pos: 17.5,-99.5 +- proto: CargoTelepad + entities: + - uid: 17301 + components: + - type: Transform + parent: 2 + pos: 24.5,-93.5 - proto: Carpet entities: - uid: 256 @@ -36579,12 +36610,6 @@ entities: parent: 2 rot: 3.3161255787892263 rad pos: -5.52199,-33.37196 - - uid: 14059 - components: - - type: Transform - parent: 2 - rot: 2.792526803190927 rad - pos: -6.443865,-32.46571 - uid: 14073 components: - type: Transform @@ -37756,11 +37781,6 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 41.5,-34.5 - - uid: 6763 - components: - - type: Transform - parent: 2 - pos: 34.5,-27.5 - uid: 7084 components: - type: Transform @@ -37821,11 +37841,6 @@ entities: - type: Transform parent: 2 pos: 75.5,-46.5 - - uid: 7699 - components: - - type: Transform - parent: 2 - pos: 33.5,-27.5 - uid: 7714 components: - type: Transform @@ -38175,11 +38190,6 @@ entities: - type: Transform parent: 2 pos: 30.5,-29.5 - - uid: 11980 - components: - - type: Transform - parent: 2 - pos: 34.5,-29.5 - uid: 12410 components: - type: Transform @@ -38221,11 +38231,6 @@ entities: - type: Transform parent: 2 pos: 29.5,-29.5 - - uid: 12958 - components: - - type: Transform - parent: 2 - pos: 33.5,-29.5 - uid: 12992 components: - type: Transform @@ -39203,12 +39208,6 @@ entities: pos: 60.5,-34.5 - proto: ChairFolding entities: - - uid: 86 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -1.6179351,-24.471281 - uid: 268 components: - type: Transform @@ -39232,18 +39231,6 @@ entities: - type: Transform parent: 2 pos: 34.5,-17.5 - - uid: 2198 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -1.3679351,-25.409433 - - uid: 3186 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -1.5554351,-26.347584 - uid: 4614 components: - type: Transform @@ -39352,6 +39339,24 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 22.5,-19.5 + - uid: 11430 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -1.5750762,-22.781898 + - uid: 13337 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -1.5750762,-24.33506 + - uid: 13975 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -1.3042427,-23.53242 - uid: 18840 components: - type: Transform @@ -39591,6 +39596,12 @@ entities: - type: Transform parent: 2 pos: -6.5,-61.5 + - uid: 17308 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -61.523342,-25.446423 - proto: ChairXeno entities: - uid: 2050 @@ -39640,12 +39651,11 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 41.5,-77.5 - - uid: 8152 + - uid: 6973 components: - type: Transform parent: 2 - rot: 3.141592653589793 rad - pos: -7.5,-19.5 + pos: -9.5,-27.5 - uid: 8153 components: - type: Transform @@ -39871,7 +39881,7 @@ entities: pos: 27.466145,-45.479877 - proto: ChunkEntity entities: - - uid: 14405 + - uid: 17429 components: - type: ChunkEntity root: 2 @@ -39924,7 +39934,7 @@ entities: 4806: 49,-98 4807: 50,-98 4808: 51,-98 - - uid: 14407 + - uid: 17430 components: - type: ChunkEntity root: 2 @@ -40161,7 +40171,7 @@ entities: color: '#FFFFFFFF' decals: 242: 22,-85 - - uid: 14408 + - uid: 17524 components: - type: ChunkEntity root: 2 @@ -40350,16 +40360,6 @@ entities: 3965: -1,-10 3966: -2,-10 3967: -3,-10 - - node: - id: MiniTileCornerOverlayNE - color: '#D381C928' - decals: - 3183: -10,-16 - - node: - id: MiniTileCornerOverlayNW - color: '#D381C928' - decals: - 3184: -11,-16 - node: id: MiniTileInnerOverlayNE color: '#95FF6F72' @@ -40388,7 +40388,7 @@ entities: 571: -3,-9 572: -2,-9 573: -1,-9 - - uid: 14926 + - uid: 17525 components: - type: ChunkEntity root: 2 @@ -40618,7 +40618,7 @@ entities: 1084: 5,-15 1085: 6,-15 1086: 7,-15 - - uid: 14928 + - uid: 17526 components: - type: ChunkEntity root: 2 @@ -40655,7 +40655,7 @@ entities: decals: 2175: -32,-81 2176: -32,-83 - - uid: 14973 + - uid: 17527 components: - type: ChunkEntity root: 2 @@ -40797,7 +40797,7 @@ entities: angle: 1.5707963267948966 rad decals: 413: 75.21097,-20.015972 - - uid: 15216 + - uid: 17528 components: - type: ChunkEntity root: 2 @@ -40960,7 +40960,7 @@ entities: color: '#FFFFFFFF' decals: 1724: 56.020706,-14.938012 - - uid: 15236 + - uid: 17529 components: - type: ChunkEntity root: 2 @@ -41338,7 +41338,7 @@ entities: color: '#FFFFFFFF' decals: 5238: 58,-20 - - uid: 15269 + - uid: 17557 components: - type: ChunkEntity root: 2 @@ -41399,7 +41399,7 @@ entities: color: '#95FF6F72' decals: 553: 6,1 - - uid: 15404 + - uid: 17561 components: - type: ChunkEntity root: 2 @@ -41470,7 +41470,7 @@ entities: color: '#95FF6F72' decals: 550: -4,1 - - uid: 15413 + - uid: 17562 components: - type: ChunkEntity root: 2 @@ -41483,277 +41483,185 @@ entities: - node: id: Arrows color: '#FFFFFFFF' - angle: 4.71238898038469 rad + angle: -1.5707963267948966 rad decals: - 3664: -3,-18 + 18: -8,-30 - node: id: Bot color: '#FFFFFFFF' decals: - 3665: -4,-18 - 3666: -5,-18 - 3667: -6,-18 - 3679: -8,-18 - 3680: -7,-18 - 5070: -4,-28 + 19: -9,-30 + 20: -10,-30 + 21: -11,-30 - node: id: BrickTileWhiteCornerNe color: '#FFFFFFFF' decals: - 807: -12,-26 + 4: -5,-21 - node: id: BrickTileWhiteCornerNw color: '#FFFFFFFF' decals: - 806: -14,-26 + 5: -7,-21 - node: id: BrickTileWhiteCornerSe color: '#FFFFFFFF' decals: - 809: -12,-28 + 7: -5,-23 - node: id: BrickTileWhiteCornerSw color: '#FFFFFFFF' decals: - 808: -14,-28 + 6: -7,-23 - node: id: BrickTileWhiteLineE color: '#FFFFFFFF' decals: - 810: -12,-27 + 11: -5,-22 - node: id: BrickTileWhiteLineN color: '#FFFFFFFF' decals: - 813: -13,-26 + 8: -6,-21 - node: id: BrickTileWhiteLineS color: '#FFFFFFFF' decals: - 812: -13,-28 + 10: -6,-23 - node: id: BrickTileWhiteLineW color: '#FFFFFFFF' decals: - 811: -14,-27 + 9: -7,-22 + - node: + id: CheckerNESW + color: '#D381C968' + decals: + 41: -4,-24 + 42: -6,-25 + 43: -4,-25 + 44: -6,-24 - node: id: Delivery color: '#FFFFFFFF' + angle: 3.141592653589793 rad decals: - 5058: -11,-30 - 5059: -12,-30 - - node: - id: FullTileOverlayGreyscale - color: '#D381C967' - decals: - 3889: -4,-29 - 3890: -5,-29 - 3900: -6,-29 + 26: -7,-19 + 27: -6,-19 - node: id: LoadingArea color: '#FFFFFFFF' + angle: 3.141592653589793 rad decals: - 5054: -12,-31 - 5055: -11,-31 - 5056: -12,-29 - 5057: -11,-29 + 22: -7,-18 + 23: -6,-18 + 24: -7,-20 + 25: -6,-20 - node: - id: LoadingAreaGreyscale - color: '#FFFFFFFF' + id: MiniTileCornerOverlayNE + color: '#D381C926' decals: - 5071: -4,-28 + 17: -4,-28 - node: - id: MiniTileCheckerBOverlay - color: '#D381C933' + id: MiniTileCornerOverlayNW + color: '#D381C926' decals: - 3687: -8,-17 + 16: -5,-28 - node: id: MiniTileCornerOverlaySE - color: '#D381C928' + color: '#D381C926' decals: - 3186: -10,-17 + 15: -4,-29 - node: id: MiniTileCornerOverlaySW - color: '#D381C928' + color: '#D381C926' decals: - 3185: -11,-17 + 14: -5,-29 + - node: + id: MiniTileDarkCornerNe + color: '#FFFFFFFF' + decals: + 33: -9,-27 + 34: -12,-26 + - node: + id: MiniTileDarkInnerNe + color: '#FFFFFFFF' + decals: + 37: -14,-26 + 38: -12,-27 + 39: -9,-28 + - node: + id: MiniTileDarkInnerNw + color: '#FFFFFFFF' + decals: + 40: -6,-28 - node: id: MiniTileDarkLineE color: '#FFFFFFFF' decals: - 3681: -8,-18 + 35: -14,-25 + 36: -14,-24 - node: - id: MiniTileDarkLineW + id: MiniTileDarkLineN color: '#FFFFFFFF' decals: - 3682: -7,-18 + 28: -13,-26 + 29: -11,-27 + 30: -10,-27 + 31: -8,-28 + 32: -7,-28 - node: - id: MiniTileEndOverlayE + id: MiniTileLineOverlayW color: '#D381C933' decals: - 3678: -7,-18 + 51: -8,-17 - node: - id: MiniTileEndOverlayW - color: '#D381C933' - decals: - 3677: -8,-18 - - node: - id: MiniTileInnerOverlayNE - color: '#D381C933' - decals: - 3686: -8,-18 - - node: - id: MiniTileInnerOverlayNW - color: '#D381C933' - decals: - 3685: -7,-18 - - node: - id: MiniTileInnerOverlaySE - color: '#D381C933' - decals: - 3683: -8,-18 - - node: - id: MiniTileInnerOverlaySW - color: '#D381C933' - decals: - 3684: -7,-18 - - node: - id: WarnCornerGreyscaleNE - color: '#D381C996' - decals: - 5074: -4,-20 - - node: - id: WarnCornerGreyscaleNE - color: '#FFFFFFFF' - decals: - 5062: -4,-25 - - node: - id: WarnCornerGreyscaleNW - color: '#FFFFFFFF' - decals: - 5063: -6,-25 - - node: - id: WarnCornerGreyscaleSE - color: '#D381C996' - decals: - 5077: -4,-23 - 5080: -7,-26 - - node: - id: WarnCornerGreyscaleSE - color: '#FFFFFFFF' - decals: - 5066: -4,-27 - - node: - id: WarnCornerSmallGreyscaleNW + id: WarnCornerSmallGreyscaleNE color: '#D381C9FF' decals: - 3120: -8,-24 - 3483: -16,-20 + 50: -11,-25 - node: - id: WarnCornerSmallGreyscaleNW + id: WarnCornerSmallNE color: '#FFFFFFFF' decals: - 5069: -6,-27 + 47: -11,-25 - node: - id: WarnCornerSmallGreyscaleSE - color: '#D381C9FF' - decals: - 3118: -10,-22 - - node: - id: WarnCornerSmallGreyscaleSW - color: '#D381C9FF' - decals: - 3116: -8,-22 - - node: - id: WarnCornerSmallNW + id: WarnLineE color: '#FFFFFFFF' decals: - 3119: -8,-24 - 3473: -16,-20 - - node: - id: WarnCornerSmallSE - color: '#FFFFFFFF' - decals: - 3117: -10,-22 - - node: - id: WarnCornerSmallSW - color: '#FFFFFFFF' - decals: - 3113: -8,-22 - - node: - id: WarnEndGreyscaleW - color: '#FFFFFFFF' - decals: - 5068: -7,-27 + 45: -11,-24 - node: id: WarnLineGreyscaleE - color: '#D381C996' + color: '#D381C9FF' decals: - 5075: -4,-21 - 5076: -4,-22 - 5081: -7,-25 - - node: - id: WarnLineGreyscaleE - color: '#FFFFFFFF' - decals: - 5065: -4,-26 - - node: - id: WarnLineGreyscaleN - color: '#D381C996' - decals: - 5072: -6,-20 - 5073: -5,-20 + 48: -11,-24 - node: id: WarnLineGreyscaleN color: '#D381C9FF' decals: - 5286: -9,-29 - 5287: -8,-29 - - node: - id: WarnLineGreyscaleN - color: '#FFFFFFFF' - decals: - 5064: -5,-25 - - node: - id: WarnLineGreyscaleS - color: '#D381C996' - decals: - 5078: -5,-23 - 5079: -6,-23 + 2: -11,-17 + 3: -10,-17 + 13: -5,-24 + 49: -10,-25 - node: id: WarnLineGreyscaleS color: '#D381C9FF' decals: 3102: -16,-22 - 3114: -9,-22 - - node: - id: WarnLineGreyscaleS - color: '#FFFFFFFF' - decals: - 5061: -5,-27 - 5067: -6,-27 - - node: - id: WarnLineGreyscaleW - color: '#D381C9FF' - decals: - 3115: -8,-23 - - node: - id: WarnLineGreyscaleW - color: '#FFFFFFFF' - decals: - 5060: -6,-26 - node: id: WarnLineN color: '#FFFFFFFF' decals: 3088: -16,-22 - 3111: -9,-22 - node: - id: WarnLineS + id: WarnLineW color: '#FFFFFFFF' decals: - 3112: -8,-23 - - uid: 15417 + 0: -11,-17 + 1: -10,-17 + 12: -5,-24 + 46: -10,-25 + - uid: 17563 components: - type: ChunkEntity root: 2 @@ -41821,7 +41729,7 @@ entities: color: '#52B4E996' decals: 3975: -39,-17 - - uid: 15471 + - uid: 17567 components: - type: ChunkEntity root: 2 @@ -41922,7 +41830,7 @@ entities: color: '#FFFFFFFF' decals: 5192: 13,-43 - - uid: 15478 + - uid: 17568 components: - type: ChunkEntity root: 2 @@ -42179,7 +42087,7 @@ entities: angle: 6.283185307179586 rad decals: 24: 9.606441,-22.615063 - - uid: 15545 + - uid: 17569 components: - type: ChunkEntity root: 2 @@ -42290,7 +42198,7 @@ entities: decals: 5274: 1,-56 5275: 1,-57 - - uid: 15596 + - uid: 17570 components: - type: ChunkEntity root: 2 @@ -42399,7 +42307,17 @@ entities: color: '#FF940093' decals: 1870: 41,-15 - - uid: 15621 + - node: + id: WarnLineGreyscaleN + color: '#439909FF' + decals: + 1: 32,-15 + - node: + id: WarnLineW + color: '#FFFFFFFF' + decals: + 0: 32,-15 + - uid: 17571 components: - type: ChunkEntity root: 2 @@ -42472,7 +42390,7 @@ entities: 231: -15,-67 232: -15,-66 3906: -13,-70 - - uid: 15694 + - uid: 17614 components: - type: ChunkEntity root: 2 @@ -42649,7 +42567,7 @@ entities: decals: 4076: 46,-71 4104: 45,-72 - - uid: 15696 + - uid: 17617 components: - type: ChunkEntity root: 2 @@ -42721,7 +42639,7 @@ entities: decals: 4071: 51,-67 4084: 48,-71 - - uid: 15697 + - uid: 17637 components: - type: ChunkEntity root: 2 @@ -42791,10 +42709,16 @@ entities: color: '#FFFFFFFF' decals: 1762: 42,-19 + - node: + id: BrickTileSteelCornerNw + color: '#FFFFFFFF' + decals: + 0: 33,-28 - node: id: BrickTileSteelCornerSw color: '#FFFFFFFF' decals: + 1: 33,-30 1763: 42,-20 1764: 41,-19 - node: @@ -42818,6 +42742,8 @@ entities: id: BrickTileSteelLineN color: '#FFFFFFFF' decals: + 4: 34,-28 + 5: 35,-28 1787: 47,-20 1788: 46,-20 1789: 45,-20 @@ -42827,6 +42753,8 @@ entities: id: BrickTileSteelLineS color: '#FFFFFFFF' decals: + 2: 34,-30 + 3: 35,-30 1770: 43,-20 1771: 44,-20 1772: 45,-20 @@ -42836,6 +42764,7 @@ entities: id: BrickTileSteelLineW color: '#FFFFFFFF' decals: + 6: 33,-29 1748: 41,-18 1749: 41,-17 - node: @@ -42951,7 +42880,7 @@ entities: 1604: 45,-21 1605: 46,-21 1606: 47,-21 - - uid: 15698 + - uid: 17648 components: - type: ChunkEntity root: 2 @@ -43213,7 +43142,7 @@ entities: color: '#FFFFFFFF' decals: 4514: 20,-25 - - uid: 15699 + - uid: 17682 components: - type: ChunkEntity root: 2 @@ -43383,7 +43312,7 @@ entities: decals: 4632: 73,-48 4633: 72,-48 - - uid: 15700 + - uid: 17693 components: - type: ChunkEntity root: 2 @@ -43716,7 +43645,7 @@ entities: decals: 4529: 59,-45 4530: 60,-45 - - uid: 15790 + - uid: 17694 components: - type: ChunkEntity root: 2 @@ -43825,7 +43754,7 @@ entities: color: '#FFFFFFFF' decals: 5328: -16,-57 - - uid: 15849 + - uid: 17716 components: - type: ChunkEntity root: 2 @@ -43978,7 +43907,7 @@ entities: 5042: -7,-34 5043: -6,-34 5044: -5,-34 - - uid: 15852 + - uid: 17730 components: - type: ChunkEntity root: 2 @@ -44117,7 +44046,7 @@ entities: decals: 5123: -30,-50 5124: -30,-49 - - uid: 15853 + - uid: 17732 components: - type: ChunkEntity root: 2 @@ -44267,7 +44196,7 @@ entities: 5339: 8,-74 5340: 9,-74 5341: 10,-74 - - uid: 15856 + - uid: 17784 components: - type: ChunkEntity root: 2 @@ -44358,7 +44287,7 @@ entities: color: '#52B4E996' decals: 3976: -38,-15 - - uid: 15857 + - uid: 17794 components: - type: ChunkEntity root: 2 @@ -44510,7 +44439,7 @@ entities: color: '#FFFFFFFF' decals: 5322: 23,-69 - - uid: 15912 + - uid: 17795 components: - type: ChunkEntity root: 2 @@ -44632,7 +44561,7 @@ entities: color: '#FFFFFFFF' decals: 5560: 24,-53 - - uid: 15913 + - uid: 17842 components: - type: ChunkEntity root: 2 @@ -44768,7 +44697,6 @@ entities: color: '#D381C9FF' decals: 3124: -18,-24 - 3482: -18,-20 - node: id: WarnCornerSmallGreyscaleNW color: '#D381C9FF' @@ -44779,7 +44707,6 @@ entities: color: '#D381C9FF' decals: 3107: -18,-22 - 3481: -18,-17 - node: id: WarnCornerSmallGreyscaleSW color: '#D381C9FF' @@ -44790,7 +44717,6 @@ entities: color: '#FFFFFFFF' decals: 3122: -18,-24 - 3472: -18,-20 - node: id: WarnCornerSmallNW color: '#FFFFFFFF' @@ -44801,7 +44727,6 @@ entities: color: '#FFFFFFFF' decals: 3092: -18,-22 - 3471: -18,-17 - node: id: WarnCornerSmallSW color: '#FFFFFFFF' @@ -44812,24 +44737,19 @@ entities: color: '#FFFFFFFF' decals: 3090: -18,-23 - 3468: -18,-19 - 3469: -18,-18 5345: -28,-27 - node: id: WarnLineGreyscaleE color: '#D381C9FF' decals: 3106: -18,-23 - 3475: -18,-19 - 3476: -18,-18 5346: -28,-27 - node: id: WarnLineGreyscaleN color: '#D381C9FF' decals: - 3477: -17,-20 - 3479: -17,-17 - 3480: -18,-17 + 2: -18,-17 + 3: -17,-17 - node: id: WarnLineGreyscaleS color: '#D381C9FF' @@ -44837,7 +44757,6 @@ entities: 3101: -17,-22 3103: -19,-22 3104: -20,-22 - 3478: -17,-17 - node: id: WarnLineGreyscaleW color: '#D381C9FF' @@ -44850,7 +44769,6 @@ entities: 3085: -20,-22 3086: -19,-22 3087: -17,-22 - 3470: -17,-17 - node: id: WarnLineS color: '#FFFFFFFF' @@ -44860,10 +44778,9 @@ entities: id: WarnLineW color: '#FFFFFFFF' decals: - 3465: -18,-17 - 3466: -17,-17 - 3467: -17,-20 - - uid: 16021 + 0: -18,-17 + 1: -17,-17 + - uid: 17873 components: - type: ChunkEntity root: 2 @@ -44873,11 +44790,6 @@ entities: decals: version: 1 nodes: - - node: - id: BotGreyscale - color: '#D381C9FF' - decals: - 3560: -28,-78 - node: id: BoxGreyscale color: '#D381C9FF' @@ -45016,7 +44928,7 @@ entities: angle: 4.71238898038469 rad decals: 3907: -18,-70 - - uid: 16045 + - uid: 17874 components: - type: ChunkEntity root: 2 @@ -45158,7 +45070,7 @@ entities: 3037: 18,-101 3038: 18,-100 3039: 18,-99 - - uid: 16046 + - uid: 17875 components: - type: ChunkEntity root: 2 @@ -45199,14 +45111,20 @@ entities: color: '#FFFFFFFF' decals: 2240: 26,-12 + - node: + id: WarnLineGreyscaleN + color: '#439909FF' + decals: + 1: 31,-15 - node: id: WarnLineW color: '#FFFFFFFF' decals: + 0: 31,-15 2237: 23,-12 2238: 24,-12 2239: 25,-12 - - uid: 16047 + - uid: 17876 components: - type: ChunkEntity root: 2 @@ -45340,7 +45258,7 @@ entities: 2335: 14,-83 2337: 10,-83 2366: 12,-83 - - uid: 16164 + - uid: 17916 components: - type: ChunkEntity root: 2 @@ -45440,7 +45358,12 @@ entities: decals: 4144: 94,-47 4145: 94,-45 - - uid: 16175 + - node: + id: WarnLineN + color: '#FFFFFFFF' + decals: + 12: 95,-44 + - uid: 17918 components: - type: ChunkEntity root: 2 @@ -45462,11 +45385,6 @@ entities: decals: 4134: 92,-50 4135: 93,-49 - - node: - id: BrickTileDarkEndS - color: '#FFFFFFFF' - decals: - 9: 85,-51 - node: id: BrickTileDarkInnerNw color: '#FFFFFFFF' @@ -45499,7 +45417,7 @@ entities: 3: 86,-50 4130: 90,-50 4131: 91,-50 - - uid: 16193 + - uid: 17988 components: - type: ChunkEntity root: 2 @@ -45536,7 +45454,7 @@ entities: color: '#FFFFFFFF' decals: 5456: 32,-82 - - uid: 16449 + - uid: 18010 components: - type: ChunkEntity root: 2 @@ -45607,7 +45525,7 @@ entities: 5109: -37,-47 5112: -35,-47 5113: -36,-47 - - uid: 16535 + - uid: 18012 components: - type: ChunkEntity root: 2 @@ -45678,7 +45596,7 @@ entities: cleanable: True decals: 5466: -40,-77 - - uid: 16606 + - uid: 18101 components: - type: ChunkEntity root: 2 @@ -45774,7 +45692,7 @@ entities: color: '#48D256FF' decals: 4836: 39,-48 - - uid: 16856 + - uid: 18102 components: - type: ChunkEntity root: 2 @@ -45790,7 +45708,7 @@ entities: cleanable: True decals: 950: 80,-68 - - uid: 16859 + - uid: 18109 components: - type: ChunkEntity root: 2 @@ -45807,7 +45725,7 @@ entities: decals: 958: 80,-29 960: 80,-27 - - uid: 16871 + - uid: 18149 components: - type: ChunkEntity root: 2 @@ -45892,7 +45810,7 @@ entities: decals: 311: 31,-39 312: 31,-38 - - uid: 17098 + - uid: 18150 components: - type: ChunkEntity root: 2 @@ -45922,7 +45840,7 @@ entities: cleanable: True decals: 1519: -53,-69 - - uid: 17099 + - uid: 18216 components: - type: ChunkEntity root: 2 @@ -45963,7 +45881,7 @@ entities: decals: 4167: 76,-65 4168: 76,-66 - - uid: 17103 + - uid: 18217 components: - type: ChunkEntity root: 2 @@ -45992,7 +45910,7 @@ entities: 3996: 52,-62 3997: 53,-63 3998: 53,-64 - - uid: 17108 + - uid: 18219 components: - type: ChunkEntity root: 2 @@ -46030,7 +45948,7 @@ entities: color: '#FFFFFFFF' decals: 1584: -57,-27 - - uid: 17113 + - uid: 18249 components: - type: ChunkEntity root: 2 @@ -46156,7 +46074,7 @@ entities: color: '#FFFFFFFF' decals: 4627: 72,-50 - - uid: 17114 + - uid: 18251 components: - type: ChunkEntity root: 2 @@ -46222,7 +46140,7 @@ entities: decals: 789: 42,-52 790: 42,-51 - - uid: 17115 + - uid: 18266 components: - type: ChunkEntity root: 2 @@ -46269,7 +46187,7 @@ entities: decals: 5121: -30,-43 5122: -30,-42 - - uid: 17173 + - uid: 18303 components: - type: ChunkEntity root: 2 @@ -46299,7 +46217,7 @@ entities: 2529: -56,-64 2530: -56,-63 2531: -56,-62 - - uid: 17247 + - uid: 18319 components: - type: ChunkEntity root: 2 @@ -46350,7 +46268,7 @@ entities: decals: 5117: -35,-50 5118: -35,-49 - - uid: 17248 + - uid: 18320 components: - type: ChunkEntity root: 2 @@ -46370,6 +46288,11 @@ entities: color: '#FFFFFFFF' decals: 140: -50,-45 + - uid: 18324 + components: + - type: ChunkEntity + root: 2 + chunk: -1,-6 - proto: ChurchBell entities: - uid: 2053 @@ -46437,11 +46360,17 @@ entities: pos: -47.31308,-45.27867 - proto: CircuitImprinter entities: - - uid: 5897 + - uid: 8791 components: - type: Transform parent: 2 - pos: -3.5,-21.5 + pos: -14.5,-27.5 + - type: TechnologyDatabase + supportedDisciplines: + - Industrial + - Arsenal + - Experimental + - CivilianServices - proto: CleanerDispenser entities: - uid: 5125 @@ -46658,7 +46587,7 @@ entities: components: - type: Transform parent: 2 - pos: 9.5,2.5 + pos: 10.5,-1.5 - uid: 7701 components: - type: Transform @@ -46726,6 +46655,11 @@ entities: - type: Transform parent: 2 pos: -48.5,-35.5 + - uid: 5835 + components: + - type: Transform + parent: 2 + pos: 9.5,2.5 - uid: 5911 components: - type: Transform @@ -46771,11 +46705,6 @@ entities: - type: Transform parent: 2 pos: 36.5,-75.5 - - uid: 17296 - components: - - type: Transform - parent: 2 - pos: 10.5,-1.5 - uid: 17368 components: - type: Transform @@ -46968,11 +46897,6 @@ entities: - type: Transform parent: 2 pos: 64.5,-70.5 - - uid: 9913 - components: - - type: Transform - parent: 2 - pos: 81.5,-17.5 - uid: 10672 components: - type: Transform @@ -47023,6 +46947,11 @@ entities: - type: Transform parent: 2 pos: -5.5,-79.5 + - uid: 17163 + components: + - type: Transform + parent: 2 + pos: 82.5,-18.5 - uid: 18250 components: - type: Transform @@ -47194,30 +47123,11 @@ entities: pos: 21.376263,-30.920355 - proto: ClothingBackpackDuffelSurgeryFilled entities: - - uid: 5078 + - uid: 15892 components: - type: Transform parent: 2 - pos: -4.7491665,-28.145197 - - type: GroupExamine - group: - - title: null - icon: /Textures/Interface/examine-star.png - hoverMessage: "" - entries: - - priority: 0 - message: >- - It provides the following protection: - - - [color=orange]Explosion[/color] damage [color=white]to contents[/color] reduced by [color=lightblue]10%[/color]. - component: Armor - - priority: 0 - message: This decreases your running speed by [color=yellow]10%[/color]. - component: ClothingSpeedModifier - contextText: verb-examine-group-other - components: - - Armor - - ClothingSpeedModifier + pos: -5.5449595,-24.209423 - proto: ClothingBackpackSatchelChemistry entities: - uid: 2201 @@ -47244,6 +47154,13 @@ entities: - type: Transform parent: 2 pos: 2.510798,-79.082664 +- proto: ClothingBeltUtility + entities: + - uid: 14681 + components: + - type: Transform + parent: 2 + pos: -14.216357,-21.50285 - proto: ClothingBeltUtilityEngineering entities: - uid: 3767 @@ -47263,11 +47180,6 @@ entities: - type: Transform parent: 2 pos: -52.66242,-51.451393 - - uid: 10560 - components: - - type: Transform - parent: 2 - pos: -12.829791,-21.22573 - proto: ClothingEyesGlasses entities: - uid: 6662 @@ -47313,11 +47225,11 @@ entities: pos: -41.45619,-26.591906 - proto: ClothingEyesHudDiagnostic entities: - - uid: 19299 + - uid: 14130 components: - type: Transform parent: 2 - pos: -9.340807,-26.550825 + pos: -14.742444,-21.49598 - proto: ClothingEyesHudMedical entities: - uid: 7754 @@ -47375,13 +47287,6 @@ entities: - type: Transform parent: 2 pos: 47.5,-27.5 -- proto: ClothingHandsGlovesLatex - entities: - - uid: 7432 - components: - - type: Transform - parent: 2 - pos: -4.45287,-28.515823 - proto: ClothingHandsGlovesMercFingerless entities: - uid: 7688 @@ -47601,11 +47506,11 @@ entities: pos: 34.47364,-50.396587 - proto: ClothingHeadHatWelding entities: - - uid: 7198 + - uid: 631 components: - type: Transform parent: 2 - pos: -12.630263,-28.354128 + pos: -3.6838703,-22.477245 - uid: 18339 components: - type: Transform @@ -47632,6 +47537,13 @@ entities: - type: Transform parent: 2 pos: 13.455537,-101.396515 +- proto: ClothingHeadHelmetBone + entities: + - uid: 483 + components: + - type: Transform + parent: 2 + pos: 78.40473,-25.409029 - proto: ClothingHeadHelmetEVA entities: - uid: 7441 @@ -47794,11 +47706,11 @@ entities: pos: -21.457745,-46.808807 - proto: ClothingOuterApronChef entities: - - uid: 13574 + - uid: 15894 components: - type: Transform parent: 2 - pos: -5.415833,-28.400003 + pos: -5.4355845,-24.52214 - proto: ClothingOuterArmorBulletproof entities: - uid: 3326 @@ -47854,21 +47766,21 @@ entities: pos: -38.381638,-62.42696 - proto: ClothingOuterCoatLab entities: + - uid: 12911 + components: + - type: Transform + parent: 2 + pos: -13.637653,-21.40556 + - uid: 13574 + components: + - type: Transform + parent: 2 + pos: -13.901543,-21.280472 - uid: 16581 components: - type: Transform parent: 2 pos: 19.48025,-17.483467 - - uid: 19195 - components: - - type: Transform - parent: 2 - pos: -10.987556,-21.35373 - - uid: 19196 - components: - - type: Transform - parent: 2 - pos: -10.737556,-21.166098 - proto: ClothingOuterDameDane entities: - uid: 6170 @@ -48099,6 +48011,13 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 42.513027,-17.663967 +- proto: ClothingUniformJumpskirtSeniorOfficer + entities: + - uid: 17296 + components: + - type: Transform + parent: 2 + pos: 9.422632,-47.660923 - proto: ClothingUniformJumpskirtWeb entities: - uid: 249 @@ -48202,6 +48121,18 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: -56.5,-25.5 + - uid: 16932 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 43.5,-77.5 + - uid: 17081 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 45.5,-78.5 - uid: 17713 components: - type: Transform @@ -48214,12 +48145,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 2.5,-79.5 - - uid: 17716 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 42.5,-77.5 - uid: 18036 components: - type: Transform @@ -48267,6 +48192,12 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: -35.5,-29.5 + - uid: 17115 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -2.5,-44.5 - uid: 17712 components: - type: Transform @@ -48455,11 +48386,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 9.5,-22.5 - - uid: 6705 - components: - - type: Transform - parent: 2 - pos: -4.5,-24.5 - proto: ComputerBroken entities: - uid: 13796 @@ -48487,11 +48413,21 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 10.5,-88.5 + - type: DeviceLinkSource + linkedPorts: + 17301: + - - OrderSender + - OrderReceiver - uid: 9462 components: - type: Transform parent: 2 pos: 24.5,-89.5 + - type: DeviceLinkSource + linkedPorts: + 17301: + - - OrderSender + - OrderReceiver - uid: 13189 components: - type: Transform @@ -48528,12 +48464,11 @@ entities: pos: 21.5,-67.5 - proto: ComputerCargoOrdersScience entities: - - uid: 19205 + - uid: 9114 components: - type: Transform parent: 2 - rot: 1.5707963267948966 rad - pos: -8.5,-19.5 + pos: -8.5,-25.5 - proto: ComputerCargoOrdersSecurity entities: - uid: 9332 @@ -48752,18 +48687,24 @@ entities: pos: 53.5,-103.5 - proto: ComputerResearchAndDevelopment entities: - - uid: 5053 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -6.5,-19.5 - uid: 5534 components: - type: Transform parent: 2 rot: 3.141592653589793 rad pos: -51.5,-54.5 + - uid: 15545 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -10.5,-27.5 + - type: TechnologyDatabase + supportedDisciplines: + - Industrial + - Arsenal + - Experimental + - CivilianServices - proto: ComputerRoboticsControl entities: - uid: 15880 @@ -49584,6 +49525,11 @@ entities: ent: null showEnts: False occludes: True + - uid: 9977 + components: + - type: Transform + parent: 2 + pos: -3.5,-24.5 - uid: 12842 components: - type: Transform @@ -49594,6 +49540,13 @@ entities: - type: Transform parent: 2 pos: 10.5,-25.5 +- proto: CrateFunBoxing + entities: + - uid: 17114 + components: + - type: Transform + parent: 2 + pos: -4.5,-43.5 - proto: CrateFunLizardPlushieBulk entities: - uid: 16273 @@ -49601,6 +49554,13 @@ entities: - type: Transform parent: 2 pos: 52.5,-16.5 +- proto: CrateFunPlushie + entities: + - uid: 17312 + components: + - type: Transform + parent: 2 + pos: 5.5,-69.5 - proto: CrateGenericSteel entities: - uid: 2004 @@ -49673,11 +49633,11 @@ entities: pos: 5.5,-19.5 - proto: CrateLockBoxScience entities: - - uid: 536 + - uid: 610 components: - type: Transform parent: 2 - pos: -10.5,-15.5 + pos: -4.5,-26.5 - uid: 4348 components: - type: Transform @@ -49847,11 +49807,11 @@ entities: - type: Transform parent: 2 pos: 85.45596,-22.555117 - - uid: 8702 + - uid: 15890 components: - type: Transform parent: 2 - pos: -5.39322,-27.521309 + pos: -5.3574595,-23.662169 - uid: 17437 components: - type: Transform @@ -50722,11 +50682,6 @@ entities: - type: Transform parent: 2 pos: 2.5171201,-53.46943 - - uid: 10527 - components: - - type: Transform - parent: 2 - pos: -7.595062,-18.429745 - proto: DiceBag entities: - uid: 6052 @@ -50743,12 +50698,6 @@ entities: pos: 35.5,-11.5 - proto: DisposalBend entities: - - uid: 377 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -14.5,-20.5 - uid: 1189 components: - type: Transform @@ -51056,11 +51005,40 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 62.5,-39.5 + - uid: 9574 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -9.5,-20.5 - uid: 9675 components: - type: Transform parent: 2 pos: 62.5,-38.5 + - uid: 9933 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -11.5,-26.5 + - uid: 9966 + components: + - type: Transform + parent: 2 + pos: -8.5,-26.5 + - uid: 9968 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -8.5,-30.5 + - uid: 9972 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -11.5,-20.5 - uid: 10333 components: - type: Transform @@ -51357,23 +51335,6 @@ entities: - type: Transform parent: 2 pos: 12.5,-11.5 - - uid: 15896 - components: - - type: Transform - parent: 2 - pos: -7.5,-20.5 - - uid: 15906 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -14.5,-25.5 - - uid: 15907 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: -7.5,-30.5 - uid: 15961 components: - type: Transform @@ -51660,11 +51621,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 31.5,-40.5 - - uid: 5496 - components: - - type: Transform - parent: 2 - pos: -7.5,-29.5 - uid: 7894 components: - type: Transform @@ -51722,11 +51678,6 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: -12.5,-52.5 - - uid: 15898 - components: - - type: Transform - parent: 2 - pos: -7.5,-25.5 - uid: 15962 components: - type: Transform @@ -51762,6 +51713,11 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: -15.5,-58.5 + - uid: 9418 + components: + - type: Transform + parent: 2 + pos: -11.5,-23.5 - uid: 9669 components: - type: Transform @@ -51826,30 +51782,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 22.5,-58.5 - - uid: 378 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -10.5,-20.5 - - uid: 379 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -11.5,-20.5 - - uid: 528 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -12.5,-20.5 - - uid: 533 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -13.5,-20.5 - uid: 1462 components: - type: Transform @@ -51868,12 +51800,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 3.5,-67.5 - - uid: 2108 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: -14.5,-27.5 - uid: 2109 components: - type: Transform @@ -51942,12 +51868,6 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 31.5,-38.5 - - uid: 5096 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -9.5,-20.5 - uid: 5381 components: - type: Transform @@ -51969,11 +51889,6 @@ entities: - type: Transform parent: 2 pos: -21.5,-50.5 - - uid: 5792 - components: - - type: Transform - parent: 2 - pos: -7.5,-28.5 - uid: 6084 components: - type: Transform @@ -52375,6 +52290,11 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: -35.5,-65.5 + - uid: 8840 + components: + - type: Transform + parent: 2 + pos: -11.5,-25.5 - uid: 8842 components: - type: Transform @@ -52519,6 +52439,12 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 50.5,-76.5 + - uid: 9298 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -9.5,-26.5 - uid: 9334 components: - type: Transform @@ -52530,6 +52456,23 @@ entities: - type: Transform parent: 2 pos: -2.5,-33.5 + - uid: 9545 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -10.5,-20.5 + - uid: 9605 + components: + - type: Transform + parent: 2 + pos: -11.5,-21.5 + - uid: 9608 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -8.5,-29.5 - uid: 9676 components: - type: Transform @@ -52572,6 +52515,40 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 4.5,-43.5 + - uid: 9940 + components: + - type: Transform + parent: 2 + pos: -11.5,-24.5 + - uid: 9965 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -10.5,-26.5 + - uid: 9969 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -8.5,-27.5 + - uid: 9970 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -8.5,-28.5 + - uid: 9971 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -7.5,-30.5 + - uid: 9976 + components: + - type: Transform + parent: 2 + pos: -11.5,-22.5 - uid: 10280 components: - type: Transform @@ -54531,83 +54508,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 8.5,-6.5 - - uid: 15888 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -8.5,-20.5 - - uid: 15889 - components: - - type: Transform - parent: 2 - pos: -7.5,-21.5 - - uid: 15890 - components: - - type: Transform - parent: 2 - pos: -7.5,-22.5 - - uid: 15891 - components: - - type: Transform - parent: 2 - pos: -7.5,-23.5 - - uid: 15892 - components: - - type: Transform - parent: 2 - pos: -7.5,-24.5 - - uid: 15894 - components: - - type: Transform - parent: 2 - pos: -7.5,-26.5 - - uid: 15895 - components: - - type: Transform - parent: 2 - pos: -7.5,-27.5 - - uid: 15899 - components: - - type: Transform - parent: 2 - pos: -14.5,-26.5 - - uid: 15900 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -13.5,-25.5 - - uid: 15901 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -12.5,-25.5 - - uid: 15902 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -11.5,-25.5 - - uid: 15903 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -10.5,-25.5 - - uid: 15904 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -9.5,-25.5 - - uid: 15905 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -8.5,-25.5 - uid: 15919 components: - type: Transform @@ -56183,12 +56083,6 @@ entities: pos: 74.5,-61.5 - proto: DisposalTrunk entities: - - uid: 535 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: -14.5,-21.5 - uid: 1459 components: - type: Transform @@ -56207,12 +56101,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 21.5,-58.5 - - uid: 2154 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: -14.5,-28.5 - uid: 2800 components: - type: Transform @@ -56230,12 +56118,6 @@ entities: - type: Transform parent: 2 pos: 31.5,-37.5 - - uid: 5801 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -8.5,-29.5 - uid: 6577 components: - type: Transform @@ -56248,6 +56130,12 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 20.5,-25.5 + - uid: 7443 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -10.5,-23.5 - uid: 8960 components: - type: Transform @@ -56264,6 +56152,11 @@ entities: - type: Transform parent: 2 pos: 54.5,-41.5 + - uid: 9600 + components: + - type: Transform + parent: 2 + pos: -9.5,-19.5 - uid: 10290 components: - type: Transform @@ -56457,11 +56350,6 @@ entities: pos: 44.5,-44.5 - proto: DisposalUnit entities: - - uid: 375 - components: - - type: Transform - parent: 2 - pos: -14.5,-21.5 - uid: 1883 components: - type: Transform @@ -56512,11 +56400,6 @@ entities: - type: Transform parent: 2 pos: 29.5,-17.5 - - uid: 5007 - components: - - type: Transform - parent: 2 - pos: -8.5,-29.5 - uid: 5170 components: - type: Transform @@ -56644,11 +56527,16 @@ entities: - type: Transform parent: 2 pos: 17.5,-65.5 - - uid: 14395 + - uid: 14926 components: - type: Transform parent: 2 - pos: -14.5,-28.5 + pos: -10.5,-23.5 + - uid: 14928 + components: + - type: Transform + parent: 2 + pos: -9.5,-19.5 - uid: 15539 components: - type: Transform @@ -57153,11 +57041,11 @@ entities: pos: -25.331253,-38.492313 - proto: DrinkSpaceLube entities: - - uid: 19296 + - uid: 485 components: - type: Transform parent: 2 - pos: -3.766451,-19.48293 + pos: -14.233168,-28.271736 - proto: DrinkTeacupEmpty entities: - uid: 20129 @@ -57277,12 +57165,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: -0.5,-3.5 - - uid: 4982 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -25.5,-24.5 - uid: 5462 components: - type: Transform @@ -57479,12 +57361,6 @@ entities: - type: Transform parent: 2 pos: -1.5,-16.5 - - uid: 14392 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: -12.5,-21.5 - uid: 15153 components: - type: Transform @@ -57755,6 +57631,20 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 63.5,-26.5 +- proto: EnergyGateAirtight + entities: + - uid: 17425 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 6.5,2.5 + - uid: 17427 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -0.5,2.5 - proto: EnergyGateGenpopEnter entities: - uid: 5670 @@ -57795,11 +57685,17 @@ entities: pos: 65.5,-26.5 - proto: ExosuitFabricator entities: - - uid: 1690 + - uid: 15404 components: - type: Transform parent: 2 - pos: -14.5,-26.5 + pos: -3.5,-21.5 + - type: TechnologyDatabase + supportedDisciplines: + - Industrial + - Arsenal + - Experimental + - CivilianServices - proto: ExtinguisherCabinetFilled entities: - uid: 5781 @@ -58038,6 +57934,11 @@ entities: - type: Transform parent: 2 pos: 49.5,-36.5 + - uid: 3095 + components: + - type: Transform + parent: 2 + pos: -16.5,-24.5 - uid: 5274 components: - type: Transform @@ -58058,11 +57959,6 @@ entities: - type: Transform parent: 2 pos: 73.5,-47.5 - - uid: 17427 - components: - - type: Transform - parent: 2 - pos: -16.5,-26.5 - uid: 20108 components: - type: Transform @@ -58424,7 +58320,7 @@ entities: components: - type: Transform parent: 2 - pos: -3.5,-29.5 + pos: -12.5,-29.5 - type: DeviceList devices: - 8524 @@ -58497,12 +58393,10 @@ entities: - 10479 - 10480 - 10481 - - 7442 - - 8107 - 19830 - 19829 - 19828 - - 16242 + - 16164 - uid: 9202 components: - type: Transform @@ -58806,6 +58700,22 @@ entities: - 17153 - 17130 - 17129 + - uid: 15895 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -9.5,-22.5 + - type: DeviceList + devices: + - 379 + - 16047 + - 16117 + - 16156 + - 16164 + - 1112 + - 18761 + - 44 - uid: 16341 components: - type: Transform @@ -58867,6 +58777,32 @@ entities: - 19831 - 19832 - 19833 + - uid: 16449 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -15.5,-27.5 + - type: DeviceList + devices: + - 8488 + - 8489 + - 379 + - 16047 + - 16522 + - 16514 + - 16513 + - 16535 + - uid: 16606 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -8.5,-19.5 + - type: DeviceList + devices: + - 16156 + - 16117 - uid: 16800 components: - type: Transform @@ -58905,19 +58841,6 @@ entities: - 19825 - 19892 - 19891 - - uid: 17794 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -8.5,-26.5 - - type: DeviceList - devices: - - 8489 - - 8488 - - 7440 - - 7443 - - 19204 - uid: 17872 components: - type: Transform @@ -58970,21 +58893,6 @@ entities: - 16165 - 14594 - 14595 - - uid: 19201 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: -13.5,-22.5 - - type: DeviceList - devices: - - 1112 - - 18761 - - 44 - - 7440 - - 16242 - - 8107 - - 19203 - uid: 19247 components: - type: Transform @@ -59117,6 +59025,8 @@ entities: - 8400 - 8399 - 19920 + - 17099 + - 17103 - uid: 20201 components: - type: Transform @@ -59727,6 +59637,24 @@ entities: deviceLists: - 14590 - 14591 + - uid: 17099 + components: + - type: Transform + parent: 2 + pos: 50.5,-72.5 + - type: DeviceNetwork + deviceLists: + - 7310 + - 19921 + - uid: 17103 + components: + - type: Transform + parent: 2 + pos: 51.5,-72.5 + - type: DeviceNetwork + deviceLists: + - 7310 + - 19921 - uid: 17129 components: - type: Transform @@ -59854,8 +59782,8 @@ entities: deviceLists: - 9202 - 16120 - - 19201 - 19200 + - 15895 - uid: 262 components: - type: Transform @@ -59866,6 +59794,17 @@ entities: - 18864 - 16807 - 2197 + - uid: 379 + components: + - type: Transform + parent: 2 + pos: -12.5,-22.5 + - type: DeviceNetwork + deviceLists: + - 16449 + - 16438 + - 15895 + - 19200 - uid: 530 components: - type: Transform @@ -59896,8 +59835,8 @@ entities: - type: DeviceNetwork deviceLists: - 19200 - - 19201 - 8130 + - 15895 - uid: 1595 components: - type: Transform @@ -60431,36 +60370,6 @@ entities: - 18059 - 10791 - 579 - - uid: 7440 - components: - - type: Transform - parent: 2 - pos: -7.5,-23.5 - - type: DeviceNetwork - deviceLists: - - 19201 - - 19200 - - 1075 - - 17794 - - uid: 7442 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -8.5,-16.5 - - type: DeviceNetwork - deviceLists: - - 3897 - - 9200 - - uid: 7443 - components: - - type: Transform - parent: 2 - pos: -7.5,-27.5 - - type: DeviceNetwork - deviceLists: - - 1075 - - 17794 - uid: 7459 components: - type: Transform @@ -60492,17 +60401,6 @@ entities: - 9873 - 16354 - 16355 - - uid: 8107 - components: - - type: Transform - parent: 2 - pos: -6.5,-18.5 - - type: DeviceNetwork - deviceLists: - - 19201 - - 19200 - - 9200 - - 3897 - uid: 8402 components: - type: Transform @@ -60730,13 +60628,13 @@ entities: - type: Transform parent: 2 rot: -1.5707963267948966 rad - pos: -15.5,-24.5 + pos: -15.5,-26.5 - type: DeviceNetwork deviceLists: - - 1075 - 16120 - 9202 - - 17794 + - 16449 + - 16438 - uid: 8489 components: - type: Transform @@ -60745,10 +60643,10 @@ entities: pos: -15.5,-25.5 - type: DeviceNetwork deviceLists: - - 1075 - 16120 - 9202 - - 17794 + - 16449 + - 16438 - uid: 8492 components: - type: Transform @@ -61531,6 +61429,53 @@ entities: deviceLists: - 9178 - 1876 + - uid: 16047 + components: + - type: Transform + parent: 2 + pos: -11.5,-22.5 + - type: DeviceNetwork + deviceLists: + - 16449 + - 16438 + - 15895 + - 19200 + - uid: 16117 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -8.5,-21.5 + - type: DeviceNetwork + deviceLists: + - 15895 + - 19200 + - 16606 + - 16647 + - uid: 16156 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -8.5,-20.5 + - type: DeviceNetwork + deviceLists: + - 15895 + - 19200 + - 16606 + - 16647 + - uid: 16164 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -8.5,-16.5 + - type: DeviceNetwork + deviceLists: + - 15895 + - 19200 + - 3897 + - 9200 - uid: 16165 components: - type: Transform @@ -61575,17 +61520,6 @@ entities: - 16354 - 16357 - 16356 - - uid: 16242 - components: - - type: Transform - parent: 2 - pos: -7.5,-18.5 - - type: DeviceNetwork - deviceLists: - - 19200 - - 19201 - - 3897 - - 9200 - uid: 16247 components: - type: Transform @@ -61689,11 +61623,61 @@ entities: - type: DeviceNetwork deviceLists: - 579 + - uid: 16513 + components: + - type: Transform + parent: 2 + pos: -10.5,-28.5 + - type: DeviceNetwork + deviceLists: + - 16449 + - 16438 + - uid: 16514 + components: + - type: Transform + parent: 2 + pos: -9.5,-28.5 + - type: DeviceNetwork + deviceLists: + - 16449 + - 16438 + - uid: 16522 + components: + - type: Transform + parent: 2 + pos: -8.5,-28.5 + - type: DeviceNetwork + deviceLists: + - 16449 + - 16438 + - uid: 16535 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -5.5,-27.5 + - type: DeviceNetwork + deviceLists: + - 16449 + - 16438 - uid: 17101 components: - type: Transform parent: 2 pos: -35.5,-74.5 + - uid: 17306 + components: + - type: Transform + parent: 2 + pos: 31.5,-13.5 + - type: DeviceNetwork + deviceLists: + - 16363 + - uid: 17387 + components: + - type: Transform + parent: 2 + pos: 38.5,-34.5 - uid: 18091 components: - type: Transform @@ -61831,9 +61815,9 @@ entities: pos: -20.5,-20.5 - type: DeviceNetwork deviceLists: - - 19201 - 19200 - 16603 + - 15895 - uid: 18762 components: - type: Transform @@ -61920,24 +61904,6 @@ entities: - type: Transform parent: 2 pos: 48.5,-42.5 - - uid: 19203 - components: - - type: Transform - parent: 2 - pos: -10.5,-17.5 - - type: DeviceNetwork - deviceLists: - - 19200 - - 19201 - - uid: 19204 - components: - - type: Transform - parent: 2 - pos: -13.5,-29.5 - - type: DeviceNetwork - deviceLists: - - 1075 - - 17794 - uid: 19234 components: - type: Transform @@ -63030,11 +62996,18 @@ entities: pos: 19.5,-73.5 - type: Fixtures fixtures: {} - - uid: 5075 + - uid: 5082 components: - type: Transform parent: 2 - pos: -4.5,-25.5 + pos: -4.5,-24.5 + - type: Fixtures + fixtures: {} + - uid: 5792 + components: + - type: Transform + parent: 2 + pos: 34.5,-28.5 - type: Fixtures fixtures: {} - uid: 6201 @@ -63360,6 +63333,13 @@ entities: - type: Transform parent: 2 pos: 35.688534,-91.4795 +- proto: FoodDonutPink + entities: + - uid: 17316 + components: + - type: Transform + parent: 2 + pos: 6.409142,-82.32676 - proto: FoodEgg entities: - uid: 18457 @@ -63425,6 +63405,13 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage +- proto: FoodFrozenSundae + entities: + - uid: 16925 + components: + - type: Transform + parent: 2 + pos: -39.406727,-20.732283 - proto: FoodLily entities: - uid: 17556 @@ -63439,6 +63426,11 @@ entities: - type: Transform parent: 2 pos: 43.5,-29.5 + - uid: 17325 + components: + - type: Transform + parent: 2 + pos: 35.568897,-28.652658 - proto: FoodOrange entities: - uid: 17558 @@ -63534,11 +63526,11 @@ entities: pos: 31.474777,-41.36227 - proto: FoodSnackPopcorn entities: - - uid: 2199 + - uid: 11431 components: - type: Transform parent: 2 - pos: -1.6291262,-26.290157 + pos: -1.365492,-23.480299 - proto: FoodSnackSemki entities: - uid: 6219 @@ -63928,6 +63920,14 @@ entities: pos: -22.5,-45.5 - type: AtmosPipeColor color: '#990000FF' + - uid: 5078 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -10.5,-31.5 + - type: AtmosPipeColor + color: '#990000FF' - uid: 5834 components: - type: Transform @@ -63945,7 +63945,7 @@ entities: parent: 2 pos: 63.5,-16.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6471 components: - type: Transform @@ -63976,7 +63976,7 @@ entities: parent: 2 pos: 65.5,-17.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 7132 components: - type: Transform @@ -64136,6 +64136,8 @@ entities: - type: Transform parent: 2 pos: 75.5,-23.5 + - type: AtmosPipeColor + color: '#990000FF' - uid: 8072 components: - type: Transform @@ -64377,7 +64379,7 @@ entities: parent: 2 pos: 61.5,-15.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9210 components: - type: Transform @@ -64399,7 +64401,7 @@ entities: rot: 3.141592653589793 rad pos: 63.5,-17.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9317 components: - type: Transform @@ -64422,7 +64424,7 @@ entities: rot: 3.141592653589793 rad pos: 61.5,-16.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9424 components: - type: Transform @@ -64686,22 +64688,6 @@ entities: pos: 17.5,-28.5 - type: AtmosPipeColor color: '#990000FF' - - uid: 9980 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -17.5,-25.5 - - type: AtmosPipeColor - color: '#990000FF' - - uid: 9981 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -17.5,-24.5 - - type: AtmosPipeColor - color: '#990000FF' - uid: 9984 components: - type: Transform @@ -64710,19 +64696,11 @@ entities: pos: 4.5,-41.5 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 10023 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: -14.5,-26.5 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 10025 components: - type: Transform parent: 2 - pos: -14.5,-25.5 + pos: -9.5,-26.5 - type: AtmosPipeColor color: '#0055CCFF' - uid: 10047 @@ -64872,7 +64850,7 @@ entities: rot: 1.5707963267948966 rad pos: 54.5,-15.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10453 components: - type: Transform @@ -64931,7 +64909,7 @@ entities: rot: 1.5707963267948966 rad pos: 74.5,-22.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11335 components: - type: Transform @@ -64940,6 +64918,14 @@ entities: pos: -35.5,-15.5 - type: AtmosPipeColor color: '#990000FF' + - uid: 11436 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -9.5,-30.5 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 11736 components: - type: Transform @@ -65027,6 +65013,13 @@ entities: pos: -2.5,-39.5 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 13952 + components: + - type: Transform + parent: 2 + pos: -10.5,-24.5 + - type: AtmosPipeColor + color: '#990000FF' - uid: 13978 components: - type: Transform @@ -65126,22 +65119,6 @@ entities: pos: 13.5,-20.5 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 14671 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -16.5,-25.5 - - type: AtmosPipeColor - color: '#0055CCFF' - - uid: 14672 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -9.5,-25.5 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 14677 components: - type: Transform @@ -65166,22 +65143,6 @@ entities: pos: -40.5,-66.5 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 14699 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -16.5,-26.5 - - type: AtmosPipeColor - color: '#0055CCFF' - - uid: 14701 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -9.5,-26.5 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 14705 components: - type: Transform @@ -65251,6 +65212,22 @@ entities: pos: 13.5,-16.5 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 15902 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -14.5,-24.5 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 15903 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -14.5,-25.5 + - type: AtmosPipeColor + color: '#990000FF' - uid: 16234 components: - type: Transform @@ -65355,20 +65332,6 @@ entities: pos: 52.5,-46.5 - type: AtmosPipeColor color: '#990000FF' - - uid: 16931 - components: - - type: Transform - parent: 2 - pos: -6.5,-21.5 - - type: AtmosPipeColor - color: '#990000FF' - - uid: 16932 - components: - - type: Transform - parent: 2 - pos: -5.5,-20.5 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 16967 components: - type: Transform @@ -65540,7 +65503,7 @@ entities: rot: -1.5707963267948966 rad pos: 54.5,-18.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 18047 components: - type: Transform @@ -65652,13 +65615,6 @@ entities: pos: 34.5,-13.5 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 18798 - components: - - type: Transform - parent: 2 - pos: -6.5,-25.5 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 18825 components: - type: Transform @@ -66022,7 +65978,7 @@ entities: parent: 2 pos: 65.5,-23.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9486 components: - type: Transform @@ -66044,6 +66000,13 @@ entities: pos: -46.5,-65.5 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 11853 + components: + - type: Transform + parent: 2 + pos: -11.5,-24.5 + - type: AtmosPipeColor + color: '#990000FF' - uid: 12146 components: - type: Transform @@ -66051,6 +66014,13 @@ entities: pos: 18.5,-23.5 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 14119 + components: + - type: Transform + parent: 2 + pos: -11.5,-21.5 + - type: AtmosPipeColor + color: '#990000FF' - uid: 14490 components: - type: Transform @@ -66231,7 +66201,7 @@ entities: rot: -1.5707963267948966 rad pos: 56.5,-15.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 1100 components: - type: Transform @@ -66467,7 +66437,7 @@ entities: parent: 2 pos: 65.5,-22.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4116 components: - type: Transform @@ -66475,14 +66445,14 @@ entities: rot: -1.5707963267948966 rad pos: 55.5,-15.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4117 components: - type: Transform parent: 2 pos: 65.5,-19.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4119 components: - type: Transform @@ -66490,7 +66460,7 @@ entities: rot: 3.141592653589793 rad pos: 54.5,-16.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4192 components: - type: Transform @@ -66771,7 +66741,7 @@ entities: parent: 2 pos: 65.5,-21.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6637 components: - type: Transform @@ -66882,6 +66852,14 @@ entities: pos: 85.5,-47.5 - type: AtmosPipeColor color: '#990000FF' + - uid: 7699 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -5.5,-30.5 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 7724 components: - type: Transform @@ -67124,6 +67102,8 @@ entities: - type: Transform parent: 2 pos: 75.5,-24.5 + - type: AtmosPipeColor + color: '#990000FF' - uid: 8097 components: - type: Transform @@ -67241,14 +67221,14 @@ entities: rot: -1.5707963267948966 rad pos: 67.5,-23.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8636 components: - type: Transform parent: 2 pos: 65.5,-18.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8662 components: - type: Transform @@ -67301,7 +67281,7 @@ entities: rot: -1.5707963267948966 rad pos: 60.5,-15.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8809 components: - type: Transform @@ -67309,7 +67289,7 @@ entities: rot: 1.5707963267948966 rad pos: 73.5,-23.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8810 components: - type: Transform @@ -68938,7 +68918,7 @@ entities: rot: -1.5707963267948966 rad pos: 68.5,-23.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9226 components: - type: Transform @@ -68946,7 +68926,7 @@ entities: rot: -1.5707963267948966 rad pos: 64.5,-23.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9227 components: - type: Transform @@ -68954,7 +68934,7 @@ entities: rot: -1.5707963267948966 rad pos: 69.5,-23.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9228 components: - type: Transform @@ -68998,7 +68978,7 @@ entities: rot: -1.5707963267948966 rad pos: 70.5,-23.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9295 components: - type: Transform @@ -69022,7 +69002,7 @@ entities: rot: -1.5707963267948966 rad pos: 62.5,-16.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9327 components: - type: Transform @@ -69046,7 +69026,7 @@ entities: rot: -1.5707963267948966 rad pos: 66.5,-23.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9368 components: - type: Transform @@ -69070,7 +69050,7 @@ entities: rot: -1.5707963267948966 rad pos: 59.5,-15.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9377 components: - type: Transform @@ -69108,7 +69088,7 @@ entities: rot: 1.5707963267948966 rad pos: 72.5,-23.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9382 components: - type: Transform @@ -69230,13 +69210,6 @@ entities: pos: 8.5,-63.5 - type: AtmosPipeColor color: '#990000FF' - - uid: 9418 - components: - - type: Transform - parent: 2 - pos: -5.5,-21.5 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 9422 components: - type: Transform @@ -69642,13 +69615,6 @@ entities: pos: -1.5,-31.5 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 9514 - components: - - type: Transform - parent: 2 - pos: -1.5,-30.5 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 9515 components: - type: Transform @@ -69670,6 +69636,14 @@ entities: pos: -1.5,-27.5 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 9518 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -1.5,-31.5 + - type: AtmosPipeColor + color: '#990000FF' - uid: 9519 components: - type: Transform @@ -69777,14 +69751,6 @@ entities: pos: -1.5,-18.5 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 9545 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -12.5,-26.5 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 9547 components: - type: Transform @@ -69984,14 +69950,6 @@ entities: pos: -29.5,-12.5 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 9574 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -7.5,-25.5 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 9577 components: - type: Transform @@ -70116,24 +70074,16 @@ entities: components: - type: Transform parent: 2 - rot: 1.5707963267948966 rad - pos: -4.5,-26.5 - - type: AtmosPipeColor - color: '#0055CCFF' - - uid: 9608 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -3.5,-26.5 + rot: -1.5707963267948966 rad + pos: -7.5,-30.5 - type: AtmosPipeColor color: '#0055CCFF' - uid: 9609 components: - type: Transform parent: 2 - rot: 1.5707963267948966 rad - pos: -2.5,-26.5 + rot: -1.5707963267948966 rad + pos: -6.5,-30.5 - type: AtmosPipeColor color: '#0055CCFF' - uid: 9614 @@ -70861,6 +70811,14 @@ entities: pos: -41.5,-42.5 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 9765 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -4.5,-30.5 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 9766 components: - type: Transform @@ -71180,7 +71138,7 @@ entities: rot: -1.5707963267948966 rad pos: 58.5,-15.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9828 components: - type: Transform @@ -71425,15 +71383,15 @@ entities: - type: Transform parent: 2 rot: -1.5707963267948966 rad - pos: -15.5,-25.5 + pos: -3.5,-30.5 - type: AtmosPipeColor color: '#0055CCFF' - uid: 9900 components: - type: Transform parent: 2 - rot: 1.5707963267948966 rad - pos: -8.5,-25.5 + rot: -1.5707963267948966 rad + pos: -2.5,-30.5 - type: AtmosPipeColor color: '#0055CCFF' - uid: 9902 @@ -71464,6 +71422,22 @@ entities: pos: 17.5,-27.5 - type: AtmosPipeColor color: '#990000FF' + - uid: 9913 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -8.5,-30.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 9916 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -0.5,-31.5 + - type: AtmosPipeColor + color: '#990000FF' - uid: 9917 components: - type: Transform @@ -71608,14 +71582,6 @@ entities: pos: 0.5,-30.5 - type: AtmosPipeColor color: '#990000FF' - - uid: 9940 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 0.5,-31.5 - - type: AtmosPipeColor - color: '#990000FF' - uid: 9941 components: - type: Transform @@ -71743,68 +71709,12 @@ entities: pos: 4.5,-47.5 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 9965 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -9.5,-24.5 - - type: AtmosPipeColor - color: '#990000FF' - - uid: 9966 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -8.5,-24.5 - - type: AtmosPipeColor - color: '#990000FF' - - uid: 9968 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -5.5,-24.5 - - type: AtmosPipeColor - color: '#990000FF' - - uid: 9969 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -4.5,-24.5 - - type: AtmosPipeColor - color: '#990000FF' - - uid: 9970 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -3.5,-24.5 - - type: AtmosPipeColor - color: '#990000FF' - - uid: 9971 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -2.5,-24.5 - - type: AtmosPipeColor - color: '#990000FF' - - uid: 9972 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -1.5,-24.5 - - type: AtmosPipeColor - color: '#990000FF' - uid: 9973 components: - type: Transform parent: 2 - rot: 1.5707963267948966 rad - pos: -0.5,-24.5 + rot: -1.5707963267948966 rad + pos: -2.5,-31.5 - type: AtmosPipeColor color: '#990000FF' - uid: 9974 @@ -71823,28 +71733,12 @@ entities: pos: -13.5,-24.5 - type: AtmosPipeColor color: '#990000FF' - - uid: 9976 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -14.5,-24.5 - - type: AtmosPipeColor - color: '#990000FF' - - uid: 9977 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -15.5,-24.5 - - type: AtmosPipeColor - color: '#990000FF' - uid: 9978 components: - type: Transform parent: 2 - rot: 1.5707963267948966 rad - pos: -16.5,-24.5 + rot: 3.141592653589793 rad + pos: -10.5,-28.5 - type: AtmosPipeColor color: '#990000FF' - uid: 9979 @@ -71855,6 +71749,22 @@ entities: pos: -18.5,-25.5 - type: AtmosPipeColor color: '#990000FF' + - uid: 9980 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -10.5,-27.5 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 9981 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -10.5,-26.5 + - type: AtmosPipeColor + color: '#990000FF' - uid: 9982 components: - type: Transform @@ -72051,6 +71961,14 @@ entities: pos: -6.5,-41.5 - type: AtmosPipeColor color: '#990000FF' + - uid: 10023 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -11.5,-22.5 + - type: AtmosPipeColor + color: '#990000FF' - uid: 10027 components: - type: Transform @@ -72474,6 +72392,14 @@ entities: pos: -35.5,-63.5 - type: AtmosPipeColor color: '#990000FF' + - uid: 10103 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -10.5,-25.5 + - type: AtmosPipeColor + color: '#990000FF' - uid: 10104 components: - type: Transform @@ -72914,7 +72840,7 @@ entities: parent: 2 pos: 65.5,-24.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10176 components: - type: Transform @@ -73067,22 +72993,6 @@ entities: pos: -39.5,-64.5 - type: AtmosPipeColor color: '#990000FF' - - uid: 10200 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -11.5,-24.5 - - type: AtmosPipeColor - color: '#990000FF' - - uid: 10201 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -13.5,-26.5 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 10202 components: - type: Transform @@ -74086,6 +73996,14 @@ entities: pos: 42.5,-51.5 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 10558 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -11.5,-23.5 + - type: AtmosPipeColor + color: '#990000FF' - uid: 10597 components: - type: Transform @@ -74155,7 +74073,7 @@ entities: rot: -1.5707963267948966 rad pos: 64.5,-17.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10768 components: - type: Transform @@ -74188,6 +74106,14 @@ entities: pos: -38.5,-11.5 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 11100 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -10.5,-26.5 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 11332 components: - type: Transform @@ -74196,6 +74122,70 @@ entities: pos: -35.5,-14.5 - type: AtmosPipeColor color: '#990000FF' + - uid: 11432 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -7.5,-31.5 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 11434 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -8.5,-31.5 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 11435 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -9.5,-31.5 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 11437 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -9.5,-29.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 11438 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -9.5,-28.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 11439 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -9.5,-27.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 11440 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -10.5,-30.5 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 11470 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -10.5,-29.5 + - type: AtmosPipeColor + color: '#990000FF' - uid: 11683 components: - type: Transform @@ -74414,7 +74404,7 @@ entities: rot: -1.5707963267948966 rad pos: 57.5,-15.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12874 components: - type: Transform @@ -74489,6 +74479,14 @@ entities: pos: 10.5,-93.5 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 13395 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -5.5,-31.5 + - type: AtmosPipeColor + color: '#990000FF' - uid: 13521 components: - type: Transform @@ -74508,10 +74506,10 @@ entities: components: - type: Transform parent: 2 - rot: 1.5707963267948966 rad - pos: -12.5,-20.5 + rot: -1.5707963267948966 rad + pos: -4.5,-31.5 - type: AtmosPipeColor - color: '#0055CCFF' + color: '#990000FF' - uid: 13524 components: - type: Transform @@ -74575,6 +74573,45 @@ entities: pos: -41.5,-65.5 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 13960 + components: + - type: Transform + parent: 2 + pos: -1.5,-26.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 14036 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 0.5,-24.5 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 14059 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -12.5,-25.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 14116 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -6.5,-31.5 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 14395 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -3.5,-31.5 + - type: AtmosPipeColor + color: '#990000FF' - uid: 14443 components: - type: Transform @@ -75510,14 +75547,6 @@ entities: pos: 9.5,-35.5 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 14670 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -7.5,-20.5 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 14674 components: - type: Transform @@ -75526,14 +75555,6 @@ entities: pos: -13.5,-55.5 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 14681 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -6.5,-20.5 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 14685 components: - type: Transform @@ -75739,6 +75760,86 @@ entities: pos: 17.5,-83.5 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 15896 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -12.5,-24.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 15898 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -12.5,-23.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 15899 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -12.5,-22.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 15900 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -12.5,-21.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 15904 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -14.5,-26.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 15905 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -15.5,-26.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 15906 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -16.5,-26.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 15907 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -15.5,-25.5 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 15912 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -16.5,-25.5 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 15913 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -17.5,-25.5 + - type: AtmosPipeColor + color: '#990000FF' - uid: 16220 components: - type: Transform @@ -75997,56 +76098,6 @@ entities: pos: 55.5,-42.5 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 16921 - components: - - type: Transform - parent: 2 - pos: -5.5,-22.5 - - type: AtmosPipeColor - color: '#0055CCFF' - - uid: 16922 - components: - - type: Transform - parent: 2 - pos: -5.5,-23.5 - - type: AtmosPipeColor - color: '#0055CCFF' - - uid: 16923 - components: - - type: Transform - parent: 2 - pos: -5.5,-24.5 - - type: AtmosPipeColor - color: '#0055CCFF' - - uid: 16924 - components: - - type: Transform - parent: 2 - pos: -5.5,-25.5 - - type: AtmosPipeColor - color: '#0055CCFF' - - uid: 16925 - components: - - type: Transform - parent: 2 - pos: -6.5,-23.5 - - type: AtmosPipeColor - color: '#990000FF' - - uid: 16926 - components: - - type: Transform - parent: 2 - pos: -6.5,-22.5 - - type: AtmosPipeColor - color: '#990000FF' - - uid: 16927 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -7.5,-21.5 - - type: AtmosPipeColor - color: '#990000FF' - uid: 16928 components: - type: Transform @@ -76282,6 +76333,14 @@ entities: pos: 58.5,-42.5 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 17108 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 65.5,-25.5 + - type: AtmosPipeColor + color: '#990000FF' - uid: 17110 components: - type: Transform @@ -77136,7 +77195,7 @@ entities: rot: 3.141592653589793 rad pos: 54.5,-17.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 18052 components: - type: Transform @@ -78306,7 +78365,7 @@ entities: rot: -1.5707963267948966 rad pos: 63.5,-23.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 19859 components: - type: Transform @@ -78314,7 +78373,7 @@ entities: rot: -1.5707963267948966 rad pos: 62.5,-23.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 19860 components: - type: Transform @@ -78322,7 +78381,7 @@ entities: rot: -1.5707963267948966 rad pos: 61.5,-23.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 19861 components: - type: Transform @@ -78330,7 +78389,7 @@ entities: rot: -1.5707963267948966 rad pos: 60.5,-23.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 19862 components: - type: Transform @@ -78338,7 +78397,7 @@ entities: rot: -1.5707963267948966 rad pos: 59.5,-23.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 19863 components: - type: Transform @@ -78950,6 +79009,8 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 74.5,-23.5 + - type: AtmosPipeColor + color: '#990000FF' - uid: 4200 components: - type: Transform @@ -79104,13 +79165,6 @@ entities: pos: -1.5,-21.5 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 8840 - components: - - type: Transform - parent: 2 - pos: -10.5,-24.5 - - type: AtmosPipeColor - color: '#990000FF' - uid: 8858 components: - type: Transform @@ -79456,14 +79510,6 @@ entities: pos: -1.5,-33.5 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 9518 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -1.5,-26.5 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 9524 components: - type: Transform @@ -79504,21 +79550,6 @@ entities: pos: -29.5,-11.5 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 9600 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: -5.5,-26.5 - - type: AtmosPipeColor - color: '#0055CCFF' - - uid: 9605 - components: - - type: Transform - parent: 2 - pos: -7.5,-24.5 - - type: AtmosPipeColor - color: '#990000FF' - uid: 9629 components: - type: Transform @@ -79768,14 +79799,6 @@ entities: pos: 0.5,-23.5 - type: AtmosPipeColor color: '#990000FF' - - uid: 9933 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 0.5,-24.5 - - type: AtmosPipeColor - color: '#990000FF' - uid: 9958 components: - type: Transform @@ -79791,13 +79814,6 @@ entities: pos: -14.5,-38.5 - type: AtmosPipeColor color: '#990000FF' - - uid: 10026 - components: - - type: Transform - parent: 2 - pos: -10.5,-26.5 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 10041 components: - type: Transform @@ -79852,14 +79868,6 @@ entities: pos: -25.5,-62.5 - type: AtmosPipeColor color: '#990000FF' - - uid: 10103 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: -6.5,-24.5 - - type: AtmosPipeColor - color: '#990000FF' - uid: 10110 components: - type: Transform @@ -79951,7 +79959,7 @@ entities: rot: 1.5707963267948966 rad pos: 65.5,-20.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10285 components: - type: Transform @@ -80059,6 +80067,14 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 33.5,-65.5 + - uid: 10555 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -1.5,-30.5 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 10562 components: - type: Transform @@ -80082,6 +80098,22 @@ entities: pos: 63.5,-18.5 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 11364 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 0.5,-31.5 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 11980 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -13.5,-26.5 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 12154 components: - type: Transform @@ -80106,6 +80138,13 @@ entities: pos: 14.5,-94.5 - type: AtmosPipeColor color: '#990000FF' + - uid: 12418 + components: + - type: Transform + parent: 2 + pos: -12.5,-20.5 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 12423 components: - type: Transform @@ -80319,14 +80358,6 @@ entities: pos: -13.5,-20.5 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 14684 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: -11.5,-21.5 - - type: AtmosPipeColor - color: '#990000FF' - uid: 14691 components: - type: Transform @@ -80350,6 +80381,14 @@ entities: pos: 60.5,-56.5 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 15901 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -12.5,-26.5 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 16096 components: - type: Transform @@ -80373,7 +80412,7 @@ entities: rot: 3.141592653589793 rad pos: 71.5,-23.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 16424 components: - type: Transform @@ -80522,14 +80561,6 @@ entities: pos: 64.5,-46.5 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 17682 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: -6.5,-26.5 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 17748 components: - type: Transform @@ -81634,28 +81665,6 @@ entities: - 19853 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 9874 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: -10.5,-27.5 - - type: DeviceNetwork - deviceLists: - - 1075 - - type: AtmosPipeColor - color: '#0055CCFF' - - uid: 9916 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -7.5,-26.5 - - type: DeviceNetwork - deviceLists: - - 1075 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 9962 components: - type: Transform @@ -81942,6 +81951,27 @@ entities: - 9241 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 16021 + components: + - type: Transform + parent: 2 + pos: -13.5,-25.5 + - type: DeviceNetwork + deviceLists: + - 16438 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 16046 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -7.5,-20.5 + - type: DeviceNetwork + deviceLists: + - 16647 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 16075 components: - type: Transform @@ -82309,7 +82339,7 @@ entities: deviceLists: - 18059 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2406 components: - type: Transform @@ -82342,7 +82372,7 @@ entities: deviceLists: - 19876 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 3185 components: - type: Transform @@ -82370,6 +82400,8 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 75.5,-25.5 + - type: AtmosPipeColor + color: '#990000FF' - uid: 3445 components: - type: Transform @@ -82489,7 +82521,7 @@ entities: rot: 1.5707963267948966 rad pos: 58.5,-23.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - type: DeviceNetwork deviceLists: - 579 @@ -82825,17 +82857,6 @@ entities: - 19835 - type: AtmosPipeColor color: '#990000FF' - - uid: 8839 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: -10.5,-25.5 - - type: DeviceNetwork - deviceLists: - - 1075 - - type: AtmosPipeColor - color: '#990000FF' - uid: 8844 components: - type: Transform @@ -83247,6 +83268,28 @@ entities: - 6342 - type: AtmosPipeColor color: '#990000FF' + - uid: 15923 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -11.5,-25.5 + - type: DeviceNetwork + deviceLists: + - 16438 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 16045 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -7.5,-21.5 + - type: DeviceNetwork + deviceLists: + - 16647 + - type: AtmosPipeColor + color: '#990000FF' - uid: 16173 components: - type: Transform @@ -83441,7 +83484,7 @@ entities: deviceLists: - 18818 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 18083 components: - type: Transform @@ -83549,17 +83592,6 @@ entities: - 15885 - type: AtmosPipeColor color: '#990000FF' - - uid: 18797 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: -7.5,-25.5 - - type: DeviceNetwork - deviceLists: - - 1075 - - type: AtmosPipeColor - color: '#990000FF' - uid: 19267 components: - type: Transform @@ -83605,7 +83637,7 @@ entities: parent: 2 pos: 71.5,-22.5 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - type: DeviceNetwork deviceLists: - 6358 @@ -83820,11 +83852,10 @@ entities: - type: Transform parent: 2 pos: 59.5,-66.5 - - uid: 15846 + - uid: 16922 components: - type: Transform parent: 2 - rot: 1.5707963267948966 rad pos: 5.5,-32.5 - proto: GlassBoxLaserFilled entities: @@ -84271,21 +84302,11 @@ entities: - type: Transform parent: 2 pos: 14.5,-26.5 - - uid: 483 + - uid: 519 components: - type: Transform parent: 2 - pos: -5.5,-23.5 - - uid: 484 - components: - - type: Transform - parent: 2 - pos: -4.5,-23.5 - - uid: 485 - components: - - type: Transform - parent: 2 - pos: -3.5,-23.5 + pos: -2.5,-24.5 - uid: 537 components: - type: Transform @@ -84331,6 +84352,11 @@ entities: - type: Transform parent: 2 pos: 17.5,-39.5 + - uid: 578 + components: + - type: Transform + parent: 2 + pos: -7.5,-28.5 - uid: 600 components: - type: Transform @@ -85026,11 +85052,6 @@ entities: - type: Transform parent: 2 pos: -40.5,-51.5 - - uid: 1760 - components: - - type: Transform - parent: 2 - pos: -2.5,-24.5 - uid: 1819 components: - type: Transform @@ -85776,11 +85797,6 @@ entities: - type: Transform parent: 2 pos: 52.5,-66.5 - - uid: 3421 - components: - - type: Transform - parent: 2 - pos: -2.5,-25.5 - uid: 3483 components: - type: Transform @@ -86186,11 +86202,6 @@ entities: - type: Transform parent: 2 pos: -42.5,-51.5 - - uid: 4722 - components: - - type: Transform - parent: 2 - pos: -2.5,-26.5 - uid: 4739 components: - type: Transform @@ -87021,6 +87032,11 @@ entities: - type: Transform parent: 2 pos: 10.5,-13.5 + - uid: 6705 + components: + - type: Transform + parent: 2 + pos: -2.5,-23.5 - uid: 6865 components: - type: Transform @@ -87031,11 +87047,6 @@ entities: - type: Transform parent: 2 pos: 52.5,-95.5 - - uid: 6975 - components: - - type: Transform - parent: 2 - pos: -6.5,-23.5 - uid: 7107 components: - type: Transform @@ -87056,6 +87067,11 @@ entities: - type: Transform parent: 2 pos: 51.5,-35.5 + - uid: 7198 + components: + - type: Transform + parent: 2 + pos: -2.5,-22.5 - uid: 7209 components: - type: Transform @@ -87811,11 +87827,6 @@ entities: - type: Transform parent: 2 pos: -64.5,-48.5 - - uid: 15878 - components: - - type: Transform - parent: 2 - pos: -5.5,-18.5 - uid: 16183 components: - type: Transform @@ -87941,11 +87952,6 @@ entities: - type: Transform parent: 2 pos: 1.5,-75.5 - - uid: 17081 - components: - - type: Transform - parent: 2 - pos: -4.5,-18.5 - uid: 17119 components: - type: Transform @@ -87966,11 +87972,6 @@ entities: - type: Transform parent: 2 pos: 61.5,-28.5 - - uid: 17342 - components: - - type: Transform - parent: 2 - pos: -3.5,-18.5 - uid: 17511 components: - type: Transform @@ -89670,11 +89671,11 @@ entities: pos: 16.5,-29.5 - proto: HolopadMedicalMorgue entities: - - uid: 19167 + - uid: 17113 components: - type: Transform parent: 2 - pos: 35.5,-27.5 + pos: 32.5,-28.5 - proto: HolopadMedicalParamed entities: - uid: 17508 @@ -89696,6 +89697,13 @@ entities: - type: Transform parent: 2 pos: 30.5,-18.5 +- proto: HolopadScienceAnomaly + entities: + - uid: 17320 + components: + - type: Transform + parent: 2 + pos: -12.5,-17.5 - proto: HolopadScienceArtifact entities: - uid: 19144 @@ -89705,11 +89713,18 @@ entities: pos: -19.5,-24.5 - proto: HolopadScienceRnd entities: - - uid: 19142 + - uid: 17315 components: - type: Transform parent: 2 - pos: -7.5,-20.5 + pos: -12.5,-26.5 +- proto: HolopadScienceRobotics + entities: + - uid: 17317 + components: + - type: Transform + parent: 2 + pos: -4.5,-19.5 - proto: HolopadSecurityArmory entities: - uid: 18005 @@ -90160,11 +90175,11 @@ entities: - type: InsideEntityStorage - proto: IngotGold1 entities: - - uid: 15879 + - uid: 11363 components: - type: Transform parent: 2 - pos: -10.265891,-21.478815 + pos: -11.7130575,-18.462027 - proto: IngotSilver entities: - uid: 3829 @@ -90174,11 +90189,11 @@ entities: pos: 10.838615,-44.273556 - proto: IngotSilver1 entities: - - uid: 8019 + - uid: 10560 components: - type: Transform parent: 2 - pos: -10.418669,-21.402374 + pos: -11.587336,-18.541817 - uid: 18777 components: - type: Transform @@ -90202,6 +90217,12 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 0.5,-61.5 + - uid: 16924 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 92.5,-51.5 - uid: 17760 components: - type: Transform @@ -90220,12 +90241,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: -45.5,-43.5 - - uid: 18010 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 85.5,-46.5 - uid: 19580 components: - type: Transform @@ -90290,12 +90305,12 @@ entities: pos: -5.5,-52.5 - proto: IntercomScience entities: - - uid: 11363 + - uid: 17321 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad - pos: -8.5,-17.5 + pos: -11.5,-29.5 - proto: IntercomSecurity entities: - uid: 6087 @@ -90879,20 +90894,17 @@ entities: 546: - - Pressed - Toggle -- proto: LockableButtonResearch - entities: - - uid: 2874 + - uid: 17304 components: - type: Transform parent: 2 - rot: -1.5707963267948966 rad - pos: -9.5,-28.5 + pos: 32.5,-13.5 - type: DeviceLinkSource linkedPorts: - 1077: + 624: - - Pressed - Toggle - 3189: + 9352: - - Pressed - Toggle - proto: LockableButtonSecurity @@ -91523,18 +91535,16 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 9.5,-75.5 - - uid: 7100 + - uid: 4694 components: - type: Transform parent: 2 - rot: 1.5707963267948966 rad - pos: -16.5,-18.5 - - uid: 7221 + pos: -9.5,-15.5 + - uid: 5065 components: - type: Transform parent: 2 - rot: 1.5707963267948966 rad - pos: -16.5,-17.5 + pos: -10.5,-15.5 - proto: MachineArtifactAnalyzer entities: - uid: 5037 @@ -91580,11 +91590,11 @@ entities: pos: 2.5,-76.5 - proto: MachineMaterialSilo entities: - - uid: 17988 + - uid: 5656 components: - type: Transform parent: 2 - pos: -8.5,-22.5 + pos: -9.5,-23.5 - proto: MagazinePistolEmpty entities: - uid: 16526 @@ -91787,16 +91797,26 @@ entities: pos: -9.56385,-38.433666 - proto: MaterialBones1 entities: + - uid: 528 + components: + - type: Transform + parent: 2 + pos: -22.497972,-29.53105 - uid: 7918 components: - type: Transform parent: 2 pos: 72.446846,-56.49303 - - uid: 10843 + - uid: 14392 components: - type: Transform parent: 2 - pos: 96.498116,-44.486084 + pos: 96.53243,-44.4865 + - uid: 14684 + components: + - type: Transform + parent: 2 + pos: 78.95953,-25.536255 - uid: 17250 components: - type: Transform @@ -91812,6 +91832,11 @@ entities: - type: Transform parent: 2 pos: -2.4986753,-72.48942 + - uid: 17310 + components: + - type: Transform + parent: 2 + pos: -64.03123,-28.227356 - proto: MaterialCloth entities: - uid: 15918 @@ -91833,11 +91858,11 @@ entities: pos: -29.40506,-60.414524 - proto: MaterialCloth10 entities: - - uid: 6172 + - uid: 10225 components: - type: Transform parent: 2 - pos: -3.5,-22.5 + pos: -7.5141397,-25.500095 - proto: MaterialDurathread entities: - uid: 16377 @@ -92199,12 +92224,6 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 34.5,-30.5 - - uid: 17637 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: -3.5,-28.5 - proto: MothroachCube entities: - uid: 17238 @@ -92240,11 +92259,11 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 54.52982,-39.13904 - - uid: 10555 + - uid: 12958 components: - type: Transform parent: 2 - pos: -11.327834,-21.173048 + pos: -13.238625,-21.399727 - uid: 15483 components: - type: Transform @@ -92342,6 +92361,11 @@ entities: - type: Transform parent: 2 pos: -43.5,-79.5 + - uid: 16927 + components: + - type: Transform + parent: 2 + pos: 46.5,-78.5 - uid: 19351 components: - type: Transform @@ -92403,6 +92427,13 @@ entities: - type: Transform parent: 2 pos: 43.5,-73.5 +- proto: NitrousOxideTank + entities: + - uid: 17249 + components: + - type: Transform + parent: 2 + pos: 45.410316,-75.42318 - proto: NitrousOxideTankFilled entities: - uid: 6652 @@ -92469,16 +92500,16 @@ entities: - type: Transform parent: 2 pos: 35.5,-28.5 - - uid: 5072 - components: - - type: Transform - parent: 2 - pos: -4.5,-25.5 - uid: 5115 components: - type: Transform parent: 2 pos: 11.5,-23.5 + - uid: 6172 + components: + - type: Transform + parent: 2 + pos: -4.5,-24.5 - proto: OreBox entities: - uid: 17559 @@ -92545,6 +92576,11 @@ entities: - type: Transform parent: 2 pos: -7.5,-58.5 + - uid: 16931 + components: + - type: Transform + parent: 2 + pos: 48.5,-78.5 - uid: 18770 components: - type: Transform @@ -93004,13 +93040,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: -47.357563,-45.783386 -- proto: PersonalAI - entities: - - uid: 19300 - components: - - type: Transform - parent: 2 - pos: -9.678529,-26.311075 - proto: PhoneInstrument entities: - uid: 14216 @@ -93074,6 +93103,13 @@ entities: - type: Transform parent: 2 pos: 6.340241,-25.15603 +- proto: PipeBombCable + entities: + - uid: 17313 + components: + - type: Transform + parent: 2 + pos: 6.7292037,-82.632835 - proto: PlasmaCanister entities: - uid: 5052 @@ -93098,6 +93134,11 @@ entities: pos: 53.5,-72.5 - proto: PlasmaReinforcedWindowDirectional entities: + - uid: 596 + components: + - type: Transform + parent: 2 + pos: -9.5,-17.5 - uid: 3731 components: - type: Transform @@ -93252,6 +93293,11 @@ entities: pos: -59.5,-61.5 - proto: PlasmaTank entities: + - uid: 17253 + components: + - type: Transform + parent: 2 + pos: 45.629066,-75.563896 - uid: 18387 components: - type: Transform @@ -93384,16 +93430,29 @@ entities: pos: -32.5,-74.5 - proto: PlasmaWindoorScienceLocked entities: - - uid: 11364 + - uid: 1074 components: - type: Transform parent: 2 - pos: -7.5,-18.5 - - uid: 13975 + rot: 3.141592653589793 rad + pos: -10.5,-28.5 + - uid: 1875 components: - type: Transform parent: 2 - pos: -6.5,-18.5 + rot: 3.141592653589793 rad + pos: -9.5,-28.5 + - uid: 2199 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -8.5,-28.5 + - uid: 2874 + components: + - type: Transform + parent: 2 + pos: -10.5,-17.5 - proto: PlasmaWindoorSecurityLocked entities: - uid: 2724 @@ -93578,6 +93637,13 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage +- proto: PlushieVox + entities: + - uid: 17254 + components: + - type: Transform + parent: 2 + pos: 9.445781,-47.39685 - proto: PlushieVulp entities: - uid: 13963 @@ -93857,6 +93923,13 @@ entities: - type: Transform parent: 2 pos: 16.5,-85.5 +- proto: PosterContrabandDonutCorp + entities: + - uid: 17314 + components: + - type: Transform + parent: 2 + pos: 6.5,-81.5 - proto: PosterContrabandEAT entities: - uid: 15130 @@ -93920,6 +93993,11 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 74.5,-41.5 + - uid: 17382 + components: + - type: Transform + parent: 2 + pos: 36.5,-29.5 - uid: 18764 components: - type: Transform @@ -93950,6 +94028,11 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: -18.5,-60.5 + - uid: 17381 + components: + - type: Transform + parent: 2 + pos: 32.5,-25.5 - uid: 19154 components: - type: Transform @@ -94035,6 +94118,11 @@ entities: - type: Transform parent: 2 pos: 12.5,-14.5 + - uid: 5096 + components: + - type: Transform + parent: 2 + pos: 21.5,-27.5 - proto: PosterLegitBotanyFear entities: - uid: 12496 @@ -94492,11 +94580,16 @@ entities: pos: 22.5,-76.5 - proto: PowerCellMedium entities: - - uid: 1670 + - uid: 10026 components: - type: Transform parent: 2 - pos: -12.257856,-28.32542 + pos: -11.2536545,-18.332308 + - uid: 10200 + components: + - type: Transform + parent: 2 + pos: -11.4068365,-18.2073 - uid: 19374 components: - type: Transform @@ -94552,17 +94645,16 @@ entities: - type: Transform parent: 2 pos: 77.5,-21.5 + - uid: 10675 + components: + - type: Transform + parent: 2 + pos: -9.5,-18.5 - uid: 11468 components: - type: Transform parent: 2 pos: 18.5,-17.5 - - uid: 14432 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: -11.5,-18.5 - uid: 18330 components: - type: Transform @@ -94605,6 +94697,12 @@ entities: pos: 27.420353,-62.29585 - proto: Poweredlight entities: + - uid: 611 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -25.5,-24.5 - uid: 806 components: - type: Transform @@ -94719,12 +94817,30 @@ entities: - type: Transform parent: 2 pos: 64.5,-23.5 + - uid: 3186 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -10.5,-21.5 + - uid: 3189 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -13.5,-21.5 - uid: 3348 components: - type: Transform parent: 2 rot: -1.5707963267948966 rad pos: 33.5,-71.5 + - uid: 3421 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 0.5,-20.5 - uid: 3810 components: - type: Transform @@ -94742,6 +94858,12 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 6.5,-0.5 + - uid: 4397 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -16.5,-27.5 - uid: 4700 components: - type: Transform @@ -94754,6 +94876,12 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: -27.5,-28.5 + - uid: 5007 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -20.5,-15.5 - uid: 5177 components: - type: Transform @@ -94923,12 +95051,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 21.5,-70.5 - - uid: 10225 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -10.5,-15.5 - uid: 10283 components: - type: Transform @@ -94957,11 +95079,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 94.5,-44.5 - - uid: 11470 - components: - - type: Transform - parent: 2 - pos: -11.5,-18.5 - uid: 11707 components: - type: Transform @@ -94972,8 +95089,7 @@ entities: components: - type: Transform parent: 2 - rot: 1.5707963267948966 rad - pos: -5.5,-27.5 + pos: -8.5,-25.5 - uid: 13446 components: - type: Transform @@ -95144,18 +95260,6 @@ entities: - type: Transform parent: 2 pos: 22.5,-76.5 - - uid: 14116 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -3.5,-21.5 - - uid: 14130 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -16.5,-26.5 - uid: 14150 components: - type: Transform @@ -95312,17 +95416,17 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 19.5,-55.5 - - uid: 14370 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: -11.5,-21.5 - uid: 14390 components: - type: Transform parent: 2 pos: -18.5,-19.5 + - uid: 14407 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 0.5,-28.5 - uid: 14412 components: - type: Transform @@ -95359,6 +95463,12 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: -17.5,-68.5 + - uid: 14432 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 8.5,-37.5 - uid: 14721 components: - type: Transform @@ -95457,12 +95567,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 64.5,-47.5 - - uid: 15213 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -1.5,-21.5 - uid: 15227 components: - type: Transform @@ -95495,23 +95599,69 @@ entities: - type: Transform parent: 2 pos: 53.5,-18.5 + - uid: 15596 + components: + - type: Transform + parent: 2 + pos: -14.5,-24.5 - uid: 15640 components: - type: Transform parent: 2 pos: 80.5,-43.5 + - uid: 15696 + components: + - type: Transform + parent: 2 + pos: -4.5,-26.5 + - uid: 15697 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -5.5,-23.5 + - uid: 15698 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -3.5,-20.5 + - uid: 15699 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -7.5,-15.5 + - uid: 15700 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -7.5,-22.5 - uid: 15787 components: - type: Transform parent: 2 rot: 3.141592653589793 rad pos: 80.5,-47.5 - - uid: 16117 + - uid: 15790 components: - type: Transform parent: 2 - rot: -1.5707963267948966 rad - pos: 0.5,-25.5 + rot: 1.5707963267948966 rad + pos: -14.5,-17.5 + - uid: 15846 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -3.5,-17.5 + - uid: 15849 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -10.5,-16.5 - uid: 16147 components: - type: Transform @@ -95649,18 +95799,6 @@ entities: - type: Transform parent: 2 pos: -8.5,-47.5 - - uid: 18149 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -10.5,-27.5 - - uid: 18150 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: -25.5,-25.5 - uid: 18152 components: - type: Transform @@ -96053,11 +96191,6 @@ entities: pos: 19.5,-42.5 - proto: PoweredlightPink entities: - - uid: 2342 - components: - - type: Transform - parent: 2 - pos: -5.5,-30.5 - uid: 3495 components: - type: Transform @@ -96090,6 +96223,11 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: -31.5,-35.5 + - uid: 10843 + components: + - type: Transform + parent: 2 + pos: -5.5,-30.5 - uid: 14224 components: - type: Transform @@ -96106,6 +96244,11 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 7.5,-43.5 + - uid: 15852 + components: + - type: Transform + parent: 2 + pos: -11.5,-30.5 - uid: 17594 components: - type: Transform @@ -96284,11 +96427,6 @@ entities: - type: Transform parent: 2 pos: -28.5,-59.5 - - uid: 7529 - components: - - type: Transform - parent: 2 - pos: -9.5,-24.5 - uid: 10743 components: - type: Transform @@ -96820,12 +96958,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: -16.5,-43.5 - - uid: 5656 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -7.5,-28.5 - uid: 7719 components: - type: Transform @@ -96852,11 +96984,11 @@ entities: pos: 68.5,-48.5 - proto: Protolathe entities: - - uid: 19088 + - uid: 7432 components: - type: Transform parent: 2 - pos: -4.5,-19.5 + pos: -12.5,-28.5 - type: TechnologyDatabase supportedDisciplines: - Industrial @@ -97532,11 +97664,6 @@ entities: pos: 57.5,-42.5 - proto: Rack entities: - - uid: 1160 - components: - - type: Transform - parent: 2 - pos: -12.5,-23.5 - uid: 2503 components: - type: Transform @@ -97794,6 +97921,11 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 27.5,-63.5 + - uid: 14973 + components: + - type: Transform + parent: 2 + pos: 45.5,-75.5 - uid: 15024 components: - type: Transform @@ -97817,6 +97949,11 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 46.5,-73.5 + - uid: 15891 + components: + - type: Transform + parent: 2 + pos: -5.5,-23.5 - uid: 16033 components: - type: Transform @@ -97898,11 +98035,6 @@ entities: - type: Transform parent: 2 pos: 32.5,-61.5 - - uid: 19297 - components: - - type: Transform - parent: 2 - pos: -5.5,-27.5 - uid: 19357 components: - type: Transform @@ -98073,6 +98205,12 @@ entities: - type: Transform parent: 2 pos: 56.5,-14.5 + - uid: 7501 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 0.5,2.5 - uid: 8111 components: - type: Transform @@ -98184,6 +98322,24 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: -8.5,-79.5 + - uid: 17400 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -1.5,2.5 + - uid: 17405 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 5.5,2.5 + - uid: 17424 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 7.5,2.5 - uid: 17668 components: - type: Transform @@ -98507,11 +98663,6 @@ entities: - type: Transform parent: 2 pos: 2.5,-66.5 - - uid: 17163 - components: - - type: Transform - parent: 2 - pos: -10.5,-19.5 - uid: 17171 components: - type: Transform @@ -98650,6 +98801,13 @@ entities: parent: 14704 - type: Physics canCollide: False +- proto: ReagentContainerSugarSmall + entities: + - uid: 17255 + components: + - type: Transform + parent: 2 + pos: 9.738771,-47.697575 - proto: ReagentGrinderMachineCircuitboard entities: - uid: 7696 @@ -100486,6 +100644,13 @@ entities: - type: Transform parent: 2 pos: 80.5,-29.5 +- proto: SawElectric + entities: + - uid: 5496 + components: + - type: Transform + parent: 2 + pos: 35.53492,-27.479969 - proto: Scalpel entities: - uid: 6654 @@ -100498,12 +100663,11 @@ entities: - type: Transform parent: 2 pos: 66.53385,-63.488316 - - uid: 19301 + - uid: 14370 components: - type: Transform parent: 2 - rot: -0.6108652381980153 rad - pos: -3.5512772,-24.750254 + pos: 35.40992,-27.21416 - proto: Screen entities: - uid: 15174 @@ -100733,11 +100897,11 @@ entities: - type: Transform parent: 2 pos: -14.446809,-60.429398 - - uid: 16647 + - uid: 15888 components: - type: Transform parent: 2 - pos: -12.36079,-23.400194 + pos: -3.413918,-22.43804 - proto: SheetPlasma entities: - uid: 3506 @@ -100808,16 +100972,16 @@ entities: - type: Transform parent: 2 pos: 32.50578,-91.90742 - - uid: 17916 + - uid: 10527 components: - type: Transform parent: 2 - pos: -3.6233544,-22.398033 - - uid: 17918 + pos: -7.6287227,-25.375008 + - uid: 13134 components: - type: Transform parent: 2 - pos: -3.3852344,-22.270124 + pos: -7.3370557,-25.395857 - proto: SheetRGlass entities: - uid: 17971 @@ -100846,16 +101010,16 @@ entities: count: 4 - proto: SheetSteel entities: - - uid: 1074 - components: - - type: Transform - parent: 2 - pos: -12.694123,-23.379345 - uid: 1882 components: - type: Transform parent: 2 pos: 46.415913,-73.32666 + - uid: 3010 + components: + - type: Transform + parent: 2 + pos: -14.564964,-28.459366 - uid: 3341 components: - type: Transform @@ -100881,16 +101045,16 @@ entities: - type: Transform parent: 2 pos: -13.478059,-60.538773 - - uid: 13337 - components: - - type: Transform - parent: 2 - pos: -3.438326,-19.436022 - uid: 13646 components: - type: Transform parent: 2 pos: 45.696777,-73.20621 + - uid: 15879 + components: + - type: Transform + parent: 2 + pos: -3.648293,-22.344223 - uid: 17134 components: - type: Transform @@ -101044,27 +101208,27 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: -11.5,-53.5 - - uid: 1077 - components: - - type: Transform - parent: 2 - pos: -10.5,-29.5 - uid: 1216 components: - type: Transform parent: 2 pos: 9.5,-74.5 - - uid: 3189 + - uid: 1963 components: - type: Transform parent: 2 - pos: -11.5,-29.5 + pos: -6.5,-18.5 - uid: 6040 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad pos: -30.5,-23.5 + - uid: 9874 + components: + - type: Transform + parent: 2 + pos: -5.5,-18.5 - uid: 15886 components: - type: Transform @@ -101914,47 +102078,21 @@ entities: 12744: - - Pressed - Toggle - - uid: 17875 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 38.5,-87.5 - - type: DeviceLinkSource - linkedPorts: - 4943: - - - Pressed - - Toggle - 4942: - - - Pressed - - Toggle - 4944: - - - Pressed - - Toggle - 4945: - - - Pressed - - Toggle - - uid: 17876 - components: - - type: Transform - parent: 2 - pos: 36.5,-82.5 - - type: DeviceLinkSource - linkedPorts: - 4941: - - - Pressed - - Toggle - 4940: - - - Pressed - - Toggle - 4939: - - - Pressed - - Toggle - 4938: - - - Pressed - - Toggle - proto: SignalButtonDirectional entities: + - uid: 533 + components: + - type: Transform + parent: 2 + pos: -4.5,-18.5 + - type: DeviceLinkSource + linkedPorts: + 1963: + - - Pressed + - Toggle + 9874: + - - Pressed + - Toggle - uid: 5437 components: - type: Transform @@ -101989,6 +102127,26 @@ entities: 6210: - - Pressed - Toggle + - uid: 10756 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 38.5,-87.5 + - type: DeviceLinkSource + linkedPorts: + 4943: + - - Pressed + - Toggle + 4942: + - - Pressed + - Toggle + 4944: + - - Pressed + - Toggle + 4945: + - - Pressed + - Toggle - uid: 12415 components: - type: Transform @@ -102093,6 +102251,66 @@ entities: 10890: - - Pressed - Toggle + - uid: 17396 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 36.5,-82.5 + - type: DeviceLinkSource + linkedPorts: + 4941: + - - Pressed + - Toggle + 4940: + - - Pressed + - Toggle + 4939: + - - Pressed + - Toggle + 4938: + - - Pressed + - Toggle + - uid: 17401 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 38.5,-87.5 + - type: DeviceLinkSource + linkedPorts: + 4945: + - - Pressed + - Toggle + 4944: + - - Pressed + - Toggle + 4942: + - - Pressed + - Toggle + 4943: + - - Pressed + - Toggle + - uid: 17403 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 36.5,-82.5 + - type: DeviceLinkSource + linkedPorts: + 4941: + - - Pressed + - Toggle + 4940: + - - Pressed + - Toggle + 4939: + - - Pressed + - Toggle + 4938: + - - Pressed + - Toggle - uid: 18371 components: - type: Transform @@ -102191,11 +102409,11 @@ entities: pos: -26.5,-25.5 - proto: SignAnomaly2 entities: - - uid: 16191 + - uid: 15621 components: - type: Transform parent: 2 - pos: -8.5,-18.5 + pos: -11.5,-17.5 - proto: SignArmory entities: - uid: 208 @@ -102248,6 +102466,11 @@ entities: - type: Transform parent: 2 pos: 26.5,-68.5 + - uid: 17098 + components: + - type: Transform + parent: 2 + pos: 49.5,-73.5 - proto: SignBar entities: - uid: 16195 @@ -102697,6 +102920,12 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 62.5,-22.5 + - uid: 6763 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 44.5,-77.5 - uid: 7888 components: - type: Transform @@ -102708,12 +102937,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 44.49919,-51.71689 - - uid: 9298 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 52.5,-77.5 - uid: 13204 components: - type: Transform @@ -102726,6 +102949,12 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: -26.501286,-54.06827 + - uid: 14671 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 52.5,-77.5 - uid: 15910 components: - type: Transform @@ -102816,6 +103045,12 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: -3.4992862,-8.714865 + - uid: 17324 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -8.5,-14.5 - uid: 17374 components: - type: Transform @@ -103080,18 +103315,18 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: -15.5,-51.5 + - uid: 14672 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 1.5,-29.5 - uid: 16149 components: - type: Transform parent: 2 rot: 3.141592653589793 rad pos: 7.50015,-51.71722 - - uid: 16156 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 1.5,-29.5 - uid: 16157 components: - type: Transform @@ -103102,7 +103337,7 @@ entities: components: - type: Transform parent: 2 - rot: 3.141592653589793 rad + rot: 1.5707963267948966 rad pos: -26.50015,-33.285137 - uid: 17811 components: @@ -103699,18 +103934,19 @@ entities: pos: -12.5,-78.5 - proto: SignRND entities: - - uid: 19073 + - uid: 14670 components: - type: Transform parent: 2 - pos: -2.5,-18.5 + rot: -1.5707963267948966 rad + pos: -6.5,-28.5 - proto: SignRobo entities: - - uid: 2221 + - uid: 13336 components: - type: Transform parent: 2 - pos: -12.5,-29.5 + pos: -7.5,-18.5 - proto: SignSalvage entities: - uid: 6923 @@ -103737,11 +103973,11 @@ entities: pos: 53.5,-104.5 - proto: SignScience entities: - - uid: 6645 + - uid: 8792 components: - type: Transform parent: 2 - pos: -8.5,-15.5 + pos: -3.5,-29.5 - uid: 18197 components: - type: Transform @@ -104059,17 +104295,17 @@ entities: pos: 20.5,-70.5 - proto: SinkWide entities: - - uid: 1875 - components: - - type: Transform - parent: 2 - pos: -9.5,-15.5 - uid: 4717 components: - type: Transform parent: 2 rot: -1.5707963267948966 rad pos: 44.5,-42.5 + - uid: 4722 + components: + - type: Transform + parent: 2 + pos: -3.5,-26.5 - uid: 5357 components: - type: Transform @@ -104082,12 +104318,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 44.5,-43.5 - - uid: 14036 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: -6.5,-26.5 - uid: 19090 components: - type: Transform @@ -104762,11 +104992,11 @@ entities: pos: 30.5,-27.5 - proto: SpawnMobRaccoonMorticia entities: - - uid: 6973 + - uid: 17302 components: - type: Transform parent: 2 - pos: 24.5,-93.5 + pos: 24.5,-97.5 - proto: SpawnMobShiva entities: - uid: 1803 @@ -104831,16 +105061,21 @@ entities: pos: 32.5,-48.5 - proto: SpawnPointBorg entities: - - uid: 15326 + - uid: 14405 components: - type: Transform parent: 2 - pos: -11.5,-23.5 - - uid: 15327 + pos: -6.5,-21.5 + - uid: 14408 components: - type: Transform parent: 2 - pos: -10.5,-23.5 + pos: -5.5,-21.5 + - uid: 15694 + components: + - type: Transform + parent: 2 + pos: -4.5,-21.5 - proto: SpawnPointBotanist entities: - uid: 15313 @@ -105198,26 +105433,31 @@ entities: pos: 14.5,-94.5 - proto: SpawnPointScientist entities: - - uid: 4694 - components: - - type: Transform - parent: 2 - pos: -6.5,-19.5 - - uid: 15300 - components: - - type: Transform - parent: 2 - pos: -4.5,-25.5 - uid: 15301 components: - type: Transform parent: 2 pos: -21.5,-25.5 - - uid: 19618 + - uid: 15853 components: - type: Transform parent: 2 - pos: -12.5,-26.5 + pos: -4.5,-24.5 + - uid: 15856 + components: + - type: Transform + parent: 2 + pos: -9.5,-27.5 + - uid: 15857 + components: + - type: Transform + parent: 2 + pos: -13.5,-17.5 + - uid: 15878 + components: + - type: Transform + parent: 2 + pos: -20.5,-25.5 - proto: SpawnPointSecurityCadet entities: - uid: 908 @@ -105719,11 +105959,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: -1.5,-2.5 - - uid: 13960 - components: - - type: Transform - parent: 2 - pos: -9.5,-29.5 - uid: 14154 components: - type: Transform @@ -105863,11 +106098,6 @@ entities: - type: Transform parent: 2 pos: 43.5,-28.5 - - uid: 3694 - components: - - type: Transform - parent: 2 - pos: 44.5,-28.5 - uid: 3700 components: - type: Transform @@ -106819,6 +107049,17 @@ entities: id: AME West setupAvailableNetworks: - SurveillanceCameraGeneral + - uid: 14385 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 5.5,-4.5 + - type: SurveillanceCamera + nameSet: True + id: Arrivals, Tools + setupAvailableNetworks: + - SurveillanceCameraGeneral - uid: 16546 components: - type: Transform @@ -106910,7 +107151,7 @@ entities: - type: Transform parent: 2 rot: -1.5707963267948966 rad - pos: -1.5,-22.5 + pos: -1.5,-21.5 - type: SurveillanceCamera nameSet: True id: East Science Hallway @@ -107083,7 +107324,7 @@ entities: - type: Transform parent: 2 rot: 3.141592653589793 rad - pos: -6.5,-30.5 + pos: -5.5,-30.5 - type: SurveillanceCamera nameSet: True id: AME Hall, North @@ -107136,7 +107377,7 @@ entities: - type: Transform parent: 2 rot: -1.5707963267948966 rad - pos: 50.5,-44.5 + pos: 50.5,-43.5 - type: SurveillanceCamera nameSet: True id: Security Hallway @@ -107374,6 +107615,49 @@ entities: pos: 35.5,-95.5 - proto: SurveillanceCameraScience entities: + - uid: 16856 + components: + - type: Transform + parent: 2 + pos: -13.5,-21.5 + - type: SurveillanceCamera + nameSet: True + id: Anomaly Lab + setupAvailableNetworks: + - SurveillanceCameraScience + - uid: 16859 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -3.5,-21.5 + - type: SurveillanceCamera + nameSet: True + id: Robotics + setupAvailableNetworks: + - SurveillanceCameraScience + - uid: 16871 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -14.5,-27.5 + - type: SurveillanceCamera + nameSet: True + id: R&D Machinery + setupAvailableNetworks: + - SurveillanceCameraScience + - uid: 16921 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -7.5,-25.5 + - type: SurveillanceCamera + nameSet: True + id: R&D Front Desk + setupAvailableNetworks: + - SurveillanceCameraScience - uid: 16981 components: - type: Transform @@ -107385,17 +107669,6 @@ entities: id: RD's Office setupAvailableNetworks: - SurveillanceCameraScience - - uid: 17614 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: -9.5,-24.5 - - type: SurveillanceCamera - nameSet: True - id: Robotics - setupAvailableNetworks: - - SurveillanceCameraScience - uid: 17615 components: - type: Transform @@ -107407,16 +107680,6 @@ entities: id: Xenoarcheology setupAvailableNetworks: - SurveillanceCameraScience - - uid: 17617 - components: - - type: Transform - parent: 2 - pos: -12.5,-21.5 - - type: SurveillanceCamera - nameSet: True - id: Science Main Hall - setupAvailableNetworks: - - SurveillanceCameraScience - uid: 19094 components: - type: Transform @@ -107637,6 +107900,17 @@ entities: id: Bartender Backroom setupAvailableNetworks: - SurveillanceCameraService + - uid: 15300 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: -15.5,-33.5 + - type: SurveillanceCamera + nameSet: True + id: Altar Viewing Gallery + setupAvailableNetworks: + - SurveillanceCameraService - uid: 17596 components: - type: Transform @@ -107994,12 +108268,16 @@ entities: - type: Transform parent: 2 pos: 29.5,-13.5 - - uid: 1802 + - uid: 1690 components: - type: Transform parent: 2 - rot: 3.141592653589793 rad - pos: -3.5,-19.5 + pos: -9.5,-17.5 + - uid: 1853 + components: + - type: Transform + parent: 2 + pos: -14.5,-28.5 - uid: 2294 components: - type: Transform @@ -108470,11 +108748,6 @@ entities: - type: Transform parent: 2 pos: 30.5,-76.5 - - uid: 8017 - components: - - type: Transform - parent: 2 - pos: -3.5,-22.5 - uid: 9289 components: - type: Transform @@ -108630,11 +108903,6 @@ entities: - type: Transform parent: 2 pos: 44.5,-30.5 - - uid: 3698 - components: - - type: Transform - parent: 2 - pos: 44.5,-29.5 - uid: 6401 components: - type: Transform @@ -108737,11 +109005,21 @@ entities: - type: Transform parent: 2 pos: 26.5,-70.5 + - uid: 1802 + components: + - type: Transform + parent: 2 + pos: -8.5,-28.5 - uid: 2750 components: - type: Transform parent: 2 pos: -20.5,-47.5 + - uid: 4629 + components: + - type: Transform + parent: 2 + pos: -9.5,-28.5 - uid: 4793 components: - type: Transform @@ -108762,6 +109040,11 @@ entities: - type: Transform parent: 2 pos: 18.5,-76.5 + - uid: 5897 + components: + - type: Transform + parent: 2 + pos: -10.5,-28.5 - proto: TableFancyPurple entities: - uid: 165 @@ -109010,16 +109293,6 @@ entities: - type: Transform parent: 2 pos: 36.5,-13.5 - - uid: 9111 - components: - - type: Transform - parent: 2 - pos: -4.5,-28.5 - - uid: 9114 - components: - - type: Transform - parent: 2 - pos: -5.5,-28.5 - uid: 9589 components: - type: Transform @@ -109456,6 +109729,11 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 81.5,-51.5 + - uid: 15213 + components: + - type: Transform + parent: 2 + pos: -3.5,-22.5 - uid: 17271 components: - type: Transform @@ -109545,6 +109823,12 @@ entities: - type: Transform parent: 2 pos: 29.5,-30.5 + - uid: 598 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -5.5,-24.5 - uid: 1809 components: - type: Transform @@ -109556,6 +109840,11 @@ entities: - type: Transform parent: 2 pos: 27.5,-28.5 + - uid: 5801 + components: + - type: Transform + parent: 2 + pos: 35.5,-27.5 - uid: 8101 components: - type: Transform @@ -109705,11 +109994,11 @@ entities: - type: Transform parent: 2 pos: -25.5,-38.5 - - uid: 486 + - uid: 575 components: - type: Transform parent: 2 - pos: -6.5,-18.5 + pos: -9.5,-18.5 - uid: 920 components: - type: Transform @@ -109736,6 +110025,11 @@ entities: - type: Transform parent: 2 pos: -15.5,-30.5 + - uid: 2198 + components: + - type: Transform + parent: 2 + pos: -11.5,-18.5 - uid: 2316 components: - type: Transform @@ -109746,16 +110040,6 @@ entities: - type: Transform parent: 2 pos: -19.5,-41.5 - - uid: 5082 - components: - - type: Transform - parent: 2 - pos: -12.5,-21.5 - - uid: 5090 - components: - - type: Transform - parent: 2 - pos: -10.5,-21.5 - uid: 5101 components: - type: Transform @@ -109782,6 +110066,11 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: -25.5,-39.5 + - uid: 7442 + components: + - type: Transform + parent: 2 + pos: -7.5,-25.5 - uid: 7543 components: - type: Transform @@ -109861,11 +110150,6 @@ entities: - type: Transform parent: 2 pos: -32.5,-21.5 - - uid: 14119 - components: - - type: Transform - parent: 2 - pos: -11.5,-21.5 - uid: 14578 components: - type: Transform @@ -109902,6 +110186,16 @@ entities: - type: Transform parent: 2 pos: 66.5,-68.5 + - uid: 15471 + components: + - type: Transform + parent: 2 + pos: -14.5,-21.5 + - uid: 15478 + components: + - type: Transform + parent: 2 + pos: -13.5,-21.5 - uid: 15479 components: - type: Transform @@ -109938,11 +110232,6 @@ entities: - type: Transform parent: 2 pos: -32.5,-29.5 - - uid: 16438 - components: - - type: Transform - parent: 2 - pos: -12.5,-28.5 - uid: 16440 components: - type: Transform @@ -109958,11 +110247,6 @@ entities: - type: Transform parent: 2 pos: -16.5,-27.5 - - uid: 16513 - components: - - type: Transform - parent: 2 - pos: -11.5,-18.5 - uid: 16598 components: - type: Transform @@ -109998,11 +110282,6 @@ entities: - type: Transform parent: 2 pos: -24.5,-16.5 - - uid: 17694 - components: - - type: Transform - parent: 2 - pos: -7.5,-18.5 - uid: 17779 components: - type: Transform @@ -110048,11 +110327,6 @@ entities: - type: Transform parent: 2 pos: -52.5,-52.5 - - uid: 18109 - components: - - type: Transform - parent: 2 - pos: -13.5,-21.5 - uid: 18267 components: - type: Transform @@ -110068,11 +110342,6 @@ entities: - type: Transform parent: 2 pos: -52.5,-39.5 - - uid: 19206 - components: - - type: Transform - parent: 2 - pos: -9.5,-26.5 - uid: 20162 components: - type: Transform @@ -110387,6 +110656,11 @@ entities: - type: Transform parent: 2 pos: 62.51025,-57.18848 + - uid: 15889 + components: + - type: Transform + parent: 2 + pos: -5.5762095,-23.458902 - uid: 17751 components: - type: Transform @@ -110416,11 +110690,6 @@ entities: - type: Transform parent: 2 pos: -46.50093,-12.413582 - - uid: 19298 - components: - - type: Transform - parent: 2 - pos: -5.51822,-27.396221 - proto: ToolboxGoldFilled entities: - uid: 5149 @@ -110460,16 +110729,16 @@ entities: - type: Transform parent: 2 pos: 58.46033,-35.476738 + - uid: 10837 + components: + - type: Transform + parent: 2 + pos: -14.555741,-21.210285 - uid: 15482 components: - type: Transform parent: 2 pos: 62.040775,-57.438656 - - uid: 17842 - components: - - type: Transform - parent: 2 - pos: -13.449109,-21.35588 - proto: ToolboxMechanicalFilledAllTools entities: - uid: 5380 @@ -110582,13 +110851,11 @@ entities: - type: Transform parent: 2 pos: 72.64958,-67.37068 -- proto: TrashBagHolding - entities: - - uid: 11124 + - uid: 17395 components: - type: Transform parent: 2 - pos: 29.729424,-81.673744 + pos: 29.732185,-81.68248 - proto: TrashBakedBananaPeel entities: - uid: 4304 @@ -110610,6 +110877,11 @@ entities: - type: Transform parent: 2 pos: -20.356453,-65.337494 + - uid: 17309 + components: + - type: Transform + parent: 2 + pos: -61.367092,-24.523907 - proto: TubaInstrument entities: - uid: 19532 @@ -110979,11 +111251,11 @@ entities: - type: Transform parent: 2 pos: 17.5,-49.5 - - uid: 14385 + - uid: 17248 components: - type: Transform parent: 2 - pos: -41.5,-67.5 + pos: -42.5,-67.5 - proto: VendingMachineCoffee entities: - uid: 4630 @@ -111128,18 +111400,18 @@ entities: pos: 15.5,-48.5 - proto: VendingMachineRoboDrobe entities: - - uid: 16522 + - uid: 584 components: - type: Transform parent: 2 - pos: -13.5,-23.5 + pos: -7.5,-23.5 - proto: VendingMachineRobotics entities: - - uid: 16514 + - uid: 15413 components: - type: Transform parent: 2 - pos: -14.5,-27.5 + pos: -7.5,-19.5 - proto: VendingMachineSalvage entities: - uid: 6893 @@ -111264,11 +111536,11 @@ entities: pos: 17.5,-50.5 - proto: VendingMachineVendomat entities: - - uid: 5097 + - uid: 16923 components: - type: Transform parent: 2 - pos: -8.5,-28.5 + pos: -6.5,-29.5 - uid: 17242 components: - type: Transform @@ -113825,6 +114097,11 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 79.5,-42.5 + - uid: 486 + components: + - type: Transform + parent: 2 + pos: -5.5,-28.5 - uid: 500 components: - type: Transform @@ -113910,6 +114187,11 @@ entities: - type: Transform parent: 2 pos: -23.5,-21.5 + - uid: 536 + components: + - type: Transform + parent: 2 + pos: -2.5,-25.5 - uid: 550 components: - type: Transform @@ -113930,6 +114212,16 @@ entities: - type: Transform parent: 2 pos: -18.5,-14.5 + - uid: 574 + components: + - type: Transform + parent: 2 + pos: -2.5,-26.5 + - uid: 576 + components: + - type: Transform + parent: 2 + pos: -8.5,-17.5 - uid: 590 components: - type: Transform @@ -113945,26 +114237,6 @@ entities: - type: Transform parent: 2 pos: -23.5,-28.5 - - uid: 594 - components: - - type: Transform - parent: 2 - pos: -9.5,-28.5 - - uid: 596 - components: - - type: Transform - parent: 2 - pos: -9.5,-27.5 - - uid: 597 - components: - - type: Transform - parent: 2 - pos: -8.5,-27.5 - - uid: 598 - components: - - type: Transform - parent: 2 - pos: -6.5,-27.5 - uid: 603 components: - type: Transform @@ -113980,41 +114252,11 @@ entities: - type: Transform parent: 2 pos: -20.5,-17.5 - - uid: 608 - components: - - type: Transform - parent: 2 - pos: -2.5,-23.5 - - uid: 609 - components: - - type: Transform - parent: 2 - pos: -2.5,-22.5 - - uid: 610 - components: - - type: Transform - parent: 2 - pos: -2.5,-21.5 - - uid: 611 - components: - - type: Transform - parent: 2 - pos: -2.5,-20.5 - uid: 612 components: - type: Transform parent: 2 pos: -2.5,-19.5 - - uid: 631 - components: - - type: Transform - parent: 2 - pos: -8.5,-18.5 - - uid: 632 - components: - - type: Transform - parent: 2 - pos: -8.5,-17.5 - uid: 636 components: - type: Transform @@ -115577,11 +115819,6 @@ entities: - type: Transform parent: 2 pos: -2.5,-29.5 - - uid: 1699 - components: - - type: Transform - parent: 2 - pos: -4.5,-29.5 - uid: 1700 components: - type: Transform @@ -116692,11 +116929,6 @@ entities: - type: Transform parent: 2 pos: 29.5,-58.5 - - uid: 2111 - components: - - type: Transform - parent: 2 - pos: -6.5,-28.5 - uid: 2114 components: - type: Transform @@ -116981,7 +117213,7 @@ entities: components: - type: Transform parent: 2 - pos: -12.5,-29.5 + pos: -4.5,-18.5 - uid: 2247 components: - type: Transform @@ -117047,6 +117279,11 @@ entities: - type: Transform parent: 2 pos: -16.5,-71.5 + - uid: 2271 + components: + - type: Transform + parent: 2 + pos: -3.5,-18.5 - uid: 2272 components: - type: Transform @@ -117792,16 +118029,6 @@ entities: - type: Transform parent: 2 pos: 65.5,-74.5 - - uid: 3010 - components: - - type: Transform - parent: 2 - pos: -9.5,-29.5 - - uid: 3011 - components: - - type: Transform - parent: 2 - pos: -6.5,-29.5 - uid: 3014 components: - type: Transform @@ -119449,6 +119676,11 @@ entities: - type: Transform parent: 2 pos: 56.5,-73.5 + - uid: 4310 + components: + - type: Transform + parent: 2 + pos: -6.5,-28.5 - uid: 4314 components: - type: Transform @@ -119559,6 +119791,11 @@ entities: - type: Transform parent: 2 pos: 41.5,-60.5 + - uid: 4469 + components: + - type: Transform + parent: 2 + pos: -7.5,-18.5 - uid: 4478 components: - type: Transform @@ -119634,11 +119871,6 @@ entities: - type: Transform parent: 2 pos: 30.5,-14.5 - - uid: 4629 - components: - - type: Transform - parent: 2 - pos: -15.5,-26.5 - uid: 4633 components: - type: Transform @@ -119729,6 +119961,11 @@ entities: - type: Transform parent: 2 pos: -2.5,-18.5 + - uid: 5053 + components: + - type: Transform + parent: 2 + pos: -8.5,-18.5 - uid: 5076 components: - type: Transform @@ -119944,6 +120181,11 @@ entities: - type: Transform parent: 2 pos: 34.5,-75.5 + - uid: 6388 + components: + - type: Transform + parent: 2 + pos: 83.5,-17.5 - uid: 6415 components: - type: Transform @@ -120028,6 +120270,11 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 61.5,-53.5 + - uid: 7221 + components: + - type: Transform + parent: 2 + pos: -2.5,-21.5 - uid: 7235 components: - type: Transform @@ -120650,6 +120897,11 @@ entities: - type: Transform parent: 2 pos: 6.5,-81.5 + - uid: 8839 + components: + - type: Transform + parent: 2 + pos: -2.5,-20.5 - uid: 8867 components: - type: Transform @@ -120948,11 +121200,6 @@ entities: - type: Transform parent: 2 pos: 71.5,-56.5 - - uid: 11853 - components: - - type: Transform - parent: 2 - pos: -8.5,-26.5 - uid: 11916 components: - type: Transform @@ -121159,11 +121406,6 @@ entities: - type: Transform parent: 2 pos: 76.5,-18.5 - - uid: 14125 - components: - - type: Transform - parent: 2 - pos: -9.5,-17.5 - uid: 14127 components: - type: Transform @@ -121277,6 +121519,11 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 48.5,-62.5 + - uid: 15216 + components: + - type: Transform + parent: 2 + pos: -8.5,-19.5 - uid: 15225 components: - type: Transform @@ -121461,11 +121708,21 @@ entities: - type: Transform parent: 2 pos: 56.5,-58.5 + - uid: 17173 + components: + - type: Transform + parent: 2 + pos: 82.5,-17.5 - uid: 17244 components: - type: Transform parent: 2 pos: 73.5,-50.5 + - uid: 17247 + components: + - type: Transform + parent: 2 + pos: 81.5,-17.5 - uid: 17252 components: - type: Transform @@ -122323,6 +122580,11 @@ entities: pos: 20.5,-81.5 - proto: WallSolidChitin entities: + - uid: 86 + components: + - type: Transform + parent: 2 + pos: -8.5,-24.5 - uid: 125 components: - type: Transform @@ -122394,7 +122656,7 @@ entities: components: - type: Transform parent: 2 - pos: -8.5,-23.5 + pos: -15.5,-24.5 - uid: 236 components: - type: Transform @@ -122420,11 +122682,6 @@ entities: - type: Transform parent: 2 pos: -48.5,-28.5 - - uid: 257 - components: - - type: Transform - parent: 2 - pos: -9.5,-23.5 - uid: 337 components: - type: Transform @@ -122435,6 +122692,11 @@ entities: - type: Transform parent: 2 pos: -18.5,-49.5 + - uid: 375 + components: + - type: Transform + parent: 2 + pos: -6.5,-25.5 - uid: 376 components: - type: Transform @@ -122642,47 +122904,38 @@ entities: - type: Transform parent: 2 pos: -19.5,-23.5 - - uid: 574 - components: - - type: Transform - parent: 2 - pos: -9.5,-22.5 - - uid: 575 - components: - - type: Transform - parent: 2 - pos: -10.5,-22.5 - - uid: 576 - components: - - type: Transform - parent: 2 - pos: -11.5,-22.5 - uid: 577 components: - type: Transform parent: 2 - pos: -12.5,-22.5 - - uid: 578 - components: - - type: Transform - parent: 2 - pos: -13.5,-22.5 + pos: -8.5,-23.5 - uid: 581 components: - type: Transform parent: 2 rot: 3.141592653589793 rad pos: 39.5,-33.5 - - uid: 584 - components: - - type: Transform - parent: 2 - pos: -15.5,-23.5 - uid: 589 components: - type: Transform parent: 2 pos: -16.5,-23.5 + - uid: 597 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -14.5,-29.5 + - uid: 608 + components: + - type: Transform + parent: 2 + pos: -13.5,-22.5 + - uid: 609 + components: + - type: Transform + parent: 2 + pos: -4.5,-25.5 - uid: 652 components: - type: Transform @@ -123835,6 +124088,12 @@ entities: - type: Transform parent: 2 pos: -60.5,-26.5 + - uid: 1699 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -12.5,-29.5 - uid: 1714 components: - type: Transform @@ -123846,6 +124105,11 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: -14.5,-33.5 + - uid: 1760 + components: + - type: Transform + parent: 2 + pos: -3.5,-25.5 - uid: 1807 components: - type: Transform @@ -124093,12 +124357,27 @@ entities: - type: Transform parent: 2 pos: 47.5,-25.5 + - uid: 2325 + components: + - type: Transform + parent: 2 + pos: -8.5,-22.5 + - uid: 2342 + components: + - type: Transform + parent: 2 + pos: -5.5,-25.5 - uid: 2343 components: - type: Transform parent: 2 rot: 3.141592653589793 rad pos: -14.5,-36.5 + - uid: 2379 + components: + - type: Transform + parent: 2 + pos: -6.5,-23.5 - uid: 2380 components: - type: Transform @@ -124391,6 +124670,11 @@ entities: - type: Transform parent: 2 pos: -17.5,-44.5 + - uid: 3011 + components: + - type: Transform + parent: 2 + pos: -9.5,-22.5 - uid: 3012 components: - type: Transform @@ -125113,6 +125397,11 @@ entities: - type: Transform parent: 2 pos: 3.5,-44.5 + - uid: 5090 + components: + - type: Transform + parent: 2 + pos: -10.5,-22.5 - uid: 5098 components: - type: Transform @@ -125368,6 +125657,12 @@ entities: - type: Transform parent: 2 pos: 3.5,-71.5 + - uid: 6645 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -11.5,-29.5 - uid: 6657 components: - type: Transform @@ -125531,12 +125826,22 @@ entities: - type: Transform parent: 2 pos: 78.5,-65.5 + - uid: 7440 + components: + - type: Transform + parent: 2 + pos: -6.5,-24.5 - uid: 7461 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad pos: 6.5,-74.5 + - uid: 7529 + components: + - type: Transform + parent: 2 + pos: -15.5,-23.5 - uid: 7537 components: - type: Transform @@ -125670,6 +125975,18 @@ entities: - type: Transform parent: 2 pos: 76.5,-55.5 + - uid: 8017 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -15.5,-29.5 + - uid: 8019 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -11.5,-28.5 - uid: 8036 components: - type: Transform @@ -125686,6 +126003,11 @@ entities: - type: Transform parent: 2 pos: 49.5,-45.5 + - uid: 8107 + components: + - type: Transform + parent: 2 + pos: -7.5,-24.5 - uid: 8115 components: - type: Transform @@ -125792,6 +126114,11 @@ entities: - type: Transform parent: 2 pos: 54.5,-47.5 + - uid: 8653 + components: + - type: Transform + parent: 2 + pos: -5.5,-26.5 - uid: 8691 components: - type: Transform @@ -125810,6 +126137,12 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 50.5,-77.5 + - uid: 9111 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -13.5,-29.5 - uid: 9328 components: - type: Transform @@ -126242,23 +126575,12 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: -14.5,-34.5 - - uid: 13952 - components: - - type: Transform - parent: 2 - pos: -15.5,-29.5 - uid: 13961 components: - type: Transform parent: 2 rot: 3.141592653589793 rad pos: -14.5,-35.5 - - uid: 14027 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -14.5,-29.5 - uid: 14029 components: - type: Transform @@ -126365,6 +126687,12 @@ entities: - type: Transform parent: 2 pos: -17.5,-52.5 + - uid: 14701 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 44.5,-29.5 - uid: 14711 components: - type: Transform @@ -126766,11 +127094,6 @@ entities: - type: Transform parent: 2 pos: -26.5,-47.5 - - uid: 7434 - components: - - type: Transform - parent: 2 - pos: -9.5,-18.5 - uid: 7777 components: - type: Transform @@ -126791,6 +127114,11 @@ entities: - type: Transform parent: 2 pos: 51.5,-54.5 + - uid: 15417 + components: + - type: Transform + parent: 2 + pos: -6.5,-26.5 - proto: WaterTankFull entities: - uid: 3764 @@ -126930,6 +127258,24 @@ entities: deviceLists: - 10829 - 19023 + - uid: 15236 + components: + - type: Transform + parent: 2 + pos: 83.5,-49.5 + - type: DeviceNetwork + deviceLists: + - 19023 + - 10829 + - uid: 15269 + components: + - type: Transform + parent: 2 + pos: 83.5,-41.5 + - type: DeviceNetwork + deviceLists: + - 19023 + - 10829 - uid: 19485 components: - type: Transform @@ -126960,12 +127306,12 @@ entities: pos: 95.5,-44.5 - type: DeviceList devices: - - 10842 + - 15269 + - 15236 - 7576 - 19485 - 19486 - - 10837 - - 10250 + - 10842 - uid: 19023 components: - type: Transform @@ -126974,32 +127320,14 @@ entities: pos: 78.5,-45.5 - type: DeviceList devices: - - 10837 - - 10250 - - 10842 - - 19486 - - 19485 - 7576 + - 19485 + - 19486 + - 10842 + - 15269 + - 15236 - proto: WeaponEnergyTurretCommand entities: - - uid: 10250 - components: - - type: Transform - parent: 2 - pos: 83.5,-49.5 - - type: DeviceNetwork - deviceLists: - - 10829 - - 19023 - - uid: 10837 - components: - - type: Transform - parent: 2 - pos: 83.5,-41.5 - - type: DeviceNetwork - deviceLists: - - 10829 - - 19023 - uid: 19396 components: - type: Transform @@ -127626,6 +127954,16 @@ entities: pos: 14.5,-70.5 - proto: WindoorPlasma entities: + - uid: 1854 + components: + - type: Transform + parent: 2 + pos: -10.5,-28.5 + - uid: 1961 + components: + - type: Transform + parent: 2 + pos: -9.5,-28.5 - uid: 2876 components: - type: Transform @@ -127652,18 +127990,19 @@ entities: - type: Transform parent: 2 pos: 20.5,-76.5 + - uid: 8702 + components: + - type: Transform + parent: 2 + pos: -8.5,-28.5 +- proto: WindoorScienceLocked + entities: - uid: 8491 components: - type: Transform parent: 2 rot: 3.141592653589793 rad - pos: -6.5,-18.5 - - uid: 10558 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: -7.5,-18.5 + pos: -4.5,-23.5 - proto: WindoorSecurityLocked entities: - uid: 3579 @@ -127857,6 +128196,12 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 18.5,-31.5 + - uid: 484 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -5.5,-23.5 - uid: 2223 components: - type: Transform @@ -128034,6 +128379,12 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 25.5,-51.5 + - uid: 8152 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: -3.5,-23.5 - uid: 8367 components: - type: Transform @@ -128180,6 +128531,11 @@ entities: pos: -25.41542,-22.406422 - proto: Wrench entities: + - uid: 2111 + components: + - type: Transform + parent: 2 + pos: -9.481896,-17.432177 - uid: 6656 components: - type: Transform @@ -128215,11 +128571,6 @@ entities: - type: Transform parent: 2 pos: 0.46065357,-56.502483 - - uid: 18303 - components: - - type: Transform - parent: 2 - pos: -13.546322,-21.423643 - uid: 18373 components: - type: Transform @@ -128332,12 +128683,22 @@ entities: - type: Transform parent: 2 pos: 0.5,-38.5 + - uid: 1077 + components: + - type: Transform + parent: 2 + pos: -2.5,-23.5 - uid: 1123 components: - type: Transform parent: 2 rot: -1.5707963267948966 rad pos: 53.5,-66.5 + - uid: 1160 + components: + - type: Transform + parent: 2 + pos: -2.5,-24.5 - uid: 1184 components: - type: Transform @@ -128428,16 +128789,6 @@ entities: - type: Transform parent: 2 pos: 22.5,-44.5 - - uid: 1853 - components: - - type: Transform - parent: 2 - pos: -3.5,-23.5 - - uid: 1854 - components: - - type: Transform - parent: 2 - pos: -4.5,-23.5 - uid: 1857 components: - type: Transform @@ -128458,16 +128809,6 @@ entities: - type: Transform parent: 2 pos: -20.5,-19.5 - - uid: 1961 - components: - - type: Transform - parent: 2 - pos: -5.5,-23.5 - - uid: 1963 - components: - - type: Transform - parent: 2 - pos: -6.5,-23.5 - uid: 2204 components: - type: Transform @@ -128704,6 +129045,11 @@ entities: - type: Transform parent: 2 pos: 7.5,-70.5 + - uid: 3165 + components: + - type: Transform + parent: 2 + pos: -7.5,-28.5 - uid: 3220 components: - type: Transform @@ -128894,11 +129240,6 @@ entities: - type: Transform parent: 2 pos: 81.5,-33.5 - - uid: 4210 - components: - - type: Transform - parent: 2 - pos: -4.5,-18.5 - uid: 4221 components: - type: Transform @@ -128909,11 +129250,6 @@ entities: - type: Transform parent: 2 pos: -1.5,-39.5 - - uid: 4310 - components: - - type: Transform - parent: 2 - pos: -3.5,-18.5 - uid: 4313 components: - type: Transform @@ -128954,16 +129290,6 @@ entities: - type: Transform parent: 2 pos: 22.5,-41.5 - - uid: 4392 - components: - - type: Transform - parent: 2 - pos: -5.5,-18.5 - - uid: 4397 - components: - - type: Transform - parent: 2 - pos: -2.5,-26.5 - uid: 4398 components: - type: Transform @@ -129059,16 +129385,6 @@ entities: - type: Transform parent: 2 pos: 77.5,-17.5 - - uid: 4469 - components: - - type: Transform - parent: 2 - pos: -2.5,-25.5 - - uid: 4470 - components: - - type: Transform - parent: 2 - pos: -2.5,-24.5 - uid: 4471 components: - type: Transform @@ -129656,6 +129972,11 @@ entities: - type: Transform parent: 2 pos: 44.5,-58.5 + - uid: 6975 + components: + - type: Transform + parent: 2 + pos: -2.5,-22.5 - uid: 7409 components: - type: Transform @@ -129964,4 +130285,16 @@ entities: - type: Transform parent: 2 pos: 7.5,-71.5 +- proto: ZiptiesBroken + entities: + - uid: 17328 + components: + - type: Transform + parent: 2 + pos: 35.1793,-28.563358 + - uid: 17342 + components: + - type: Transform + parent: 2 + pos: 35.61558,-29.265411 ... diff --git a/Resources/Prototypes/Maps/exo.yml b/Resources/Prototypes/Maps/exo.yml index a0aa5c83ab..0931f375d6 100644 --- a/Resources/Prototypes/Maps/exo.yml +++ b/Resources/Prototypes/Maps/exo.yml @@ -39,11 +39,12 @@ AtmosphericTechnician: [ 2, 2 ] StationEngineer: [ 4, 4 ] TechnicalAssistant: [ 2, 2 ] - #medical (8-8) + #medical (9-9) Chemist: [ 2, 2 ] MedicalDoctor: [ 3, 3 ] Paramedic: [ 1, 1 ] MedicalIntern: [ 2, 2 ] + Psychologist: [ 1, 1 ] #science (6-6) Scientist: [ 4, 4 ] ResearchAssistant: [ 2, 2 ] From 7b3a18ac9579219437e70671e0eb2431e8678d9b Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> Date: Fri, 11 Sep 2026 17:54:58 +0000 Subject: [PATCH 121/197] Fix Hristov shooting through doors. (#45934) * burbmbnsafb * comment out --- .../Entities/Structures/Bases/structure_health.yml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/Resources/Prototypes/Entities/Structures/Bases/structure_health.yml b/Resources/Prototypes/Entities/Structures/Bases/structure_health.yml index c57ddc63db..989bcf852e 100644 --- a/Resources/Prototypes/Entities/Structures/Bases/structure_health.yml +++ b/Resources/Prototypes/Entities/Structures/Bases/structure_health.yml @@ -237,9 +237,6 @@ - trigger: !type:DamageTrigger damage: 100 behaviors: *DoDestruction - - trigger: !type:DamageTrigger - damage: 50 - behaviors: *DoBreakage # Airlocks / firelocks - type: entity @@ -252,9 +249,6 @@ - trigger: !type:DamageTrigger damage: 200 behaviors: *DoDestruction - - trigger: !type:DamageTrigger - damage: 100 - behaviors: *DoBreakage # High-security airlocks / blast doors - type: entity @@ -267,9 +261,6 @@ - trigger: !type:DamageTrigger damage: 350 behaviors: *DoDestruction - - trigger: !type:DamageTrigger - damage: 250 - behaviors: *DoBreakage #endregion #region Walls From abaaac63c941a5db480b6ab85244ff2dc1a84c5e Mon Sep 17 00:00:00 2001 From: jckspjf Date: Fri, 11 Sep 2026 18:06:33 +0000 Subject: [PATCH 122/197] Web Door Opening Sprite (#45944) fix webdoor opening --- .../MaterialDoors/web-door.rsi/opening.png | Bin 3585 -> 6110 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Resources/Textures/Structures/Doors/MaterialDoors/web-door.rsi/opening.png b/Resources/Textures/Structures/Doors/MaterialDoors/web-door.rsi/opening.png index 4688b8772cec89063ab33d5d00a0f83f695028ac..79c4cf3ef0a3bac66b9598acf4d530f4f217c9c1 100644 GIT binary patch literal 6110 zcmd5=XH-+$w%!;>5JOQ!h=dM;s5BKqM?k7dk)l!pf=7-Tno>=q1gT0B2pVY;P=XLE zNa#&8s3-wJLazc+B@mjt9rT`i-x%+W@qWHPA$tt=T64|$wUs#QGp4*e`*{EW;59ch zwgmtVN$`6(Hx&FV{{E^5{KIkG*3=Lv{e+wZ0O3q?;}dql4`;G!eUOf+EeTD)86AgQ z@9@l1NH=cS3q$BgcM+1suj1S7b#x@P@oj=79|7~?raV$fKyvWep~A$V9knsaw<78{MNFpCH*0c!*`M8{R`!3X-I%To<18d+8#1oJwus|L zKPJ#mV=6)+z{X1024nZc$|Yas7#*u=h%?f>xVq+_IXWVWmx-qEoAL~(CO+&}j2@xO z3q8~;0)W9Kb1r+`+p8C$sH|T}KLOyOa$7E@ta=jj^7hZM^BP-|_jo=LF3)!o&;U?} zRh=Fmo2dvrds`)n<-h9NG|xK}J2~B$($IBVrhvk0%7+#-_4fJX>)hlbyC)79WKF(2 z8oc%cP7dW^{#cMaa!tM5x=oyapH9)7OgH`V^6ppPdJXNZICT9&&^~tDMzP8SepC2> zKw@T%9`Ya-hq7h$_>-28`;9J-!|x?@9eOf#5X&4B{(Q}Q2&`N_;5d+<(?+=LyAa9+ z&Vk}so#uV*+v>%yM|J_vE^JQC+~skvv+Hdkw8qFp`*6q1x-Bg*hs=hyOO77F?tG6s zjjX6X2m$Iwu_4fp<7F#jr|Eo!3urRfp{Epv_ety8P5+(DAAUX|oi6}jdb(^nVSZtJ zX7%44V9gL(y?)oLd2#)pdTVHUk}ei}mH69pDEcDy)>(#X6%KK6mFiDg3>Y$-)P9@N z8gxg7K#3noKK`YkS>rULU;_Lg#uUy_r+bKnw?miD5d(=C<;-XoSzh;Cx(l|#5M_w< z@QYeo^9LBPyzNb0Q2tjWPzsGv62W#FA8}Vq_|u4mGllE1Wq-&2I#?BenOL+B$+J3x z{$$-CY)>Ps5#~>(FZKyo}>=#d=;Nu`5R zGtlt_MDH=oivF(xo`vy&b(N<8CkSkb;uGJZ0dLv?@veH#HsOs}8?Th2)* zKNu1LKpe4gW5BpJL@K4WeH`D{|8!RS;J{O*yl=gVInvEp->!LAX7P}c@MV^aJ40eL zfhkei?$$1XOc~{nsUli9F|DQyS#c8LYcA#?8_FEMG?(D0?AlN)tei)F>`Q-T-AV7) z(FyP&mOSUx;$@KN*eV-U5iGU>i@FFF*R-@fYg!7eD!I=g0(Jx=_v6L3?TfK}G zXzg0J3fpM>lC!l~o+Jf7a38x`rK;(SWwZ33gd7s?BurP z*x#JWfFS&IrVEVsrAuuNV6R?Y^}0D%427 z@<{kK)~X&K>0H{cDgrWMTZs&|L~3e~&v76jvSSq!_eA90n9qX?_6z4y9SXXNUS)9e zOLjlbpF+R6x#j+O!f$JTLkXe$Oes9KLNAEP92;Z?8-fi9#ymV%ql7$&YeD(1PNDc* zTyX}>AF938TL9+eOjeb>Zl_6C**BAlSz{kE60V3Y-HTMOkpi2E1L@Bm1RFb7hu_V7 zL?m`~l{^WLT-!+v6 z04nui&ki?(|K0=Ht9(D)S?i5!C56KHgp`O~WSabWecs&$3-*td^;`fgk+^sJAQ(;C z^#>dNH?I%u2M7UU#)Z&m?z{>j! znM*MwP}BdQLk*NetMVb$%x;}D<6Y;`)qOX_$lcKR{;A^_U$%Nf__>v8oK?$iC;9Ls ziZs(Opn6k%a~%_he`qE4^6#)s+`}~)p~L0fxAP%!tBdG#4Dam=O4LzT7mc6^?>Eh&xe53-3eub0#FWg8bJ?~$i>wrD&3 zY=--4ZAzF?R#z9{J%2HX{pwCAbauec9KE7JY{*w;@Ce4#{$}Zap5tH2uw4PD3{5Ev z;!)!w7--JMdRn(YXU^8so}Pt&tJ3Bq-HB{P(YyWbX1}STXedTWHT`i-(^K0>VjD6> z)4%IdA+q3#VUR~7y2>?xf3G^x359#4Zf;u9R>-<95dV0icXYixhe@Ft-sgt8;oT6zJ4J@ zq;sRN%p-VRt!a_1j?}CGnm9y04!U~Fpn)-6` zl@KSN?vw2TP_4dZ!l5XcCXIcjPbkW;XE=eWKXK>ras*!Ol(Pwqgnz#p|DRqv38h(1 zwjwN8k1SSgxAxRLX&}XZ>TYZmP#5 z&`J_~&RYTl0(_nRY)_K+Bz^rYNZUL{SqQx~jrRD?Rh5|M==L2dC)LCyMLb z3ul_$rbQce(>2m$GPVu3d ztPi*8DKJ;3^~4CeqN3r`)B6sP72cs88WR;eQSI21UM>4JTM3wBjqPuOTim!8?$)za z6td~@N5bBPNRv?(oRRJIF>0rR(cx1U(p?|7Uy#-bcgsm6hYihc#+=A8trWf2*Wx7a z2>tAwQwfID`B0s_no?wy`kBMqdhUU&zy=^=lqh<+p&D;+;QghM`u)+N#0VkkmoG#` z7@kHr#1(UwT`U@%*u9;|Ferc40~F|9(Id=&t3S9}?%K792fZeOIno`>s-Tp%)uIEx zV4s$$)r1GH{K5y`QE~DiTSL(xlM+RKJM*>`k(U1D%%>3maDc_1Q2<7P6F0+${Om;sFYBM_UK{wKd*=hHhJpX9?0t3A4J_@8SIJLKL&d;834=K-f3#T!cRkuha1 zgVq6xBd^t$gRlQwpPsV{@^G%INK%G8!>bsB6Pnfg=1=;O{A%c(l%VOE85vXaXlB6r zq`D4NkQkHdB{f}KPAoMNViU?O=1SL!5hMdWn-hrY2~bVib7T>$GfpbK${N}B;Fs`RLKYCs=_uU&<;xn zivL9EyRWf7!rd6IQwF4~`auBcRzalln)uJF2E^P*vDl^aQ2N_~a+d)c^MObi}fp3dZ76HaVR)&tuSG%CEJkB$#jP0#%a*g?YV|wquRe0gv zYCzjBRxo(Y%q1lGz_*9EG4w`Y8x!nkhCzM3Ulo8Xh*}@~9wQO9_OA9}7>>uWmIB+Q zOP-qD3c}=XW{0gjA*cVG?$JYM*S868MVZ?3+Uw4ov0nRdr-&?}o7?}I7rU~-sE?a% zz{5MXCKAHjTqXzw9@Z;1A zr>%R`$gNFE7e3H;^Z6%!{pWw{decnHUthU3m2~^VDMmOS&bTX~RIpF^yH(Qh*|r$f z_L;EWUlXlI$C7q+cCTGuV0PI%c9dvb_S03uXu9;wcsJ7DP9z|lH*3Uq0+yHXD;&A} z*K3a!_5gKOfucj^Ce0F4#ZyIr9-njHX*`{3Pqw1Z+*ubKvDKXG-f6HoS=NBRpB+qP zwnVP1$d^!0kJd>bI@fHrRxiHEE`!OSFXyaIB&<&^k?18`;N6edDfdCxNdK1Y@bW~M z4GTeVQqo_Y{wh(vMeHo-;%_@=-Oh!!H!vK!l^up7FFo4Xl24wM1MFDyvzcs**RRP0 zK9itrwL8(@_HcxM`dNyh4#Gx9pC$A+N?n$)f4$g6>&Q^VUnOFKfb0$-oh?^=vSR$@ z6e^~^%Su>aJi!W&CRICYD<8p2SYrf7NF{VJ$ zv)av=vwSn*BDR9z2ji=8xvG)eXk76h%B&_4WZDY-DWNNJqwdCk!U`4;4JV@g(1NOwx%+K?i$?pWD zQxpoJh|eG%GnN0M!D9&w>$rVQ4VJ}o*(=y;@vU>uo3`gGMnClnL-}zudu93Qs zi0=|>Fj%PIG)OVq>xe(&71}<1g(KoXx10PirToxleA($OWg%c}kDaWd{3T63GDsqw zg=>n^i;OSoin{?hh+rJeYsZ5}qjnRmFHc1H(eHhpDGk@o82QY#yAP6#&FGBzOeNfcb|Vn=6f{-v6-#g1A) zq^BFZ1_xtWicP(A55vKjbDx);q8Qkb>jY0XBXj7u(ilG0gBk4oz~Lsa!ystKqCb)v z=~=)&T8=ED+x?PT0c4OfP+mcKpUG{}6!BiFpupiUmxG>@fC3`Z(@jfv2@dCh)y=Bw zNSGk@A}qol^S0iRRvGy2!OZi+7aIpPoCBIdoFRkfpl|u3h=s2|)%E-(dIVy0m-nui z4CL&lzsLFtrB;ZDnY z-lE2dxWDY4M6-P%OBV0QdinfC)LsI(0ImTUeCgP{|Mw4i!_*fs|vAfF5@pyAbTb~$MMcRFXhkUT%j zrclVO_XcY-`Xu=1=Yo&n{!s9}w-XZ>OOX5Tj6QQN|CRx6kfHB}yyn$)6oWv;@N@=g zDgNLNGaTHgPbW2Ei9rAfZtZEGdOQHg1(}}$H@<xw;qMCkMQ=&<0TYjuLzG|~-+9x5Lyyb>fjB-# zJlrcM!QT?t8z-JYmCxgUElVfjW^jyG~GZ} z%kyB&*pP+pVT)}Lnc11(EmfSFk^2g6039VDFr{rSoUgtUPe03hY9c?A%}s5PN%190 zK#?oKnhX4KhW3B5GW-=XW=b~K!ZJQwz60Cfdld~1=$a7u`uwa*WhF=$gZ{V2U;t=6z Wcl#FLS{n5s2EZ%xnBc&+!I=V#Zk0Lkqq=k0({{lb^O=pe#@ZFz zvL8r}jb%wEhQG+He6t%xM%kAMd`NGem5@IWdrrPPxM-zk}vqz8CvzrG3X6C07RQ5=KvHvI6$ELN$ z%>f+gH*3pc2E$mqR?ewL>3-JfvQMY-vctYp+8UWq2Rtc_NwXTaLcAnWC|~}{S8m41 z;1LKdVhs6larw%N*W#L-Z*7ta3iB8g{czE7*LT#EE^)|#pYxiz5^OffCj^fl_-i@G zF-&~>bW9gSwEQRriv>S>PGT>+RBEWHniB2FnAV1C>optji zu$wJ^A^`w0FSDoz#+!Q$(eBiG_IljX=?Vc=oH2jLU`(f4;nUo)&7DqQ$Kj%u=YP~Q z4fal|VIAJK;bg|;5qcyFxu93LlxWHs!g-IQ5pF)Es+w)O4t7s%x010VpuE7;LOuHQ zG%*O29B-ZbkV=hrWjJY#_g1aEEgMdz-mJVkU;aKS_@mtz?mxJNt-O4}l==e(jrJqU z01Zod>Qdd)_F<$SqR=<(A7a9uc_rkYu@6cvZnWE^Njqh8E}ls>WLkn*S5t0COx_~bE9&BBWHypr@UU-L?w1??5%#H*p!Y`g9| zab7_at5qY|QS<$ir%^$D_Pdr8@|3%9bOuxI=Z7WR#XO?v)ykp^Vq!-Y5AI_d{F)@o z1);d;cKyw~u-ydPVK79+6;BI1+YE-+OkoW6*Z(3)s(+Qk=96AuYe?-I9=*7N zX+GQYr{B%muMeqJbNP%Np&q9_ZyAE)&I9qp8_a`P=Wl9v1}Vf>BQTq+GRxu-7w^wM zb0ZxIsPxG5#AB^$UC%sPdtpNP5@o)6GJ{F`@L!^Q1a7|WKz9cWm$wh|eNZ&{mWJtj zgb2&a%jiF2Z)k>fYkc8sN2Rf#jhk4a7kD_q;UmUOQS?!DeOATu{h@0Sw zd~QlaY$TZB+) zPsgHRatOSfVCA_c>o6T%)(Wu?;7gq?r>cB-62>N!UJNotIm|18*5tNM%~hU^6uR+5 zB5Ju{((PS5eI-#{ej0}EZ^j;w?#(RiT(LWmLfvl?Y=JXuSX}rP)1BJ3suy)Zm#~+i z8k}y0cSZ2YCv!mw4%Xhj{@>|}PoizcbCj%3jQ$?<8DoXVR~y~3wv6kmWH9nGf?id* z%g7nwpZ$pTC2kLeP{DcI9k-OUx}oIkEPU}A%?!mgg&YF?@W#SS5?kw+6jy6&%Q;@U z$KLlbGnZ$e@)PyqUb`^|=RN!;hyNJY--bw9O0?m$wkfed%7&6vsZ`Cca+fYFEqsHz zLAbV>dFi%LPT-m_WSqJpYuzwnL5I5H6%h!&k2M)gi0;s8O5F0*ZJ2Fet$$f*KOTGB zihy#4x>H#!za24tR%tzzAuY~|6Io#sE^)W}E|bWo{7;cVR?SJmjv-v9#5u5@-hXtW zIy5VM?-2~sG%(cYh%E!{&I(KXD{7T}~?wl_liHb)KQlp++P-gW?&fSzmrVKz-|5b4+m^_@wG@{pd zuTkzS$>#|~_1*uhEN%pZG4exlijjO;C&CywU+>bCLJArTG)d3-KL~aCYIH-Uj;`^t zOZ(?P!+1nsAK@G|Mt+M%Jy7E<{r`V{!CD36>HSo{g(y^~*It?FH?J1%#pY#HX+E7L zaI%w^JUg7qZn4(daL#)sBPzEj+!Cf){RtG7!@>Ffvuc*%`VBVPB@vO(iF<3!IAPaD z62)kfG(OC;wl)yEvY#!53hQuZit!V6tA8zr-$Q?YpsJ{$$gP;mSaWMX~s*V{fB)>6I;vlRdj(ZCsT>a~36SI#o9e&c?nItwxZAiDfBeNheWdx}(oa zm<_G%#IGS@aNVuIpq}K4O6fww_l%n*)%>@W_z@9NtGZT3S2|nw260tz7YQ7xl=Op` zjJ{jFW)UZ0GXKfI|4A__ zNF8_i?1Wv|pW;KMwoF7;ZjSrz23B~>;_WQVFvq(iYRcNWY7ek$;t%7Nr7n9xTgqM_ zZO~twPJi}Z0hl&&AhCbINL+AKe8h-FT{n~Z1Uz>W>=YDmN4A^z);xlnF8~SYmQn?q8AbpSGUtkb zo7a7ll*6l06V$dIVj$rDIR4{cw38r*`jiTQM`_Ry-$9&UwAnZGs`!%G&MWFu_Dp&gKSQAM%@b$)n z%U!k|3P56n8Uzx;%ak*>Y|G8_IT`A)x$&X_RuJI4Bj=a)H!LIs!XVzjRuKGIt#5i_ z6}g3uH3$iT0_DsG+C*dM=Ib?oOom5{jj zF|g27I(_5|N>>>$yEWCRLz7 z=Q~yiGk0GTXkVOxg}1*+h)Amuz?Bp%PyeqDJ>g?t5&Ht&?tf}?nBF>6ojYTRWtd*O F|8M7XvXuY; From bcf2385ffc0ce1b18c5266a41864994efc5957ad Mon Sep 17 00:00:00 2001 From: jckspjf Date: Fri, 11 Sep 2026 18:06:51 +0000 Subject: [PATCH 123/197] Pink Jumpsuit/skirt Description Fix (#45957) pink jumpsuit fix --- .../Prototypes/Entities/Clothing/Uniforms/Jumpskirts/color.yml | 2 +- .../Prototypes/Entities/Clothing/Uniforms/Jumpsuits/color.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/Jumpskirts/color.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/Jumpskirts/color.yml index 1dfe5cb78a..95b408b512 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/Jumpskirts/color.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/Jumpskirts/color.yml @@ -278,7 +278,7 @@ parent: ClothingUniformSkirtBase id: ClothingUniformJumpskirtColorPink name: pink jumpskirt - description: Just looking at this makes you feel fabulous. + description: Just looking at this makes you feel [italic]fabulous[/italic]. components: - type: Sprite sprite: Clothing/Uniforms/Jumpskirts/Color/color.rsi diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/Jumpsuits/color.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/Jumpsuits/color.yml index 4e5278fa22..dddaeee91e 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/Jumpsuits/color.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/Jumpsuits/color.yml @@ -278,7 +278,7 @@ parent: ClothingUniformBase id: ClothingUniformJumpsuitColorPink name: pink jumpsuit - description: Just looking at this makes you feel fabulous. + description: Just looking at this makes you feel [italic]fabulous[/italic]. components: - type: Sprite sprite: Clothing/Uniforms/Jumpsuits/Color/color.rsi From 45aaa7efac4b194d38d4be081bb77fe36d5c3437 Mon Sep 17 00:00:00 2001 From: JiyuSoftware Date: Fri, 11 Sep 2026 20:37:06 +0000 Subject: [PATCH 124/197] Sushi Update (with Telepad) (#45989) --- Resources/Maps/Shuttles/emergency_sushi.yml | 22 +- Resources/Maps/sushi.yml | 4112 ++++++++++++------- 2 files changed, 2735 insertions(+), 1399 deletions(-) diff --git a/Resources/Maps/Shuttles/emergency_sushi.yml b/Resources/Maps/Shuttles/emergency_sushi.yml index aaf7639ec0..dd37bac555 100644 --- a/Resources/Maps/Shuttles/emergency_sushi.yml +++ b/Resources/Maps/Shuttles/emergency_sushi.yml @@ -4,7 +4,7 @@ meta: engineVersion: 289.0.0 forkId: "" forkVersion: "" - time: 08/27/2026 21:07:06 + time: 09/11/2026 19:43:19 entityCount: 1407 maps: [] grids: @@ -6659,6 +6659,11 @@ entities: parent: 1 rot: 1.5707963267948966 rad pos: -14.5,-12.5 + - uid: 334 + components: + - type: Transform + parent: 1 + pos: -8.5,7.5 - uid: 525 components: - type: Transform @@ -6829,11 +6834,6 @@ entities: parent: 1 rot: 3.141592653589793 rad pos: -4.5,-18.5 - - uid: 1049 - components: - - type: Transform - parent: 1 - pos: -7.5,7.5 - uid: 1228 components: - type: Transform @@ -6960,6 +6960,11 @@ entities: pos: -1.5,-11.5 - proto: Screen entities: + - uid: 333 + components: + - type: Transform + parent: 1 + pos: -7.5,8.5 - uid: 712 components: - type: Transform @@ -7002,11 +7007,6 @@ entities: parent: 1 rot: 3.141592653589793 rad pos: -8.5,-1.5 - - uid: 1050 - components: - - type: Transform - parent: 1 - pos: -8.5,8.5 - uid: 1051 components: - type: Transform diff --git a/Resources/Maps/sushi.yml b/Resources/Maps/sushi.yml index a842ea77db..1a79c52d81 100644 --- a/Resources/Maps/sushi.yml +++ b/Resources/Maps/sushi.yml @@ -4,70 +4,70 @@ meta: engineVersion: 289.0.0 forkId: "" forkVersion: "" - time: 08/27/2026 20:54:37 - entityCount: 25220 + time: 09/11/2026 19:41:31 + entityCount: 25440 maps: - 1 grids: - 2 orphans: [] nullspace: -- 25165 -- 25166 -- 25167 -- 25168 -- 25169 -- 25170 -- 25171 -- 25172 -- 25173 -- 25174 -- 25175 -- 25176 -- 25177 -- 25178 -- 25179 -- 25180 -- 25181 -- 25182 -- 25183 -- 25184 -- 25185 -- 25186 -- 25187 -- 25188 -- 25189 -- 25190 -- 25191 -- 25192 -- 25193 -- 25194 -- 25195 -- 25196 -- 25197 -- 25198 -- 25199 -- 25200 -- 25201 -- 25202 -- 25203 -- 25204 -- 25205 -- 25206 -- 25207 -- 25208 -- 25209 -- 25210 -- 25211 -- 25212 -- 25213 -- 25214 -- 25215 -- 25216 -- 25217 -- 25218 -- 25219 -- 25220 +- 25385 +- 25386 +- 25387 +- 25388 +- 25389 +- 25390 +- 25391 +- 25392 +- 25393 +- 25394 +- 25395 +- 25396 +- 25397 +- 25398 +- 25399 +- 25400 +- 25401 +- 25402 +- 25403 +- 25404 +- 25405 +- 25406 +- 25407 +- 25408 +- 25409 +- 25410 +- 25411 +- 25412 +- 25413 +- 25414 +- 25415 +- 25416 +- 25417 +- 25418 +- 25419 +- 25420 +- 25421 +- 25422 +- 25423 +- 25424 +- 25425 +- 25426 +- 25427 +- 25428 +- 25429 +- 25430 +- 25431 +- 25432 +- 25433 +- 25434 +- 25435 +- 25436 +- 25437 +- 25438 +- 25439 +- 25440 tilemap: 0: Space 18: FloorArcadeBlue @@ -149,7 +149,7 @@ entities: version: 7 0,1: ind: 0,1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAIAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAACABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAQAAAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAIAAAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAACABQAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAABABQAAAAAAgAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAgAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAACABQAAAAAAgAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAGwAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAIAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAACABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAQAAAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAIAAAAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAACABQAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAABABQAAAAAAgAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAgAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAACABQAAAAAAgAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAGwAAAAAAAA== version: 7 0,2: ind: 0,2 @@ -165,7 +165,7 @@ entities: version: 7 1,1: ind: 1,1 - tiles: GwAAAAAAABQAAAAAAgAUAAAAAAIAGwAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAgAUAAAAAAIAFAAAAAABABQAAAAAAAAbAAAAAAAAFAAAAAACABQAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAIgAAAAAAACIAAAAAAAAiAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAFAAAAAACABsAAAAAAAAbAAAAAAAAGwAAAAAAACIAAAAAAAAiAAAAAAAAIgAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABEAAAAAAAARAAAAAAAAEQAAAAAAABsAAAAAAAAbAAAAAAAAFAAAAAAAABQAAAAAAQAUAAAAAAAAGwAAAAAAABsAAAAAAAARAAAAAAAAEQAAAAAAABEAAAAAAAAbAAAAAAAAIgAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAABABsAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAAiAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAFAAAAAABABsAAAAAAAAbAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAACIAAAAAAAAbAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAAUAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAAFAAAAAACABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAABQAAAAAAgAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAA== + tiles: GwAAAAAAABQAAAAAAgAUAAAAAAIAGwAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAgAUAAAAAAIAFAAAAAABABQAAAAAAAAbAAAAAAAAFAAAAAACABQAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAIgAAAAAAACIAAAAAAAAiAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAFAAAAAACABsAAAAAAAAbAAAAAAAAGwAAAAAAACIAAAAAAAAiAAAAAAAAIgAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAACIAAAAAAAAiAAAAAAAAIgAAAAAAABsAAAAAAAAbAAAAAAAAFAAAAAAAABQAAAAAAQAUAAAAAAAAGwAAAAAAABsAAAAAAAAiAAAAAAAAIgAAAAAAACIAAAAAAAAbAAAAAAAAIgAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAABABsAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAAiAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAFAAAAAABABsAAAAAAAAbAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAACIAAAAAAAAbAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAAUAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAAFAAAAAACABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAABQAAAAAAgAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAA== version: 7 1,2: ind: 1,2 @@ -193,7 +193,7 @@ entities: version: 7 2,1: ind: 2,1 - tiles: GwAAAAAAABsAAAAAAAAbAAAAAAAAFAAAAAABABQAAAAAAgAUAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAgAUAAAAAAIAFAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAeAAAAAAAAHgAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB4AAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAiAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAACIAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAHgAAAAAAAB4AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAIAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAABABsAAAAAAAAbAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAgAbAAAAAAAAGwAAAAAAABsAAAAAAAAeAAAAAAAAHgAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAEAGwAAAAAAABsAAAAAAAAbAAAAAAAAHgAAAAAAAB4AAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAABsAAAAAAAAUAAAAAAAAGwAAAAAAAB4AAAAAAAAeAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAFAAAAAAAABQAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAACABQAAAAAAgAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAACIAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAUAAAAAAEAFAAAAAACABQAAAAAAgAUAAAAAAEAFAAAAAACABQAAAAAAAAUAAAAAAIAGwAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAAbAAAAAAAACwAAAAAAAAsAAAAAAAAbAAAAAAAAGwAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAAGwAAAAAAAA== + tiles: GwAAAAAAABsAAAAAAAAbAAAAAAAAFAAAAAABABQAAAAAAgAUAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAgAUAAAAAAIAFAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAeAAAAAAAAHgAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB4AAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAiAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAACIAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAHgAAAAAAAB4AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAIAGwAAAAAAAB4AAAAAAAAbAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAABABsAAAAAAAAeAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAgAbAAAAAAAAHgAAAAAAABsAAAAAAAAeAAAAAAAAHgAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAEAGwAAAAAAABsAAAAAAAAbAAAAAAAAHgAAAAAAAB4AAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAABsAAAAAAAAUAAAAAAAAGwAAAAAAAB4AAAAAAAAeAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAFAAAAAAAABQAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAACABQAAAAAAgAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAACIAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAUAAAAAAEAFAAAAAACABQAAAAAAgAUAAAAAAEAFAAAAAACABQAAAAAAAAUAAAAAAIAGwAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAAbAAAAAAAACwAAAAAAAAsAAAAAAAAbAAAAAAAAGwAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAAGwAAAAAAAA== version: 7 2,2: ind: 2,2 @@ -237,7 +237,7 @@ entities: version: 7 3,5: ind: 3,5 - tiles: BwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAABsAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAQAAAAAAABYAAAAAAAAWAAAAAAAAFgAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAAAEAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAAAHAAAAAAAAAQAAAAAAAAEAAAAAAAAHAAAAAAAAAQAAAAAAAAEAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAQAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAQAAAAAAAAbAAAAAAAABwAAAAAAAAEAAAAAAAABAAAAAAAABwAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAEAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAcAAAAAAAAEAAAAAAAAAQAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAABAAAAAAAABAAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAHAAAAAAAAAQAAAAAAAAEAAAAAAAAHAAAAAAAABAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAQAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABwAAAAAAAAEAAAAAAAABAAAAAAAABwAAAAAAAAQAAAAAAAABAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAEAAAAAAAAbAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAcAAAAAAAAEAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAAAYAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAHAAAAAAAAAQAAAAAAAAEAAAAAAAAHAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABwAAAAAAAAEAAAAAAAABAAAAAAAABwAAAAAAAAIAAAAABAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAACwAAAAAAAAsAAAAAAAAEAAAAAAAABAAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAcAAAAAAAACAAAAAAIAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAsAAAAAAAALAAAAAAAABAAAAAAAAAQAAAAAAAAHAAAAAAAAAQAAAAAAAAEAAAAAAAAHAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAUAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAABwAAAAAAAAEAAAAAAAABAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAHAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAA== + tiles: BwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAABsAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAQAAAAAAABYAAAAAAAAWAAAAAAAAFgAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAAAEAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAAAHAAAAAAAAAQAAAAAAAAEAAAAAAAAHAAAAAAAAAQAAAAAAAAEAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAQAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAQAAAAAAAAbAAAAAAAABwAAAAAAAAEAAAAAAAABAAAAAAAABwAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAEAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAABAAAAAAAABAAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAHAAAAAAAAAQAAAAAAAAEAAAAAAAAHAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAQAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABwAAAAAAAAEAAAAAAAABAAAAAAAABwAAAAAAAAEAAAAAAAABAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAEAAAAAAAAbAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAAAYAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAHAAAAAAAAAQAAAAAAAAEAAAAAAAAHAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABwAAAAAAAAEAAAAAAAABAAAAAAAABwAAAAAAAAIAAAAABAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAACwAAAAAAAAsAAAAAAAAEAAAAAAAABAAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAcAAAAAAAACAAAAAAIAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAsAAAAAAAALAAAAAAAABAAAAAAAAAQAAAAAAAAHAAAAAAAAAQAAAAAAAAEAAAAAAAAHAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAUAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAABwAAAAAAAAEAAAAAAAABAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAHAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAA== version: 7 3,6: ind: 3,6 @@ -249,11 +249,11 @@ entities: version: 7 4,1: ind: 4,1 - tiles: AQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAAbAAAAAAAALAAAAAAAABsAAAAAAAALAAAAAAAALAAAAAADAAsAAAAAAAAsAAAAAAAAGwAAAAAAAAAAAAAAAAAUAAAAAAEAAAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAiAAAAAAAACwAAAAAAAAsAAAAAAAAbAAAAAAAAGwAAAAAAACwAAAAAAAALAAAAAAAALAAAAAACABsAAAAAAAAUAAAAAAIAFAAAAAACABQAAAAAAgAbAAAAAAAAGwAAAAAAAB4AAAAAAAAeAAAAAAAAGwAAAAAAAAsAAAAAAAAsAAAAAAAACwAAAAAAAAsAAAAAAAAsAAAAAAEAGwAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAeAAAAAAAAHgAAAAAAABsAAAAAAAALAAAAAAAALAAAAAAGAAsAAAAAAAALAAAAAAAACwAAAAAAABsAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAHgAAAAAAAB4AAAAAAAAbAAAAAAAACwAAAAAAAAsAAAAAAAAsAAAAAAMALAAAAAAGACwAAAAAAgAbAAAAAAAAAQAAAAAAABsAAAAAAAAUAAAAAAIAAAAAAAAAAAAAAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAB4AAAAAAAAbAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAACIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAB4AAAAAAAAbAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAHgAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAAAEAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAAAWAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAFgAAAAAAABYAAAAAAAAWAAAAAAAAFgAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== + tiles: AQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAAbAAAAAAAALAAAAAAAABsAAAAAAAALAAAAAAAALAAAAAADAAsAAAAAAAAsAAAAAAAAGwAAAAAAAAAAAAAAAAAUAAAAAAEAAAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAiAAAAAAAACwAAAAAAAAsAAAAAAAAbAAAAAAAAGwAAAAAAACwAAAAAAAALAAAAAAAALAAAAAACABsAAAAAAAAUAAAAAAIAFAAAAAACABQAAAAAAgAbAAAAAAAAGwAAAAAAAB4AAAAAAAAeAAAAAAAAGwAAAAAAAAsAAAAAAAAsAAAAAAAACwAAAAAAAAsAAAAAAAAsAAAAAAEAGwAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAeAAAAAAAAHgAAAAAAABsAAAAAAAALAAAAAAAALAAAAAAGAAsAAAAAAAALAAAAAAAACwAAAAAAABsAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAHgAAAAAAAB4AAAAAAAAbAAAAAAAACwAAAAAAAAsAAAAAAAAsAAAAAAMALAAAAAAGACwAAAAAAgAbAAAAAAAAAQAAAAAAABsAAAAAAAAUAAAAAAIAAAAAAAAAAAAAAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAB4AAAAAAAAbAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAACIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAB4AAAAAAAAbAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAHgAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAFgAAAAAAABYAAAAAAAAWAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAABYAAAAAAAAWAAAAAAAAFgAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== version: 7 4,2: ind: 4,2 - tiles: HgAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAAABAAAAAAAAAQAAAAAAABYAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAAABAAAAAAAAAQAAAAAAAB4AAAAAAAAbAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAFgAAAAAAABYAAAAAAAAWAAAAAAAAAQAAAAAAAAEAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAAAWAAAAAAAAAQAAAAAAAAEAAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAB4AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAHgAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAB4AAAAAAAAbAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAAIgAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAABAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAAiAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== + tiles: HgAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAAABAAAAAAAAAQAAAAAAAB4AAAAAAAAbAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAEQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAFgAAAAAAABYAAAAAAAAWAAAAAAAAAQAAAAAAAAEAAAAAAAAeAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAB4AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAHgAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAB4AAAAAAAAbAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAAIgAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAABAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAAiAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== version: 7 4,3: ind: 4,3 @@ -281,11 +281,11 @@ entities: version: 7 5,1: ind: 5,1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAQAUAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAACABQAAAAAAAAUAAAAAAEAFAAAAAACABQAAAAAAQAbAAAAAAAAFAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAUAAAAAAEAGwAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAIAGwAAAAAAABsAAAAAAAAbAAAAAAAAFAAAAAAAAAAAAAAAAAAUAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAgAbAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAABAAAAAAAAAQAAAAAAAAWAAAAAAAABAAAAAAAAAEAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAABAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAQAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABsAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAABAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAAGwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAB4AAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAiAAAAAAAAGwAAAAAAACIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIAAAAAAAAiAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiAAAAAAAAHgAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAQAUAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAACABQAAAAAAAAUAAAAAAEAFAAAAAACAAAAAAAAAAAbAAAAAAAAFAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAUAAAAAAEAGwAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAIAGwAAAAAAABsAAAAAAAAbAAAAAAAAFAAAAAAAAAAAAAAAAAAUAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAgAbAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAABAAAAAAAAAQAAAAAAAAWAAAAAAAABAAAAAAAAAEAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAABAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAQAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABsAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAABAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAAGwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAB4AAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAABAAAAAAAAGwAAAAAAACIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIAAAAAAAAiAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiAAAAAAAAHgAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAA== version: 7 5,2: ind: 5,2 - tiles: IgAAAAAAABsAAAAAAAAiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiAAAAAAAAIgAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAB4AAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAEAAAAAAAAAQAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABsAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAABAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAQAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAEAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAFAAAAAACABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAQAUAAAAAAAAFAAAAAABABsAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAEAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAACIAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAiAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAeAAAAAAAAHgAAAAAAAA== + tiles: AQAAAAAAABsAAAAAAAAiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiAAAAAAAAIgAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAB4AAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAEAAAAAAAAAQAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABsAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAABAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAQAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAEAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAFAAAAAACABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAQAUAAAAAAAAFAAAAAABABsAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAEAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAACIAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAiAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAeAAAAAAAAHgAAAAAAAA== version: 7 5,3: ind: 5,3 @@ -313,7 +313,7 @@ entities: version: 7 6,1: ind: 6,1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAACABQAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAQAUAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAACABQAAAAAAQAUAAAAAAAAFAAAAAABABQAAAAAAAAUAAAAAAIAFAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAEAFAAAAAACABQAAAAAAgAAAAAAAAAAFAAAAAABABQAAAAAAQAUAAAAAAAAFAAAAAAAABQAAAAAAQAUAAAAAAEAFAAAAAAAABQAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAEAGwAAAAAAABsAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAUAAAAAAEAFAAAAAACABQAAAAAAAAUAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAABsAAAAAAAAuAAAAAAIAGwAAAAAAABQAAAAAAgAbAAAAAAAABAAAAAAAAAQAAAAAAAAbAAAAAAAAFAAAAAAAABQAAAAAAQAUAAAAAAAAFAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAQAbAAAAAAAALgAAAAABABsAAAAAAAAbAAAAAAAAGwAAAAAAAAQAAAAAAAAEAAAAAAAAGwAAAAAAABQAAAAAAAAUAAAAAAIAFAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAIAGwAAAAAAAC4AAAAAAwAuAAAAAAAALgAAAAACAC4AAAAAAgAEAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAFAAAAAACABQAAAAAAQAUAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAACABsAAAAAAAAxAAAAAAAAMQAAAAADADEAAAAAAAAxAAAAAAEABAAAAAAAAAQAAAAAAAAbAAAAAAAAIgAAAAAAABQAAAAAAAAUAAAAAAEAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAQAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAQAAAAAAAAEAAAAAAAAGwAAAAAAACIAAAAAAAAUAAAAAAAAFAAAAAACABQAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAIAGwAAAAAAABsAAAAAAAAbAAAAAAAAIgAAAAAAABsAAAAAAAAEAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAFAAAAAAAABQAAAAAAQAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAACABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAABAAAAAAAAAQAAAAAAAAbAAAAAAAAFAAAAAACABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAQAAAAAAAAEAAAAAAAAGwAAAAAAABQAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAGwAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAEAAAAAAAABAAAAAAAABsAAAAAAAAUAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAABAAAAAAAAAQAAAAAAAAbAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAQAbAAAAAAAAIgAAAAAAACIAAAAAAAAiAAAAAAAAIgAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAACABQAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAQAUAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAACABQAAAAAAQAUAAAAAAAAFAAAAAABABQAAAAAAAAUAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAEAFAAAAAACABQAAAAAAgAAAAAAAAAAFAAAAAABABQAAAAAAQAUAAAAAAAAFAAAAAAAABQAAAAAAQAUAAAAAAEAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAEAGwAAAAAAABsAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAbAAAAAAAAGwAAAAAAABQAAAAAAAAUAAAAAAEAFAAAAAACABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAABsAAAAAAAAuAAAAAAIAGwAAAAAAABQAAAAAAgAbAAAAAAAABAAAAAAAAAQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAQAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAQAbAAAAAAAALgAAAAABABsAAAAAAAAbAAAAAAAAGwAAAAAAAAQAAAAAAAAEAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAIAFAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAIAGwAAAAAAAC4AAAAAAwAuAAAAAAAALgAAAAACAC4AAAAAAgAEAAAAAAAAGwAAAAAAABsAAAAAAAAEAAAAAAAABAAAAAAAABsAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAACABsAAAAAAAAxAAAAAAAAMQAAAAADADEAAAAAAAAxAAAAAAEABAAAAAAAAAQAAAAAAAAEAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAQAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAIAGwAAAAAAABsAAAAAAAAbAAAAAAAAIgAAAAAAABsAAAAAAAAEAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAACABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAABAAAAAAAAAQAAAAAAAAbAAAAAAAAFAAAAAACABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAQAAAAAAAAEAAAAAAAAGwAAAAAAABQAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAbAAAAAAAAGwAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAEAAAAAAAABAAAAAAAABsAAAAAAAAUAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAGwAAAAAAACIAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAABAAAAAAAAAQAAAAAAAAbAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAQAbAAAAAAAAIgAAAAAAACIAAAAAAAAiAAAAAAAAIgAAAAAAAA== version: 7 6,2: ind: 6,2 @@ -345,15 +345,15 @@ entities: version: 7 7,1: ind: 7,1 - tiles: AAAAAAAAABQAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAACwAAAAAAACwAAAAAAQALAAAAAAAALAAAAAABAAsAAAAAAAAsAAAAAAIACwAAAAAAACwAAAAAAAALAAAAAAAALAAAAAAFAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAACkAAAAAAwApAAAAAAEAKQAAAAAAACkAAAAAAgApAAAAAAQACwAAAAAAABsAAAAAAAAsAAAAAAIALAAAAAAGAAsAAAAAAAAAAAAAAAAAFAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAApAAAAAAIAKAAAAAACACkAAAAAAgApAAAAAAAAKQAAAAACAAsAAAAAAAAsAAAAAAEALAAAAAABAAsAAAAAAAAbAAAAAAAAFAAAAAABABQAAAAAAQAUAAAAAAIAFAAAAAABABQAAAAAAgAbAAAAAAAAKQAAAAABACkAAAAAAwApAAAAAAQAKAAAAAACACkAAAAAAAAbAAAAAAAALAAAAAACAAsAAAAAAAALAAAAAAAALAAAAAABABsAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAACkAAAAAAAAoAAAAAAMAKQAAAAADACkAAAAAAQApAAAAAAQALAAAAAACAAsAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAiAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAALgAAAAABABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAC4AAAAAAQAbAAAAAAAAGwAAAAAAABsAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAABsAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAxAAAAAAIAGwAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAIgAAAAAAABsAAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAAIgAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAABABQAAAAAAAAUAAAAAAAAFAAAAAABABQAAAAAAgAAAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAACIAAAAAAAAbAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAABsAAAAAAAAbAAAAAAAAHwAAAAAAAA8AAAAAAQAPAAAAAAAADwAAAAABAB8AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAbAAAAAAAAGwAAAAAAAA8AAAAAAAAiAAAAAAAAIgAAAAAAACIAAAAAAAAPAAAAAAEAGwAAAAAAAA== + tiles: AAAAAAAAABQAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAACwAAAAAAACwAAAAAAQALAAAAAAAALAAAAAABAAsAAAAAAAAsAAAAAAIACwAAAAAAACwAAAAAAAALAAAAAAAALAAAAAAFAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAACkAAAAAAwApAAAAAAEAKQAAAAAAACkAAAAAAgApAAAAAAQACwAAAAAAABsAAAAAAAAsAAAAAAIALAAAAAAGAAsAAAAAAAAAAAAAAAAAFAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAApAAAAAAIAKAAAAAACACkAAAAAAgApAAAAAAAAKQAAAAACAAsAAAAAAAAsAAAAAAEALAAAAAABAAsAAAAAAAAbAAAAAAAAFAAAAAABABQAAAAAAQAUAAAAAAIAFAAAAAABABQAAAAAAgAbAAAAAAAAKQAAAAABACkAAAAAAwApAAAAAAQAKAAAAAACACkAAAAAAAAbAAAAAAAALAAAAAACAAsAAAAAAAALAAAAAAAALAAAAAABABsAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAACkAAAAAAAAoAAAAAAMAKQAAAAADACkAAAAAAQApAAAAAAQALAAAAAACAAsAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAiAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAALgAAAAABABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAC4AAAAAAQAbAAAAAAAAGwAAAAAAABsAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAABsAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAxAAAAAAIAGwAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAIgAAAAAAABsAAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAbAAAAAAAAIgAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAAAAAAAAAABQAAAAAAAAbAAAAAAAAGwAAAAAAACIAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAACIAAAAAAAAbAAAAAAAAGwAAAAAAACIAAAAAAAAbAAAAAAAAGwAAAAAAAAAAAAAAAAAUAAAAAAAAGwAAAAAAABsAAAAAAAAPAAAAAAAAIgAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAACIAAAAAAAAPAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAAAAAAAAAAFAAAAAAAABsAAAAAAAAbAAAAAAAADwAAAAAAAA8AAAAAAAAiAAAAAAAAGwAAAAAAACIAAAAAAAAPAAAAAAAADwAAAAAAAA== version: 7 7,2: ind: 7,2 - tiles: GwAAAAAAABsAAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAbAAAAAAAAGwAAAAAAAA8AAAAAAQAiAAAAAAAAIgAAAAAAACIAAAAAAAAPAAAAAAAAGwAAAAAAABsAAAAAAAAiAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAEAGwAAAAAAABsAAAAAAAAPAAAAAAAAIgAAAAAAACIAAAAAAAAiAAAAAAAADwAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAABABsAAAAAAAAbAAAAAAAAHwAAAAAAAA8AAAAAAQAPAAAAAAEADwAAAAAAAB8AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAADwAAAAABABsAAAAAAAAbAAAAAAAAGwAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAGwAAAAAAAAQAAAAAAAAEAAAAAAAAAQAAAAAAACIAAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAEAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAPAAAAAAAADwAAAAABAA8AAAAAAAAeAAAAAAAAHgAAAAAAAAEAAAAAAAAiAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAIgAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAbAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAAAsAAAAAAAAbAAAAAAAAGgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAALAAAAAAAAGwAAAAAAABoAAAAAAAAdAAAAAAAAHQAAAAAAABEAAAAAAAARAAAAAAAAEQAAAAAAABEAAAAAAAARAAAAAAAAEQAAAAAAABsAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAACwAAAAAAABsAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAARAAAAAAAAEQAAAAAAABEAAAAAAAARAAAAAAAAEQAAAAAAABEAAAAAAAAbAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAAA== + tiles: GwAAAAAAABsAAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAAAAAAAAAAFAAAAAAAABsAAAAAAAAbAAAAAAAADwAAAAAAAA8AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAPAAAAAAAADwAAAAAAABsAAAAAAAAiAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAAAAAAAAAABQAAAAAAAAbAAAAAAAAGwAAAAAAAA8AAAAAAAAPAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAADwAAAAAAAA8AAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAABsAAAAAAAAPAAAAAAAAIgAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAACIAAAAAAAAPAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAABAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAGwAAAAAAAAQAAAAAAAAEAAAAAAAAAQAAAAAAACIAAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAEAAAAAAAAbAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAEAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAPAAAAAAAADwAAAAABAA8AAAAAAAAeAAAAAAAAHgAAAAAAAAEAAAAAAAAiAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAABAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAIgAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAbAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAAAsAAAAAAAAbAAAAAAAAGgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAALAAAAAAAAGwAAAAAAABoAAAAAAAAdAAAAAAAAHQAAAAAAABEAAAAAAAARAAAAAAAAEQAAAAAAABEAAAAAAAARAAAAAAAAEQAAAAAAABsAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAACwAAAAAAABsAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAARAAAAAAAAEQAAAAAAABEAAAAAAAARAAAAAAAAEQAAAAAAABEAAAAAAAAbAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAAA== version: 7 7,3: ind: 7,3 - tiles: GwAAAAAAABsAAAAAAAAbAAAAAAAAGgAAAAAAABsAAAAAAAAbAAAAAAAAEQAAAAAAABsAAAAAAAAbAAAAAAAAEQAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAaAAAAAAAAGgAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAaAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABoAAAAAAAAXAAAAAAAAHQAAAAAAABcAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAbAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABsAAAAAAAAaAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABcAAAAAAAAdAAAAAAAAFwAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABsAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGwAAAAAAABoAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAbAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABsAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABoAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAQAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABsAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAeAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAGwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAEAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAABsAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAAEAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAB4AAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAbAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAABAAAAAAAAA== + tiles: GwAAAAAAABsAAAAAAAAbAAAAAAAAGgAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAABsAAAAAAAAbAAAAAAAAAQAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAaAAAAAAAAGgAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAaAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABoAAAAAAAAXAAAAAAAAHQAAAAAAABcAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAbAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABsAAAAAAAAaAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABcAAAAAAAAdAAAAAAAAFwAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABsAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGwAAAAAAABoAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAbAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABsAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABoAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAQAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABsAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAeAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAGwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAEAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAABsAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAAEAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAB4AAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAbAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAABAAAAAAAAA== version: 7 7,4: ind: 7,4 @@ -377,11 +377,11 @@ entities: version: 7 8,1: ind: 8,1 - tiles: LAAAAAABACwAAAAAAAAsAAAAAAUAGwAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAQAsAAAAAAYACwAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAAACwAAAAAAACwAAAAAAgAbAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAIAFAAAAAABABQAAAAAAAAUAAAAAAIAFAAAAAACABQAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAACAAsAAAAAAAAsAAAAAAIAGwAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAIAAAAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAACAAAAAAAAAAAAAAAAAAAAFAAAAAACAAAAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAUAAAAAAIAFAAAAAABABQAAAAAAgAUAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAABsAAAAAAAAiAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAIgAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAACIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABQAAAAAAgAUAAAAAAEAFAAAAAABABQAAAAAAAAbAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAABsAAAAAAAAiAAAAAAAAGwAAAAAAAAsAAAAAAAAsAAAAAAAACwAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAABQAAAAAAgAAAAAAAAAAAAAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: LAAAAAABACwAAAAAAAAsAAAAAAUAGwAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAQAsAAAAAAYACwAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAAACwAAAAAAACwAAAAAAgAbAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAIAFAAAAAABABQAAAAAAAAUAAAAAAIAFAAAAAACABQAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAACAAsAAAAAAAAsAAAAAAIAGwAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAIAAAAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAACAAAAAAAAAAAAAAAAAAAAFAAAAAACAAAAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAUAAAAAAIAFAAAAAABABQAAAAAAgAUAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAABsAAAAAAAAiAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAIgAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAACIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAbAAAAAAAAFAAAAAAAAAAAAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABQAAAAAAgAUAAAAAAEAFAAAAAABABQAAAAAAAAbAAAAAAAAGwAAAAAAABQAAAAAAAAAAAAAAAAAGwAAAAAAABsAAAAAAAAiAAAAAAAAGwAAAAAAAAsAAAAAAAAsAAAAAAAACwAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAABsAAAAAAAAUAAAAAAAAAAAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 8,2: ind: 8,2 - tiles: GwAAAAAAABQAAAAAAQAAAAAAAAAAAAAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAACIAAAAAAAA1AAAAAAAANQAAAAAAADUAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAUAAAAAAEAAAAAAAAAAAAAAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAbAAAAAAAACwAAAAAAAAsAAAAAAAAsAAAAAAIAGwAAAAAAABQAAAAAAgAUAAAAAAAAFAAAAAABABQAAAAAAgAbAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAGwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAABsAAAAAAAAUAAAAAAEAFAAAAAAAABQAAAAAAQAAAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAFAAAAAAAABQAAAAAAgAUAAAAAAAAAAAAAAAAABsAAAAAAAAUAAAAAAEAFAAAAAAAABQAAAAAAQAbAAAAAAAAHgAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAAB4AAAAAAAAeAAAAAAAAGwAAAAAAABQAAAAAAgAUAAAAAAEAFAAAAAABAAAAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAiAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAGwAAAAAAACIAAAAAAAAbAAAAAAAAGwAAAAAAACIAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAgAAAAAAAAAAGwAAAAAAAB4AAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAUAAAAAAIAAAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAeAAAAAAAAHgAAAAAAABsAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAbAAAAAAAAFAAAAAACAAAAAAAAAAAbAAAAAAAAIgAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAHgAAAAAAAB4AAAAAAAAbAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAIQAAAAAAABsAAAAAAAAbAAAAAAAAIgAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAACIAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAIQAAAAAAACEAAAAAAAAhAAAAAAAAIQAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAALAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABQAAAAAAQAAAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAALAAAAAAEAAMAAAAAAAALAAAAAAAAAwAAAAAAACEAAAAAAAAhAAAAAAAAIQAAAAAAABsAAAAAAAAUAAAAAAAAAAAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAACIAAAAAAAAbAAAAAAAAGwAAAAAAAAMAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAAhAAAAAAAAIQAAAAAAACEAAAAAAAAbAAAAAAAAFAAAAAACAAAAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAALAAAAAAAACwAAAAAAAAMAAAAAAAADAAAAAAAAIQAAAAAAACEAAAAAAAAhAAAAAAAAGwAAAAAAABQAAAAAAQAAAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGwAAAAAAACIAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAsAAAAAAEACwAAAAAAACEAAAAAAAAhAAAAAAAAIQAAAAAAABsAAAAAAAAUAAAAAAAAFAAAAAACAA== + tiles: GwAAAAAAABsAAAAAAAAUAAAAAAAAAAAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAACIAAAAAAAA1AAAAAAAANQAAAAAAADUAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAbAAAAAAAAFAAAAAAAAAAAAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAbAAAAAAAACwAAAAAAAAsAAAAAAAAsAAAAAAIAGwAAAAAAABQAAAAAAgAUAAAAAAAAFAAAAAABABQAAAAAAgAbAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAGwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAABsAAAAAAAAUAAAAAAEAFAAAAAAAABQAAAAAAQAAAAAAAAAAGwAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAFAAAAAAAABQAAAAAAgAUAAAAAAAAAAAAAAAAABsAAAAAAAAUAAAAAAEAFAAAAAAAABQAAAAAAQAbAAAAAAAAHgAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAAB4AAAAAAAAeAAAAAAAAGwAAAAAAABQAAAAAAgAUAAAAAAEAFAAAAAABAAAAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAiAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAGwAAAAAAACIAAAAAAAAbAAAAAAAAGwAAAAAAACIAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAgAAAAAAAAAAGwAAAAAAAB4AAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAUAAAAAAIAAAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAeAAAAAAAAHgAAAAAAABsAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAbAAAAAAAAFAAAAAACAAAAAAAAAAAbAAAAAAAAIgAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAHgAAAAAAAB4AAAAAAAAbAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAIQAAAAAAABsAAAAAAAAbAAAAAAAAIgAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAACIAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAIQAAAAAAACEAAAAAAAAhAAAAAAAAIQAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAALAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABQAAAAAAQAAAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAALAAAAAAEAAMAAAAAAAALAAAAAAAAAwAAAAAAACEAAAAAAAAhAAAAAAAAIQAAAAAAABsAAAAAAAAUAAAAAAAAAAAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAACIAAAAAAAAbAAAAAAAAGwAAAAAAAAMAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAAhAAAAAAAAIQAAAAAAACEAAAAAAAAbAAAAAAAAFAAAAAACAAAAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAALAAAAAAAACwAAAAAAAAMAAAAAAAADAAAAAAAAIQAAAAAAACEAAAAAAAAhAAAAAAAAGwAAAAAAABQAAAAAAQAAAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGwAAAAAAACIAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAsAAAAAAEACwAAAAAAACEAAAAAAAAhAAAAAAAAIQAAAAAAABsAAAAAAAAUAAAAAAAAFAAAAAACAA== version: 7 8,3: ind: 8,3 @@ -389,7 +389,7 @@ entities: version: 7 8,4: ind: 8,4 - tiles: BAAAAAAAAAQAAAAAAAAEAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAgAAAAAAAAAAAAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAEAAAAAAAAAAAAAAAAAAAAbAAAAAAAAGwAAAAAAACIAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAiAAAAAAAAGwAAAAAAABQAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAAAAfAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAQAbAAAAAAAAGwAAAAAAABsAAAAAAAAUAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAAAAAAHwAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAFAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAAAAfAAAAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAUAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAAAAAAHwAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAgAUAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAFAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABQAAAAAAgAUAAAAAAAAFAAAAAABABQAAAAAAgAUAAAAAAEAFAAAAAABAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAbAAAAAAAAIgAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAIgAAAAAAABsAAAAAAAAbAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAABsAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAABsAAAAAAAAiAAAAAAAAGwAAAAAAABsAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAIQAAAAAAACEAAAAAAAAhAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAhAAAAAAAAIQAAAAAAACEAAAAAAAAhAAAAAAAAIQAAAAAAAA== + tiles: BAAAAAAAAAQAAAAAAAAEAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAGwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABsAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAgAAAAAAAAAAAAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAEAAAAAAAAAAAAAAAAAAAAbAAAAAAAAGwAAAAAAACIAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAiAAAAAAAAGwAAAAAAABQAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAAAAfAAAAAAAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAQAbAAAAAAAAGwAAAAAAABsAAAAAAAAUAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAAAAAAHwAAAAAAACIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAFAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAAAAfAAAAAAAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAUAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAAAAAAHwAAAAAAACIAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAgAUAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAFAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABQAAAAAAgAUAAAAAAAAFAAAAAABABQAAAAAAgAUAAAAAAEAFAAAAAABAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAbAAAAAAAAIgAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAIgAAAAAAABsAAAAAAAAbAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAABsAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAABsAAAAAAAAiAAAAAAAAGwAAAAAAABsAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAeAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAIQAAAAAAACEAAAAAAAAhAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAGwAAAAAAAB4AAAAAAAAbAAAAAAAAHgAAAAAAABsAAAAAAAAhAAAAAAAAIQAAAAAAACEAAAAAAAAhAAAAAAAAIQAAAAAAAA== version: 7 8,5: ind: 8,5 @@ -1250,7 +1250,7 @@ entities: 14,3: 2: 53520 14,8: - 2: 7629 + 2: 40397 15,4: 2: 48063 15,5: @@ -1456,9 +1456,9 @@ entities: 18,6: 2: 57565 18,7: - 2: 65262 + 2: 61166 18,8: - 2: 4095 + 2: 3839 19,5: 2: 65280 0: 2 @@ -1486,7 +1486,7 @@ entities: 17,9: 2: 65526 17,10: - 2: 65295 + 2: 65287 17,11: 2: 48063 18,9: @@ -1542,7 +1542,7 @@ entities: 19,16: 2: 65295 20,12: - 2: 64432 + 2: 62448 20,13: 2: 255 20,14: @@ -1569,7 +1569,7 @@ entities: 2: 127 3: 28928 19,17: - 2: 61695 + 2: 62719 19,18: 2: 65535 19,19: @@ -1677,7 +1677,7 @@ entities: 22,4: 0: 34944 23,4: - 0: 35056 + 0: 34928 1: 30208 22,5: 0: 8 @@ -1691,12 +1691,12 @@ entities: 23,8: 2: 63743 24,4: - 0: 61440 + 0: 65504 24,5: - 0: 34959 - 2: 13056 + 0: 52431 + 2: 4352 24,6: - 2: 8177 + 2: 8185 24,7: 2: 13107 0: 34952 @@ -1719,7 +1719,7 @@ entities: 23,10: 2: 65455 23,11: - 2: 53007 + 2: 61199 23,12: 2: 65038 24,8: @@ -1905,16 +1905,17 @@ entities: 24,32: 0: 36744 25,4: - 0: 30576 + 0: 14192 25,5: - 0: 30583 + 0: 29491 25,6: - 0: 30583 + 2: 273 + 0: 17476 25,7: - 0: 1 + 0: 7 26,7: - 0: 25190 - 2: 1024 + 0: 25126 + 2: 1088 26,4: 0: 49152 26,5: @@ -2096,12 +2097,12 @@ entities: 2: 57582 26,28: 2: 61166 + 27,25: + 2: 64248 27,26: 2: 65320 27,27: 2: 61695 - 27,25: - 2: 43688 27,28: 2: 65535 28,24: @@ -2174,26 +2175,26 @@ entities: 0: 136 29,5: 2: 65292 + 29,7: + 0: 17472 + 29,8: + 0: 68 30,5: 2: 65295 - 29,7: - 0: 34816 - 29,8: - 0: 2184 30,7: - 2: 52224 - 30,6: - 0: 49152 + 2: 61152 30,8: - 2: 3148 + 2: 3694 + 30,6: + 0: 3072 31,5: 2: 65311 31,6: - 0: 28672 + 0: 1792 31,7: - 2: 30464 + 2: 65520 31,8: - 2: 1879 + 2: 8159 32,4: 2: 30583 32,5: @@ -2398,9 +2399,9 @@ entities: 33,4: 0: 19524 32,7: - 0: 8704 + 0: 17472 32,8: - 0: 546 + 0: 68 33,5: 2: 63232 0: 4 @@ -2873,62 +2874,62 @@ entities: - type: GridSplitNode - type: ChunkContainer chunkEntities: - - 25165 - - 25166 - - 25167 - - 25168 - - 25169 - - 25170 - - 25171 - - 25172 - - 25173 - - 25174 - - 25175 - - 25176 - - 25177 - - 25178 - - 25179 - - 25180 - - 25181 - - 25182 - - 25183 - - 25184 - - 25185 - - 25186 - - 25187 - - 25188 - - 25189 - - 25190 - - 25191 - - 25192 - - 25193 - - 25194 - - 25195 - - 25196 - - 25197 - - 25198 - - 25199 - - 25200 - - 25201 - - 25202 - - 25203 - - 25204 - - 25205 - - 25206 - - 25207 - - 25208 - - 25209 - - 25210 - - 25211 - - 25212 - - 25213 - - 25214 - - 25215 - - 25216 - - 25217 - - 25218 - - 25219 - - 25220 + - 25385 + - 25386 + - 25387 + - 25388 + - 25389 + - 25390 + - 25391 + - 25392 + - 25393 + - 25394 + - 25395 + - 25396 + - 25397 + - 25398 + - 25399 + - 25400 + - 25401 + - 25402 + - 25403 + - 25404 + - 25405 + - 25406 + - 25407 + - 25408 + - 25409 + - 25410 + - 25411 + - 25412 + - 25413 + - 25414 + - 25415 + - 25416 + - 25417 + - 25418 + - 25419 + - 25420 + - 25421 + - 25422 + - 25423 + - 25424 + - 25425 + - 25426 + - 25427 + - 25428 + - 25429 + - 25430 + - 25431 + - 25432 + - 25433 + - 25434 + - 25435 + - 25436 + - 25437 + - 25438 + - 25439 + - 25440 - proto: AcousticGuitarInstrument entities: - uid: 3 @@ -3413,22 +3414,6 @@ entities: - 15017 - 589 - 15193 - - uid: 32 - components: - - type: MetaData - name: Air Alarm Security Checkpoint - - type: Transform - parent: 2 - pos: 69.5,48.5 - - type: DeviceList - devices: - - 11541 - - 11750 - - 11748 - - 11749 - - 15015 - - 591 - - 15191 - uid: 33 components: - type: MetaData @@ -3854,28 +3839,6 @@ entities: - 11788 - 11787 - 11786 - - uid: 56 - components: - - type: MetaData - name: Air Alarm East Dock - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 131.5,90.5 - - type: AccessReader - accessListsOriginal: - - - Atmospherics - - type: DeviceList - devices: - - 14602 - - 11791 - - 11790 - - 11786 - - 11787 - - 11788 - - 11842 - - 6802 - - 17291 - uid: 57 components: - type: MetaData @@ -5027,25 +4990,21 @@ entities: - uid: 123 components: - type: MetaData - name: Air Alarm Cargo Bay + name: Air Alarm Cargo Telepad - type: Transform parent: 2 rot: 3.141592653589793 rad pos: 69.5,30.5 - type: DeviceList devices: + - 9279 - 11740 - 11739 - - 11737 - - 11738 - - 11742 - - 15020 - - 594 - - 15196 - - 15197 - - 593 - - 15021 - 11741 + - 25380 + - 9615 + - 25374 + - 25381 - uid: 124 components: - type: MetaData @@ -5228,6 +5187,24 @@ entities: - 15207 - 11612 - 11578 + - uid: 527 + components: + - type: MetaData + name: Air Alarm Cargo Bay + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 76.5,26.5 + - type: DeviceList + devices: + - 11742 + - 11738 + - 11737 + - 25383 + - 17484 + - 14911 + - 25380 + - 25381 - uid: 9148 components: - type: MetaData @@ -5286,8 +5263,8 @@ entities: pos: 94.5,34.5 - type: DeviceList devices: - - 11827 - - 11631 + - 871 + - 872 - 15200 - 15024 - 15025 @@ -5309,6 +5286,40 @@ entities: - 19394 - 16830 - 20717 + - uid: 21851 + components: + - type: MetaData + desc: Air Alarm Security Checkpoint + - type: Transform + parent: 2 + pos: 66.5,48.5 + - type: DeviceList + devices: + - 11541 + - 11750 + - 11748 + - 11749 + - 15015 + - 591 + - 15191 + - uid: 25169 + components: + - type: MetaData + desc: Air Alarm East Dock + - type: Transform + parent: 2 + pos: 142.5,90.5 + - type: DeviceList + devices: + - 14602 + - 11791 + - 11790 + - 11786 + - 11787 + - 11788 + - 11842 + - 6802 + - 17291 - proto: AirAlarmElectronics entities: - uid: 135 @@ -5641,6 +5652,18 @@ entities: - type: Transform parent: 2 pos: 70.5,30.5 + - uid: 10302 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 72.5,33.5 + - uid: 10320 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 72.5,32.5 - proto: AirlockChapelLocked entities: - uid: 188 @@ -6005,7 +6028,7 @@ entities: components: - type: Transform parent: 2 - rot: -1.5707963267948966 rad + rot: 1.5707963267948966 rad pos: 82.5,49.5 - proto: AirlockEVAGlassLocked entities: @@ -6049,6 +6072,32 @@ entities: 252: - - DoorStatus - DoorBolt +- proto: AirlockExternalCargoLocked + entities: + - uid: 18829 + components: + - type: Transform + parent: 2 + pos: 99.5,24.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 25369: + - - DoorStatus + - InputB + - uid: 20617 + components: + - type: Transform + parent: 2 + pos: 100.5,24.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 25369: + - - DoorStatus + - InputB - proto: AirlockExternalEngineeringLocked entities: - uid: 254 @@ -6205,32 +6254,6 @@ entities: - DoorBolt - proto: AirlockExternalGlassCargoLocked entities: - - uid: 266 - components: - - type: Transform - parent: 2 - rot: 4.71238898038469 rad - pos: 99.5,26.5 - - type: DeviceLinkSink - invokeCounter: 1 - - type: DeviceLinkSource - linkedPorts: - 524: - - - DoorStatus - - DoorBolt - - uid: 267 - components: - - type: Transform - parent: 2 - rot: 4.71238898038469 rad - pos: 99.5,25.5 - - type: DeviceLinkSink - invokeCounter: 1 - - type: DeviceLinkSource - linkedPorts: - 524: - - - DoorStatus - - DoorBolt - uid: 269 components: - type: Transform @@ -7248,6 +7271,12 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 66.5,24.5 + - uid: 21861 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 66.5,34.5 - proto: AirlockMaintChapelLocked entities: - uid: 415 @@ -7836,8 +7865,7 @@ entities: components: - type: Transform parent: 2 - rot: -1.5707963267948966 rad - pos: 108.5,59.5 + pos: 92.5,95.5 - proto: AirlockMedicalLocked entities: - uid: 513 @@ -7849,7 +7877,8 @@ entities: components: - type: Transform parent: 2 - pos: 92.5,95.5 + rot: 1.5707963267948966 rad + pos: 108.5,59.5 - uid: 516 components: - type: Transform @@ -7905,7 +7934,25 @@ entities: pos: 123.5,81.5 - proto: AirlockSalvageGlassLocked entities: - - uid: 524 + - uid: 536 + components: + - type: Transform + parent: 2 + pos: 96.5,41.5 + - uid: 11464 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 97.5,25.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 25370: + - - DoorStatus + - InputB + - uid: 11631 components: - type: Transform parent: 2 @@ -7915,23 +7962,9 @@ entities: invokeCounter: 1 - type: DeviceLinkSource linkedPorts: - 266: + 25370: - - DoorStatus - - DoorBolt - 267: - - - DoorStatus - - DoorBolt - - uid: 525 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 97.5,25.5 - - uid: 536 - components: - - type: Transform - parent: 2 - pos: 96.5,41.5 + - InputA - uid: 17282 components: - type: Transform @@ -8436,7 +8469,7 @@ entities: pos: 66.5,46.5 - type: DeviceNetwork deviceLists: - - 32 + - 21851 - uid: 592 components: - type: Transform @@ -8446,24 +8479,6 @@ entities: deviceLists: - 11487 - 124 - - uid: 593 - components: - - type: Transform - parent: 2 - pos: 68.5,33.5 - - type: DeviceNetwork - deviceLists: - - 11451 - - 123 - - uid: 594 - components: - - type: Transform - parent: 2 - pos: 75.5,28.5 - - type: DeviceNetwork - deviceLists: - - 11451 - - 123 - uid: 595 components: - type: Transform @@ -9476,8 +9491,8 @@ entities: pos: 135.5,88.5 - type: DeviceNetwork deviceLists: - - 56 - - 11464 + - 25169 + - 25168 - uid: 10264 components: - type: Transform @@ -9563,6 +9578,24 @@ entities: - type: DeviceNetwork deviceLists: - 20641 + - uid: 25374 + components: + - type: Transform + parent: 2 + pos: 67.5,33.5 + - type: DeviceNetwork + deviceLists: + - 11451 + - 123 + - uid: 25383 + components: + - type: Transform + parent: 2 + pos: 75.5,31.5 + - type: DeviceNetwork + deviceLists: + - 527 + - 11451 - proto: AirSensorFreezer entities: - uid: 723 @@ -9622,58 +9655,6 @@ entities: - type: Transform parent: 2 pos: 43.5,93.5 -- proto: AlwaysPoweredLightExterior - entities: - - uid: 730 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 116.5,134.5 - - uid: 731 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 143.5,128.5 - - uid: 732 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 145.5,42.5 -- proto: AlwaysPoweredlightGreen - entities: - - uid: 733 - components: - - type: Transform - parent: 2 - pos: 124.5,82.5 -- proto: AlwaysPoweredlightPink - entities: - - uid: 738 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 130.5,74.5 - - uid: 739 - components: - - type: Transform - parent: 2 - pos: 132.5,81.5 - - uid: 740 - components: - - type: Transform - parent: 2 - pos: 128.5,81.5 -- proto: AlwaysPoweredlightRed - entities: - - uid: 18507 - components: - - type: Transform - parent: 2 - pos: 114.5,104.5 - proto: AmeController entities: - uid: 742 @@ -10556,13 +10537,6 @@ entities: - type: Transform parent: 2 pos: 92.418915,104.72072 -- proto: AsimovCircuitBoard - entities: - - uid: 852 - components: - - type: Transform - parent: 2 - pos: 87.43229,72.23507 - proto: AtmosDeviceFanDirectional entities: - uid: 853 @@ -10583,18 +10557,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 71.5,85.5 - - uid: 856 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 99.5,26.5 - - uid: 857 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 99.5,25.5 - uid: 858 components: - type: Transform @@ -10672,18 +10634,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 6.5,70.5 - - uid: 871 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 82.5,30.5 - - uid: 872 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 82.5,32.5 - uid: 873 components: - type: Transform @@ -13650,11 +13600,6 @@ entities: pos: 125.43439,56.56332 - proto: BoxFolderYellow entities: - - uid: 1136 - components: - - type: Transform - parent: 2 - pos: 72.55572,41.411476 - uid: 1137 components: - type: Transform @@ -13670,6 +13615,11 @@ entities: - type: Transform parent: 2 pos: 53.570915,35.361526 + - uid: 18415 + components: + - type: Transform + parent: 2 + pos: 74.59004,40.555794 - proto: BoxFolderYellowThreePapers entities: - uid: 11397 @@ -14990,12 +14940,12 @@ entities: components: - type: Transform parent: 2 - pos: 79.5,27.5 + pos: 75.5,26.5 - uid: 1377 components: - type: Transform parent: 2 - pos: 80.5,27.5 + pos: 74.5,26.5 - uid: 1378 components: - type: Transform @@ -15395,7 +15345,7 @@ entities: components: - type: Transform parent: 2 - pos: 80.5,22.5 + pos: 81.5,22.5 - uid: 1461 components: - type: Transform @@ -15880,7 +15830,7 @@ entities: components: - type: Transform parent: 2 - pos: 124.5,59.5 + pos: 81.5,23.5 - uid: 1558 components: - type: Transform @@ -15935,12 +15885,12 @@ entities: components: - type: Transform parent: 2 - pos: 125.5,59.5 + pos: 125.5,58.5 - uid: 1569 components: - type: Transform parent: 2 - pos: 126.5,59.5 + pos: 126.5,58.5 - uid: 1570 components: - type: Transform @@ -16950,12 +16900,12 @@ entities: components: - type: Transform parent: 2 - pos: 103.5,88.5 + pos: 102.5,88.5 - uid: 1772 components: - type: Transform parent: 2 - pos: 103.5,89.5 + pos: 108.5,90.5 - uid: 1773 components: - type: Transform @@ -17395,7 +17345,7 @@ entities: components: - type: Transform parent: 2 - pos: 107.5,100.5 + pos: 100.5,100.5 - uid: 1861 components: - type: Transform @@ -17405,7 +17355,7 @@ entities: components: - type: Transform parent: 2 - pos: 107.5,98.5 + pos: 99.5,100.5 - uid: 1863 components: - type: Transform @@ -17470,7 +17420,7 @@ entities: components: - type: Transform parent: 2 - pos: 102.5,97.5 + pos: 101.5,96.5 - uid: 1876 components: - type: Transform @@ -17500,7 +17450,7 @@ entities: components: - type: Transform parent: 2 - pos: 93.5,96.5 + pos: 91.5,95.5 - uid: 1882 components: - type: Transform @@ -18035,12 +17985,12 @@ entities: components: - type: Transform parent: 2 - pos: 95.5,92.5 + pos: 95.5,93.5 - uid: 1989 components: - type: Transform parent: 2 - pos: 96.5,92.5 + pos: 96.5,93.5 - uid: 1990 components: - type: Transform @@ -18065,47 +18015,47 @@ entities: components: - type: Transform parent: 2 - pos: 97.5,92.5 + pos: 97.5,93.5 - uid: 1995 components: - type: Transform parent: 2 - pos: 98.5,92.5 + pos: 98.5,93.5 - uid: 1996 components: - type: Transform parent: 2 - pos: 99.5,92.5 + pos: 100.5,93.5 - uid: 1997 components: - type: Transform parent: 2 - pos: 100.5,92.5 + pos: 101.5,93.5 - uid: 1998 components: - type: Transform parent: 2 - pos: 101.5,92.5 + pos: 102.5,93.5 - uid: 1999 components: - type: Transform parent: 2 - pos: 102.5,92.5 + pos: 103.5,93.5 - uid: 2000 components: - type: Transform parent: 2 - pos: 103.5,92.5 + pos: 99.5,93.5 - uid: 2001 components: - type: Transform parent: 2 - pos: 104.5,92.5 + pos: 104.5,93.5 - uid: 2002 components: - type: Transform parent: 2 - pos: 105.5,92.5 + pos: 105.5,93.5 - uid: 2003 components: - type: Transform @@ -18120,12 +18070,12 @@ entities: components: - type: Transform parent: 2 - pos: 105.5,88.5 + pos: 108.5,92.5 - uid: 2006 components: - type: Transform parent: 2 - pos: 105.5,89.5 + pos: 109.5,92.5 - uid: 2007 components: - type: Transform @@ -18205,12 +18155,12 @@ entities: components: - type: Transform parent: 2 - pos: 80.5,87.5 + pos: 80.5,77.5 - uid: 2032 components: - type: Transform parent: 2 - pos: 80.5,86.5 + pos: 80.5,76.5 - uid: 2033 components: - type: Transform @@ -20870,7 +20820,7 @@ entities: components: - type: Transform parent: 2 - pos: 19.5,46.5 + pos: 25.5,48.5 - uid: 2565 components: - type: Transform @@ -20890,12 +20840,12 @@ entities: components: - type: Transform parent: 2 - pos: 19.5,42.5 + pos: 18.5,45.5 - uid: 2569 components: - type: Transform parent: 2 - pos: 19.5,41.5 + pos: 18.5,46.5 - uid: 2570 components: - type: Transform @@ -22550,17 +22500,17 @@ entities: components: - type: Transform parent: 2 - pos: 72.5,59.5 + pos: 72.5,58.5 - uid: 2904 components: - type: Transform parent: 2 - pos: 71.5,59.5 + pos: 73.5,58.5 - uid: 2905 components: - type: Transform parent: 2 - pos: 70.5,59.5 + pos: 71.5,58.5 - uid: 2906 components: - type: Transform @@ -22610,17 +22560,17 @@ entities: components: - type: Transform parent: 2 - pos: 83.5,59.5 + pos: 82.5,58.5 - uid: 2916 components: - type: Transform parent: 2 - pos: 85.5,59.5 + pos: 84.5,58.5 - uid: 2917 components: - type: Transform parent: 2 - pos: 84.5,59.5 + pos: 83.5,58.5 - uid: 2918 components: - type: Transform @@ -23470,22 +23420,22 @@ entities: components: - type: Transform parent: 2 - pos: 48.5,23.5 + pos: 43.5,29.5 - uid: 3088 components: - type: Transform parent: 2 - pos: 48.5,22.5 + pos: 42.5,30.5 - uid: 3089 components: - type: Transform parent: 2 - pos: 48.5,25.5 + pos: 41.5,29.5 - uid: 3090 components: - type: Transform parent: 2 - pos: 48.5,26.5 + pos: 42.5,29.5 - uid: 3091 components: - type: Transform @@ -26302,12 +26252,12 @@ entities: components: - type: Transform parent: 2 - pos: 87.5,59.5 + pos: 85.5,58.5 - uid: 3679 components: - type: Transform parent: 2 - pos: 86.5,59.5 + pos: 86.5,58.5 - uid: 3680 components: - type: Transform @@ -26317,7 +26267,7 @@ entities: components: - type: Transform parent: 2 - pos: 69.5,59.5 + pos: 70.5,58.5 - uid: 3682 components: - type: Transform @@ -26342,12 +26292,7 @@ entities: components: - type: Transform parent: 2 - pos: 69.5,64.5 - - uid: 3687 - components: - - type: Transform - parent: 2 - pos: 86.5,64.5 + pos: 69.5,58.5 - uid: 3688 components: - type: Transform @@ -29908,6 +29853,11 @@ entities: - type: Transform parent: 2 pos: 88.5,88.5 + - uid: 15480 + components: + - type: Transform + parent: 2 + pos: 47.5,24.5 - uid: 15846 components: - type: Transform @@ -29938,6 +29888,11 @@ entities: - type: Transform parent: 2 pos: 126.5,110.5 + - uid: 17532 + components: + - type: Transform + parent: 2 + pos: 132.5,35.5 - uid: 17655 components: - type: Transform @@ -29958,6 +29913,31 @@ entities: - type: Transform parent: 2 pos: 85.5,116.5 + - uid: 17998 + components: + - type: Transform + parent: 2 + pos: 122.5,24.5 + - uid: 17999 + components: + - type: Transform + parent: 2 + pos: 132.5,34.5 + - uid: 18000 + components: + - type: Transform + parent: 2 + pos: 115.5,28.5 + - uid: 18013 + components: + - type: Transform + parent: 2 + pos: 123.5,24.5 + - uid: 18015 + components: + - type: Transform + parent: 2 + pos: 132.5,26.5 - uid: 18018 components: - type: Transform @@ -29998,6 +29978,11 @@ entities: - type: Transform parent: 2 pos: 19.5,35.5 + - uid: 19534 + components: + - type: Transform + parent: 2 + pos: 116.5,35.5 - uid: 19563 components: - type: Transform @@ -30008,6 +29993,11 @@ entities: - type: Transform parent: 2 pos: 19.5,104.5 + - uid: 19768 + components: + - type: Transform + parent: 2 + pos: 133.5,32.5 - uid: 19817 components: - type: Transform @@ -30048,6 +30038,11 @@ entities: - type: Transform parent: 2 pos: 24.5,90.5 + - uid: 20573 + components: + - type: Transform + parent: 2 + pos: 120.5,48.5 - uid: 21406 components: - type: Transform @@ -30063,6 +30058,86 @@ entities: - type: Transform parent: 2 pos: 122.5,106.5 + - uid: 22566 + components: + - type: Transform + parent: 2 + pos: 128.5,24.5 + - uid: 22567 + components: + - type: Transform + parent: 2 + pos: 127.5,24.5 + - uid: 22568 + components: + - type: Transform + parent: 2 + pos: 126.5,24.5 + - uid: 22569 + components: + - type: Transform + parent: 2 + pos: 125.5,24.5 + - uid: 22570 + components: + - type: Transform + parent: 2 + pos: 118.5,24.5 + - uid: 22574 + components: + - type: Transform + parent: 2 + pos: 119.5,24.5 + - uid: 22578 + components: + - type: Transform + parent: 2 + pos: 120.5,24.5 + - uid: 22580 + components: + - type: Transform + parent: 2 + pos: 121.5,24.5 + - uid: 22587 + components: + - type: Transform + parent: 2 + pos: 132.5,33.5 + - uid: 22591 + components: + - type: Transform + parent: 2 + pos: 132.5,32.5 + - uid: 22595 + components: + - type: Transform + parent: 2 + pos: 132.5,31.5 + - uid: 22596 + components: + - type: Transform + parent: 2 + pos: 129.5,24.5 + - uid: 22597 + components: + - type: Transform + parent: 2 + pos: 130.5,24.5 + - uid: 22598 + components: + - type: Transform + parent: 2 + pos: 132.5,27.5 + - uid: 22599 + components: + - type: Transform + parent: 2 + pos: 132.5,28.5 + - uid: 22600 + components: + - type: Transform + parent: 2 + pos: 132.5,29.5 - uid: 22791 components: - type: Transform @@ -30123,6 +30198,11 @@ entities: - type: Transform parent: 2 pos: 100.5,81.5 + - uid: 24740 + components: + - type: Transform + parent: 2 + pos: 133.5,28.5 - uid: 24831 components: - type: Transform @@ -30198,8 +30278,798 @@ entities: - type: Transform parent: 2 pos: 16.5,37.5 + - uid: 25166 + components: + - type: Transform + parent: 2 + pos: 115.5,32.5 + - uid: 25173 + components: + - type: Transform + parent: 2 + pos: 47.5,25.5 + - uid: 25174 + components: + - type: Transform + parent: 2 + pos: 47.5,23.5 + - uid: 25175 + components: + - type: Transform + parent: 2 + pos: 55.5,40.5 + - uid: 25176 + components: + - type: Transform + parent: 2 + pos: 56.5,40.5 + - uid: 25177 + components: + - type: Transform + parent: 2 + pos: 51.5,40.5 + - uid: 25178 + components: + - type: Transform + parent: 2 + pos: 18.5,43.5 + - uid: 25179 + components: + - type: Transform + parent: 2 + pos: 38.5,38.5 + - uid: 25180 + components: + - type: Transform + parent: 2 + pos: 39.5,38.5 + - uid: 25181 + components: + - type: Transform + parent: 2 + pos: 37.5,38.5 + - uid: 25182 + components: + - type: Transform + parent: 2 + pos: 18.5,42.5 + - uid: 25183 + components: + - type: Transform + parent: 2 + pos: 18.5,41.5 + - uid: 25184 + components: + - type: Transform + parent: 2 + pos: 18.5,40.5 + - uid: 25185 + components: + - type: Transform + parent: 2 + pos: 18.5,47.5 + - uid: 25186 + components: + - type: Transform + parent: 2 + pos: 18.5,48.5 + - uid: 25187 + components: + - type: Transform + parent: 2 + pos: 25.5,49.5 + - uid: 25188 + components: + - type: Transform + parent: 2 + pos: 24.5,49.5 + - uid: 25189 + components: + - type: Transform + parent: 2 + pos: 23.5,49.5 + - uid: 25190 + components: + - type: Transform + parent: 2 + pos: 21.5,49.5 + - uid: 25191 + components: + - type: Transform + parent: 2 + pos: 20.5,49.5 + - uid: 25192 + components: + - type: Transform + parent: 2 + pos: 22.5,49.5 + - uid: 25193 + components: + - type: Transform + parent: 2 + pos: 30.5,20.5 + - uid: 25194 + components: + - type: Transform + parent: 2 + pos: 30.5,21.5 + - uid: 25195 + components: + - type: Transform + parent: 2 + pos: 18.5,20.5 + - uid: 25196 + components: + - type: Transform + parent: 2 + pos: 19.5,20.5 + - uid: 25197 + components: + - type: Transform + parent: 2 + pos: 20.5,20.5 + - uid: 25198 + components: + - type: Transform + parent: 2 + pos: 20.5,21.5 + - uid: 25199 + components: + - type: Transform + parent: 2 + pos: 17.5,20.5 + - uid: 25200 + components: + - type: Transform + parent: 2 + pos: 16.5,20.5 + - uid: 25201 + components: + - type: Transform + parent: 2 + pos: 16.5,21.5 + - uid: 25202 + components: + - type: Transform + parent: 2 + pos: 29.5,20.5 + - uid: 25203 + components: + - type: Transform + parent: 2 + pos: 28.5,20.5 + - uid: 25204 + components: + - type: Transform + parent: 2 + pos: 27.5,20.5 + - uid: 25205 + components: + - type: Transform + parent: 2 + pos: 26.5,20.5 + - uid: 25206 + components: + - type: Transform + parent: 2 + pos: 26.5,21.5 + - uid: 25207 + components: + - type: Transform + parent: 2 + pos: 60.5,41.5 + - uid: 25210 + components: + - type: Transform + parent: 2 + pos: 45.5,48.5 + - uid: 25211 + components: + - type: Transform + parent: 2 + pos: 122.5,48.5 + - uid: 25212 + components: + - type: Transform + parent: 2 + pos: 119.5,48.5 + - uid: 25213 + components: + - type: Transform + parent: 2 + pos: 122.5,47.5 + - uid: 25214 + components: + - type: Transform + parent: 2 + pos: 117.5,48.5 + - uid: 25215 + components: + - type: Transform + parent: 2 + pos: 125.5,89.5 + - uid: 25216 + components: + - type: Transform + parent: 2 + pos: 124.5,89.5 + - uid: 25217 + components: + - type: Transform + parent: 2 + pos: 127.5,89.5 + - uid: 25218 + components: + - type: Transform + parent: 2 + pos: 104.5,88.5 + - uid: 25219 + components: + - type: Transform + parent: 2 + pos: 104.5,89.5 + - uid: 25220 + components: + - type: Transform + parent: 2 + pos: 104.5,90.5 + - uid: 25221 + components: + - type: Transform + parent: 2 + pos: 102.5,92.5 + - uid: 25222 + components: + - type: Transform + parent: 2 + pos: 102.5,91.5 + - uid: 25223 + components: + - type: Transform + parent: 2 + pos: 103.5,91.5 + - uid: 25224 + components: + - type: Transform + parent: 2 + pos: 101.5,91.5 + - uid: 25225 + components: + - type: Transform + parent: 2 + pos: 109.5,90.5 + - uid: 25226 + components: + - type: Transform + parent: 2 + pos: 110.5,90.5 + - uid: 25227 + components: + - type: Transform + parent: 2 + pos: 108.5,94.5 + - uid: 25228 + components: + - type: Transform + parent: 2 + pos: 109.5,94.5 + - uid: 25229 + components: + - type: Transform + parent: 2 + pos: 108.5,97.5 + - uid: 25230 + components: + - type: Transform + parent: 2 + pos: 108.5,99.5 + - uid: 25231 + components: + - type: Transform + parent: 2 + pos: 106.5,97.5 + - uid: 25232 + components: + - type: Transform + parent: 2 + pos: 106.5,96.5 + - uid: 25233 + components: + - type: Transform + parent: 2 + pos: 106.5,99.5 + - uid: 25234 + components: + - type: Transform + parent: 2 + pos: 106.5,98.5 + - uid: 25235 + components: + - type: Transform + parent: 2 + pos: 102.5,99.5 + - uid: 25236 + components: + - type: Transform + parent: 2 + pos: 103.5,99.5 + - uid: 25237 + components: + - type: Transform + parent: 2 + pos: 104.5,99.5 + - uid: 25238 + components: + - type: Transform + parent: 2 + pos: 104.5,100.5 + - uid: 25239 + components: + - type: Transform + parent: 2 + pos: 104.5,98.5 + - uid: 25240 + components: + - type: Transform + parent: 2 + pos: 104.5,97.5 + - uid: 25241 + components: + - type: Transform + parent: 2 + pos: 100.5,96.5 + - uid: 25242 + components: + - type: Transform + parent: 2 + pos: 100.5,95.5 + - uid: 25243 + components: + - type: Transform + parent: 2 + pos: 102.5,96.5 + - uid: 25244 + components: + - type: Transform + parent: 2 + pos: 103.5,96.5 + - uid: 25245 + components: + - type: Transform + parent: 2 + pos: 103.5,95.5 + - uid: 25246 + components: + - type: Transform + parent: 2 + pos: 97.5,96.5 + - uid: 25247 + components: + - type: Transform + parent: 2 + pos: 97.5,99.5 + - uid: 25248 + components: + - type: Transform + parent: 2 + pos: 92.5,95.5 + - uid: 25249 + components: + - type: Transform + parent: 2 + pos: 93.5,95.5 + - uid: 25250 + components: + - type: Transform + parent: 2 + pos: 96.5,108.5 + - uid: 25251 + components: + - type: Transform + parent: 2 + pos: 95.5,108.5 + - uid: 25252 + components: + - type: Transform + parent: 2 + pos: 98.5,108.5 + - uid: 25253 + components: + - type: Transform + parent: 2 + pos: 99.5,108.5 + - uid: 25254 + components: + - type: Transform + parent: 2 + pos: 101.5,111.5 + - uid: 25255 + components: + - type: Transform + parent: 2 + pos: 100.5,111.5 + - uid: 25256 + components: + - type: Transform + parent: 2 + pos: 119.5,80.5 + - uid: 25257 + components: + - type: Transform + parent: 2 + pos: 118.5,80.5 + - uid: 25258 + components: + - type: Transform + parent: 2 + pos: 118.5,81.5 + - uid: 25259 + components: + - type: Transform + parent: 2 + pos: 128.5,60.5 + - uid: 25260 + components: + - type: Transform + parent: 2 + pos: 129.5,60.5 + - uid: 25261 + components: + - type: Transform + parent: 2 + pos: 126.5,60.5 + - uid: 25262 + components: + - type: Transform + parent: 2 + pos: 125.5,60.5 + - uid: 25263 + components: + - type: Transform + parent: 2 + pos: 124.5,58.5 + - uid: 25264 + components: + - type: Transform + parent: 2 + pos: 123.5,58.5 + - uid: 25265 + components: + - type: Transform + parent: 2 + pos: 81.5,24.5 + - uid: 25266 + components: + - type: Transform + parent: 2 + pos: 81.5,25.5 + - uid: 25267 + components: + - type: Transform + parent: 2 + pos: 79.5,22.5 + - uid: 25268 + components: + - type: Transform + parent: 2 + pos: 80.5,21.5 + - uid: 25269 + components: + - type: Transform + parent: 2 + pos: 79.5,21.5 + - uid: 25270 + components: + - type: Transform + parent: 2 + pos: 78.5,21.5 + - uid: 25271 + components: + - type: Transform + parent: 2 + pos: 77.5,21.5 + - uid: 25272 + components: + - type: Transform + parent: 2 + pos: 79.5,25.5 + - uid: 25273 + components: + - type: Transform + parent: 2 + pos: 79.5,26.5 + - uid: 25274 + components: + - type: Transform + parent: 2 + pos: 80.5,26.5 + - uid: 25275 + components: + - type: Transform + parent: 2 + pos: 75.5,25.5 + - uid: 25276 + components: + - type: Transform + parent: 2 + pos: 76.5,25.5 + - uid: 25277 + components: + - type: Transform + parent: 2 + pos: 42.5,34.5 + - uid: 25278 + components: + - type: Transform + parent: 2 + pos: 43.5,34.5 + - uid: 25279 + components: + - type: Transform + parent: 2 + pos: 74.5,98.5 + - uid: 25280 + components: + - type: Transform + parent: 2 + pos: 75.5,98.5 + - uid: 25281 + components: + - type: Transform + parent: 2 + pos: 75.5,99.5 + - uid: 25282 + components: + - type: Transform + parent: 2 + pos: 75.5,100.5 + - uid: 25283 + components: + - type: Transform + parent: 2 + pos: 75.5,101.5 + - uid: 25284 + components: + - type: Transform + parent: 2 + pos: 75.5,97.5 + - uid: 25285 + components: + - type: Transform + parent: 2 + pos: 81.5,87.5 + - uid: 25286 + components: + - type: Transform + parent: 2 + pos: 81.5,88.5 + - uid: 25287 + components: + - type: Transform + parent: 2 + pos: 80.5,78.5 + - uid: 25288 + components: + - type: Transform + parent: 2 + pos: 80.5,75.5 + - uid: 25289 + components: + - type: Transform + parent: 2 + pos: 80.5,74.5 + - uid: 25290 + components: + - type: Transform + parent: 2 + pos: 82.5,73.5 + - uid: 25291 + components: + - type: Transform + parent: 2 + pos: 81.5,73.5 + - uid: 25292 + components: + - type: Transform + parent: 2 + pos: 68.5,67.5 + - uid: 25293 + components: + - type: Transform + parent: 2 + pos: 67.5,67.5 + - uid: 25294 + components: + - type: Transform + parent: 2 + pos: 68.5,69.5 + - uid: 25295 + components: + - type: Transform + parent: 2 + pos: 67.5,69.5 + - uid: 25296 + components: + - type: Transform + parent: 2 + pos: 67.5,71.5 + - uid: 25297 + components: + - type: Transform + parent: 2 + pos: 68.5,60.5 + - uid: 25298 + components: + - type: Transform + parent: 2 + pos: 68.5,61.5 + - uid: 25299 + components: + - type: Transform + parent: 2 + pos: 68.5,62.5 + - uid: 25300 + components: + - type: Transform + parent: 2 + pos: 68.5,63.5 + - uid: 25301 + components: + - type: Transform + parent: 2 + pos: 77.5,58.5 + - uid: 25302 + components: + - type: Transform + parent: 2 + pos: 75.5,57.5 + - uid: 25303 + components: + - type: Transform + parent: 2 + pos: 76.5,57.5 + - uid: 25304 + components: + - type: Transform + parent: 2 + pos: 77.5,57.5 + - uid: 25305 + components: + - type: Transform + parent: 2 + pos: 78.5,57.5 + - uid: 25306 + components: + - type: Transform + parent: 2 + pos: 80.5,57.5 + - uid: 25307 + components: + - type: Transform + parent: 2 + pos: 79.5,57.5 + - uid: 25308 + components: + - type: Transform + parent: 2 + pos: 87.5,63.5 + - uid: 25309 + components: + - type: Transform + parent: 2 + pos: 87.5,62.5 + - uid: 25310 + components: + - type: Transform + parent: 2 + pos: 87.5,61.5 + - uid: 25311 + components: + - type: Transform + parent: 2 + pos: 87.5,60.5 + - uid: 25312 + components: + - type: Transform + parent: 2 + pos: 87.5,59.5 + - uid: 25347 + components: + - type: Transform + parent: 2 + pos: 116.5,34.5 + - uid: 25348 + components: + - type: Transform + parent: 2 + pos: 116.5,33.5 + - uid: 25349 + components: + - type: Transform + parent: 2 + pos: 116.5,32.5 + - uid: 25350 + components: + - type: Transform + parent: 2 + pos: 116.5,31.5 + - uid: 25351 + components: + - type: Transform + parent: 2 + pos: 116.5,29.5 + - uid: 25352 + components: + - type: Transform + parent: 2 + pos: 116.5,28.5 + - uid: 25353 + components: + - type: Transform + parent: 2 + pos: 116.5,26.5 + - uid: 25354 + components: + - type: Transform + parent: 2 + pos: 116.5,27.5 + - uid: 25356 + components: + - type: Transform + parent: 2 + pos: 116.5,38.5 + - uid: 25357 + components: + - type: Transform + parent: 2 + pos: 116.5,37.5 + - uid: 25358 + components: + - type: Transform + parent: 2 + pos: 115.5,38.5 + - uid: 25359 + components: + - type: Transform + parent: 2 + pos: 118.5,40.5 + - uid: 25360 + components: + - type: Transform + parent: 2 + pos: 119.5,40.5 + - uid: 25361 + components: + - type: Transform + parent: 2 + pos: 119.5,41.5 + - uid: 25362 + components: + - type: Transform + parent: 2 + pos: 120.5,41.5 + - uid: 25363 + components: + - type: Transform + parent: 2 + pos: 121.5,41.5 + - uid: 25364 + components: + - type: Transform + parent: 2 + pos: 122.5,41.5 + - uid: 25365 + components: + - type: Transform + parent: 2 + pos: 123.5,41.5 - proto: CableApcExtensionUncuttable entities: + - uid: 525 + components: + - type: Transform + parent: 2 + pos: 100.5,25.5 - uid: 4383 components: - type: Transform @@ -42909,6 +43779,16 @@ entities: - type: Transform parent: 2 pos: 62.5,50.5 + - uid: 25208 + components: + - type: Transform + parent: 2 + pos: 60.5,35.5 + - uid: 25209 + components: + - type: Transform + parent: 2 + pos: 58.5,35.5 - proto: CableMVStack10 entities: - uid: 6902 @@ -43153,6 +44033,13 @@ entities: - type: Transform parent: 2 pos: 74.5,36.5 +- proto: CargoTelepad + entities: + - uid: 17580 + components: + - type: Transform + parent: 2 + pos: 69.5,33.5 - proto: Carpet entities: - uid: 6941 @@ -45187,11 +46074,11 @@ entities: pos: 73.284874,20.270233 - proto: Catwalk entities: - - uid: 527 + - uid: 524 components: - type: Transform parent: 2 - pos: 102.5,17.5 + pos: 100.5,25.5 - uid: 2698 components: - type: Transform @@ -45492,17 +46379,7 @@ entities: components: - type: Transform parent: 2 - pos: 80.5,32.5 - - uid: 7388 - components: - - type: Transform - parent: 2 - pos: 82.5,30.5 - - uid: 7389 - components: - - type: Transform - parent: 2 - pos: 82.5,32.5 + pos: 99.5,20.5 - uid: 7390 components: - type: Transform @@ -46416,66 +47293,41 @@ entities: - type: Transform parent: 2 pos: 59.5,29.5 - - uid: 7569 - components: - - type: Transform - parent: 2 - pos: 100.5,26.5 - - uid: 7570 - components: - - type: Transform - parent: 2 - pos: 100.5,25.5 - - uid: 7571 - components: - - type: Transform - parent: 2 - pos: 101.5,26.5 - uid: 7572 components: - type: Transform parent: 2 - pos: 101.5,25.5 + pos: 99.5,22.5 - uid: 7573 components: - type: Transform parent: 2 - pos: 101.5,24.5 + pos: 99.5,23.5 - uid: 7574 components: - type: Transform parent: 2 - pos: 101.5,23.5 + pos: 100.5,20.5 - uid: 7575 components: - type: Transform parent: 2 - pos: 101.5,22.5 + pos: 100.5,21.5 - uid: 7576 components: - type: Transform parent: 2 - pos: 101.5,21.5 + pos: 100.5,22.5 - uid: 7577 components: - type: Transform parent: 2 - pos: 101.5,20.5 - - uid: 7578 - components: - - type: Transform - parent: 2 - pos: 101.5,19.5 + pos: 99.5,21.5 - uid: 7579 components: - type: Transform parent: 2 pos: 100.5,17.5 - - uid: 7580 - components: - - type: Transform - parent: 2 - pos: 101.5,18.5 - uid: 7582 components: - type: Transform @@ -49928,11 +50780,6 @@ entities: - type: Transform parent: 2 pos: 81.5,30.5 - - uid: 8193 - components: - - type: Transform - parent: 2 - pos: 80.5,30.5 - uid: 8194 components: - type: Transform @@ -52054,6 +52901,11 @@ entities: - type: Transform parent: 2 pos: 17.5,3.5 + - uid: 9096 + components: + - type: Transform + parent: 2 + pos: 98.5,17.5 - uid: 12424 components: - type: Transform @@ -52094,6 +52946,11 @@ entities: - type: Transform parent: 2 pos: 18.5,37.5 + - uid: 15326 + components: + - type: Transform + parent: 2 + pos: 99.5,18.5 - uid: 15866 components: - type: Transform @@ -52114,18 +52971,6 @@ entities: - type: Transform parent: 2 pos: 122.5,106.5 - - uid: 18015 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 98.5,25.5 - - uid: 18016 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 98.5,26.5 - uid: 18024 components: - type: Transform @@ -52136,6 +52981,31 @@ entities: - type: Transform parent: 2 pos: 54.5,6.5 + - uid: 18416 + components: + - type: Transform + parent: 2 + pos: 99.5,19.5 + - uid: 18507 + components: + - type: Transform + parent: 2 + pos: 100.5,23.5 + - uid: 18639 + components: + - type: Transform + parent: 2 + pos: 100.5,19.5 + - uid: 18827 + components: + - type: Transform + parent: 2 + pos: 99.5,17.5 + - uid: 18828 + components: + - type: Transform + parent: 2 + pos: 100.5,18.5 - uid: 19103 components: - type: Transform @@ -52172,6 +53042,21 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 102.5,120.5 + - uid: 25366 + components: + - type: Transform + parent: 2 + pos: 100.5,26.5 + - uid: 25367 + components: + - type: Transform + parent: 2 + pos: 99.5,25.5 + - uid: 25368 + components: + - type: Transform + parent: 2 + pos: 99.5,26.5 - proto: Cautery entities: - uid: 8574 @@ -53829,7 +54714,7 @@ entities: pos: 66.612854,88.45277 - proto: ChunkEntity entities: - - uid: 25165 + - uid: 25385 components: - type: ChunkEntity root: 2 @@ -53925,7 +54810,7 @@ entities: 190: 74,100 191: 74,101 192: 74,102 - - uid: 25166 + - uid: 25386 components: - type: ChunkEntity root: 2 @@ -53960,89 +54845,90 @@ entities: id: BrickTileDarkInnerNe color: '#FFFFFFFF' decals: - 1703: 53,85 - 1720: 53,83 - 3182: 53,81 + 90: 53,85 + 91: 53,83 + 92: 53,81 - node: id: BrickTileDarkInnerNw color: '#FFFFFFFF' decals: - 1704: 58,85 - 1721: 58,83 - 3181: 58,81 + 89: 58,85 + 93: 58,83 + 94: 58,81 - node: id: BrickTileDarkInnerSe color: '#FFFFFFFF' decals: 33: 61,91 - 1705: 53,87 - 1714: 53,85 - 1735: 53,83 + 88: 53,85 + 96: 53,83 + 97: 53,87 3192: 52,81 - node: id: BrickTileDarkInnerSw color: '#FFFFFFFF' decals: + 87: 58,85 + 95: 58,83 + 98: 58,87 270: 60,92 - 1706: 58,87 - 1715: 58,85 - 1736: 58,83 - node: id: BrickTileDarkLineE color: '#FFFFFFFF' decals: 30: 61,90 31: 61,89 - 1707: 53,86 - 1722: 53,84 - 1723: 53,82 + 80: 53,86 + 81: 53,82 + 82: 53,84 - node: id: BrickTileDarkLineN color: '#FFFFFFFF' decals: - 1695: 57,85 - 1696: 56,85 - 1697: 55,85 - 1698: 54,85 - 1716: 57,83 - 1717: 56,83 - 1718: 55,83 - 1719: 54,83 - 3177: 54,81 - 3178: 55,81 - 3179: 56,81 - 3188: 57,81 + 57: 54,83 + 58: 55,83 + 60: 56,83 + 61: 57,83 + 62: 57,85 + 64: 56,85 + 65: 55,85 + 66: 54,85 + 69: 54,81 + 70: 55,81 + 71: 56,81 + 72: 57,81 - node: id: BrickTileDarkLineS color: '#FFFFFFFF' decals: 28: 63,91 29: 62,91 - 1699: 57,87 - 1700: 56,87 - 1701: 55,87 - 1702: 54,87 - 1710: 57,85 - 1711: 56,85 - 1712: 55,85 - 1713: 54,85 - 1728: 54,83 - 1729: 55,83 - 1730: 56,83 - 1731: 57,83 - 3183: 54,81 - 3184: 55,81 - 3185: 56,81 - 3187: 57,81 - 3189: 53,81 - 3190: 58,81 + 59: 54,87 + 63: 55,87 + 67: 56,87 + 68: 57,87 + 73: 54,83 + 74: 55,83 + 75: 56,83 + 76: 57,83 + 83: 54,85 + 84: 55,85 + 85: 56,85 + 86: 57,85 + 99: 53,81 + 100: 54,81 + 101: 55,81 + 102: 56,81 + 103: 58,81 + 104: 57,81 + 105: 52,81 - node: id: BrickTileDarkLineW color: '#FFFFFFFF' decals: - 1708: 58,86 - 1709: 58,84 - 1732: 58,82 + 77: 58,82 + 78: 58,84 + 79: 58,86 - node: id: Flowerspv1 color: '#FFFFFFFF' @@ -54058,6 +54944,46 @@ entities: color: '#FFFFFFFF' decals: 15: 52,91 + - node: + id: FullTileOverlayGreyscale + color: '#76A57A96' + decals: + 0: 56,85 + 1: 55,85 + 2: 54,85 + 3: 53,85 + 4: 53,86 + 10: 53,87 + 11: 54,87 + 12: 55,87 + 13: 56,87 + 14: 57,87 + 18: 58,87 + 19: 58,86 + 20: 58,85 + 21: 57,85 + 22: 52,87 + 23: 52,86 + 24: 52,85 + 25: 52,84 + 26: 53,84 + 27: 53,83 + 32: 53,82 + 34: 52,82 + 35: 52,81 + 36: 53,81 + 40: 54,81 + 41: 55,81 + 42: 56,81 + 43: 57,81 + 44: 58,81 + 45: 58,82 + 47: 58,83 + 52: 58,84 + 53: 57,83 + 54: 56,83 + 55: 55,83 + 56: 54,83 - node: id: HalfTileOverlayGreyscale270 color: '#9FED5896' @@ -54133,7 +55059,7 @@ entities: 259: 61,92 260: 62,92 261: 63,92 - - uid: 25167 + - uid: 25387 components: - type: ChunkEntity root: 2 @@ -54210,7 +55136,7 @@ entities: color: '#FFFF41FF' decals: 4605: 14,84 - - uid: 25168 + - uid: 25388 components: - type: ChunkEntity root: 2 @@ -54581,7 +55507,7 @@ entities: decals: 1019: 127,62 1026: 127,63 - - uid: 25169 + - uid: 25389 components: - type: ChunkEntity root: 2 @@ -54831,7 +55757,7 @@ entities: 1834: 98,87 1835: 102,87 5469: 103,87 - - uid: 25170 + - uid: 25390 components: - type: ChunkEntity root: 2 @@ -55146,7 +56072,7 @@ entities: color: '#FFFFFFFF' decals: 1827: 97,111 - - uid: 25171 + - uid: 25391 components: - type: ChunkEntity root: 2 @@ -55402,7 +56328,7 @@ entities: decals: 5587: 125.88849,107.376595 5588: 124.99786,105.532845 - - uid: 25172 + - uid: 25392 components: - type: ChunkEntity root: 2 @@ -55501,7 +56427,7 @@ entities: decals: 2549: 33,48 2550: 34,48 - - uid: 25173 + - uid: 25393 components: - type: ChunkEntity root: 2 @@ -55747,7 +56673,7 @@ entities: color: '#FFFFFFFF' decals: 3165: 123,81 - - uid: 25174 + - uid: 25394 components: - type: ChunkEntity root: 2 @@ -55788,7 +56714,7 @@ entities: color: '#EFB34196' decals: 2577: 31,48 - - uid: 25175 + - uid: 25395 components: - type: ChunkEntity root: 2 @@ -56080,7 +57006,7 @@ entities: color: '#FFFFFFFF' decals: 1017: 127,64 - - uid: 25176 + - uid: 25396 components: - type: ChunkEntity root: 2 @@ -56352,7 +57278,7 @@ entities: 53: 69,67 54: 70,67 55: 71,67 - - uid: 25177 + - uid: 25397 components: - type: ChunkEntity root: 2 @@ -56366,14 +57292,14 @@ entities: id: Bot color: '#FFFFFFFF' decals: + 1: 76,28 + 2: 75,28 521: 75,29 - node: id: Bot color: '#FFFFFFFF' angle: 1.5707963267948966 rad decals: - 382: 74,29 - 383: 74,30 384: 75,30 4820: 76,30 4821: 76,29 @@ -56409,10 +57335,10 @@ entities: - node: id: Delivery color: '#FFFFFFFF' - angle: 1.5707963267948966 rad decals: - 4816: 77,29 - 4817: 77,30 + 0: 77,28 + 5: 77,30 + 6: 77,29 - node: id: FullTileOverlayGreyscale color: '#A4610696' @@ -56443,12 +57369,11 @@ entities: 514: 70,31 515: 69,31 4834: 79,27 - 5792: 72,31 - 5793: 71,31 - node: id: HalfTileOverlayGreyscale270 color: '#A4610696' decals: + 7: 73,31 470: 67,28 471: 67,27 472: 67,26 @@ -56471,17 +57396,17 @@ entities: color: '#FFFFFFFF' angle: 1.5707963267948966 rad decals: - 4813: 78,29 - - node: - id: QuarterTileOverlayGreyscale270 - color: '#A4610696' - decals: - 5791: 73,31 + 4: 78,29 - node: id: QuarterTileOverlayGreyscale90 color: '#A4610696' decals: 485: 71,25 + - node: + id: StandClear + color: '#FFFFFFFF' + decals: + 8: 68.97406,31.508884 - node: id: ThreeQuarterTileOverlayGreyscale color: '#A4610696' @@ -56491,6 +57416,7 @@ entities: id: ThreeQuarterTileOverlayGreyscale180 color: '#A4610696' decals: + 3: 71,31 481: 72,22 - node: id: ThreeQuarterTileOverlayGreyscale270 @@ -56524,7 +57450,7 @@ entities: cleanable: True decals: 3888: 71.988,20.082733 - - uid: 25178 + - uid: 25398 components: - type: ChunkEntity root: 2 @@ -56851,7 +57777,7 @@ entities: cleanable: True decals: 4132: 97.00392,57.905205 - - uid: 25179 + - uid: 25399 components: - type: ChunkEntity root: 2 @@ -57207,7 +58133,7 @@ entities: decals: 1504: 100,76 5400: 98,76 - - uid: 25180 + - uid: 25400 components: - type: ChunkEntity root: 2 @@ -57477,7 +58403,7 @@ entities: angle: 0.3490658503988659 rad decals: 1934: 53.860146,67.85053 - - uid: 25181 + - uid: 25401 components: - type: ChunkEntity root: 2 @@ -57677,7 +58603,7 @@ entities: color: '#F9FFFEFF' decals: 5046: 17,74 - - uid: 25182 + - uid: 25402 components: - type: ChunkEntity root: 2 @@ -57882,7 +58808,7 @@ entities: color: '#FFFFFFFF' decals: 5441: 24,42 - - uid: 25183 + - uid: 25403 components: - type: ChunkEntity root: 2 @@ -58190,7 +59116,7 @@ entities: color: '#EFB34196' decals: 2861: 44,42 - - uid: 25184 + - uid: 25404 components: - type: ChunkEntity root: 2 @@ -58350,7 +59276,7 @@ entities: cleanable: True decals: 8: 141.03253,79.7838 - - uid: 25185 + - uid: 25405 components: - type: ChunkEntity root: 2 @@ -58509,7 +59435,7 @@ entities: 5635: 87,90 5636: 87,89 5637: 87,88 - - uid: 25186 + - uid: 25406 components: - type: ChunkEntity root: 2 @@ -58647,7 +59573,7 @@ entities: color: '#FFFFFFFF' decals: 4064: 117,120 - - uid: 25187 + - uid: 25407 components: - type: ChunkEntity root: 2 @@ -58789,7 +59715,7 @@ entities: color: '#FFFF41FF' decals: 4606: 16,84 - - uid: 25188 + - uid: 25408 components: - type: ChunkEntity root: 2 @@ -58985,7 +59911,7 @@ entities: 5181: 52,51 5204: 58,52 5205: 58,50 - - uid: 25189 + - uid: 25409 components: - type: ChunkEntity root: 2 @@ -59259,7 +60185,7 @@ entities: decals: 2847: 48,36 2865: 58,37 - - uid: 25190 + - uid: 25410 components: - type: ChunkEntity root: 2 @@ -59274,31 +60200,13 @@ entities: color: '#FFFFFFFF' angle: 1.5707963267948966 rad decals: - 377: 74,33 393: 75,33 396: 75,32 - 397: 74,32 415: 74,41 416: 75,41 418: 76,41 4818: 76,33 4819: 76,32 - - node: - id: Bot - color: '#FFFFFFFF' - angle: 4.71238898038469 rad - decals: - 403: 70,32 - 404: 69,33 - 405: 71,33 - - node: - id: BotLeft - color: '#FFFFFFFF' - angle: 4.71238898038469 rad - decals: - 407: 70,33 - 408: 71,32 - 411: 69,32 - node: id: Box color: '#FFFFFFFF' @@ -59309,6 +60217,46 @@ entities: 362: 78,45 363: 79,45 5517: 79,34 + - node: + id: BrickTileDarkInnerNe + color: '#FFFFFFFF' + decals: + 16: 68,32 + - node: + id: BrickTileDarkInnerNw + color: '#FFFFFFFF' + decals: + 15: 70,32 + - node: + id: BrickTileDarkInnerSe + color: '#FFFFFFFF' + decals: + 17: 68,34 + - node: + id: BrickTileDarkInnerSw + color: '#FFFFFFFF' + decals: + 18: 70,34 + - node: + id: BrickTileDarkLineE + color: '#FFFFFFFF' + decals: + 13: 68,33 + - node: + id: BrickTileDarkLineN + color: '#FFFFFFFF' + decals: + 14: 69,32 + - node: + id: BrickTileDarkLineS + color: '#FFFFFFFF' + decals: + 12: 69,34 + - node: + id: BrickTileDarkLineW + color: '#FFFFFFFF' + decals: + 11: 70,33 - node: id: CheckerNWSE color: '#A4610696' @@ -59319,14 +60267,18 @@ entities: 565: 77,39 566: 78,39 567: 78,37 + - node: + id: Delivery + color: '#FFFFFFFF' + decals: + 1: 77,32 + 2: 77,33 - node: id: Delivery color: '#FFFFFFFF' angle: 1.5707963267948966 rad decals: 417: 73,41 - 4814: 77,33 - 4815: 77,32 - node: id: FullTileOverlayGreyscale color: '#9FED5896' @@ -59337,6 +60289,12 @@ entities: id: FullTileOverlayGreyscale color: '#A4610696' decals: + 9: 72,33 + 10: 72,32 + 20: 72,40 + 21: 73,40 + 22: 74,40 + 31: 66,34 3598: 69,36 3599: 70,36 - node: @@ -59372,20 +60330,20 @@ entities: id: HalfTileOverlayGreyscale color: '#A4610696' decals: + 26: 71,39 + 27: 72,39 + 28: 73,39 + 29: 74,39 444: 79,35 445: 78,35 446: 77,35 449: 70,35 450: 69,35 452: 68,35 - 455: 73,34 456: 74,34 540: 68,40 541: 69,40 - 542: 70,40 - 543: 71,40 5794: 75,34 - 5795: 72,34 - node: id: HalfTileOverlayGreyscale color: '#D381C996' @@ -59432,32 +60390,41 @@ entities: id: HalfTileOverlayGreyscale270 color: '#A4610696' decals: + 7: 73,33 + 8: 73,32 509: 67,34 510: 67,33 511: 67,32 537: 67,38 538: 67,39 - node: - id: LoadingArea - color: '#FFFFFFFF' - angle: -1.5707963267948966 rad + id: HalfTileOverlayGreyscale90 + color: '#A4610696' decals: - 4812: 78,33 + 0: 71,34 + 4: 71,33 + 5: 71,32 - node: id: LoadingArea color: '#FFFFFFFF' angle: 3.141592653589793 rad decals: 568: 76,39 + - node: + id: LoadingArea + color: '#FFFFFFFF' + angle: 4.71238898038469 rad + decals: + 3: 78,33 - node: id: QuarterTileOverlayGreyscale color: '#A4610696' decals: + 30: 75,39 3592: 77,40 3593: 78,40 3594: 77,36 3595: 78,36 - 5516: 72,40 5798: 76,34 - node: id: QuarterTileOverlayGreyscale180 @@ -59475,6 +60442,7 @@ entities: id: QuarterTileOverlayGreyscale270 color: '#A4610696' decals: + 23: 72,41 425: 72,42 426: 71,42 427: 70,42 @@ -59487,12 +60455,11 @@ entities: 5148: 73,45 5149: 73,46 5150: 73,47 - 5515: 72,41 - node: id: QuarterTileOverlayGreyscale90 color: '#A4610696' decals: - 0: 71,34 + 25: 70,39 5112: 64,44 5140: 70,44 5141: 72,44 @@ -59509,11 +60476,13 @@ entities: id: StandClear color: '#FFFFFFFF' decals: + 19: 69.00531,34.49326 419: 76,41 - node: id: ThreeQuarterTileOverlayGreyscale color: '#A4610696' decals: + 6: 73,34 508: 67,35 539: 67,40 5799: 76,35 @@ -59547,6 +60516,7 @@ entities: id: ThreeQuarterTileOverlayGreyscale90 color: '#A4610696' decals: + 24: 70,40 5796: 71,35 - node: id: ThreeQuarterTileOverlayGreyscale90 @@ -59564,7 +60534,7 @@ entities: decals: 356: 74,47 357: 74,46 - - uid: 25191 + - uid: 25411 components: - type: ChunkEntity root: 2 @@ -59783,7 +60753,7 @@ entities: color: '#FFFFFFFF' decals: 1824: 95,110 - - uid: 25192 + - uid: 25412 components: - type: ChunkEntity root: 2 @@ -59824,7 +60794,7 @@ entities: id: BrickTileSteelLineW color: '#FFFFFFFF' decals: - 5534: 95,22 + 0: 95,22 - node: id: CheckerNESW color: '#8D1C9996' @@ -59881,7 +60851,7 @@ entities: color: '#FFFFFFFF' decals: 4833: 92,29 - - uid: 25193 + - uid: 25413 components: - type: ChunkEntity root: 2 @@ -60054,7 +61024,7 @@ entities: color: '#FFFFFFFF' decals: 5519: 92,33 - - uid: 25194 + - uid: 25414 components: - type: ChunkEntity root: 2 @@ -60168,7 +61138,7 @@ entities: decals: 5506: 18,27 5507: 28,27 - - uid: 25195 + - uid: 25415 components: - type: ChunkEntity root: 2 @@ -60205,33 +61175,44 @@ entities: angle: 4.71238898038469 rad decals: 573: 97,28 - - node: - id: QuarterTileOverlayGreyscale - color: '#8D1C9996' - decals: - 714: 97,23 - node: id: QuarterTileOverlayGreyscale180 color: '#8D1C9996' decals: - 710: 96,22 - 711: 97,22 - 712: 97,23 + 2: 96,23 + 3: 96,22 715: 96,24 + - node: + id: QuarterTileOverlayGreyscale270 + color: '#8D1C9996' + decals: + 5: 97,26 + 6: 98,25 + 15: 99,24 - node: id: QuarterTileOverlayGreyscale270 color: '#A4610696' decals: - 689: 96,22 - 690: 97,22 + 8: 97,25 + 11: 98,26 + 12: 100,24 + - node: + id: QuarterTileOverlayGreyscale90 + color: '#8D1C9996' + decals: + 4: 97,26 + 7: 98,25 + 14: 99,24 - node: id: QuarterTileOverlayGreyscale90 color: '#A4610696' decals: - 691: 97,23 - 692: 96,23 + 0: 96,23 + 1: 96,22 + 9: 97,25 + 10: 98,26 + 13: 100,24 693: 96,24 - 713: 97,22 - node: id: WarnFull color: '#FFFFFFFF' @@ -60240,7 +61221,7 @@ entities: 576: 97,30 577: 97,30 578: 97,29 - - uid: 25196 + - uid: 25416 components: - type: ChunkEntity root: 2 @@ -60311,7 +61292,7 @@ entities: 2407: 82,59 2408: 81,59 2409: 80,59 - - uid: 25197 + - uid: 25417 components: - type: ChunkEntity root: 2 @@ -60434,7 +61415,7 @@ entities: 2422: 69,61 2423: 69,62 2424: 69,63 - - uid: 25198 + - uid: 25418 components: - type: ChunkEntity root: 2 @@ -60595,7 +61576,7 @@ entities: 267: 69,92 268: 70,92 269: 71,92 - - uid: 25199 + - uid: 25419 components: - type: ChunkEntity root: 2 @@ -60621,7 +61602,7 @@ entities: color: '#52B4E950' decals: 4378: 136,110 - - uid: 25200 + - uid: 25420 components: - type: ChunkEntity root: 2 @@ -60714,7 +61695,7 @@ entities: color: '#FFFFFFFF' decals: 4072: 100,117 - - uid: 25201 + - uid: 25421 components: - type: ChunkEntity root: 2 @@ -60879,7 +61860,7 @@ entities: 105: 85,74 2008: 85,66 2014: 86,66 - - uid: 25202 + - uid: 25422 components: - type: ChunkEntity root: 2 @@ -61098,7 +62079,7 @@ entities: decals: 4191: 109,46 4192: 109,47 - - uid: 25203 + - uid: 25423 components: - type: ChunkEntity root: 2 @@ -61275,7 +62256,7 @@ entities: 1217: 119,45 1218: 118,45 1219: 117,45 - - uid: 25204 + - uid: 25424 components: - type: ChunkEntity root: 2 @@ -61336,7 +62317,7 @@ entities: color: '#FFFFFFFF' decals: 3272: 63,99 - - uid: 25205 + - uid: 25425 components: - type: ChunkEntity root: 2 @@ -61423,7 +62404,7 @@ entities: color: '#FFFFFFFF' decals: 321: 39,87 - - uid: 25206 + - uid: 25426 components: - type: ChunkEntity root: 2 @@ -61519,7 +62500,7 @@ entities: color: '#FFFFFFFF' decals: 786: 46,76 - - uid: 25207 + - uid: 25427 components: - type: ChunkEntity root: 2 @@ -61787,7 +62768,7 @@ entities: 4530: 12,75 4531: 12,76 4532: 12,77 - - uid: 25208 + - uid: 25428 components: - type: ChunkEntity root: 2 @@ -61866,7 +62847,7 @@ entities: color: '#FF0000FF' decals: 4183: 146,81 - - uid: 25209 + - uid: 25429 components: - type: ChunkEntity root: 2 @@ -61890,7 +62871,7 @@ entities: 4754: 15,62 4755: 13,62 4756: 13,63 - - uid: 25210 + - uid: 25430 components: - type: ChunkEntity root: 2 @@ -62107,7 +63088,7 @@ entities: cleanable: True decals: 3237: 52.997345,24.430504 - - uid: 25211 + - uid: 25431 components: - type: ChunkEntity root: 2 @@ -62158,7 +63139,7 @@ entities: 3877: 54,13 3878: 55,13 3879: 56,13 - - uid: 25212 + - uid: 25432 components: - type: ChunkEntity root: 2 @@ -62237,7 +63218,7 @@ entities: color: '#FFFFFFFF' decals: 4683: 15,107 - - uid: 25213 + - uid: 25433 components: - type: ChunkEntity root: 2 @@ -62453,7 +63434,7 @@ entities: 24: 142.17316,81.00255 25: 141.00128,82.12755 26: 139.9544,81.04942 - - uid: 25214 + - uid: 25434 components: - type: ChunkEntity root: 2 @@ -62660,7 +63641,7 @@ entities: decals: 3973: 140.60794,54.072556 3974: 139.76419,54.33818 - - uid: 25215 + - uid: 25435 components: - type: ChunkEntity root: 2 @@ -62751,7 +63732,7 @@ entities: color: '#79150096' decals: 4587: 29.500965,97.07767 - - uid: 25216 + - uid: 25436 components: - type: ChunkEntity root: 2 @@ -62786,7 +63767,7 @@ entities: color: '#FF0000FF' decals: 4171: 145,79 - - uid: 25217 + - uid: 25437 components: - type: ChunkEntity root: 2 @@ -62896,7 +63877,7 @@ entities: color: '#FFFFFFFF' decals: 4699: 138,33 - - uid: 25218 + - uid: 25438 components: - type: ChunkEntity root: 2 @@ -62936,7 +63917,7 @@ entities: color: '#EFB34196' decals: 2754: 33,29 - - uid: 25219 + - uid: 25439 components: - type: ChunkEntity root: 2 @@ -62962,7 +63943,7 @@ entities: color: '#FFFFFFFF' decals: 4698: 138,31 - - uid: 25220 + - uid: 25440 components: - type: ChunkEntity root: 2 @@ -64188,6 +65169,16 @@ entities: - type: Transform parent: 2 pos: 109.89116,53.646126 +- proto: ClothingBeltSecurity + entities: + - uid: 17007 + components: + - type: Transform + parent: 16219 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 16219 - proto: ClothingBeltSecurityWebbingFilled entities: - uid: 9074 @@ -64311,11 +65302,11 @@ entities: pos: 54.535355,40.589188 - proto: ClothingHandsGlovesFingerless entities: - - uid: 9096 + - uid: 8193 components: - type: Transform parent: 2 - pos: 69.58265,22.53532 + pos: 69.573074,22.5472 - proto: ClothingHandsGlovesFingerlessInsulated entities: - uid: 9097 @@ -64372,6 +65363,16 @@ entities: - type: Transform parent: 2 pos: 139.5206,75.471 +- proto: ClothingHeadHatBeretSecurity + entities: + - uid: 17222 + components: + - type: Transform + parent: 16219 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 16219 - proto: ClothingHeadHatCardborg entities: - uid: 9105 @@ -64556,11 +65557,11 @@ entities: pos: 117.42139,103.67886 - proto: ClothingHeadsetMining entities: - - uid: 9135 + - uid: 18016 components: - type: Transform parent: 2 - pos: 99.61422,23.001423 + pos: 98.41654,23.419724 - proto: ClothingMaskBandBlack entities: - uid: 9136 @@ -64872,6 +65873,16 @@ entities: parent: 9177 - type: Physics canCollide: False +- proto: ClothingShoesBootsJack + entities: + - uid: 16229 + components: + - type: Transform + parent: 16219 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 16219 - proto: ClothingShoesBootsMag entities: - uid: 9179 @@ -64996,6 +66007,16 @@ entities: - type: Transform parent: 2 pos: 61.675667,26.389153 +- proto: ClothingUniformJumpskirtSecGrey + entities: + - uid: 16697 + components: + - type: Transform + parent: 16219 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 16219 - proto: ClothingUniformJumpsuitAncient entities: - uid: 9196 @@ -65059,6 +66080,16 @@ entities: - type: Transform parent: 2 pos: 89.29202,85.59994 +- proto: ClothingUniformJumpsuitSecGrey + entities: + - uid: 16650 + components: + - type: Transform + parent: 16219 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 16219 - proto: Cobweb1 entities: - uid: 8692 @@ -65335,12 +66366,12 @@ entities: pos: 121.5,121.5 - proto: ComputerCargoBounty entities: - - uid: 9249 + - uid: 12983 components: - type: Transform parent: 2 - rot: -1.5707963267948966 rad - pos: 80.5,38.5 + rot: 1.5707963267948966 rad + pos: 73.5,30.5 - proto: ComputerCargoOrders entities: - uid: 9250 @@ -65349,6 +66380,11 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 74.5,61.5 + - type: DeviceLinkSource + linkedPorts: + 17580: + - - OrderSender + - OrderReceiver - type: AccessReader accessListsOriginal: - - Cargo @@ -65358,11 +66394,32 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 72.5,39.5 + - type: DeviceLinkSource + linkedPorts: + 17580: + - - OrderSender + - OrderReceiver - uid: 9252 components: - type: Transform parent: 2 pos: 79.5,25.5 + - type: DeviceLinkSource + linkedPorts: + 17580: + - - OrderSender + - OrderReceiver + - uid: 21326 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 72.5,41.5 + - type: DeviceLinkSource + linkedPorts: + 17580: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersEngineering entities: - uid: 9253 @@ -65370,6 +66427,11 @@ entities: - type: Transform parent: 2 pos: 53.5,53.5 + - type: DeviceLinkSource + linkedPorts: + 17580: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersMedical entities: - uid: 9254 @@ -65378,6 +66440,11 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 103.5,48.5 + - type: DeviceLinkSource + linkedPorts: + 17580: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersScience entities: - uid: 9255 @@ -65385,6 +66452,11 @@ entities: - type: Transform parent: 2 pos: 103.5,72.5 + - type: DeviceLinkSource + linkedPorts: + 17580: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersSecurity entities: - uid: 9256 @@ -65392,6 +66464,11 @@ entities: - type: Transform parent: 2 pos: 96.5,88.5 + - type: DeviceLinkSource + linkedPorts: + 17580: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersService entities: - uid: 9257 @@ -65399,6 +66476,11 @@ entities: - type: Transform parent: 2 pos: 60.5,81.5 + - type: DeviceLinkSource + linkedPorts: + 17580: + - - OrderSender + - OrderReceiver - proto: ComputerComms entities: - uid: 9258 @@ -65542,12 +66624,12 @@ entities: pos: 56.5,39.5 - proto: ComputerRadar entities: - - uid: 9279 + - uid: 9135 components: - type: Transform parent: 2 - rot: 3.141592653589793 rad - pos: 73.5,27.5 + rot: -1.5707963267948966 rad + pos: 80.5,38.5 - uid: 9280 components: - type: Transform @@ -67465,21 +68547,21 @@ entities: - type: Transform parent: 2 pos: 20.5,86.5 - - uid: 9602 + - uid: 9616 components: - type: Transform parent: 2 - pos: 69.5,33.5 - - uid: 9603 + pos: 75.5,29.5 + - uid: 9617 components: - type: Transform parent: 2 - pos: 74.5,30.5 - - uid: 9604 + pos: 75.5,33.5 + - uid: 12976 components: - type: Transform parent: 2 - pos: 74.5,33.5 + pos: 76.5,30.5 - proto: CrateEngineeringAMEJar entities: - uid: 9605 @@ -67543,36 +68625,26 @@ entities: pos: 56.5,52.5 - proto: CrateFilledSpawner entities: - - uid: 9614 + - uid: 9602 components: - type: Transform parent: 2 - pos: 76.5,32.5 - - uid: 9615 + pos: 77.5,28.5 + - uid: 9603 components: - type: Transform parent: 2 - pos: 69.5,32.5 - - uid: 9616 - components: - - type: Transform - parent: 2 - pos: 70.5,33.5 - - uid: 9617 - components: - - type: Transform - parent: 2 - pos: 75.5,29.5 - - uid: 9618 - components: - - type: Transform - parent: 2 - pos: 74.5,29.5 + pos: 75.5,32.5 - uid: 9619 components: - type: Transform parent: 2 pos: 21.5,85.5 + - uid: 12995 + components: + - type: Transform + parent: 2 + pos: 77.5,32.5 - proto: CrateFreezer entities: - uid: 9621 @@ -67918,6 +68990,13 @@ entities: - type: Transform parent: 2 pos: 125.5,82.5 +- proto: CrewsimovCircuitBoard + entities: + - uid: 852 + components: + - type: Transform + parent: 2 + pos: 87.43229,72.23507 - proto: Crowbar entities: - uid: 9664 @@ -67930,11 +69009,11 @@ entities: - type: Transform parent: 2 pos: 55.624393,71.43817 - - uid: 9666 + - uid: 17736 components: - type: Transform parent: 2 - pos: 67.5,32.5 + pos: 73.51293,29.444313 - proto: CrowbarRed entities: - uid: 9667 @@ -69139,6 +70218,11 @@ entities: - type: Transform parent: 2 pos: 53.67598,40.620438 + - uid: 25167 + components: + - type: Transform + parent: 2 + pos: 52.465767,84.551834 - proto: DiceBag entities: - uid: 9845 @@ -69745,6 +70829,18 @@ entities: - type: Transform parent: 2 pos: 34.5,88.5 + - uid: 10318 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 71.5,31.5 + - uid: 10319 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 70.5,31.5 - uid: 10340 components: - type: Transform @@ -69775,6 +70871,18 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 95.5,33.5 + - uid: 19363 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 73.5,34.5 + - uid: 19403 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 73.5,33.5 - uid: 25148 components: - type: Transform @@ -69835,12 +70943,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 77.5,43.5 - - uid: 9962 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 70.5,31.5 - uid: 9963 components: - type: Transform @@ -70011,7 +71113,7 @@ entities: - type: Transform parent: 2 rot: 3.141592653589793 rad - pos: 77.5,31.5 + pos: 77.5,35.5 - uid: 9994 components: - type: Transform @@ -70122,6 +71224,12 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 49.5,41.5 + - uid: 10301 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 77.5,34.5 - proto: DisposalMachineFrame entities: - uid: 10011 @@ -70190,6 +71298,12 @@ entities: - type: Transform parent: 2 pos: 17.5,34.5 + - uid: 9666 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 72.5,33.5 - uid: 9699 components: - type: Transform @@ -70213,6 +71327,11 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 49.5,40.5 + - uid: 9962 + components: + - type: Transform + parent: 2 + pos: 77.5,31.5 - uid: 9981 components: - type: Transform @@ -71829,16 +72948,6 @@ entities: - type: Transform parent: 2 pos: 77.5,36.5 - - uid: 10301 - components: - - type: Transform - parent: 2 - pos: 77.5,35.5 - - uid: 10302 - components: - - type: Transform - parent: 2 - pos: 77.5,34.5 - uid: 10303 components: - type: Transform @@ -71889,54 +72998,16 @@ entities: - type: Transform parent: 2 pos: 70.5,30.5 - - uid: 10313 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 69.5,31.5 - - uid: 10314 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 68.5,31.5 - uid: 10315 components: - type: Transform parent: 2 - rot: -1.5707963267948966 rad - pos: 71.5,31.5 - - uid: 10316 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 72.5,31.5 + pos: 71.5,34.5 - uid: 10317 components: - type: Transform parent: 2 - rot: -1.5707963267948966 rad - pos: 73.5,31.5 - - uid: 10318 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 74.5,31.5 - - uid: 10319 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 75.5,31.5 - - uid: 10320 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 76.5,31.5 + pos: 71.5,32.5 - uid: 10321 components: - type: Transform @@ -75979,6 +77050,24 @@ entities: - type: Transform parent: 2 pos: 17.5,33.5 + - uid: 25375 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 74.5,34.5 + - uid: 25376 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 75.5,34.5 + - uid: 25377 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 76.5,34.5 - proto: DisposalPipeBroken entities: - uid: 11006 @@ -76028,6 +77117,17 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 83.5,109.5 + - uid: 10313 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 76.5,35.5 + - uid: 10316 + components: + - type: Transform + parent: 2 + pos: 71.5,35.5 - uid: 10918 components: - type: Transform @@ -76189,12 +77289,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 69.5,29.5 - - uid: 11040 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 67.5,31.5 - uid: 11041 components: - type: Transform @@ -76482,6 +77576,11 @@ entities: pos: 17.5,31.5 - proto: DisposalUnit entities: + - uid: 1136 + components: + - type: Transform + parent: 2 + pos: 71.5,35.5 - uid: 8937 components: - type: Transform @@ -76562,11 +77661,6 @@ entities: - type: Transform parent: 2 pos: 80.5,39.5 - - uid: 11109 - components: - - type: Transform - parent: 2 - pos: 67.5,31.5 - uid: 11110 components: - type: Transform @@ -76822,6 +77916,11 @@ entities: - type: Transform parent: 2 pos: 96.5,91.5 + - uid: 20870 + components: + - type: Transform + parent: 2 + pos: 76.5,35.5 - uid: 24007 components: - type: Transform @@ -76873,6 +77972,12 @@ entities: pos: 106.5,70.5 - proto: DisposalYJunction entities: + - uid: 10314 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 71.5,33.5 - uid: 11168 components: - type: Transform @@ -78035,6 +79140,12 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 89.5,92.5 + - uid: 25382 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 73.5,30.5 - proto: EmergencyMedipen entities: - uid: 11369 @@ -79053,13 +80164,15 @@ entities: - 11737 - 11738 - 11742 - - 15020 - - 594 - - 15196 - - 15197 - - 593 - - 15021 + - 9279 + - 25381 + - 25380 + - 14911 + - 17484 + - 25383 - 11741 + - 25374 + - 9615 - uid: 11452 components: - type: Transform @@ -79076,8 +80189,6 @@ entities: - 15025 - 585 - 15201 - - 11827 - - 11631 - 23999 - uid: 11453 components: @@ -79227,23 +80338,6 @@ entities: - 580 - 15005 - 15181 - - uid: 11464 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 138.5,85.5 - - type: DeviceList - devices: - - 11786 - - 11787 - - 11788 - - 11790 - - 11791 - - 14602 - - 11842 - - 6802 - - 17291 - uid: 11465 components: - type: Transform @@ -79569,6 +80663,8 @@ entities: - 15202 - 587 - 14985 + - 872 + - 871 - uid: 11487 components: - type: Transform @@ -79873,6 +80969,23 @@ entities: - 618 - 15052 - 11555 + - uid: 25168 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 131.5,85.5 + - type: DeviceList + devices: + - 11786 + - 11787 + - 11788 + - 11790 + - 11791 + - 14602 + - 11842 + - 6802 + - 17291 - proto: FireAlarmAssembly entities: - uid: 11506 @@ -80175,7 +81288,7 @@ entities: deviceLists: - 31 - 11443 - - 32 + - 21851 - uid: 11544 components: - type: Transform @@ -80775,6 +81888,26 @@ entities: - type: DeviceNetwork deviceLists: - 44 + - uid: 871 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 97.5,26.5 + - type: DeviceNetwork + deviceLists: + - 17782 + - 11486 + - uid: 872 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 97.5,25.5 + - type: DeviceNetwork + deviceLists: + - 17782 + - 11486 - uid: 8899 components: - type: Transform @@ -81020,16 +82153,6 @@ entities: - 11431 - 39 - 11444 - - uid: 11631 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 97.5,26.5 - - type: DeviceNetwork - deviceLists: - - 11452 - - 17782 - uid: 11632 components: - type: Transform @@ -82128,7 +83251,7 @@ entities: deviceLists: - 11487 - 11451 - - 123 + - 527 - 124 - uid: 11738 components: @@ -82139,7 +83262,7 @@ entities: deviceLists: - 11487 - 11451 - - 123 + - 527 - 124 - uid: 11739 components: @@ -82184,7 +83307,7 @@ entities: - 33 - 11451 - 11488 - - 123 + - 527 - uid: 11743 components: - type: Transform @@ -82252,7 +83375,7 @@ entities: deviceLists: - 31 - 11443 - - 32 + - 21851 - uid: 11749 components: - type: Transform @@ -82262,7 +83385,7 @@ entities: deviceLists: - 31 - 11443 - - 32 + - 21851 - uid: 11750 components: - type: Transform @@ -82272,7 +83395,7 @@ entities: deviceLists: - 31 - 11443 - - 32 + - 21851 - uid: 11751 components: - type: Transform @@ -82656,10 +83779,10 @@ entities: pos: 128.5,88.5 - type: DeviceNetwork deviceLists: - - 56 - 55 - 11446 - - 11464 + - 25169 + - 25168 - uid: 11787 components: - type: Transform @@ -82668,10 +83791,10 @@ entities: pos: 128.5,87.5 - type: DeviceNetwork deviceLists: - - 56 - 55 - 11446 - - 11464 + - 25169 + - 25168 - uid: 11788 components: - type: Transform @@ -82680,10 +83803,10 @@ entities: pos: 128.5,86.5 - type: DeviceNetwork deviceLists: - - 56 - 55 - 11446 - - 11464 + - 25169 + - 25168 - uid: 11789 components: - type: Transform @@ -82702,9 +83825,9 @@ entities: - type: DeviceNetwork deviceLists: - 54 - - 56 - - 11464 - 11480 + - 25169 + - 25168 - uid: 11791 components: - type: Transform @@ -82713,9 +83836,9 @@ entities: - type: DeviceNetwork deviceLists: - 54 - - 56 - - 11464 - 11480 + - 25169 + - 25168 - uid: 11792 components: - type: Transform @@ -83090,16 +84213,6 @@ entities: deviceLists: - 10 - 9030 - - uid: 11827 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 97.5,25.5 - - type: DeviceNetwork - deviceLists: - - 11452 - - 17782 - uid: 11828 components: - type: Transform @@ -83247,8 +84360,8 @@ entities: - type: DeviceNetwork deviceLists: - 120 - - 11464 - - 56 + - 25169 + - 25168 - uid: 19453 components: - type: Transform @@ -83297,6 +84410,28 @@ entities: deviceLists: - 9030 - 10 + - uid: 25380 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 72.5,33.5 + - type: DeviceNetwork + deviceLists: + - 11451 + - 123 + - 527 + - uid: 25381 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 72.5,32.5 + - type: DeviceNetwork + deviceLists: + - 11451 + - 123 + - 527 - proto: Fireplace entities: - uid: 11843 @@ -83370,6 +84505,14 @@ entities: - type: Transform parent: 2 pos: 96.4969,83.56804 + - uid: 17221 + components: + - type: Transform + parent: 16219 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 16219 - proto: FlippoLighter entities: - uid: 1246 @@ -85022,14 +86165,6 @@ entities: pos: 73.5,39.5 - type: AtmosPipeColor color: '#990000FF' - - uid: 12085 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 74.5,29.5 - - type: AtmosPipeColor - color: '#990000FF' - uid: 12086 components: - type: Transform @@ -86886,6 +88021,21 @@ entities: pos: 110.5,56.5 - type: AtmosPipeColor color: '#990000FF' + - uid: 25372 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 71.5,33.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 25373 + components: + - type: Transform + parent: 2 + pos: 71.5,34.5 + - type: AtmosPipeColor + color: '#0055CCFF' - proto: GasPipeBendAlt1 entities: - uid: 12314 @@ -87261,6 +88411,14 @@ entities: color: '#990000FF' - proto: GasPipeStraight entities: + - uid: 593 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 69.5,34.5 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 612 components: - type: Transform @@ -87378,6 +88536,14 @@ entities: pos: 113.5,101.5 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 9614 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 71.5,32.5 + - type: AtmosPipeColor + color: '#990000FF' - uid: 11310 components: - type: Transform @@ -87402,6 +88568,14 @@ entities: pos: 21.5,32.5 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 11827 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 68.5,32.5 + - type: AtmosPipeColor + color: '#990000FF' - uid: 11964 components: - type: Transform @@ -91972,14 +93146,6 @@ entities: pos: 78.5,34.5 - type: AtmosPipeColor color: '#990000FF' - - uid: 12961 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 77.5,33.5 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 12962 components: - type: Transform @@ -92068,14 +93234,6 @@ entities: pos: 75.5,27.5 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 12973 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 74.5,27.5 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 12974 components: - type: Transform @@ -92092,28 +93250,12 @@ entities: pos: 72.5,27.5 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 12976 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 77.5,29.5 - - type: AtmosPipeColor - color: '#990000FF' - uid: 12977 components: - type: Transform parent: 2 - rot: 1.5707963267948966 rad - pos: 76.5,29.5 - - type: AtmosPipeColor - color: '#990000FF' - - uid: 12978 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 75.5,29.5 + rot: -1.5707963267948966 rad + pos: 69.5,32.5 - type: AtmosPipeColor color: '#990000FF' - uid: 12979 @@ -92140,30 +93282,6 @@ entities: pos: 70.5,30.5 - type: AtmosPipeColor color: '#990000FF' - - uid: 12982 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 70.5,31.5 - - type: AtmosPipeColor - color: '#990000FF' - - uid: 12983 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 69.5,32.5 - - type: AtmosPipeColor - color: '#990000FF' - - uid: 12984 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 71.5,32.5 - - type: AtmosPipeColor - color: '#990000FF' - uid: 12985 components: - type: Transform @@ -92185,9 +93303,9 @@ entities: - type: Transform parent: 2 rot: 1.5707963267948966 rad - pos: 74.5,32.5 + pos: 76.5,33.5 - type: AtmosPipeColor - color: '#990000FF' + color: '#0055CCFF' - uid: 12988 components: - type: Transform @@ -92217,7 +93335,7 @@ entities: - type: Transform parent: 2 rot: 1.5707963267948966 rad - pos: 76.5,34.5 + pos: 75.5,33.5 - type: AtmosPipeColor color: '#0055CCFF' - uid: 12992 @@ -92225,7 +93343,7 @@ entities: - type: Transform parent: 2 rot: 1.5707963267948966 rad - pos: 75.5,34.5 + pos: 74.5,33.5 - type: AtmosPipeColor color: '#0055CCFF' - uid: 12993 @@ -92233,49 +93351,25 @@ entities: - type: Transform parent: 2 rot: 1.5707963267948966 rad - pos: 74.5,34.5 - - type: AtmosPipeColor - color: '#0055CCFF' - - uid: 12994 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 73.5,34.5 - - type: AtmosPipeColor - color: '#0055CCFF' - - uid: 12995 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 72.5,34.5 - - type: AtmosPipeColor - color: '#0055CCFF' - - uid: 12996 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 71.5,34.5 + pos: 73.5,33.5 - type: AtmosPipeColor color: '#0055CCFF' - uid: 12997 components: - type: Transform parent: 2 - rot: 1.5707963267948966 rad - pos: 70.5,34.5 + rot: 3.141592653589793 rad + pos: 77.5,34.5 - type: AtmosPipeColor color: '#0055CCFF' - uid: 12998 components: - type: Transform parent: 2 - rot: 1.5707963267948966 rad - pos: 69.5,34.5 + rot: 3.141592653589793 rad + pos: 78.5,29.5 - type: AtmosPipeColor - color: '#0055CCFF' + color: '#990000FF' - uid: 12999 components: - type: Transform @@ -104361,6 +105455,22 @@ entities: pos: 86.5,94.5 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 14744 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 77.5,28.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 14746 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 70.5,34.5 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 14805 components: - type: Transform @@ -104393,6 +105503,14 @@ entities: pos: 68.5,113.5 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 15020 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 68.5,34.5 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 15039 components: - type: Transform @@ -104416,6 +105534,13 @@ entities: pos: 18.5,35.5 - type: AtmosPipeColor color: '#990000FF' + - uid: 17441 + components: + - type: Transform + parent: 2 + pos: 70.5,31.5 + - type: AtmosPipeColor + color: '#990000FF' - uid: 17546 components: - type: Transform @@ -104462,6 +105587,14 @@ entities: pos: 18.5,33.5 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 20651 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 72.5,33.5 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 21283 components: - type: Transform @@ -104528,6 +105661,14 @@ entities: pos: 121.5,77.5 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 12085 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 77.5,33.5 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 12165 components: - type: Transform @@ -104557,6 +105698,29 @@ entities: pos: 136.5,89.5 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 12961 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 74.5,27.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 12978 + components: + - type: Transform + parent: 2 + pos: 70.5,32.5 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 12984 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 74.5,32.5 + - type: AtmosPipeColor + color: '#990000FF' - uid: 13203 components: - type: Transform @@ -105631,14 +106795,6 @@ entities: pos: 77.5,42.5 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 14742 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 77.5,34.5 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 14743 components: - type: Transform @@ -105647,14 +106803,6 @@ entities: pos: 77.5,38.5 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 14744 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 77.5,28.5 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 14745 components: - type: Transform @@ -105663,13 +106811,6 @@ entities: pos: 77.5,27.5 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 14746 - components: - - type: Transform - parent: 2 - pos: 70.5,32.5 - - type: AtmosPipeColor - color: '#990000FF' - uid: 14747 components: - type: Transform @@ -106889,14 +108030,6 @@ entities: pos: 14.5,64.5 - type: AtmosPipeColor color: '#03FCD3FF' - - uid: 14911 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 78.5,29.5 - - type: AtmosPipeColor - color: '#990000FF' - uid: 14912 components: - type: Transform @@ -107258,6 +108391,18 @@ entities: open: False - proto: GasVentPump entities: + - uid: 9279 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 67.5,34.5 + - type: DeviceNetwork + deviceLists: + - 11451 + - 123 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 12158 components: - type: Transform @@ -107325,8 +108470,8 @@ entities: pos: 136.5,88.5 - type: DeviceNetwork deviceLists: - - 56 - - 11464 + - 25169 + - 25168 - type: AtmosPipeColor color: '#0055CCFF' - uid: 14962 @@ -107889,7 +109034,7 @@ entities: pos: 67.5,46.5 - type: DeviceNetwork deviceLists: - - 32 + - 21851 - type: AtmosPipeColor color: '#0055CCFF' - uid: 15016 @@ -107937,30 +109082,6 @@ entities: - 124 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 15020 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 76.5,28.5 - - type: DeviceNetwork - deviceLists: - - 11451 - - 123 - - type: AtmosPipeColor - color: '#0055CCFF' - - uid: 15021 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 68.5,34.5 - - type: DeviceNetwork - deviceLists: - - 11451 - - 123 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 15022 components: - type: Transform @@ -109186,6 +110307,17 @@ entities: - 115 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 17484 + components: + - type: Transform + parent: 2 + pos: 74.5,28.5 + - type: DeviceNetwork + deviceLists: + - 11451 + - 527 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 17590 components: - type: Transform @@ -109268,6 +110400,18 @@ entities: - 57 - type: AtmosPipeColor color: '#990000FF' + - uid: 9615 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 67.5,32.5 + - type: DeviceNetwork + deviceLists: + - 11451 + - 123 + - type: AtmosPipeColor + color: '#990000FF' - uid: 10262 components: - type: Transform @@ -109325,6 +110469,17 @@ entities: - 11386 - type: AtmosPipeColor color: '#990000FF' + - uid: 14911 + components: + - type: Transform + parent: 2 + pos: 74.5,33.5 + - type: DeviceNetwork + deviceLists: + - 11451 + - 527 + - type: AtmosPipeColor + color: '#990000FF' - uid: 15139 components: - type: Transform @@ -109850,7 +111005,7 @@ entities: pos: 65.5,46.5 - type: DeviceNetwork deviceLists: - - 32 + - 21851 - type: AtmosPipeColor color: '#990000FF' - uid: 15192 @@ -109901,30 +111056,6 @@ entities: - 124 - type: AtmosPipeColor color: '#990000FF' - - uid: 15196 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 74.5,28.5 - - type: DeviceNetwork - deviceLists: - - 11451 - - 123 - - type: AtmosPipeColor - color: '#990000FF' - - uid: 15197 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 68.5,32.5 - - type: DeviceNetwork - deviceLists: - - 11451 - - 123 - - type: AtmosPipeColor - color: '#990000FF' - uid: 15198 components: - type: Transform @@ -111191,8 +112322,8 @@ entities: pos: 134.5,88.5 - type: DeviceNetwork deviceLists: - - 56 - - 11464 + - 25169 + - 25168 - type: AtmosPipeColor color: '#990000FF' - uid: 24856 @@ -111316,6 +112447,11 @@ entities: pos: 127.49127,108.51109 - proto: Girder entities: + - uid: 15196 + components: + - type: Transform + parent: 2 + pos: 134.5,117.5 - uid: 15323 components: - type: Transform @@ -111331,12 +112467,6 @@ entities: - type: Transform parent: 2 pos: 113.5,129.5 - - uid: 15326 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 134.5,117.5 - uid: 15327 components: - type: Transform @@ -111403,6 +112533,11 @@ entities: pos: 92.5594,83.521164 - proto: Grille entities: + - uid: 267 + components: + - type: Transform + parent: 2 + pos: 101.5,25.5 - uid: 838 components: - type: Transform @@ -111438,6 +112573,16 @@ entities: - type: Transform parent: 2 pos: 83.5,114.5 + - uid: 7569 + components: + - type: Transform + parent: 2 + pos: 100.5,27.5 + - uid: 7578 + components: + - type: Transform + parent: 2 + pos: 101.5,26.5 - uid: 8572 components: - type: Transform @@ -112153,21 +113298,11 @@ entities: - type: Transform parent: 2 pos: 68.5,30.5 - - uid: 15478 - components: - - type: Transform - parent: 2 - pos: 98.5,23.5 - uid: 15479 components: - type: Transform parent: 2 - pos: 98.5,22.5 - - uid: 15480 - components: - - type: Transform - parent: 2 - pos: 97.5,21.5 + pos: 71.5,40.5 - uid: 15481 components: - type: Transform @@ -112218,11 +113353,6 @@ entities: - type: Transform parent: 2 pos: 92.5,17.5 - - uid: 15493 - components: - - type: Transform - parent: 2 - pos: 71.5,41.5 - uid: 15494 components: - type: Transform @@ -117323,6 +118453,16 @@ entities: - type: Transform parent: 2 pos: 118.5,89.5 + - uid: 17382 + components: + - type: Transform + parent: 2 + pos: 97.5,23.5 + - uid: 17411 + components: + - type: Transform + parent: 2 + pos: 97.5,22.5 - uid: 17716 components: - type: Transform @@ -117353,6 +118493,11 @@ entities: - type: Transform parent: 2 pos: 93.5,17.5 + - uid: 18417 + components: + - type: Transform + parent: 2 + pos: 96.5,18.5 - uid: 18508 components: - type: Transform @@ -117428,6 +118573,11 @@ entities: - type: Transform parent: 2 pos: 119.5,102.5 + - uid: 21853 + components: + - type: Transform + parent: 2 + pos: 99.5,27.5 - uid: 22465 components: - type: Transform @@ -117468,6 +118618,11 @@ entities: - type: Transform parent: 2 pos: 67.5,122.5 + - uid: 24741 + components: + - type: Transform + parent: 2 + pos: 71.5,41.5 - uid: 24773 components: - type: Transform @@ -117680,11 +118835,6 @@ entities: - type: Transform parent: 2 pos: 78.5,17.5 - - uid: 16650 - components: - - type: Transform - parent: 2 - pos: 77.5,17.5 - uid: 16651 components: - type: Transform @@ -117920,6 +119070,11 @@ entities: pos: 76.5,66.5 - proto: HandLabeler entities: + - uid: 12982 + components: + - type: Transform + parent: 2 + pos: 73.533295,28.449364 - uid: 16694 components: - type: Transform @@ -117935,11 +119090,6 @@ entities: - type: Transform parent: 2 pos: 74.30597,100.47675 - - uid: 16697 - components: - - type: Transform - parent: 2 - pos: 68.49819,40.54989 - proto: HappyHonk entities: - uid: 16698 @@ -119937,13 +121087,31 @@ entities: - type: Transform parent: 2 pos: 115.5,69.5 -- proto: LockerSecurityFilled +- proto: LockerSecurity entities: - - uid: 17007 + - uid: 16219 components: - type: Transform parent: 2 - pos: 66.5,47.5 + pos: 67.5,47.5 + - type: ContainerContainer + containers: + entity_storage: !type:Container + ents: + - 17221 + - 17007 + - 16697 + - 16650 + - 16229 + - 17222 + showEnts: False + occludes: True + paper_label: !type:ContainerSlot + ent: null + showEnts: False + occludes: True +- proto: LockerSecurityFilled + entities: - uid: 17008 components: - type: Transform @@ -120069,6 +121237,38 @@ entities: - type: Transform parent: 2 pos: 93.5,48.5 +- proto: LogicGateOr + entities: + - uid: 25369 + components: + - type: Transform + parent: 2 + pos: 100.5,26.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 11631: + - - Output + - DoorBolt + 11464: + - - Output + - DoorBolt + - uid: 25370 + components: + - type: Transform + parent: 2 + pos: 99.5,26.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 18829: + - - Output + - DoorBolt + 20617: + - - Output + - DoorBolt - proto: LootSpawnerMaterials entities: - uid: 17026 @@ -121196,18 +122396,6 @@ entities: pos: 97.5,81.5 - proto: OreBox entities: - - uid: 17221 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 97.5,22.5 - - uid: 17222 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 97.5,23.5 - uid: 17223 components: - type: Transform @@ -121219,6 +122407,12 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 56.5,14.5 + - uid: 22565 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 96.5,23.5 - proto: OreProcessor entities: - uid: 17225 @@ -122335,11 +123529,11 @@ entities: pos: 121.52171,53.530815 - proto: PlushieLizardMirrored entities: - - uid: 17382 + - uid: 19419 components: - type: Transform parent: 2 - pos: 67.5,33.5 + pos: 67.46388,29.44096 - proto: PlushieNuke entities: - uid: 9084 @@ -122728,11 +123922,11 @@ entities: pos: 55.5,70.5 - proto: PosterContrabandWehWatches entities: - - uid: 17441 + - uid: 25165 components: - type: Transform parent: 2 - pos: 66.5,33.5 + pos: 66.5,29.5 - proto: PosterLegit50thAnniversaryVintageReprint entities: - uid: 17442 @@ -123013,11 +124207,11 @@ entities: - type: Transform parent: 2 pos: 100.5,89.5 - - uid: 17484 + - uid: 19769 components: - type: Transform parent: 2 - pos: 124.5,29.5 + pos: 124.5,28.5 - proto: PosterLegitVacation entities: - uid: 17485 @@ -123032,6 +124226,13 @@ entities: - type: Transform parent: 2 pos: 34.5,38.5 +- proto: PotatoAI + entities: + - uid: 17986 + components: + - type: Transform + parent: 2 + pos: 129.43063,36.40957 - proto: PottedPlant10 entities: - uid: 17487 @@ -123274,11 +124475,6 @@ entities: - type: Transform parent: 2 pos: 67.5,40.5 - - uid: 17532 - components: - - type: Transform - parent: 2 - pos: 67.5,35.5 - uid: 17533 components: - type: Transform @@ -123477,6 +124673,11 @@ entities: pos: 60.6492,72.8797 - proto: PowerCellRecharger entities: + - uid: 14742 + components: + - type: Transform + parent: 2 + pos: 73.5,27.5 - uid: 17574 components: - type: Transform @@ -123509,11 +124710,6 @@ entities: - type: Transform parent: 2 pos: 67.5,28.5 - - uid: 17580 - components: - - type: Transform - parent: 2 - pos: 67.5,34.5 - uid: 17581 components: - type: Transform @@ -123826,6 +125022,12 @@ entities: pos: 143.5,118.5 - proto: Poweredlight entities: + - uid: 56 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 107.5,106.5 - uid: 637 components: - type: Transform @@ -123859,12 +125061,24 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 114.5,100.5 + - uid: 11040 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 71.5,34.5 - uid: 11058 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad pos: 84.5,88.5 + - uid: 11109 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 136.5,86.5 - uid: 11300 components: - type: Transform @@ -123889,6 +125103,12 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 24.5,40.5 + - uid: 12973 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 73.5,31.5 - uid: 13778 components: - type: Transform @@ -123929,12 +125149,6 @@ entities: - type: Transform parent: 2 pos: 71.5,29.5 - - uid: 16229 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 73.5,30.5 - uid: 16266 components: - type: Transform @@ -124017,11 +125231,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 86.5,64.5 - - uid: 17411 - components: - - type: Transform - parent: 2 - pos: 72.5,34.5 - uid: 17444 components: - type: Transform @@ -124408,12 +125617,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 94.5,96.5 - - uid: 17705 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 75.5,37.5 - uid: 17708 components: - type: Transform @@ -124630,14 +125833,14 @@ entities: components: - type: Transform parent: 2 - rot: 3.141592653589793 rad - pos: 111.5,106.5 + rot: 1.5707963267948966 rad + pos: 73.5,34.5 - uid: 17764 components: - type: Transform parent: 2 rot: 3.141592653589793 rad - pos: 107.5,106.5 + pos: 75.5,37.5 - uid: 17765 components: - type: Transform @@ -125370,7 +126573,7 @@ entities: components: - type: Transform parent: 2 - pos: 130.5,88.5 + pos: 109.5,109.5 - uid: 17919 components: - type: Transform @@ -125632,6 +126835,18 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 114.5,86.5 + - uid: 17984 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 109.5,105.5 + - uid: 17985 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 129.5,86.5 - uid: 17995 components: - type: Transform @@ -125764,6 +126979,34 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 84.5,100.5 + - uid: 25343 + components: + - type: Transform + parent: 2 + pos: 122.5,26.5 + - uid: 25344 + components: + - type: Transform + parent: 2 + pos: 126.5,26.5 + - uid: 25346 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 118.5,31.5 + - uid: 25355 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 130.5,31.5 + - uid: 25371 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 99.5,28.5 - proto: PoweredlightBlue entities: - uid: 11315 @@ -125784,24 +127027,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 11.5,66.5 - - uid: 17984 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 126.5,32.5 - - uid: 17985 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 122.5,32.5 - - uid: 17986 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 124.5,30.5 - uid: 17988 components: - type: Transform @@ -125826,6 +127051,18 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 41.5,79.5 + - uid: 19770 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 121.5,32.5 + - uid: 20547 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 127.5,32.5 - proto: PoweredlightEmpty entities: - uid: 16921 @@ -125876,6 +127113,24 @@ entities: isDamageActive: False - proto: PoweredlightExterior entities: + - uid: 594 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 116.5,134.5 + - uid: 730 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 143.5,128.5 + - uid: 731 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 145.5,42.5 - uid: 17700 components: - type: Transform @@ -125904,23 +127159,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 99.5,35.5 - - uid: 17998 - components: - - type: Transform - parent: 2 - pos: 124.5,27.5 - - uid: 17999 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 119.5,32.5 - - uid: 18000 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 129.5,32.5 - uid: 18003 components: - type: Transform @@ -125951,12 +127189,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 11.5,10.5 - - uid: 18013 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 99.5,21.5 - uid: 18014 components: - type: Transform @@ -126097,8 +127329,19 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 15.5,40.5 + - uid: 21852 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 98.5,21.5 - proto: PoweredlightGreen entities: + - uid: 732 + components: + - type: Transform + parent: 2 + pos: 124.5,82.5 - uid: 16485 components: - type: Transform @@ -126187,13 +127430,26 @@ entities: - type: Transform parent: 2 pos: 82.5,47.5 -- proto: PoweredLightPostSmall +- proto: PoweredlightPink entities: - - uid: 17736 + - uid: 733 components: - type: Transform parent: 2 - pos: 23.5,25.5 + rot: 3.141592653589793 rad + pos: 130.5,74.5 + - uid: 738 + components: + - type: Transform + parent: 2 + pos: 132.5,81.5 + - uid: 739 + components: + - type: Transform + parent: 2 + pos: 128.5,81.5 +- proto: PoweredLightPostSmall + entities: - uid: 18059 components: - type: Transform @@ -126221,6 +127477,18 @@ entities: - type: Transform parent: 2 pos: 52.5,91.5 + - uid: 25170 + components: + - type: Transform + parent: 2 + pos: 23.5,20.5 +- proto: PoweredlightRed + entities: + - uid: 740 + components: + - type: Transform + parent: 2 + pos: 114.5,104.5 - proto: PoweredlightSodium entities: - uid: 18063 @@ -126500,16 +127768,12 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 59.5,69.5 - - uid: 18105 - components: - - type: Transform - parent: 2 - pos: 44.5,71.5 - uid: 18106 components: - type: Transform parent: 2 - pos: 44.5,69.5 + rot: -1.5707963267948966 rad + pos: 44.5,71.5 - uid: 18107 components: - type: Transform @@ -126860,6 +128124,12 @@ entities: - type: Transform parent: 2 pos: 12.5,97.5 + - uid: 18186 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 44.5,69.5 - uid: 18634 components: - type: Transform @@ -126960,12 +128230,6 @@ entities: - type: Transform parent: 2 pos: 99.5,118.5 - - uid: 18186 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 138.5,25.5 - uid: 18187 components: - type: Transform @@ -127002,6 +128266,12 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 86.5,84.5 + - uid: 18241 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 137.5,22.5 - uid: 19338 components: - type: Transform @@ -127013,6 +128283,11 @@ entities: - type: Transform parent: 2 pos: 106.5,122.5 + - uid: 25172 + components: + - type: Transform + parent: 2 + pos: 137.5,28.5 - proto: Protolathe entities: - uid: 18194 @@ -127132,6 +128407,11 @@ entities: - type: Transform parent: 2 pos: 86.5,107.5 + - uid: 15493 + components: + - type: Transform + parent: 2 + pos: 68.5,40.5 - uid: 17634 components: - type: Transform @@ -127293,11 +128573,6 @@ entities: - type: Transform parent: 2 pos: 70.5,40.5 - - uid: 18241 - components: - - type: Transform - parent: 2 - pos: 71.5,40.5 - uid: 18242 components: - type: Transform @@ -127759,6 +129034,11 @@ entities: - type: Transform parent: 2 pos: 99.5,83.5 + - uid: 25378 + components: + - type: Transform + parent: 2 + pos: 67.5,31.5 - proto: RadiationCollectorFullTank entities: - uid: 18332 @@ -128224,21 +129504,6 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 78.5,59.5 - - uid: 18415 - components: - - type: Transform - parent: 2 - pos: 96.5,19.5 - - uid: 18416 - components: - - type: Transform - parent: 2 - pos: 97.5,19.5 - - uid: 18417 - components: - - type: Transform - parent: 2 - pos: 98.5,19.5 - uid: 18418 components: - type: Transform @@ -128481,11 +129746,6 @@ entities: - type: Transform parent: 2 pos: 97.5,33.5 - - uid: 18639 - components: - - type: Transform - parent: 2 - pos: 99.5,19.5 - uid: 21365 components: - type: Transform @@ -129653,6 +130913,16 @@ entities: pos: 23.5,51.5 - proto: ReinforcedWindow entities: + - uid: 856 + components: + - type: Transform + parent: 2 + pos: 101.5,25.5 + - uid: 857 + components: + - type: Transform + parent: 2 + pos: 101.5,26.5 - uid: 3138 components: - type: Transform @@ -129673,6 +130943,26 @@ entities: - type: Transform parent: 2 pos: 83.5,115.5 + - uid: 7388 + components: + - type: Transform + parent: 2 + pos: 100.5,27.5 + - uid: 7389 + components: + - type: Transform + parent: 2 + pos: 99.5,27.5 + - uid: 7570 + components: + - type: Transform + parent: 2 + pos: 97.5,23.5 + - uid: 7571 + components: + - type: Transform + parent: 2 + pos: 97.5,22.5 - uid: 11533 components: - type: Transform @@ -130412,7 +131702,7 @@ entities: components: - type: Transform parent: 2 - pos: 71.5,41.5 + pos: 71.5,40.5 - uid: 18819 components: - type: Transform @@ -130448,21 +131738,6 @@ entities: - type: Transform parent: 2 pos: 96.5,21.5 - - uid: 18827 - components: - - type: Transform - parent: 2 - pos: 97.5,21.5 - - uid: 18828 - components: - - type: Transform - parent: 2 - pos: 98.5,22.5 - - uid: 18829 - components: - - type: Transform - parent: 2 - pos: 98.5,23.5 - uid: 18832 components: - type: Transform @@ -132713,6 +133988,11 @@ entities: - type: Transform parent: 2 pos: 71.5,121.5 + - uid: 24816 + components: + - type: Transform + parent: 2 + pos: 71.5,41.5 - uid: 25083 components: - type: Transform @@ -133100,11 +134380,6 @@ entities: - type: Transform parent: 2 pos: 104.5,95.5 - - uid: 19363 - components: - - type: Transform - parent: 2 - pos: 76.5,26.5 - uid: 19494 components: - type: Transform @@ -133121,6 +134396,11 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 131.5,55.5 + - uid: 19767 + components: + - type: Transform + parent: 2 + pos: 75.5,35.5 - uid: 20312 components: - type: Transform @@ -133387,11 +134667,11 @@ entities: - type: Transform parent: 2 pos: 36.421917,50.617348 - - uid: 19403 + - uid: 20621 components: - type: Transform parent: 2 - pos: 71.5,40.5 + pos: 68.52327,40.50892 - uid: 25126 components: - type: Transform @@ -133476,11 +134756,6 @@ entities: pos: 119.5,124.5 - proto: Shovel entities: - - uid: 19419 - components: - - type: Transform - parent: 2 - pos: 67.52015,29.488445 - uid: 19420 components: - type: Transform @@ -133491,6 +134766,12 @@ entities: - type: Transform parent: 2 pos: 92.635864,22.509472 + - uid: 25379 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 67.5262,31.45219 - proto: ShowcaseRobotAntique entities: - uid: 19422 @@ -134124,16 +135405,16 @@ entities: pos: 58.512253,39.42638 - proto: SignAi entities: - - uid: 19534 - components: - - type: Transform - parent: 2 - pos: 124.5,28.5 - uid: 19535 components: - type: Transform parent: 2 pos: 123.5,40.5 + - uid: 25345 + components: + - type: Transform + parent: 2 + pos: 124.5,27.5 - proto: SignAiUpload entities: - uid: 1225 @@ -135971,11 +137252,11 @@ entities: pos: 94.5,21.5 - proto: SignMail entities: - - uid: 16219 + - uid: 15021 components: - type: Transform parent: 2 - pos: 75.5,35.5 + pos: 72.5,35.5 - proto: SignMaterials entities: - uid: 22243 @@ -136175,32 +137456,32 @@ entities: - type: Transform parent: 2 pos: 86.5,73.5 - - uid: 19767 - components: - - type: Transform - parent: 2 - pos: 128.5,28.5 - - uid: 19768 - components: - - type: Transform - parent: 2 - pos: 120.5,28.5 - - uid: 19769 - components: - - type: Transform - parent: 2 - pos: 120.5,35.5 - - uid: 19770 - components: - - type: Transform - parent: 2 - pos: 128.5,35.5 - uid: 19771 components: - type: Transform parent: 2 rot: 3.141592653589793 rad pos: 24.5,92.5 + - uid: 25339 + components: + - type: Transform + parent: 2 + pos: 119.5,35.5 + - uid: 25340 + components: + - type: Transform + parent: 2 + pos: 119.5,27.5 + - uid: 25341 + components: + - type: Transform + parent: 2 + pos: 129.5,27.5 + - uid: 25342 + components: + - type: Transform + parent: 2 + pos: 129.5,35.5 - proto: SignSecureMedRed entities: - uid: 19772 @@ -141337,6 +142618,17 @@ entities: - SurveillanceCameraScience - proto: SurveillanceCameraSecurity entities: + - uid: 32 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 69.5,47.5 + - type: SurveillanceCamera + nameSet: True + id: Security Checkpoint Cargo + setupAvailableNetworks: + - SurveillanceCameraSecurity - uid: 17958 components: - type: Transform @@ -141370,17 +142662,6 @@ entities: id: Entrance Security setupAvailableNetworks: - SurveillanceCameraSecurity - - uid: 20547 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 66.5,47.5 - - type: SurveillanceCamera - nameSet: True - id: Security Checkpoint Cargo - setupAvailableNetworks: - - SurveillanceCameraSecurity - uid: 20548 components: - type: Transform @@ -141645,6 +142926,17 @@ entities: id: Salvage North setupAvailableNetworks: - SurveillanceCameraSupply + - uid: 15197 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 102.5,24.5 + - type: SurveillanceCamera + nameSet: True + id: Salvage Outside + setupAvailableNetworks: + - SurveillanceCameraSupply - uid: 20570 components: - type: Transform @@ -141674,17 +142966,6 @@ entities: pos: 96.5,27.5 - type: SurveillanceCamera id: Salvage South - - uid: 20573 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 99.5,23.5 - - type: SurveillanceCamera - nameSet: True - id: Salvage Outside - setupAvailableNetworks: - - SurveillanceCameraSupply - uid: 20576 components: - type: Transform @@ -141695,6 +142976,16 @@ entities: id: Breakroom Cargo setupAvailableNetworks: - SurveillanceCameraSupply + - uid: 20650 + components: + - type: Transform + parent: 2 + pos: 67.5,31.5 + - type: SurveillanceCamera + nameSet: True + id: Cargo Telepad + setupAvailableNetworks: + - SurveillanceCameraSupply - proto: SurveillanceCameraWirelessRouterEntertainment entities: - uid: 17712 @@ -141803,6 +143094,11 @@ entities: - type: Transform parent: 2 pos: 127.5,108.5 + - uid: 9249 + components: + - type: Transform + parent: 2 + pos: 73.5,27.5 - uid: 9568 components: - type: Transform @@ -141818,6 +143114,16 @@ entities: - type: Transform parent: 2 pos: 19.5,32.5 + - uid: 9604 + components: + - type: Transform + parent: 2 + pos: 73.5,28.5 + - uid: 12994 + components: + - type: Transform + parent: 2 + pos: 73.5,29.5 - uid: 15850 components: - type: Transform @@ -141973,11 +143279,6 @@ entities: - type: Transform parent: 2 pos: 73.5,36.5 - - uid: 20617 - components: - - type: Transform - parent: 2 - pos: 68.5,40.5 - uid: 20618 components: - type: Transform @@ -141993,11 +143294,6 @@ entities: - type: Transform parent: 2 pos: 97.5,72.5 - - uid: 20621 - components: - - type: Transform - parent: 2 - pos: 67.5,32.5 - uid: 20622 components: - type: Transform @@ -142133,16 +143429,6 @@ entities: - type: Transform parent: 2 pos: 72.5,23.5 - - uid: 20650 - components: - - type: Transform - parent: 2 - pos: 67.5,33.5 - - uid: 20651 - components: - - type: Transform - parent: 2 - pos: 67.5,34.5 - uid: 20652 components: - type: Transform @@ -143252,11 +144538,6 @@ entities: - type: Transform parent: 2 pos: 72.5,40.5 - - uid: 20870 - components: - - type: Transform - parent: 2 - pos: 72.5,41.5 - uid: 20871 components: - type: Transform @@ -147638,11 +148919,6 @@ entities: pos: 109.5,105.5 - proto: VendingMachineSecDrobe entities: - - uid: 21326 - components: - - type: Transform - parent: 2 - pos: 67.5,47.5 - uid: 21327 components: - type: Transform @@ -147816,6 +149092,11 @@ entities: - type: Transform parent: 2 pos: 19.5,36.5 + - uid: 266 + components: + - type: Transform + parent: 2 + pos: 101.5,24.5 - uid: 493 components: - type: Transform @@ -147826,6 +149107,11 @@ entities: - type: Transform parent: 2 pos: 83.5,119.5 + - uid: 3687 + components: + - type: Transform + parent: 2 + pos: 129.5,35.5 - uid: 4247 components: - type: Transform @@ -147871,6 +149157,11 @@ entities: - type: Transform parent: 2 pos: 101.5,82.5 + - uid: 7580 + components: + - type: Transform + parent: 2 + pos: 101.5,27.5 - uid: 8200 components: - type: Transform @@ -147946,6 +149237,11 @@ entities: - type: Transform parent: 2 pos: 107.5,29.5 + - uid: 15478 + components: + - type: Transform + parent: 2 + pos: 97.5,21.5 - uid: 15486 components: - type: Transform @@ -150696,21 +151992,6 @@ entities: - type: Transform parent: 2 pos: 98.5,24.5 - - uid: 21851 - components: - - type: Transform - parent: 2 - pos: 98.5,21.5 - - uid: 21852 - components: - - type: Transform - parent: 2 - pos: 99.5,27.5 - - uid: 21853 - components: - - type: Transform - parent: 2 - pos: 99.5,24.5 - uid: 21854 components: - type: Transform @@ -150746,11 +152027,6 @@ entities: - type: Transform parent: 2 pos: 66.5,35.5 - - uid: 21861 - components: - - type: Transform - parent: 2 - pos: 66.5,34.5 - uid: 21862 components: - type: Transform @@ -154191,36 +155467,6 @@ entities: - type: Transform parent: 2 pos: 121.5,35.5 - - uid: 22565 - components: - - type: Transform - parent: 2 - pos: 121.5,34.5 - - uid: 22566 - components: - - type: Transform - parent: 2 - pos: 121.5,33.5 - - uid: 22567 - components: - - type: Transform - parent: 2 - pos: 121.5,32.5 - - uid: 22568 - components: - - type: Transform - parent: 2 - pos: 121.5,31.5 - - uid: 22569 - components: - - type: Transform - parent: 2 - pos: 121.5,30.5 - - uid: 22570 - components: - - type: Transform - parent: 2 - pos: 121.5,29.5 - uid: 22571 components: - type: Transform @@ -154236,11 +155482,6 @@ entities: - type: Transform parent: 2 pos: 122.5,35.5 - - uid: 22574 - components: - - type: Transform - parent: 2 - pos: 122.5,29.5 - uid: 22575 components: - type: Transform @@ -154256,21 +155497,11 @@ entities: - type: Transform parent: 2 pos: 123.5,35.5 - - uid: 22578 - components: - - type: Transform - parent: 2 - pos: 123.5,29.5 - uid: 22579 components: - type: Transform parent: 2 pos: 123.5,28.5 - - uid: 22580 - components: - - type: Transform - parent: 2 - pos: 124.5,29.5 - uid: 22581 components: - type: Transform @@ -154301,11 +155532,6 @@ entities: - type: Transform parent: 2 pos: 125.5,35.5 - - uid: 22587 - components: - - type: Transform - parent: 2 - pos: 125.5,29.5 - uid: 22588 components: - type: Transform @@ -154321,11 +155547,6 @@ entities: - type: Transform parent: 2 pos: 126.5,35.5 - - uid: 22591 - components: - - type: Transform - parent: 2 - pos: 126.5,29.5 - uid: 22592 components: - type: Transform @@ -154341,36 +155562,6 @@ entities: - type: Transform parent: 2 pos: 127.5,35.5 - - uid: 22595 - components: - - type: Transform - parent: 2 - pos: 127.5,34.5 - - uid: 22596 - components: - - type: Transform - parent: 2 - pos: 127.5,33.5 - - uid: 22597 - components: - - type: Transform - parent: 2 - pos: 127.5,32.5 - - uid: 22598 - components: - - type: Transform - parent: 2 - pos: 127.5,31.5 - - uid: 22599 - components: - - type: Transform - parent: 2 - pos: 127.5,30.5 - - uid: 22600 - components: - - type: Transform - parent: 2 - pos: 127.5,29.5 - uid: 22601 components: - type: Transform @@ -157786,6 +158977,136 @@ entities: - type: Transform parent: 2 pos: 48.5,40.5 + - uid: 25313 + components: + - type: Transform + parent: 2 + pos: 129.5,34.5 + - uid: 25314 + components: + - type: Transform + parent: 2 + pos: 129.5,33.5 + - uid: 25315 + components: + - type: Transform + parent: 2 + pos: 129.5,31.5 + - uid: 25316 + components: + - type: Transform + parent: 2 + pos: 129.5,30.5 + - uid: 25317 + components: + - type: Transform + parent: 2 + pos: 129.5,29.5 + - uid: 25318 + components: + - type: Transform + parent: 2 + pos: 129.5,28.5 + - uid: 25319 + components: + - type: Transform + parent: 2 + pos: 129.5,32.5 + - uid: 25320 + components: + - type: Transform + parent: 2 + pos: 129.5,27.5 + - uid: 25321 + components: + - type: Transform + parent: 2 + pos: 128.5,27.5 + - uid: 25322 + components: + - type: Transform + parent: 2 + pos: 127.5,27.5 + - uid: 25323 + components: + - type: Transform + parent: 2 + pos: 126.5,27.5 + - uid: 25324 + components: + - type: Transform + parent: 2 + pos: 125.5,27.5 + - uid: 25325 + components: + - type: Transform + parent: 2 + pos: 124.5,27.5 + - uid: 25326 + components: + - type: Transform + parent: 2 + pos: 123.5,27.5 + - uid: 25327 + components: + - type: Transform + parent: 2 + pos: 122.5,27.5 + - uid: 25328 + components: + - type: Transform + parent: 2 + pos: 121.5,27.5 + - uid: 25329 + components: + - type: Transform + parent: 2 + pos: 120.5,27.5 + - uid: 25330 + components: + - type: Transform + parent: 2 + pos: 119.5,27.5 + - uid: 25331 + components: + - type: Transform + parent: 2 + pos: 119.5,28.5 + - uid: 25332 + components: + - type: Transform + parent: 2 + pos: 119.5,29.5 + - uid: 25333 + components: + - type: Transform + parent: 2 + pos: 119.5,30.5 + - uid: 25334 + components: + - type: Transform + parent: 2 + pos: 119.5,31.5 + - uid: 25335 + components: + - type: Transform + parent: 2 + pos: 119.5,32.5 + - uid: 25336 + components: + - type: Transform + parent: 2 + pos: 119.5,33.5 + - uid: 25337 + components: + - type: Transform + parent: 2 + pos: 119.5,35.5 + - uid: 25338 + components: + - type: Transform + parent: 2 + pos: 119.5,34.5 - proto: WallSolid entities: - uid: 467 @@ -157858,6 +159179,11 @@ entities: - type: Transform parent: 2 pos: 123.5,106.5 + - uid: 9618 + components: + - type: Transform + parent: 2 + pos: 72.5,31.5 - uid: 11070 components: - type: Transform @@ -157928,6 +159254,11 @@ entities: - type: Transform parent: 2 pos: 87.5,118.5 + - uid: 17705 + components: + - type: Transform + parent: 2 + pos: 72.5,34.5 - uid: 17935 components: - type: Transform @@ -165186,18 +166517,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 77.5,101.5 - - uid: 24740 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 72.5,40.5 - - uid: 24741 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 72.5,41.5 - uid: 24742 components: - type: Transform @@ -165370,6 +166689,23 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 99.5,79.5 + - uid: 18105 + components: + - type: Transform + parent: 2 + pos: 102.5,60.5 + - uid: 25171 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 100.5,58.5 + - uid: 25384 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 95.5,87.5 - proto: Wirecutter entities: - uid: 24771 @@ -165622,6 +166958,11 @@ entities: pos: 20.5,92.5 - proto: Wrench entities: + - uid: 12996 + components: + - type: Transform + parent: 2 + pos: 73.49731,29.491188 - uid: 24812 components: - type: Transform @@ -165642,11 +166983,6 @@ entities: - type: Transform parent: 2 pos: 55.578796,71.53778 - - uid: 24816 - components: - - type: Transform - parent: 2 - pos: 67.5,32.5 - uid: 24817 components: - type: Transform From 57f78a6e40008ffef702182f034ec5039e24d04e Mon Sep 17 00:00:00 2001 From: Wolfkey-SomeoneElseTookMyUsername Date: Fri, 11 Sep 2026 23:21:12 +0000 Subject: [PATCH 125/197] Galaxythistles are flowers (#44887) * replaces fruit tag on galaxythistle with flower * Update food_sequence_element.yml --- .../Prototypes/Entities/Objects/Consumable/Food/produce.yml | 2 +- .../Prototypes/Recipes/Cooking/food_sequence_element.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml index f739ee0616..bebb412eed 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml @@ -1731,7 +1731,7 @@ - type: Tag tags: - Galaxythistle - - Fruit # Probably? + - Flower - type: FoodSequenceElement entries: Taco: Galaxythistle diff --git a/Resources/Prototypes/Recipes/Cooking/food_sequence_element.yml b/Resources/Prototypes/Recipes/Cooking/food_sequence_element.yml index 1b954484b4..4143c84e73 100644 --- a/Resources/Prototypes/Recipes/Cooking/food_sequence_element.yml +++ b/Resources/Prototypes/Recipes/Cooking/food_sequence_element.yml @@ -1113,7 +1113,7 @@ - sprite: Objects/Specific/Hydroponics/galaxythistle.rsi state: produce tags: - - Fruit + - Flower - type: foodSequenceElement id: GalaxythistleBurger @@ -1122,7 +1122,7 @@ - sprite: Objects/Specific/Hydroponics/galaxythistle.rsi state: produce tags: - - Fruit + - Flower # bungo From 96b6d59d0a48b31f7fe4290ebbc5c8ad7230d057 Mon Sep 17 00:00:00 2001 From: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Date: Sat, 12 Sep 2026 18:40:14 +0000 Subject: [PATCH 126/197] Adjust Structural Damage of Weapons (#45998) value(s)!!!!!!! --- Resources/Prototypes/Entities/Mobs/Player/changeling.yml | 4 ++-- Resources/Prototypes/Entities/Mobs/Player/guardian.yml | 2 +- Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml | 2 +- Resources/Prototypes/Entities/Objects/Tools/pka_upgrade.yml | 2 +- .../Objects/Weapons/Guns/Projectiles/Bullets/shotgun.yml | 2 +- .../Objects/Weapons/Guns/Projectiles/Energy/kinetic.yml | 2 +- .../Prototypes/Entities/Objects/Weapons/Melee/armblade.yml | 4 ++-- .../Prototypes/Entities/Objects/Weapons/Melee/fireaxe.yml | 2 +- .../Prototypes/Entities/Objects/Weapons/Melee/hammers.yml | 2 +- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Resources/Prototypes/Entities/Mobs/Player/changeling.yml b/Resources/Prototypes/Entities/Mobs/Player/changeling.yml index 83b7b08374..1b58e623ba 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/changeling.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/changeling.yml @@ -66,7 +66,7 @@ types: Slash: 2.5 Piercing: 2.5 - Structural: 15 # to destroy lockers in which bodies could be hidden + Structural: 6 # to destroy lockers in which bodies could be hidden - type: Speech # need these speech comps because it isnt targeted by MakeSentient. speechVerb: LargeMob - type: Emoting @@ -161,7 +161,7 @@ types: Slash: 7.5 Piercing: 7.5 - Structural: 25 # to destroy lockers in which bodies could be hidden + Structural: 6 # to destroy lockers in which bodies could be hidden - type: InteractionPopup successChance: 0.01 interactSuccessString: petting-success-elder-headslug diff --git a/Resources/Prototypes/Entities/Mobs/Player/guardian.yml b/Resources/Prototypes/Entities/Mobs/Player/guardian.yml index 8c7b225feb..a5cd77e321 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/guardian.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/guardian.yml @@ -97,7 +97,7 @@ damage: types: Blunt: 20 - Structural: 8 # Activate Star Platinum's signature move: Digging a hole + Structural: 9 # Activate Star Platinum's signature move: Digging a hole - type: MeleeSpeech - type: UserInterface interfaces: diff --git a/Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml b/Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml index fae0a8b7fd..8b4ebc6f55 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml @@ -53,7 +53,7 @@ damage: types: Blunt: 25 #thwack - Structural: 8 + Structural: 9 soundHit: collection: MetalThud - type: Puller diff --git a/Resources/Prototypes/Entities/Objects/Tools/pka_upgrade.yml b/Resources/Prototypes/Entities/Objects/Tools/pka_upgrade.yml index 78d634ccfa..ed8d847a5d 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/pka_upgrade.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/pka_upgrade.yml @@ -37,7 +37,7 @@ damage: types: Blunt: 10 - Structural: 10 + Structural: 6 - type: entity id: PKAUpgradeRange diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Bullets/shotgun.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Bullets/shotgun.yml index 7ec18fad39..40752e652d 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Bullets/shotgun.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Bullets/shotgun.yml @@ -40,7 +40,7 @@ damage: types: Piercing: 10 - Structural: 8 + Structural: 6 - type: entity parent: PelletShotgun diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Energy/kinetic.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Energy/kinetic.yml index a41b426e31..916eeafd71 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Energy/kinetic.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Energy/kinetic.yml @@ -19,7 +19,7 @@ damage: types: Blunt: 15 - Structural: 15 + Structural: 9 # Short lifespan - type: TimedDespawn lifetime: 0.22 # roughly 5.5 tiles diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/armblade.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/armblade.yml index eb5ed9b42d..6ebb67d107 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/armblade.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/armblade.yml @@ -22,7 +22,7 @@ Slash: 10 Piercing: 10 Caustic: 5 - Structural: 15 + Structural: 12 - type: Item size: Normal sprite: Objects/Weapons/Melee/armblade.rsi @@ -41,4 +41,4 @@ Slash: 5 Piercing: 5 Caustic: 2.5 - Structural: 10 + Structural: 6 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/fireaxe.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/fireaxe.yml index 586e79cac7..6f4feb1e68 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/fireaxe.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/fireaxe.yml @@ -21,7 +21,7 @@ # axes are kinda like sharp hammers, you know? Blunt: 5 Slash: 10 - Structural: 5 + Structural: 3 soundHit: collection: MetalThud - type: Wieldable diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/hammers.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/hammers.yml index ea64685579..aa62f8fa7a 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/hammers.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/hammers.yml @@ -63,7 +63,7 @@ damage: types: Blunt: 15 - Structural: 40 + Structural: 45 - type: Item size: Ginormous shape: From f65f33743d081c1255b8dca505c9d743136eeb35 Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Sat, 12 Sep 2026 22:30:10 +0000 Subject: [PATCH 127/197] Bugfix Exo, incorrect arrivals gates (#45997) Oopsiedaisy --- Resources/Maps/exo.yml | 69 +++++++++++++++++++----------------------- 1 file changed, 31 insertions(+), 38 deletions(-) diff --git a/Resources/Maps/exo.yml b/Resources/Maps/exo.yml index d76d709b66..6b7ba23741 100644 --- a/Resources/Maps/exo.yml +++ b/Resources/Maps/exo.yml @@ -4,7 +4,7 @@ meta: engineVersion: 289.0.0 forkId: "" forkVersion: "" - time: 09/11/2026 17:17:27 + time: 09/12/2026 12:40:31 entityCount: 20127 maps: - 1 @@ -471,18 +471,13 @@ entities: - volume: 2500 moles: {} immutable: True - - temperature: 293.15 - volume: 2500 - moles: {} - - temperature: 235 - volume: 2500 - moles: - Oxygen: 27.225372 - Nitrogen: 102.419266 - temperature: 293.15 volume: 2500 moles: Oxygen: 6666.982 + - temperature: 293.15 + volume: 2500 + moles: {} - temperature: 293.15 volume: 2500 moles: @@ -491,6 +486,11 @@ entities: volume: 2500 moles: Plasma: 6666.982 + - temperature: 235 + volume: 2500 + moles: + Oxygen: 27.225372 + Nitrogen: 102.419266 tiles: 0,0: 0: 4095 @@ -1037,10 +1037,10 @@ entities: 0: 55807 8,-16: 0: 271 - 4: 17408 + 2: 17408 8,-15: 1: 4096 - 4: 4 + 2: 4 8,-14: 0: 32752 8,-13: @@ -1722,10 +1722,10 @@ entities: 1: 143 11,-22: 1: 4383 - 2: 52224 + 3: 52224 11,-21: 1: 65297 - 2: 12 + 3: 12 11,-23: 1: 65504 12,-24: @@ -1734,10 +1734,10 @@ entities: 1: 30576 12,-22: 1: 35023 - 2: 4352 + 3: 4352 0: 17408 12,-21: - 2: 1 + 3: 1 1: 32712 0: 32772 9,-19: @@ -1748,8 +1748,8 @@ entities: 0: 65535 9,-16: 0: 15 - 5: 4352 - 2: 17408 + 4: 4352 + 3: 17408 10,-20: 0: 65280 10,-19: @@ -1760,8 +1760,8 @@ entities: 0: 65535 10,-16: 0: 15 - 2: 4352 - 6: 17408 + 3: 4352 + 5: 17408 11,-20: 0: 65248 11,-19: @@ -1773,7 +1773,7 @@ entities: 11,-16: 0: 15 1: 35840 - 2: 4352 + 3: 4352 12,-20: 0: 64440 12,-19: @@ -1807,7 +1807,7 @@ entities: 0: 61183 12,-16: 0: 7 - 2: 2184 + 3: 2184 1: 8960 13,-20: 0: 65024 @@ -1821,7 +1821,7 @@ entities: 13,-21: 1: 16179 13,-16: - 2: 819 + 3: 819 1: 8 14,-20: 0: 53504 @@ -2025,7 +2025,7 @@ entities: 0: 59392 11,-15: 1: 32904 - 2: 1 + 3: 1 12,-14: 0: 62926 11,-14: @@ -2149,7 +2149,7 @@ entities: 0: 60625 11,-10: 0: 34944 - 3: 13104 + 6: 13104 12,-9: 0: 56784 11,-9: @@ -2299,7 +2299,7 @@ entities: 10,-11: 0: 65535 10,-10: - 3: 65520 + 6: 65520 0: 4 10,-13: 0: 12276 @@ -2362,14 +2362,14 @@ entities: 11,-3: 1: 12288 9,-15: - 5: 1 - 2: 4 + 4: 1 + 3: 4 1: 32768 9,-14: 0: 36848 10,-15: - 2: 1 - 6: 4 + 3: 1 + 5: 4 10,-14: 0: 65520 -8,-24: @@ -6473,7 +6473,7 @@ entities: pos: 11.5,-30.5 - type: Door state: Opening - secondsUntilStateChange: -317763.56 + secondsUntilStateChange: -319107.47 - type: DeviceLinkSource lastSignals: DoorStatus: True @@ -6914,7 +6914,7 @@ entities: pos: 34.5,-36.5 - type: Door state: Opening - secondsUntilStateChange: -93261.266 + secondsUntilStateChange: -94605.19 - type: DeviceLinkSource lastSignals: DoorStatus: True @@ -44661,11 +44661,6 @@ entities: 2895: -19,-27 2896: -18,-27 2897: -18,-26 - - node: - id: MiniTileDarkEndW - color: '#FFFFFFFF' - decals: - 872: -21,-21 - node: id: MiniTileDarkLineE color: '#FFFFFFFF' @@ -57637,13 +57632,11 @@ entities: components: - type: Transform parent: 2 - rot: 3.141592653589793 rad pos: 6.5,2.5 - uid: 17427 components: - type: Transform parent: 2 - rot: 3.141592653589793 rad pos: -0.5,2.5 - proto: EnergyGateGenpopEnter entities: From 65ade7d35d01e9e0a94c3a72e968dfdf524cc0b8 Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> Date: Sat, 12 Sep 2026 22:31:03 +0000 Subject: [PATCH 128/197] Shield Adjustments based on feedback. (#45510) * shneeld * mild buff that doesn't really matter but feels a bit better :P * absolute woke nonsense * ultra buff --- .../Blocking/BlockingSystem.User.cs | 14 +- Content.Shared/Blocking/BlockingSystem.cs | 32 ++-- .../Entities/Objects/Shields/shields.yml | 143 +++++++++++------- .../Graphs/weapons/makeshift_shield.yml | 2 +- 4 files changed, 103 insertions(+), 88 deletions(-) diff --git a/Content.Shared/Blocking/BlockingSystem.User.cs b/Content.Shared/Blocking/BlockingSystem.User.cs index 0ff6d768b9..8babc507fe 100644 --- a/Content.Shared/Blocking/BlockingSystem.User.cs +++ b/Content.Shared/Blocking/BlockingSystem.User.cs @@ -11,25 +11,19 @@ public sealed partial class BlockingSystem [Dependency] private DamageableSystem _damageable = default!; [Dependency] private SharedAudioSystem _audio = default!; - private void InitializeUser() - { - SubscribeLocalEvent(OnUserDamageModified); - SubscribeLocalEvent(OnParentChanged); - SubscribeLocalEvent(OnInsertAttempt); - SubscribeLocalEvent(OnAnchorChanged); - SubscribeLocalEvent(OnEntityTerminating); - } - + [SubscribeLocalEvent] private void OnParentChanged(Entity entity, ref EntParentChangedMessage args) { UserStopBlocking(entity); } + [SubscribeLocalEvent] private void OnInsertAttempt(Entity entity, ref ContainerGettingInsertedAttemptEvent args) { UserStopBlocking(entity); } + [SubscribeLocalEvent] private void OnAnchorChanged(Entity entity, ref AnchorStateChangedEvent args) { if (args.Anchored) @@ -38,6 +32,7 @@ public sealed partial class BlockingSystem UserStopBlocking(entity); } + [SubscribeLocalEvent] private void OnUserDamageModified(Entity entity, ref DamageModifyEvent args) { if (entity.Comp.BlockingItem is not { } item || !_blockQuery.TryComp(item, out var blocking)) @@ -64,6 +59,7 @@ public sealed partial class BlockingSystem _audio.PlayPvs(blocking.BlockSound, entity); } + [SubscribeLocalEvent] private void OnEntityTerminating(Entity entity, ref EntityTerminatingEvent args) { if (!_blockQuery.TryComp(entity.Comp.BlockingItem, out var blockComponent)) diff --git a/Content.Shared/Blocking/BlockingSystem.cs b/Content.Shared/Blocking/BlockingSystem.cs index 0026b4799a..4b3b9946da 100644 --- a/Content.Shared/Blocking/BlockingSystem.cs +++ b/Content.Shared/Blocking/BlockingSystem.cs @@ -18,6 +18,7 @@ using Content.Shared.Toggleable; using Content.Shared.Verbs; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Systems; +using Robust.Shared.Timing; using Robust.Shared.Toolshed.Syntax; using Robust.Shared.Utility; @@ -25,6 +26,7 @@ namespace Content.Shared.Blocking; public sealed partial class BlockingSystem : EntitySystem { + [Dependency] private IGameTiming _timing = default!; [Dependency] private ActionContainerSystem _actionContainer = default!; [Dependency] private EntityLookupSystem _lookup = default!; [Dependency] private ExamineSystemShared _examine = default!; @@ -42,25 +44,7 @@ public sealed partial class BlockingSystem : EntitySystem [Dependency] private EntityQuery _handQuery; [Dependency] private EntityQuery _mobQuery; - public override void Initialize() - { - base.Initialize(); - InitializeUser(); - - SubscribeLocalEvent(OnItemToggled); - SubscribeLocalEvent(OnEquip); - SubscribeLocalEvent(OnUnequip); - SubscribeLocalEvent(OnDrop); - - SubscribeLocalEvent(OnGetActions); - SubscribeLocalEvent(OnToggleAction); - - SubscribeLocalEvent(OnShutdown); - - SubscribeLocalEvent>(OnVerbExamine); - SubscribeLocalEvent(OnMapInit); - } - + [SubscribeLocalEvent] private void OnMapInit(Entity entity, ref MapInitEvent args) { if (!CanBlock(entity.AsNullable())) @@ -70,6 +54,7 @@ public sealed partial class BlockingSystem : EntitySystem DirtyField(entity, entity.Comp, nameof(BlockingComponent.BlockingToggleActionEntity)); } + [SubscribeLocalEvent] private void OnItemToggled(Entity entity, ref ItemToggledEvent args) { if (!_handsSystem.IsHeld(entity.Owner, out var holder)) @@ -81,6 +66,7 @@ public sealed partial class BlockingSystem : EntitySystem StopBlocking(entity, holder.Value); } + [SubscribeLocalEvent] private void OnEquip(Entity entity, ref GotEquippedHandEvent args) { if (!CanBlock(entity.AsNullable())) @@ -89,21 +75,25 @@ public sealed partial class BlockingSystem : EntitySystem StartBlocking(entity, args.User); } + [SubscribeLocalEvent] private void OnUnequip(Entity entity, ref GotUnequippedHandEvent args) { StopBlocking(entity, args.User); } + [SubscribeLocalEvent] private void OnDrop(Entity entity, ref DroppedEvent args) { StopBlocking(entity, args.User); } + [SubscribeLocalEvent] private void OnGetActions(Entity entity, ref GetItemActionsEvent args) { args.AddAction(ref entity.Comp.BlockingToggleActionEntity, entity.Comp.BlockingToggleAction); } + [SubscribeLocalEvent] private void OnToggleAction(Entity entity, ref ToggleActionEvent args) { if (args.Handled || !CanBlock(entity.AsNullable())) @@ -134,6 +124,7 @@ public sealed partial class BlockingSystem : EntitySystem args.Handled = true; } + [SubscribeLocalEvent] private void OnShutdown(Entity entity, ref ComponentShutdown args) { //In theory the user should not be null when this fires off @@ -297,7 +288,7 @@ public sealed partial class BlockingSystem : EntitySystem DirtyField(entity, entity.Comp, nameof(BlockingComponent.User)); //To make sure that this bodytype doesn't get set as anything but the original - if (EnsureComp(user, out var userComp)) + if (_timing.ApplyingState || EnsureComp(user, out var userComp)) return; userComp.BlockingItem = entity; @@ -347,6 +338,7 @@ public sealed partial class BlockingSystem : EntitySystem return entity.Comp.IsRaised ? entity.Comp.ActiveBlockModifier ?? entity.Comp.PassiveBlockModifier : entity.Comp.PassiveBlockModifier; } + [SubscribeLocalEvent] private void OnVerbExamine(Entity entity, ref GetVerbsEvent args) { if (!args.CanInteract || !args.CanAccess) diff --git a/Resources/Prototypes/Entities/Objects/Shields/shields.yml b/Resources/Prototypes/Entities/Objects/Shields/shields.yml index 4b5672bcb5..715c6c57da 100644 --- a/Resources/Prototypes/Entities/Objects/Shields/shields.yml +++ b/Resources/Prototypes/Entities/Objects/Shields/shields.yml @@ -10,17 +10,14 @@ state: riot-icon - type: Item sprite: Objects/Weapons/Melee/shields.rsi - size: Ginormous - shape: - - 0,0,4,5 heldPrefix: riot - type: Blocking passiveBlockModifier: flatReductions: - Blunt: 10 - Slash: 10 - Piercing: 10 - Heat: 10 + Blunt: 6 + Slash: 6 + Piercing: 6 + Heat: 6 - type: Damageable - type: Injurable damageContainer: Shield @@ -54,11 +51,42 @@ max: 2 - type: entity - name: base repairable shield - parent: BaseShield - id: BaseRepairableShield - description: A repairable shield! abstract: true + parent: BaseShield + id: BaseGinormousShield + components: + - type: Item + size: Ginormous + shape: + - 0,0,3,5 + - type: HeldSpeedModifier + walkModifier: 0.9 + sprintModifier: 0.9 + +- type: entity + abstract: true + parent: BaseShield + id: BaseLargeShield + components: + - type: Item + size: Large + shape: + - 0,0,2,3 + +- type: entity + abstract: true + parent: BaseLargeShield + id: BaseRoundShield + components: + - type: Item + shape: + - 0,0,2,2 + +- type: entity + abstract: true + id: BaseRepairableShield + name: base repairable shield + description: A repairable shield! components: - type: Repairable # Negative values represent healing damage: @@ -75,7 +103,7 @@ - type: entity name: riot shield - parent: [ BaseRepairableShield, BaseShieldDestructible, BaseSecurityContraband ] + parent: [ BaseRepairableShield, BaseGinormousShield, BaseShieldDestructible, BaseSecurityContraband ] id: RiotShield description: A large tower shield. Good for controlling crowds. components: @@ -84,14 +112,14 @@ - type: Blocking passiveBlockModifier: flatReductions: - Blunt: 15 - Slash: 15 - Piercing: 5 - Heat: 5 + Blunt: 12 + Slash: 9 + Piercing: 3 + Heat: 3 - type: entity name: laser shield - parent: [ BaseRepairableShield, BaseShieldDestructible, BaseSecurityContraband ] + parent: [ BaseRepairableShield, BaseGinormousShield, BaseShieldDestructible, BaseSecurityContraband ] id: RiotLaserShield description: A shield built for withstanding lasers, but not much else. components: @@ -102,14 +130,14 @@ - type: Blocking passiveBlockModifier: flatReductions: - Blunt: 5 - Slash: 10 - Piercing: 5 - Heat: 20 + Blunt: 3 + Slash: 6 + Piercing: 3 + Heat: 15 - type: entity name: ballistic shield - parent: [ BaseRepairableShield, BaseShieldDestructible, BaseSecurityContraband ] + parent: [ BaseRepairableShield, BaseGinormousShield, BaseShieldDestructible, BaseSecurityContraband ] id: RiotBulletShield description: A shield built for protecting against ballistics, but not much else. components: @@ -120,16 +148,16 @@ - type: Blocking passiveBlockModifier: flatReductions: - Blunt: 10 - Slash: 5 - Piercing: 20 - Heat: 5 + Blunt: 6 + Slash: 3 + Piercing: 15 + Heat: 3 #Craftable shields - type: entity name: wooden buckler - parent: BaseShield + parent: BaseRoundShield id: WoodenBuckler description: A small round wooden makeshift shield. components: @@ -137,13 +165,15 @@ state: buckler-icon - type: Item heldPrefix: buckler + shape: + - 0,0,2,2 - type: Blocking passiveBlockModifier: flatReductions: - Blunt: 5 - Slash: 5 - Piercing: 5 - Heat: 5 + Blunt: 6 + Slash: 6 + Piercing: 6 + Heat: 3 - type: Construction graph: WoodenBuckler node: woodenBuckler @@ -151,7 +181,7 @@ thresholds: - trigger: !type:DamageTrigger - damage: 75 #Weaker shield + damage: 50 #Weaker shield behaviors: - !type:DoActsBehavior acts: [ "Destruction" ] @@ -168,7 +198,7 @@ - type: entity name: cardboard shield - parent: BaseShield + parent: BaseLargeShield id: CardShield description: A shield made of cardboard. Won't protect you from much. components: @@ -206,7 +236,7 @@ - type: entity name: makeshift shield - parent: BaseRepairableShield + parent: [ BaseRepairableShield, BaseGinormousShield ] id: MakeshiftShield description: A rundown looking shield, not good for much. components: @@ -236,7 +266,7 @@ - type: entity name: web shield - parent: BaseShield + parent: BaseLargeShield id: WebShield description: A stringy shield. It's weak, and doesn't seem to do well against heat. components: @@ -249,7 +279,8 @@ - type: Blocking passiveBlockModifier: flatReductions: - Blunt: 5 + Blunt: 9 + Heat: 6 Piercing: 1 # Scar told me to. - type: Construction graph: WebObjects @@ -275,7 +306,7 @@ - type: entity name: clockwork shield - parent: [ BaseRepairableShield, BaseShieldDestructible ] + parent: [ BaseRepairableShield, BaseRoundShield, BaseShieldDestructible ] id: ClockworkShield description: Ratvar oyrffrf lbh jvgu uvf cebgrpgvba. components: @@ -287,7 +318,7 @@ - type: entity name: mirror shield - parent: [ BaseShield, BaseMagicalContraband ] + parent: [ BaseLargeShield, BaseMagicalContraband ] id: MirrorShield description: Eerily glows red... you hear the geometer whispering components: @@ -304,10 +335,10 @@ coefficients: Heat: 0.5 flatReductions: - Blunt: 5 - Slash: 10 - Piercing: 5 - Heat: 25 + Blunt: 3 + Slash: 6 + Piercing: 3 + Heat: 24 blockSound: !type:SoundPathSpecifier path: /Audio/Effects/glass_step.ogg - type: Destructible @@ -329,7 +360,7 @@ - type: entity name: energy shield - parent: [BaseItem, BaseSyndicateContraband] + parent: [BaseShield, BaseSyndicateContraband] id: EnergyShield description: Exotic energy shield, when folded, can even fit in your pocket. components: @@ -344,8 +375,6 @@ path: /Audio/Weapons/ebladehum.ogg - type: ItemToggleSize activatedSize: Huge - activatedShape: - - 0,0,3,3 - type: ComponentToggler components: - type: DisarmMalus @@ -390,14 +419,11 @@ coefficients: Heat: 0.5 flatReductions: - Blunt: 5 - Piercing: 10 - Slash: 5 - Heat: 25 + Blunt: 3 + Piercing: 9 + Slash: 3 + Heat: 24 - type: Appearance - - type: Damageable - - type: Injurable - damageContainer: Shield - type: ExaminableDamage messages: EnergyShieldMessages - type: Destructible @@ -435,7 +461,7 @@ - type: entity name: telescopic shield - parent: [ BaseRepairableShield, BaseShieldDestructible ] + parent: [ BaseRepairableShield, BaseShield, BaseShieldDestructible ] id: TelescopicShield description: An advanced riot shield made of lightweight materials that collapses for easy storage. components: @@ -456,9 +482,12 @@ - type: DisarmMalus malus: 0.6 - type: ItemToggleSize - activatedSize: Huge + activatedSize: Ginormous activatedShape: - - 0,0,3,3 + - 0,0,3,5 + - type: HeldSpeedModifier + walkModifier: 0.9 + sprintModifier: 0.9 - type: Sprite sprite: Objects/Weapons/Melee/teleriot_shield.rsi layers: @@ -467,9 +496,7 @@ visible: false map: [ "shield" ] - type: Item - size: Small - shape: - - 0,0,1,1 + size: Normal sprite: Objects/Weapons/Melee/teleriot_shield.rsi heldPrefix: teleriot - type: UseDelay diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/weapons/makeshift_shield.yml b/Resources/Prototypes/Recipes/Construction/Graphs/weapons/makeshift_shield.yml index 70e05e9dd5..a2c1af76b3 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/weapons/makeshift_shield.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/weapons/makeshift_shield.yml @@ -10,7 +10,7 @@ amount: 5 doAfter: 2 - material: Steel - amount: 5 + amount: 10 doAfter: 2 - node: makeshiftShield From eadcd567fd8ea801cb346aaed4ff44ab42b6928c Mon Sep 17 00:00:00 2001 From: riccardi48 <39341154+riccardi48@users.noreply.github.com> Date: Sat, 12 Sep 2026 22:31:04 +0000 Subject: [PATCH 129/197] Digiboard can be linked to the telepad. (#45987) * init * indentation --- Resources/Prototypes/Entities/Objects/Misc/folders.yml | 4 ++++ .../Entities/Structures/Machines/Computers/computers.yml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Objects/Misc/folders.yml b/Resources/Prototypes/Entities/Objects/Misc/folders.yml index af896663ca..36900968df 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/folders.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/folders.yml @@ -530,6 +530,10 @@ - Write - type: CargoOrderConsole removeLimitAccess: [ "Quartermaster" ] + - type: DeviceLinkSource + range: 200 + ports: + - OrderSender - type: ActivatableUI verbText: qm-clipboard-computer-verb-text key: enum.CargoConsoleUiKey.Orders diff --git a/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml b/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml index 41518c9088..b88493f514 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml @@ -1003,7 +1003,7 @@ - type: DeviceLinkSource range: 200 ports: - - OrderSender + - OrderSender - type: GuideHelp guides: - Cargo From 99bd869eb3b9aaafa2aa4d34cbfe5db363434af5 Mon Sep 17 00:00:00 2001 From: qwerltaz <69696513+qwerltaz@users.noreply.github.com> Date: Sun, 13 Sep 2026 15:46:41 +0000 Subject: [PATCH 130/197] Tram evac shuttle (#46005) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * tram evac shuttle * j * 😊 * connect missing air vents * grid? 🥺 * Encountered invalid EntityUid reference while reading entity 2338, component: DeviceNetwork * invalida --- Resources/Maps/Shuttles/emergency_tram.yml | 7767 ++++++++++++++++++++ Resources/Prototypes/Maps/tram2.yml | 2 +- 2 files changed, 7768 insertions(+), 1 deletion(-) create mode 100644 Resources/Maps/Shuttles/emergency_tram.yml diff --git a/Resources/Maps/Shuttles/emergency_tram.yml b/Resources/Maps/Shuttles/emergency_tram.yml new file mode 100644 index 0000000000..6170b59bcf --- /dev/null +++ b/Resources/Maps/Shuttles/emergency_tram.yml @@ -0,0 +1,7767 @@ +meta: + format: 7 + category: Grid + engineVersion: 289.0.0 + forkId: "" + forkVersion: "" + time: 09/13/2026 13:03:42 + entityCount: 1195 +maps: [] +grids: +- 2 +orphans: +- 2 +nullspace: +- 380 +- 381 +- 382 +- 383 +- 384 +tilemap: + 1: Space + 9: FloorBar + 5: FloorConcreteMono + 10: FloorDark + 14: FloorDarkMono + 17: FloorDarkPlastic + 4: FloorShuttleBlack + 3: FloorSteel + 7: FloorSteelMono + 6: FloorTechMaintDark + 8: FloorWhite + 13: FloorWhiteMini + 12: FloorWhiteMono + 16: FloorWhitePavementVertical + 15: FloorWhitePlastic + 11: FloorWood + 2: Lattice + 0: Plating +entities: +- proto: "" + entities: + - uid: 2 + components: + - type: MetaData + name: grid + - type: Transform + parent: invalid + pos: -0.59375,0.0785262 + - type: MapGrid + chunks: + 0,0: + ind: 0,0 + tiles: CgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAoAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAGAAAAAAAACgAAAAAAAAYAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAABgAAAAAAAAoAAAAAAAAGAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAACwAAAAAAAAsAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAACgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAYAAAAAAAAKAAAAAAAABgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAsAAAAAAAALAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAoAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAGAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAALAAAAAAAACwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAsAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAACgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAAAAAAAAAAABEAAAAAAAARAAAAAAAAEQAAAAAAABEAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAAAAAAAAAARAAAAAAAAEQAAAAAAABEAAAAAAAARAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAABEAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== + version: 7 + 0,-1: + ind: 0,-1 + tiles: AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAABAAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAsAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAMAAAAAAAAGAAAAAAAABgAAAAAAAAMAAAAAAAAGAAAAAAAABgAAAAAAAAMAAAAAAAALAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAABgAAAAAAAAYAAAAAAAADAAAAAAAABgAAAAAAAAYAAAAAAAADAAAAAAAACwAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAGAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAwAAAAAAAAYAAAAAAAAGAAAAAAAAAwAAAAAAAAYAAAAAAAAGAAAAAAAAAwAAAAAAAAsAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABgAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAMAAAAAAAAGAAAAAAAABgAAAAAAAAMAAAAAAAAGAAAAAAAABgAAAAAAAAMAAAAAAAALAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAYAAAAAAAADAAAAAAAABgAAAAAAAAYAAAAAAAADAAAAAAAABgAAAAAAAAYAAAAAAAADAAAAAAAACwAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAAGAAAAAAAAAwAAAAAAAAYAAAAAAAAGAAAAAAAAAwAAAAAAAAYAAAAAAAAGAAAAAAAAAwAAAAAAAAsAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAYAAAAAAAAGAAAAAAAAAAAAAAAAAAMAAAAAAAAGAAAAAAAABgAAAAAAAAMAAAAAAAAGAAAAAAAABgAAAAAAAAMAAAAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAADAAAAAAAABgAAAAAAAAYAAAAAAAADAAAAAAAABgAAAAAAAAYAAAAAAAADAAAAAAAACwAAAAAAAA== + version: 7 + 1,0: + ind: 1,0 + tiles: CQAAAAAAAAkAAAAAAAAJAAAAAAAACgAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== + version: 7 + 1,-1: + ind: 1,-1 + tiles: EAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACgAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAYAAAAAAAAJAAAAAAAACQAAAAAAAAoAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAGAAAAAAAACQAAAAAAAAkAAAAAAAAKAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABgAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAYAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAGAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABgAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAYAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAGAAAAAAAACQAAAAAAAAkAAAAAAAAKAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABgAAAAAAAAkAAAAAAAAJAAAAAAAACgAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== + version: 7 + 0,-2: + ind: 0,-2 + tiles: AQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAKAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAMAAAAAAAADAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAA== + version: 7 + 1,-2: + ind: 1,-2 + tiles: AQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== + version: 7 + -1,0: + ind: -1,0 + tiles: AQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== + version: 7 + -1,-1: + ind: -1,-1 + tiles: AQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAADAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAADAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAA== + version: 7 + - type: Broadphase + - type: Physics + fixedRotation: False + bodyType: Dynamic + bodyStatus: InAir + - type: Fixtures + fixtures: {} + - type: ChunkContainer + chunkEntities: + - 380 + - 381 + - 382 + - 383 + - 384 + - type: OccluderTree + - type: TileHistory + chunkHistory: {} + - type: SpreaderGrid + - type: Shuttle + dampingModifier: 0.25 + - type: ImplicitRoof + - type: GridPathfinding + - type: Gravity + gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + - type: GridAtmosphere + version: 2 + data: + uniqueMixes: + - temperature: 293.15 + volume: 2500 + moles: + Oxygen: 21.824879 + Nitrogen: 82.10312 + - volume: 2500 + moles: {} + immutable: True + - temperature: 293.15 + volume: 2500 + moles: {} + tiles: + 0,0: + 0: 34831 + 1: 8960 + -1,0: + 0: 8 + 0,1: + 1: 8738 + 0: 32904 + 0,2: + 1: 3106 + 0: 8 + 0,-1: + 0: 20462 + 1,0: + 0: 63359 + 1,1: + 0: 62975 + 1,2: + 0: 15 + 1: 3840 + 1,-1: + 0: 26214 + 2,0: + 0: 57599 + 2,-1: + 0: 65535 + 2,1: + 0: 61166 + 2,2: + 0: 238 + 1: 57344 + 3,0: + 0: 47551 + 3,1: + 0: 15355 + 3,2: + 0: 11 + 1: 3584 + 3,-1: + 0: 65535 + 4,0: + 0: 13071 + 1: 34816 + 4,1: + 0: 4915 + 1: 34952 + 4,2: + 0: 7 + 1: 1800 + 0,-4: + 1: 8721 + 0: 34830 + 0,-5: + 1: 4642 + 0: 34952 + 0,-3: + 0: 30472 + 1: 2 + -1,-3: + 0: 2048 + 0,-2: + 0: 61159 + -1,-2: + 0: 8 + 1: 34816 + -1,-1: + 1: 8 + 0: 2048 + 1,-4: + 0: 65294 + 1,-3: + 0: 65295 + 1,-2: + 0: 26126 + 1,-5: + 0: 61439 + 2,-4: + 0: 65229 + 2,-3: + 0: 65486 + 2,-2: + 0: 65535 + 2,-5: + 0: 64976 + 3,-4: + 0: 30704 + 3,-3: + 0: 65295 + 3,-2: + 0: 65535 + 3,-5: + 0: 32492 + 4,-4: + 0: 12343 + 1: 34816 + 4,-3: + 0: 65283 + 1: 8 + 4,-2: + 0: 30591 + 4,-1: + 0: 65399 + 5,-4: + 1: 17 + 5,-2: + 1: 4352 + 5,-1: + 1: 1 + 5,-5: + 1: 4096 + 0,-6: + 1: 8904 + 0: 32768 + 0,-7: + 1: 32768 + 1,-6: + 0: 61440 + 2: 2730 + 1,-7: + 1: 3776 + 2,-7: + 1: 2880 + 2,-6: + 0: 61038 + 3,-7: + 1: 3936 + 3,-6: + 0: 55759 + 4,-6: + 0: 12289 + 1: 34914 + 4,-5: + 0: 819 + 1: 2184 + 4,-7: + 1: 8192 + chunkSize: 4 + - type: GasTileOverlay + - type: ExplosionAirtightGrid + - type: RadiationGridResistance +- proto: AirAlarm + entities: + - uid: 11 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 8.5,-10.5 + - type: DeviceList + devices: + - 2257 + - 2249 + - 2286 + - 2261 + - uid: 37 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 9.5,-14.5 + - type: DeviceList + devices: + - 1694 + - 1949 + - 2156 + - 1969 + - uid: 2175 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 14.5,3.5 + - type: DeviceList + devices: + - 2262 + - uid: 2482 + components: + - type: Transform + parent: 2 + pos: 7.5,-14.5 + - type: DeviceList + devices: + - 335 + - uid: 2484 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 8.5,7.5 + - type: DeviceList + devices: + - 2266 + - uid: 2492 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 0.5,-6.5 + - type: DeviceList + devices: + - 2025 + - 362 + - uid: 2493 + components: + - type: Transform + parent: 2 + pos: 7.5,-10.5 + - type: DeviceList + devices: + - 1690 + - uid: 2494 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 2.5,3.5 + - type: DeviceList + devices: + - 2259 +- proto: Airlock + entities: + - uid: 36 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 15.5,-11.5 + - uid: 81 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 15.5,-14.5 + - uid: 161 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 12.5,-16.5 +- proto: AirlockCommand + entities: + - uid: 17 + components: + - type: Transform + parent: 2 + pos: 12.5,2.5 + - uid: 31 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 14.5,5.5 +- proto: AirlockEngineering + entities: + - uid: 1835 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 9.5,-16.5 +- proto: AirlockExternal + entities: + - uid: 74 + components: + - type: Transform + parent: 2 + pos: 16.5,7.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 239: + - - DoorStatus + - DoorBolt + - uid: 239 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 18.5,8.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 74: + - - DoorStatus + - DoorBolt + - uid: 288 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 16.5,-23.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 1914: + - - DoorStatus + - DoorBolt + 289: + - - DoorStatus + - DoorBolt + - uid: 289 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 13.5,-23.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 288: + - - DoorStatus + - DoorBolt + - uid: 1908 + components: + - type: Transform + parent: 2 + pos: 3.5,-16.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 1939: + - - DoorStatus + - DoorBolt + - uid: 1914 + components: + - type: Transform + parent: 2 + pos: 15.5,-21.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 288: + - - DoorStatus + - DoorBolt + - uid: 1939 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 1.5,-15.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 1908: + - - DoorStatus + - DoorBolt +- proto: AirlockExternalGlassShuttleEmergencyLocked + entities: + - uid: 62 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -0.5,-7.5 + - uid: 63 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -0.5,-9.5 + - uid: 66 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -0.5,-1.5 + - uid: 67 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -0.5,0.5 +- proto: AirlockMedical + entities: + - uid: 2405 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 8.5,-12.5 +- proto: AirlockSecurityLocked + entities: + - uid: 377 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 7.5,0.5 + - uid: 385 + components: + - type: Transform + parent: 2 + pos: 2.5,-0.5 +- proto: AirlockServiceLocked + entities: + - uid: 2367 + components: + - type: Transform + parent: 2 + pos: 15.5,1.5 +- proto: APCBasic + entities: + - uid: 1770 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 15.5,-16.5 + - uid: 1942 + components: + - type: Transform + parent: 2 + pos: 4.5,-10.5 + - uid: 1946 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 14.5,4.5 + - uid: 1990 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 7.5,-5.5 + - uid: 2006 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 7.5,2.5 + - uid: 2007 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 4.5,-2.5 + - uid: 2235 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 8.5,-20.5 + - uid: 2247 + components: + - type: Transform + parent: 2 + pos: 13.5,-10.5 + - uid: 2323 + components: + - type: Transform + parent: 2 + pos: 8.5,-14.5 +- proto: Ashtray + entities: + - uid: 1814 + components: + - type: Transform + parent: 2 + pos: 10.285147,5.648949 +- proto: AtmosDeviceFanDirectional + entities: + - uid: 2183 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -0.5,-1.5 + - uid: 2214 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -0.5,-7.5 + - uid: 2322 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -0.5,-9.5 + - uid: 2350 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -0.5,0.5 +- proto: AtmosFixBlockerMarker + entities: + - uid: 73 + components: + - type: Transform + parent: 2 + pos: 5.5,-23.5 + - uid: 108 + components: + - type: Transform + parent: 2 + pos: 5.5,-22.5 + - uid: 109 + components: + - type: Transform + parent: 2 + pos: 5.5,-21.5 + - uid: 140 + components: + - type: Transform + parent: 2 + pos: 7.5,-22.5 + - uid: 147 + components: + - type: Transform + parent: 2 + pos: 7.5,-23.5 + - uid: 151 + components: + - type: Transform + parent: 2 + pos: 7.5,-21.5 +- proto: BarSignWiggleRoom + entities: + - uid: 286 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 19.5,-4.5 +- proto: Beaker + entities: + - uid: 2548 + components: + - type: Transform + parent: 2 + pos: 19.359383,-0.039783478 + - uid: 2549 + components: + - type: Transform + parent: 2 + pos: 19.598967,0.095727265 +- proto: Bed + entities: + - uid: 162 + components: + - type: Transform + parent: 2 + pos: 17.5,-11.5 +- proto: BedsheetMedical + entities: + - uid: 12 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 4.5,-13.5 + - uid: 291 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 5.5,-13.5 + - uid: 299 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 6.5,-13.5 + - uid: 326 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 7.5,-13.5 +- proto: BedsheetSpawner + entities: + - uid: 2420 + components: + - type: Transform + parent: 2 + pos: 17.5,-11.5 +- proto: BlastDoor + entities: + - uid: 60 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 4.5,-5.5 + - uid: 65 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 4.5,-4.5 +- proto: BoardGameSpawner100 + entities: + - uid: 2193 + components: + - type: Transform + parent: 2 + pos: 5.5,-9.5 +- proto: BookshelfFilled + entities: + - uid: 1683 + components: + - type: Transform + parent: 2 + pos: 5.5,-7.5 +- proto: BoozeDispenser + entities: + - uid: 315 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 19.5,-8.5 +- proto: BoxBodyBag + entities: + - uid: 2346 + components: + - type: Transform + parent: 2 + pos: 5.412546,-11.3211975 +- proto: BoxFolderBase + entities: + - uid: 2311 + components: + - type: Transform + parent: 2 + pos: 1.6707004,-4.3352723 +- proto: BoxFolderRedThreePapers + entities: + - uid: 1778 + components: + - type: Transform + parent: 2 + pos: 6.607375,-1.5397091 +- proto: CableApcExtension + entities: + - uid: 19 + components: + - type: Transform + parent: 2 + pos: 4.5,3.5 + - uid: 38 + components: + - type: Transform + parent: 2 + pos: 4.5,0.5 + - uid: 46 + components: + - type: Transform + parent: 2 + pos: 4.5,-10.5 + - uid: 49 + components: + - type: Transform + parent: 2 + pos: 4.5,-11.5 + - uid: 55 + components: + - type: Transform + parent: 2 + pos: 4.5,-12.5 + - uid: 68 + components: + - type: Transform + parent: 2 + pos: 5.5,-12.5 + - uid: 83 + components: + - type: Transform + parent: 2 + pos: 6.5,-12.5 + - uid: 85 + components: + - type: Transform + parent: 2 + pos: 7.5,-12.5 + - uid: 88 + components: + - type: Transform + parent: 2 + pos: 15.5,-21.5 + - uid: 105 + components: + - type: Transform + parent: 2 + pos: 13.5,-23.5 + - uid: 172 + components: + - type: Transform + parent: 2 + pos: 17.5,-15.5 + - uid: 284 + components: + - type: Transform + parent: 2 + pos: 17.5,-18.5 + - uid: 318 + components: + - type: Transform + parent: 2 + pos: 18.5,-15.5 + - uid: 339 + components: + - type: Transform + parent: 2 + pos: 3.5,0.5 + - uid: 340 + components: + - type: Transform + parent: 2 + pos: 2.5,0.5 + - uid: 358 + components: + - type: Transform + parent: 2 + pos: 1.5,0.5 + - uid: 359 + components: + - type: Transform + parent: 2 + pos: 0.5,0.5 + - uid: 1680 + components: + - type: Transform + parent: 2 + pos: 17.5,-11.5 + - uid: 1693 + components: + - type: Transform + parent: 2 + pos: 17.5,-14.5 + - uid: 1697 + components: + - type: Transform + parent: 2 + pos: 3.5,-12.5 + - uid: 1822 + components: + - type: Transform + parent: 2 + pos: 2.5,7.5 + - uid: 1825 + components: + - type: Transform + parent: 2 + pos: 2.5,-3.5 + - uid: 1943 + components: + - type: Transform + parent: 2 + pos: 4.5,-5.5 + - uid: 1945 + components: + - type: Transform + parent: 2 + pos: 3.5,-5.5 + - uid: 1974 + components: + - type: Transform + parent: 2 + pos: 2.5,8.5 + - uid: 1975 + components: + - type: Transform + parent: 2 + pos: 7.5,6.5 + - uid: 1976 + components: + - type: Transform + parent: 2 + pos: 5.5,6.5 + - uid: 1977 + components: + - type: Transform + parent: 2 + pos: 6.5,8.5 + - uid: 1978 + components: + - type: Transform + parent: 2 + pos: 5.5,-3.5 + - uid: 1987 + components: + - type: Transform + parent: 2 + pos: 15.5,-16.5 + - uid: 2011 + components: + - type: Transform + parent: 2 + pos: 6.5,7.5 + - uid: 2012 + components: + - type: Transform + parent: 2 + pos: 6.5,6.5 + - uid: 2016 + components: + - type: Transform + parent: 2 + pos: 8.5,-17.5 + - uid: 2017 + components: + - type: Transform + parent: 2 + pos: 7.5,-17.5 + - uid: 2018 + components: + - type: Transform + parent: 2 + pos: 6.5,-17.5 + - uid: 2019 + components: + - type: Transform + parent: 2 + pos: 5.5,-17.5 + - uid: 2020 + components: + - type: Transform + parent: 2 + pos: 4.5,-17.5 + - uid: 2021 + components: + - type: Transform + parent: 2 + pos: 3.5,-17.5 + - uid: 2022 + components: + - type: Transform + parent: 2 + pos: 6.5,-18.5 + - uid: 2023 + components: + - type: Transform + parent: 2 + pos: 6.5,-19.5 + - uid: 2024 + components: + - type: Transform + parent: 2 + pos: 6.5,-20.5 + - uid: 2026 + components: + - type: Transform + parent: 2 + pos: 12.5,-11.5 + - uid: 2027 + components: + - type: Transform + parent: 2 + pos: 12.5,-12.5 + - uid: 2028 + components: + - type: Transform + parent: 2 + pos: 12.5,-13.5 + - uid: 2029 + components: + - type: Transform + parent: 2 + pos: 13.5,-11.5 + - uid: 2030 + components: + - type: Transform + parent: 2 + pos: 14.5,-11.5 + - uid: 2031 + components: + - type: Transform + parent: 2 + pos: 15.5,-11.5 + - uid: 2032 + components: + - type: Transform + parent: 2 + pos: 16.5,-11.5 + - uid: 2033 + components: + - type: Transform + parent: 2 + pos: 16.5,-14.5 + - uid: 2034 + components: + - type: Transform + parent: 2 + pos: 15.5,-14.5 + - uid: 2035 + components: + - type: Transform + parent: 2 + pos: 14.5,-14.5 + - uid: 2036 + components: + - type: Transform + parent: 2 + pos: 13.5,-14.5 + - uid: 2037 + components: + - type: Transform + parent: 2 + pos: 12.5,-14.5 + - uid: 2038 + components: + - type: Transform + parent: 2 + pos: 11.5,-12.5 + - uid: 2039 + components: + - type: Transform + parent: 2 + pos: 10.5,-12.5 + - uid: 2046 + components: + - type: Transform + parent: 2 + pos: 10.5,-13.5 + - uid: 2047 + components: + - type: Transform + parent: 2 + pos: 10.5,-14.5 + - uid: 2048 + components: + - type: Transform + parent: 2 + pos: 10.5,-15.5 + - uid: 2049 + components: + - type: Transform + parent: 2 + pos: 10.5,-16.5 + - uid: 2050 + components: + - type: Transform + parent: 2 + pos: 11.5,-16.5 + - uid: 2051 + components: + - type: Transform + parent: 2 + pos: 11.5,-17.5 + - uid: 2052 + components: + - type: Transform + parent: 2 + pos: 11.5,-18.5 + - uid: 2053 + components: + - type: Transform + parent: 2 + pos: 7.5,-5.5 + - uid: 2054 + components: + - type: Transform + parent: 2 + pos: 8.5,-5.5 + - uid: 2055 + components: + - type: Transform + parent: 2 + pos: 8.5,-6.5 + - uid: 2056 + components: + - type: Transform + parent: 2 + pos: 8.5,-7.5 + - uid: 2057 + components: + - type: Transform + parent: 2 + pos: 8.5,-8.5 + - uid: 2058 + components: + - type: Transform + parent: 2 + pos: 9.5,-8.5 + - uid: 2059 + components: + - type: Transform + parent: 2 + pos: 11.5,-8.5 + - uid: 2060 + components: + - type: Transform + parent: 2 + pos: 12.5,-8.5 + - uid: 2061 + components: + - type: Transform + parent: 2 + pos: 13.5,-8.5 + - uid: 2062 + components: + - type: Transform + parent: 2 + pos: 14.5,-8.5 + - uid: 2063 + components: + - type: Transform + parent: 2 + pos: 10.5,-8.5 + - uid: 2064 + components: + - type: Transform + parent: 2 + pos: 14.5,-9.5 + - uid: 2065 + components: + - type: Transform + parent: 2 + pos: 15.5,-9.5 + - uid: 2066 + components: + - type: Transform + parent: 2 + pos: 16.5,-9.5 + - uid: 2067 + components: + - type: Transform + parent: 2 + pos: 17.5,-9.5 + - uid: 2068 + components: + - type: Transform + parent: 2 + pos: 18.5,-9.5 + - uid: 2069 + components: + - type: Transform + parent: 2 + pos: 18.5,-8.5 + - uid: 2070 + components: + - type: Transform + parent: 2 + pos: 18.5,-7.5 + - uid: 2071 + components: + - type: Transform + parent: 2 + pos: 18.5,-6.5 + - uid: 2072 + components: + - type: Transform + parent: 2 + pos: 18.5,-5.5 + - uid: 2073 + components: + - type: Transform + parent: 2 + pos: 18.5,-4.5 + - uid: 2074 + components: + - type: Transform + parent: 2 + pos: 18.5,-3.5 + - uid: 2075 + components: + - type: Transform + parent: 2 + pos: 18.5,-2.5 + - uid: 2076 + components: + - type: Transform + parent: 2 + pos: 18.5,-1.5 + - uid: 2077 + components: + - type: Transform + parent: 2 + pos: 18.5,-0.5 + - uid: 2078 + components: + - type: Transform + parent: 2 + pos: 18.5,0.5 + - uid: 2079 + components: + - type: Transform + parent: 2 + pos: 8.5,-4.5 + - uid: 2080 + components: + - type: Transform + parent: 2 + pos: 8.5,-3.5 + - uid: 2081 + components: + - type: Transform + parent: 2 + pos: 8.5,-2.5 + - uid: 2082 + components: + - type: Transform + parent: 2 + pos: 8.5,-1.5 + - uid: 2083 + components: + - type: Transform + parent: 2 + pos: 8.5,-0.5 + - uid: 2084 + components: + - type: Transform + parent: 2 + pos: 8.5,0.5 + - uid: 2085 + components: + - type: Transform + parent: 2 + pos: 9.5,0.5 + - uid: 2086 + components: + - type: Transform + parent: 2 + pos: 10.5,0.5 + - uid: 2087 + components: + - type: Transform + parent: 2 + pos: 11.5,0.5 + - uid: 2088 + components: + - type: Transform + parent: 2 + pos: 12.5,0.5 + - uid: 2089 + components: + - type: Transform + parent: 2 + pos: 13.5,0.5 + - uid: 2090 + components: + - type: Transform + parent: 2 + pos: 14.5,0.5 + - uid: 2091 + components: + - type: Transform + parent: 2 + pos: 14.5,-0.5 + - uid: 2092 + components: + - type: Transform + parent: 2 + pos: 14.5,-1.5 + - uid: 2093 + components: + - type: Transform + parent: 2 + pos: 14.5,-2.5 + - uid: 2094 + components: + - type: Transform + parent: 2 + pos: 14.5,-3.5 + - uid: 2095 + components: + - type: Transform + parent: 2 + pos: 14.5,-4.5 + - uid: 2096 + components: + - type: Transform + parent: 2 + pos: 14.5,-5.5 + - uid: 2097 + components: + - type: Transform + parent: 2 + pos: 14.5,-6.5 + - uid: 2098 + components: + - type: Transform + parent: 2 + pos: 14.5,-7.5 + - uid: 2101 + components: + - type: Transform + parent: 2 + pos: 7.5,2.5 + - uid: 2102 + components: + - type: Transform + parent: 2 + pos: 6.5,2.5 + - uid: 2103 + components: + - type: Transform + parent: 2 + pos: 5.5,2.5 + - uid: 2104 + components: + - type: Transform + parent: 2 + pos: 5.5,1.5 + - uid: 2105 + components: + - type: Transform + parent: 2 + pos: 5.5,0.5 + - uid: 2106 + components: + - type: Transform + parent: 2 + pos: 4.5,-2.5 + - uid: 2109 + components: + - type: Transform + parent: 2 + pos: 5.5,-4.5 + - uid: 2110 + components: + - type: Transform + parent: 2 + pos: 5.5,-5.5 + - uid: 2111 + components: + - type: Transform + parent: 2 + pos: 3.5,-2.5 + - uid: 2112 + components: + - type: Transform + parent: 2 + pos: 2.5,-2.5 + - uid: 2113 + components: + - type: Transform + parent: 2 + pos: 1.5,-2.5 + - uid: 2114 + components: + - type: Transform + parent: 2 + pos: 1.5,-1.5 + - uid: 2120 + components: + - type: Transform + parent: 2 + pos: 1.5,-6.5 + - uid: 2121 + components: + - type: Transform + parent: 2 + pos: 1.5,-7.5 + - uid: 2122 + components: + - type: Transform + parent: 2 + pos: 1.5,-8.5 + - uid: 2123 + components: + - type: Transform + parent: 2 + pos: 1.5,-9.5 + - uid: 2124 + components: + - type: Transform + parent: 2 + pos: 5.5,3.5 + - uid: 2129 + components: + - type: Transform + parent: 2 + pos: 14.5,4.5 + - uid: 2130 + components: + - type: Transform + parent: 2 + pos: 13.5,4.5 + - uid: 2131 + components: + - type: Transform + parent: 2 + pos: 12.5,4.5 + - uid: 2132 + components: + - type: Transform + parent: 2 + pos: 11.5,4.5 + - uid: 2133 + components: + - type: Transform + parent: 2 + pos: 10.5,4.5 + - uid: 2134 + components: + - type: Transform + parent: 2 + pos: 9.5,4.5 + - uid: 2135 + components: + - type: Transform + parent: 2 + pos: 11.5,5.5 + - uid: 2136 + components: + - type: Transform + parent: 2 + pos: 11.5,6.5 + - uid: 2137 + components: + - type: Transform + parent: 2 + pos: 11.5,7.5 + - uid: 2138 + components: + - type: Transform + parent: 2 + pos: 11.5,8.5 + - uid: 2139 + components: + - type: Transform + parent: 2 + pos: 10.5,7.5 + - uid: 2140 + components: + - type: Transform + parent: 2 + pos: 9.5,7.5 + - uid: 2142 + components: + - type: Transform + parent: 2 + pos: 15.5,4.5 + - uid: 2144 + components: + - type: Transform + parent: 2 + pos: 16.5,5.5 + - uid: 2145 + components: + - type: Transform + parent: 2 + pos: 16.5,6.5 + - uid: 2146 + components: + - type: Transform + parent: 2 + pos: 16.5,7.5 + - uid: 2147 + components: + - type: Transform + parent: 2 + pos: 16.5,8.5 + - uid: 2148 + components: + - type: Transform + parent: 2 + pos: 17.5,8.5 + - uid: 2149 + components: + - type: Transform + parent: 2 + pos: 18.5,8.5 + - uid: 2159 + components: + - type: Transform + parent: 2 + pos: 12.5,7.5 + - uid: 2160 + components: + - type: Transform + parent: 2 + pos: 13.5,7.5 + - uid: 2209 + components: + - type: Transform + parent: 2 + pos: 3.5,-16.5 + - uid: 2248 + components: + - type: Transform + parent: 2 + pos: 17.5,-12.5 + - uid: 2312 + components: + - type: Transform + parent: 2 + pos: 2.5,-4.5 + - uid: 2313 + components: + - type: Transform + parent: 2 + pos: 2.5,-5.5 + - uid: 2314 + components: + - type: Transform + parent: 2 + pos: 2.5,-6.5 + - uid: 2324 + components: + - type: Transform + parent: 2 + pos: 13.5,-16.5 + - uid: 2325 + components: + - type: Transform + parent: 2 + pos: 14.5,-16.5 + - uid: 2326 + components: + - type: Transform + parent: 2 + pos: 14.5,-17.5 + - uid: 2327 + components: + - type: Transform + parent: 2 + pos: 14.5,-18.5 + - uid: 2328 + components: + - type: Transform + parent: 2 + pos: 15.5,-18.5 + - uid: 2329 + components: + - type: Transform + parent: 2 + pos: 16.5,-18.5 + - uid: 2445 + components: + - type: Transform + parent: 2 + pos: 3.5,-15.5 + - uid: 2460 + components: + - type: Transform + parent: 2 + pos: 4.5,5.5 + - uid: 2461 + components: + - type: Transform + parent: 2 + pos: 4.5,6.5 + - uid: 2462 + components: + - type: Transform + parent: 2 + pos: 4.5,7.5 + - uid: 2463 + components: + - type: Transform + parent: 2 + pos: 4.5,8.5 + - uid: 2468 + components: + - type: Transform + parent: 2 + pos: 13.5,-10.5 + - uid: 2480 + components: + - type: Transform + parent: 2 + pos: 7.5,-20.5 + - uid: 2481 + components: + - type: Transform + parent: 2 + pos: 8.5,-20.5 + - uid: 2499 + components: + - type: Transform + parent: 2 + pos: 15.5,3.5 + - uid: 2502 + components: + - type: Transform + parent: 2 + pos: 16.5,3.5 + - uid: 2503 + components: + - type: Transform + parent: 2 + pos: 17.5,3.5 + - uid: 2504 + components: + - type: Transform + parent: 2 + pos: 15.5,5.5 + - uid: 2505 + components: + - type: Transform + parent: 2 + pos: 3.5,3.5 + - uid: 2506 + components: + - type: Transform + parent: 2 + pos: 15.5,-19.5 + - uid: 2507 + components: + - type: Transform + parent: 2 + pos: 15.5,-20.5 + - uid: 2509 + components: + - type: Transform + parent: 2 + pos: 15.5,-22.5 + - uid: 2510 + components: + - type: Transform + parent: 2 + pos: 15.5,-23.5 + - uid: 2511 + components: + - type: Transform + parent: 2 + pos: 14.5,-23.5 + - uid: 2512 + components: + - type: Transform + parent: 2 + pos: 12.5,-23.5 + - uid: 2513 + components: + - type: Transform + parent: 2 + pos: 2.5,-15.5 + - uid: 2519 + components: + - type: Transform + parent: 2 + pos: 7.5,-21.5 + - uid: 2520 + components: + - type: Transform + parent: 2 + pos: 7.5,-22.5 + - uid: 2521 + components: + - type: Transform + parent: 2 + pos: 7.5,-23.5 + - uid: 2523 + components: + - type: Transform + parent: 2 + pos: 8.5,-16.5 + - uid: 2524 + components: + - type: Transform + parent: 2 + pos: 8.5,-15.5 + - uid: 2525 + components: + - type: Transform + parent: 2 + pos: 8.5,-14.5 + - uid: 2533 + components: + - type: Transform + parent: 2 + pos: 3.5,6.5 + - uid: 2534 + components: + - type: Transform + parent: 2 + pos: 4.5,4.5 + - uid: 2535 + components: + - type: Transform + parent: 2 + pos: 3.5,8.5 + - uid: 2564 + components: + - type: Transform + parent: 2 + pos: 5.5,-16.5 +- proto: CableHV + entities: + - uid: 1816 + components: + - type: Transform + parent: 2 + pos: 12.5,4.5 + - uid: 1848 + components: + - type: Transform + parent: 2 + pos: 3.5,-18.5 + - uid: 1850 + components: + - type: Transform + parent: 2 + pos: 3.5,-20.5 + - uid: 1851 + components: + - type: Transform + parent: 2 + pos: 3.5,-19.5 + - uid: 1853 + components: + - type: Transform + parent: 2 + pos: 4.5,-19.5 + - uid: 1858 + components: + - type: Transform + parent: 2 + pos: 5.5,-19.5 + - uid: 1859 + components: + - type: Transform + parent: 2 + pos: 6.5,-19.5 + - uid: 1860 + components: + - type: Transform + parent: 2 + pos: 7.5,-19.5 + - uid: 1861 + components: + - type: Transform + parent: 2 + pos: 7.5,-18.5 + - uid: 1862 + components: + - type: Transform + parent: 2 + pos: 7.5,-17.5 + - uid: 1863 + components: + - type: Transform + parent: 2 + pos: 7.5,-16.5 + - uid: 1864 + components: + - type: Transform + parent: 2 + pos: 8.5,-18.5 + - uid: 1866 + components: + - type: Transform + parent: 2 + pos: 8.5,-16.5 + - uid: 1867 + components: + - type: Transform + parent: 2 + pos: 9.5,-16.5 + - uid: 1868 + components: + - type: Transform + parent: 2 + pos: 10.5,-16.5 + - uid: 1869 + components: + - type: Transform + parent: 2 + pos: 10.5,-15.5 + - uid: 1870 + components: + - type: Transform + parent: 2 + pos: 10.5,-14.5 + - uid: 1871 + components: + - type: Transform + parent: 2 + pos: 10.5,-13.5 + - uid: 1872 + components: + - type: Transform + parent: 2 + pos: 10.5,-12.5 + - uid: 1873 + components: + - type: Transform + parent: 2 + pos: 10.5,-11.5 + - uid: 1874 + components: + - type: Transform + parent: 2 + pos: 10.5,-10.5 + - uid: 1875 + components: + - type: Transform + parent: 2 + pos: 10.5,-9.5 + - uid: 1876 + components: + - type: Transform + parent: 2 + pos: 10.5,-8.5 + - uid: 1877 + components: + - type: Transform + parent: 2 + pos: 11.5,-8.5 + - uid: 1878 + components: + - type: Transform + parent: 2 + pos: 11.5,-7.5 + - uid: 1879 + components: + - type: Transform + parent: 2 + pos: 11.5,-6.5 + - uid: 1880 + components: + - type: Transform + parent: 2 + pos: 11.5,-5.5 + - uid: 1881 + components: + - type: Transform + parent: 2 + pos: 11.5,-4.5 + - uid: 1882 + components: + - type: Transform + parent: 2 + pos: 11.5,-3.5 + - uid: 1883 + components: + - type: Transform + parent: 2 + pos: 11.5,-2.5 + - uid: 1884 + components: + - type: Transform + parent: 2 + pos: 11.5,-1.5 + - uid: 1885 + components: + - type: Transform + parent: 2 + pos: 11.5,-0.5 + - uid: 1886 + components: + - type: Transform + parent: 2 + pos: 11.5,0.5 + - uid: 1887 + components: + - type: Transform + parent: 2 + pos: 12.5,0.5 + - uid: 1888 + components: + - type: Transform + parent: 2 + pos: 12.5,1.5 + - uid: 1889 + components: + - type: Transform + parent: 2 + pos: 12.5,2.5 + - uid: 1890 + components: + - type: Transform + parent: 2 + pos: 12.5,5.5 + - uid: 1891 + components: + - type: Transform + parent: 2 + pos: 12.5,3.5 + - uid: 1894 + components: + - type: Transform + parent: 2 + pos: 12.5,6.5 + - uid: 1895 + components: + - type: Transform + parent: 2 + pos: 13.5,6.5 + - uid: 1896 + components: + - type: Transform + parent: 2 + pos: 14.5,6.5 + - uid: 2428 + components: + - type: Transform + parent: 2 + pos: 2.5,-18.5 + - uid: 2516 + components: + - type: Transform + parent: 2 + pos: 4.5,-18.5 + - uid: 2538 + components: + - type: Transform + parent: 2 + pos: 2.5,-20.5 + - uid: 2539 + components: + - type: Transform + parent: 2 + pos: 3.5,-21.5 +- proto: CableMV + entities: + - uid: 341 + components: + - type: Transform + parent: 2 + pos: 5.5,-5.5 + - uid: 342 + components: + - type: Transform + parent: 2 + pos: 4.5,-5.5 + - uid: 343 + components: + - type: Transform + parent: 2 + pos: 3.5,-5.5 + - uid: 344 + components: + - type: Transform + parent: 2 + pos: 2.5,-5.5 + - uid: 345 + components: + - type: Transform + parent: 2 + pos: 2.5,-4.5 + - uid: 346 + components: + - type: Transform + parent: 2 + pos: 2.5,-3.5 + - uid: 347 + components: + - type: Transform + parent: 2 + pos: 2.5,-2.5 + - uid: 348 + components: + - type: Transform + parent: 2 + pos: 3.5,-2.5 + - uid: 351 + components: + - type: Transform + parent: 2 + pos: 7.5,-3.5 + - uid: 353 + components: + - type: Transform + parent: 2 + pos: 5.5,-4.5 + - uid: 354 + components: + - type: Transform + parent: 2 + pos: 5.5,-3.5 + - uid: 361 + components: + - type: Transform + parent: 2 + pos: 6.5,-3.5 + - uid: 363 + components: + - type: Transform + parent: 2 + pos: 8.5,-3.5 + - uid: 364 + components: + - type: Transform + parent: 2 + pos: 8.5,-4.5 + - uid: 1944 + components: + - type: Transform + parent: 2 + pos: 6.5,1.5 + - uid: 1947 + components: + - type: Transform + parent: 2 + pos: 8.5,-18.5 + - uid: 1948 + components: + - type: Transform + parent: 2 + pos: 8.5,-17.5 + - uid: 1950 + components: + - type: Transform + parent: 2 + pos: 8.5,-16.5 + - uid: 1951 + components: + - type: Transform + parent: 2 + pos: 9.5,-16.5 + - uid: 1952 + components: + - type: Transform + parent: 2 + pos: 10.5,-16.5 + - uid: 1953 + components: + - type: Transform + parent: 2 + pos: 10.5,-15.5 + - uid: 1955 + components: + - type: Transform + parent: 2 + pos: 10.5,-13.5 + - uid: 1956 + components: + - type: Transform + parent: 2 + pos: 10.5,-12.5 + - uid: 1957 + components: + - type: Transform + parent: 2 + pos: 10.5,-12.5 + - uid: 1958 + components: + - type: Transform + parent: 2 + pos: 9.5,-12.5 + - uid: 1959 + components: + - type: Transform + parent: 2 + pos: 8.5,-12.5 + - uid: 1960 + components: + - type: Transform + parent: 2 + pos: 7.5,-12.5 + - uid: 1961 + components: + - type: Transform + parent: 2 + pos: 6.5,-12.5 + - uid: 1962 + components: + - type: Transform + parent: 2 + pos: 5.5,-12.5 + - uid: 1963 + components: + - type: Transform + parent: 2 + pos: 4.5,-12.5 + - uid: 1964 + components: + - type: Transform + parent: 2 + pos: 4.5,-11.5 + - uid: 1965 + components: + - type: Transform + parent: 2 + pos: 4.5,-10.5 + - uid: 1966 + components: + - type: Transform + parent: 2 + pos: 11.5,-12.5 + - uid: 1967 + components: + - type: Transform + parent: 2 + pos: 12.5,-12.5 + - uid: 1968 + components: + - type: Transform + parent: 2 + pos: 12.5,-11.5 + - uid: 1970 + components: + - type: Transform + parent: 2 + pos: 10.5,-11.5 + - uid: 1971 + components: + - type: Transform + parent: 2 + pos: 10.5,-10.5 + - uid: 1972 + components: + - type: Transform + parent: 2 + pos: 10.5,-9.5 + - uid: 1973 + components: + - type: Transform + parent: 2 + pos: 10.5,-8.5 + - uid: 1979 + components: + - type: Transform + parent: 2 + pos: 10.5,-14.5 + - uid: 1988 + components: + - type: Transform + parent: 2 + pos: 14.5,6.5 + - uid: 1989 + components: + - type: Transform + parent: 2 + pos: 13.5,6.5 + - uid: 1991 + components: + - type: Transform + parent: 2 + pos: 12.5,6.5 + - uid: 1992 + components: + - type: Transform + parent: 2 + pos: 12.5,5.5 + - uid: 1993 + components: + - type: Transform + parent: 2 + pos: 12.5,4.5 + - uid: 1994 + components: + - type: Transform + parent: 2 + pos: 13.5,4.5 + - uid: 1995 + components: + - type: Transform + parent: 2 + pos: 14.5,4.5 + - uid: 1996 + components: + - type: Transform + parent: 2 + pos: 12.5,3.5 + - uid: 1997 + components: + - type: Transform + parent: 2 + pos: 12.5,2.5 + - uid: 1998 + components: + - type: Transform + parent: 2 + pos: 12.5,1.5 + - uid: 1999 + components: + - type: Transform + parent: 2 + pos: 12.5,0.5 + - uid: 2000 + components: + - type: Transform + parent: 2 + pos: 11.5,0.5 + - uid: 2001 + components: + - type: Transform + parent: 2 + pos: 10.5,0.5 + - uid: 2002 + components: + - type: Transform + parent: 2 + pos: 9.5,0.5 + - uid: 2003 + components: + - type: Transform + parent: 2 + pos: 8.5,0.5 + - uid: 2004 + components: + - type: Transform + parent: 2 + pos: 7.5,0.5 + - uid: 2005 + components: + - type: Transform + parent: 2 + pos: 6.5,0.5 + - uid: 2008 + components: + - type: Transform + parent: 2 + pos: 11.5,-16.5 + - uid: 2010 + components: + - type: Transform + parent: 2 + pos: 4.5,-2.5 + - uid: 2013 + components: + - type: Transform + parent: 2 + pos: 8.5,-5.5 + - uid: 2014 + components: + - type: Transform + parent: 2 + pos: 7.5,-5.5 + - uid: 2099 + components: + - type: Transform + parent: 2 + pos: 6.5,2.5 + - uid: 2100 + components: + - type: Transform + parent: 2 + pos: 7.5,2.5 + - uid: 2107 + components: + - type: Transform + parent: 2 + pos: 8.5,-15.5 + - uid: 2108 + components: + - type: Transform + parent: 2 + pos: 8.5,-14.5 + - uid: 2125 + components: + - type: Transform + parent: 2 + pos: 8.5,-6.5 + - uid: 2431 + components: + - type: Transform + parent: 2 + pos: 8.5,-7.5 + - uid: 2434 + components: + - type: Transform + parent: 2 + pos: 8.5,-8.5 + - uid: 2466 + components: + - type: Transform + parent: 2 + pos: 13.5,-11.5 + - uid: 2467 + components: + - type: Transform + parent: 2 + pos: 13.5,-10.5 + - uid: 2476 + components: + - type: Transform + parent: 2 + pos: 7.5,-18.5 + - uid: 2477 + components: + - type: Transform + parent: 2 + pos: 7.5,-19.5 + - uid: 2478 + components: + - type: Transform + parent: 2 + pos: 7.5,-20.5 + - uid: 2479 + components: + - type: Transform + parent: 2 + pos: 8.5,-20.5 + - uid: 2526 + components: + - type: Transform + parent: 2 + pos: 12.5,-16.5 + - uid: 2527 + components: + - type: Transform + parent: 2 + pos: 13.5,-16.5 + - uid: 2528 + components: + - type: Transform + parent: 2 + pos: 14.5,-16.5 + - uid: 2529 + components: + - type: Transform + parent: 2 + pos: 15.5,-16.5 + - uid: 2532 + components: + - type: Transform + parent: 2 + pos: 9.5,-8.5 +- proto: CableTerminal + entities: + - uid: 1854 + components: + - type: Transform + parent: 2 + pos: 3.5,-18.5 + - uid: 1856 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 3.5,-20.5 + - uid: 2515 + components: + - type: Transform + parent: 2 + pos: 4.5,-18.5 +- proto: Carpet + entities: + - uid: 271 + components: + - type: Transform + parent: 2 + pos: 15.5,-6.5 + - uid: 2409 + components: + - type: Transform + parent: 2 + pos: 15.5,-7.5 + - uid: 2410 + components: + - type: Transform + parent: 2 + pos: 15.5,-4.5 + - uid: 2411 + components: + - type: Transform + parent: 2 + pos: 15.5,-5.5 + - uid: 2412 + components: + - type: Transform + parent: 2 + pos: 15.5,-2.5 + - uid: 2413 + components: + - type: Transform + parent: 2 + pos: 15.5,-3.5 + - uid: 2414 + components: + - type: Transform + parent: 2 + pos: 15.5,-1.5 + - uid: 2415 + components: + - type: Transform + parent: 2 + pos: 15.5,-0.5 + - uid: 2416 + components: + - type: Transform + parent: 2 + pos: 15.5,-8.5 +- proto: CarpetBlue + entities: + - uid: 2393 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 9.5,6.5 + - uid: 2394 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 9.5,5.5 + - uid: 2395 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 9.5,4.5 + - uid: 2396 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 10.5,6.5 + - uid: 2397 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 10.5,5.5 + - uid: 2398 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 10.5,4.5 +- proto: CarpetGreen + entities: + - uid: 47 + components: + - type: Transform + parent: 2 + pos: 5.5,-7.5 + - uid: 93 + components: + - type: Transform + parent: 2 + pos: 5.5,-8.5 + - uid: 155 + components: + - type: Transform + parent: 2 + pos: 6.5,-8.5 + - uid: 259 + components: + - type: Transform + parent: 2 + pos: 5.5,-9.5 + - uid: 2184 + components: + - type: Transform + parent: 2 + pos: 6.5,-9.5 + - uid: 2273 + components: + - type: Transform + parent: 2 + pos: 4.5,-9.5 + - uid: 2276 + components: + - type: Transform + parent: 2 + pos: 4.5,-8.5 + - uid: 2496 + components: + - type: Transform + parent: 2 + pos: 6.5,-7.5 +- proto: Catwalk + entities: + - uid: 84 + components: + - type: Transform + parent: 2 + pos: 15.5,-22.5 + - uid: 110 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 6.5,-18.5 + - uid: 112 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 6.5,-20.5 + - uid: 114 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 5.5,-18.5 + - uid: 129 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 5.5,-20.5 + - uid: 134 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 1.5,-17.5 + - uid: 157 + components: + - type: Transform + parent: 2 + pos: 16.5,8.5 + - uid: 207 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 3.5,-20.5 + - uid: 209 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 1.5,-19.5 + - uid: 210 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 1.5,-18.5 + - uid: 211 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 3.5,-19.5 + - uid: 294 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 19.5,-17.5 + - uid: 295 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 19.5,-18.5 + - uid: 296 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 19.5,-19.5 + - uid: 1745 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 2.5,-15.5 + - uid: 1794 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 3.5,-15.5 + - uid: 1893 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 5.5,-19.5 + - uid: 1897 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 6.5,-19.5 + - uid: 1898 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 7.5,-19.5 + - uid: 1900 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 5.5,-19.5 + - uid: 1903 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 6.5,-19.5 + - uid: 1905 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 7.5,-18.5 + - uid: 1906 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 7.5,-19.5 + - uid: 2150 + components: + - type: Transform + parent: 2 + pos: 17.5,8.5 + - uid: 2319 + components: + - type: Transform + parent: 2 + pos: 14.5,-23.5 + - uid: 2320 + components: + - type: Transform + parent: 2 + pos: 15.5,-23.5 + - uid: 2331 + components: + - type: Transform + parent: 2 + pos: 18.5,8.5 + - uid: 2332 + components: + - type: Transform + parent: 2 + pos: 12.5,-23.5 + - uid: 2333 + components: + - type: Transform + parent: 2 + pos: 11.5,-23.5 + - uid: 2387 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 3.5,-18.5 + - uid: 2399 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 4.5,-18.5 + - uid: 2400 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 4.5,-19.5 + - uid: 2401 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 4.5,-20.5 + - uid: 2421 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 6.5,-25.5 + - uid: 2422 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 6.5,-26.5 + - uid: 2423 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 7.5,-25.5 + - uid: 2424 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 7.5,-26.5 + - uid: 2425 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 8.5,-25.5 + - uid: 2427 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 9.5,-25.5 + - uid: 2429 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 11.5,-25.5 + - uid: 2430 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 12.5,-25.5 + - uid: 2432 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 13.5,-25.5 + - uid: 2433 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 13.5,-26.5 + - uid: 2435 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 14.5,-26.5 + - uid: 2436 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 14.5,-25.5 + - uid: 2442 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 1.5,4.5 + - uid: 2449 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 1.5,3.5 + - uid: 2450 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 1.5,2.5 + - uid: 2451 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 3.5,10.5 + - uid: 2452 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 4.5,10.5 + - uid: 2453 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 5.5,10.5 + - uid: 2454 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 15.5,10.5 + - uid: 2455 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 16.5,10.5 + - uid: 2456 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 17.5,10.5 + - uid: 2457 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 19.5,4.5 + - uid: 2458 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 19.5,3.5 + - uid: 2459 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 19.5,2.5 + - uid: 2517 + components: + - type: Transform + parent: 2 + pos: 10.5,-23.5 + - uid: 2518 + components: + - type: Transform + parent: 2 + pos: 9.5,-23.5 + - uid: 2541 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 3.5,-16.5 + - uid: 2542 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 3.5,-16.5 +- proto: Chair + entities: + - uid: 137 + components: + - type: Transform + parent: 2 + pos: 7.5,8.5 + - uid: 327 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 7.5,-16.5 + - uid: 328 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 7.5,-15.5 + - uid: 329 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 5.5,-15.5 + - uid: 330 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 5.5,-16.5 + - uid: 1681 + components: + - type: Transform + parent: 2 + pos: 5.5,8.5 + - uid: 2354 + components: + - type: Transform + parent: 2 + pos: 6.5,8.5 +- proto: ChairOfficeDark + entities: + - uid: 261 + components: + - type: Transform + parent: 2 + pos: 5.5,-0.5 +- proto: ChairOfficeLight + entities: + - uid: 215 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 12.564465,8.5310335 +- proto: ChairPilotSeat + entities: + - uid: 28 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 3.5,-1.5 + - uid: 58 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 12.5,-7.5 + - uid: 75 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 12.5,-1.5 + - uid: 82 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 13.5,-0.5 + - uid: 87 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 12.5,-0.5 + - uid: 179 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 10.5,-1.5 + - uid: 190 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 5.5,3.5 + - uid: 192 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 10.5,-0.5 + - uid: 194 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 9.5,-3.5 + - uid: 200 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 5.5,2.5 + - uid: 204 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 13.5,-1.5 + - uid: 206 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 13.5,-6.5 + - uid: 208 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 9.5,-5.5 + - uid: 220 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 13.5,-7.5 + - uid: 222 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 13.5,-3.5 + - uid: 223 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 10.5,-6.5 + - uid: 224 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 13.5,-4.5 + - uid: 231 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 3.5,-2.5 + - uid: 1700 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 10.5,-5.5 + - uid: 1702 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 9.5,-6.5 + - uid: 1760 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 13.5,-5.5 + - uid: 1763 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 9.5,-2.5 + - uid: 1766 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 12.5,-2.5 + - uid: 1772 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 10.5,-4.5 + - uid: 1773 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 12.5,-4.5 + - uid: 1774 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 13.5,-2.5 + - uid: 1775 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 10.5,-7.5 + - uid: 1783 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 3.5,4.5 + - uid: 1790 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 5.5,4.5 + - uid: 1802 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 9.5,-0.5 + - uid: 1803 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 9.5,-1.5 + - uid: 1804 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 10.5,-2.5 + - uid: 1805 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 12.5,-3.5 + - uid: 1806 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 9.5,-4.5 + - uid: 1807 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 12.5,-5.5 + - uid: 1808 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 12.5,-6.5 + - uid: 1809 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 9.5,-7.5 + - uid: 1899 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 10.5,-3.5 + - uid: 1926 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 3.5,2.5 + - uid: 1927 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 3.5,3.5 + - uid: 2256 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 3.5,5.5 + - uid: 2497 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 2.5,-8.5 + - uid: 2498 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 2.5,-9.5 +- proto: ChairWood + entities: + - uid: 50 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 10.489152,4.5210633 + - uid: 91 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 9.520402,4.5419116 + - uid: 2263 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 1.5,-5.5 + - uid: 2308 + components: + - type: Transform + parent: 2 + pos: 1.5,-3.5 + - uid: 2351 + components: + - type: Transform + parent: 2 + pos: 10.490741,6.408763 +- proto: ChunkEntity + entities: + - uid: 380 + components: + - type: ChunkEntity + root: 2 + chunk: 0,-1 + - type: DecalChunk + maxDecalId: 37 + decals: + version: 1 + nodes: + - node: + id: Arrows + color: '#FFFFFFFF' + angle: 1.5707963267948966 rad + decals: + 3: 6,-3 + 7: 2,-6 + 8: 2,-5 + 9: 6,-4 + - node: + id: BrickLineOverlayW + color: '#52B4E996' + decals: + 21: 9,-12 + 26: 9,-13 + 27: 9,-14 + - node: + id: BrickLineOverlayW + color: '#EFB34196' + decals: + 28: 10,-16 + - node: + id: BrickTileWhiteInnerNe + color: '#DE3A3A96' + decals: + 36: 0,-2 + - node: + id: BrickTileWhiteInnerNw + color: '#DE3A3A96' + decals: + 32: 8,-2 + - node: + id: BrickTileWhiteInnerSe + color: '#A4610696' + decals: + 30: 11,-16 + - node: + id: BrickTileWhiteInnerSw + color: '#EFB34196' + decals: + 29: 10,-15 + - node: + id: BrickTileWhiteLineE + color: '#52B4E996' + decals: + 17: 7,-12 + 18: 7,-13 + 19: 7,-14 + - node: + id: BrickTileWhiteLineE + color: '#DE3A3A96' + decals: + 13: 6,-1 + - node: + id: BrickTileWhiteLineE + color: '#EFB34196' + decals: + 20: 8,-16 + - node: + id: BrickTileWhiteLineN + color: '#DE3A3A96' + decals: + 33: 2,-2 + 34: 3,-2 + 35: 1,-2 + - node: + id: BrickTileWhiteLineW + color: '#52B4E996' + decals: + 14: 3,-12 + 15: 3,-13 + 16: 3,-14 + - node: + id: BrickTileWhiteLineW + color: '#DE3A3A96' + decals: + 31: 8,-1 + - node: + id: ConcreteTrimLineE + color: '#9FED5896' + decals: + 22: 14,-12 + 23: 14,-13 + 24: 14,-14 + 25: 14,-15 + - node: + id: Delivery + color: '#FFFFFFFF' + decals: + 4: 4,-5 + 11: 4,-6 + - node: + id: WarnCornerSmallNE + color: '#FFFFFFFF' + decals: + 2: 3,-7 + - node: + id: WarnCornerSmallSE + color: '#FFFFFFFF' + decals: + 0: 3,-4 + - node: + id: WarnCornerSmallSW + color: '#FFFFFFFF' + decals: + 1: 5,-4 + - node: + id: WarnLineE + color: '#FFFFFFFF' + decals: + 5: 3,-5 + 6: 3,-6 + - node: + id: WarnLineS + color: '#FFFFFFFF' + decals: + 10: 5,-6 + 12: 5,-5 + - uid: 381 + components: + - type: ChunkEntity + root: 2 + chunk: 0,-2 + - type: DecalChunk + maxDecalId: 34 + decals: + version: 1 + nodes: + - node: + id: Bot + color: '#FFFFFFFF' + decals: + 0: 15,-18 + 1: 15,-19 + 2: 15,-20 + - node: + id: BrickLineOverlayW + color: '#EFB34196' + decals: + 19: 3,-18 + 20: 3,-19 + 27: 3,-20 + 28: 3,-21 + 29: 10,-17 + 30: 10,-18 + - node: + id: BrickTileWhiteInnerNe + color: '#A4610696' + decals: + 33: 11,-18 + - node: + id: BrickTileWhiteInnerNw + color: '#EFB34196' + decals: + 31: 10,-19 + - node: + id: BrickTileWhiteLineE + color: '#A4610696' + decals: + 32: 11,-17 + - node: + id: BrickTileWhiteLineE + color: '#EFB34196' + decals: + 16: 8,-17 + 17: 8,-18 + 18: 8,-19 + - node: + id: ConcreteTrimCornerSw + color: '#EFB34196' + decals: + 26: 13,-19 + - node: + id: ConcreteTrimInnerSw + color: '#EFB34196' + decals: + 23: 14,-19 + - node: + id: ConcreteTrimLineW + color: '#EFB34196' + decals: + 21: 13,-17 + 22: 13,-18 + 24: 14,-20 + 25: 14,-21 + - node: + id: Dirt + color: '#FFFFFFFF' + cleanable: True + decals: + 3: 11,-22 + 4: 12,-22 + 5: 12,-21 + 6: 11,-21 + 7: 10,-21 + 8: 9,-21 + 9: 9,-22 + 10: 10,-22 + 11: 10,-23 + 12: 9,-23 + 13: 9,-24 + 14: 10,-24 + 15: 11,-24 + - uid: 382 + components: + - type: ChunkEntity + root: 2 + chunk: 1,-2 + - type: DecalChunk + maxDecalId: 9 + decals: + version: 1 + nodes: + - node: + id: Bot + color: '#FFFFFFFF' + decals: + 0: 16,-20 + 1: 16,-19 + 2: 16,-18 + 3: 17,-18 + 4: 17,-19 + 5: 17,-20 + - node: + id: ConcreteTrimLineE + color: '#EFB34196' + decals: + 6: 17,-18 + 7: 17,-19 + 8: 17,-20 + 9: 17,-21 + - uid: 383 + components: + - type: ChunkEntity + root: 2 + chunk: 1,0 + - type: DecalChunk + maxDecalId: 4 + decals: + version: 1 + nodes: + - node: + id: Bot + color: '#FFFFFFFF' + decals: + 0: 17,6 + 1: 17,4 + 2: 16,4 + 3: 16,2 + 4: 17,2 + - uid: 384 + components: + - type: ChunkEntity + root: 2 + - type: DecalChunk + maxDecalId: 39 + decals: + version: 1 + nodes: + - node: + id: BrickLineOverlayE + color: '#334E6DC8' + decals: + 0: 13,6 + 1: 13,5 + 2: 13,4 + 3: 13,3 + 4: 13,7 + 5: 13,8 + - node: + id: BrickLineOverlayN + color: '#334E6DC8' + decals: + 6: 13,1 + 7: 12,1 + 19: 11,1 + - node: + id: BrickLineOverlayW + color: '#334E6DC8' + decals: + 8: 9,7 + 9: 9,8 + 10: 9,9 + - node: + id: BrickLineOverlayW + color: '#DE3A3A96' + decals: + 18: 3,2 + - node: + id: BrickTileWhiteCornerSe + color: '#DE3A3A96' + decals: + 12: 7,3 + - node: + id: BrickTileWhiteInnerSe + color: '#DE3A3A96' + decals: + 11: 6,3 + - node: + id: BrickTileWhiteLineE + color: '#DE3A3A96' + decals: + 13: 6,2 + 14: 7,4 + 15: 7,5 + 16: 6,1 + 17: 6,0 + - node: + id: BrickTileWhiteLineW + color: '#DE3A3A96' + decals: + 20: 3,7 + 21: 3,8 + 22: 3,6 + 23: 3,5 + 24: 3,4 + 25: 3,3 + 27: 8,0 + 28: 8,1 + - node: + id: MiniTileInnerOverlayNE + color: '#334E6DC8' + decals: + 26: 10,1 + - node: + id: WarnLineGreyscaleN + color: '#DE3A3A96' + decals: + 29: 0,0 + 30: 3,0 + 31: 2,0 + 32: 1,0 + - node: + id: WarnLineGreyscaleS + color: '#DE3A3A96' + decals: + 33: 0,0 + 34: 1,0 + 35: 2,0 + 36: 3,0 +- proto: ClosetEmergencyFilledRandom + entities: + - uid: 1698 + components: + - type: Transform + parent: 2 + pos: 10.5,-18.5 + - uid: 1811 + components: + - type: Transform + parent: 2 + pos: 13.5,3.5 + - uid: 1852 + components: + - type: Transform + parent: 2 + pos: 13.5,-17.5 + - uid: 2348 + components: + - type: Transform + parent: 2 + pos: 15.5,8.5 +- proto: ClosetFireFilled + entities: + - uid: 1709 + components: + - type: Transform + parent: 2 + pos: 10.5,-17.5 + - uid: 1815 + components: + - type: Transform + parent: 2 + pos: 13.5,4.5 + - uid: 1921 + components: + - type: Transform + parent: 2 + pos: 13.5,-18.5 +- proto: ClosetWallEmergencyFilledRandom + entities: + - uid: 2368 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 16.5,-10.5 +- proto: Cobweb1 + entities: + - uid: 2201 + components: + - type: Transform + parent: 2 + pos: 9.5,-20.5 +- proto: Cobweb2 + entities: + - uid: 2318 + components: + - type: Transform + parent: 2 + pos: 12.5,-20.5 +- proto: ComfyChair + entities: + - uid: 182 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 12.5,-12.5 + - uid: 191 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 10.5,8.5 + - uid: 201 + components: + - type: Transform + parent: 2 + pos: 4.5,-8.5 + - uid: 1684 + components: + - type: Transform + parent: 2 + pos: 5.5,-8.5 + - uid: 1688 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 6.5,-9.5 + - uid: 1795 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 13.5,-13.5 +- proto: ComputerAlert + entities: + - uid: 152 + components: + - type: Transform + parent: 2 + pos: 9.5,9.5 +- proto: ComputerCrewMonitoring + entities: + - uid: 214 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 13.5,7.5 +- proto: ComputerEmergencyShuttle + entities: + - uid: 213 + components: + - type: Transform + parent: 2 + pos: 10.5,9.5 +- proto: ComputerPowerMonitoring + entities: + - uid: 170 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 13.5,8.5 +- proto: ComputerRadar + entities: + - uid: 212 + components: + - type: Transform + parent: 2 + pos: 11.5,9.5 +- proto: CrateFilledSpawner + entities: + - uid: 163 + components: + - type: Transform + parent: 2 + pos: 15.5,-17.5 +- proto: CrateFunInstrumentsRandom + entities: + - uid: 379 + components: + - type: Transform + parent: 2 + pos: 17.5,-18.5 +- proto: CrateMaterialPlasma + entities: + - uid: 331 + components: + - type: Transform + parent: 2 + pos: 16.5,-17.5 +- proto: CratePermaEscapeSpawner + entities: + - uid: 378 + components: + - type: Transform + parent: 2 + pos: 15.5,-19.5 +- proto: CrateServiceCooking + entities: + - uid: 2254 + components: + - type: Transform + parent: 2 + pos: 19.5,-1.5 +- proto: DresserFilled + entities: + - uid: 270 + components: + - type: Transform + parent: 2 + pos: 17.5,-12.5 +- proto: DrinkGlass + entities: + - uid: 1812 + components: + - type: Transform + parent: 2 + pos: 9.670948,5.8049846 + - uid: 1813 + components: + - type: Transform + parent: 2 + pos: 9.835011,5.5000854 +- proto: DrinkNTCahorsBottleFull + entities: + - uid: 246 + components: + - type: Transform + parent: 2 + pos: 9.396809,5.780712 +- proto: EmergencyLight + entities: + - uid: 219 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 7.5,4.5 + - uid: 297 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 17.5,-15.5 + - uid: 1907 + components: + - type: Transform + parent: 2 + pos: 5.5,-11.5 + - uid: 2179 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 13.5,-14.5 + - uid: 2180 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 8.5,-0.5 + - uid: 2182 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 14.5,-9.5 + - uid: 2185 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 13.5,3.5 + - uid: 2189 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 6.5,-9.5 + - uid: 2265 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 13.5,1.5 + - uid: 2370 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 17.5,-12.5 + - uid: 2371 + components: + - type: Transform + parent: 2 + pos: 6.5,-15.5 + - uid: 2374 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 11.5,-17.5 + - uid: 2375 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 3.5,-6.5 + - uid: 2376 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 3.5,-3.5 +- proto: EnergyGateAirtight + entities: + - uid: 121 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 7.5,-2.5 + - uid: 127 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 7.5,-3.5 +- proto: EnergyGateGenpopEnter + entities: + - uid: 2530 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 4.5,6.5 +- proto: EnergyGateGenpopLeave + entities: + - uid: 131 + components: + - type: Transform + parent: 2 + pos: 6.5,6.5 +- proto: filingCabinetDrawerRandom + entities: + - uid: 1830 + components: + - type: Transform + parent: 2 + pos: 11.5,8.5 +- proto: FireAlarm + entities: + - uid: 233 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 2.5,4.5 + - type: DeviceList + devices: + - 386 + - 273 + - 350 + - uid: 1689 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 8.5,6.5 + - type: DeviceList + devices: + - 2339 + - 2340 + - uid: 2483 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 14.5,2.5 + - type: DeviceList + devices: + - 2223 + - 2340 + - uid: 2487 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 15.5,-10.5 + - type: DeviceList + devices: + - 1925 + - 263 + - 386 + - 2223 + - 2339 + - uid: 2488 + components: + - type: Transform + parent: 2 + pos: 14.5,-10.5 + - type: DeviceList + devices: + - 2345 + - 2344 + - 2343 + - 2342 + - 1925 + - 263 + - 2336 + - uid: 2489 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 9.5,-15.5 + - type: DeviceList + devices: + - 2345 + - uid: 2490 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 6.5,-14.5 + - type: DeviceList + devices: + - 2336 + - uid: 2491 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 0.5,-2.5 +- proto: FirelockEdge + entities: + - uid: 273 + components: + - type: Transform + parent: 2 + pos: 5.5,-0.5 + - type: DeviceNetwork + deviceLists: + - 233 +- proto: FirelockGlass + entities: + - uid: 263 + components: + - type: Transform + parent: 2 + pos: 10.5,-10.5 + - type: DeviceNetwork + deviceLists: + - 2487 + - uid: 350 + components: + - type: Transform + parent: 2 + pos: 2.5,-0.5 + - type: DeviceNetwork + deviceLists: + - 233 + - uid: 386 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 7.5,0.5 + - type: DeviceNetwork + deviceLists: + - 233 + - 2487 + - uid: 1925 + components: + - type: Transform + parent: 2 + pos: 11.5,-10.5 + - type: DeviceNetwork + deviceLists: + - 2487 + - uid: 2223 + components: + - type: Transform + parent: 2 + pos: 15.5,1.5 + - type: DeviceNetwork + deviceLists: + - 2487 + - uid: 2336 + components: + - type: Transform + parent: 2 + pos: 8.5,-12.5 + - uid: 2339 + components: + - type: Transform + parent: 2 + pos: 12.5,2.5 + - type: DeviceNetwork + deviceLists: + - 2487 + - uid: 2340 + components: + - type: Transform + parent: 2 + pos: 14.5,5.5 + - uid: 2342 + components: + - type: Transform + parent: 2 + pos: 15.5,-11.5 + - uid: 2343 + components: + - type: Transform + parent: 2 + pos: 15.5,-14.5 + - uid: 2344 + components: + - type: Transform + parent: 2 + pos: 12.5,-16.5 + - uid: 2345 + components: + - type: Transform + parent: 2 + pos: 9.5,-16.5 +- proto: FloorDrain + entities: + - uid: 304 + components: + - type: Transform + parent: 2 + pos: 17.5,-14.5 + - type: Fixtures + fixtures: {} +- proto: FoodBurgerGhost + entities: + - uid: 1904 + components: + - type: Transform + parent: 2 + pos: 16.5,-1.5 +- proto: FoodMealCubancarp + entities: + - uid: 1857 + components: + - type: Transform + parent: 2 + pos: 16.5,-4.5 +- proto: FoodMealMilkape + entities: + - uid: 130 + components: + - type: Transform + parent: 2 + pos: 16.5,-7.5 +- proto: FoodPoppy + entities: + - uid: 2220 + components: + - type: Transform + parent: 2 + pos: 9.43617,8.72581 +- proto: GasMinerNitrogen + entities: + - uid: 1840 + components: + - type: Transform + parent: 2 + pos: 7.5,-23.5 +- proto: GasMinerOxygen + entities: + - uid: 1839 + components: + - type: Transform + parent: 2 + pos: 5.5,-23.5 +- proto: GasMixerFlipped + entities: + - uid: 2229 + components: + - type: Transform + parent: 2 + pos: 7.5,-20.5 + - type: AtmosPipeColor + color: '#0335FCFF' +- proto: GasPassiveVent + entities: + - uid: 2226 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 5.5,-21.5 + - uid: 2227 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 7.5,-21.5 +- proto: GasPipeBend + entities: + - uid: 334 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 7.5,-16.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 355 + components: + - type: Transform + parent: 2 + pos: 2.5,-2.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 357 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 5.5,0.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 374 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 5.5,-5.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 375 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 5.5,-3.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 376 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 8.5,-3.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 1954 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 1.5,-6.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2143 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 2.5,-6.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2228 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 5.5,-20.5 + - uid: 2287 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 15.5,3.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2288 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 15.5,0.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2289 + components: + - type: Transform + parent: 2 + pos: 12.5,3.5 + - type: AtmosPipeColor + color: '#0335FCFF' +- proto: GasPipeFourway + entities: + - uid: 2152 + components: + - type: Transform + parent: 2 + pos: 10.5,-11.5 + - type: AtmosPipeColor + color: '#0335FCFF' +- proto: GasPipeStraight + entities: + - uid: 52 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 11.5,-14.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 53 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 13.5,-14.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 333 + components: + - type: Transform + parent: 2 + pos: 7.5,-17.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 366 + components: + - type: Transform + parent: 2 + pos: 8.5,-0.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 367 + components: + - type: Transform + parent: 2 + pos: 8.5,-1.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 368 + components: + - type: Transform + parent: 2 + pos: 8.5,-2.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 369 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 7.5,-3.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 370 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 6.5,-3.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 371 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 5.5,-4.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 372 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 4.5,-5.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 373 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 3.5,-5.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2151 + components: + - type: Transform + parent: 2 + pos: 7.5,-19.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2167 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 12.5,-14.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2168 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 1.5,-7.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2230 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 6.5,-20.5 + - uid: 2232 + components: + - type: Transform + parent: 2 + pos: 7.5,-18.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2234 + components: + - type: Transform + parent: 2 + pos: 10.5,-10.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2241 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 9.5,-16.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2243 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 10.5,-15.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2244 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 10.5,-13.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2251 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 9.5,-12.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2252 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 8.5,-12.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2267 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 2.5,-3.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2271 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 2.5,-4.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2279 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 6.5,0.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2280 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 7.5,0.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2282 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 9.5,0.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2290 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 15.5,1.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2291 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 15.5,2.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2292 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 12.5,2.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2293 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 12.5,1.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2294 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 13.5,0.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2296 + components: + - type: Transform + parent: 2 + pos: 11.5,-0.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2297 + components: + - type: Transform + parent: 2 + pos: 11.5,-1.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2298 + components: + - type: Transform + parent: 2 + pos: 11.5,-2.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2299 + components: + - type: Transform + parent: 2 + pos: 11.5,-3.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2300 + components: + - type: Transform + parent: 2 + pos: 11.5,-4.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2301 + components: + - type: Transform + parent: 2 + pos: 11.5,-5.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2302 + components: + - type: Transform + parent: 2 + pos: 11.5,-6.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2303 + components: + - type: Transform + parent: 2 + pos: 11.5,-7.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2306 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 12.5,-8.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2307 + components: + - type: Transform + parent: 2 + pos: 10.5,-9.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2469 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 14.5,-14.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2470 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 15.5,-14.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2471 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 15.5,-11.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2472 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 14.5,-11.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2473 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 13.5,-11.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2474 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 12.5,-11.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2475 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 11.5,-11.5 + - type: AtmosPipeColor + color: '#0335FCFF' +- proto: GasPipeTJunction + entities: + - uid: 338 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 8.5,-16.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 356 + components: + - type: Transform + parent: 2 + pos: 8.5,0.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 365 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 2.5,-5.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2015 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 10.5,-14.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2163 + components: + - type: Transform + parent: 2 + pos: 14.5,0.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2242 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 10.5,-16.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2246 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 10.5,-12.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2284 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 10.5,0.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2285 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 12.5,0.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2295 + components: + - type: Transform + parent: 2 + pos: 11.5,0.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2304 + components: + - type: Transform + parent: 2 + pos: 10.5,-8.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2305 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 11.5,-8.5 + - type: AtmosPipeColor + color: '#0335FCFF' +- proto: GasVentPump + entities: + - uid: 335 + components: + - type: Transform + parent: 2 + pos: 8.5,-15.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 362 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 1.5,-2.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 1690 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 7.5,-12.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 1694 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 9.5,-11.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 1949 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 11.5,-16.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 1969 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 16.5,-11.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2025 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 1.5,-8.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2156 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 16.5,-14.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2249 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 9.5,-8.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2257 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 13.5,-8.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2259 + components: + - type: Transform + parent: 2 + pos: 5.5,1.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2261 + components: + - type: Transform + parent: 2 + pos: 10.5,1.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2262 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 16.5,3.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2266 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 11.5,3.5 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2286 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 14.5,-0.5 + - type: AtmosPipeColor + color: '#0335FCFF' +- proto: GeneratorRTG + entities: + - uid: 1843 + components: + - type: Transform + parent: 2 + pos: 3.5,-20.5 + - uid: 1845 + components: + - type: Transform + parent: 2 + pos: 3.5,-18.5 + - uid: 1916 + components: + - type: Transform + parent: 2 + pos: 4.5,-18.5 +- proto: GeneratorWallmountAPU + entities: + - uid: 2373 + components: + - type: Transform + parent: 2 + pos: 2.5,-18.5 + - uid: 2536 + components: + - type: Transform + parent: 2 + pos: 3.5,-21.5 + - uid: 2537 + components: + - type: Transform + parent: 2 + pos: 2.5,-20.5 +- proto: GlowstickPurple + entities: + - uid: 2181 + components: + - type: Transform + parent: 2 + pos: 13.451935,-12.3447 +- proto: GlowstickRed + entities: + - uid: 2557 + components: + - type: Transform + parent: 2 + pos: 13.484217,-12.50692 +- proto: GlowstickYellow + entities: + - uid: 2558 + components: + - type: Transform + parent: 2 + pos: 13.7238,-12.50692 +- proto: GravityGeneratorMini + entities: + - uid: 1746 + components: + - type: Transform + parent: 2 + pos: 4.5,-20.5 +- proto: GrenadeStinger + entities: + - uid: 1931 + components: + - type: Transform + parent: 2 + pos: 7.7129054,4.49379 +- proto: Grille + entities: + - uid: 9 + components: + - type: Transform + parent: 2 + pos: 12.5,-10.5 + - uid: 45 + components: + - type: Transform + parent: 2 + pos: 20.5,-9.5 + - uid: 48 + components: + - type: Transform + parent: 2 + pos: 13.5,9.5 + - uid: 99 + components: + - type: Transform + parent: 2 + pos: 20.5,0.5 + - uid: 196 + components: + - type: Transform + parent: 2 + pos: 20.5,-1.5 + - uid: 256 + components: + - type: Transform + parent: 2 + pos: 0.5,-3.5 + - uid: 274 + components: + - type: Transform + parent: 2 + pos: 20.5,-0.5 + - uid: 287 + components: + - type: Transform + parent: 2 + pos: 20.5,-8.5 + - uid: 302 + components: + - type: Transform + parent: 2 + pos: 20.5,-7.5 + - uid: 307 + components: + - type: Transform + parent: 2 + pos: 2.5,-11.5 + - uid: 308 + components: + - type: Transform + parent: 2 + pos: 2.5,-12.5 + - uid: 309 + components: + - type: Transform + parent: 2 + pos: 2.5,-13.5 + - uid: 1784 + components: + - type: Transform + parent: 2 + pos: 12.5,9.5 + - uid: 1785 + components: + - type: Transform + parent: 2 + pos: 12.5,10.5 + - uid: 1786 + components: + - type: Transform + parent: 2 + pos: 11.5,10.5 + - uid: 1787 + components: + - type: Transform + parent: 2 + pos: 10.5,10.5 + - uid: 1788 + components: + - type: Transform + parent: 2 + pos: 9.5,10.5 + - uid: 1789 + components: + - type: Transform + parent: 2 + pos: 8.5,10.5 + - uid: 1792 + components: + - type: Transform + parent: 2 + pos: 0.5,-4.5 + - uid: 1793 + components: + - type: Transform + parent: 2 + pos: 0.5,-5.5 + - uid: 2040 + components: + - type: Transform + parent: 2 + pos: 7.5,6.5 + - uid: 2127 + components: + - type: Transform + parent: 2 + pos: 7.5,9.5 + - uid: 2406 + components: + - type: Transform + parent: 2 + pos: 9.5,-10.5 + - uid: 2443 + components: + - type: Transform + parent: 2 + pos: 2.5,8.5 + - uid: 2444 + components: + - type: Transform + parent: 2 + pos: 2.5,7.5 + - uid: 2508 + components: + - type: Transform + parent: 2 + pos: 5.5,6.5 + - uid: 2531 + components: + - type: Transform + parent: 2 + pos: 3.5,6.5 + - uid: 2550 + components: + - type: Transform + parent: 2 + pos: 6.5,-21.5 + - uid: 2551 + components: + - type: Transform + parent: 2 + pos: 6.5,-22.5 + - uid: 2552 + components: + - type: Transform + parent: 2 + pos: 6.5,-23.5 +- proto: Gyroscope + entities: + - uid: 2543 + components: + - type: Transform + parent: 2 + pos: 6.5,-20.5 +- proto: HoloprojectorSecurity + entities: + - uid: 2361 + components: + - type: Transform + parent: 2 + pos: 7.5865355,3.9855292 +- proto: JetInjector + entities: + - uid: 1847 + components: + - type: Transform + parent: 2 + pos: 6.624418,-11.362892 +- proto: Jukebox + entities: + - uid: 2522 + components: + - type: Transform + parent: 2 + pos: 15.5,-8.5 +- proto: KitchenKnife + entities: + - uid: 1902 + components: + - type: Transform + parent: 2 + pos: 19.566994,-0.3685841 + - uid: 1938 + components: + - type: Transform + parent: 2 + pos: 11.266031,-20.387373 +- proto: KitchenMicrowave + entities: + - uid: 135 + components: + - type: Transform + parent: 2 + pos: 19.5,0.5 +- proto: LockerMedicineFilled + entities: + - uid: 1924 + components: + - type: Transform + parent: 2 + pos: 3.5,-11.5 +- proto: LockerPrisoner + entities: + - uid: 255 + components: + - type: Transform + parent: 2 + pos: 3.5,8.5 +- proto: LockerPrisoner2 + entities: + - uid: 2126 + components: + - type: Transform + parent: 2 + pos: 3.5,7.5 +- proto: LockerSecurityFilled + entities: + - uid: 1928 + components: + - type: Transform + parent: 2 + pos: 7.5,5.5 +- proto: LockerWallEvacRepairFilled + entities: + - uid: 280 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 9.5,-17.5 +- proto: LootSpawnerRandomCrateEngineering + entities: + - uid: 2194 + components: + - type: Transform + parent: 2 + pos: 16.5,-19.5 +- proto: LootSpawnerRandomCrateSecurity + entities: + - uid: 2191 + components: + - type: Transform + parent: 2 + pos: 17.5,-19.5 +- proto: MedicalBed + entities: + - uid: 1742 + components: + - type: Transform + parent: 2 + pos: 6.5,-13.5 + - uid: 1920 + components: + - type: Transform + parent: 2 + pos: 4.5,-13.5 + - uid: 2174 + components: + - type: Transform + parent: 2 + pos: 7.5,-13.5 + - uid: 2203 + components: + - type: Transform + parent: 2 + pos: 5.5,-13.5 +- proto: MedkitAdvancedFilled + entities: + - uid: 2407 + components: + - type: Transform + parent: 2 + pos: 4.6729627,-11.415012 +- proto: MedkitBruteFilled + entities: + - uid: 34 + components: + - type: Transform + parent: 2 + pos: 4.4265013,-11.289926 +- proto: MirrorModern + entities: + - uid: 319 + components: + - type: Transform + parent: 2 + pos: 17.5,-13.5 + - uid: 321 + components: + - type: Transform + parent: 2 + pos: 16.5,-13.5 +- proto: MonkeyCubeWrapped + entities: + - uid: 2199 + components: + - type: Transform + parent: 2 + pos: 9.454132,-21.902876 + - uid: 2202 + components: + - type: Transform + parent: 2 + pos: 11.933298,-20.558191 + - uid: 2380 + components: + - type: Transform + parent: 2 + pos: 9.752366,-20.929056 +- proto: NitrogenCanister + entities: + - uid: 2224 + components: + - type: Transform + parent: 2 + pos: 7.5,-22.5 +- proto: OxygenCanister + entities: + - uid: 2225 + components: + - type: Transform + parent: 2 + pos: 5.5,-22.5 +- proto: PaintingCafeTerraceAtNight + entities: + - uid: 183 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 18.5,-10.5 +- proto: PaintingEmpty + entities: + - uid: 2418 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 8.5,3.5 +- proto: PaintingSadClown + entities: + - uid: 2157 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 13.5,-19.5 +- proto: PaintingSleepingGypsy + entities: + - uid: 1831 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 18.5,-11.5 +- proto: PaintingTheKiss + entities: + - uid: 1922 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 7.5,-6.5 +- proto: PaintingTheSonOfMan + entities: + - uid: 2419 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 8.5,5.5 +- proto: Paper + entities: + - uid: 1776 + components: + - type: Transform + parent: 2 + pos: 5.503208,-1.4667416 + - type: Paper + content: >+ + [head=2] TRANSPORT AUTHORITY PENALTY NOTICE [/head] + + DOCUMENT NO: NT-2526-91743 + + TIME: 00:02 + + OPERATOR / LINE: Tram station + + + [head=3] + + 1. PASSENGER DETAILS[/head] + + • Full Name: ___________________ + + • Date of Birth: ___________________ + + • Address: ___________________ + + • ID Verified By: ___________________ + + [head=3] + + 2. OFFENSE DETAILS[/head] + + • Reason for Issue: Passenger was unable to present a valid ticket or validated transit pass upon inspection. + + • Location/Stop: Boarded at Command, inspected en route to Evacuation. + + [head=3] + + 3. FEE AMOUNT[/head] + + • Standard Fare Penalty: $1,000.00 (One Thousand Spesos). + + (Note: Fees may vary by jurisdiction; train and metro fines are typically $750, while bus violations are $1,000). + + + [head=3] + + 4. LEGAL & PAYMENT INFORMATION[/head] + + Please be advised that you must be in possession of a valid ticket prior to boarding Nanotrasen property transit. Traveling without a valid fare is a violation of the Transport Companies Act. + + • Payment Deadline: Payment must be received within 30 days of the date of issue. + + • How to Pay: Payments can be settled via your personal data assistant. Please reference Document No: NT-2526-91743. + + • Consequences of Non-Payment: Failure to pay within the deadline will result in an initial reminder fee of $250.00. Unpaid balances will be forwarded directly to the Nanotrasen debt collection agency, which may incur severe interest penalties and legal enforcement. + + [head=3] + + 5. RIGHT TO APPEAL[/head] + + If you believe this fee was issued in error, you have the right to file a dispute. Appeals must be submitted through our customer service portal within 14 days of issue. Providing false identity information is a security matter. + + Inspector Signature: ___________________ + + Passenger Signature: ___________________ + + - uid: 1780 + components: + - type: Transform + parent: 2 + pos: 5.669875,-1.5501328 + - type: Paper + content: >+ + [head=2] TRANSPORT AUTHORITY PENALTY NOTICE [/head] + + DOCUMENT NO: NT-2526-91743 + + TIME: 00:02 + + OPERATOR / LINE: Tram station + + + [head=3] + + 1. PASSENGER DETAILS[/head] + + • Full Name: ___________________ + + • Date of Birth: ___________________ + + • Address: ___________________ + + • ID Verified By: ___________________ + + [head=3] + + 2. OFFENSE DETAILS[/head] + + • Reason for Issue: Passenger was unable to present a valid ticket or validated transit pass upon inspection. + + • Location/Stop: Boarded at Command, inspected en route to Evacuation. + + [head=3] + + 3. FEE AMOUNT[/head] + + • Standard Fare Penalty: $1,000.00 (One Thousand Spesos). + + (Note: Fees may vary by jurisdiction; train and metro fines are typically $750, while bus violations are $1,000). + + + [head=3] + + 4. LEGAL & PAYMENT INFORMATION[/head] + + Please be advised that you must be in possession of a valid ticket prior to boarding Nanotrasen property transit. Traveling without a valid fare is a violation of the Transport Companies Act. + + • Payment Deadline: Payment must be received within 30 days of the date of issue. + + • How to Pay: Payments can be settled via your personal data assistant. Please reference Document No: NT-2526-91743. + + • Consequences of Non-Payment: Failure to pay within the deadline will result in an initial reminder fee of $250.00. Unpaid balances will be forwarded directly to the Nanotrasen debt collection agency, which may incur severe interest penalties and legal enforcement. + + [head=3] + + 5. RIGHT TO APPEAL[/head] + + If you believe this fee was issued in error, you have the right to file a dispute. Appeals must be submitted through our customer service portal within 14 days of issue. Providing false identity information is a security matter. + + Inspector Signature: ___________________ + + Passenger Signature: ___________________ + +- proto: Pen + entities: + - uid: 277 + components: + - type: Transform + parent: 2 + pos: 6.0989494,-1.4632909 + - uid: 2310 + components: + - type: Transform + parent: 2 + pos: 1.399867,-4.522903 +- proto: PlasmaWindowDirectional + entities: + - uid: 1841 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 7.5,-21.5 + - uid: 1842 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 5.5,-21.5 +- proto: PortableGeneratorPacman + entities: + - uid: 332 + components: + - type: Transform + parent: 2 + pos: 17.5,-17.5 +- proto: PortableScrubber + entities: + - uid: 1913 + components: + - type: Transform + parent: 2 + pos: 5.5,-20.5 +- proto: PosterLegitDoNotQuestion + entities: + - uid: 2382 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 6.5,-6.5 +- proto: PottedPlantRandom + entities: + - uid: 1820 + components: + - type: Transform + parent: 2 + pos: 9.5,6.5 + - uid: 1823 + components: + - type: Transform + parent: 2 + pos: 3.5,-6.5 + - uid: 1824 + components: + - type: Transform + parent: 2 + pos: 3.5,-3.5 + - uid: 2187 + components: + - type: Transform + parent: 2 + pos: 13.5,1.5 + - uid: 2404 + components: + - type: Transform + parent: 2 + pos: 9.5,-13.5 +- proto: PoweredDimSmallLight + entities: + - uid: 198 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 20.5,-15.5 + - uid: 1909 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 0.5,-14.5 + - uid: 1910 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 3.5,-15.5 + - uid: 2206 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 17.5,-22.5 + - uid: 2347 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 15.5,8.5 + - uid: 2391 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 1.09375,9.4214735 + anchored: False + - type: Physics + bodyType: Dynamic + - uid: 2426 + components: + - type: Transform + parent: 2 + pos: 10.5,-26.5 + - uid: 2563 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 15.5,-23.5 +- proto: Poweredlight + entities: + - uid: 278 + components: + - type: Transform + parent: 2 + pos: 3.5,-11.5 + - uid: 317 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 16.5,-15.5 + - uid: 322 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 19.5,-9.5 + - uid: 323 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 18.5,-4.5 + - uid: 325 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 2.5,-7.5 + - uid: 349 + components: + - type: Transform + parent: 2 + pos: 1.5,0.5 + - uid: 1834 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 7.5,-19.5 + - uid: 2158 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 13.5,7.5 + - uid: 2161 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 11.5,3.5 + - uid: 2162 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 15.5,4.5 + - uid: 2164 + components: + - type: Transform + parent: 2 + pos: 10.5,1.5 + - uid: 2165 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 8.5,-1.5 + - uid: 2166 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 8.5,-4.5 + - uid: 2171 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 17.5,4.5 + - uid: 2172 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 16.5,-12.5 + - uid: 2177 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 3.5,-1.5 + - uid: 2178 + components: + - type: Transform + parent: 2 + pos: 5.5,-15.5 + - uid: 2186 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 0.5,-9.5 + - uid: 2188 + components: + - type: Transform + parent: 2 + pos: 19.5,0.5 + - uid: 2197 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 3.5,5.5 + - uid: 2233 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 13.5,-9.5 + - uid: 2237 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 5.5,-3.5 + - uid: 2238 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 7.5,-13.5 + - uid: 2245 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 9.5,-13.5 + - uid: 2349 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 19.5,7.5 + - uid: 2358 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 6.5,-0.5 + - uid: 2369 + components: + - type: Transform + parent: 2 + pos: 14.5,0.5 + - uid: 2372 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 4.5,-8.5 + - uid: 2464 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 14.5,-12.5 + - uid: 2465 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 11.5,-18.5 + - uid: 2485 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 9.5,8.5 + - uid: 2486 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 7.5,7.5 + - uid: 2500 + components: + - type: Transform + parent: 2 + pos: 6.5,-7.5 +- proto: PoweredSmallLight + entities: + - uid: 272 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 17.5,-18.5 + - uid: 2309 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 13.5,-17.5 +- proto: PresentRandomInsane + entities: + - uid: 324 + components: + - type: Transform + parent: 2 + pos: 16.5,-12.5 +- proto: Rack + entities: + - uid: 2334 + components: + - type: Transform + parent: 2 + pos: 14.5,-22.5 +- proto: RadiumChemistryVial + entities: + - uid: 2554 + components: + - type: Transform + parent: 2 + pos: 11.668889,-21.00769 + - type: Solution + solution: + temperature: 293.15 + maxVol: 15 + reagents: + - ReagentId: Uranium + data: [] + Quantity: 15 + canReact: True + - type: PressurizedSolution + sprayFizzinessThresholdRoll: 0.2825334 +- proto: Railing + entities: + - uid: 1917 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 5.5,-18.5 + - uid: 1918 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 5.5,-20.5 +- proto: RandomArcade + entities: + - uid: 1855 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 14.5,-13.5 +- proto: RandomArtifactSpawner + entities: + - uid: 2192 + components: + - type: Transform + parent: 2 + pos: 15.5,-18.5 +- proto: RandomDrinkGlass + entities: + - uid: 1695 + components: + - type: Transform + parent: 2 + pos: 16.5,-0.5 + - uid: 1704 + components: + - type: Transform + parent: 2 + pos: 16.5,-6.5 + - uid: 1901 + components: + - type: Transform + parent: 2 + pos: 16.5,-3.5 +- proto: RandomDrinkSoda + entities: + - uid: 2556 + components: + - type: Transform + parent: 2 + pos: 4.5,-9.5 +- proto: RandomVendingDrinks + entities: + - uid: 1818 + components: + - type: Transform + parent: 2 + pos: 8.5,1.5 +- proto: RandomVendingSnacks + entities: + - uid: 1819 + components: + - type: Transform + parent: 2 + pos: 9.5,1.5 +- proto: SalvageMaterialCrateSpawner + entities: + - uid: 2190 + components: + - type: Transform + parent: 2 + pos: 16.5,-18.5 +- proto: ScrapGeneratorUraniumLeaking + entities: + - uid: 2317 + components: + - type: Transform + parent: 2 + pos: 12.5,-21.5 +- proto: ShardGlassUranium + entities: + - uid: 2381 + components: + - type: Transform + parent: 2 + pos: 11.231369,-21.608208 +- proto: ShuttleWindow + entities: + - uid: 4 + components: + - type: Transform + parent: 2 + pos: 0.5,-3.5 + - uid: 5 + components: + - type: Transform + parent: 2 + pos: 0.5,-4.5 + - uid: 6 + components: + - type: Transform + parent: 2 + pos: 0.5,-5.5 + - uid: 33 + components: + - type: Transform + parent: 2 + pos: 12.5,10.5 + - uid: 41 + components: + - type: Transform + parent: 2 + pos: 13.5,9.5 + - uid: 89 + components: + - type: Transform + parent: 2 + pos: 11.5,10.5 + - uid: 97 + components: + - type: Transform + parent: 2 + pos: 7.5,6.5 + - uid: 102 + components: + - type: Transform + parent: 2 + pos: 9.5,10.5 + - uid: 103 + components: + - type: Transform + parent: 2 + pos: 10.5,10.5 + - uid: 106 + components: + - type: Transform + parent: 2 + pos: 8.5,10.5 + - uid: 107 + components: + - type: Transform + parent: 2 + pos: 12.5,9.5 + - uid: 133 + components: + - type: Transform + parent: 2 + pos: 2.5,-11.5 + - uid: 148 + components: + - type: Transform + parent: 2 + pos: 2.5,-12.5 + - uid: 232 + components: + - type: Transform + parent: 2 + pos: 20.5,0.5 + - uid: 250 + components: + - type: Transform + parent: 2 + pos: 20.5,-1.5 + - uid: 257 + components: + - type: Transform + parent: 2 + pos: 20.5,-0.5 + - uid: 266 + components: + - type: Transform + parent: 2 + pos: 6.5,-23.5 + - uid: 290 + components: + - type: Transform + parent: 2 + pos: 2.5,-13.5 + - uid: 300 + components: + - type: Transform + parent: 2 + pos: 20.5,-9.5 + - uid: 301 + components: + - type: Transform + parent: 2 + pos: 20.5,-7.5 + - uid: 303 + components: + - type: Transform + parent: 2 + pos: 20.5,-8.5 + - uid: 1756 + components: + - type: Transform + parent: 2 + pos: 7.5,9.5 + - uid: 1837 + components: + - type: Transform + parent: 2 + pos: 6.5,-22.5 + - uid: 1838 + components: + - type: Transform + parent: 2 + pos: 6.5,-21.5 + - uid: 2222 + components: + - type: Transform + parent: 2 + pos: 12.5,-10.5 + - uid: 2255 + components: + - type: Transform + parent: 2 + pos: 5.5,6.5 + - uid: 2264 + components: + - type: Transform + parent: 2 + pos: 9.5,-10.5 + - uid: 2379 + components: + - type: Transform + parent: 2 + pos: 3.5,6.5 + - uid: 2446 + components: + - type: Transform + parent: 2 + pos: 2.5,8.5 + - uid: 2447 + components: + - type: Transform + parent: 2 + pos: 2.5,7.5 +- proto: SignalButton + entities: + - uid: 2363 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 15.5,-15.5 + - type: DeviceLinkSource + linkedPorts: + 81: + - - Pressed + - DoorBolt + - uid: 2364 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 15.5,-12.5 + - type: DeviceLinkSource + linkedPorts: + 36: + - - Pressed + - DoorBolt +- proto: SignAtmos + entities: + - uid: 2353 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 6.5,-21.5 +- proto: SignBar + entities: + - uid: 22 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 19.5,-6.5 +- proto: SignEVA + entities: + - uid: 2357 + components: + - type: Transform + parent: 2 + pos: 16.5,1.5 +- proto: SignGravity + entities: + - uid: 2388 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 4.5,-21.5 +- proto: SignKitchen + entities: + - uid: 283 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 19.5,-2.5 +- proto: SignMaterials + entities: + - uid: 2359 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 12.5,-15.5 +- proto: SignMedical + entities: + - uid: 264 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 8.5,-11.5 +- proto: SignNosmoking + entities: + - uid: 2553 + components: + - type: Transform + parent: 2 + pos: 4.5,-16.5 +- proto: SignRestroom + entities: + - uid: 2154 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 15.5,-13.5 +- proto: SignSecurity + entities: + - uid: 2213 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 7.5,1.5 +- proto: SignShipDock + entities: + - uid: 14 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -0.5,-10.5 + - uid: 56 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 2.5,9.5 + - uid: 265 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -0.5,-6.5 + - uid: 275 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -0.5,-2.5 + - uid: 276 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: -0.5,1.5 + - uid: 316 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 19.5,-14.5 + - uid: 2153 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 18.5,9.5 +- proto: Sink + entities: + - uid: 285 + components: + - type: Transform + parent: 2 + pos: 17.5,-14.5 + - uid: 320 + components: + - type: Transform + parent: 2 + pos: 16.5,-14.5 +- proto: SMESBasic + entities: + - uid: 1846 + components: + - type: Transform + parent: 2 + pos: 3.5,-19.5 + - uid: 2514 + components: + - type: Transform + parent: 2 + pos: 4.5,-19.5 +- proto: SmokeGrenade + entities: + - uid: 253 + components: + - type: Transform + parent: 2 + pos: 7.4316554,4.5459094 + - uid: 1932 + components: + - type: Transform + parent: 2 + pos: 7.361392,4.421079 +- proto: SodaDispenser + entities: + - uid: 298 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 19.5,-7.5 +- proto: SpawnMobMonkey + entities: + - uid: 2352 + components: + - type: Transform + parent: 2 + pos: 9.5,-20.5 + - uid: 2417 + components: + - type: Transform + parent: 2 + pos: 9.5,-23.5 +- proto: SpawnPointObserver + entities: + - uid: 2555 + components: + - type: Transform + parent: 2 + pos: 11.5,-4.5 +- proto: SpiderWeb + entities: + - uid: 2321 + components: + - type: Transform + parent: 2 + pos: 10.5,-20.5 +- proto: StasisBed + entities: + - uid: 260 + components: + - type: Transform + parent: 2 + pos: 7.5,-11.5 +- proto: StoolBar + entities: + - uid: 39 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 15.5,-6.5 + - uid: 40 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 15.5,-0.5 + - uid: 90 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 15.5,-1.5 + - uid: 248 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 15.5,-3.5 + - uid: 252 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 15.5,-7.5 + - uid: 254 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 15.5,-4.5 + - uid: 1849 + components: + - type: Transform + parent: 2 + pos: 14.5,-12.5 +- proto: SubstationBasic + entities: + - uid: 1865 + components: + - type: Transform + parent: 2 + pos: 8.5,-18.5 +- proto: SubstationWallBasic + entities: + - uid: 1892 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 14.5,6.5 +- proto: SuitStorageEVA + entities: + - uid: 216 + components: + - type: Transform + parent: 2 + pos: 17.5,6.5 + - uid: 217 + components: + - type: Transform + parent: 2 + pos: 16.5,2.5 + - uid: 218 + components: + - type: Transform + parent: 2 + pos: 17.5,4.5 + - uid: 2377 + components: + - type: Transform + parent: 2 + pos: 17.5,2.5 + - uid: 2378 + components: + - type: Transform + parent: 2 + pos: 16.5,4.5 +- proto: Syringe + entities: + - uid: 2408 + components: + - type: Transform + parent: 2 + pos: 6.110463,-11.373317 +- proto: Table + entities: + - uid: 43 + components: + - type: Transform + parent: 2 + pos: 19.5,0.5 + - uid: 150 + components: + - type: Transform + parent: 2 + pos: 19.5,-0.5 + - uid: 336 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 6.5,-15.5 + - uid: 337 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 6.5,-16.5 + - uid: 1791 + components: + - type: Transform + parent: 2 + pos: 4.5,-11.5 + - uid: 1844 + components: + - type: Transform + parent: 2 + pos: 5.5,-11.5 + - uid: 2155 + components: + - type: Transform + parent: 2 + pos: 6.5,-11.5 + - uid: 2385 + components: + - type: Transform + parent: 2 + pos: 17.5,-20.5 + - uid: 2448 + components: + - type: Transform + parent: 2 + pos: 9.5,8.5 +- proto: TableReinforced + entities: + - uid: 30 + components: + - type: Transform + parent: 2 + pos: 5.5,-1.5 + - uid: 160 + components: + - type: Transform + parent: 2 + pos: 6.5,-1.5 + - uid: 168 + components: + - type: Transform + parent: 2 + pos: 7.5,3.5 + - uid: 1929 + components: + - type: Transform + parent: 2 + pos: 7.5,4.5 +- proto: TableWood + entities: + - uid: 57 + components: + - type: Transform + parent: 2 + pos: 10.5,5.5 + - uid: 80 + components: + - type: Transform + parent: 2 + pos: 16.5,-1.5 + - uid: 92 + components: + - type: Transform + parent: 2 + pos: 9.5,5.5 + - uid: 141 + components: + - type: Transform + parent: 2 + pos: 16.5,-8.5 + - uid: 143 + components: + - type: Transform + parent: 2 + pos: 16.5,-6.5 + - uid: 144 + components: + - type: Transform + parent: 2 + pos: 16.5,-5.5 + - uid: 145 + components: + - type: Transform + parent: 2 + pos: 16.5,-7.5 + - uid: 146 + components: + - type: Transform + parent: 2 + pos: 16.5,-4.5 + - uid: 156 + components: + - type: Transform + parent: 2 + pos: 4.5,-9.5 + - uid: 167 + components: + - type: Transform + parent: 2 + pos: 16.5,-0.5 + - uid: 180 + components: + - type: Transform + parent: 2 + pos: 19.5,-8.5 + - uid: 197 + components: + - type: Transform + parent: 2 + pos: 16.5,-2.5 + - uid: 241 + components: + - type: Transform + parent: 2 + pos: 19.5,-7.5 + - uid: 1687 + components: + - type: Transform + parent: 2 + pos: 5.5,-9.5 + - uid: 2200 + components: + - type: Transform + parent: 2 + pos: 13.5,-12.5 + - uid: 2208 + components: + - type: Transform + parent: 2 + pos: 16.5,-3.5 + - uid: 2269 + components: + - type: Transform + parent: 2 + pos: 1.5,-4.5 +- proto: Thruster + entities: + - uid: 77 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 8.5,-25.5 + - uid: 86 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 9.5,-25.5 + - uid: 193 + components: + - type: Transform + parent: 2 + pos: 16.5,10.5 + - uid: 195 + components: + - type: Transform + parent: 2 + pos: 17.5,10.5 + - uid: 199 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 1.5,-18.5 + - uid: 292 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 19.5,-18.5 + - uid: 293 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 19.5,-19.5 + - uid: 310 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 19.5,-17.5 + - uid: 311 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 1.5,-17.5 + - uid: 312 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 1.5,-19.5 + - uid: 1685 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 12.5,-25.5 + - uid: 1753 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 11.5,-25.5 + - uid: 1758 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 1.5,2.5 + - uid: 1759 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 19.5,2.5 + - uid: 1762 + components: + - type: Transform + parent: 2 + pos: 3.5,10.5 + - uid: 1764 + components: + - type: Transform + parent: 2 + pos: 4.5,10.5 + - uid: 1765 + components: + - type: Transform + parent: 2 + pos: 15.5,10.5 + - uid: 1767 + components: + - type: Transform + parent: 2 + pos: 5.5,10.5 + - uid: 1801 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 19.5,3.5 + - uid: 2128 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 1.5,3.5 + - uid: 2330 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 1.5,4.5 + - uid: 2390 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 19.5,4.5 +- proto: ThrusterLarge + entities: + - uid: 1701 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 14.5,-26.5 + - uid: 1752 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 7.5,-26.5 +- proto: ToiletDirtyWaterFilled + entities: + - uid: 169 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 18.5,-15.5 +- proto: ToolboxElectricalFilled + entities: + - uid: 2386 + components: + - type: Transform + parent: 2 + pos: 17.491707,-20.389145 +- proto: ToolboxEmergencyFilled + entities: + - uid: 2383 + components: + - type: Transform + parent: 2 + pos: 14.443944,-22.25664 + - uid: 2384 + components: + - type: Transform + parent: 2 + pos: 14.589777,-22.49639 +- proto: TwoWayLever + entities: + - uid: 59 + components: + - type: Transform + parent: 2 + pos: 6.5,-0.5 + - type: DeviceLinkSource + linkedPorts: + 60: + - - Left + - Open + - - Right + - Open + - - Middle + - Close + 65: + - - Left + - Open + - - Right + - Open + - - Middle + - Close +- proto: VendingMachineBooze + entities: + - uid: 171 + components: + - type: Transform + parent: 2 + pos: 19.5,-9.5 + - uid: 221 + components: + - type: Transform + parent: 2 + pos: 9.5,3.5 +- proto: VendingMachineCigs + entities: + - uid: 1782 + components: + - type: Transform + parent: 2 + pos: 10.5,3.5 +- proto: VendingMachineClothing + entities: + - uid: 2362 + components: + - type: Transform + parent: 2 + pos: 6.5,-7.5 +- proto: VendingMachineEngivend + entities: + - uid: 2544 + components: + - type: Transform + parent: 2 + pos: 6.5,-19.5 +- proto: VendingMachineMedical + entities: + - uid: 1923 + components: + - type: Transform + parent: 2 + pos: 3.5,-13.5 +- proto: VendingMachinePride + entities: + - uid: 205 + components: + - type: Transform + parent: 2 + pos: 7.5,-7.5 +- proto: VendingMachineTankDispenserEVA + entities: + - uid: 1817 + components: + - type: Transform + parent: 2 + pos: 15.5,6.5 +- proto: VendingMachineYouTool + entities: + - uid: 189 + components: + - type: Transform + parent: 2 + pos: 6.5,-18.5 +- proto: WallShuttle + entities: + - uid: 3 + components: + - type: Transform + parent: 2 + pos: 0.5,-6.5 + - uid: 7 + components: + - type: Transform + parent: 2 + pos: 0.5,-2.5 + - uid: 8 + components: + - type: Transform + parent: 2 + pos: 0.5,1.5 + - uid: 10 + components: + - type: Transform + parent: 2 + pos: 10.5,2.5 + - uid: 13 + components: + - type: Transform + parent: 2 + pos: 0.5,-10.5 + - uid: 15 + components: + - type: Transform + parent: 2 + pos: 1.5,-10.5 + - uid: 16 + components: + - type: Transform + parent: 2 + pos: 1.5,1.5 + - uid: 18 + components: + - type: Transform + parent: 2 + pos: 2.5,1.5 + - uid: 20 + components: + - type: Transform + parent: 2 + pos: 16.5,9.5 + - uid: 21 + components: + - type: Transform + parent: 2 + pos: 4.5,-0.5 + - uid: 23 + components: + - type: Transform + parent: 2 + pos: 2.5,-10.5 + - uid: 24 + components: + - type: Transform + parent: 2 + pos: 3.5,-10.5 + - uid: 25 + components: + - type: Transform + parent: 2 + pos: 6.5,-6.5 + - uid: 26 + components: + - type: Transform + parent: 2 + pos: 5.5,-6.5 + - uid: 27 + components: + - type: Transform + parent: 2 + pos: 7.5,-6.5 + - uid: 29 + components: + - type: Transform + parent: 2 + pos: 4.5,-1.5 + - uid: 32 + components: + - type: Transform + parent: 2 + pos: 6.5,-10.5 + - uid: 35 + components: + - type: Transform + parent: 2 + pos: 4.5,-6.5 + - uid: 42 + components: + - type: Transform + parent: 2 + pos: 14.5,8.5 + - uid: 44 + components: + - type: Transform + parent: 2 + pos: 15.5,-10.5 + - uid: 51 + components: + - type: Transform + parent: 2 + pos: 16.5,-16.5 + - uid: 54 + components: + - type: Transform + parent: 2 + pos: 4.5,-10.5 + - uid: 61 + components: + - type: Transform + parent: 2 + pos: 4.5,-3.5 + - uid: 64 + components: + - type: Transform + parent: 2 + pos: 4.5,-2.5 + - uid: 69 + components: + - type: Transform + parent: 2 + pos: 18.5,3.5 + - uid: 70 + components: + - type: Transform + parent: 2 + pos: 18.5,2.5 + - uid: 71 + components: + - type: Transform + parent: 2 + pos: 18.5,1.5 + - uid: 72 + components: + - type: Transform + parent: 2 + pos: 19.5,-2.5 + - uid: 76 + components: + - type: Transform + parent: 2 + pos: 14.5,2.5 + - uid: 78 + components: + - type: Transform + parent: 2 + pos: 5.5,9.5 + - uid: 79 + components: + - type: Transform + parent: 2 + pos: 14.5,9.5 + - uid: 94 + components: + - type: Transform + parent: 2 + pos: 3.5,-0.5 + - uid: 95 + components: + - type: Transform + parent: 2 + pos: 18.5,-14.5 + - uid: 96 + components: + - type: Transform + parent: 2 + pos: 2.5,9.5 + - uid: 98 + components: + - type: Transform + parent: 2 + pos: 2.5,2.5 + - uid: 100 + components: + - type: Transform + parent: 2 + pos: 19.5,-3.5 + - uid: 101 + components: + - type: Transform + parent: 2 + pos: 17.5,7.5 + - uid: 104 + components: + - type: Transform + parent: 2 + pos: 3.5,1.5 + - uid: 111 + components: + - type: Transform + parent: 2 + pos: 17.5,9.5 + - uid: 113 + components: + - type: Transform + parent: 2 + pos: 15.5,9.5 + - uid: 115 + components: + - type: Transform + parent: 2 + pos: 4.5,9.5 + - uid: 116 + components: + - type: Transform + parent: 2 + pos: 15.5,7.5 + - uid: 117 + components: + - type: Transform + parent: 2 + pos: 14.5,7.5 + - uid: 118 + components: + - type: Transform + parent: 2 + pos: 14.5,6.5 + - uid: 119 + components: + - type: Transform + parent: 2 + pos: 3.5,9.5 + - uid: 120 + components: + - type: Transform + parent: 2 + pos: 18.5,9.5 + - uid: 122 + components: + - type: Transform + parent: 2 + pos: 18.5,7.5 + - uid: 123 + components: + - type: Transform + parent: 2 + pos: 18.5,6.5 + - uid: 124 + components: + - type: Transform + parent: 2 + pos: 18.5,5.5 + - uid: 125 + components: + - type: Transform + parent: 2 + pos: 18.5,4.5 + - uid: 126 + components: + - type: Transform + parent: 2 + pos: 14.5,3.5 + - uid: 128 + components: + - type: Transform + parent: 2 + pos: 14.5,4.5 + - uid: 132 + components: + - type: Transform + parent: 2 + pos: 7.5,-4.5 + - uid: 136 + components: + - type: Transform + parent: 2 + pos: 17.5,-10.5 + - uid: 138 + components: + - type: Transform + parent: 2 + pos: 7.5,-0.5 + - uid: 139 + components: + - type: Transform + parent: 2 + pos: 18.5,-10.5 + - uid: 142 + components: + - type: Transform + parent: 2 + pos: 16.5,-10.5 + - uid: 149 + components: + - type: Transform + parent: 2 + pos: 7.5,-1.5 + - uid: 153 + components: + - type: Transform + parent: 2 + pos: 18.5,-13.5 + - uid: 154 + components: + - type: Transform + parent: 2 + pos: 14.5,-10.5 + - uid: 158 + components: + - type: Transform + parent: 2 + pos: 8.5,8.5 + - uid: 159 + components: + - type: Transform + parent: 2 + pos: 7.5,-5.5 + - uid: 164 + components: + - type: Transform + parent: 2 + pos: 20.5,1.5 + - uid: 165 + components: + - type: Transform + parent: 2 + pos: 7.5,1.5 + - uid: 166 + components: + - type: Transform + parent: 2 + pos: 19.5,1.5 + - uid: 173 + components: + - type: Transform + parent: 2 + pos: 18.5,-12.5 + - uid: 174 + components: + - type: Transform + parent: 2 + pos: 19.5,-6.5 + - uid: 175 + components: + - type: Transform + parent: 2 + pos: 20.5,-2.5 + - uid: 176 + components: + - type: Transform + parent: 2 + pos: 2.5,-14.5 + - uid: 177 + components: + - type: Transform + parent: 2 + pos: 18.5,-11.5 + - uid: 178 + components: + - type: Transform + parent: 2 + pos: 17.5,-16.5 + - uid: 181 + components: + - type: Transform + parent: 2 + pos: 2.5,-17.5 + - uid: 184 + components: + - type: Transform + parent: 2 + pos: 19.5,-10.5 + - uid: 185 + components: + - type: Transform + parent: 2 + pos: 20.5,-10.5 + - uid: 186 + components: + - type: Transform + parent: 2 + pos: 5.5,-14.5 + - uid: 187 + components: + - type: Transform + parent: 2 + pos: 4.5,-14.5 + - uid: 188 + components: + - type: Transform + parent: 2 + pos: 3.5,-14.5 + - uid: 202 + components: + - type: Transform + parent: 2 + pos: 7.5,2.5 + - uid: 203 + components: + - type: Transform + parent: 2 + pos: 19.5,-4.5 + - uid: 225 + components: + - type: Transform + parent: 2 + pos: -0.5,-10.5 + - uid: 226 + components: + - type: Transform + parent: 2 + pos: -0.5,-8.5 + - uid: 227 + components: + - type: Transform + parent: 2 + pos: -0.5,-6.5 + - uid: 228 + components: + - type: Transform + parent: 2 + pos: -0.5,-2.5 + - uid: 229 + components: + - type: Transform + parent: 2 + pos: -0.5,-0.5 + - uid: 230 + components: + - type: Transform + parent: 2 + pos: -0.5,1.5 + - uid: 234 + components: + - type: Transform + parent: 2 + pos: 8.5,2.5 + - uid: 235 + components: + - type: Transform + parent: 2 + pos: 8.5,3.5 + - uid: 236 + components: + - type: Transform + parent: 2 + pos: 8.5,4.5 + - uid: 237 + components: + - type: Transform + parent: 2 + pos: 8.5,5.5 + - uid: 238 + components: + - type: Transform + parent: 2 + pos: 8.5,6.5 + - uid: 240 + components: + - type: Transform + parent: 2 + pos: 3.5,-9.5 + - uid: 242 + components: + - type: Transform + parent: 2 + pos: 11.5,-19.5 + - uid: 243 + components: + - type: Transform + parent: 2 + pos: 9.5,2.5 + - uid: 244 + components: + - type: Transform + parent: 2 + pos: 11.5,2.5 + - uid: 245 + components: + - type: Transform + parent: 2 + pos: 13.5,2.5 + - uid: 247 + components: + - type: Transform + parent: 2 + pos: 9.5,-19.5 + - uid: 249 + components: + - type: Transform + parent: 2 + pos: 10.5,-19.5 + - uid: 251 + components: + - type: Transform + parent: 2 + pos: 8.5,-14.5 + - uid: 258 + components: + - type: Transform + parent: 2 + pos: 13.5,-10.5 + - uid: 262 + components: + - type: Transform + parent: 2 + pos: 3.5,-7.5 + - uid: 267 + components: + - type: Transform + parent: 2 + pos: 5.5,-10.5 + - uid: 268 + components: + - type: Transform + parent: 2 + pos: 7.5,-10.5 + - uid: 269 + components: + - type: Transform + parent: 2 + pos: 15.5,-13.5 + - uid: 279 + components: + - type: Transform + parent: 2 + pos: 19.5,-5.5 + - uid: 281 + components: + - type: Transform + parent: 2 + pos: 20.5,-6.5 + - uid: 305 + components: + - type: Transform + parent: 2 + pos: 19.5,-15.5 + - uid: 306 + components: + - type: Transform + parent: 2 + pos: 19.5,-14.5 + - uid: 313 + components: + - type: Transform + parent: 2 + pos: 19.5,-16.5 + - uid: 352 + components: + - type: Transform + parent: 2 + pos: 1.5,-0.5 + - uid: 360 + components: + - type: Transform + parent: 2 + pos: 0.5,-0.5 + - uid: 1678 + components: + - type: Transform + parent: 2 + pos: 15.5,-16.5 + - uid: 1679 + components: + - type: Transform + parent: 2 + pos: 16.5,-13.5 + - uid: 1682 + components: + - type: Transform + parent: 2 + pos: 3.5,-8.5 + - uid: 1686 + components: + - type: Transform + parent: 2 + pos: 13.5,-20.5 + - uid: 1691 + components: + - type: Transform + parent: 2 + pos: 7.5,-14.5 + - uid: 1692 + components: + - type: Transform + parent: 2 + pos: 6.5,-14.5 + - uid: 1696 + components: + - type: Transform + parent: 2 + pos: 8.5,-19.5 + - uid: 1699 + components: + - type: Transform + parent: 2 + pos: 13.5,-15.5 + - uid: 1703 + components: + - type: Transform + parent: 2 + pos: 13.5,-21.5 + - uid: 1705 + components: + - type: Transform + parent: 2 + pos: 18.5,-16.5 + - uid: 1707 + components: + - type: Transform + parent: 2 + pos: 12.5,-19.5 + - uid: 1708 + components: + - type: Transform + parent: 2 + pos: 13.5,-19.5 + - uid: 1710 + components: + - type: Transform + parent: 2 + pos: 18.5,-17.5 + - uid: 1711 + components: + - type: Transform + parent: 2 + pos: 18.5,-18.5 + - uid: 1712 + components: + - type: Transform + parent: 2 + pos: 18.5,-19.5 + - uid: 1713 + components: + - type: Transform + parent: 2 + pos: 18.5,-20.5 + - uid: 1714 + components: + - type: Transform + parent: 2 + pos: 18.5,-21.5 + - uid: 1715 + components: + - type: Transform + parent: 2 + pos: 8.5,-20.5 + - uid: 1716 + components: + - type: Transform + parent: 2 + pos: 8.5,-21.5 + - uid: 1717 + components: + - type: Transform + parent: 2 + pos: 8.5,-22.5 + - uid: 1718 + components: + - type: Transform + parent: 2 + pos: 8.5,-23.5 + - uid: 1719 + components: + - type: Transform + parent: 2 + pos: 8.5,-24.5 + - uid: 1720 + components: + - type: Transform + parent: 2 + pos: 9.5,-24.5 + - uid: 1721 + components: + - type: Transform + parent: 2 + pos: 10.5,-24.5 + - uid: 1722 + components: + - type: Transform + parent: 2 + pos: 11.5,-24.5 + - uid: 1723 + components: + - type: Transform + parent: 2 + pos: 12.5,-24.5 + - uid: 1724 + components: + - type: Transform + parent: 2 + pos: 13.5,-24.5 + - uid: 1725 + components: + - type: Transform + parent: 2 + pos: 14.5,-24.5 + - uid: 1726 + components: + - type: Transform + parent: 2 + pos: 15.5,-24.5 + - uid: 1727 + components: + - type: Transform + parent: 2 + pos: 16.5,-24.5 + - uid: 1728 + components: + - type: Transform + parent: 2 + pos: 2.5,-16.5 + - uid: 1729 + components: + - type: Transform + parent: 2 + pos: 16.5,-22.5 + - uid: 1730 + components: + - type: Transform + parent: 2 + pos: 16.5,-21.5 + - uid: 1731 + components: + - type: Transform + parent: 2 + pos: 17.5,-21.5 + - uid: 1732 + components: + - type: Transform + parent: 2 + pos: 6.5,-24.5 + - uid: 1733 + components: + - type: Transform + parent: 2 + pos: 5.5,-24.5 + - uid: 1734 + components: + - type: Transform + parent: 2 + pos: 4.5,-24.5 + - uid: 1735 + components: + - type: Transform + parent: 2 + pos: 7.5,-24.5 + - uid: 1736 + components: + - type: Transform + parent: 2 + pos: 2.5,-21.5 + - uid: 1737 + components: + - type: Transform + parent: 2 + pos: 4.5,-21.5 + - uid: 1738 + components: + - type: Transform + parent: 2 + pos: 4.5,-22.5 + - uid: 1739 + components: + - type: Transform + parent: 2 + pos: 4.5,-23.5 + - uid: 1740 + components: + - type: Transform + parent: 2 + pos: 3.5,-21.5 + - uid: 1741 + components: + - type: Transform + parent: 2 + pos: 2.5,-20.5 + - uid: 1748 + components: + - type: Transform + parent: 2 + pos: 14.5,-15.5 + - uid: 1749 + components: + - type: Transform + parent: 2 + pos: 15.5,-15.5 + - uid: 1751 + components: + - type: Transform + parent: 2 + pos: 17.5,-13.5 + - uid: 1755 + components: + - type: Transform + parent: 2 + pos: 2.5,4.5 + - uid: 1781 + components: + - type: Transform + parent: 2 + pos: 2.5,3.5 + - uid: 1798 + components: + - type: Transform + parent: 2 + pos: 4.5,-16.5 + - uid: 1799 + components: + - type: Transform + parent: 2 + pos: 2.5,-18.5 + - uid: 1800 + components: + - type: Transform + parent: 2 + pos: 2.5,-19.5 + - uid: 1826 + components: + - type: Transform + parent: 2 + pos: 9.5,-14.5 + - uid: 1827 + components: + - type: Transform + parent: 2 + pos: 9.5,-15.5 + - uid: 1828 + components: + - type: Transform + parent: 2 + pos: 9.5,-17.5 + - uid: 1829 + components: + - type: Transform + parent: 2 + pos: 9.5,-18.5 + - uid: 1832 + components: + - type: Transform + parent: 2 + pos: 12.5,-15.5 + - uid: 1833 + components: + - type: Transform + parent: 2 + pos: 14.5,-21.5 + - uid: 1836 + components: + - type: Transform + parent: 2 + pos: 15.5,-12.5 + - uid: 1915 + components: + - type: Transform + parent: 2 + pos: 1.5,-16.5 + - uid: 1919 + components: + - type: Transform + parent: 2 + pos: 1.5,-14.5 + - uid: 1933 + components: + - type: Transform + parent: 2 + pos: 12.5,-18.5 + - uid: 1935 + components: + - type: Transform + parent: 2 + pos: 14.5,1.5 + - uid: 1936 + components: + - type: Transform + parent: 2 + pos: 12.5,-17.5 + - uid: 1941 + components: + - type: Transform + parent: 2 + pos: 13.5,-22.5 + - uid: 2041 + components: + - type: Transform + parent: 2 + pos: 8.5,9.5 + - uid: 2043 + components: + - type: Transform + parent: 2 + pos: 8.5,7.5 + - uid: 2044 + components: + - type: Transform + parent: 2 + pos: 6.5,9.5 + - uid: 2204 + components: + - type: Transform + parent: 2 + pos: 10.5,-25.5 + - uid: 2236 + components: + - type: Transform + parent: 2 + pos: 4.5,-7.5 + - uid: 2258 + components: + - type: Transform + parent: 2 + pos: 2.5,6.5 + - uid: 2260 + components: + - type: Transform + parent: 2 + pos: 8.5,-10.5 + - uid: 2315 + components: + - type: Transform + parent: 2 + pos: 12.5,-22.5 + - uid: 2316 + components: + - type: Transform + parent: 2 + pos: 11.5,-22.5 + - uid: 2365 + components: + - type: Transform + parent: 2 + pos: 17.5,1.5 + - uid: 2366 + components: + - type: Transform + parent: 2 + pos: 16.5,1.5 + - uid: 2389 + components: + - type: Transform + parent: 2 + pos: 2.5,5.5 + - uid: 2402 + components: + - type: Transform + parent: 2 + pos: 8.5,-11.5 + - uid: 2403 + components: + - type: Transform + parent: 2 + pos: 8.5,-13.5 + - uid: 2540 + components: + - type: Transform + parent: 2 + pos: 4.5,-15.5 +- proto: WallShuttleDiagonal + entities: + - uid: 282 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 1.5,-20.5 + - uid: 314 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 19.5,-20.5 + - uid: 1750 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 18.5,10.5 + - uid: 1754 + components: + - type: Transform + parent: 2 + pos: 2.5,10.5 + - uid: 1771 + components: + - type: Transform + parent: 2 + pos: 1.5,5.5 + - uid: 2141 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 19.5,5.5 + - uid: 2335 + components: + - type: Transform + parent: 2 + pos: 14.5,10.5 + - uid: 2360 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 6.5,10.5 + - uid: 2437 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 15.5,-25.5 + - uid: 2438 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 5.5,-25.5 +- proto: WaterCooler + entities: + - uid: 2210 + components: + - type: Transform + parent: 2 + pos: 12.5,-13.5 +- proto: WeaponCapacitorRecharger + entities: + - uid: 1930 + components: + - type: Transform + parent: 2 + pos: 7.5,3.5 +- proto: Windoor + entities: + - uid: 2205 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 16.5,-9.5 +- proto: WindoorBarLocked + entities: + - uid: 2221 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 16.5,0.5 +- proto: WindoorSecurityLocked + entities: + - uid: 1 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 5.5,-1.5 +- proto: WindowReinforcedDirectional + entities: + - uid: 1744 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 4.5,-18.5 + - uid: 1777 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 6.5,-1.5 + - uid: 2546 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 3.5,-18.5 +... diff --git a/Resources/Prototypes/Maps/tram2.yml b/Resources/Prototypes/Maps/tram2.yml index 6dde98eaac..20bff8167f 100644 --- a/Resources/Prototypes/Maps/tram2.yml +++ b/Resources/Prototypes/Maps/tram2.yml @@ -14,7 +14,7 @@ !type:NanotrasenNameGenerator prefixCreator: '14' - type: StationEmergencyShuttle - emergencyShuttlePath: /Maps/Shuttles/emergency_accordia.yml + emergencyShuttlePath: /Maps/Shuttles/emergency_tram.yml - type: StationJobs availableJobs: #service 13-15 From ea979d6b514db7d428c50c96a3a0e8f731cd39a1 Mon Sep 17 00:00:00 2001 From: Whatstone <166147148+whatston3@users.noreply.github.com> Date: Sun, 13 Sep 2026 15:47:52 +0000 Subject: [PATCH 131/197] Cleanup: Fix map job slot count comments, fix tram department listings (#45906) * map count, fix tram departments * infinite, not counted infinite, not counted infinite, not counted * consistent command order * fix Sushi ResearchAssistant entry typo oops * sushi: + overflow * SPACE * totals everywhere, "+ 0 late-join only" * Exo: increase total job count by 1 Forgot to compensate for the Psychologist * elkridge: comment passenger --- Resources/Prototypes/Maps/bagel.yml | 21 ++++++++------- Resources/Prototypes/Maps/box.yml | 21 ++++++++------- Resources/Prototypes/Maps/elkridge.yml | 21 ++++++++------- Resources/Prototypes/Maps/exo.yml | 21 ++++++++------- Resources/Prototypes/Maps/marathon.yml | 21 ++++++++------- Resources/Prototypes/Maps/packed.yml | 21 ++++++++------- Resources/Prototypes/Maps/plasma.yml | 21 ++++++++------- Resources/Prototypes/Maps/relic.yml | 29 +++++++++++---------- Resources/Prototypes/Maps/saltern.yml | 31 +++++++++++----------- Resources/Prototypes/Maps/snowball.yml | 21 ++++++++------- Resources/Prototypes/Maps/sushi.yml | 15 ++++++----- Resources/Prototypes/Maps/tram2.yml | 36 ++++++++++++++------------ 12 files changed, 146 insertions(+), 133 deletions(-) diff --git a/Resources/Prototypes/Maps/bagel.yml b/Resources/Prototypes/Maps/bagel.yml index 468823a03c..f3fd9e39e5 100644 --- a/Resources/Prototypes/Maps/bagel.yml +++ b/Resources/Prototypes/Maps/bagel.yml @@ -16,7 +16,8 @@ emergencyShuttlePath: /Maps/Shuttles/emergency_lox.yml - type: StationJobs availableJobs: - #command (7) + # TOTAL: 66 job slots + 0 late-join only + # Command (7) Captain: [ 1, 1 ] HeadOfPersonnel: [ 1, 1 ] HeadOfSecurity: [ 1, 1 ] @@ -24,7 +25,7 @@ ChiefEngineer: [ 1, 1 ] ResearchDirector: [ 1, 1 ] Quartermaster: [ 1, 1 ] - #service (8-11) + # Service (13) Bartender: [ 1, 1 ] Botanist: [ 2, 2 ] Chef: [ 2, 2 ] @@ -33,32 +34,32 @@ Librarian: [ 1, 1 ] ServiceWorker: [ 2, 2 ] Reporter: [ 2, 2 ] - #engineering (6-8) + # Engineering (8) AtmosphericTechnician: [ 2, 2 ] StationEngineer: [ 4, 4 ] TechnicalAssistant: [ 2, 2 ] - #medical (8-8) + # Medical (8) Chemist: [ 2, 2 ] MedicalDoctor: [ 3, 3 ] Paramedic: [ 1, 1 ] MedicalIntern: [ 2, 2 ] - #science (6-6) + # Science (6) Scientist: [ 4, 4 ] ResearchAssistant: [ 2, 2 ] - #security (9-10) + # Security (11) Warden: [ 1, 1 ] SecurityOfficer: [ 6, 6 ] Detective: [ 1, 1 ] SecurityCadet: [ 2, 2 ] Lawyer: [ 1, 1 ] - #supply (6) + # Supply (6) SalvageSpecialist: [ 3, 3 ] CargoTechnician: [ 3, 3 ] - #civilian (2-3 + overflow) - Passenger: [ -1, -1 ] #infinite, not counted + # Civilian (3 + overflow) + Passenger: [ -1, -1 ] # infinite, not counted Clown: [ 1, 1 ] Mime: [ 1, 1 ] Musician: [ 1, 1 ] - #silicon (3) + # Silicon (4) StationAi: [ 1, 1 ] Borg: [ 3, 3 ] diff --git a/Resources/Prototypes/Maps/box.yml b/Resources/Prototypes/Maps/box.yml index 0d5461bb62..e60640d9c0 100644 --- a/Resources/Prototypes/Maps/box.yml +++ b/Resources/Prototypes/Maps/box.yml @@ -16,7 +16,8 @@ emergencyShuttlePath: /Maps/Shuttles/emergency_box.yml - type: StationJobs availableJobs: - #command (7) + # TOTAL: 65 job slots + 0 late-join only + # Command (7) Captain: [ 1, 1 ] HeadOfPersonnel: [ 1, 1 ] HeadOfSecurity: [ 1, 1 ] @@ -24,7 +25,7 @@ ChiefEngineer: [ 1, 1 ] ResearchDirector: [ 1, 1 ] Quartermaster: [ 1, 1 ] - #service (8-10) + # Service (12) Bartender: [ 1, 1 ] Botanist: [ 2, 2 ] Chef: [ 2, 2 ] @@ -33,32 +34,32 @@ Librarian: [ 1, 1 ] ServiceWorker: [ 2, 2 ] Reporter: [ 1, 1 ] - #engineering (6-8) + # Engineering (8) AtmosphericTechnician: [ 2, 2 ] StationEngineer: [ 4, 4 ] TechnicalAssistant: [ 2, 2 ] - #medical (8-8) + # Medical (8) Chemist: [ 2, 2 ] MedicalDoctor: [ 3, 3 ] Paramedic: [ 1, 1 ] MedicalIntern: [ 2, 2 ] - #science (6-6) + # Science (6) Scientist: [ 4, 4 ] ResearchAssistant: [ 2, 2 ] - #security (10-11) + # Security (11) Warden: [ 1, 1 ] SecurityOfficer: [ 6, 6 ] Detective: [ 1, 1 ] SecurityCadet: [ 2, 2 ] Lawyer: [ 1, 1 ] - #supply (6) + # Supply (6) SalvageSpecialist: [ 3, 3 ] CargoTechnician: [ 3, 3 ] - #civilian (2-3 + overflow) - Passenger: [ -1, -1 ] #infinite, not counted + # Civilian (3 + overflow) + Passenger: [ -1, -1 ] # infinite, not counted Clown: [ 1, 1 ] Mime: [ 1, 1 ] Musician: [ 1, 1 ] - #silicon (3) + # Silicon (4) StationAi: [ 1, 1 ] Borg: [ 3, 3 ] diff --git a/Resources/Prototypes/Maps/elkridge.yml b/Resources/Prototypes/Maps/elkridge.yml index 16309d87b9..47dcb2c7ed 100644 --- a/Resources/Prototypes/Maps/elkridge.yml +++ b/Resources/Prototypes/Maps/elkridge.yml @@ -19,7 +19,8 @@ path: /Maps/Shuttles/cargo_elkridge.yml - type: StationJobs availableJobs: - #command (7) + # TOTAL: 59 job slots + 0 late-join only + # Command (7) Captain: [ 1, 1 ] HeadOfPersonnel: [ 1, 1 ] HeadOfSecurity: [ 1, 1 ] @@ -27,7 +28,7 @@ ChiefEngineer: [ 1, 1 ] ResearchDirector: [ 1, 1 ] Quartermaster: [ 1, 1 ] - #service 7-11 + # Service (11) Bartender: [ 1, 1 ] Botanist: [ 2, 2 ] Chef: [ 2, 2 ] @@ -36,33 +37,33 @@ Librarian: [ 1, 1 ] Reporter: [ 1, 1 ] ServiceWorker: [ 1, 1 ] - #engineering 7-8 + # Engineering (7) AtmosphericTechnician: [ 2, 2 ] StationEngineer: [ 3, 3 ] TechnicalAssistant: [ 2, 2 ] - #medical 7-9 + # Medical (9) Chemist: [ 2, 2 ] MedicalDoctor: [ 3, 3 ] MedicalIntern: [ 2, 2 ] Paramedic: [ 1, 1 ] Psychologist: [ 1, 1 ] - #science 5-6 + # Science (6) Scientist: [ 4, 4 ] ResearchAssistant: [ 2, 2 ] - #security 6-8 + # Security (9) Warden: [ 1, 1 ] SecurityOfficer: [ 4, 4 ] Detective: [ 1, 1 ] SecurityCadet: [ 2, 2 ] Lawyer: [ 1, 1 ] - #supply 4 + # Supply (4) SalvageSpecialist: [ 2, 2 ] CargoTechnician: [ 2, 2 ] - #civilian 2-3 + overflow - Passenger: [ -1, -1 ] + # Sivilian (3 + overflow) + Passenger: [ -1, -1 ] # infinite, not counted Clown: [ 1, 1 ] Mime: [ 1, 1 ] Musician: [ 1, 1 ] - #silicon 3 + # Silicon (3) StationAi: [ 1, 1 ] Borg: [ 2, 2 ] diff --git a/Resources/Prototypes/Maps/exo.yml b/Resources/Prototypes/Maps/exo.yml index 0931f375d6..c64fdb2eeb 100644 --- a/Resources/Prototypes/Maps/exo.yml +++ b/Resources/Prototypes/Maps/exo.yml @@ -18,7 +18,8 @@ path: /Maps/Shuttles/cargo_exo.yml - type: StationJobs availableJobs: - #command (7) + # TOTAL: 66 job slots + 0 late-join only + # Command (7) Captain: [ 1, 1 ] HeadOfPersonnel: [ 1, 1 ] HeadOfSecurity: [ 1, 1 ] @@ -26,7 +27,7 @@ ChiefEngineer: [ 1, 1 ] ResearchDirector: [ 1, 1 ] Quartermaster: [ 1, 1 ] - #service (8-10) + # Service (12) Bartender: [ 1, 1 ] Botanist: [ 2, 2 ] Chef: [ 2, 2 ] @@ -35,33 +36,33 @@ Librarian: [ 1, 1 ] ServiceWorker: [ 2, 2 ] Reporter: [ 1, 1 ] - #engineering (6-8) + # Engineering (8) AtmosphericTechnician: [ 2, 2 ] StationEngineer: [ 4, 4 ] TechnicalAssistant: [ 2, 2 ] - #medical (9-9) + # Medical (9) Chemist: [ 2, 2 ] MedicalDoctor: [ 3, 3 ] Paramedic: [ 1, 1 ] MedicalIntern: [ 2, 2 ] Psychologist: [ 1, 1 ] - #science (6-6) + # Science (6) Scientist: [ 4, 4 ] ResearchAssistant: [ 2, 2 ] - #security (10-11) + # Security (11) Warden: [ 1, 1 ] SecurityOfficer: [ 6, 6 ] Detective: [ 1, 1 ] SecurityCadet: [ 2, 2 ] Lawyer: [ 1, 1 ] - #supply (6) + # Supply (6) SalvageSpecialist: [ 3, 3 ] CargoTechnician: [ 3, 3 ] - #civilian (2-3 + overflow) - Passenger: [ -1, -1 ] #infinite, not counted + # Civilian (3 + overflow) + Passenger: [ -1, -1 ] # infinite, not counted Clown: [ 1, 1 ] Mime: [ 1, 1 ] Musician: [ 1, 1 ] - #silicon (3) + # Silicon (4) StationAi: [ 1, 1 ] Borg: [ 3, 3 ] diff --git a/Resources/Prototypes/Maps/marathon.yml b/Resources/Prototypes/Maps/marathon.yml index 15bc108f8f..21f0e051f2 100644 --- a/Resources/Prototypes/Maps/marathon.yml +++ b/Resources/Prototypes/Maps/marathon.yml @@ -16,7 +16,8 @@ emergencyShuttlePath: /Maps/Shuttles/emergency_rod.yml - type: StationJobs availableJobs: - #command (7) + # TOTAL: 64 job slots + 0 late-join only + # Command (7) Captain: [ 1, 1 ] HeadOfPersonnel: [ 1, 1 ] HeadOfSecurity: [ 1, 1 ] @@ -24,7 +25,7 @@ ChiefEngineer: [ 1, 1 ] ResearchDirector: [ 1, 1 ] Quartermaster: [ 1, 1 ] - #service (7-9) + # Service (11) Bartender: [ 1, 1 ] Botanist: [ 2, 2 ] Chef: [ 2, 2 ] @@ -32,32 +33,32 @@ Chaplain: [ 1, 1 ] Librarian: [ 1, 1 ] ServiceWorker: [ 2, 2 ] - #engineering (6-8) + # Engineering (8) AtmosphericTechnician: [ 2, 2 ] StationEngineer: [ 4, 4 ] TechnicalAssistant: [ 2, 2 ] - #medical (8-8) + # Medical (8) Chemist: [ 2, 2 ] MedicalDoctor: [ 3, 3 ] Paramedic: [ 1, 1 ] MedicalIntern: [ 2, 2 ] - #science (6-6) + # Science (6) Scientist: [ 4, 4 ] ResearchAssistant: [ 2, 2 ] - #security (10-11) + # Security (11) Warden: [ 1, 1 ] SecurityOfficer: [ 6, 6 ] Detective: [ 1, 1 ] SecurityCadet: [ 2, 2 ] Lawyer: [ 1, 1 ] - #supply (6) + # Supply (6) SalvageSpecialist: [ 3, 3 ] CargoTechnician: [ 3, 3 ] - #civilian (2-3 + overflow) - Passenger: [ -1, -1 ] #infinite, not counted + # Civilian (3 + overflow) + Passenger: [ -1, -1 ] # infinite, not counted Clown: [ 1, 1 ] Mime: [ 1, 1 ] Musician: [ 1, 1 ] - #silicon (3) + # Silicon (4) StationAi: [ 1, 1 ] Borg: [ 3, 3 ] diff --git a/Resources/Prototypes/Maps/packed.yml b/Resources/Prototypes/Maps/packed.yml index 82c9abec18..21f1da7004 100644 --- a/Resources/Prototypes/Maps/packed.yml +++ b/Resources/Prototypes/Maps/packed.yml @@ -18,7 +18,8 @@ emergencyShuttlePath: /Maps/Shuttles/emergency_crimson.yml - type: StationJobs availableJobs: - #command (7) + # TOTAL: 47 job slots + 0 late-join only + # Command (7) Captain: [ 1, 1 ] HeadOfPersonnel: [ 1, 1 ] HeadOfSecurity: [ 1, 1 ] @@ -26,39 +27,39 @@ ChiefEngineer: [ 1, 1 ] ResearchDirector: [ 1, 1 ] Quartermaster: [ 1, 1 ] - #service 7-7 + # Service (7) Bartender: [ 1, 1 ] Botanist: [ 2, 2 ] Chef: [ 1, 1 ] Janitor: [ 1, 1 ] Chaplain: [ 1, 1 ] ServiceWorker: [ 1, 1 ] - #engineering 6-6 + # Engineering (6) AtmosphericTechnician: [ 2, 2 ] StationEngineer: [ 3, 3 ] TechnicalAssistant: [ 1, 1 ] - #medical 7-7 + # Medical (7) Chemist: [ 2, 2 ] MedicalDoctor: [ 2, 2 ] MedicalIntern: [ 2, 2 ] Paramedic: [ 1, 1 ] - #science 3-3 + # Science (3) Scientist: [ 2, 2 ] ResearchAssistant: [ 1, 1 ] - #security 4-7 + # Security (7) Warden: [ 1, 1 ] SecurityOfficer: [ 3, 3 ] Detective: [ 1, 1 ] SecurityCadet: [ 2, 2 ] Lawyer: [ 1, 1 ] - #supply 4 + # Supply (4) SalvageSpecialist: [ 2, 2 ] CargoTechnician: [ 2, 2 ] - #civilian 2-3 + overflow - Passenger: [ -1, -1 ] + # Civilian (3 + overflow) + Passenger: [ -1, -1 ] # infinite, not counted Clown: [ 1, 1 ] Mime: [ 1, 1 ] Musician: [ 1, 1 ] - #silicon 3 + # Silicon (3) StationAi: [ 1, 1 ] Borg: [ 2, 2 ] diff --git a/Resources/Prototypes/Maps/plasma.yml b/Resources/Prototypes/Maps/plasma.yml index 3f34bd38ab..0e0697f587 100644 --- a/Resources/Prototypes/Maps/plasma.yml +++ b/Resources/Prototypes/Maps/plasma.yml @@ -19,7 +19,8 @@ path: /Maps/Shuttles/cargo_plasma.yml - type: StationJobs availableJobs: - #command (7) + # TOTAL: 61 job slots + 0 late-join only + # Command (7) Captain: [ 1, 1 ] HeadOfPersonnel: [ 1, 1 ] HeadOfSecurity: [ 1, 1 ] @@ -27,7 +28,7 @@ ChiefEngineer: [ 1, 1 ] ResearchDirector: [ 1, 1 ] Quartermaster: [ 1, 1 ] - #service 7-11 + # Service (11) Bartender: [ 1, 1 ] Botanist: [ 2, 2 ] Chef: [ 2, 2 ] @@ -36,33 +37,33 @@ Librarian: [ 1, 1 ] Reporter: [ 1, 1 ] ServiceWorker: [ 1, 1 ] - #engineering 7-8 + # Engineering (8) AtmosphericTechnician: [ 2, 2 ] StationEngineer: [ 4, 4 ] TechnicalAssistant: [ 2, 2 ] - #medical 7-9 + # Medical (9) Chemist: [ 2, 2 ] MedicalDoctor: [ 3, 3 ] MedicalIntern: [ 2, 2 ] Paramedic: [ 1, 1 ] Psychologist: [ 1, 1 ] - #science 5-6 + # Science (6) Scientist: [ 4, 4 ] ResearchAssistant: [ 2, 2 ] - #security 6-8 + # Security (9) Warden: [ 1, 1 ] SecurityOfficer: [ 4, 4 ] Detective: [ 1, 1 ] SecurityCadet: [ 2, 2 ] Lawyer: [ 1, 1 ] - #supply 4 + # Supply (5) SalvageSpecialist: [ 3, 3 ] CargoTechnician: [ 2, 2 ] - #civilian 2-3 + overflow - Passenger: [ -1, -1 ] + # Civilian (3 + overflow) + Passenger: [ -1, -1 ] # infinite, not counted Clown: [ 1, 1 ] Mime: [ 1, 1 ] Musician: [ 1, 1 ] - #silicon 3 + # Silicon (3) StationAi: [ 1, 1 ] Borg: [ 2, 2 ] diff --git a/Resources/Prototypes/Maps/relic.yml b/Resources/Prototypes/Maps/relic.yml index 93b126437f..4751241f11 100644 --- a/Resources/Prototypes/Maps/relic.yml +++ b/Resources/Prototypes/Maps/relic.yml @@ -30,35 +30,36 @@ - /Maps/Shuttles/trading_outpost.yml - type: StationJobs availableJobs: - #command (6) + # TOTAL: 29 job slots + 2 late-join only + # Command (6) Captain: [ 1, 1 ] HeadOfPersonnel: [ 1, 1 ] HeadOfSecurity: [ 1, 1 ] ChiefMedicalOfficer: [ 1, 1 ] ChiefEngineer: [ 1, 1 ] ResearchDirector: [ 1, 1 ] - #service (1) + # Service (1) Chaplain: [ 1, 1 ] - #engineering (4) + # Engineering (6) AtmosphericTechnician: [ 2, 2 ] StationEngineer: [ 2, 2 ] - TechnicalAssistant: [ 2, 2 ] #intern, not counted - #medical (4) + TechnicalAssistant: [ 2, 2 ] + # Medical (6) Chemist: [ 1, 1 ] MedicalDoctor: [ 2, 2 ] Paramedic: [ 1, 1 ] - MedicalIntern: [ 2, 2 ] #intern, not counted - #science (1 - 2) + MedicalIntern: [ 2, 2 ] + # Science (3-4) Scientist: [ 1, 2 ] - ResearchAssistant: [ 2, 2 ] #intern, not counted - #security (4 - 5) + ResearchAssistant: [ 2, 2 ] + # Security (6-7) Warden: [ 1, 1 ] SecurityOfficer: [ 1, 2 ] Detective: [ 1, 1 ] - SecurityCadet: [ 2, 2 ] #intern, not counted + SecurityCadet: [ 2, 2 ] Lawyer: [ 1, 1 ] - #supply (0) - #civilian (0+) - Passenger: [ -1, -1 ] #infinite, not counted - #silicon (1) + # Supply (0) + # Civilian (0 + overflow) + Passenger: [ -1, -1 ] # infinite, not counted + # Silicon (1) StationAi: [ 1, 1 ] diff --git a/Resources/Prototypes/Maps/saltern.yml b/Resources/Prototypes/Maps/saltern.yml index 0d4cff9790..d9283b82e1 100644 --- a/Resources/Prototypes/Maps/saltern.yml +++ b/Resources/Prototypes/Maps/saltern.yml @@ -15,8 +15,9 @@ !type:NanotrasenNameGenerator prefixCreator: '14' - type: StationJobs - availableJobs: # 45 jobs total w/o latejoins & interns, 62 jobs total w/ latejoins & interns - #command (7) + availableJobs: + # TOTAL: 57 job slots + 3 late-join only + # Command (7) Captain: [ 1, 1 ] HeadOfPersonnel: [ 1, 1 ] HeadOfSecurity: [ 1, 1 ] @@ -24,7 +25,7 @@ ChiefEngineer: [ 1, 1 ] ResearchDirector: [ 1, 1 ] Quartermaster: [ 1, 1 ] - #service (8 - 9) + # Service (8 - 9) Bartender: [ 1, 1 ] Botanist: [ 1, 2 ] Chef: [ 1, 1 ] @@ -32,30 +33,30 @@ Chaplain: [ 1, 1 ] Librarian: [ 1, 1 ] ServiceWorker: [ 2, 2 ] - #engineering (6) + # Engineering (8) AtmosphericTechnician: [ 2, 2 ] StationEngineer: [ 4, 4 ] - TechnicalAssistant: [ 4, 4 ] #intern, not counted - #medical (6) + TechnicalAssistant: [ 4, 4 ] + # Medical (10) Chemist: [ 2, 2 ] MedicalDoctor: [ 3, 3 ] - MedicalIntern: [ 4, 4 ] #intern, not counted + MedicalIntern: [ 4, 4 ] Paramedic: [ 1, 1 ] - #science (4) + # Science (6) Scientist: [ 4, 4 ] - ResearchAssistant: [ 2, 2 ] #intern, not counted - #security (6) + ResearchAssistant: [ 2, 2 ] + # Security (10) Warden: [ 1, 1 ] Detective: [ 1, 1 ] SecurityOfficer: [ 4, 4 ] - SecurityCadet: [ 4, 4 ] #intern, not counted - #supply (3 - 5) + SecurityCadet: [ 4, 4 ] + # Supply (3-5) SalvageSpecialist: [ 1, 3 ] CargoTechnician: [ 2, 2 ] - #civilian (3+) - Passenger: [ -1, -1 ] #infinite, not counted + # Civilian (3 + overflow) + Passenger: [ -1, -1 ] # infinite, not counted Clown: [ 1, 1 ] Mime: [ 1, 1 ] Musician: [ 1, 1 ] - #silicon (2) + # Silicon (2) Borg: [ 2, 2 ] diff --git a/Resources/Prototypes/Maps/snowball.yml b/Resources/Prototypes/Maps/snowball.yml index 5db8187289..7f8e72b259 100644 --- a/Resources/Prototypes/Maps/snowball.yml +++ b/Resources/Prototypes/Maps/snowball.yml @@ -17,7 +17,8 @@ emergencyShuttlePath: /Maps/Shuttles/emergency_rod.yml - type: StationJobs availableJobs: - #command (7) + # TOTAL: 53 job slots + 1 late-join only + # Command (7) Captain: [ 1, 1 ] HeadOfPersonnel: [ 1, 1 ] HeadOfSecurity: [ 1, 1 ] @@ -25,7 +26,7 @@ ChiefEngineer: [ 1, 1 ] ResearchDirector: [ 1, 1 ] Quartermaster: [ 1, 1 ] - #service 6-10 + # Service (8-9) Bartender: [ 1, 1 ] Botanist: [ 2, 2 ] Chef: [ 1, 1 ] @@ -33,32 +34,32 @@ Chaplain: [ 1, 1 ] Librarian: [ 1, 1 ] ServiceWorker: [ 1, 1 ] - #engineering 7-8 + # Engineering (7) AtmosphericTechnician: [ 2, 2 ] StationEngineer: [ 3, 3 ] TechnicalAssistant: [ 2, 2 ] - #medical 7-9 + # Medical (8) Chemist: [ 2, 2 ] MedicalDoctor: [ 3, 3 ] MedicalIntern: [ 2, 2 ] Paramedic: [ 1, 1 ] - #science 5-6 + # Science (5) Scientist: [ 3, 3 ] ResearchAssistant: [ 2, 2 ] - #security 6-8 + # Security (8) Warden: [ 1, 1 ] SecurityOfficer: [ 3, 3 ] Detective: [ 1, 1 ] SecurityCadet: [ 2, 2 ] Lawyer: [ 1, 1 ] - #supply 4 + # Supply (4) SalvageSpecialist: [ 2, 2 ] CargoTechnician: [ 2, 2 ] - #civilian 2-3 + overflow - Passenger: [ -1, -1 ] + # Civilian (3 + overflow) + Passenger: [ -1, -1 ] # infinite, not counted Clown: [ 1, 1 ] Mime: [ 1, 1 ] Musician: [ 1, 1 ] - #silicon 3 + # Silicon (3) StationAi: [ 1, 1 ] Borg: [ 2, 2 ] diff --git a/Resources/Prototypes/Maps/sushi.yml b/Resources/Prototypes/Maps/sushi.yml index 661877df55..bfd7231054 100644 --- a/Resources/Prototypes/Maps/sushi.yml +++ b/Resources/Prototypes/Maps/sushi.yml @@ -16,6 +16,7 @@ emergencyShuttlePath: /Maps/Shuttles/emergency_sushi.yml - type: StationJobs availableJobs: + # TOTAL: 66 job slots + 0 late-join only # Command (7) Captain: [ 1, 1 ] HeadOfPersonnel: [ 1, 1 ] @@ -24,7 +25,7 @@ ChiefEngineer: [ 1, 1 ] ResearchDirector: [ 1, 1 ] Quartermaster: [ 1, 1 ] - # Service (11-13) + # Service (10) Bartender: [ 1, 1 ] Botanist: [ 2, 2 ] Chef: [ 2, 2 ] @@ -33,20 +34,20 @@ Librarian: [ 1, 1 ] Reporter: [ 1, 1 ] ServiceWorker: [ 1, 2 ] - # Engineering (7-9) + # Engineering (8) AtmosphericTechnician: [ 2, 2 ] StationEngineer: [ 4, 4 ] TechnicalAssistant: [ 2, 2 ] - # Medical (8-10) + # Medical (10) Chemist: [ 2, 2 ] MedicalDoctor: [ 4, 4 ] Paramedic: [ 1, 1 ] MedicalIntern: [ 2, 2 ] Psychologist: [ 1, 1 ] - # Science (4-6) + # Science (6) Scientist: [ 4, 4 ] ResearchAssistant: [ 2, 2 ] - # Security (9-11) + # Security (12) Warden: [ 1, 1 ] SecurityOfficer: [ 6, 6 ] Detective: [ 1, 1 ] @@ -55,8 +56,8 @@ # Supply (6) SalvageSpecialist: [ 3, 3 ] CargoTechnician: [ 3, 3 ] - # Civilian (3+) - Passenger: [ -1, -1 ] + # Civilian (3 + overflow) + Passenger: [ -1, -1 ] # infinite, not counted Clown: [ 1, 1 ] Mime: [ 1, 1 ] Musician: [ 1, 1 ] diff --git a/Resources/Prototypes/Maps/tram2.yml b/Resources/Prototypes/Maps/tram2.yml index 20bff8167f..21fa8686d1 100644 --- a/Resources/Prototypes/Maps/tram2.yml +++ b/Resources/Prototypes/Maps/tram2.yml @@ -17,9 +17,16 @@ emergencyShuttlePath: /Maps/Shuttles/emergency_tram.yml - type: StationJobs availableJobs: - #service 13-15 + # TOTAL: 67 job slots + 1 late-join only + # Command (7) Captain: [ 1, 1 ] HeadOfPersonnel: [ 1, 1 ] + HeadOfSecurity: [ 1, 1 ] + ChiefMedicalOfficer: [ 1, 1 ] + ChiefEngineer: [ 1, 1 ] + ResearchDirector: [ 1, 1 ] + Quartermaster: [ 1, 1 ] + # Service (12) Bartender: [ 1, 1 ] Botanist: [ 2, 2 ] Chef: [ 2, 2 ] @@ -27,40 +34,35 @@ Chaplain: [ 1, 1 ] Librarian: [ 1, 1 ] ServiceWorker: [ 1, 1 ] - Detective: [ 1, 2 ] + Reporter: [ 1, 1 ] TramDriver: [ 1, 1 ] - #engineering 9 - ChiefEngineer: [ 1, 1 ] + # Engineering (8) AtmosphericTechnician: [ 2, 2 ] StationEngineer: [ 4, 4 ] TechnicalAssistant: [ 2, 2 ] - #medical 10 - ChiefMedicalOfficer: [ 1, 1 ] + # Medical (10) Chemist: [ 2, 2 ] MedicalDoctor: [ 4, 4 ] MedicalIntern: [ 2, 2 ] Paramedic: [ 1, 1 ] - Psychologist: [1, 1] - #science 6 - ResearchDirector: [ 1, 1 ] + Psychologist: [ 1, 1 ] + # Science (6) Scientist: [ 4, 4 ] ResearchAssistant: [ 2, 2 ] - #security 8-9 - HeadOfSecurity: [ 1, 1 ] + # Security (11-12) Warden: [ 1, 1 ] SecurityOfficer: [ 6, 6 ] SecurityCadet: [ 2, 2 ] Lawyer: [ 1, 1 ] - #supply 6 - Quartermaster: [ 1, 1 ] + Detective: [ 1, 2 ] + # Supply (6) SalvageSpecialist: [ 3, 3 ] CargoTechnician: [ 3, 3 ] - #civilian 4+ - Passenger: [ -1, -1 ] + # Civilian (3 + overflow) + Passenger: [ -1, -1 ] # infinite, not counted Clown: [ 1, 1 ] Mime: [ 1, 1 ] Musician: [ 1, 1 ] - Reporter: [ 1, 1 ] - #silicon 3 + # Silicon (4) StationAi: [ 1, 1 ] Borg: [ 3, 3 ] From e320e83c5496da1324c53407c5e8dca96f9533f5 Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Sun, 13 Sep 2026 16:18:13 +0000 Subject: [PATCH 132/197] Exo: Fix the order console (#46009) Fix the order console --- Resources/Maps/exo.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Resources/Maps/exo.yml b/Resources/Maps/exo.yml index 6b7ba23741..5c115be5ef 100644 --- a/Resources/Maps/exo.yml +++ b/Resources/Maps/exo.yml @@ -48429,6 +48429,11 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 24.5,-87.5 + - type: DeviceLinkSource + linkedPorts: + 17301: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersEngineering entities: - uid: 5635 From 4afa06d5b4be4c553d974d3b2cb07c6448791ba6 Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> Date: Sun, 13 Sep 2026 18:36:20 -0700 Subject: [PATCH 133/197] [STABLE] Update Engine to v289.0.3 (#46015) grrrrr --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index edf061e745..36905986f6 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit edf061e7450a4074f173e3000bf1552b6f54082f +Subproject commit 36905986f6809420dbc78168fc494f91723d356b From 91cf10ac16807d3d168f96808c3baba5896d6a36 Mon Sep 17 00:00:00 2001 From: exo4ka <193421410+exo4ka@users.noreply.github.com> Date: Mon, 14 Sep 2026 16:17:42 +0300 Subject: [PATCH 134/197] Corvax maps tweaks (#3729) --- Resources/Maps/Corvax/corvax_cluster.yml | 77 ++++++----- Resources/Maps/Corvax/corvax_delta.yml | 57 ++++---- Resources/Maps/Corvax/corvax_omega.yml | 169 +++++++++++++---------- 3 files changed, 168 insertions(+), 135 deletions(-) diff --git a/Resources/Maps/Corvax/corvax_cluster.yml b/Resources/Maps/Corvax/corvax_cluster.yml index 742f7b9b94..dce0831b51 100644 --- a/Resources/Maps/Corvax/corvax_cluster.yml +++ b/Resources/Maps/Corvax/corvax_cluster.yml @@ -4,8 +4,8 @@ meta: engineVersion: 289.0.0 forkId: "" forkVersion: "" - time: 08/23/2026 09:11:21 - entityCount: 12753 + time: 09/14/2026 11:25:28 + entityCount: 12754 maps: - 12281 grids: @@ -13,7 +13,6 @@ grids: - 10949 orphans: [] nullspace: -- 12723 - 12724 - 12725 - 12726 @@ -44,6 +43,7 @@ nullspace: - 12751 - 12752 - 12753 +- 12754 tilemap: 0: Space 2: FloorArcadeBlue @@ -1445,7 +1445,6 @@ entities: - type: ExplosionAirtightGrid - type: ChunkContainer chunkEntities: - - 12723 - 12724 - 12725 - 12726 @@ -1476,6 +1475,7 @@ entities: - 12751 - 12752 - 12753 + - 12754 - type: TileHistory chunkHistory: {} - type: GridSplitNode @@ -23951,7 +23951,7 @@ entities: pos: -26.5,24.5 - proto: ChunkEntity entities: - - uid: 12723 + - uid: 12724 components: - type: ChunkEntity root: 1 @@ -24258,7 +24258,7 @@ entities: 2614: 27,21 2615: 27,20 2616: 27,19 - - uid: 12724 + - uid: 12725 components: - type: ChunkEntity root: 1 @@ -24662,7 +24662,7 @@ entities: 2688: 22.750717,9.677307 2689: 22.656967,9.521057 2690: 27.000717,5.786682 - - uid: 12725 + - uid: 12726 components: - type: ChunkEntity root: 1 @@ -24744,7 +24744,7 @@ entities: 1183: 20.983843,34.62477 1184: 19.968218,33.077896 1185: 23.34307,34.234146 - - uid: 12726 + - uid: 12727 components: - type: ChunkEntity root: 1 @@ -24857,7 +24857,7 @@ entities: color: '#F9801DFF' decals: 1114: 45,33 - - uid: 12727 + - uid: 12728 components: - type: ChunkEntity root: 1 @@ -25205,7 +25205,7 @@ entities: 227: 3,11 228: 3,9 229: 3,10 - - uid: 12728 + - uid: 12729 components: - type: ChunkEntity root: 1 @@ -25310,7 +25310,7 @@ entities: color: '#2BAF9D93' decals: 1234: 31,-19 - - uid: 12729 + - uid: 12730 components: - type: ChunkEntity root: 1 @@ -25524,7 +25524,7 @@ entities: 962: 14,-28 963: 12,-28 1028: 10,-28 - - uid: 12730 + - uid: 12731 components: - type: ChunkEntity root: 1 @@ -25804,7 +25804,7 @@ entities: 1942: -11,19 1943: -11.431358,19.09242 1944: -11.618858,19.233046 - - uid: 12731 + - uid: 12732 components: - type: ChunkEntity root: 1 @@ -26036,7 +26036,7 @@ entities: color: '#4B362BFF' decals: 2613: 15,22 - - uid: 12732 + - uid: 12733 components: - type: ChunkEntity root: 1 @@ -26320,7 +26320,7 @@ entities: 1398: -17,-16 1400: -18,-12 1401: -17,-12 - - uid: 12733 + - uid: 12734 components: - type: ChunkEntity root: 1 @@ -26537,7 +26537,7 @@ entities: decals: 74: -7,49 1089: -7,53 - - uid: 12734 + - uid: 12735 components: - type: ChunkEntity root: 1 @@ -26640,7 +26640,7 @@ entities: color: '#FFFFFFFF' decals: 128: -1,44 - - uid: 12735 + - uid: 12736 components: - type: ChunkEntity root: 1 @@ -26823,7 +26823,7 @@ entities: 1983: -17,21 1984: -17,20 1985: -17,19 - - uid: 12736 + - uid: 12737 components: - type: ChunkEntity root: 1 @@ -26995,7 +26995,7 @@ entities: 2351: 32,12 2352: 32,13 2353: 33,13 - - uid: 12737 + - uid: 12738 components: - type: ChunkEntity root: 1 @@ -27323,7 +27323,7 @@ entities: cleanable: True decals: 1978: -2.1235144,-2.16181 - - uid: 12738 + - uid: 12739 components: - type: ChunkEntity root: 1 @@ -27586,7 +27586,7 @@ entities: 1824: -27,8 1825: -27,6 1826: -26,5 - - uid: 12739 + - uid: 12740 components: - type: ChunkEntity root: 1 @@ -27788,7 +27788,7 @@ entities: color: '#D381C9FF' decals: 146: 1,51 - - uid: 12740 + - uid: 12741 components: - type: ChunkEntity root: 1 @@ -27839,7 +27839,7 @@ entities: decals: 1213: -12,-53 1214: -12,-54 - - uid: 12741 + - uid: 12742 components: - type: ChunkEntity root: 1 @@ -27893,7 +27893,7 @@ entities: decals: 1079: -44,-19 1080: -44,-20 - - uid: 12742 + - uid: 12743 components: - type: ChunkEntity root: 1 @@ -27948,7 +27948,7 @@ entities: 1471: -18,-28 1472: -18,-28 1473: -20,-25 - - uid: 12743 + - uid: 12744 components: - type: ChunkEntity root: 1 @@ -28049,7 +28049,7 @@ entities: color: '#FFFFFFFF' decals: 1062: -7,-27 - - uid: 12744 + - uid: 12745 components: - type: ChunkEntity root: 1 @@ -28262,7 +28262,7 @@ entities: decals: 850: 16,-4 1263: 17,-1 - - uid: 12745 + - uid: 12746 components: - type: ChunkEntity root: 1 @@ -28424,7 +28424,7 @@ entities: color: '#FFFFFFFF' decals: 1094: 44,30 - - uid: 12746 + - uid: 12747 components: - type: ChunkEntity root: 1 @@ -28732,7 +28732,7 @@ entities: decals: 237: -1,10 238: -1,11 - - uid: 12747 + - uid: 12748 components: - type: ChunkEntity root: 1 @@ -28975,7 +28975,7 @@ entities: decals: 1961: 1,-3 1973: 1,-6 - - uid: 12748 + - uid: 12749 components: - type: ChunkEntity root: 1 @@ -29051,7 +29051,7 @@ entities: color: '#EFB34196' decals: 1162: -2,-35 - - uid: 12749 + - uid: 12750 components: - type: ChunkEntity root: 1 @@ -29123,7 +29123,7 @@ entities: 1054: -40,21 1055: -40,22 1810: -40,23 - - uid: 12750 + - uid: 12751 components: - type: ChunkEntity root: 1 @@ -29150,7 +29150,7 @@ entities: 1411: -42,6 1412: -42,9 1413: -33,0 - - uid: 12751 + - uid: 12752 components: - type: ChunkEntity root: 1 @@ -29172,7 +29172,7 @@ entities: cleanable: True decals: 1476: 2,-34 - - uid: 12752 + - uid: 12753 components: - type: ChunkEntity root: 1 @@ -29213,7 +29213,7 @@ entities: color: '#2BAF9D93' decals: 1232: 33,-17 - - uid: 12753 + - uid: 12754 components: - type: ChunkEntity root: 1 @@ -69585,6 +69585,13 @@ entities: - type: Transform parent: 1 pos: 17.5,22.5 +- proto: SpawnPointWardenWeapon + entities: + - uid: 12723 + components: + - type: Transform + parent: 1 + pos: 17.5,23.5 - proto: SpawnVendingMachineRestockDrink entities: - uid: 3058 diff --git a/Resources/Maps/Corvax/corvax_delta.yml b/Resources/Maps/Corvax/corvax_delta.yml index bf2189e1b2..b0db6fb16d 100644 --- a/Resources/Maps/Corvax/corvax_delta.yml +++ b/Resources/Maps/Corvax/corvax_delta.yml @@ -4,7 +4,7 @@ meta: engineVersion: 289.0.0 forkId: "" forkVersion: "" - time: 08/23/2026 09:41:35 + time: 09/14/2026 11:02:03 entityCount: 41191 maps: - 1 @@ -13,15 +13,15 @@ grids: - 38569 orphans: [] nullspace: -- 25416 -- 25417 - 25418 - 25603 - 25604 - 25605 - 26761 - 27386 +- 27492 - 27494 +- 27764 - 29716 - 29718 - 29721 @@ -4484,15 +4484,15 @@ entities: - type: GridSplitNode - type: ChunkContainer chunkEntities: - - 25416 - - 25417 - 25418 - 25603 - 25604 - 25605 - 26761 - 27386 + - 27492 - 27494 + - 27764 - 29716 - 29718 - 29721 @@ -83746,7 +83746,7 @@ entities: pos: 63.66099,-25.833206 - proto: ChunkEntity entities: - - uid: 25416 + - uid: 25418 components: - type: ChunkEntity root: 2 @@ -84259,7 +84259,7 @@ entities: decals: 7095: 33,0 7125: 34,0 - - uid: 25417 + - uid: 25603 components: - type: ChunkEntity root: 2 @@ -84992,7 +84992,7 @@ entities: 20848: 5,24 20849: 7,24 20850: 8,24 - - uid: 25418 + - uid: 25604 components: - type: ChunkEntity root: 2 @@ -85151,7 +85151,7 @@ entities: color: '#FFFFFFFF' decals: 438: 0,-84 - - uid: 25603 + - uid: 25605 components: - type: ChunkEntity root: 2 @@ -85797,7 +85797,7 @@ entities: 11782: -16,-80 14444: -8,-78 14446: -3,-78 - - uid: 25604 + - uid: 26761 components: - type: ChunkEntity root: 2 @@ -86032,7 +86032,7 @@ entities: color: '#DABC8BFF' decals: 11783: -16,-81 - - uid: 25605 + - uid: 27386 components: - type: ChunkEntity root: 2 @@ -86723,7 +86723,7 @@ entities: 5692: -13,-4 5738: -10,-2 6084: -4,-12 - - uid: 26761 + - uid: 27492 components: - type: ChunkEntity root: 2 @@ -87354,7 +87354,7 @@ entities: 3977: -27,22 3981: -29,20 4014: -21,20 - - uid: 27386 + - uid: 27494 components: - type: ChunkEntity root: 2 @@ -87864,7 +87864,7 @@ entities: 5765: -16,9 5766: -16,10 5792: -3,13 - - uid: 27494 + - uid: 27764 components: - type: ChunkEntity root: 2 @@ -225603,14 +225603,6 @@ entities: pos: -50.5,37.5 - type: ApcPowerReceiver powerLoad: 0 - - uid: 27492 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: -17.5,5.5 - - type: ApcPowerReceiver - powerLoad: 0 - uid: 27493 components: - type: Transform @@ -228713,6 +228705,11 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: -63.5,-35.5 + - uid: 25417 + components: + - type: Transform + parent: 2 + pos: -15.5,5.5 - uid: 27734 components: - type: Transform @@ -228866,13 +228863,6 @@ entities: - type: Transform parent: 2 pos: -59.5,61.5 - - uid: 27764 - components: - - type: Transform - parent: 2 - pos: -15.5,5.5 - - type: ApcPowerReceiver - powerLoad: 0 - uid: 27765 components: - type: Transform @@ -245118,6 +245108,15 @@ entities: - type: Transform parent: 2 pos: 17.5,-22.5 +- proto: SignPlaque + entities: + - uid: 25416 + components: + - type: MetaData + desc: Старая доска почета, жаль, что доска слишком изношена, чтобы можно было её прочитать, кроме нескольких слов "no_mad" "Aurora" "Bollo" "DanTheSynth", вот только что означают эти слова, вы никогда не узнаете. + - type: Transform + parent: 2 + pos: -16.5,5.5 - proto: SignPrison entities: - uid: 30362 diff --git a/Resources/Maps/Corvax/corvax_omega.yml b/Resources/Maps/Corvax/corvax_omega.yml index c7f3f56472..64ab967f79 100644 --- a/Resources/Maps/Corvax/corvax_omega.yml +++ b/Resources/Maps/Corvax/corvax_omega.yml @@ -4,15 +4,14 @@ meta: engineVersion: 289.0.0 forkId: "" forkVersion: "" - time: 08/23/2026 09:03:14 - entityCount: 14249 + time: 09/12/2026 14:09:59 + entityCount: 14250 maps: - 473 grids: - 4812 orphans: [] nullspace: -- 12570 - 12656 - 12975 - 13076 @@ -54,6 +53,7 @@ nullspace: - 14247 - 14248 - 14249 +- 14250 tilemap: 0: Space 41: FloorArcadeBlue @@ -354,6 +354,11 @@ entities: moles: Oxygen: 27.225372 Nitrogen: 102.419266 + - temperature: 293.14975 + volume: 2500 + moles: + Oxygen: 21.824879 + Nitrogen: 82.10312 - temperature: 293.15 volume: 2500 moles: {} @@ -665,7 +670,8 @@ entities: -8,8: 0: 3292 -7,4: - 0: 32631 + 0: 16247 + 3: 16384 -7,5: 0: 65287 -7,6: @@ -874,13 +880,13 @@ entities: 1: 3584 0,12: 0: 8448 - 3: 2176 + 4: 2176 0,13: 0: 66 0,14: 0: 2180 1,12: - 3: 4352 + 4: 4352 0: 34944 1,14: 0: 28928 @@ -899,7 +905,7 @@ entities: 3,13: 0: 13107 4,12: - 3: 32 + 4: 32 0: 32768 4,13: 0: 25612 @@ -910,12 +916,12 @@ entities: -9,8: 0: 136 -8,9: - 3: 16 + 4: 16 0: 8 -9,9: - 3: 142 + 4: 142 -8,10: - 3: 3 + 4: 3 0: 3072 -7,9: 0: 17535 @@ -1186,12 +1192,12 @@ entities: 0: 65529 8,-8: 0: 62003 - 3: 128 + 4: 128 8,-7: 0: 65535 8,-6: 0: 15 - 3: 26368 + 4: 26368 8,-9: 0: 48112 9,-5: @@ -1201,7 +1207,7 @@ entities: 9,-8: 0: 36072 9,-7: - 3: 64 + 4: 64 9,-6: 0: 19584 10,-8: @@ -1397,11 +1403,11 @@ entities: -9,10: 0: 17 -12,4: - 3: 546 - 4: 2184 + 4: 546 + 5: 2184 -13,4: - 3: 2184 - 5: 546 + 4: 2184 + 6: 546 -12,5: 0: 1 1: 3856 @@ -1410,7 +1416,7 @@ entities: -11,5: 1: 272 -11,4: - 6: 546 + 7: 546 -11,7: 0: 35904 -11,3: @@ -1423,7 +1429,7 @@ entities: -10,6: 0: 238 -10,7: - 3: 1632 + 4: 1632 -10,3: 0: 61007 -13,0: @@ -1462,7 +1468,7 @@ entities: 0: 12288 -16,0: 1: 4369 - 3: 3276 + 4: 3276 -17,0: 1: 8930 -16,1: @@ -1472,19 +1478,19 @@ entities: 1: 43746 -16,2: 1: 13090 - 3: 34944 + 4: 34944 -17,2: 1: 34986 -16,3: 1: 58594 -15,0: - 3: 273 + 4: 273 0: 52428 -15,1: 0: 239 1: 61440 -15,2: - 3: 13104 + 4: 13104 1: 34952 -15,3: 1: 16120 @@ -1501,20 +1507,20 @@ entities: 0: 61166 -14,4: 1: 12561 - 3: 2184 + 4: 2184 -16,-2: 0: 1772 -16,-3: 0: 51200 -15,-3: 0: 4368 - 3: 1024 + 4: 1024 -15,-2: 0: 2295 -15,-1: - 3: 1 + 4: 1 -15,-4: - 3: 16384 + 4: 16384 -14,-2: 0: 61424 -14,-1: @@ -1524,7 +1530,7 @@ entities: -14,-3: 0: 61166 -14,-5: - 3: 27848 + 4: 27848 -16,-8: 1: 61440 -17,-8: @@ -1675,7 +1681,6 @@ entities: - type: GridSplitNode - type: ChunkContainer chunkEntities: - - 12570 - 12656 - 12975 - 13076 @@ -1717,6 +1722,7 @@ entities: - 14247 - 14248 - 14249 + - 14250 - proto: AcousticGuitarInstrument entities: - uid: 1755 @@ -29273,7 +29279,7 @@ entities: pos: -2.493187,-34.40246 - proto: ChunkEntity entities: - - uid: 12570 + - uid: 12656 components: - type: ChunkEntity root: 4812 @@ -29649,7 +29655,7 @@ entities: angle: 1.5707963267948966 rad decals: 721: -39,-3 - - uid: 12656 + - uid: 12975 components: - type: ChunkEntity root: 4812 @@ -29863,7 +29869,7 @@ entities: angle: -1.5707963267948966 rad decals: 405: 27,-31 - - uid: 12975 + - uid: 13076 components: - type: ChunkEntity root: 4812 @@ -30056,7 +30062,7 @@ entities: 2422: -60,9 2427: -60,1 2432: -61,2 - - uid: 13076 + - uid: 13088 components: - type: ChunkEntity root: 4812 @@ -30126,7 +30132,7 @@ entities: color: '#FFFFFFFF' decals: 2141: 34,-5 - - uid: 13088 + - uid: 13201 components: - type: ChunkEntity root: 4812 @@ -30199,7 +30205,7 @@ entities: 1924: 53,-1 1927: 51,-1 1928: 52,-1 - - uid: 13201 + - uid: 13202 components: - type: ChunkEntity root: 4812 @@ -30576,7 +30582,7 @@ entities: color: '#A88661FF' decals: 3446: -7,-7 - - uid: 13202 + - uid: 13203 components: - type: ChunkEntity root: 4812 @@ -30827,7 +30833,7 @@ entities: 3435: -19,-9 3436: -19,-8 3437: -19,-7 - - uid: 13203 + - uid: 13549 components: - type: ChunkEntity root: 4812 @@ -31089,7 +31095,7 @@ entities: 963: 7,26 964: 8,26 965: 9,26 - - uid: 13549 + - uid: 13744 components: - type: ChunkEntity root: 4812 @@ -31335,7 +31341,7 @@ entities: 928: 24,1 930: 22,5 3088: 22,7 - - uid: 13744 + - uid: 13749 components: - type: ChunkEntity root: 4812 @@ -31442,7 +31448,7 @@ entities: color: '#FFFFFFFF' decals: 1901: 26,16 - - uid: 13749 + - uid: 14219 components: - type: ChunkEntity root: 4812 @@ -31614,7 +31620,7 @@ entities: 214: 15,46 215: 14,46 216: 13,46 - - uid: 14219 + - uid: 14220 components: - type: ChunkEntity root: 4812 @@ -31808,7 +31814,7 @@ entities: decals: 417: 3,-22 418: 3,-21 - - uid: 14220 + - uid: 14221 components: - type: ChunkEntity root: 4812 @@ -32014,7 +32020,7 @@ entities: color: '#EFB34196' decals: 619: -18,11 - - uid: 14221 + - uid: 14222 components: - type: ChunkEntity root: 4812 @@ -32182,7 +32188,7 @@ entities: decals: 2960: -37,15 3077: -37,14 - - uid: 14222 + - uid: 14223 components: - type: ChunkEntity root: 4812 @@ -32291,7 +32297,7 @@ entities: 871: -53,-12 872: -54,-12 873: -55,-12 - - uid: 14223 + - uid: 14224 components: - type: ChunkEntity root: 4812 @@ -32340,7 +32346,7 @@ entities: 997: 35,-28 998: 35,-27 999: 35,-26 - - uid: 14224 + - uid: 14225 components: - type: ChunkEntity root: 4812 @@ -32489,7 +32495,7 @@ entities: decals: 799: 13.296297,-42.144028 800: 3.8275461,-36.737778 - - uid: 14225 + - uid: 14226 components: - type: ChunkEntity root: 4812 @@ -32504,7 +32510,7 @@ entities: color: '#FFFFFFFF' decals: 1896: 32,14 - - uid: 14226 + - uid: 14227 components: - type: ChunkEntity root: 4812 @@ -32519,7 +32525,7 @@ entities: color: '#FFFFFFFF' decals: 1897: 32,16 - - uid: 14227 + - uid: 14228 components: - type: ChunkEntity root: 4812 @@ -32569,7 +32575,7 @@ entities: cleanable: True decals: 2518: -50,-18 - - uid: 14228 + - uid: 14229 components: - type: ChunkEntity root: 4812 @@ -32676,7 +32682,7 @@ entities: color: '#FFFFFFFF' decals: 2795: 7,14 - - uid: 14229 + - uid: 14230 components: - type: ChunkEntity root: 4812 @@ -32929,7 +32935,7 @@ entities: color: '#DE3A3A96' decals: 2919: -28,16 - - uid: 14230 + - uid: 14231 components: - type: ChunkEntity root: 4812 @@ -33107,7 +33113,7 @@ entities: color: '#FFFFFFFF' decals: 3076: -37,16 - - uid: 14231 + - uid: 14232 components: - type: ChunkEntity root: 4812 @@ -33142,7 +33148,7 @@ entities: 3107: -28,32 3108: -27,32 3109: -26,32 - - uid: 14232 + - uid: 14233 components: - type: ChunkEntity root: 4812 @@ -33270,7 +33276,7 @@ entities: decals: 980: -8,0 981: -8,1 - - uid: 14233 + - uid: 14234 components: - type: ChunkEntity root: 4812 @@ -33426,7 +33432,7 @@ entities: 2805: -13,28 2806: -12,28 2807: -11,28 - - uid: 14234 + - uid: 14235 components: - type: ChunkEntity root: 4812 @@ -33536,7 +33542,7 @@ entities: 2572: 9,50 2573: 10,50 2574: 11,50 - - uid: 14235 + - uid: 14236 components: - type: ChunkEntity root: 4812 @@ -33637,7 +33643,7 @@ entities: cleanable: True decals: 1035: -44,-27 - - uid: 14236 + - uid: 14237 components: - type: ChunkEntity root: 4812 @@ -33861,7 +33867,7 @@ entities: decals: 970: -29,-17 971: -28,-17 - - uid: 14237 + - uid: 14238 components: - type: ChunkEntity root: 4812 @@ -34017,7 +34023,7 @@ entities: angle: 1.5707963267948966 rad decals: 1608: -13,-40 - - uid: 14238 + - uid: 14239 components: - type: ChunkEntity root: 4812 @@ -34049,7 +34055,7 @@ entities: 1020: -25,-37 1021: -24,-37 1022: -23,-37 - - uid: 14239 + - uid: 14240 components: - type: ChunkEntity root: 4812 @@ -34447,7 +34453,7 @@ entities: decals: 1272: -7,-23 1273: -7,-22 - - uid: 14240 + - uid: 14241 components: - type: ChunkEntity root: 4812 @@ -34524,7 +34530,7 @@ entities: 1350: -11,-53 1351: -11,-52 1352: -11,-51 - - uid: 14241 + - uid: 14242 components: - type: ChunkEntity root: 4812 @@ -34635,7 +34641,7 @@ entities: color: '#FFFFFFFF' decals: 953: 0,-13 - - uid: 14242 + - uid: 14243 components: - type: ChunkEntity root: 4812 @@ -34721,7 +34727,7 @@ entities: 645: -38,-36 646: -38,-35 647: -38,-34 - - uid: 14243 + - uid: 14244 components: - type: ChunkEntity root: 4812 @@ -34790,7 +34796,7 @@ entities: 2730: 29,-8 2731: 30,-8 2732: 31,-8 - - uid: 14244 + - uid: 14245 components: - type: ChunkEntity root: 4812 @@ -34835,7 +34841,7 @@ entities: decals: 883: 17,32 886: 17,35 - - uid: 14245 + - uid: 14246 components: - type: ChunkEntity root: 4812 @@ -34870,7 +34876,7 @@ entities: color: '#FFFFFFFF' decals: 1880: 53,0 - - uid: 14246 + - uid: 14247 components: - type: ChunkEntity root: 4812 @@ -34933,7 +34939,7 @@ entities: 1125: -6,32 1126: -6,33 1127: -7,33 - - uid: 14247 + - uid: 14248 components: - type: ChunkEntity root: 4812 @@ -34948,7 +34954,7 @@ entities: color: '#FFFFFFFF' decals: 1907: 66,-23 - - uid: 14248 + - uid: 14249 components: - type: ChunkEntity root: 4812 @@ -34972,7 +34978,7 @@ entities: cleanable: True decals: 861: 27.509422,-40.416092 - - uid: 14249 + - uid: 14250 components: - type: ChunkEntity root: 4812 @@ -66507,6 +66513,17 @@ entities: - type: Transform parent: 4812 pos: -25.5,19.5 + - type: ContainerContainer + containers: + entity_storage: !type:Container + ents: + - 12570 + showEnts: False + occludes: True + paper_label: !type:ContainerSlot + ent: null + showEnts: False + occludes: True - proto: LockerWeldingSuppliesFilled entities: - uid: 11898 @@ -91278,6 +91295,16 @@ entities: - type: Transform parent: 4812 pos: -37.57921,10.753048 +- proto: WeaponEnergyShotgun + entities: + - uid: 12570 + components: + - type: Transform + parent: 7820 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 7820 - proto: WeaponEnergyTurretAI entities: - uid: 12270 From 8cf722080e0328acede6fb00df8411e96cd22832 Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Mon, 14 Sep 2026 13:56:08 +0000 Subject: [PATCH 135/197] Fix grappling hook grid pulling not working (#46019) Initial commit --- Content.Shared/Weapons/Misc/SharedGrapplingGunSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Shared/Weapons/Misc/SharedGrapplingGunSystem.cs b/Content.Shared/Weapons/Misc/SharedGrapplingGunSystem.cs index 3656fab2fb..0b3c68dc6d 100644 --- a/Content.Shared/Weapons/Misc/SharedGrapplingGunSystem.cs +++ b/Content.Shared/Weapons/Misc/SharedGrapplingGunSystem.cs @@ -333,7 +333,7 @@ public abstract partial class SharedGrapplingGunSystem : VirtualController if (grapplerBodyB.Mass < BaseWeightMass) massFactorB *= grapplerBodyB.Mass / BaseWeightMass; - if (sameGrid && physicalHook != _transform.GetGrid(joint.BodyAUid)) + if (!sameGrid || sameGrid && physicalHook != _transform.GetGrid(joint.BodyAUid)) _physics.ApplyLinearImpulse(grapplerUidA, -targetDirection * massFactorA * grappling.ReelForce * frameTime, grapplerOffsetA, body: grapplerBodyA); _physics.ApplyLinearImpulse(grapplerUidB, targetDirection * massFactorB * grappling.ReelForce * frameTime, grapplerOffsetB, body: grapplerBodyB); From 1a8e576505565a0576c474a640da07f072f66255 Mon Sep 17 00:00:00 2001 From: TheShuEd <96445749+TheShuEd@users.noreply.github.com> Date: Mon, 14 Sep 2026 18:03:23 +0000 Subject: [PATCH 136/197] LitOnPowered & AmbientOnPowered update on init (#45995) * minor fix * Update LitOnPoweredSystem.cs --- Content.Server/Audio/AmbientSoundSystem.cs | 8 ++++++++ .../Light/EntitySystems/LitOnPoweredSystem.cs | 18 +++++++++--------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/Content.Server/Audio/AmbientSoundSystem.cs b/Content.Server/Audio/AmbientSoundSystem.cs index ea0409c725..9b2287f01f 100644 --- a/Content.Server/Audio/AmbientSoundSystem.cs +++ b/Content.Server/Audio/AmbientSoundSystem.cs @@ -8,13 +8,21 @@ namespace Content.Server.Audio; public sealed partial class AmbientSoundSystem : SharedAmbientSoundSystem { + [Dependency] private PowerReceiverSystem _powerReceiver = default!; + public override void Initialize() { base.Initialize(); + SubscribeLocalEvent(HandleMapInit); SubscribeLocalEvent(HandlePowerChange); SubscribeLocalEvent(HandlePowerSupply); } + private void HandleMapInit(EntityUid uid, AmbientOnPoweredComponent component, MapInitEvent args) + { + SetAmbience(uid, _powerReceiver.IsPowered(uid)); + } + private void HandlePowerSupply(EntityUid uid, AmbientOnPoweredComponent component, ref PowerNetBatterySupplyEvent args) { SetAmbience(uid, args.Supply); diff --git a/Content.Server/Light/EntitySystems/LitOnPoweredSystem.cs b/Content.Server/Light/EntitySystems/LitOnPoweredSystem.cs index 8acfe0ac76..eb6022006f 100644 --- a/Content.Server/Light/EntitySystems/LitOnPoweredSystem.cs +++ b/Content.Server/Light/EntitySystems/LitOnPoweredSystem.cs @@ -1,5 +1,4 @@ using Content.Server.Light.Components; -using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; using Content.Shared.Power; @@ -8,28 +7,29 @@ namespace Content.Server.Light.EntitySystems public sealed partial class LitOnPoweredSystem : EntitySystem { [Dependency] private SharedPointLightSystem _lights = default!; + [Dependency] private PowerReceiverSystem _powerReceiver = default!; public override void Initialize() { base.Initialize(); + SubscribeLocalEvent(OnMapInit); SubscribeLocalEvent(OnPowerChanged); SubscribeLocalEvent(OnPowerSupply); } + private void OnMapInit(EntityUid uid, LitOnPoweredComponent component, MapInitEvent args) + { + _lights.SetEnabled(uid, _powerReceiver.IsPowered(uid)); + } + private void OnPowerChanged(EntityUid uid, LitOnPoweredComponent component, ref PowerChangedEvent args) { - if (_lights.TryGetLight(uid, out var light)) - { - _lights.SetEnabled(uid, args.Powered, light); - } + _lights.SetEnabled(uid, args.Powered); } private void OnPowerSupply(EntityUid uid, LitOnPoweredComponent component, ref PowerNetBatterySupplyEvent args) { - if (_lights.TryGetLight(uid, out var light)) - { - _lights.SetEnabled(uid, args.Supply, light); - } + _lights.SetEnabled(uid, args.Supply); } } } From 71b88a4cdb8a266bbec39c106f5491eb149eeaea Mon Sep 17 00:00:00 2001 From: qwerltaz <69696513+qwerltaz@users.noreply.github.com> Date: Mon, 14 Sep 2026 21:03:17 +0000 Subject: [PATCH 137/197] fix tram evac power (#46020) --- Resources/Maps/Shuttles/emergency_tram.yml | 49 +++++++--------------- 1 file changed, 15 insertions(+), 34 deletions(-) diff --git a/Resources/Maps/Shuttles/emergency_tram.yml b/Resources/Maps/Shuttles/emergency_tram.yml index 6170b59bcf..3402846e75 100644 --- a/Resources/Maps/Shuttles/emergency_tram.yml +++ b/Resources/Maps/Shuttles/emergency_tram.yml @@ -1,11 +1,11 @@ meta: format: 7 category: Grid - engineVersion: 289.0.0 + engineVersion: 289.0.3 forkId: "" forkVersion: "" - time: 09/13/2026 13:03:42 - entityCount: 1195 + time: 09/14/2026 14:31:20 + entityCount: 1192 maps: [] grids: - 2 @@ -4782,23 +4782,23 @@ entities: pos: 14.5,-0.5 - type: AtmosPipeColor color: '#0335FCFF' -- proto: GeneratorRTG +- proto: GeneratorBasic15kW entities: - - uid: 1843 - components: - - type: Transform - parent: 2 - pos: 3.5,-20.5 - - uid: 1845 - components: - - type: Transform - parent: 2 - pos: 3.5,-18.5 - - uid: 1916 + - uid: 387 components: - type: Transform parent: 2 pos: 4.5,-18.5 + - uid: 388 + components: + - type: Transform + parent: 2 + pos: 3.5,-18.5 + - uid: 389 + components: + - type: Transform + parent: 2 + pos: 3.5,-20.5 - proto: GeneratorWallmountAPU entities: - uid: 2373 @@ -6159,25 +6159,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 19.5,-7.5 -- proto: SpawnMobMonkey - entities: - - uid: 2352 - components: - - type: Transform - parent: 2 - pos: 9.5,-20.5 - - uid: 2417 - components: - - type: Transform - parent: 2 - pos: 9.5,-23.5 -- proto: SpawnPointObserver - entities: - - uid: 2555 - components: - - type: Transform - parent: 2 - pos: 11.5,-4.5 - proto: SpiderWeb entities: - uid: 2321 From 194518142017c690a52e8f649943d5f2275bef81 Mon Sep 17 00:00:00 2001 From: Emisse <99158783+Emisse@users.noreply.github.com> Date: Mon, 14 Sep 2026 21:41:58 +0000 Subject: [PATCH 138/197] tram update (#46028) --- Resources/Maps/Shuttles/emergency_tram.yml | 817 ++++----- Resources/Maps/tram2.yml | 1919 +++++++++++++------- 2 files changed, 1611 insertions(+), 1125 deletions(-) diff --git a/Resources/Maps/Shuttles/emergency_tram.yml b/Resources/Maps/Shuttles/emergency_tram.yml index 3402846e75..32d3e5673b 100644 --- a/Resources/Maps/Shuttles/emergency_tram.yml +++ b/Resources/Maps/Shuttles/emergency_tram.yml @@ -4,8 +4,8 @@ meta: engineVersion: 289.0.3 forkId: "" forkVersion: "" - time: 09/14/2026 14:31:20 - entityCount: 1192 + time: 09/14/2026 21:03:12 + entityCount: 1193 maps: [] grids: - 2 @@ -27,6 +27,7 @@ tilemap: 4: FloorShuttleBlack 3: FloorSteel 7: FloorSteelMono + 18: FloorTechMaint2 6: FloorTechMaintDark 8: FloorWhite 13: FloorWhiteMini @@ -42,7 +43,7 @@ entities: - uid: 2 components: - type: MetaData - name: grid + name: Tram Evac - type: Transform parent: invalid pos: -0.59375,0.0785262 @@ -50,27 +51,27 @@ entities: chunks: 0,0: ind: 0,0 - tiles: CgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAoAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAGAAAAAAAACgAAAAAAAAYAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAABgAAAAAAAAoAAAAAAAAGAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAACwAAAAAAAAsAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAACgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAYAAAAAAAAKAAAAAAAABgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAsAAAAAAAALAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAoAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAGAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAALAAAAAAAACwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAsAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAACgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAAAAAAAAAAABEAAAAAAAARAAAAAAAAEQAAAAAAABEAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAAAAAAAAAARAAAAAAAAEQAAAAAAABEAAAAAAAARAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAABEAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== + tiles: CgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAoAAAAAAAACAAAAAAEAAgAAAAABAAAAAAAAAAAGAAAAAAAACgAAAAAAAAYAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAQAAAAAAAAIAAAAAAgAAAAAAAAAABgAAAAAAAAoAAAAAAAAGAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAACwAAAAAAAAsAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAACgAAAAAAAAEAAAAAAAACAAAAAAEAAAAAAAAAAAYAAAAAAAAKAAAAAAAABgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAsAAAAAAAALAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAoAAAAAAAABAAAAAAAAAgAAAAACAAAAAAAAAAAGAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAALAAAAAAAACwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAsAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAACgAAAAAAAAEAAAAAAAACAAAAAAEAAAAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAABEAAAAAAAARAAAAAAAAEQAAAAAAABEAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAABAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAARAAAAAAAAEQAAAAAAABEAAAAAAAARAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAABEAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAABAAIAAAAAAAACAAAAAAIAAgAAAAABAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAQABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAEAAgAAAAAAAAIAAAAAAQABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== version: 7 0,-1: ind: 0,-1 - tiles: AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAABAAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAsAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAMAAAAAAAAGAAAAAAAABgAAAAAAAAMAAAAAAAAGAAAAAAAABgAAAAAAAAMAAAAAAAALAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAABgAAAAAAAAYAAAAAAAADAAAAAAAABgAAAAAAAAYAAAAAAAADAAAAAAAACwAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAGAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAwAAAAAAAAYAAAAAAAAGAAAAAAAAAwAAAAAAAAYAAAAAAAAGAAAAAAAAAwAAAAAAAAsAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABgAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAMAAAAAAAAGAAAAAAAABgAAAAAAAAMAAAAAAAAGAAAAAAAABgAAAAAAAAMAAAAAAAALAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAYAAAAAAAADAAAAAAAABgAAAAAAAAYAAAAAAAADAAAAAAAABgAAAAAAAAYAAAAAAAADAAAAAAAACwAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAAGAAAAAAAAAwAAAAAAAAYAAAAAAAAGAAAAAAAAAwAAAAAAAAYAAAAAAAAGAAAAAAAAAwAAAAAAAAsAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAYAAAAAAAAGAAAAAAAAAAAAAAAAAAMAAAAAAAAGAAAAAAAABgAAAAAAAAMAAAAAAAAGAAAAAAAABgAAAAAAAAMAAAAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAADAAAAAAAABgAAAAAAAAYAAAAAAAADAAAAAAAABgAAAAAAAAYAAAAAAAADAAAAAAAACwAAAAAAAA== + tiles: AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAABAAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAgAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAEAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAsAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAMAAAAAAAAGAAAAAAAABgAAAAAAAAMAAAAAAAAGAAAAAAAABgAAAAAAAAMAAAAAAAALAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAABgAAAAAAAAYAAAAAAAADAAAAAAAABgAAAAAAAAYAAAAAAAADAAAAAAAACwAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAGAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAwAAAAAAAAYAAAAAAAAGAAAAAAAAAwAAAAAAAAYAAAAAAAAGAAAAAAAAAwAAAAAAAAsAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABgAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAMAAAAAAAAGAAAAAAAABgAAAAAAAAMAAAAAAAAGAAAAAAAABgAAAAAAAAMAAAAAAAALAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAoAAAAAAAADAAAAAAAABgAAAAAAAAYAAAAAAAADAAAAAAAABgAAAAAAAAYAAAAAAAADAAAAAAAACwAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAAKAAAAAAAAAwAAAAAAAAYAAAAAAAAGAAAAAAAAAwAAAAAAAAYAAAAAAAAGAAAAAAAAAwAAAAAAAAsAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAYAAAAAAAAGAAAAAAAAAAAAAAAAAAMAAAAAAAAGAAAAAAAABgAAAAAAAAMAAAAAAAAGAAAAAAAABgAAAAAAAAMAAAAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAADAAAAAAAABgAAAAAAAAYAAAAAAAADAAAAAAAABgAAAAAAAAYAAAAAAAADAAAAAAAACwAAAAAAAA== version: 7 1,0: ind: 1,0 - tiles: CQAAAAAAAAkAAAAAAAAJAAAAAAAACgAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== + tiles: CQAAAAAAAAkAAAAAAAAJAAAAAAAACgAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAACAAAAAAEAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAgAAAAACAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAACAAAAAAIAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAgABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAIAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAQACAAAAAAAAAgAAAAACAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== version: 7 1,-1: ind: 1,-1 - tiles: EAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACgAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAYAAAAAAAAJAAAAAAAACQAAAAAAAAoAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAGAAAAAAAACQAAAAAAAAkAAAAAAAAKAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABgAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAYAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAGAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABgAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAYAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAGAAAAAAAACQAAAAAAAAkAAAAAAAAKAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABgAAAAAAAAkAAAAAAAAJAAAAAAAACgAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== + tiles: EAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAIAAAAAAQABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAEAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAIAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAgAAAAABAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAIAAAAAAgABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACgAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAYAAAAAAAAJAAAAAAAACQAAAAAAAAoAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAGAAAAAAAACQAAAAAAAAkAAAAAAAAKAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABgAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAYAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAGAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABgAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAYAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAGAAAAAAAACQAAAAAAAAkAAAAAAAAKAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABgAAAAAAAAkAAAAAAAAJAAAAAAAACgAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== version: 7 0,-2: ind: 0,-2 - tiles: AQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAKAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAMAAAAAAAADAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAA== + tiles: AQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAEAAgAAAAACAAEAAAAAAAABAAAAAAAAAgAAAAACAAEAAAAAAAABAAAAAAAAAgAAAAABAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAIAAgAAAAABAAIAAAAAAQACAAAAAAEAAgAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAABAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAIAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAABAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAABAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAoAAAAAAAAKAAAAAAAAAQAAAAAAAAIAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAEAAAAAAAACAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAMAAAAAAAADAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAA== version: 7 1,-2: ind: 1,-2 - tiles: AQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== + tiles: AQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAACAAAAAAIAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAGAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAIAAAAAAQACAAAAAAIAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAQABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAACAAAAAAIAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAgAAAAABAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAIAAAAAAgABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAgABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== version: 7 -1,0: ind: -1,0 @@ -78,7 +79,7 @@ entities: version: 7 -1,-1: ind: -1,-1 - tiles: AQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAADAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAADAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAA== + tiles: AQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAADAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAQABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAABAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAADAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAA== version: 7 - type: Broadphase - type: Physics @@ -119,7 +120,12 @@ entities: immutable: True - temperature: 293.15 volume: 2500 - moles: {} + moles: + Oxygen: 6666.982 + - temperature: 293.15 + volume: 2500 + moles: + Nitrogen: 6666.982 tiles: 0,0: 0: 34831 @@ -142,7 +148,7 @@ entities: 0: 15 1: 3840 1,-1: - 0: 26214 + 0: 26350 2,0: 0: 57599 2,-1: @@ -194,7 +200,7 @@ entities: 1,-3: 0: 65295 1,-2: - 0: 26126 + 0: 30478 1,-5: 0: 61439 2,-4: @@ -204,7 +210,7 @@ entities: 2,-2: 0: 65535 2,-5: - 0: 64976 + 0: 64984 3,-4: 0: 30704 3,-3: @@ -238,7 +244,9 @@ entities: 1: 32768 1,-6: 0: 61440 - 2: 2730 + 2: 34 + 1: 2560 + 3: 136 1,-7: 1: 3776 2,-7: @@ -261,6 +269,7 @@ entities: - type: GasTileOverlay - type: ExplosionAirtightGrid - type: RadiationGridResistance + - type: GridSplitNode - proto: AirAlarm entities: - uid: 11 @@ -500,6 +509,39 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: -0.5,0.5 +- proto: AirlockGlass + entities: + - uid: 121 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 4.5,-4.5 + - uid: 127 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 4.5,-5.5 + - uid: 255 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 7.5,-3.5 + - uid: 410 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 7.5,-2.5 +- proto: AirlockHatchMaintenanceLocked + entities: + - uid: 401 + components: + - type: Transform + parent: 2 + pos: 11.5,-19.5 - proto: AirlockMedical entities: - uid: 2405 @@ -614,38 +656,30 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: -0.5,0.5 -- proto: AtmosFixBlockerMarker +- proto: AtmosFixNitrogenMarker entities: - uid: 73 - components: - - type: Transform - parent: 2 - pos: 5.5,-23.5 - - uid: 108 - components: - - type: Transform - parent: 2 - pos: 5.5,-22.5 - - uid: 109 - components: - - type: Transform - parent: 2 - pos: 5.5,-21.5 - - uid: 140 components: - type: Transform parent: 2 pos: 7.5,-22.5 - - uid: 147 + - uid: 404 components: - type: Transform parent: 2 pos: 7.5,-23.5 - - uid: 151 +- proto: AtmosFixOxygenMarker + entities: + - uid: 109 components: - type: Transform parent: 2 - pos: 7.5,-21.5 + pos: 5.5,-22.5 + - uid: 405 + components: + - type: Transform + parent: 2 + pos: 5.5,-23.5 - proto: BarSignWiggleRoom entities: - uid: 286 @@ -706,20 +740,6 @@ entities: - type: Transform parent: 2 pos: 17.5,-11.5 -- proto: BlastDoor - entities: - - uid: 60 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 4.5,-5.5 - - uid: 65 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 4.5,-4.5 - proto: BoardGameSpawner100 entities: - uid: 2193 @@ -1902,11 +1922,6 @@ entities: - type: Transform parent: 2 pos: 13.5,6.5 - - uid: 1896 - components: - - type: Transform - parent: 2 - pos: 14.5,6.5 - uid: 2428 components: - type: Transform @@ -2129,11 +2144,6 @@ entities: - type: Transform parent: 2 pos: 10.5,-14.5 - - uid: 1988 - components: - - type: Transform - parent: 2 - pos: 14.5,6.5 - uid: 1989 components: - type: Transform @@ -2553,6 +2563,42 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 19.5,-19.5 + - uid: 378 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 10.5,-21.5 + - uid: 402 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 11.5,-23.5 + - uid: 411 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 10.5,-23.5 + - uid: 415 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 12.5,-23.5 + - uid: 427 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 11.5,-21.5 + - uid: 428 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 11.5,-20.5 - uid: 1745 components: - type: Transform @@ -2627,16 +2673,6 @@ entities: - type: Transform parent: 2 pos: 18.5,8.5 - - uid: 2332 - components: - - type: Transform - parent: 2 - pos: 12.5,-23.5 - - uid: 2333 - components: - - type: Transform - parent: 2 - pos: 11.5,-23.5 - uid: 2387 components: - type: Transform @@ -2805,16 +2841,6 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 19.5,2.5 - - uid: 2517 - components: - - type: Transform - parent: 2 - pos: 10.5,-23.5 - - uid: 2518 - components: - - type: Transform - parent: 2 - pos: 9.5,-23.5 - uid: 2541 components: - type: Transform @@ -3185,15 +3211,6 @@ entities: decals: version: 1 nodes: - - node: - id: Arrows - color: '#FFFFFFFF' - angle: 1.5707963267948966 rad - decals: - 3: 6,-3 - 7: 2,-6 - 8: 2,-5 - 9: 6,-4 - node: id: BrickLineOverlayW color: '#52B4E996' @@ -3270,46 +3287,18 @@ entities: 23: 14,-13 24: 14,-14 25: 14,-15 - - node: - id: Delivery - color: '#FFFFFFFF' - decals: - 4: 4,-5 - 11: 4,-6 - node: id: WarnCornerSmallNE color: '#FFFFFFFF' decals: 2: 3,-7 - - node: - id: WarnCornerSmallSE - color: '#FFFFFFFF' - decals: - 0: 3,-4 - - node: - id: WarnCornerSmallSW - color: '#FFFFFFFF' - decals: - 1: 5,-4 - - node: - id: WarnLineE - color: '#FFFFFFFF' - decals: - 5: 3,-5 - 6: 3,-6 - - node: - id: WarnLineS - color: '#FFFFFFFF' - decals: - 10: 5,-6 - 12: 5,-5 - uid: 381 components: - type: ChunkEntity root: 2 chunk: 0,-2 - type: DecalChunk - maxDecalId: 34 + maxDecalId: 35 decals: version: 1 nodes: @@ -3320,6 +3309,8 @@ entities: 0: 15,-18 1: 15,-19 2: 15,-20 + 34: 10,-19 + 35: 10,-18 - node: id: BrickLineOverlayW color: '#EFB34196' @@ -3394,7 +3385,7 @@ entities: root: 2 chunk: 1,-2 - type: DecalChunk - maxDecalId: 9 + maxDecalId: 12 decals: version: 1 nodes: @@ -3408,6 +3399,9 @@ entities: 3: 17,-18 4: 17,-19 5: 17,-20 + 10: 17,-18 + 11: 17,-19 + 12: 17,-20 - node: id: ConcreteTrimLineE color: '#EFB34196' @@ -3504,6 +3498,13 @@ entities: 25: 3,3 27: 8,0 28: 8,1 + - node: + id: DeliveryGreyscale + color: '#FFFFFFFF' + angle: 1.5707963267948966 rad + decals: + 37: 4,6 + 38: 6,6 - node: id: MiniTileInnerOverlayNE color: '#334E6DC8' @@ -3527,11 +3528,16 @@ entities: 36: 3,0 - proto: ClosetEmergencyFilledRandom entities: - - uid: 1698 + - uid: 398 components: - type: Transform parent: 2 - pos: 10.5,-18.5 + pos: 7.5,-7.5 + - uid: 408 + components: + - type: Transform + parent: 2 + pos: 13.5,1.5 - uid: 1811 components: - type: Transform @@ -3549,11 +3555,11 @@ entities: pos: 15.5,8.5 - proto: ClosetFireFilled entities: - - uid: 1709 + - uid: 406 components: - type: Transform parent: 2 - pos: 10.5,-17.5 + pos: 9.5,-13.5 - uid: 1815 components: - type: Transform @@ -3564,14 +3570,20 @@ entities: - type: Transform parent: 2 pos: 13.5,-18.5 -- proto: ClosetWallEmergencyFilledRandom +- proto: ClothingBeltUtilityEngineering entities: - - uid: 2368 + - uid: 420 components: - type: Transform parent: 2 - rot: 3.141592653589793 rad - pos: 16.5,-10.5 + pos: 6.4888773,-15.524785 +- proto: ClothingHeadHatCone + entities: + - uid: 379 + components: + - type: Transform + parent: 2 + pos: 10.380353,-22.311043 - proto: Cobweb1 entities: - uid: 2201 @@ -3659,34 +3671,6 @@ entities: - type: Transform parent: 2 pos: 11.5,9.5 -- proto: CrateFilledSpawner - entities: - - uid: 163 - components: - - type: Transform - parent: 2 - pos: 15.5,-17.5 -- proto: CrateFunInstrumentsRandom - entities: - - uid: 379 - components: - - type: Transform - parent: 2 - pos: 17.5,-18.5 -- proto: CrateMaterialPlasma - entities: - - uid: 331 - components: - - type: Transform - parent: 2 - pos: 16.5,-17.5 -- proto: CratePermaEscapeSpawner - entities: - - uid: 378 - components: - - type: Transform - parent: 2 - pos: 15.5,-19.5 - proto: CrateServiceCooking entities: - uid: 2254 @@ -3804,35 +3788,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 3.5,-3.5 -- proto: EnergyGateAirtight - entities: - - uid: 121 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 7.5,-2.5 - - uid: 127 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 7.5,-3.5 -- proto: EnergyGateGenpopEnter - entities: - - uid: 2530 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 4.5,6.5 -- proto: EnergyGateGenpopLeave - entities: - - uid: 131 - components: - - type: Transform - parent: 2 - pos: 6.5,6.5 - proto: filingCabinetDrawerRandom entities: - uid: 1830 @@ -3851,7 +3806,6 @@ entities: - type: DeviceList devices: - 386 - - 273 - 350 - uid: 1689 components: @@ -3924,16 +3878,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 0.5,-2.5 -- proto: FirelockEdge - entities: - - uid: 273 - components: - - type: Transform - parent: 2 - pos: 5.5,-0.5 - - type: DeviceNetwork - deviceLists: - - 233 - proto: FirelockGlass entities: - uid: 263 @@ -4053,20 +3997,6 @@ entities: - type: Transform parent: 2 pos: 9.43617,8.72581 -- proto: GasMinerNitrogen - entities: - - uid: 1840 - components: - - type: Transform - parent: 2 - pos: 7.5,-23.5 -- proto: GasMinerOxygen - entities: - - uid: 1839 - components: - - type: Transform - parent: 2 - pos: 5.5,-23.5 - proto: GasMixerFlipped entities: - uid: 2229 @@ -4074,24 +4004,46 @@ entities: - type: Transform parent: 2 pos: 7.5,-20.5 + - type: GasMixer + targetPressure: 300 + inletTwoConcentration: 0.23000002 + inletOneConcentration: 0.77 + enabled: True - type: AtmosPipeColor color: '#0335FCFF' - proto: GasPassiveVent entities: - - uid: 2226 + - uid: 60 components: - type: Transform parent: 2 rot: 3.141592653589793 rad - pos: 5.5,-21.5 - - uid: 2227 + pos: 5.5,-22.5 + - uid: 65 components: - type: Transform parent: 2 rot: 3.141592653589793 rad - pos: 7.5,-21.5 + pos: 7.5,-22.5 + - uid: 416 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 17.5,-23.5 - proto: GasPipeBend entities: + - uid: 324 + components: + - type: Transform + parent: 2 + pos: 11.5,-17.5 + - uid: 331 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 9.5,-21.5 - uid: 334 components: - type: Transform @@ -4139,6 +4091,18 @@ entities: pos: 8.5,-3.5 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 399 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 11.5,-21.5 + - uid: 413 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 9.5,-23.5 - uid: 1954 components: - type: Transform @@ -4211,6 +4175,35 @@ entities: pos: 13.5,-14.5 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 147 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 11.5,-23.5 + - uid: 151 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 10.5,-23.5 + - uid: 163 + components: + - type: Transform + parent: 2 + pos: 9.5,-22.5 + - uid: 189 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 10.5,-21.5 + - uid: 280 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 11.5,-19.5 - uid: 333 components: - type: Transform @@ -4279,6 +4272,52 @@ entities: pos: 3.5,-5.5 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 392 + components: + - type: Transform + parent: 2 + pos: 7.5,-21.5 + - uid: 393 + components: + - type: Transform + parent: 2 + pos: 5.5,-21.5 + - uid: 400 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 11.5,-20.5 + - uid: 403 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 16.5,-23.5 + - uid: 419 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 12.5,-23.5 + - uid: 422 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 13.5,-23.5 + - uid: 423 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 15.5,-23.5 + - uid: 425 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 14.5,-23.5 - uid: 2151 components: - type: Transform @@ -4594,6 +4633,12 @@ entities: pos: 2.5,-5.5 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 414 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 11.5,-18.5 - uid: 2015 components: - type: Transform @@ -4663,6 +4708,20 @@ entities: pos: 11.5,-8.5 - type: AtmosPipeColor color: '#0335FCFF' +- proto: GasPort + entities: + - uid: 273 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 10.5,-17.5 + - uid: 409 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 10.5,-18.5 - proto: GasVentPump entities: - uid: 335 @@ -5024,13 +5083,6 @@ entities: - type: Transform parent: 2 pos: 6.624418,-11.362892 -- proto: Jukebox - entities: - - uid: 2522 - components: - - type: Transform - parent: 2 - pos: 15.5,-8.5 - proto: KitchenKnife entities: - uid: 1902 @@ -5038,11 +5090,6 @@ entities: - type: Transform parent: 2 pos: 19.566994,-0.3685841 - - uid: 1938 - components: - - type: Transform - parent: 2 - pos: 11.266031,-20.387373 - proto: KitchenMicrowave entities: - uid: 135 @@ -5057,20 +5104,6 @@ entities: - type: Transform parent: 2 pos: 3.5,-11.5 -- proto: LockerPrisoner - entities: - - uid: 255 - components: - - type: Transform - parent: 2 - pos: 3.5,8.5 -- proto: LockerPrisoner2 - entities: - - uid: 2126 - components: - - type: Transform - parent: 2 - pos: 3.5,7.5 - proto: LockerSecurityFilled entities: - uid: 1928 @@ -5078,28 +5111,6 @@ entities: - type: Transform parent: 2 pos: 7.5,5.5 -- proto: LockerWallEvacRepairFilled - entities: - - uid: 280 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 9.5,-17.5 -- proto: LootSpawnerRandomCrateEngineering - entities: - - uid: 2194 - components: - - type: Transform - parent: 2 - pos: 16.5,-19.5 -- proto: LootSpawnerRandomCrateSecurity - entities: - - uid: 2191 - components: - - type: Transform - parent: 2 - pos: 17.5,-19.5 - proto: MedicalBed entities: - uid: 1742 @@ -5148,37 +5159,20 @@ entities: - type: Transform parent: 2 pos: 16.5,-13.5 -- proto: MonkeyCubeWrapped - entities: - - uid: 2199 - components: - - type: Transform - parent: 2 - pos: 9.454132,-21.902876 - - uid: 2202 - components: - - type: Transform - parent: 2 - pos: 11.933298,-20.558191 - - uid: 2380 - components: - - type: Transform - parent: 2 - pos: 9.752366,-20.929056 - proto: NitrogenCanister entities: - - uid: 2224 + - uid: 108 components: - type: Transform parent: 2 - pos: 7.5,-22.5 + pos: 7.5,-23.5 - proto: OxygenCanister entities: - - uid: 2225 + - uid: 390 components: - type: Transform parent: 2 - pos: 5.5,-22.5 + pos: 5.5,-23.5 - proto: PaintingCafeTerraceAtNight entities: - uid: 183 @@ -5375,6 +5369,18 @@ entities: - type: Transform parent: 2 pos: 1.399867,-4.522903 +- proto: PlasmaReinforcedWindowDirectional + entities: + - uid: 59 + components: + - type: Transform + parent: 2 + pos: 5.5,-21.5 + - uid: 391 + components: + - type: Transform + parent: 2 + pos: 7.5,-21.5 - proto: PlasmaWindowDirectional entities: - uid: 1841 @@ -5389,20 +5395,18 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 5.5,-21.5 -- proto: PortableGeneratorPacman - entities: - - uid: 332 - components: - - type: Transform - parent: 2 - pos: 17.5,-17.5 - proto: PortableScrubber entities: - - uid: 1913 + - uid: 205 components: - type: Transform parent: 2 - pos: 5.5,-20.5 + pos: 10.5,-17.5 + - uid: 242 + components: + - type: Transform + parent: 2 + pos: 10.5,-18.5 - proto: PosterLegitDoNotQuestion entities: - uid: 2382 @@ -5428,16 +5432,6 @@ entities: - type: Transform parent: 2 pos: 3.5,-3.5 - - uid: 2187 - components: - - type: Transform - parent: 2 - pos: 13.5,1.5 - - uid: 2404 - components: - - type: Transform - parent: 2 - pos: 9.5,-13.5 - proto: PoweredDimSmallLight entities: - uid: 198 @@ -5697,52 +5691,45 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 13.5,-17.5 -- proto: PresentRandomInsane +- proto: PoweredWarmSmallLight entities: - - uid: 324 + - uid: 394 components: - type: Transform parent: 2 - pos: 16.5,-12.5 + pos: 10.5,-20.5 - proto: Rack entities: + - uid: 421 + components: + - type: Transform + parent: 2 + pos: 10.5,-22.5 - uid: 2334 components: - type: Transform parent: 2 pos: 14.5,-22.5 -- proto: RadiumChemistryVial +- proto: Railing entities: - - uid: 2554 + - uid: 407 components: - type: Transform parent: 2 - pos: 11.668889,-21.00769 - - type: Solution - solution: - temperature: 293.15 - maxVol: 15 - reagents: - - ReagentId: Uranium - data: [] - Quantity: 15 - canReact: True - - type: PressurizedSolution - sprayFizzinessThresholdRoll: 0.2825334 -- proto: Railing - entities: + rot: -1.5707963267948966 rad + pos: 5.5,-20.5 + - uid: 412 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 5.5,-19.5 - uid: 1917 components: - type: Transform parent: 2 rot: -1.5707963267948966 rad pos: 5.5,-18.5 - - uid: 1918 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 5.5,-20.5 - proto: RandomArcade entities: - uid: 1855 @@ -5751,13 +5738,6 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 14.5,-13.5 -- proto: RandomArtifactSpawner - entities: - - uid: 2192 - components: - - type: Transform - parent: 2 - pos: 15.5,-18.5 - proto: RandomDrinkGlass entities: - uid: 1695 @@ -5796,27 +5776,6 @@ entities: - type: Transform parent: 2 pos: 9.5,1.5 -- proto: SalvageMaterialCrateSpawner - entities: - - uid: 2190 - components: - - type: Transform - parent: 2 - pos: 16.5,-18.5 -- proto: ScrapGeneratorUraniumLeaking - entities: - - uid: 2317 - components: - - type: Transform - parent: 2 - pos: 12.5,-21.5 -- proto: ShardGlassUranium - entities: - - uid: 2381 - components: - - type: Transform - parent: 2 - pos: 11.231369,-21.608208 - proto: ShuttleWindow entities: - uid: 4 @@ -6129,16 +6088,16 @@ entities: pos: 16.5,-14.5 - proto: SMESBasic entities: - - uid: 1846 - components: - - type: Transform - parent: 2 - pos: 3.5,-19.5 - - uid: 2514 + - uid: 417 components: - type: Transform parent: 2 pos: 4.5,-19.5 + - uid: 418 + components: + - type: Transform + parent: 2 + pos: 3.5,-19.5 - proto: SmokeGrenade entities: - uid: 253 @@ -6159,13 +6118,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 19.5,-7.5 -- proto: SpiderWeb - entities: - - uid: 2321 - components: - - type: Transform - parent: 2 - pos: 10.5,-20.5 - proto: StasisBed entities: - uid: 260 @@ -6218,19 +6170,16 @@ entities: pos: 14.5,-12.5 - proto: SubstationBasic entities: + - uid: 140 + components: + - type: Transform + parent: 2 + pos: 13.5,6.5 - uid: 1865 components: - type: Transform parent: 2 pos: 8.5,-18.5 -- proto: SubstationWallBasic - entities: - - uid: 1892 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 14.5,6.5 - proto: SuitStorageEVA entities: - uid: 216 @@ -6592,29 +6541,13 @@ entities: - type: Transform parent: 2 pos: 14.589777,-22.49639 -- proto: TwoWayLever +- proto: UtilityKnife entities: - - uid: 59 + - uid: 131 components: - type: Transform parent: 2 - pos: 6.5,-0.5 - - type: DeviceLinkSource - linkedPorts: - 60: - - - Left - - Open - - - Right - - Open - - - Middle - - Close - 65: - - - Left - - Open - - - Right - - Open - - - Middle - - Close + pos: 17.539446,-19.47791 - proto: VendingMachineBooze entities: - uid: 171 @@ -6629,25 +6562,16 @@ entities: pos: 9.5,3.5 - proto: VendingMachineCigs entities: + - uid: 424 + components: + - type: Transform + parent: 2 + pos: 6.5,-7.5 - uid: 1782 components: - type: Transform parent: 2 pos: 10.5,3.5 -- proto: VendingMachineClothing - entities: - - uid: 2362 - components: - - type: Transform - parent: 2 - pos: 6.5,-7.5 -- proto: VendingMachineEngivend - entities: - - uid: 2544 - components: - - type: Transform - parent: 2 - pos: 6.5,-19.5 - proto: VendingMachineMedical entities: - uid: 1923 @@ -6655,13 +6579,6 @@ entities: - type: Transform parent: 2 pos: 3.5,-13.5 -- proto: VendingMachinePride - entities: - - uid: 205 - components: - - type: Transform - parent: 2 - pos: 7.5,-7.5 - proto: VendingMachineTankDispenserEVA entities: - uid: 1817 @@ -6669,13 +6586,6 @@ entities: - type: Transform parent: 2 pos: 15.5,6.5 -- proto: VendingMachineYouTool - entities: - - uid: 189 - components: - - type: Transform - parent: 2 - pos: 6.5,-18.5 - proto: WallShuttle entities: - uid: 3 @@ -7133,11 +7043,6 @@ entities: - type: Transform parent: 2 pos: 3.5,-9.5 - - uid: 242 - components: - - type: Transform - parent: 2 - pos: 11.5,-19.5 - uid: 243 components: - type: Transform @@ -7687,6 +7592,18 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 5.5,-25.5 +- proto: WardrobePrison + entities: + - uid: 396 + components: + - type: Transform + parent: 2 + pos: 3.5,7.5 + - uid: 397 + components: + - type: Transform + parent: 2 + pos: 3.5,8.5 - proto: WaterCooler entities: - uid: 2210 @@ -7725,6 +7642,56 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 5.5,-1.5 + - uid: 332 + components: + - type: Transform + parent: 2 + pos: 6.5,7.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 426: + - - DoorStatus + - Close + - uid: 395 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 4.5,5.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 429: + - - DoorStatus + - Close + - uid: 426 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 6.5,5.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 332: + - - DoorStatus + - Close + - uid: 429 + components: + - type: Transform + parent: 2 + pos: 4.5,7.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 395: + - - DoorStatus + - Close - proto: WindowReinforcedDirectional entities: - uid: 1744 diff --git a/Resources/Maps/tram2.yml b/Resources/Maps/tram2.yml index 9bc6742dcc..a96b04442b 100644 --- a/Resources/Maps/tram2.yml +++ b/Resources/Maps/tram2.yml @@ -1,11 +1,11 @@ meta: format: 7 category: Map - engineVersion: 289.0.0 + engineVersion: 289.0.3 forkId: "" forkVersion: "" - time: 08/23/2026 15:24:31 - entityCount: 26285 + time: 09/14/2026 21:21:02 + entityCount: 26325 maps: - 1 grids: @@ -13,69 +13,69 @@ grids: - 17588 orphans: [] nullspace: -- 26223 -- 26224 -- 26225 -- 26226 -- 26227 -- 26228 -- 26229 -- 26230 -- 26231 -- 26232 -- 26233 -- 26234 -- 26235 -- 26236 -- 26237 -- 26238 -- 26239 -- 26240 -- 26241 -- 26242 -- 26243 -- 26244 -- 26245 -- 26246 -- 26247 -- 26248 -- 26249 -- 26250 -- 26251 -- 26252 -- 26253 -- 26254 -- 26255 -- 26256 -- 26257 -- 26258 -- 26259 -- 26260 -- 26261 -- 26262 -- 26263 -- 26264 -- 26265 -- 26266 -- 26267 -- 26268 -- 26269 -- 26270 -- 26271 -- 26272 -- 26273 -- 26274 -- 26275 -- 26276 -- 26277 -- 26278 -- 26279 -- 26280 +- 10661 +- 11020 +- 15761 +- 16486 +- 17595 +- 17598 +- 17669 +- 17670 +- 17672 +- 17674 +- 18823 +- 18824 +- 22077 +- 23938 +- 24017 +- 24018 +- 24019 +- 25261 - 26281 - 26282 - 26283 - 26284 - 26285 +- 26286 +- 26287 +- 26288 +- 26289 +- 26290 +- 26291 +- 26292 +- 26293 +- 26294 +- 26295 +- 26296 +- 26297 +- 26298 +- 26299 +- 26300 +- 26301 +- 26302 +- 26303 +- 26304 +- 26305 +- 26306 +- 26307 +- 26308 +- 26309 +- 26310 +- 26311 +- 26312 +- 26313 +- 26314 +- 26315 +- 26316 +- 26317 +- 26318 +- 26319 +- 26320 +- 26321 +- 26322 +- 26323 +- 26324 +- 26325 tilemap: 0: Space 44: FloorArcadeBlue @@ -172,11 +172,11 @@ entities: chunks: -1,-1: ind: -1,-1 - tiles: CgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAABMAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAoAAAAAAAAUAAAAAAAAFAAAAAAAAAoAAAAAAAATAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAKAAAAAAAAFAAAAAAAABQAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAEAAAAAAAABAAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAEwAAAAAAABAAAAAAAAAQAAAAAAAACgAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAAAAAAAAAAIAAAAAAIACAAAAAAAAAoAAAAAAAATAAAAAAAACgAAAAAAAAoAAAAAAAAQAAAAAAAAEAAAAAAAAAoAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAAAAAAAAAACAAAAAACAAAAAAAAAAAKAAAAAAAAEwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAgAAAAAAgAIAAAAAAIACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAIAAAAAAAAUAAAAAAAAAgAAAAAAAAIAAAAAAAAUAAAAAAAAAgAAAAAAAAIAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAIAAAAAAIACAAAAAACAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAACAAAAAAAAFAAAAAAAAAIAAAAAAAACAAAAAAAAFAAAAAAAAAIAAAAAAAACAAAAAAAAFAAAAAAAAAIAAAAAAAAAAAAAAAAACAAAAAAAAAoAAAAAAAAKAAAAAAAAEwAAAAAAAAoAAAAAAAAKAAAAAAAAAgAAAAAAABQAAAAAAAACAAAAAAAAAgAAAAAAABQAAAAAAAACAAAAAAAAAgAAAAAAABQAAAAAAAACAAAAAAAAAAAAAAAAAAgAAAAAAgAKAAAAAAAAEwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAABMAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAUAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAIAAAAAAAAHAAAAAAAABwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAIAAAAAAAACAAAAAAAAFAAAAAAAABQAAAAAAAACAAAAAAAABwAAAAAAAAcAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAATAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAoAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAATAAAAAAAACgAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAKAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAFAAAAAAAAAIAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAABMAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAA== + tiles: CgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAABMAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAoAAAAAAAAUAAAAAAAAFAAAAAAAAAoAAAAAAAATAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAKAAAAAAAAFAAAAAAAABQAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAEAAAAAAAABAAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAACgAAAAAAAAoAAAAAAAAUAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAEwAAAAAAABAAAAAAAAAQAAAAAAAACgAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAAAAAAAAAAIAAAAAAIACAAAAAAAAAoAAAAAAAATAAAAAAAACgAAAAAAAAoAAAAAAAAQAAAAAAAAEAAAAAAAAAoAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAAAAAAAAAACAAAAAACAAAAAAAAAAAKAAAAAAAAEwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAgAAAAAAgAIAAAAAAIACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAIAAAAAAAAUAAAAAAAAAgAAAAAAAAIAAAAAAAAUAAAAAAAAAgAAAAAAAAIAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAIAAAAAAIACAAAAAACAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAACAAAAAAAAFAAAAAAAAAIAAAAAAAACAAAAAAAAFAAAAAAAAAIAAAAAAAACAAAAAAAAFAAAAAAAAAIAAAAAAAAAAAAAAAAACAAAAAAAAAoAAAAAAAAKAAAAAAAAEwAAAAAAAAoAAAAAAAAKAAAAAAAAAgAAAAAAABQAAAAAAAACAAAAAAAAAgAAAAAAABQAAAAAAAACAAAAAAAAAgAAAAAAABQAAAAAAAACAAAAAAAAAAAAAAAAAAgAAAAAAgAKAAAAAAAAEwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAABMAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAUAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAIAAAAAAAAHAAAAAAAABwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAIAAAAAAAACAAAAAAAAFAAAAAAAABQAAAAAAAACAAAAAAAABwAAAAAAAAcAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAATAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAoAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAATAAAAAAAACgAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAKAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAFAAAAAAAAAIAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAABMAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAA== version: 7 0,0: ind: 0,0 - tiles: CgAAAAAAAAoAAAAAAAAKAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAAoAAAAAAAAFAAAAAAAABQAAAAAAAAoAAAAAAAAVAAAAAAAAFQAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAKAAAAAAAABQAAAAAAAAUAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAACgAAAAAAAAUAAAAAAAAFAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAFQAAAAAAABUAAAAAAAAKAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAAoAAAAAAAAFAAAAAAAABQAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAABUAAAAAAAAVAAAAAAAACgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAAoAAAAAAAAKAAAAAAAABQAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAVAAAAAAAAFQAAAAAAAAoAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAACgAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAAoAAAAAAAAFAAAAAAAABQAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAABMAAAAAAAAIAAAAAAAAAAAAAAAAAAoAAAAAAAALAAAAAAIACwAAAAAFAAsAAAAAAQALAAAAAAMACwAAAAADAAsAAAAAAwAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAATAAAAAAAACgAAAAAAAAgAAAAAAgAKAAAAAAAACwAAAAAFAAsAAAAAAwALAAAAAAUACwAAAAADAAsAAAAAAwALAAAAAAMACgAAAAAAADwAAAAAAAA8AAAAAAAACgAAAAAAAAoAAAAAAAATAAAAAAAACgAAAAAAAAgAAAAAAAAAAAAAAAAACgAAAAAAAAsAAAAAAgALAAAAAAIACwAAAAACAAsAAAAABAALAAAAAAAACwAAAAAEAAoAAAAAAAA8AAAAAAMAPAAAAAACAAoAAAAAAAAKAAAAAAAAEwAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAAKAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAATAAAAAAAAEwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAABFAAAAAAAARQAAAAABAEYAAAAAAwAKAAAAAAAACAAAAAACAAgAAAAAAQAKAAAAAAAACgAAAAAAAAoAAAAAAAAIAAAAAAEACAAAAAAAAA== + tiles: CgAAAAAAAAoAAAAAAAAKAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAAoAAAAAAAAFAAAAAAAABQAAAAAAAAoAAAAAAAAVAAAAAAAAFQAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAKAAAAAAAABQAAAAAAAAUAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAACgAAAAAAAAUAAAAAAAAFAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAFQAAAAAAABUAAAAAAAAKAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAAoAAAAAAAAFAAAAAAAABQAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAABUAAAAAAAAVAAAAAAAACgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAAoAAAAAAAAKAAAAAAAABQAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAVAAAAAAAAFQAAAAAAAAoAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAACgAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAAoAAAAAAAAFAAAAAAAABQAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAABMAAAAAAAAIAAAAAAAAAAAAAAAAAAoAAAAAAAALAAAAAAIACwAAAAAFAAsAAAAAAQALAAAAAAMACwAAAAADAAsAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAATAAAAAAAACgAAAAAAAAgAAAAAAgAKAAAAAAAACwAAAAAFAAsAAAAAAwALAAAAAAUACwAAAAADAAsAAAAAAwALAAAAAAAACgAAAAAAADwAAAAAAAA8AAAAAAAACgAAAAAAAAoAAAAAAAATAAAAAAAACgAAAAAAAAgAAAAAAAAAAAAAAAAACgAAAAAAAAsAAAAAAgALAAAAAAIACwAAAAACAAsAAAAABAALAAAAAAAAHgAAAAAAAAoAAAAAAAA8AAAAAAMAPAAAAAACAAoAAAAAAAAKAAAAAAAAEwAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAAKAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAATAAAAAAAAEwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAABFAAAAAAAARQAAAAABAEYAAAAAAwAKAAAAAAAACAAAAAACAAgAAAAAAQAKAAAAAAAACgAAAAAAAAoAAAAAAAAIAAAAAAEACAAAAAAAAA== version: 7 -1,0: ind: -1,0 @@ -184,7 +184,7 @@ entities: version: 7 -1,-2: ind: -1,-2 - tiles: AAAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAATAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAIACAAAAAAAAAgAAAAAAAAIAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAEwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAFAAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAASQAAAAAAAEkAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAATAAAAAAAAEwAAAAAAAAoAAAAAAAATAAAAAAAAEwAAAAAAAAoAAAAAAABJAAAAAAAACAAAAAABAAgAAAAAAAAIAAAAAAEACAAAAAABAAgAAAAAAgAIAAAAAAEACAAAAAAAAAgAAAAAAgAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAgAAAAAAAAIAAAAAAIACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAACgAAAAAAABMAAAAAAAATAAAAAAAACgAAAAAAABMAAAAAAAATAAAAAAAACgAAAAAAAEkAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAAEkAAAAAAABJAAAAAAAACgAAAAAAAAgAAAAAAgAIAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAEwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAFAAAAAAAAA== + tiles: AAAAAAAAAAgAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAIAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAATAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAACAAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAIACAAAAAAAAAgAAAAAAAAIAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAEwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAFAAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAASQAAAAAAAEkAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAATAAAAAAAAEwAAAAAAAAoAAAAAAAATAAAAAAAAEwAAAAAAAAoAAAAAAABJAAAAAAAACAAAAAABAAgAAAAAAAAIAAAAAAEACAAAAAABAAgAAAAAAgAIAAAAAAEACAAAAAAAAAgAAAAAAgAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAgAAAAAAAAIAAAAAAIACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAADEAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAACgAAAAAAABMAAAAAAAATAAAAAAAACgAAAAAAABMAAAAAAAATAAAAAAAACgAAAAAAAEkAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAAEkAAAAAAABJAAAAAAAACgAAAAAAAAgAAAAAAgAIAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAEwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAFAAAAAAAAA== version: 7 0,-1: ind: 0,-1 @@ -252,7 +252,7 @@ entities: version: 7 -2,-2: ind: -2,-2 - tiles: FAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAoAAAAAAAAIAAAAAAIACAAAAAAAAAgAAAAAAgAIAAAAAAAACAAAAAACAAgAAAAAAQAIAAAAAAAACAAAAAABAAgAAAAAAgAIAAAAAAIACAAAAAAAAAgAAAAAAgAIAAAAAAAACAAAAAACABMAAAAAAAATAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAATAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAEwAAAAAAAAoAAAAAAAAIAAAAAAIACAAAAAAAAAgAAAAAAAAIAAAAAAEACAAAAAAAAAgAAAAAAgAIAAAAAAAACAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAIACAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAIAAAAAAAACAAAAAACAAgAAAAAAgAIAAAAAAEACgAAAAAAADUAAAAAAAA1AAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAANQAAAAAAABMAAAAAAAAKAAAAAAAAEwAAAAAAABMAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAEwAAAAAAAAoAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAEACgAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAAA== + tiles: FAAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAoAAAAAAAAIAAAAAAIACAAAAAAAAAgAAAAAAgAIAAAAAAAACAAAAAACAAgAAAAAAQAIAAAAAAAACAAAAAABAAgAAAAAAgAIAAAAAAIACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAABMAAAAAAAATAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAATAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAEwAAAAAAAAoAAAAAAAAIAAAAAAIACAAAAAAAAAgAAAAAAAAIAAAAAAEACAAAAAAAAAgAAAAAAgAIAAAAAAAACAAAAAABAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAIACAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAIAAAAAAAACAAAAAACAAgAAAAAAgAIAAAAAAEACgAAAAAAADUAAAAAAAA1AAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAANQAAAAAAABMAAAAAAAAKAAAAAAAAEwAAAAAAABMAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAEwAAAAAAAAoAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAEACgAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAAA== version: 7 -2,-3: ind: -2,-3 @@ -344,7 +344,7 @@ entities: version: 7 -3,0: ind: -3,0 - tiles: BwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAoAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAcAAAAAAAAHAAAAAAAAAQAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAKAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABMAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAACgAAAAAAABQAAAAAAAAKAAAAAAAAFAAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAKAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAbAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAGwAAAAAAABsAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAoAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAFAAAAAAAAAoAAAAAAAAUAAAAAAAACgAAAAAAABQAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAABQAAAAAAAAUAAAAAAAAGwAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAKAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAoAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAKAAAAAAAACgAAAAAAABQAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAKAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAACgAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAoAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAKAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAACAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAUAAAAAAAAFAAAAAAAAAoAAAAAAAAKAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAACgAAAAAAAA== + tiles: BwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAoAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAcAAAAAAAAHAAAAAAAAAQAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAKAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABMAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAACgAAAAAAABQAAAAAAAAKAAAAAAAAFAAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAKAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAbAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAGwAAAAAAABsAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAoAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAFAAAAAAAAAoAAAAAAAAUAAAAAAAACgAAAAAAABQAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAABQAAAAAAAAUAAAAAAAAGwAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAKAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAoAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAKAAAAAAAACgAAAAAAABQAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAKAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAACgAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAoAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAKAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAACAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAUAAAAAAAAFAAAAAAAAAoAAAAAAAAKAAAAAAAAFAAAAAAAABQAAAAAAAATAAAAAAAACgAAAAAAAA== version: 7 -3,-3: ind: -3,-3 @@ -396,7 +396,7 @@ entities: version: 7 -3,1: ind: -3,1 - tiles: GwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAACAAAAAAAACgAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAACgAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAgAAAAAAAAIAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAoAAAAAAAACAAAAAAAAAgAAAAAAABsAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAKAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAACgAAAAAAAAoAAAAAAAACAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAA8AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAPAAAAAAAADwAAAAAAAAoAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAKAAAAAAAACgAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAgAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAAIAAAAAAAACAAAAAAAADwAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAIAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAACAAAAAAAAAgAAAAAAAA8AAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAACAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAAgAAAAAAAAIAAAAAAAAPAAAAAAAACgAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAABQAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAFAAAAAAAAAoAAAAAAAAPAAAAAAAAAgAAAAAAAA8AAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAKAAAAAAAAFAAAAAAAABQAAAAAAAAKAAAAAAAADwAAAAAAAAIAAAAAAAAPAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAACgAAAAAAABQAAAAAAAAUAAAAAAAACgAAAAAAAA8AAAAAAAACAAAAAAAADwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAACAAAAAAAAAAAAAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAA== + tiles: GwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAACAAAAAAAACgAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAATAAAAAAAACgAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAAgAAAAAAAAIAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAEwAAAAAAAAoAAAAAAAACAAAAAAAAAgAAAAAAABsAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAKAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAACgAAAAAAAAoAAAAAAAACAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAA8AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAPAAAAAAAADwAAAAAAAAoAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAKAAAAAAAACgAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAgAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAAIAAAAAAAACAAAAAAAADwAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAIAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAACAAAAAAAAAgAAAAAAAA8AAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAACAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAAgAAAAAAAAIAAAAAAAAPAAAAAAAACgAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAABQAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAFAAAAAAAAAoAAAAAAAAPAAAAAAAAAgAAAAAAAA8AAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAKAAAAAAAAFAAAAAAAABQAAAAAAAAKAAAAAAAADwAAAAAAAAIAAAAAAAAPAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAACgAAAAAAABQAAAAAAAAUAAAAAAAACgAAAAAAAA8AAAAAAAACAAAAAAAADwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAACAAAAAAAAAAAAAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAA== version: 7 -4,0: ind: -4,0 @@ -583,6 +583,9 @@ entities: - temperature: 293.15 volume: 2500 moles: {} + - temperature: 147.92499 + volume: 2500 + moles: {} - temperature: 293.15 volume: 2500 moles: @@ -597,7 +600,7 @@ entities: Nitrogen: 6666.982 tiles: -4,-4: - 0: 1888 + 0: 20320 -5,-4: 0: 4081 -4,-2: @@ -686,7 +689,7 @@ entities: 1,1: 0: 53247 1,2: - 0: 20479 + 0: 4095 1,3: 0: 58623 1,-1: @@ -698,7 +701,7 @@ entities: 2,1: 0: 56825 2,2: - 0: 3537 + 0: 7633 2,3: 0: 255 1: 24576 @@ -765,7 +768,7 @@ entities: -1,4: 0: 48059 -4,-8: - 1: 61440 + 1: 61986 0: 136 -4,-7: 0: 15 @@ -899,7 +902,7 @@ entities: 7,-4: 0: 32256 7,-3: - 0: 59255 + 0: 59391 8,-3: 0: 26231 8,-2: @@ -957,7 +960,7 @@ entities: 8,-5: 1: 15 3: 240 - 0: 3840 + 0: 12032 5,1: 0: 65524 5,2: @@ -999,7 +1002,7 @@ entities: 1: 1365 3: 64170 8,-4: - 0: 24678 + 0: 25702 9,-2: 3: 32 0: 34952 @@ -1415,10 +1418,11 @@ entities: 12,-13: 0: 61167 -8,-8: - 3: 273 - 1: 49154 + 3: 279 + 1: 49152 -9,-8: - 3: 2184 + 3: 136 + 4: 2048 0: 819 -8,-7: 0: 287 @@ -1433,7 +1437,7 @@ entities: -8,-4: 0: 64443 -7,-8: - 1: 61440 + 1: 63624 -7,-7: 0: 15 3: 240 @@ -1446,7 +1450,7 @@ entities: 1: 6 0: 47872 -6,-8: - 1: 61440 + 1: 62259 -6,-7: 0: 15 3: 240 @@ -1541,7 +1545,7 @@ entities: -6,-16: 0: 4369 1: 57344 - 4: 204 + 5: 204 -6,-15: 0: 65281 1: 14 @@ -1549,13 +1553,13 @@ entities: 0: 65535 -6,-17: 0: 4369 - 4: 49152 + 5: 49152 1: 224 -5,-16: - 4: 17 + 5: 17 1: 29764 -5,-17: - 4: 4096 + 5: 4096 1: 17520 -19,-17: 1: 13294 @@ -1696,7 +1700,7 @@ entities: 0: 45329 1: 196 16,-16: - 0: 61695 + 0: 63743 16,-15: 0: 65103 16,-13: @@ -2059,7 +2063,7 @@ entities: -5,4: 0: 43775 -12,-8: - 0: 1279 + 0: 17663 -12,-9: 0: 65280 1: 15 @@ -2137,11 +2141,11 @@ entities: -13,2: 0: 3549 -12,3: - 0: 3838 + 0: 20222 -13,3: 0: 3838 -12,4: - 0: 4095 + 0: 20479 -11,1: 0: 61567 -11,2: @@ -2306,7 +2310,7 @@ entities: -20,-7: 0: 4095 -21,-7: - 0: 24575 + 0: 8191 -20,-6: 1: 34975 -20,-8: @@ -2343,7 +2347,7 @@ entities: 1: 15 0: 65280 -21,-3: - 0: 65365 + 0: 65301 -20,-2: 0: 65407 -21,-2: @@ -2386,7 +2390,7 @@ entities: 1: 61713 -23,-7: 1: 4353 - 0: 36044 + 0: 3276 -23,-6: 1: 48 0: 136 @@ -2424,7 +2428,7 @@ entities: 1: 12288 0: 32768 -23,-3: - 0: 64904 + 0: 64776 -23,-2: 0: 13 1: 20224 @@ -2868,20 +2872,20 @@ entities: -9,-19: 1: 15 3: 13056 - 5: 34816 + 6: 34816 -9,-18: 3: 3 0: 3840 - 5: 8 + 6: 8 -9,-21: 1: 61440 -8,-20: 1: 19535 -8,-19: 1: 17487 - 5: 4352 + 6: 4352 -8,-18: - 5: 1 + 6: 1 0: 3840 1: 68 -8,-21: @@ -2890,9 +2894,9 @@ entities: 1: 53184 -7,-19: 1: 15 - 6: 30464 + 7: 30464 -7,-18: - 6: 7 + 7: 7 0: 3840 -6,-20: 1: 24404 @@ -2947,7 +2951,7 @@ entities: 1: 65280 16,-18: 1: 8464 - 0: 32972 + 0: 35020 4,6: 3: 15 1: 62528 @@ -3260,7 +3264,7 @@ entities: 17,-19: 0: 13104 17,-18: - 0: 4147 + 0: 4403 chunkSize: 4 - type: GasTileOverlay - type: RadiationGridResistance @@ -3272,68 +3276,69 @@ entities: - type: ExplosionAirtightGrid - type: ChunkContainer chunkEntities: - - 26223 - - 26224 - - 26225 - - 26226 - - 26227 - - 26228 - - 26229 - - 26230 - - 26231 - - 26232 - - 26233 - - 26234 - - 26235 - - 26236 - - 26237 - - 26238 - - 26239 - - 26240 - - 26241 - - 26242 - - 26243 - - 26244 - - 26245 - - 26246 - - 26247 - - 26248 - - 26249 - - 26250 - - 26251 - - 26252 - - 26253 - - 26254 - - 26255 - - 26256 - - 26257 - - 26258 - - 26259 - - 26260 - - 26261 - - 26262 - - 26263 - - 26264 - - 26265 - - 26266 - - 26267 - - 26268 - - 26269 - - 26270 - - 26271 - - 26272 - - 26273 - - 26274 - - 26275 - - 26276 - - 26277 - - 26278 - - 26279 - - 26280 + - 10661 + - 11020 + - 15761 + - 16486 + - 17595 + - 17598 + - 17669 + - 17670 + - 17672 + - 17674 + - 18823 + - 18824 + - 22077 + - 23938 + - 24017 + - 24018 + - 24019 + - 25261 - 26281 - 26282 - 26283 - 26284 + - 26285 + - 26286 + - 26287 + - 26288 + - 26289 + - 26290 + - 26291 + - 26292 + - 26293 + - 26294 + - 26295 + - 26296 + - 26297 + - 26298 + - 26299 + - 26300 + - 26301 + - 26302 + - 26303 + - 26304 + - 26305 + - 26306 + - 26307 + - 26308 + - 26309 + - 26310 + - 26311 + - 26312 + - 26313 + - 26314 + - 26315 + - 26316 + - 26317 + - 26318 + - 26319 + - 26320 + - 26321 + - 26322 + - 26323 + - 26324 + - type: GridSplitNode - uid: 17588 components: - type: MetaData @@ -3415,7 +3420,8 @@ entities: - type: ExplosionAirtightGrid - type: ChunkContainer chunkEntities: - - 26285 + - 26325 + - type: GridSplitNode - proto: AcousticGuitarInstrument entities: - uid: 10751 @@ -3505,21 +3511,21 @@ entities: pos: 71.5,-15.5 - type: DeviceList devices: - - 18945 - - 18944 + - 18957 + - 3718 + - 20716 + - 20715 - 20544 - 20714 - 6228 - - 20715 - - 20716 - - 18934 - - 18933 - - 19132 - - 20724 - - 20721 - 20720 - - 18957 - - 5873 + - 20721 + - 20724 + - 19132 + - 18933 + - 5993 + - 18934 + - 18942 - uid: 2531 components: - type: Transform @@ -4143,16 +4149,18 @@ entities: pos: 73.5,-20.5 - type: DeviceList devices: - - 19654 - - 19536 - - 18941 - 18940 - - 18929 - - 14535 + - 18941 + - 19536 + - 19654 - 18930 - - 18934 - - 5873 + - 18929 - 18933 + - 18934 + - 5993 + - 3719 + - 18939 + - 18938 - uid: 20726 components: - type: Transform @@ -4180,6 +4188,10 @@ entities: - type: Transform parent: 15 pos: 19.5,-49.5 + - type: DeviceList + devices: + - 15844 + - 15845 - uid: 21302 components: - type: Transform @@ -4379,6 +4391,13 @@ entities: parent: 15 rot: -1.5707963267948966 rad pos: 15.5,-28.5 + - type: DeviceList + devices: + - 1088 + - 18877 + - 4725 + - 4728 + - 4726 - uid: 21649 components: - type: Transform @@ -4486,17 +4505,16 @@ entities: pos: 80.5,-29.5 - type: DeviceList devices: - - 14461 - - 19652 - 22752 - 22753 - 22754 - - 18927 - - 18926 - - 20708 - - 18930 + - 14461 + - 19652 - 18929 - - 22842 + - 3719 + - 18930 + - 18926 + - 18927 - uid: 22750 components: - type: Transform @@ -4549,6 +4567,16 @@ entities: - type: Transform parent: 15 pos: 52.5,-16.5 + - type: DeviceList + devices: + - 18953 + - 18952 + - 24969 + - 1144 + - 20716 + - 20715 + - 20722 + - 20723 - uid: 24105 components: - type: Transform @@ -4597,6 +4625,14 @@ entities: - type: Transform parent: 15 pos: -51.5,11.5 + - type: DeviceList + devices: + - 25360 + - 25120 + - 25538 + - 25537 + - 10055 + - 25539 - uid: 25368 components: - type: Transform @@ -4757,13 +4793,6 @@ entities: parent: 15 rot: 1.5707963267948966 rad pos: -37.5,-55.5 -- proto: AirlockAtmosphericsLocked - entities: - - uid: 844 - components: - - type: Transform - parent: 15 - pos: 27.5,-45.5 - proto: AirlockBarGlassLocked entities: - uid: 35 @@ -4787,6 +4816,16 @@ entities: parent: 15 rot: 4.71238898038469 rad pos: -51.5,13.5 + - uid: 11271 + components: + - type: Transform + parent: 15 + pos: -37.5,9.5 + - uid: 12474 + components: + - type: Transform + parent: 15 + pos: -39.5,9.5 - proto: AirlockCaptainLocked entities: - uid: 282 @@ -5028,13 +5067,6 @@ entities: parent: 15 rot: 1.5707963267948966 rad pos: -56.5,-42.5 -- proto: AirlockEngineering - entities: - - uid: 12870 - components: - - type: Transform - parent: 15 - pos: 26.5,-43.5 - proto: AirlockEngineeringGlassLocked entities: - uid: 66 @@ -5071,12 +5103,6 @@ entities: - type: Transform parent: 15 pos: -52.5,-47.5 - - uid: 5826 - components: - - type: Transform - parent: 15 - rot: 1.5707963267948966 rad - pos: -15.5,-18.5 - uid: 7280 components: - type: Transform @@ -5125,14 +5151,11 @@ entities: pos: -30.5,-52.5 - proto: AirlockEngineeringLocked entities: - - uid: 872 + - uid: 1204 components: - type: Transform parent: 15 - rot: 1.5707963267948966 rad - pos: -7.5,-17.5 - - type: DeviceLinkSink - invokeCounter: 1 + pos: 26.5,-43.5 - uid: 3985 components: - type: Transform @@ -5226,6 +5249,9 @@ entities: 890: - - DoorStatus - DoorBolt + 872: + - - DoorStatus + - Close - uid: 879 components: - type: Transform @@ -5238,7 +5264,7 @@ entities: linkedPorts: 4007: - - DoorStatus - - DoorBolt + - Close - uid: 880 components: - type: Transform @@ -5251,7 +5277,10 @@ entities: linkedPorts: 4007: - - DoorStatus - - DoorBolt + - Close + 879: + - - DoorStatus + - Close - uid: 924 components: - type: Transform @@ -5264,7 +5293,10 @@ entities: linkedPorts: 8514: - - DoorStatus - - DoorBolt + - Close + 925: + - - DoorStatus + - Close - uid: 925 components: - type: Transform @@ -5278,6 +5310,9 @@ entities: 8514: - - DoorStatus - DoorBolt + 924: + - - DoorStatus + - Close - uid: 926 components: - type: Transform @@ -5290,7 +5325,10 @@ entities: linkedPorts: 4690: - - DoorStatus - - DoorBolt + - Close + 927: + - - DoorStatus + - Close - uid: 927 components: - type: Transform @@ -5303,7 +5341,7 @@ entities: linkedPorts: 4690: - - DoorStatus - - DoorBolt + - Close - uid: 963 components: - type: Transform @@ -5316,7 +5354,7 @@ entities: linkedPorts: 2526: - - DoorStatus - - DoorBolt + - Close - uid: 986 components: - type: Transform @@ -5329,7 +5367,10 @@ entities: linkedPorts: 2606: - - DoorStatus - - DoorBolt + - Close + 1010: + - - DoorStatus + - Close - uid: 1010 components: - type: Transform @@ -5342,7 +5383,10 @@ entities: linkedPorts: 2606: - - DoorStatus - - DoorBolt + - Close + 986: + - - DoorStatus + - Close - uid: 1030 components: - type: Transform @@ -5355,7 +5399,10 @@ entities: linkedPorts: 2526: - - DoorStatus - - DoorBolt + - Close + 963: + - - DoorStatus + - Close - uid: 1826 components: - type: Transform @@ -5368,7 +5415,10 @@ entities: linkedPorts: 3174: - - DoorStatus - - DoorBolt + - Close + 1868: + - - DoorStatus + - Close - uid: 1827 components: - type: Transform @@ -5381,7 +5431,10 @@ entities: linkedPorts: 3881: - - DoorStatus - - DoorBolt + - Close + 1869: + - - DoorStatus + - Close - uid: 1868 components: - type: Transform @@ -5394,7 +5447,10 @@ entities: linkedPorts: 3174: - - DoorStatus - - DoorBolt + - Close + 1826: + - - DoorStatus + - Close - uid: 1869 components: - type: Transform @@ -5407,7 +5463,7 @@ entities: linkedPorts: 3881: - - DoorStatus - - DoorBolt + - Close - uid: 23452 components: - type: Transform @@ -5458,11 +5514,40 @@ entities: - type: Transform parent: 15 pos: 33.5,19.5 + - uid: 872 + components: + - type: Transform + parent: 15 + rot: -1.5707963267948966 rad + pos: -7.5,-17.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 2702: + - - DoorStatus + - Close + 890: + - - DoorStatus + - Close - uid: 2665 components: - type: Transform parent: 15 pos: -6.5,20.5 + - uid: 2702 + components: + - type: Transform + parent: 15 + rot: -1.5707963267948966 rad + pos: -15.5,-18.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 24306: + - - DoorStatus + - Close - uid: 3127 components: - type: Transform @@ -5752,6 +5837,13 @@ entities: - type: Transform parent: 15 pos: -10.5,-19.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 872: + - - DoorStatus + - Close - uid: 24566 components: - type: Transform @@ -5788,12 +5880,12 @@ entities: rot: 3.141592653589793 rad pos: -6.5,-19.5 - type: DeviceLinkSink - invokeCounter: 3 + invokeCounter: 1 - type: DeviceLinkSource linkedPorts: 873: - - DoorStatus - - DoorBolt + - Close 2425: - - DoorStatus - DoorBolt @@ -5803,7 +5895,7 @@ entities: parent: 15 pos: 46.5,-25.5 - type: DeviceLinkSink - invokeCounter: 2 + invokeCounter: 1 - type: DeviceLinkSource linkedPorts: 1030: @@ -5818,22 +5910,22 @@ entities: parent: 15 pos: 46.5,-19.5 - type: DeviceLinkSink - invokeCounter: 2 + invokeCounter: 1 - type: DeviceLinkSource linkedPorts: 1010: - - DoorStatus - - DoorBolt + - Close 986: - - DoorStatus - - DoorBolt + - Close - uid: 3174 components: - type: Transform parent: 15 pos: -31.5,-19.5 - type: DeviceLinkSink - invokeCounter: 2 + invokeCounter: 1 - type: DeviceLinkSource linkedPorts: 1868: @@ -5848,15 +5940,15 @@ entities: parent: 15 pos: -31.5,-25.5 - type: DeviceLinkSink - invokeCounter: 2 + invokeCounter: 1 - type: DeviceLinkSource linkedPorts: 1869: - - DoorStatus - - DoorBolt + - Close 1827: - - DoorStatus - - DoorBolt + - Close - uid: 4007 components: - type: Transform @@ -5864,7 +5956,7 @@ entities: rot: 3.141592653589793 rad pos: -6.5,-25.5 - type: DeviceLinkSink - invokeCounter: 3 + invokeCounter: 1 - type: DeviceLinkSource linkedPorts: 879: @@ -5883,7 +5975,7 @@ entities: rot: 3.141592653589793 rad pos: 21.5,-25.5 - type: DeviceLinkSink - invokeCounter: 2 + invokeCounter: 1 - type: DeviceLinkSource linkedPorts: 927: @@ -5899,15 +5991,15 @@ entities: rot: 3.141592653589793 rad pos: 21.5,-19.5 - type: DeviceLinkSink - invokeCounter: 3 + invokeCounter: 1 - type: DeviceLinkSource linkedPorts: 924: - - DoorStatus - - DoorBolt + - Close 925: - - DoorStatus - - DoorBolt + - Close - uid: 11675 components: - type: Transform @@ -6093,6 +6185,30 @@ entities: parent: 15 rot: -1.5707963267948966 rad pos: 6.5,-73.5 +- proto: AirlockExternalGlassShuttleLocked + entities: + - uid: 1983 + components: + - type: Transform + parent: 15 + pos: 78.5,-61.5 + - uid: 2441 + components: + - type: Transform + parent: 15 + rot: 1.5707963267948966 rad + pos: 81.5,-59.5 + - uid: 2947 + components: + - type: Transform + parent: 15 + pos: 80.5,-61.5 + - uid: 4563 + components: + - type: Transform + parent: 15 + rot: 1.5707963267948966 rad + pos: 81.5,-57.5 - proto: AirlockFreezer entities: - uid: 3444 @@ -6106,6 +6222,12 @@ entities: parent: 15 rot: 1.5707963267948966 rad pos: -15.5,-13.5 + - uid: 14327 + components: + - type: Transform + parent: 15 + rot: -1.5707963267948966 rad + pos: -12.5,-13.5 - proto: AirlockFreezerKitchenHydroLocked entities: - uid: 183 @@ -6513,34 +6635,12 @@ entities: parent: 15 rot: -1.5707963267948966 rad pos: -91.5,-38.5 - - uid: 18677 - components: - - type: Transform - parent: 15 - pos: 80.5,-61.5 - - uid: 22245 - components: - - type: Transform - parent: 15 - rot: 1.5707963267948966 rad - pos: 81.5,-57.5 - uid: 22918 components: - type: Transform parent: 15 rot: 3.141592653589793 rad pos: 93.5,-0.5 - - uid: 24383 - components: - - type: Transform - parent: 15 - pos: 78.5,-61.5 - - uid: 24386 - components: - - type: Transform - parent: 15 - rot: 1.5707963267948966 rad - pos: 81.5,-59.5 - uid: 24396 components: - type: Transform @@ -6746,11 +6846,11 @@ entities: pos: 19.5,-14.5 - proto: AirlockMaintKitchenLocked entities: - - uid: 15771 + - uid: 20303 components: - type: Transform parent: 15 - pos: 6.5,11.5 + pos: 8.5,11.5 - proto: AirlockMaintLocked entities: - uid: 149 @@ -6799,6 +6899,11 @@ entities: parent: 15 rot: 1.5707963267948966 rad pos: -9.5,3.5 + - uid: 844 + components: + - type: Transform + parent: 15 + pos: 27.5,-45.5 - uid: 866 components: - type: Transform @@ -7620,24 +7725,12 @@ entities: - type: Transform parent: 15 pos: 86.5,-18.5 - - uid: 1983 - components: - - type: Transform - parent: 15 - rot: 3.141592653589793 rad - pos: -39.5,9.5 - uid: 4559 components: - type: Transform parent: 15 rot: 1.5707963267948966 rad pos: -36.5,7.5 - - uid: 4563 - components: - - type: Transform - parent: 15 - rot: 3.141592653589793 rad - pos: -37.5,9.5 - uid: 7424 components: - type: Transform @@ -8094,9 +8187,6 @@ entities: - type: Transform parent: 15 pos: 81.5,-35.5 - - type: DeviceNetwork - deviceLists: - - 22749 - uid: 22844 components: - type: Transform @@ -8758,14 +8848,6 @@ entities: - type: Transform parent: 15 pos: -31.669796,-14.109636 -- proto: AsimovCircuitBoard - entities: - - uid: 8009 - components: - - type: Transform - parent: 15 - rot: 3.141592653589793 rad - pos: 28.580853,-10.85622 - proto: AtmosDeviceFanDirectional entities: - uid: 162 @@ -11320,6 +11402,16 @@ entities: - type: Transform parent: 15 pos: 71.5,-22.5 + - uid: 26252 + components: + - type: Transform + parent: 15 + pos: -29.5,-31.5 + - uid: 26253 + components: + - type: Transform + parent: 15 + pos: -30.5,-31.5 - proto: AtmosFixFreezerMarker entities: - uid: 14 @@ -12225,16 +12317,22 @@ entities: pos: 17.5,10.5 - proto: BibleCommunistManifesto entities: - - uid: 20301 + - uid: 26241 components: - type: Transform parent: 15 - pos: -8.520068,7.600655 - - uid: 20303 + pos: -9.498705,7.522795 + missingComponents: + - Bible + - StealTarget + - uid: 26242 components: - type: Transform parent: 15 - pos: -9.520068,7.600655 + pos: -8.498705,7.4915233 + missingComponents: + - Bible + - StealTarget - proto: Biogenerator entities: - uid: 2251 @@ -13767,6 +13865,11 @@ entities: - type: Transform parent: 15 pos: -51.5,-75.5 + - uid: 3721 + components: + - type: Transform + parent: 15 + pos: -13.5,-13.5 - uid: 3732 components: - type: Transform @@ -13877,6 +13980,11 @@ entities: - type: Transform parent: 15 pos: 79.5,-7.5 + - uid: 4557 + components: + - type: Transform + parent: 15 + pos: -10.5,-10.5 - uid: 4581 components: - type: Transform @@ -13902,6 +14010,11 @@ entities: - type: Transform parent: 15 pos: 63.5,-6.5 + - uid: 4829 + components: + - type: Transform + parent: 15 + pos: -10.5,-11.5 - uid: 4849 components: - type: Transform @@ -17612,6 +17725,11 @@ entities: - type: Transform parent: 15 pos: 80.5,-14.5 + - uid: 14535 + components: + - type: Transform + parent: 15 + pos: -10.5,-12.5 - uid: 14622 components: - type: Transform @@ -19057,26 +19175,21 @@ entities: - type: Transform parent: 15 pos: -31.5,13.5 - - uid: 15798 + - uid: 15805 components: - type: Transform parent: 15 - pos: -42.5,-32.5 - - uid: 15807 - components: - - type: Transform - parent: 15 - pos: -43.5,-32.5 + pos: -43.5,-31.5 - uid: 15808 components: - type: Transform parent: 15 - pos: -45.5,-32.5 + pos: -44.5,-31.5 - uid: 15809 components: - type: Transform parent: 15 - pos: -44.5,-32.5 + pos: -42.5,-31.5 - uid: 15810 components: - type: Transform @@ -27392,6 +27505,61 @@ entities: - type: Transform parent: 15 pos: -46.5,1.5 + - uid: 26245 + components: + - type: Transform + parent: 15 + pos: -17.5,2.5 + - uid: 26254 + components: + - type: Transform + parent: 15 + pos: -10.5,-14.5 + - uid: 26255 + components: + - type: Transform + parent: 15 + pos: -10.5,-13.5 + - uid: 26256 + components: + - type: Transform + parent: 15 + pos: -10.5,-15.5 + - uid: 26257 + components: + - type: Transform + parent: 15 + pos: -11.5,2.5 + - uid: 26258 + components: + - type: Transform + parent: 15 + pos: -11.5,1.5 + - uid: 26259 + components: + - type: Transform + parent: 15 + pos: -11.5,0.5 + - uid: 26260 + components: + - type: Transform + parent: 15 + pos: -11.5,-0.5 + - uid: 26261 + components: + - type: Transform + parent: 15 + pos: -34.5,1.5 + - uid: 26262 + components: + - type: Transform + parent: 15 + pos: -35.5,1.5 + - uid: 26263 + components: + - type: Transform + parent: 15 + pos: -36.5,1.5 - proto: CableApcStack entities: - uid: 4902 @@ -36851,11 +37019,6 @@ entities: - type: Transform parent: 15 pos: -40.5,-28.5 - - uid: 2441 - components: - - type: Transform - parent: 15 - pos: -42.5,-32.5 - uid: 2498 components: - type: Transform @@ -36926,11 +37089,6 @@ entities: - type: Transform parent: 15 pos: 17.5,-13.5 - - uid: 2947 - components: - - type: Transform - parent: 15 - pos: -43.5,-32.5 - uid: 2954 components: - type: Transform @@ -42086,6 +42244,11 @@ entities: - type: Transform parent: 15 pos: -29.5,4.5 + - uid: 15798 + components: + - type: Transform + parent: 15 + pos: -44.5,-31.5 - uid: 15799 components: - type: Transform @@ -42115,12 +42278,7 @@ entities: components: - type: Transform parent: 15 - pos: -44.5,-32.5 - - uid: 15805 - components: - - type: Transform - parent: 15 - pos: -45.5,-32.5 + pos: -42.5,-31.5 - uid: 15866 components: - type: Transform @@ -42421,6 +42579,11 @@ entities: - type: Transform parent: 15 pos: 15.5,-13.5 + - uid: 16649 + components: + - type: Transform + parent: 15 + pos: -43.5,-31.5 - uid: 16805 components: - type: Transform @@ -44990,6 +45153,13 @@ entities: - type: Transform parent: 15 pos: 55.5,-14.5 +- proto: CargoTelepad + entities: + - uid: 5095 + components: + - type: Transform + parent: 15 + pos: 60.5,-3.5 - proto: Carpet entities: - uid: 260 @@ -53534,7 +53704,7 @@ entities: pos: 38.601997,5.28884 - proto: ChunkEntity entities: - - uid: 26223 + - uid: 10661 components: - type: ChunkEntity root: 15 @@ -53566,7 +53736,7 @@ entities: color: '#FFFFFFFF' decals: 2858: -1,14 - - uid: 26224 + - uid: 11020 components: - type: ChunkEntity root: 15 @@ -53601,7 +53771,7 @@ entities: 1752: -49,22 1799: -50,23 1800: -50,22 - - uid: 26225 + - uid: 15761 components: - type: ChunkEntity root: 15 @@ -53689,7 +53859,7 @@ entities: color: '#FFFFFFFF' decals: 2774: -49,0 - - uid: 26226 + - uid: 16486 components: - type: ChunkEntity root: 15 @@ -53787,7 +53957,7 @@ entities: color: '#FFFFFFFF' decals: 1575: -54,-30 - - uid: 26227 + - uid: 17595 components: - type: ChunkEntity root: 15 @@ -53854,7 +54024,7 @@ entities: cleanable: True decals: 2182: 50.945747,3.0388398 - - uid: 26228 + - uid: 17598 components: - type: ChunkEntity root: 15 @@ -53905,7 +54075,7 @@ entities: color: '#A4610696' decals: 1470: 70,2 - - uid: 26229 + - uid: 17669 components: - type: ChunkEntity root: 15 @@ -54031,7 +54201,7 @@ entities: color: '#765428CC' decals: 2196: 76,-4 - - uid: 26230 + - uid: 17670 components: - type: ChunkEntity root: 15 @@ -54171,7 +54341,7 @@ entities: color: '#FFFFFFFF' decals: 3040: 52.340275,-13.14076 - - uid: 26231 + - uid: 17672 components: - type: ChunkEntity root: 15 @@ -54188,7 +54358,7 @@ entities: 3253: -65,-55 3254: -65,-56 3255: -65,-57 - - uid: 26232 + - uid: 17674 components: - type: ChunkEntity root: 15 @@ -54379,7 +54549,7 @@ entities: color: '#FFFFFFFF' decals: 3037: -55,-53 - - uid: 26233 + - uid: 18823 components: - type: ChunkEntity root: 15 @@ -54400,7 +54570,7 @@ entities: color: '#FFA500FF' decals: 3100: -28,-47 - - uid: 26234 + - uid: 18824 components: - type: ChunkEntity root: 15 @@ -54534,7 +54704,7 @@ entities: color: '#FFFFFFFF' decals: 2766: -49,-1 - - uid: 26235 + - uid: 22077 components: - type: ChunkEntity root: 15 @@ -54718,7 +54888,7 @@ entities: decals: 2776: -44,1 2777: -43,0 - - uid: 26236 + - uid: 23938 components: - type: ChunkEntity root: 15 @@ -54843,7 +55013,7 @@ entities: 1612: 14,-8 1613: 14,-9 1614: 14,-10 - - uid: 26237 + - uid: 24017 components: - type: ChunkEntity root: 15 @@ -54932,7 +55102,7 @@ entities: 2531: -75,-12 2532: -75,-14 2533: -75,-16 - - uid: 26238 + - uid: 24018 components: - type: ChunkEntity root: 15 @@ -55037,7 +55207,7 @@ entities: 2124: -47,-26 2125: -46,-26 2126: -42,-26 - - uid: 26239 + - uid: 24019 components: - type: ChunkEntity root: 15 @@ -55224,7 +55394,7 @@ entities: 1664: 57.004997,-29.166441 1665: 56.973747,-31.978941 1666: 61.801872,-30.010191 - - uid: 26240 + - uid: 25261 components: - type: ChunkEntity root: 15 @@ -55360,7 +55530,7 @@ entities: 2115: 9,-26 2116: 5,-26 2117: 4,-26 - - uid: 26241 + - uid: 26281 components: - type: ChunkEntity root: 15 @@ -55658,7 +55828,7 @@ entities: color: '#FFFFFFFF' decals: 2765: -43,-1 - - uid: 26242 + - uid: 26282 components: - type: ChunkEntity root: 15 @@ -55710,7 +55880,7 @@ entities: color: '#52B4E996' decals: 600: 17,-36 - - uid: 26243 + - uid: 26283 components: - type: ChunkEntity root: 15 @@ -55994,7 +56164,7 @@ entities: decals: 331: 13,-44 332: 3,-44 - - uid: 26244 + - uid: 26284 components: - type: ChunkEntity root: 15 @@ -56142,7 +56312,7 @@ entities: color: '#FFFFFFFF' decals: 2083: 14.168513,-63.990208 - - uid: 26245 + - uid: 26285 components: - type: ChunkEntity root: 15 @@ -56293,7 +56463,7 @@ entities: 604: -1,-43 605: -1,-47 2882: -10,-39 - - uid: 26246 + - uid: 26286 components: - type: ChunkEntity root: 15 @@ -56366,7 +56536,7 @@ entities: color: '#DE3A3A96' decals: 1141: -31,22 - - uid: 26247 + - uid: 26287 components: - type: ChunkEntity root: 15 @@ -56566,7 +56736,7 @@ entities: color: '#FFFFFFFF' decals: 1580: -42,-38 - - uid: 26248 + - uid: 26288 components: - type: ChunkEntity root: 15 @@ -56650,7 +56820,7 @@ entities: color: '#EFB34196' decals: 1289: -27,-53 - - uid: 26249 + - uid: 26289 components: - type: ChunkEntity root: 15 @@ -56863,7 +57033,7 @@ entities: color: '#FFFFFFFF' decals: 2927: -45.017906,-62.950806 - - uid: 26250 + - uid: 26290 components: - type: ChunkEntity root: 15 @@ -57080,7 +57250,7 @@ entities: color: '#FFFFFFFF' decals: 1579: -50,-38 - - uid: 26251 + - uid: 26291 components: - type: ChunkEntity root: 15 @@ -57153,7 +57323,7 @@ entities: color: '#FFFFFFFF' decals: 2566: -7,-27 - - uid: 26252 + - uid: 26292 components: - type: ChunkEntity root: 15 @@ -57330,7 +57500,7 @@ entities: 1755: -47,21 1756: -46,21 1757: -45,21 - - uid: 26253 + - uid: 26293 components: - type: ChunkEntity root: 15 @@ -57389,7 +57559,7 @@ entities: decals: 1927: -65,-37 1928: -65,-39 - - uid: 26254 + - uid: 26294 components: - type: ChunkEntity root: 15 @@ -57416,7 +57586,7 @@ entities: cleanable: True decals: 2032: -7.02964,-56.865158 - - uid: 26255 + - uid: 26295 components: - type: ChunkEntity root: 15 @@ -57502,7 +57672,7 @@ entities: cleanable: True decals: 2181: 39.039497,3.3669648 - - uid: 26256 + - uid: 26296 components: - type: ChunkEntity root: 15 @@ -57664,7 +57834,7 @@ entities: color: '#FFFFFFFF' decals: 1663: 65.89562,-31.682066 - - uid: 26257 + - uid: 26297 components: - type: ChunkEntity root: 15 @@ -57708,7 +57878,7 @@ entities: color: '#FFFFFFFF' decals: 2565: -32,-27 - - uid: 26258 + - uid: 26298 components: - type: ChunkEntity root: 15 @@ -57734,7 +57904,7 @@ entities: color: '#FFFFFFFF' decals: 2570: 21,-27 - - uid: 26259 + - uid: 26299 components: - type: ChunkEntity root: 15 @@ -57765,7 +57935,7 @@ entities: color: '#FFFFFFFF' decals: 2571: 46,-27 - - uid: 26260 + - uid: 26300 components: - type: ChunkEntity root: 15 @@ -57878,7 +58048,7 @@ entities: 91: 52,-40 196: 51,-36 211: 63,-36 - - uid: 26261 + - uid: 26301 components: - type: ChunkEntity root: 15 @@ -57964,7 +58134,7 @@ entities: color: '#DE3A3A96' decals: 2372: 85,-18 - - uid: 26262 + - uid: 26302 components: - type: ChunkEntity root: 15 @@ -57992,7 +58162,7 @@ entities: 2522: -86,-9 2523: -88,-9 2524: -90,-9 - - uid: 26263 + - uid: 26303 components: - type: ChunkEntity root: 15 @@ -58029,7 +58199,7 @@ entities: color: '#D4D4D496' decals: 2564: -75,-18 - - uid: 26264 + - uid: 26304 components: - type: ChunkEntity root: 15 @@ -58057,7 +58227,7 @@ entities: 2547: -85,-27 2548: -87,-27 2549: -89,-27 - - uid: 26265 + - uid: 26305 components: - type: ChunkEntity root: 15 @@ -58079,7 +58249,7 @@ entities: angle: 3.141592653589793 rad decals: 3248: 35,-6 - - uid: 26266 + - uid: 26306 components: - type: ChunkEntity root: 15 @@ -58127,7 +58297,7 @@ entities: color: '#334E6DC8' decals: 2282: 33,28 - - uid: 26267 + - uid: 26307 components: - type: ChunkEntity root: 15 @@ -58158,7 +58328,7 @@ entities: color: '#334E6DC8' decals: 2296: 31,26 - - uid: 26268 + - uid: 26308 components: - type: ChunkEntity root: 15 @@ -58228,7 +58398,7 @@ entities: cleanable: True decals: 2338: 5,15 - - uid: 26269 + - uid: 26309 components: - type: ChunkEntity root: 15 @@ -58279,7 +58449,7 @@ entities: decals: 2853: 44,-58 2854: 47,-60 - - uid: 26270 + - uid: 26310 components: - type: ChunkEntity root: 15 @@ -58346,7 +58516,7 @@ entities: 3154: 20,-50 3155: 20,-51 3156: 20,-52 - - uid: 26271 + - uid: 26311 components: - type: ChunkEntity root: 15 @@ -58432,7 +58602,7 @@ entities: decals: 2039: 74,-49 2040: 75,-49 - - uid: 26272 + - uid: 26312 components: - type: ChunkEntity root: 15 @@ -58518,7 +58688,7 @@ entities: color: '#FFFFFFFF' decals: 2855: 61,-59 - - uid: 26273 + - uid: 26313 components: - type: ChunkEntity root: 15 @@ -58544,7 +58714,7 @@ entities: color: '#DE3A3A96' decals: 2374: 88,-16 - - uid: 26274 + - uid: 26314 components: - type: ChunkEntity root: 15 @@ -58624,7 +58794,7 @@ entities: cleanable: True decals: 2358: 38.163574,-46.221375 - - uid: 26275 + - uid: 26315 components: - type: ChunkEntity root: 15 @@ -58699,7 +58869,7 @@ entities: decals: 1947: 76,-40 1948: 76,-41 - - uid: 26276 + - uid: 26316 components: - type: ChunkEntity root: 15 @@ -58721,7 +58891,7 @@ entities: color: '#334E6DC8' decals: 2285: 31,33 - - uid: 26277 + - uid: 26317 components: - type: ChunkEntity root: 15 @@ -58743,7 +58913,7 @@ entities: color: '#334E6DC8' decals: 2284: 35,33 - - uid: 26278 + - uid: 26318 components: - type: ChunkEntity root: 15 @@ -58849,7 +59019,7 @@ entities: 2335: -25,13 2336: -25,12 2337: -25,11 - - uid: 26279 + - uid: 26319 components: - type: ChunkEntity root: 15 @@ -58874,7 +59044,7 @@ entities: color: '#FFFFFFFF' decals: 723: -65,3 - - uid: 26280 + - uid: 26320 components: - type: ChunkEntity root: 15 @@ -58894,7 +59064,7 @@ entities: color: '#FFFFFFFF' decals: 2848: -66,20 - - uid: 26281 + - uid: 26321 components: - type: ChunkEntity root: 15 @@ -58914,7 +59084,7 @@ entities: color: '#FFFFFFFF' decals: 3250: 25,1 - - uid: 26282 + - uid: 26322 components: - type: ChunkEntity root: 15 @@ -58943,7 +59113,7 @@ entities: 1606: 16,-8 1607: 16,-7 1608: 16,-6 - - uid: 26283 + - uid: 26323 components: - type: ChunkEntity root: 15 @@ -58961,7 +59131,7 @@ entities: 2339: 7,16 2341: 5,17 2342: 7,17 - - uid: 26284 + - uid: 26324 components: - type: ChunkEntity root: 15 @@ -58997,7 +59167,7 @@ entities: color: '#FFFFFFFF' decals: 2081: 14.231013,-64.95896 - - uid: 26285 + - uid: 26325 components: - type: ChunkEntity root: 17588 @@ -59268,11 +59438,6 @@ entities: - type: Transform parent: 15 pos: 62.5,-49.5 - - uid: 16649 - components: - - type: Transform - parent: 15 - pos: 49.5,-27.5 - uid: 18675 components: - type: Transform @@ -59717,6 +59882,32 @@ entities: - type: Transform parent: 15 pos: 28.5,-42.5 + - type: Fixtures + fixtures: + fix1: + shape: !type:PolygonShape + vertices: + - -0.25,-0.48 + - 0.25,-0.48 + - 0.25,0.48 + - -0.25,0.48 + radius: 0.01 + restitution: 0 + hard: True + friction: 0.4 + density: 75 + mask: + - Impassable + - TableLayer + - LowImpassable + layer: + - BulletImpassable + - Opaque + - type: EntityStorage + removedMasks: 20 + open: True + - type: PlaceableSurface + isPlaceable: True - uid: 15951 components: - type: Transform @@ -60364,62 +60555,6 @@ entities: - type: Transform parent: 15 pos: 40.68025,-13.846975 -- proto: ClothingNeckCloakAce - entities: - - uid: 24017 - components: - - type: Transform - parent: 15 - pos: -69.6096,-30.921928 -- proto: ClothingNeckCloakAro - entities: - - uid: 10661 - components: - - type: Transform - parent: 15 - pos: -69.43772,-31.375053 -- proto: ClothingNeckCloakBi - entities: - - uid: 17669 - components: - - type: Transform - parent: 15 - pos: -67.21897,-30.328178 -- proto: ClothingNeckCloakEnby - entities: - - uid: 17670 - components: - - type: Transform - parent: 15 - pos: -68.65647,-30.390678 -- proto: ClothingNeckCloakGay - entities: - - uid: 24018 - components: - - type: Transform - parent: 15 - pos: -66.5471,-30.421928 -- proto: ClothingNeckCloakLesbian - entities: - - uid: 17674 - components: - - type: Transform - parent: 15 - pos: -67.95335,-30.312553 -- proto: ClothingNeckCloakPan - entities: - - uid: 24019 - components: - - type: Transform - parent: 15 - pos: -69.18772,-30.375053 -- proto: ClothingNeckCloakTrans - entities: - - uid: 17672 - components: - - type: Transform - parent: 15 - pos: -69.56272,-30.453178 - proto: ClothingNeckScarfStripedPurple entities: - uid: 21910 @@ -61093,12 +61228,22 @@ entities: parent: 15 rot: 1.5707963267948966 rad pos: 61.5,-10.5 + - type: DeviceLinkSource + linkedPorts: + 5095: + - - OrderSender + - OrderReceiver - uid: 3612 components: - type: Transform parent: 15 rot: -1.5707963267948966 rad pos: 63.5,-12.5 + - type: DeviceLinkSource + linkedPorts: + 5095: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersEngineering entities: - uid: 24126 @@ -61114,6 +61259,11 @@ entities: - type: Transform parent: 15 pos: 13.5,-34.5 + - type: DeviceLinkSource + linkedPorts: + 5095: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersScience entities: - uid: 24129 @@ -61122,6 +61272,24 @@ entities: parent: 15 rot: 1.5707963267948966 rad pos: 46.5,-40.5 + - type: DeviceLinkSource + linkedPorts: + 5095: + - - OrderSender + - OrderReceiver +- proto: ComputerCargoOrdersSecurity + entities: + - uid: 5400 + components: + - type: Transform + parent: 15 + rot: -1.5707963267948966 rad + pos: -33.5,16.5 + - type: DeviceLinkSource + linkedPorts: + 5095: + - - OrderSender + - OrderReceiver - proto: ComputerCargoOrdersService entities: - uid: 25297 @@ -61130,6 +61298,11 @@ entities: parent: 15 rot: -1.5707963267948966 rad pos: 12.5,6.5 + - type: DeviceLinkSource + linkedPorts: + 5095: + - - OrderSender + - OrderReceiver - proto: ComputerComms entities: - uid: 3991 @@ -62026,13 +62199,6 @@ entities: - type: Transform parent: 15 pos: 45.5,-12.5 -- proto: CrateFunToyBox - entities: - - uid: 4251 - components: - - type: Transform - parent: 15 - pos: -68.5,-33.5 - proto: CrateGenericSteel entities: - uid: 25489 @@ -62135,11 +62301,11 @@ entities: pos: -4.5,-47.5 - proto: CrateNPCChicken entities: - - uid: 12474 + - uid: 19150 components: - type: Transform parent: 15 - pos: 8.5,10.5 + pos: 3.5,8.5 - proto: CrateSecurityRiot entities: - uid: 2468 @@ -62225,6 +62391,14 @@ entities: - type: Transform parent: 15 pos: 71.5,-48.5 +- proto: CrewsimovCircuitBoard + entities: + - uid: 8009 + components: + - type: Transform + parent: 15 + rot: 3.141592653589793 rad + pos: 28.580853,-10.85622 - proto: Crowbar entities: - uid: 7326 @@ -62435,7 +62609,7 @@ entities: pos: -78.5,-6.5 - type: Door state: Opening - secondsUntilStateChange: -510952.34 + secondsUntilStateChange: -517363.22 - proto: CurtainsPurpleOpen entities: - uid: 2426 @@ -74175,18 +74349,6 @@ entities: parent: 15 rot: -1.5707963267948966 rad pos: 13.5,2.5 - - uid: 5095 - components: - - type: Transform - parent: 15 - rot: -1.5707963267948966 rad - pos: -32.5,16.5 - - uid: 16362 - components: - - type: Transform - parent: 15 - rot: -1.5707963267948966 rad - pos: 20.5,-38.5 - uid: 17102 components: - type: Transform @@ -74276,6 +74438,12 @@ entities: parent: 15 rot: 1.5707963267948966 rad pos: -49.5,-42.5 + - uid: 26248 + components: + - type: Transform + parent: 15 + rot: 3.141592653589793 rad + pos: 16.5,-40.5 - proto: FancyTableSpawner entities: - uid: 22528 @@ -74298,7 +74466,7 @@ entities: parent: 15 pos: 54.5,-12.5 - type: FaxMachine - name: Mail Room + name: Mailroom - uid: 1706 components: - type: Transform @@ -74323,6 +74491,8 @@ entities: - type: Transform parent: 15 pos: -55.5,-16.5 + - type: FaxMachine + name: HoP - uid: 5098 components: - type: Transform @@ -74335,6 +74505,8 @@ entities: - type: Transform parent: 15 pos: 1.5,-14.5 + - type: FaxMachine + name: Library - uid: 5877 components: - type: Transform @@ -74347,6 +74519,8 @@ entities: - type: Transform parent: 15 pos: -35.5,18.5 + - type: FaxMachine + name: Security - uid: 10100 components: - type: Transform @@ -74358,7 +74532,7 @@ entities: parent: 15 pos: 18.5,-43.5 - type: FaxMachine - name: Psychologist + name: Psych - uid: 16417 components: - type: Transform @@ -74394,13 +74568,6 @@ entities: pos: 81.5,-15.5 - type: FaxMachine name: Reporter - - uid: 21991 - components: - - type: Transform - parent: 15 - pos: 11.5,-37.5 - - type: FaxMachine - name: Medical - uid: 24180 components: - type: Transform @@ -74498,18 +74665,21 @@ entities: - 4728 - 4725 - 839 - - uid: 2158 - components: - - type: Transform - parent: 15 - rot: -1.5707963267948966 rad - pos: -49.5,-8.5 - uid: 3382 components: - type: Transform parent: 15 rot: -1.5707963267948966 rad pos: -32.5,17.5 + - type: DeviceList + devices: + - 20659 + - 20658 + - 21305 + - 20620 + - 20619 + - 3139 + - 2168 - uid: 18327 components: - type: Transform @@ -74538,11 +74708,15 @@ entities: components: - type: Transform parent: 15 - pos: -35.5,14.5 + rot: 1.5707963267948966 rad + pos: -49.5,-8.5 - type: DeviceList devices: - - 20619 - - 20620 + - 21320 + - 21319 + - 21314 + - 21315 + - 21316 - uid: 21343 components: - type: Transform @@ -74659,11 +74833,22 @@ entities: - type: Transform parent: 15 pos: 52.5,-38.5 + - type: DeviceList + devices: + - 7567 + - 7568 + - 2158 + - 18919 + - 18905 - uid: 21616 components: - type: Transform parent: 15 pos: 68.5,-51.5 + - type: DeviceList + devices: + - 18904 + - 18903 - uid: 21617 components: - type: Transform @@ -74743,12 +74928,28 @@ entities: parent: 15 rot: 3.141592653589793 rad pos: 12.5,-12.5 + - type: DeviceList + devices: + - 20644 + - 4412 + - 4410 + - 160 + - 159 + - 158 + - 157 + - 20646 + - 21765 - uid: 21626 components: - type: Transform parent: 15 rot: 1.5707963267948966 rad pos: -9.5,-5.5 + - type: DeviceList + devices: + - 20653 + - 20646 + - 21765 - uid: 21627 components: - type: Transform @@ -74820,6 +75021,19 @@ entities: - 20253 - 20250 - 20251 + - uid: 26264 + components: + - type: Transform + parent: 15 + pos: -42.5,15.5 + - type: DeviceList + devices: + - 20619 + - 20620 + - 595 + - 1149 + - 20116 + - 25540 - proto: FireAxeCabinetFilled entities: - uid: 1608 @@ -74846,29 +75060,12 @@ entities: pos: 69.64084,-9.615127 - proto: Firelock entities: - - uid: 5873 - components: - - type: Transform - parent: 15 - pos: 75.5,-16.5 - - type: DeviceNetwork - deviceLists: - - 598 - - 20626 - uid: 6928 components: - type: Transform parent: 15 rot: 1.5707963267948966 rad pos: -65.5,20.5 - - uid: 14535 - components: - - type: Transform - parent: 15 - pos: 75.5,-28.5 - - type: DeviceNetwork - deviceLists: - - 20626 - uid: 16669 components: - type: Transform @@ -75051,6 +75248,7 @@ entities: deviceLists: - 20024 - 24105 + - 21625 - uid: 158 components: - type: Transform @@ -75061,6 +75259,7 @@ entities: deviceLists: - 20024 - 24105 + - 21625 - uid: 159 components: - type: Transform @@ -75071,6 +75270,7 @@ entities: deviceLists: - 20024 - 24105 + - 21625 - uid: 160 components: - type: Transform @@ -75081,6 +75281,7 @@ entities: deviceLists: - 20024 - 24105 + - 21625 - uid: 2691 components: - type: Transform @@ -75121,6 +75322,7 @@ entities: deviceLists: - 308 - 24105 + - 21625 - uid: 4412 components: - type: Transform @@ -75131,12 +75333,16 @@ entities: deviceLists: - 308 - 24105 + - 21625 - uid: 10055 components: - type: Transform parent: 15 rot: 3.141592653589793 rad pos: -54.5,14.5 + - type: DeviceNetwork + deviceLists: + - 25367 - uid: 18938 components: - type: Transform @@ -75148,6 +75354,7 @@ entities: - 20726 - 21621 - 21622 + - 20626 - uid: 18939 components: - type: Transform @@ -75159,6 +75366,7 @@ entities: - 20726 - 21621 - 21622 + - 20626 - uid: 18940 components: - type: Transform @@ -75234,12 +75442,54 @@ entities: parent: 15 rot: 3.141592653589793 rad pos: -52.5,14.5 + - type: DeviceNetwork + deviceLists: + - 25367 - uid: 25538 components: - type: Transform parent: 15 rot: 3.141592653589793 rad pos: -53.5,4.5 + - type: DeviceNetwork + deviceLists: + - 25367 + - uid: 26266 + components: + - type: Transform + parent: 15 + rot: -1.5707963267948966 rad + pos: -29.5,-27.5 + - uid: 26270 + components: + - type: Transform + parent: 15 + rot: 1.5707963267948966 rad + pos: -8.5,-27.5 + - uid: 26277 + components: + - type: Transform + parent: 15 + rot: -1.5707963267948966 rad + pos: 23.5,-17.5 + - uid: 26278 + components: + - type: Transform + parent: 15 + rot: -1.5707963267948966 rad + pos: 23.5,-27.5 + - uid: 26279 + components: + - type: Transform + parent: 15 + rot: 1.5707963267948966 rad + pos: 44.5,-27.5 + - uid: 26280 + components: + - type: Transform + parent: 15 + rot: 1.5707963267948966 rad + pos: 44.5,-17.5 - proto: FirelockGlass entities: - uid: 65 @@ -75262,6 +75512,9 @@ entities: - type: Transform parent: 15 pos: -37.5,9.5 + - type: DeviceNetwork + deviceLists: + - 26264 - uid: 803 components: - type: Transform @@ -75306,11 +75559,15 @@ entities: - type: DeviceNetwork deviceLists: - 15202 + - 23372 - uid: 1149 components: - type: Transform parent: 15 pos: -39.5,9.5 + - type: DeviceNetwork + deviceLists: + - 26264 - uid: 1150 components: - type: Transform @@ -75322,6 +75579,14 @@ entities: - 21509 - 21513 - 21507 + - uid: 2158 + components: + - type: Transform + parent: 15 + pos: 54.5,-38.5 + - type: DeviceNetwork + deviceLists: + - 21615 - uid: 2168 components: - type: Transform @@ -75332,6 +75597,7 @@ entities: deviceLists: - 21302 - 7130 + - 3382 - uid: 2188 components: - type: Transform @@ -75390,11 +75656,29 @@ entities: - type: DeviceNetwork deviceLists: - 21302 + - 3382 - uid: 3352 components: - type: Transform parent: 15 pos: 11.5,-34.5 + - uid: 3718 + components: + - type: Transform + parent: 15 + pos: 66.5,-11.5 + - type: DeviceNetwork + deviceLists: + - 598 + - uid: 3719 + components: + - type: Transform + parent: 15 + pos: 75.5,-28.5 + - type: DeviceNetwork + deviceLists: + - 20626 + - 22749 - uid: 4487 components: - type: Transform @@ -75411,6 +75695,7 @@ entities: - type: DeviceNetwork deviceLists: - 56 + - 21636 - uid: 4726 components: - type: Transform @@ -75419,6 +75704,7 @@ entities: - type: DeviceNetwork deviceLists: - 56 + - 21636 - uid: 4727 components: - type: Transform @@ -75437,6 +75723,7 @@ entities: - type: DeviceNetwork deviceLists: - 56 + - 21636 - uid: 4732 components: - type: Transform @@ -75468,6 +75755,15 @@ entities: - 447 - 21627 - 18860 + - uid: 5993 + components: + - type: Transform + parent: 15 + pos: 75.5,-16.5 + - type: DeviceNetwork + deviceLists: + - 20626 + - 598 - uid: 6228 components: - type: Transform @@ -75525,6 +75821,7 @@ entities: - type: DeviceNetwork deviceLists: - 6331 + - 21615 - uid: 7568 components: - type: Transform @@ -75534,6 +75831,7 @@ entities: - type: DeviceNetwork deviceLists: - 6331 + - 21615 - uid: 7636 components: - type: Transform @@ -75773,6 +76071,9 @@ entities: parent: 15 rot: 1.5707963267948966 rad pos: 64.5,-56.5 + - type: DeviceNetwork + deviceLists: + - 21616 - uid: 18904 components: - type: Transform @@ -75781,6 +76082,7 @@ entities: - type: DeviceNetwork deviceLists: - 7574 + - 21616 - uid: 18905 components: - type: Transform @@ -75793,6 +76095,7 @@ entities: - 21617 - 6330 - 21729 + - 21615 - uid: 18909 components: - type: Transform @@ -75829,6 +76132,7 @@ entities: deviceLists: - 6331 - 7571 + - 21615 - uid: 18920 components: - type: Transform @@ -75916,6 +76220,9 @@ entities: - type: Transform parent: 15 pos: 76.5,-12.5 + - type: DeviceNetwork + deviceLists: + - 598 - uid: 18943 components: - type: Transform @@ -75934,7 +76241,6 @@ entities: deviceLists: - 20510 - 20513 - - 598 - uid: 18945 components: - type: Transform @@ -75946,7 +76252,6 @@ entities: - 21620 - 20566 - 20513 - - 598 - uid: 18946 components: - type: Transform @@ -75999,6 +76304,7 @@ entities: deviceLists: - 21619 - 20568 + - 23372 - uid: 18953 components: - type: Transform @@ -76008,6 +76314,7 @@ entities: deviceLists: - 21619 - 20568 + - 23372 - uid: 18957 components: - type: Transform @@ -76099,6 +76406,7 @@ entities: - type: DeviceNetwork deviceLists: - 20113 + - 26264 - uid: 20250 components: - type: Transform @@ -76396,7 +76704,8 @@ entities: deviceLists: - 7130 - 21312 - - 21336 + - 26264 + - 3382 - uid: 20620 components: - type: Transform @@ -76406,7 +76715,8 @@ entities: deviceLists: - 7130 - 21312 - - 21336 + - 26264 + - 3382 - uid: 20630 components: - type: Transform @@ -76467,6 +76777,9 @@ entities: - type: Transform parent: 15 pos: 11.5,-0.5 + - type: DeviceNetwork + deviceLists: + - 21625 - uid: 20646 components: - type: Transform @@ -76477,6 +76790,8 @@ entities: deviceLists: - 24105 - 10873 + - 21625 + - 21626 - uid: 20647 components: - type: Transform @@ -76522,6 +76837,7 @@ entities: - type: DeviceNetwork deviceLists: - 10873 + - 21626 - uid: 20657 components: - type: Transform @@ -76539,6 +76855,7 @@ entities: - type: DeviceNetwork deviceLists: - 7130 + - 3382 - uid: 20659 components: - type: Transform @@ -76547,6 +76864,7 @@ entities: - type: DeviceNetwork deviceLists: - 7130 + - 3382 - uid: 20660 components: - type: Transform @@ -76738,9 +77056,6 @@ entities: - type: Transform parent: 15 pos: 73.5,-34.5 - - type: DeviceNetwork - deviceLists: - - 22749 - uid: 20709 components: - type: Transform @@ -76787,6 +77102,7 @@ entities: - type: DeviceNetwork deviceLists: - 598 + - 23372 - uid: 20716 components: - type: Transform @@ -76796,6 +77112,7 @@ entities: - type: DeviceNetwork deviceLists: - 598 + - 23372 - uid: 20718 components: - type: Transform @@ -76944,6 +77261,7 @@ entities: - type: DeviceNetwork deviceLists: - 7130 + - 3382 - uid: 21314 components: - type: Transform @@ -76954,6 +77272,7 @@ entities: - 7572 - 18806 - 19159 + - 21336 - uid: 21315 components: - type: Transform @@ -76963,6 +77282,7 @@ entities: - type: DeviceNetwork deviceLists: - 18806 + - 21336 - uid: 21316 components: - type: Transform @@ -76972,6 +77292,7 @@ entities: - type: DeviceNetwork deviceLists: - 18806 + - 21336 - uid: 21317 components: - type: Transform @@ -76993,6 +77314,7 @@ entities: - type: DeviceNetwork deviceLists: - 18806 + - 21336 - uid: 21320 components: - type: Transform @@ -77002,6 +77324,7 @@ entities: - type: DeviceNetwork deviceLists: - 18806 + - 21336 - uid: 21321 components: - type: Transform @@ -77185,6 +77508,8 @@ entities: - type: DeviceNetwork deviceLists: - 10873 + - 21625 + - 21626 - uid: 22752 components: - type: Transform @@ -77267,6 +77592,7 @@ entities: - type: DeviceNetwork deviceLists: - 15202 + - 23372 - uid: 25180 components: - type: Transform @@ -77279,12 +77605,72 @@ entities: parent: 15 rot: 1.5707963267948966 rad pos: -51.5,13.5 + - type: DeviceNetwork + deviceLists: + - 25367 - uid: 25540 components: - type: Transform parent: 15 rot: 1.5707963267948966 rad pos: -47.5,13.5 + - type: DeviceNetwork + deviceLists: + - 26264 + - uid: 26267 + components: + - type: Transform + parent: 15 + rot: -1.5707963267948966 rad + pos: -30.5,-27.5 + - uid: 26268 + components: + - type: Transform + parent: 15 + rot: -1.5707963267948966 rad + pos: -15.5,-18.5 + - uid: 26269 + components: + - type: Transform + parent: 15 + rot: -1.5707963267948966 rad + pos: -7.5,-17.5 + - uid: 26271 + components: + - type: Transform + parent: 15 + rot: -1.5707963267948966 rad + pos: 16.5,-27.5 + - uid: 26272 + components: + - type: Transform + parent: 15 + rot: -1.5707963267948966 rad + pos: -36.5,-18.5 + - uid: 26273 + components: + - type: Transform + parent: 15 + rot: -1.5707963267948966 rad + pos: 16.5,-17.5 + - uid: 26274 + components: + - type: Transform + parent: 15 + rot: -1.5707963267948966 rad + pos: -1.5,-17.5 + - uid: 26275 + components: + - type: Transform + parent: 15 + rot: -1.5707963267948966 rad + pos: -1.5,-27.5 + - uid: 26276 + components: + - type: Transform + parent: 15 + rot: -1.5707963267948966 rad + pos: -36.5,-26.5 - proto: Fireplace entities: - uid: 10022 @@ -77396,6 +77782,13 @@ entities: pos: 14.5,-14.5 - type: Fixtures fixtures: {} + - uid: 4823 + components: + - type: Transform + parent: 15 + pos: -13.5,-12.5 + - type: Fixtures + fixtures: {} - uid: 4840 components: - type: Transform @@ -77478,13 +77871,6 @@ entities: pos: 71.5,-17.5 - type: Fixtures fixtures: {} - - uid: 14327 - components: - - type: Transform - parent: 15 - pos: -13.5,-13.5 - - type: Fixtures - fixtures: {} - uid: 17483 components: - type: Transform @@ -104572,6 +104958,9 @@ entities: parent: 15 rot: 3.141592653589793 rad pos: 21.5,-54.5 + - type: DeviceNetwork + deviceLists: + - 21223 - type: AtmosPipeColor color: '#0055CCFF' - uid: 16104 @@ -104756,6 +105145,9 @@ entities: parent: 15 rot: 3.141592653589793 rad pos: 1.5,-27.5 + - type: DeviceNetwork + deviceLists: + - 21636 - type: AtmosPipeColor color: '#0055CCFF' - uid: 18883 @@ -105217,6 +105609,9 @@ entities: - type: Transform parent: 15 pos: 54.5,-17.5 + - type: DeviceNetwork + deviceLists: + - 23372 - type: AtmosPipeColor color: '#0055CCFF' - uid: 20724 @@ -105413,6 +105808,9 @@ entities: parent: 15 rot: 1.5707963267948966 rad pos: -53.5,6.5 + - type: DeviceNetwork + deviceLists: + - 25367 - type: AtmosPipeColor color: '#0055CCFF' - uid: 25241 @@ -105472,6 +105870,9 @@ entities: - type: Transform parent: 15 pos: 13.5,-26.5 + - type: DeviceNetwork + deviceLists: + - 21636 - type: AtmosPipeColor color: '#990000FF' - uid: 2152 @@ -105966,6 +106367,9 @@ entities: parent: 15 rot: 1.5707963267948966 rad pos: 17.5,-51.5 + - type: DeviceNetwork + deviceLists: + - 21223 - type: AtmosPipeColor color: '#990000FF' - uid: 18164 @@ -106522,6 +106926,9 @@ entities: parent: 15 rot: 3.141592653589793 rad pos: 61.5,-18.5 + - type: DeviceNetwork + deviceLists: + - 23372 - type: AtmosPipeColor color: '#990000FF' - uid: 20913 @@ -106709,6 +107116,9 @@ entities: - type: Transform parent: 15 pos: -53.5,13.5 + - type: DeviceNetwork + deviceLists: + - 25367 - type: AtmosPipeColor color: '#990000FF' - proto: GasVolumePump @@ -113881,6 +114291,13 @@ entities: - type: Transform parent: 15 pos: -49.5,22.5 +- proto: Gyroscope + entities: + - uid: 9604 + components: + - type: Transform + parent: 17588 + pos: -38.5,-23.5 - proto: GyroscopeMachineCircuitboard entities: - uid: 16478 @@ -114497,6 +114914,11 @@ entities: pos: 17.293848,-13.2417755 - proto: HospitalCurtainsOpen entities: + - uid: 5551 + components: + - type: Transform + parent: 15 + pos: -13.5,-12.5 - uid: 6734 components: - type: Transform @@ -114518,11 +114940,6 @@ entities: - type: Transform parent: 15 pos: 17.5,-50.5 - - uid: 9816 - components: - - type: Transform - parent: 15 - pos: -13.5,-13.5 - uid: 11512 components: - type: Transform @@ -115528,9 +115945,6 @@ entities: 21834: - - Pressed - Toggle - 1204: - - - Pressed - - DoorBolt - proto: LockableButtonJanitor entities: - uid: 14811 @@ -115947,6 +116361,11 @@ entities: - type: Transform parent: 15 pos: -8.5,-36.5 + - uid: 7964 + components: + - type: Transform + parent: 15 + pos: 5.5,-39.5 - proto: LockerMedicineFilled entities: - uid: 4795 @@ -115978,6 +116397,11 @@ entities: - type: Transform parent: 15 pos: 19.5,-38.5 + - uid: 8021 + components: + - type: Transform + parent: 15 + pos: 18.5,-37.5 - proto: LockerPrisoner entities: - uid: 2310 @@ -116133,9 +116557,9 @@ entities: - type: Transform parent: 15 pos: -25.5,22.5 -- proto: LockerSyndicatePersonal +- proto: LockerSyndicate entities: - - uid: 7964 + - uid: 5826 components: - type: Transform parent: 15 @@ -116147,16 +116571,6 @@ entities: - type: Transform parent: 15 pos: -35.5,9.5 - - uid: 18823 - components: - - type: Transform - parent: 15 - pos: 3.5,-39.5 - - uid: 18824 - components: - - type: Transform - parent: 15 - pos: 11.5,-39.5 - proto: LockerWardenFilled entities: - uid: 2520 @@ -116400,6 +116814,13 @@ entities: - type: Transform parent: 15 pos: 51.36493,-15.482473 +- proto: MailCart + entities: + - uid: 4251 + components: + - type: Transform + parent: 15 + pos: 53.5,-14.5 - proto: MailingUnit entities: - uid: 82 @@ -117279,11 +117700,11 @@ entities: pos: 13.5,-14.5 - proto: MopBucketFull entities: - - uid: 5993 + - uid: 5873 components: - type: Transform parent: 15 - pos: -13.5,-13.5 + pos: -13.5,-12.5 - proto: MopItem entities: - uid: 12342 @@ -117492,6 +117913,11 @@ entities: - type: Transform parent: 15 pos: 83.5,-1.5 + - uid: 15807 + components: + - type: Transform + parent: 15 + pos: -28.5,-53.5 - uid: 15842 components: - type: Transform @@ -117527,6 +117953,41 @@ entities: - type: Transform parent: 15 pos: -30.5,-61.5 + - uid: 26223 + components: + - type: Transform + parent: 15 + pos: -67.5,-43.5 + - uid: 26227 + components: + - type: Transform + parent: 15 + pos: -3.5,-26.5 + - uid: 26228 + components: + - type: Transform + parent: 15 + pos: 18.5,-18.5 + - uid: 26231 + components: + - type: Transform + parent: 15 + pos: 49.5,-27.5 + - uid: 26233 + components: + - type: Transform + parent: 15 + pos: 57.5,-60.5 + - uid: 26234 + components: + - type: Transform + parent: 15 + pos: -34.5,-17.5 + - uid: 26238 + components: + - type: Transform + parent: 15 + pos: -11.5,-40.5 - proto: NitrousOxideCanister entities: - uid: 14539 @@ -117648,6 +118109,16 @@ entities: - type: Transform parent: 15 pos: 28.5,-32.5 + - uid: 24383 + components: + - type: Transform + parent: 15 + pos: -71.5,-40.5 + - uid: 24741 + components: + - type: Transform + parent: 15 + pos: -3.5,-18.5 - uid: 24753 components: - type: Transform @@ -117658,6 +118129,41 @@ entities: - type: Transform parent: 15 pos: -32.5,-61.5 + - uid: 26224 + components: + - type: Transform + parent: 15 + pos: -29.5,-53.5 + - uid: 26225 + components: + - type: Transform + parent: 15 + pos: -11.5,-44.5 + - uid: 26226 + components: + - type: Transform + parent: 15 + pos: 44.5,-44.5 + - uid: 26229 + components: + - type: Transform + parent: 15 + pos: 18.5,-26.5 + - uid: 26230 + components: + - type: Transform + parent: 15 + pos: 50.5,-17.5 + - uid: 26232 + components: + - type: Transform + parent: 15 + pos: 58.5,-60.5 + - uid: 26235 + components: + - type: Transform + parent: 15 + pos: -34.5,-27.5 - proto: PaintingAmogusTriptych entities: - uid: 23962 @@ -118094,20 +118600,20 @@ entities: components: - type: Transform parent: 17588 - pos: -38.082043,-23.591156 + pos: -38.96964,-23.506098 - proto: PetCarrier entities: + - uid: 13899 + components: + - type: Transform + parent: 15 + rot: 3.141592653589793 rad + pos: 3.5,10.5 - uid: 21843 components: - type: Transform parent: 15 pos: 26.5,-56.5 - - uid: 22319 - components: - - type: Transform - parent: 15 - rot: 3.141592653589793 rad - pos: 7.5,10.5 - uid: 22320 components: - type: Transform @@ -118497,11 +119003,6 @@ entities: pos: 72.5,-29.5 - proto: PortableGeneratorPacman entities: - - uid: 5400 - components: - - type: Transform - parent: 15 - pos: -10.5,-17.5 - uid: 10964 components: - type: Transform @@ -119040,12 +119541,12 @@ entities: - type: Transform parent: 15 pos: 74.5,-35.5 - - uid: 4829 + - uid: 3717 components: - type: Transform parent: 15 rot: -1.5707963267948966 rad - pos: 18.5,-37.5 + pos: 17.5,-37.5 - uid: 4860 components: - type: Transform @@ -119197,6 +119698,11 @@ entities: parent: 15 rot: -1.5707963267948966 rad pos: 46.5,-55.5 + - uid: 9816 + components: + - type: Transform + parent: 15 + pos: -13.5,-12.5 - uid: 10255 components: - type: Transform @@ -119215,11 +119721,6 @@ entities: parent: 15 rot: 3.141592653589793 rad pos: -32.5,-35.5 - - uid: 15747 - components: - - type: Transform - parent: 15 - pos: -13.5,-13.5 - uid: 20926 components: - type: Transform @@ -119460,6 +119961,12 @@ entities: parent: 15 rot: -1.5707963267948966 rad pos: -40.5,-2.5 + - uid: 3720 + components: + - type: Transform + parent: 15 + rot: 1.5707963267948966 rad + pos: 85.5,-17.5 - uid: 3962 components: - type: Transform @@ -119719,6 +120226,12 @@ entities: - type: Transform parent: 15 pos: -2.5,-11.5 + - uid: 7980 + components: + - type: Transform + parent: 15 + rot: -1.5707963267948966 rad + pos: -66.5,-14.5 - uid: 8020 components: - type: Transform @@ -121319,12 +121832,6 @@ entities: parent: 15 rot: 3.141592653589793 rad pos: 16.5,-56.5 - - uid: 19150 - components: - - type: Transform - parent: 15 - rot: -1.5707963267948966 rad - pos: -51.5,2.5 - uid: 19162 components: - type: Transform @@ -121733,6 +122240,22 @@ entities: - type: Transform parent: 15 pos: 3.5,-29.5 + - uid: 26244 + components: + - type: Transform + parent: 15 + rot: -1.5707963267948966 rad + pos: -16.5,3.5 + - uid: 26246 + components: + - type: Transform + parent: 15 + pos: 3.5,-51.5 + - uid: 26265 + components: + - type: Transform + parent: 15 + pos: -33.5,-1.5 - proto: PoweredlightExterior entities: - uid: 24723 @@ -122647,6 +123170,12 @@ entities: parent: 15 rot: 1.5707963267948966 rad pos: -57.5,-76.5 + - uid: 26247 + components: + - type: Transform + parent: 15 + rot: -1.5707963267948966 rad + pos: 13.5,-57.5 - proto: Protolathe entities: - uid: 4617 @@ -122843,11 +123372,6 @@ entities: - type: Transform parent: 15 pos: 42.5,-11.5 - - uid: 8067 - components: - - type: Transform - parent: 15 - pos: -12.5,-17.5 - uid: 8734 components: - type: Transform @@ -122942,11 +123466,6 @@ entities: - type: Transform parent: 15 pos: -44.5,28.5 - - uid: 15761 - components: - - type: Transform - parent: 15 - pos: -14.5,-17.5 - uid: 16477 components: - type: Transform @@ -122957,11 +123476,6 @@ entities: - type: Transform parent: 15 pos: -70.5,-45.5 - - uid: 17595 - components: - - type: Transform - parent: 15 - pos: -11.5,-17.5 - uid: 18012 components: - type: Transform @@ -122978,12 +123492,6 @@ entities: parent: 15 rot: -1.5707963267948966 rad pos: 61.5,-64.5 - - uid: 22077 - components: - - type: Transform - parent: 15 - rot: 3.141592653589793 rad - pos: -13.5,-17.5 - uid: 23406 components: - type: Transform @@ -123550,6 +124058,12 @@ entities: parent: 15 rot: -1.5707963267948966 rad pos: 32.5,36.5 + - uid: 12870 + components: + - type: Transform + parent: 15 + rot: 1.5707963267948966 rad + pos: 7.5,10.5 - uid: 13487 components: - type: Transform @@ -123795,11 +124309,6 @@ entities: - type: Transform parent: 15 pos: 6.5,8.5 - - uid: 13899 - components: - - type: Transform - parent: 15 - pos: 8.5,8.5 - uid: 14358 components: - type: Transform @@ -123811,11 +124320,27 @@ entities: - type: Transform parent: 15 pos: -65.5,-36.5 + - uid: 17310 + components: + - type: Transform + parent: 15 + rot: 3.141592653589793 rad + pos: 8.5,9.5 + - uid: 20301 + components: + - type: Transform + parent: 15 + pos: 7.5,8.5 - uid: 22531 components: - type: Transform parent: 15 pos: -57.5,-34.5 + - uid: 24386 + components: + - type: Transform + parent: 15 + pos: 8.5,8.5 - uid: 24656 components: - type: Transform @@ -124073,6 +124598,12 @@ entities: parent: 15 rot: 3.141592653589793 rad pos: 5.5,8.5 + - uid: 26236 + components: + - type: Transform + parent: 15 + rot: -1.5707963267948966 rad + pos: 7.5,9.5 - proto: RandomArtifactSpawner entities: - uid: 1743 @@ -124773,11 +125304,6 @@ entities: - type: Transform parent: 15 pos: -36.5,-29.5 - - uid: 8021 - components: - - type: Transform - parent: 15 - pos: -13.5,-13.5 - uid: 8789 components: - type: Transform @@ -124793,6 +125319,11 @@ entities: - type: Transform parent: 15 pos: 51.5,-60.5 + - uid: 26249 + components: + - type: Transform + parent: 15 + pos: -13.5,-12.5 - proto: RandomSpawner entities: - uid: 240 @@ -125455,6 +125986,11 @@ entities: - type: Transform parent: 15 pos: -45.5,13.5 + - uid: 26237 + components: + - type: Transform + parent: 15 + pos: 11.5,6.5 - proto: RandomSpawner100 entities: - uid: 4124 @@ -125467,11 +126003,6 @@ entities: - type: Transform parent: 15 pos: -23.5,-42.5 - - uid: 4557 - components: - - type: Transform - parent: 15 - pos: 71.5,-22.5 - uid: 9998 components: - type: Transform @@ -129593,11 +130124,6 @@ entities: - type: Transform parent: 15 pos: -45.543613,-44.05848 - - uid: 23938 - components: - - type: Transform - parent: 15 - pos: -12.474271,-17.527378 - uid: 24308 components: - type: Transform @@ -129635,11 +130161,6 @@ entities: - type: Transform parent: 15 pos: 72.4559,-24.307135 - - uid: 11020 - components: - - type: Transform - parent: 15 - pos: -13.598716,-17.543377 - uid: 23348 components: - type: Transform @@ -129674,11 +130195,6 @@ entities: - type: Transform parent: 15 pos: 72.50799,-25.485035 - - uid: 9604 - components: - - type: Transform - parent: 15 - pos: -14.4633,-17.52253 - uid: 9897 components: - type: Transform @@ -130417,6 +130933,23 @@ entities: parent: 15 rot: 3.141592653589793 rad pos: 31.5,19.5 + - type: DeviceLinkSource + linkedPorts: + 7651: + - - Pressed + - Toggle + 11656: + - - Pressed + - Toggle + 3864: + - - Pressed + - Toggle + 7701: + - - Pressed + - Toggle + 11303: + - - Pressed + - Toggle - uid: 21655 components: - type: Transform @@ -133349,6 +133882,14 @@ entities: - type: Transform parent: 15 pos: 53.5,-5.5 +- proto: SpawnMobSheep + entities: + - uid: 18677 + components: + - type: Transform + parent: 15 + rot: 3.141592653589793 rad + pos: 4.5,8.5 - proto: SpawnMobShiva entities: - uid: 23096 @@ -134169,11 +134710,6 @@ entities: - type: Transform parent: 15 pos: -75.5,-6.5 - - uid: 19026 - components: - - type: Transform - parent: 15 - pos: -58.5,-38.5 - uid: 19028 components: - type: Transform @@ -134214,6 +134750,12 @@ entities: parent: 15 rot: 1.5707963267948966 rad pos: 51.5,-30.5 + - uid: 26243 + components: + - type: Transform + parent: 15 + rot: -1.5707963267948966 rad + pos: -58.5,-38.5 - proto: StationMapBroken entities: - uid: 23253 @@ -134602,11 +135144,6 @@ entities: - type: Transform parent: 15 pos: -59.5,-61.5 - - uid: 25261 - components: - - type: Transform - parent: 15 - pos: -8.5,-18.5 - proto: SuitStorageEVA entities: - uid: 1303 @@ -137331,11 +137868,6 @@ entities: - type: Transform parent: 15 pos: 16.5,-37.5 - - uid: 4823 - components: - - type: Transform - parent: 15 - pos: 18.5,-37.5 - uid: 4836 components: - type: Transform @@ -139895,21 +140427,8 @@ entities: pos: -49.5,-24.5 missingComponents: - Damageable -- proto: ThrusterFlatpack - entities: - - uid: 17598 - components: - - type: Transform - parent: 15 - pos: -11.603366,-17.270796 - proto: ThrusterMachineCircuitboard entities: - - uid: 2702 - components: - - type: Transform - parent: 15 - rot: 3.141592653589793 rad - pos: -11.492543,-17.483688 - uid: 21803 components: - type: Transform @@ -140850,6 +141369,13 @@ entities: - type: Transform parent: 15 pos: -3.5,-2.5 +- proto: VendingMachinePride + entities: + - uid: 8067 + components: + - type: Transform + parent: 15 + pos: -71.5,-34.5 - proto: VendingMachineRoboDrobe entities: - uid: 1126 @@ -140969,13 +141495,6 @@ entities: - type: Transform parent: 15 pos: 72.5,-6.5 -- proto: VendingMachineTheater - entities: - - uid: 16486 - components: - - type: Transform - parent: 15 - pos: -71.5,-34.5 - proto: VendingMachineVendomat entities: - uid: 881 @@ -146483,11 +147002,6 @@ entities: - type: Transform parent: 15 pos: 38.5,-1.5 - - uid: 7980 - components: - - type: Transform - parent: 15 - pos: -13.5,-12.5 - uid: 8004 components: - type: Transform @@ -152252,6 +152766,16 @@ entities: - type: Transform parent: 15 pos: 14.5,-69.5 + - uid: 26250 + components: + - type: Transform + parent: 15 + pos: -13.5,-11.5 + - uid: 26251 + components: + - type: Transform + parent: 15 + pos: -14.5,-11.5 - proto: WallShuttle entities: - uid: 17596 @@ -155706,11 +156230,6 @@ entities: - type: Transform parent: 15 pos: 48.5,-37.5 - - uid: 5551 - components: - - type: Transform - parent: 15 - pos: -12.5,-13.5 - uid: 5554 components: - type: Transform @@ -156380,7 +156899,7 @@ entities: components: - type: Transform parent: 15 - pos: 8.5,11.5 + pos: 6.5,11.5 - uid: 9670 components: - type: Transform @@ -156646,11 +157165,6 @@ entities: - type: Transform parent: 15 pos: 10.5,11.5 - - uid: 11271 - components: - - type: Transform - parent: 15 - pos: 11.5,11.5 - uid: 11272 components: - type: Transform @@ -158960,6 +159474,13 @@ entities: - type: Transform parent: 15 pos: -29.551102,11.458996 +- proto: WeaponEnergyShotgun + entities: + - uid: 26239 + components: + - type: Transform + parent: 15 + pos: -43.536354,10.4568 - proto: WeaponEnergyTurretAI entities: - uid: 11942 @@ -159320,11 +159841,6 @@ entities: parent: 15 rot: 1.5707963267948966 rad pos: 2.5,-31.5 - - uid: 17310 - components: - - type: Transform - parent: 15 - pos: -56.5,-19.5 - uid: 17671 components: - type: Transform @@ -159360,6 +159876,11 @@ entities: parent: 15 rot: -1.5707963267948966 rad pos: 36.5,24.5 + - uid: 22319 + components: + - type: Transform + parent: 15 + pos: -56.5,-19.5 - uid: 23133 components: - type: Transform @@ -159497,12 +160018,12 @@ entities: pos: -50.5,-40.5 - proto: WindoorHeadOfPersonnelLocked entities: - - uid: 1204 + - uid: 15771 components: - type: Transform parent: 15 rot: 3.141592653589793 rad - pos: -55.5,-19.5 + pos: -56.5,-19.5 - proto: WindoorHydroponicsLocked entities: - uid: 3298 @@ -159517,13 +160038,6 @@ entities: parent: 15 rot: 1.5707963267948966 rad pos: -0.5,-6.5 -- proto: WindoorKitchenHydroponicsLocked - entities: - - uid: 24741 - components: - - type: Transform - parent: 15 - pos: 7.5,8.5 - proto: WindoorMedicalLocked entities: - uid: 4819 @@ -160101,6 +160615,11 @@ entities: - type: Transform parent: 15 pos: -71.5,-23.5 + - uid: 22245 + components: + - type: Transform + parent: 15 + pos: 11.5,11.5 - uid: 22309 components: - type: Transform @@ -160780,36 +161299,6 @@ entities: parent: 15 rot: 3.141592653589793 rad pos: -20.5,-28.5 - - uid: 3717 - components: - - type: Transform - parent: 15 - rot: 3.141592653589793 rad - pos: -19.5,-28.5 - - uid: 3718 - components: - - type: Transform - parent: 15 - rot: 3.141592653589793 rad - pos: -18.5,-28.5 - - uid: 3719 - components: - - type: Transform - parent: 15 - rot: 3.141592653589793 rad - pos: -16.5,-28.5 - - uid: 3720 - components: - - type: Transform - parent: 15 - rot: 3.141592653589793 rad - pos: -17.5,-28.5 - - uid: 3721 - components: - - type: Transform - parent: 15 - rot: 3.141592653589793 rad - pos: -15.5,-28.5 - uid: 3722 components: - type: Transform @@ -161623,12 +162112,24 @@ entities: parent: 15 rot: 3.141592653589793 rad pos: 17.5,10.5 + - uid: 15747 + components: + - type: Transform + parent: 15 + rot: 3.141592653589793 rad + pos: -15.5,-28.5 - uid: 15759 components: - type: Transform parent: 15 rot: 3.141592653589793 rad pos: -13.5,-17.5 + - uid: 16362 + components: + - type: Transform + parent: 15 + rot: 3.141592653589793 rad + pos: -17.5,-28.5 - uid: 16437 components: - type: Transform @@ -161681,12 +162182,24 @@ entities: parent: 15 rot: 1.5707963267948966 rad pos: -51.5,-20.5 + - uid: 19026 + components: + - type: Transform + parent: 15 + rot: 3.141592653589793 rad + pos: -16.5,-28.5 - uid: 20073 components: - type: Transform parent: 15 rot: 1.5707963267948966 rad pos: -51.5,-24.5 + - uid: 21991 + components: + - type: Transform + parent: 15 + rot: 3.141592653589793 rad + pos: -18.5,-28.5 - uid: 23034 components: - type: Transform @@ -161747,6 +162260,12 @@ entities: parent: 17588 rot: 1.5707963267948966 rad pos: -40.5,-23.5 + - uid: 26240 + components: + - type: Transform + parent: 15 + rot: 3.141592653589793 rad + pos: -19.5,-28.5 - proto: Wirecutter entities: - uid: 4969 From 4bde1c1120f4ee4c119eea8bca8ca65f9d4a76c3 Mon Sep 17 00:00:00 2001 From: cashew <70486856+cashew-42@users.noreply.github.com> Date: Tue, 15 Sep 2026 08:05:17 +0000 Subject: [PATCH 139/197] Port Chat Follow functionality from AfterLight (#45375) * ports chat follow function from AL and removes PJB implementation forgor to commit earlier so it's just one chunk * fixes accidental MiscTab.xaml restructuring * fix name color * remove unused function * cvar summary * typo * accidental doc removal * fix test fail * fix test fail * like i said first pr :| * inject in constructor * adds chat links to Local, Whisper, LOOC and Dead Chat respects Admin ghost privacy * i hate chat code * remove cvar * single events file * adds CanGhostWarp back * filter for admin ghosts * move tag * remove ChatLinkTag.cs * fix speechbubble rendering * i want to bash my brain in * kill chatcode * formatting * testfail * still not working * atleast deadchat works now * even prettier TextLinkTag.cs * fix speechbubble rendering for looc * docs * renaming and better docs * Revert "remove cvar" This reverts commit 1acb168f * final changes (hopefully) * requested changes * can't parse - * change TextLinkTag again * formatting and typo Co-authored-by: Connor Huffine * quickfix * no logging for now actually * i will work on this in the morning * restructuring * wip * final restructuring and docs * still not done btw * review * docfix * actually we can filter for admin ghosts * doc * fix color * fix fix color * review * all I care to clean up * bold names * doc * admin warp * fixed * fsaasffsa * GOD ONCE SAID: GOOD ENOUGH * they call me the shuffler * admin chat links * forgor newline * fix? * actual fix * dumb stuff * chungus --------- Co-authored-by: Connor Huffine Co-authored-by: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> --- Content.Client/Chat/UI/SpeechBubble.cs | 8 +- .../Controls/GuidebookRichPrototypeLink.cs | 4 +- .../Controls/GuidebookWindow.xaml.cs | 2 +- .../Guidebook/Richtext/TextLinkTag.cs | 63 ------- Content.Client/Info/RulesControl.xaml.cs | 2 +- Content.Client/Options/UI/Tabs/MiscTab.xaml | 1 - .../Options/UI/Tabs/MiscTab.xaml.cs | 1 - .../UserInterface/Controls/TextLinkLabel.cs | 13 ++ .../RichText/TextLinkTag.Entity.cs | 63 +++++++ .../RichText/TextLinkTag.Plain.cs | 21 +++ .../UserInterface/RichText/TextLinkTag.cs | 160 ++++++++++++++++++ .../Systems/Chat/ChatUIController.cs | 5 +- .../Systems/Chat/Widgets/ChatBox.xaml.cs | 13 +- Content.Server/Chat/Managers/ChatManager.cs | 60 +------ Content.Server/Chat/Managers/IChatManager.cs | 2 - .../Chat/Systems/ChatSystem.PrivateAPI.cs | 11 +- .../Ghost/GhostFollowEntityCommand.cs | 26 --- Content.Server/Ghost/GhostSystem.cs | 61 +++---- .../Radio/EntitySystems/RadioSystem.cs | 27 +-- Content.Shared/CCVar/CCVars.Chat.cs | 6 + Content.Shared/CCVar/CCVars.Interface.cs | 6 - Content.Shared/Chat/MsgChatMessage.cs | 14 -- Content.Shared/Chat/SharedChatEvents.cs | 22 +++ Content.Shared/Chat/SharedChatSystem.Emote.cs | 2 +- Content.Shared/Chat/SharedChatSystem.cs | 103 ++++++++++- Content.Shared/Follower/FollowerSystem.cs | 2 +- .../Ghost/Systems/SharedGhostSystem.cs | 24 ++- .../en-US/chat/managers/chat-manager.ftl | 2 - .../en-US/escape-menu/ui/options-menu.ftl | 1 - 29 files changed, 471 insertions(+), 254 deletions(-) delete mode 100644 Content.Client/Guidebook/Richtext/TextLinkTag.cs create mode 100644 Content.Client/UserInterface/Controls/TextLinkLabel.cs create mode 100644 Content.Client/UserInterface/RichText/TextLinkTag.Entity.cs create mode 100644 Content.Client/UserInterface/RichText/TextLinkTag.Plain.cs create mode 100644 Content.Client/UserInterface/RichText/TextLinkTag.cs delete mode 100644 Content.Server/Ghost/GhostFollowEntityCommand.cs diff --git a/Content.Client/Chat/UI/SpeechBubble.cs b/Content.Client/Chat/UI/SpeechBubble.cs index 87b47d0fd8..ac57d92f7e 100644 --- a/Content.Client/Chat/UI/SpeechBubble.cs +++ b/Content.Client/Chat/UI/SpeechBubble.cs @@ -217,7 +217,7 @@ namespace Content.Client.Chat.UI OutlineColorOverride = TextOutline.Default.Color, }; - label.SetMessage(FormatSpeech(message.WrappedMessage, fontColor)); + label.SetMessage(FormatSpeech(message.WrappedMessage, fontColor), tagsAllowed: null); var panel = new PanelContainer { @@ -248,7 +248,7 @@ namespace Content.Client.Chat.UI OutlineColorOverride = TextOutline.Default.Color, }; - label.SetMessage(ExtractAndFormatSpeechSubstring(message, "BubbleContent", fontColor)); + label.SetMessage(ExtractAndFormatSpeechSubstring(message, "BubbleContent", fontColor), tagsAllowed: null); var unfanciedPanel = new PanelContainer { @@ -276,8 +276,8 @@ namespace Content.Client.Chat.UI }; //We'll be honest. *Yes* this is hacky. Doing this in a cleaner way would require a bottom-up refactor of how saycode handles sending chat messages. -Myr - bubbleHeader.SetMessage(ExtractAndFormatSpeechSubstring(message, "BubbleHeader", fontColor)); - bubbleContent.SetMessage(ExtractAndFormatSpeechSubstring(message, "BubbleContent", fontColor)); + bubbleHeader.SetMessage(ExtractAndFormatSpeechSubstring(message, "BubbleHeader", fontColor), tagsAllowed:null); + bubbleContent.SetMessage(ExtractAndFormatSpeechSubstring(message, "BubbleContent", fontColor), tagsAllowed:null); //As for below: Some day this could probably be converted to xaml. But that is not today. -Myr var mainPanel = new PanelContainer diff --git a/Content.Client/Guidebook/Controls/GuidebookRichPrototypeLink.cs b/Content.Client/Guidebook/Controls/GuidebookRichPrototypeLink.cs index 1e8b524997..64e71eca34 100644 --- a/Content.Client/Guidebook/Controls/GuidebookRichPrototypeLink.cs +++ b/Content.Client/Guidebook/Controls/GuidebookRichPrototypeLink.cs @@ -1,10 +1,10 @@ -using Content.Client.Guidebook.RichText; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using Robust.Shared.Input; using Robust.Shared.Prototypes; using Robust.Shared.Utility; using Content.Client.UserInterface.ControlExtensions; +using Content.Client.UserInterface.RichText; namespace Content.Client.Guidebook.Controls; @@ -28,7 +28,7 @@ public sealed class GuidebookRichPrototypeLink : Control, IPrototypeLinkControl DefaultCursorShape = CursorShape.Hand; - _richTextLabel.SetMessage(_message, null, TextLinkTag.LinkColor); + _richTextLabel.SetMessage(_message, null, TextLinkTag.DefaultLinkColor); } public GuidebookRichPrototypeLink() : base() diff --git a/Content.Client/Guidebook/Controls/GuidebookWindow.xaml.cs b/Content.Client/Guidebook/Controls/GuidebookWindow.xaml.cs index 223376b0aa..08a6cfd3d1 100644 --- a/Content.Client/Guidebook/Controls/GuidebookWindow.xaml.cs +++ b/Content.Client/Guidebook/Controls/GuidebookWindow.xaml.cs @@ -1,8 +1,8 @@ using System.Linq; -using Content.Client.Guidebook.RichText; using Content.Client.UserInterface.ControlExtensions; using Content.Client.UserInterface.Controls; using Content.Client.UserInterface.Controls.FancyTree; +using Content.Client.UserInterface.RichText; using Content.Client.UserInterface.Systems.Info; using Content.Shared.Guidebook; using Robust.Client.AutoGenerated; diff --git a/Content.Client/Guidebook/Richtext/TextLinkTag.cs b/Content.Client/Guidebook/Richtext/TextLinkTag.cs deleted file mode 100644 index a551b18473..0000000000 --- a/Content.Client/Guidebook/Richtext/TextLinkTag.cs +++ /dev/null @@ -1,63 +0,0 @@ -using System.Diagnostics.CodeAnalysis; -using JetBrains.Annotations; -using Robust.Client.UserInterface; -using Robust.Client.UserInterface.Controls; -using Robust.Client.UserInterface.RichText; -using Robust.Shared.Input; -using Robust.Shared.Utility; -using Content.Client.UserInterface.ControlExtensions; - -namespace Content.Client.Guidebook.RichText; - -[UsedImplicitly] -public sealed class TextLinkTag : IMarkupTagHandler -{ - public static Color LinkColor => Color.CornflowerBlue; - - public string Name => "textlink"; - - /// - public bool TryCreateControl(MarkupNode node, [NotNullWhen(true)] out Control? control) - { - if (!node.Value.TryGetString(out var text) - || !node.Attributes.TryGetValue("link", out var linkParameter) - || !linkParameter.TryGetString(out var link)) - { - control = null; - return false; - } - - var label = new Label(); - label.Text = text; - - label.MouseFilter = Control.MouseFilterMode.Stop; - label.FontColorOverride = LinkColor; - label.DefaultCursorShape = Control.CursorShape.Hand; - - label.OnMouseEntered += _ => label.FontColorOverride = Color.LightSkyBlue; - label.OnMouseExited += _ => label.FontColorOverride = Color.CornflowerBlue; - label.OnKeyBindDown += args => OnKeybindDown(args, link, label); - - control = label; - return true; - } - - private void OnKeybindDown(GUIBoundKeyEventArgs args, string link, Control? control) - { - if (args.Function != EngineKeyFunctions.UIClick) - return; - - if (control == null) - return; - - if (control.TryGetParentHandler(out var handler)) - handler.HandleClick(link); - else - Logger.Warning("Warning! No valid ILinkClickHandler found."); - } -} - -public interface ILinkClickHandler -{ - public void HandleClick(string link); -} diff --git a/Content.Client/Info/RulesControl.xaml.cs b/Content.Client/Info/RulesControl.xaml.cs index 2d4f6fce7b..d1228227a7 100644 --- a/Content.Client/Info/RulesControl.xaml.cs +++ b/Content.Client/Info/RulesControl.xaml.cs @@ -1,5 +1,5 @@ using Content.Client.Guidebook; -using Content.Client.Guidebook.RichText; +using Content.Client.UserInterface.RichText; using Content.Client.UserInterface.Systems.Info; using Content.Shared.Guidebook; using Robust.Client.AutoGenerated; diff --git a/Content.Client/Options/UI/Tabs/MiscTab.xaml b/Content.Client/Options/UI/Tabs/MiscTab.xaml index 42142efc94..c1733e209d 100644 --- a/Content.Client/Options/UI/Tabs/MiscTab.xaml +++ b/Content.Client/Options/UI/Tabs/MiscTab.xaml @@ -18,7 +18,6 @@ -
public static readonly CVarDef AdminStripMenuOverlayDefault = CVarDef.Create("ui.admin_strip_menu_overlay_default", true, CVar.CLIENTONLY | CVar.ARCHIVE); - - /// - /// If true, ghosts will see an "(F)" button next to chat messages, which can be used to follow the sender. - /// - public static readonly CVarDef InterfaceChatFollowButton = - CVarDef.Create("ui.chat_follow_button", true, CVar.CLIENT | CVar.REPLICATED | CVar.ARCHIVE); } diff --git a/Content.Shared/Chat/MsgChatMessage.cs b/Content.Shared/Chat/MsgChatMessage.cs index 4666648624..85367ffb73 100644 --- a/Content.Shared/Chat/MsgChatMessage.cs +++ b/Content.Shared/Chat/MsgChatMessage.cs @@ -53,20 +53,6 @@ namespace Content.Shared.Chat AudioPath = audioPath; AudioVolume = audioVolume; } - - public ChatMessage(ChatMessage copyFrom) - { - Channel = copyFrom.Channel; - Message = copyFrom.Message; - WrappedMessage = copyFrom.WrappedMessage; - SenderEntity = copyFrom.SenderEntity; - SenderKey = copyFrom.SenderKey; - HideChat = copyFrom.HideChat; - MessageColorOverride = copyFrom.MessageColorOverride; - AudioPath = copyFrom.AudioPath; - AudioVolume = copyFrom.AudioVolume; - Read = copyFrom.Read; - } } /// diff --git a/Content.Shared/Chat/SharedChatEvents.cs b/Content.Shared/Chat/SharedChatEvents.cs index 5701081b56..eea8a6060d 100644 --- a/Content.Shared/Chat/SharedChatEvents.cs +++ b/Content.Shared/Chat/SharedChatEvents.cs @@ -2,6 +2,7 @@ using Content.Shared.Inventory; using Content.Shared.Radio; using Content.Shared.Speech; using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; namespace Content.Shared.Chat; @@ -75,3 +76,24 @@ public sealed class EntitySpokeEvent : EntityEventArgs ObfuscatedMessage = obfuscatedMessage; } } + +/// +/// Checks if an entity link can be clicked on or not, so that it may be teleported to. +/// +/// Target we are attempting to teleport to. +/// If pure is true, will only act as an attempt event. If pure is false, will teleport to the entity. +[ByRefEvent] +public record struct ClickEntityLinkEvent(EntityUid Target, bool Pure) +{ + public bool Handled; +} + +/// +/// Net Message that is sent when a client clicks a link in the chat box. +/// +/// Target entity of the text link +[Serializable, NetSerializable] +public sealed class ChatLinkClickedRequestEvent(NetEntity target) : EntityEventArgs +{ + public readonly NetEntity Target = target; +} diff --git a/Content.Shared/Chat/SharedChatSystem.Emote.cs b/Content.Shared/Chat/SharedChatSystem.Emote.cs index 1a62b7123a..eede09d44f 100644 --- a/Content.Shared/Chat/SharedChatSystem.Emote.cs +++ b/Content.Shared/Chat/SharedChatSystem.Emote.cs @@ -96,7 +96,7 @@ public abstract partial class SharedChatSystem if (didEmote && emote.ChatMessages.Count != 0) { // not all emotes are loc'd, but for the ones that are we pass in entity - var action = Loc.GetString(_random.Pick(emote.ChatMessages), ("entity", source)); + var action = Loc.GetString(Random.Pick(emote.ChatMessages), ("entity", source)); SendEntityEmote(source, action, range, nameOverride, hideLog: hideLog, checkEmote: false, ignoreActionBlocker: ignoreActionBlocker); } diff --git a/Content.Shared/Chat/SharedChatSystem.cs b/Content.Shared/Chat/SharedChatSystem.cs index a4df6ff26d..e851dfda34 100644 --- a/Content.Shared/Chat/SharedChatSystem.cs +++ b/Content.Shared/Chat/SharedChatSystem.cs @@ -1,6 +1,8 @@ using System.Collections.Frozen; +using System.Linq; using System.Text.RegularExpressions; using Content.Shared.ActionBlocker; +using Content.Shared.CCVar; using Content.Shared.Chat.Prototypes; using Content.Shared.Popups; using Content.Shared.Radio; @@ -8,6 +10,7 @@ using Content.Shared.Speech; using Content.Shared.Whitelist; using Robust.Shared.Audio; using Robust.Shared.Audio.Systems; +using Robust.Shared.Configuration; using Robust.Shared.Console; using Robust.Shared.Network; using Robust.Shared.Player; @@ -40,16 +43,19 @@ public abstract partial class SharedChatSystem : EntitySystem = new SoundPathSpecifier("/Audio/Announcements/announce.ogg"); public static readonly ProtoId CommonChannel = "Common"; + public bool ChatNameLinks { get; private set; } public static readonly string DefaultChannelPrefix = $"{RadioChannelPrefix}{DefaultChannelKey}"; public static readonly ProtoId DefaultSpeechVerb = "Default"; - [Dependency] private SharedPopupSystem _popup = default!; - [Dependency] private EntityWhitelistSystem _whitelist = default!; - [Dependency] private ActionBlockerSystem _actionBlocker = default!; - [Dependency] private SharedAudioSystem _audio = default!; - [Dependency] private IRobustRandom _random = default!; + [Dependency] protected IConfigurationManager Config = default!; [Dependency] private INetManager _net = default!; + [Dependency] protected IRobustRandom Random = default!; + [Dependency] private ISharedPlayerManager _player = default!; + [Dependency] private ActionBlockerSystem _actionBlocker = default!; + [Dependency] private EntityWhitelistSystem _whitelist = default!; + [Dependency] private SharedAudioSystem _audio = default!; + [Dependency] private SharedPopupSystem _popup = default!; /// /// Cache of the keycodes for faster lookup. @@ -63,8 +69,11 @@ public abstract partial class SharedChatSystem : EntitySystem DebugTools.Assert(ProtoMan.HasIndex(CommonChannel)); SubscribeLocalEvent(OnPrototypeReload); + SubscribeAllEvent(OnChatMessageLinkClicked); CacheRadios(); CacheEmotes(); + + Subs.CVar(Config, CCVars.ChatNameLinks, v => ChatNameLinks = v, true); } protected virtual void OnPrototypeReload(PrototypesReloadedEventArgs obj) @@ -76,6 +85,20 @@ public abstract partial class SharedChatSystem : EntitySystem CacheEmotes(); } + private void OnChatMessageLinkClicked(ChatLinkClickedRequestEvent msg, EntitySessionEventArgs args) + { + if (!ChatNameLinks) + return; + + if (GetEntity(msg.Target) is not { Valid: true } target || !Exists(target)) + return; + + if (args.SenderSession.AttachedEntity is not { Valid: true } ent) + return; + + ClickMessageSender(target, ent); + } + private void CacheRadios() { _keyCodes = ProtoMan.EnumeratePrototypes() @@ -273,7 +296,10 @@ public abstract partial class SharedChatSystem : EntitySystem return trimmed; } - public static string InjectTagInsideTag(ChatMessage message, string outerTag, string innerTag, string? tagParameter) + /// + /// Injects a tag inside the first found instance of a specific string in a . + /// + public static string InjectTagInsideTag(ChatMessage message, string outerTag, string innerTag, string? tagValue = null, params (string Key, string Value)[]? tagParameters) { var rawmsg = message.WrappedMessage; var tagStart = rawmsg.IndexOf($"[{outerTag}]"); @@ -282,9 +308,14 @@ public abstract partial class SharedChatSystem : EntitySystem return rawmsg; tagStart += outerTag.Length + 2; - string innerTagProcessed = tagParameter != null ? $"[{innerTag}={tagParameter}]" : $"[{innerTag}]"; - rawmsg = rawmsg.Insert(tagEnd, $"[/{innerTag}]"); + if (tagValue != null) + innerTag = $"{innerTag}=\"{FormattedMessage.EscapeText(tagValue)}\""; + + var innerTagProcessed = tagParameters == null + ? $"[{innerTag}]" + : $"[{innerTag} {string.Join(" ", tagParameters.Select(t => $"{FormattedMessage.EscapeText(t.Key)}=\"{FormattedMessage.RemoveMarkupPermissive(t.Value)}\""))}]"; + rawmsg = rawmsg.Insert(tagStart, innerTagProcessed); return rawmsg; @@ -304,6 +335,62 @@ public abstract partial class SharedChatSystem : EntitySystem return rawmsg; } + /// + public bool CanClickMessageSender(NetEntity target, EntityUid? ent = null) + { + return CanClickMessageSender(GetEntity(target), ent); + } + + /// + /// Checks whether an entity can click a chat message link. + /// + /// Target of the message link + /// Entity that is attempting to click the chat message, defaults to attached player entity if null. + /// True if the entity is able to click the link + public bool CanClickMessageSender(EntityUid target, EntityUid? ent = null) + { + ent ??= _player.LocalEntity; + if (ent == null) + return false; + + if (!CanClick(target, ent.Value)) + return false; + + var ev = new ClickEntityLinkEvent(target, true); + RaiseLocalEvent(ent.Value, ref ev); + return ev.Handled; + } + + private bool CanClick(EntityUid target, EntityUid ent) + { + if (!ChatNameLinks) + return false; + + if (ent == target) + return false; + + return true; + } + + /// + /// Teleports an entity to a target via + /// + /// Target we are attempted to teleport to + /// Entity that is attempting to warp + /// True if warp was successful. + public void ClickMessageSender(EntityUid target, EntityUid? ent = null) + { + ent ??= _player.LocalEntity; + if (ent == null) + return; + + if (!CanClick(target, ent.Value)) + return; + + var ev = new ClickEntityLinkEvent(target, false); + RaiseLocalEvent(ent.Value, ref ev); + } + public static string GetStringInsideTag(ChatMessage message, string tag) { var rawmsg = message.WrappedMessage; diff --git a/Content.Shared/Follower/FollowerSystem.cs b/Content.Shared/Follower/FollowerSystem.cs index 711089c329..a598d08760 100644 --- a/Content.Shared/Follower/FollowerSystem.cs +++ b/Content.Shared/Follower/FollowerSystem.cs @@ -37,7 +37,7 @@ public sealed partial class FollowerSystem : EntitySystem [Dependency] private IRobustRandom _random = default!; private static readonly ProtoId ForceableFollowTag = "ForceableFollow"; - private static readonly ProtoId PreventGhostnadoWarpTag = "NotGhostnadoWarpable"; + public static readonly ProtoId PreventGhostnadoWarpTag = "NotGhostnadoWarpable"; public override void Initialize() { diff --git a/Content.Shared/Ghost/Systems/SharedGhostSystem.cs b/Content.Shared/Ghost/Systems/SharedGhostSystem.cs index aa068f174c..5b90715e70 100644 --- a/Content.Shared/Ghost/Systems/SharedGhostSystem.cs +++ b/Content.Shared/Ghost/Systems/SharedGhostSystem.cs @@ -1,10 +1,14 @@ +using Content.Shared.Administration.Managers; +using Content.Shared.Chat; using Content.Shared.Emoting; using Content.Shared.Examine; +using Content.Shared.Follower; using Content.Shared.Ghost.Components; using Content.Shared.Hands; using Content.Shared.Interaction.Events; using Content.Shared.Item; using Content.Shared.Popups; +using Content.Shared.Tag; using Robust.Shared.Serialization; using Robust.Shared.Timing; @@ -16,8 +20,11 @@ namespace Content.Shared.Ghost.Systems; /// public abstract partial class SharedGhostSystem : EntitySystem { + [Dependency] protected IGameTiming GameTiming = default!; + [Dependency] private ISharedAdminManager _admin = default!; + [Dependency] private FollowerSystem _follower = default!; [Dependency] protected SharedPopupSystem Popup = default!; - [Dependency] protected IGameTiming _gameTiming = default!; + [Dependency] private TagSystem _tag = default!; public override void Initialize() { @@ -32,7 +39,7 @@ public abstract partial class SharedGhostSystem : EntitySystem private void OnGhostExamine(EntityUid uid, GhostComponent component, ExaminedEvent args) { - var timeSinceDeath = _gameTiming.RealTime.Subtract(component.TimeOfDeath); + var timeSinceDeath = GameTiming.RealTime.Subtract(component.TimeOfDeath); var deathTimeInfo = timeSinceDeath.Minutes > 0 ? Loc.GetString("comp-ghost-examine-time-minutes", ("minutes", timeSinceDeath.Minutes)) : Loc.GetString("comp-ghost-examine-time-seconds", ("seconds", timeSinceDeath.Seconds)); @@ -115,6 +122,19 @@ public abstract partial class SharedGhostSystem : EntitySystem entity.Comp.CanGhostInteract = value; Dirty(entity); } + + [SubscribeLocalEvent] + private void OnGhostClickMessageSenderAttempt(Entity ent, ref ClickEntityLinkEvent args) + { + if (args.Handled) + return; + + if (_admin.IsAdmin(ent) || !_tag.HasTag(args.Target, FollowerSystem.PreventGhostnadoWarpTag)) //tag is used on any ghost that shouldn't be teleported to + args.Handled = true; + + if (!args.Pure) + _follower.StartFollowingEntity(ent, args.Target); + } } /// diff --git a/Resources/Locale/en-US/chat/managers/chat-manager.ftl b/Resources/Locale/en-US/chat/managers/chat-manager.ftl index 3fffe0db55..45d63bea85 100644 --- a/Resources/Locale/en-US/chat/managers/chat-manager.ftl +++ b/Resources/Locale/en-US/chat/managers/chat-manager.ftl @@ -58,8 +58,6 @@ chat-manager-admin-channel-name = ADMIN chat-manager-rate-limited = You are sending messages too quickly! chat-manager-rate-limit-admin-announcement = Rate limit warning: { $player } -chat-manager-follow-button = (F) - ## Speech verbs for chat chat-speech-verb-suffix-exclamation = ! diff --git a/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl b/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl index 7b6caf1829..5996e122b8 100644 --- a/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl +++ b/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl @@ -63,7 +63,6 @@ ui-options-show-ooc-patron-color = Show OOC Patreon color ui-options-show-looc-on-head = Show LOOC chat above characters head ui-options-fancy-speech = Show names in speech bubbles ui-options-fancy-name-background = Add background to speech bubble names -ui-options-chat-follow-button = As ghost, show a follow button next to chat messages ui-options-vsync = VSync ui-options-max-fps = Maximum FPS: ui-options-max-fps-display-rate = Display Rate From 04c3240726460b9fa3bca5de5872f8a2ee30e5c9 Mon Sep 17 00:00:00 2001 From: JiyuSoftware Date: Tue, 15 Sep 2026 18:50:06 +0000 Subject: [PATCH 140/197] Minor Sushi update (#46039) --- Resources/Maps/Shuttles/emergency_sushi.yml | 84 +- Resources/Maps/sushi.yml | 1560 ++++++++++++------- 2 files changed, 1050 insertions(+), 594 deletions(-) diff --git a/Resources/Maps/Shuttles/emergency_sushi.yml b/Resources/Maps/Shuttles/emergency_sushi.yml index dd37bac555..0c52680dc3 100644 --- a/Resources/Maps/Shuttles/emergency_sushi.yml +++ b/Resources/Maps/Shuttles/emergency_sushi.yml @@ -1,11 +1,11 @@ meta: format: 7 category: Grid - engineVersion: 289.0.0 + engineVersion: 289.0.3 forkId: "" forkVersion: "" - time: 09/11/2026 19:43:19 - entityCount: 1407 + time: 09/15/2026 18:19:55 + entityCount: 1411 maps: [] grids: - 1 @@ -166,7 +166,7 @@ entities: -4,-1: 0: 26239 -5,-1: - 1: 2048 + 1: 34816 -4,-5: 0: 61166 -4,0: @@ -203,7 +203,7 @@ entities: -4,1: 0: 26231 -5,1: - 1: 2048 + 1: 34816 -4,2: 0: 65398 -5,2: @@ -6431,11 +6431,11 @@ entities: pos: -9.5,2.5 - proto: LockerEvacRepairFilled entities: - - uid: 966 + - uid: 996 components: - type: Transform parent: 1 - pos: -2.5,-18.5 + pos: -2.5,-16.5 - proto: LockerMedicineFilled entities: - uid: 967 @@ -6558,6 +6558,12 @@ entities: pos: -1.345274,18.11729 - proto: PlasmaReinforcedWindowDirectional entities: + - uid: 1049 + components: + - type: Transform + parent: 1 + rot: 1.5707963267948966 rad + pos: -2.5,-14.5 - uid: 1408 components: - type: Transform @@ -6570,6 +6576,14 @@ entities: parent: 1 rot: 1.5707963267948966 rad pos: -2.5,-15.5 +- proto: PlasmaReinforcedWindowDirectionalCorner + entities: + - uid: 998 + components: + - type: Transform + parent: 1 + rot: 3.141592653589793 rad + pos: -2.5,-16.5 - proto: PlasticFlapsAirtightClear entities: - uid: 722 @@ -6958,6 +6972,20 @@ entities: - type: Transform parent: 1 pos: -1.5,-11.5 +- proto: ReinforcedPlasmaWindow + entities: + - uid: 828 + components: + - type: Transform + parent: 1 + rot: 3.141592653589793 rad + pos: -1.5,-14.5 + - uid: 966 + components: + - type: Transform + parent: 1 + rot: 3.141592653589793 rad + pos: -0.5,-14.5 - proto: Screen entities: - uid: 333 @@ -7097,11 +7125,6 @@ entities: - type: Transform parent: 1 pos: -5.5,22.5 - - uid: 1067 - components: - - type: Transform - parent: 1 - pos: -1.5,-14.5 - uid: 1068 components: - type: Transform @@ -7172,11 +7195,6 @@ entities: - type: Transform parent: 1 pos: -10.5,-20.5 - - uid: 1082 - components: - - type: Transform - parent: 1 - pos: -0.5,-14.5 - uid: 1083 components: - type: Transform @@ -7359,12 +7377,12 @@ entities: pos: -13.5,2.5 - proto: SignAtmos entities: - - uid: 1119 + - uid: 935 components: - type: Transform parent: 1 rot: 3.141592653589793 rad - pos: -0.5,-14.5 + pos: 0.5,-14.5 - proto: SignBridge entities: - uid: 1120 @@ -7613,6 +7631,11 @@ entities: pos: -10.5,2.5 - proto: TableReinforced entities: + - uid: 335 + components: + - type: Transform + parent: 1 + pos: -2.5,-18.5 - uid: 1160 components: - type: Transform @@ -7643,11 +7666,6 @@ entities: - type: Transform parent: 1 pos: -12.5,-3.5 - - uid: 1167 - components: - - type: Transform - parent: 1 - pos: -2.5,-16.5 - uid: 1168 components: - type: Transform @@ -7915,11 +7933,11 @@ entities: pos: -3.5,-21.5 - proto: ToolboxElectricalFilled entities: - - uid: 1217 + - uid: 1067 components: - type: Transform parent: 1 - pos: -2.5180264,-16.460123 + pos: -2.5758772,-18.479002 - proto: TwoWayLever entities: - uid: 1218 @@ -9739,4 +9757,18 @@ entities: parent: 1 rot: 3.141592653589793 rad pos: -8.5,12.5 +- proto: WindowReinforcedDirectionalCorner + entities: + - uid: 1021 + components: + - type: Transform + parent: 1 + rot: -1.5707963267948966 rad + pos: -4.5,-16.5 + - uid: 1050 + components: + - type: Transform + parent: 1 + rot: 1.5707963267948966 rad + pos: -2.5,-16.5 ... diff --git a/Resources/Maps/sushi.yml b/Resources/Maps/sushi.yml index 1a79c52d81..b618844dc0 100644 --- a/Resources/Maps/sushi.yml +++ b/Resources/Maps/sushi.yml @@ -1,73 +1,73 @@ meta: format: 7 category: Map - engineVersion: 289.0.0 + engineVersion: 289.0.3 forkId: "" forkVersion: "" - time: 09/11/2026 19:41:31 - entityCount: 25440 + time: 09/15/2026 18:12:53 + entityCount: 25496 maps: - 1 grids: - 2 orphans: [] nullspace: -- 25385 -- 25386 -- 25387 -- 25388 -- 25389 -- 25390 -- 25391 -- 25392 -- 25393 -- 25394 -- 25395 -- 25396 -- 25397 -- 25398 -- 25399 -- 25400 -- 25401 -- 25402 -- 25403 -- 25404 -- 25405 -- 25406 -- 25407 -- 25408 -- 25409 -- 25410 -- 25411 -- 25412 -- 25413 -- 25414 -- 25415 -- 25416 -- 25417 -- 25418 -- 25419 -- 25420 -- 25421 -- 25422 -- 25423 -- 25424 -- 25425 -- 25426 -- 25427 -- 25428 -- 25429 -- 25430 -- 25431 -- 25432 -- 25433 -- 25434 -- 25435 -- 25436 -- 25437 -- 25438 -- 25439 -- 25440 +- 25441 +- 25442 +- 25443 +- 25444 +- 25445 +- 25446 +- 25447 +- 25448 +- 25449 +- 25450 +- 25451 +- 25452 +- 25453 +- 25454 +- 25455 +- 25456 +- 25457 +- 25458 +- 25459 +- 25460 +- 25461 +- 25462 +- 25463 +- 25464 +- 25465 +- 25466 +- 25467 +- 25468 +- 25469 +- 25470 +- 25471 +- 25472 +- 25473 +- 25474 +- 25475 +- 25476 +- 25477 +- 25478 +- 25479 +- 25480 +- 25481 +- 25482 +- 25483 +- 25484 +- 25485 +- 25486 +- 25487 +- 25488 +- 25489 +- 25490 +- 25491 +- 25492 +- 25493 +- 25494 +- 25495 +- 25496 tilemap: 0: Space 18: FloorArcadeBlue @@ -237,7 +237,7 @@ entities: version: 7 3,5: ind: 3,5 - tiles: BwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAABsAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAQAAAAAAABYAAAAAAAAWAAAAAAAAFgAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAAAEAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAAAHAAAAAAAAAQAAAAAAAAEAAAAAAAAHAAAAAAAAAQAAAAAAAAEAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAQAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAQAAAAAAAAbAAAAAAAABwAAAAAAAAEAAAAAAAABAAAAAAAABwAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAEAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAABAAAAAAAABAAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAHAAAAAAAAAQAAAAAAAAEAAAAAAAAHAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAQAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABwAAAAAAAAEAAAAAAAABAAAAAAAABwAAAAAAAAEAAAAAAAABAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAEAAAAAAAAbAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAAAYAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAHAAAAAAAAAQAAAAAAAAEAAAAAAAAHAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABwAAAAAAAAEAAAAAAAABAAAAAAAABwAAAAAAAAIAAAAABAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAACwAAAAAAAAsAAAAAAAAEAAAAAAAABAAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAcAAAAAAAACAAAAAAIAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAsAAAAAAAALAAAAAAAABAAAAAAAAAQAAAAAAAAHAAAAAAAAAQAAAAAAAAEAAAAAAAAHAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAUAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAABwAAAAAAAAEAAAAAAAABAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAHAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAA== + tiles: BwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAABsAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAQAAAAAAABYAAAAAAAAWAAAAAAAAFgAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAcAAAAAAAAEAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAAAEAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAAAHAAAAAAAAAQAAAAAAAAEAAAAAAAAHAAAAAAAABAAAAAAAAAEAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAQAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAAQAAAAAAAAbAAAAAAAABwAAAAAAAAEAAAAAAAABAAAAAAAABwAAAAAAABsAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAEAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAABAAAAAAAABAAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAHAAAAAAAAAQAAAAAAAAEAAAAAAAAHAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAQAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABwAAAAAAAAEAAAAAAAABAAAAAAAABwAAAAAAAAEAAAAAAAABAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAEAAAAAAAAbAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAGwAAAAAAAAYAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAHAAAAAAAAAQAAAAAAAAEAAAAAAAAHAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABwAAAAAAAAEAAAAAAAABAAAAAAAABwAAAAAAAAIAAAAABAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAACwAAAAAAAAsAAAAAAAAEAAAAAAAABAAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAcAAAAAAAACAAAAAAIAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAsAAAAAAAALAAAAAAAABAAAAAAAAAQAAAAAAAAHAAAAAAAAAQAAAAAAAAEAAAAAAAAHAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAUAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAABwAAAAAAAAEAAAAAAAABAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAHAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAA== version: 7 3,6: ind: 3,6 @@ -1293,7 +1293,7 @@ entities: 15,12: 2: 62383 16,8: - 2: 48059 + 2: 49083 16,9: 2: 48051 16,10: @@ -2874,62 +2874,62 @@ entities: - type: GridSplitNode - type: ChunkContainer chunkEntities: - - 25385 - - 25386 - - 25387 - - 25388 - - 25389 - - 25390 - - 25391 - - 25392 - - 25393 - - 25394 - - 25395 - - 25396 - - 25397 - - 25398 - - 25399 - - 25400 - - 25401 - - 25402 - - 25403 - - 25404 - - 25405 - - 25406 - - 25407 - - 25408 - - 25409 - - 25410 - - 25411 - - 25412 - - 25413 - - 25414 - - 25415 - - 25416 - - 25417 - - 25418 - - 25419 - - 25420 - - 25421 - - 25422 - - 25423 - - 25424 - - 25425 - - 25426 - - 25427 - - 25428 - - 25429 - - 25430 - - 25431 - - 25432 - - 25433 - - 25434 - - 25435 - - 25436 - - 25437 - - 25438 - - 25439 - - 25440 + - 25441 + - 25442 + - 25443 + - 25444 + - 25445 + - 25446 + - 25447 + - 25448 + - 25449 + - 25450 + - 25451 + - 25452 + - 25453 + - 25454 + - 25455 + - 25456 + - 25457 + - 25458 + - 25459 + - 25460 + - 25461 + - 25462 + - 25463 + - 25464 + - 25465 + - 25466 + - 25467 + - 25468 + - 25469 + - 25470 + - 25471 + - 25472 + - 25473 + - 25474 + - 25475 + - 25476 + - 25477 + - 25478 + - 25479 + - 25480 + - 25481 + - 25482 + - 25483 + - 25484 + - 25485 + - 25486 + - 25487 + - 25488 + - 25489 + - 25490 + - 25491 + - 25492 + - 25493 + - 25494 + - 25495 + - 25496 - proto: AcousticGuitarInstrument entities: - uid: 3 @@ -3201,21 +3201,6 @@ entities: - 11688 - 11687 - 11689 - - uid: 20 - components: - - type: MetaData - name: Air Alarm Tools - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 61.5,75.5 - - type: DeviceList - devices: - - 15008 - - 575 - - 15184 - - 11691 - - 11690 - uid: 21 components: - type: MetaData @@ -3363,22 +3348,6 @@ entities: - 613 - 11524 - 15123 - - uid: 30 - components: - - type: MetaData - name: Air Alarm Psychology - - type: Transform - parent: 2 - pos: 110.5,48.5 - - type: AccessReader - accessListsOriginal: - - - Atmospherics - - type: DeviceList - devices: - - 15210 - - 605 - - 15031 - - 11548 - uid: 31 components: - type: MetaData @@ -4417,21 +4386,6 @@ entities: - 15276 - 680 - 15102 - - uid: 87 - components: - - type: MetaData - name: Air Alarm Botany Deliveries - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 65.5,81.5 - - type: DeviceList - devices: - - 15283 - - 15106 - - 685 - - 11675 - - 11669 - uid: 88 components: - type: MetaData @@ -5172,21 +5126,6 @@ entities: - 15142 - 717 - 14967 - - uid: 134 - components: - - type: MetaData - desc: Air Alarm Medical Deliveries - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 100.5,47.5 - - type: DeviceList - devices: - - 600 - - 15030 - - 15207 - - 11612 - - 11578 - uid: 527 components: - type: MetaData @@ -5240,6 +5179,19 @@ entities: - 10264 - 10262 - 520 + - uid: 11936 + components: + - type: MetaData + name: Air Alarm Psychology + - type: Transform + parent: 2 + pos: 109.5,48.5 + - type: DeviceList + devices: + - 15210 + - 605 + - 15031 + - 11548 - uid: 17437 components: - type: MetaData @@ -5254,6 +5206,21 @@ entities: - 14964 - 11555 - 15309 + - uid: 17654 + components: + - type: MetaData + name: Air Alarm Botany Deliveries + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 63.5,76.5 + - type: DeviceList + devices: + - 15283 + - 15106 + - 25402 + - 11675 + - 11669 - uid: 17782 components: - type: MetaData @@ -5273,6 +5240,36 @@ entities: - 117 - 24001 - 23999 + - uid: 17794 + components: + - type: MetaData + name: Air Alarm Tools + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 61.5,74.5 + - type: DeviceList + devices: + - 15008 + - 575 + - 15184 + - 11691 + - 11690 + - uid: 20226 + components: + - type: MetaData + name: Air Alarm Medical Deliveries + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 96.5,51.5 + - type: DeviceList + devices: + - 600 + - 15030 + - 15207 + - 11612 + - 11578 - uid: 20641 components: - type: MetaData @@ -6689,18 +6686,18 @@ entities: pos: 72.5,82.5 - proto: AirlockGlass entities: + - uid: 134 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 51.5,67.5 - uid: 310 components: - type: Transform parent: 2 rot: -1.5707963267948966 rad pos: 104.5,87.5 - - uid: 311 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 51.5,67.5 - uid: 312 components: - type: Transform @@ -7053,18 +7050,18 @@ entities: pos: 94.5,111.5 - proto: AirlockHydroGlassLocked entities: + - uid: 311 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 52.5,82.5 - uid: 375 components: - type: Transform parent: 2 rot: -1.5707963267948966 rad pos: 52.5,81.5 - - uid: 376 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 52.5,82.5 - uid: 377 components: - type: Transform @@ -7811,11 +7808,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 115.5,54.5 - - uid: 504 - components: - - type: Transform - parent: 2 - pos: 111.5,48.5 - uid: 505 components: - type: Transform @@ -7868,6 +7860,11 @@ entities: pos: 92.5,95.5 - proto: AirlockMedicalLocked entities: + - uid: 376 + components: + - type: Transform + parent: 2 + pos: 111.5,48.5 - uid: 513 components: - type: Transform @@ -8338,8 +8335,8 @@ entities: pos: 56.5,73.5 - type: DeviceNetwork deviceLists: - - 20 - 11490 + - 17794 - uid: 576 components: - type: Transform @@ -8375,7 +8372,7 @@ entities: - type: DeviceNetwork deviceLists: - 23 - - 11463 + - 10669 - uid: 581 components: - type: Transform @@ -8531,7 +8528,7 @@ entities: - type: DeviceNetwork deviceLists: - 11432 - - 134 + - 20226 - uid: 601 components: - type: Transform @@ -8573,7 +8570,7 @@ entities: pos: 110.5,46.5 - type: DeviceNetwork deviceLists: - - 30 + - 11936 - uid: 606 components: - type: Transform @@ -9172,14 +9169,6 @@ entities: deviceLists: - 88 - 137 - - uid: 685 - components: - - type: Transform - parent: 2 - pos: 64.5,81.5 - - type: DeviceNetwork - deviceLists: - - 87 - uid: 686 components: - type: Transform @@ -9596,6 +9585,15 @@ entities: deviceLists: - 527 - 11451 + - uid: 25402 + components: + - type: Transform + parent: 2 + pos: 60.5,80.5 + - type: DeviceNetwork + deviceLists: + - 11457 + - 17654 - proto: AirSensorFreezer entities: - uid: 723 @@ -9692,14 +9690,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 92.5,50.5 - - uid: 745 - components: - - type: MetaData - name: APC Comms - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 43.5,43.5 - uid: 746 components: - type: MetaData @@ -10415,6 +10405,13 @@ entities: - type: Transform parent: 2 pos: 92.5,47.5 + - uid: 25430 + components: + - type: MetaData + name: APC Comms + - type: Transform + parent: 2 + pos: 42.5,44.5 - proto: APCElectronics entities: - uid: 832 @@ -13957,12 +13954,6 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 74.5,97.5 - - uid: 1193 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 108.5,47.5 - uid: 1194 components: - type: Transform @@ -14007,6 +13998,12 @@ entities: - type: Transform parent: 2 pos: 110.5,65.5 + - uid: 19553 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 110.5,44.5 - proto: ButtonFrameWhite entities: - uid: 1186 @@ -14216,11 +14213,6 @@ entities: - type: Transform parent: 2 pos: 58.5,24.5 - - uid: 1229 - components: - - type: Transform - parent: 2 - pos: 43.5,43.5 - uid: 1230 components: - type: Transform @@ -31063,6 +31055,11 @@ entities: - type: Transform parent: 2 pos: 123.5,41.5 + - uid: 25432 + components: + - type: Transform + parent: 2 + pos: 42.5,44.5 - proto: CableApcExtensionUncuttable entities: - uid: 525 @@ -37213,7 +37210,7 @@ entities: components: - type: Transform parent: 2 - pos: 43.5,43.5 + pos: 104.5,49.5 - uid: 5609 components: - type: Transform @@ -43554,11 +43551,6 @@ entities: - type: Transform parent: 2 pos: 17.5,69.5 - - uid: 6896 - components: - - type: Transform - parent: 2 - pos: 104.5,49.5 - uid: 6897 components: - type: Transform @@ -43789,6 +43781,11 @@ entities: - type: Transform parent: 2 pos: 58.5,35.5 + - uid: 25431 + components: + - type: Transform + parent: 2 + pos: 42.5,44.5 - proto: CableMVStack10 entities: - uid: 6902 @@ -52906,6 +52903,12 @@ entities: - type: Transform parent: 2 pos: 98.5,17.5 + - uid: 11938 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 59.5,69.5 - uid: 12424 components: - type: Transform @@ -54714,7 +54717,7 @@ entities: pos: 66.612854,88.45277 - proto: ChunkEntity entities: - - uid: 25385 + - uid: 25441 components: - type: ChunkEntity root: 2 @@ -54810,7 +54813,7 @@ entities: 190: 74,100 191: 74,101 192: 74,102 - - uid: 25386 + - uid: 25442 components: - type: ChunkEntity root: 2 @@ -54863,7 +54866,6 @@ entities: 88: 53,85 96: 53,83 97: 53,87 - 3192: 52,81 - node: id: BrickTileDarkInnerSw color: '#FFFFFFFF' @@ -54921,7 +54923,6 @@ entities: 102: 56,81 103: 58,81 104: 57,81 - 105: 52,81 - node: id: BrickTileDarkLineW color: '#FFFFFFFF' @@ -54969,8 +54970,6 @@ entities: 26: 53,84 27: 53,83 32: 53,82 - 34: 52,82 - 35: 52,81 36: 53,81 40: 54,81 41: 55,81 @@ -55059,7 +55058,7 @@ entities: 259: 61,92 260: 62,92 261: 63,92 - - uid: 25387 + - uid: 25443 components: - type: ChunkEntity root: 2 @@ -55136,7 +55135,7 @@ entities: color: '#FFFF41FF' decals: 4605: 14,84 - - uid: 25388 + - uid: 25444 components: - type: ChunkEntity root: 2 @@ -55507,7 +55506,7 @@ entities: decals: 1019: 127,62 1026: 127,63 - - uid: 25389 + - uid: 25445 components: - type: ChunkEntity root: 2 @@ -55757,7 +55756,7 @@ entities: 1834: 98,87 1835: 102,87 5469: 103,87 - - uid: 25390 + - uid: 25446 components: - type: ChunkEntity root: 2 @@ -56072,7 +56071,7 @@ entities: color: '#FFFFFFFF' decals: 1827: 97,111 - - uid: 25391 + - uid: 25447 components: - type: ChunkEntity root: 2 @@ -56328,7 +56327,7 @@ entities: decals: 5587: 125.88849,107.376595 5588: 124.99786,105.532845 - - uid: 25392 + - uid: 25448 components: - type: ChunkEntity root: 2 @@ -56427,7 +56426,7 @@ entities: decals: 2549: 33,48 2550: 34,48 - - uid: 25393 + - uid: 25449 components: - type: ChunkEntity root: 2 @@ -56673,7 +56672,7 @@ entities: color: '#FFFFFFFF' decals: 3165: 123,81 - - uid: 25394 + - uid: 25450 components: - type: ChunkEntity root: 2 @@ -56714,7 +56713,7 @@ entities: color: '#EFB34196' decals: 2577: 31,48 - - uid: 25395 + - uid: 25451 components: - type: ChunkEntity root: 2 @@ -57006,7 +57005,7 @@ entities: color: '#FFFFFFFF' decals: 1017: 127,64 - - uid: 25396 + - uid: 25452 components: - type: ChunkEntity root: 2 @@ -57278,7 +57277,7 @@ entities: 53: 69,67 54: 70,67 55: 71,67 - - uid: 25397 + - uid: 25453 components: - type: ChunkEntity root: 2 @@ -57450,7 +57449,7 @@ entities: cleanable: True decals: 3888: 71.988,20.082733 - - uid: 25398 + - uid: 25454 components: - type: ChunkEntity root: 2 @@ -57777,7 +57776,7 @@ entities: cleanable: True decals: 4132: 97.00392,57.905205 - - uid: 25399 + - uid: 25455 components: - type: ChunkEntity root: 2 @@ -58133,7 +58132,7 @@ entities: decals: 1504: 100,76 5400: 98,76 - - uid: 25400 + - uid: 25456 components: - type: ChunkEntity root: 2 @@ -58201,6 +58200,13 @@ entities: id: HalfTileOverlayGreyscale color: '#D4D4D496' decals: + 18: 59,75 + 19: 58,75 + 20: 57,75 + 21: 56,75 + 22: 55,75 + 23: 54,75 + 24: 53,75 1787: 53,69 1788: 54,69 1789: 55,69 @@ -58215,6 +58221,12 @@ entities: id: HalfTileOverlayGreyscale180 color: '#D4D4D496' decals: + 3: 53,71 + 4: 54,71 + 5: 55,71 + 6: 56,71 + 7: 57,71 + 8: 58,71 1797: 56,65 1798: 55,65 1799: 54,65 @@ -58228,12 +58240,16 @@ entities: id: HalfTileOverlayGreyscale270 color: '#D4D4D496' decals: + 26: 52,73 1802: 52,66 1804: 52,68 - node: id: HalfTileOverlayGreyscale90 color: '#D4D4D496' decals: + 10: 60,72 + 15: 60,73 + 16: 60,74 1792: 57,68 1795: 57,66 - node: @@ -58251,21 +58267,25 @@ entities: id: ThreeQuarterTileOverlayGreyscale color: '#D4D4D496' decals: + 25: 52,75 1806: 52,69 - node: id: ThreeQuarterTileOverlayGreyscale180 color: '#D4D4D496' decals: + 9: 60,71 1796: 57,65 - node: id: ThreeQuarterTileOverlayGreyscale270 color: '#D4D4D496' decals: + 2: 52,71 1801: 52,65 - node: id: ThreeQuarterTileOverlayGreyscale90 color: '#D4D4D496' decals: + 17: 60,75 1791: 57,69 - node: id: WarnCornerSmallGreyscaleNE @@ -58312,6 +58332,11 @@ entities: 1809: 53,65 1810: 54,65 1811: 55,65 + - node: + id: WarnLineGreyscaleS + color: '#E6E6E6FF' + decals: + 27: 59,71 - node: id: WarnLineGreyscaleS color: '#FFFFFFE6' @@ -58319,6 +58344,12 @@ entities: 1814: 55,69 1815: 54,69 1816: 53,69 + - node: + id: WarnLineGreyscaleW + color: '#E6E6E6FF' + decals: + 0: 52,72 + 1: 52,74 - node: id: WarnLineGreyscaleW color: '#FFFFFFE6' @@ -58403,7 +58434,7 @@ entities: angle: 0.3490658503988659 rad decals: 1934: 53.860146,67.85053 - - uid: 25401 + - uid: 25457 components: - type: ChunkEntity root: 2 @@ -58603,7 +58634,7 @@ entities: color: '#F9FFFEFF' decals: 5046: 17,74 - - uid: 25402 + - uid: 25458 components: - type: ChunkEntity root: 2 @@ -58808,7 +58839,7 @@ entities: color: '#FFFFFFFF' decals: 5441: 24,42 - - uid: 25403 + - uid: 25459 components: - type: ChunkEntity root: 2 @@ -59116,7 +59147,7 @@ entities: color: '#EFB34196' decals: 2861: 44,42 - - uid: 25404 + - uid: 25460 components: - type: ChunkEntity root: 2 @@ -59276,7 +59307,7 @@ entities: cleanable: True decals: 8: 141.03253,79.7838 - - uid: 25405 + - uid: 25461 components: - type: ChunkEntity root: 2 @@ -59435,7 +59466,7 @@ entities: 5635: 87,90 5636: 87,89 5637: 87,88 - - uid: 25406 + - uid: 25462 components: - type: ChunkEntity root: 2 @@ -59573,7 +59604,7 @@ entities: color: '#FFFFFFFF' decals: 4064: 117,120 - - uid: 25407 + - uid: 25463 components: - type: ChunkEntity root: 2 @@ -59715,7 +59746,7 @@ entities: color: '#FFFF41FF' decals: 4606: 16,84 - - uid: 25408 + - uid: 25464 components: - type: ChunkEntity root: 2 @@ -59911,7 +59942,7 @@ entities: 5181: 52,51 5204: 58,52 5205: 58,50 - - uid: 25409 + - uid: 25465 components: - type: ChunkEntity root: 2 @@ -60185,7 +60216,7 @@ entities: decals: 2847: 48,36 2865: 58,37 - - uid: 25410 + - uid: 25466 components: - type: ChunkEntity root: 2 @@ -60534,7 +60565,7 @@ entities: decals: 356: 74,47 357: 74,46 - - uid: 25411 + - uid: 25467 components: - type: ChunkEntity root: 2 @@ -60753,7 +60784,7 @@ entities: color: '#FFFFFFFF' decals: 1824: 95,110 - - uid: 25412 + - uid: 25468 components: - type: ChunkEntity root: 2 @@ -60851,7 +60882,7 @@ entities: color: '#FFFFFFFF' decals: 4833: 92,29 - - uid: 25413 + - uid: 25469 components: - type: ChunkEntity root: 2 @@ -61024,7 +61055,7 @@ entities: color: '#FFFFFFFF' decals: 5519: 92,33 - - uid: 25414 + - uid: 25470 components: - type: ChunkEntity root: 2 @@ -61044,6 +61075,12 @@ entities: 2810: 27,21 2811: 28,21 2812: 29,21 + - node: + id: Caution + color: '#FFFFFFFF' + decals: + 5: 22,27 + 6: 24,27 - node: id: HalfTileOverlayGreyscale color: '#EFB34196' @@ -61058,9 +61095,9 @@ entities: id: HalfTileOverlayGreyscale180 color: '#EFB34196' decals: + 0: 26,27 + 4: 20,27 2777: 19,27 - 2778: 20,27 - 2779: 26,27 2780: 27,27 - node: id: HalfTileOverlayGreyscale270 @@ -61115,6 +61152,16 @@ entities: 2783: 29,29 2797: 29,25 2800: 19,25 + - node: + id: WarnCornerSmallSE + color: '#FFFFFFFF' + decals: + 10: 20,27 + - node: + id: WarnCornerSmallSW + color: '#FFFFFFFF' + decals: + 9: 26,27 - node: id: WarnFullGreyscale color: '#EFB34196' @@ -61138,7 +61185,16 @@ entities: decals: 5506: 18,27 5507: 28,27 - - uid: 25415 + - node: + id: WarnLineN + color: '#FFFFFFFF' + decals: + 1: 22,27 + 2: 23,27 + 3: 24,27 + 7: 21,27 + 8: 25,27 + - uid: 25471 components: - type: ChunkEntity root: 2 @@ -61221,7 +61277,7 @@ entities: 576: 97,30 577: 97,30 578: 97,29 - - uid: 25416 + - uid: 25472 components: - type: ChunkEntity root: 2 @@ -61292,7 +61348,7 @@ entities: 2407: 82,59 2408: 81,59 2409: 80,59 - - uid: 25417 + - uid: 25473 components: - type: ChunkEntity root: 2 @@ -61415,7 +61471,7 @@ entities: 2422: 69,61 2423: 69,62 2424: 69,63 - - uid: 25418 + - uid: 25474 components: - type: ChunkEntity root: 2 @@ -61576,7 +61632,7 @@ entities: 267: 69,92 268: 70,92 269: 71,92 - - uid: 25419 + - uid: 25475 components: - type: ChunkEntity root: 2 @@ -61602,7 +61658,7 @@ entities: color: '#52B4E950' decals: 4378: 136,110 - - uid: 25420 + - uid: 25476 components: - type: ChunkEntity root: 2 @@ -61695,7 +61751,7 @@ entities: color: '#FFFFFFFF' decals: 4072: 100,117 - - uid: 25421 + - uid: 25477 components: - type: ChunkEntity root: 2 @@ -61860,7 +61916,7 @@ entities: 105: 85,74 2008: 85,66 2014: 86,66 - - uid: 25422 + - uid: 25478 components: - type: ChunkEntity root: 2 @@ -62079,7 +62135,7 @@ entities: decals: 4191: 109,46 4192: 109,47 - - uid: 25423 + - uid: 25479 components: - type: ChunkEntity root: 2 @@ -62256,7 +62312,7 @@ entities: 1217: 119,45 1218: 118,45 1219: 117,45 - - uid: 25424 + - uid: 25480 components: - type: ChunkEntity root: 2 @@ -62317,7 +62373,7 @@ entities: color: '#FFFFFFFF' decals: 3272: 63,99 - - uid: 25425 + - uid: 25481 components: - type: ChunkEntity root: 2 @@ -62404,7 +62460,7 @@ entities: color: '#FFFFFFFF' decals: 321: 39,87 - - uid: 25426 + - uid: 25482 components: - type: ChunkEntity root: 2 @@ -62500,7 +62556,7 @@ entities: color: '#FFFFFFFF' decals: 786: 46,76 - - uid: 25427 + - uid: 25483 components: - type: ChunkEntity root: 2 @@ -62768,7 +62824,7 @@ entities: 4530: 12,75 4531: 12,76 4532: 12,77 - - uid: 25428 + - uid: 25484 components: - type: ChunkEntity root: 2 @@ -62847,7 +62903,7 @@ entities: color: '#FF0000FF' decals: 4183: 146,81 - - uid: 25429 + - uid: 25485 components: - type: ChunkEntity root: 2 @@ -62871,7 +62927,7 @@ entities: 4754: 15,62 4755: 13,62 4756: 13,63 - - uid: 25430 + - uid: 25486 components: - type: ChunkEntity root: 2 @@ -63088,7 +63144,7 @@ entities: cleanable: True decals: 3237: 52.997345,24.430504 - - uid: 25431 + - uid: 25487 components: - type: ChunkEntity root: 2 @@ -63139,7 +63195,7 @@ entities: 3877: 54,13 3878: 55,13 3879: 56,13 - - uid: 25432 + - uid: 25488 components: - type: ChunkEntity root: 2 @@ -63218,7 +63274,7 @@ entities: color: '#FFFFFFFF' decals: 4683: 15,107 - - uid: 25433 + - uid: 25489 components: - type: ChunkEntity root: 2 @@ -63434,7 +63490,7 @@ entities: 24: 142.17316,81.00255 25: 141.00128,82.12755 26: 139.9544,81.04942 - - uid: 25434 + - uid: 25490 components: - type: ChunkEntity root: 2 @@ -63641,7 +63697,7 @@ entities: decals: 3973: 140.60794,54.072556 3974: 139.76419,54.33818 - - uid: 25435 + - uid: 25491 components: - type: ChunkEntity root: 2 @@ -63732,7 +63788,7 @@ entities: color: '#79150096' decals: 4587: 29.500965,97.07767 - - uid: 25436 + - uid: 25492 components: - type: ChunkEntity root: 2 @@ -63767,7 +63823,7 @@ entities: color: '#FF0000FF' decals: 4171: 145,79 - - uid: 25437 + - uid: 25493 components: - type: ChunkEntity root: 2 @@ -63877,7 +63933,7 @@ entities: color: '#FFFFFFFF' decals: 4699: 138,33 - - uid: 25438 + - uid: 25494 components: - type: ChunkEntity root: 2 @@ -63917,7 +63973,7 @@ entities: color: '#EFB34196' decals: 2754: 33,29 - - uid: 25439 + - uid: 25495 components: - type: ChunkEntity root: 2 @@ -63943,7 +63999,7 @@ entities: color: '#FFFFFFFF' decals: 4698: 138,31 - - uid: 25440 + - uid: 25496 components: - type: ChunkEntity root: 2 @@ -64526,11 +64582,6 @@ entities: - type: Transform parent: 2 pos: 24.5,59.5 - - uid: 8954 - components: - - type: Transform - parent: 2 - pos: 54.5,49.5 - uid: 12008 components: - type: Transform @@ -64543,6 +64594,11 @@ entities: pos: 85.5,126.5 - proto: ClosetFireFilled entities: + - uid: 6896 + components: + - type: Transform + parent: 2 + pos: 54.5,49.5 - uid: 8955 components: - type: Transform @@ -64663,11 +64719,6 @@ entities: - type: Transform parent: 2 pos: 112.5,129.5 - - uid: 8983 - components: - - type: Transform - parent: 2 - pos: 52.5,49.5 - uid: 8984 components: - type: Transform @@ -64788,11 +64839,6 @@ entities: parent: 2 pos: 108.5,32.5 - uid: 9000 - components: - - type: Transform - parent: 2 - pos: 52.5,65.5 - - uid: 9001 components: - type: Transform parent: 2 @@ -70819,11 +70865,6 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 12.5,72.5 - - uid: 9951 - components: - - type: Transform - parent: 2 - pos: 79.5,88.5 - uid: 9983 components: - type: Transform @@ -70889,6 +70930,56 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 17.5,35.5 + - uid: 25385 + components: + - type: Transform + parent: 2 + pos: 101.5,48.5 + - uid: 25390 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 100.5,66.5 + - uid: 25401 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 94.5,88.5 + - uid: 25407 + components: + - type: Transform + parent: 2 + pos: 52.5,67.5 + - uid: 25409 + components: + - type: Transform + parent: 2 + pos: 52.5,51.5 + - uid: 25417 + components: + - type: Transform + parent: 2 + pos: 68.5,40.5 + - uid: 25418 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 68.5,38.5 + - uid: 25419 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 78.5,38.5 + - uid: 25434 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 73.5,91.5 - proto: DisposalJunction entities: - uid: 9953 @@ -71035,12 +71126,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 81.5,43.5 - - uid: 9980 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 77.5,88.5 - uid: 9982 components: - type: Transform @@ -71057,6 +71142,18 @@ entities: - type: Transform parent: 2 pos: 34.5,84.5 + - uid: 10767 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 79.5,93.5 + - uid: 11014 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 73.5,93.5 - proto: DisposalJunctionFlipped entities: - uid: 9952 @@ -71230,6 +71327,12 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 77.5,34.5 + - uid: 10425 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 77.5,91.5 - proto: DisposalMachineFrame entities: - uid: 10011 @@ -71263,6 +71366,12 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 67.5,86.5 + - uid: 9001 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 79.5,90.5 - uid: 9124 components: - type: Transform @@ -71327,11 +71436,23 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 49.5,40.5 + - uid: 9951 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 79.5,88.5 - uid: 9962 components: - type: Transform parent: 2 pos: 77.5,31.5 + - uid: 9980 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 79.5,92.5 - uid: 9981 components: - type: Transform @@ -71457,13 +71578,13 @@ entities: - type: Transform parent: 2 rot: 3.141592653589793 rad - pos: 73.5,91.5 + pos: 77.5,88.5 - uid: 10034 components: - type: Transform parent: 2 - rot: 3.141592653589793 rad - pos: 73.5,92.5 + rot: 1.5707963267948966 rad + pos: 78.5,43.5 - uid: 10035 components: - type: Transform @@ -72912,12 +73033,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 79.5,43.5 - - uid: 10294 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 78.5,43.5 - uid: 10295 components: - type: Transform @@ -73593,11 +73708,6 @@ entities: - type: Transform parent: 2 pos: 49.5,68.5 - - uid: 10425 - components: - - type: Transform - parent: 2 - pos: 49.5,67.5 - uid: 10426 components: - type: Transform @@ -74164,12 +74274,6 @@ entities: rot: 3.141592653589793 rad pos: 77.5,92.5 - uid: 10525 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 77.5,91.5 - - uid: 10526 components: - type: Transform parent: 2 @@ -74588,12 +74692,6 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 105.5,65.5 - - uid: 10597 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 105.5,66.5 - uid: 10598 components: - type: Transform @@ -75009,12 +75107,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 95.5,92.5 - - uid: 10669 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 94.5,92.5 - uid: 10670 components: - type: Transform @@ -75233,11 +75325,6 @@ entities: - type: Transform parent: 2 pos: 50.5,68.5 - - uid: 10710 - components: - - type: Transform - parent: 2 - pos: 50.5,67.5 - uid: 10711 components: - type: Transform @@ -75303,11 +75390,6 @@ entities: - type: Transform parent: 2 pos: 50.5,53.5 - - uid: 10724 - components: - - type: Transform - parent: 2 - pos: 50.5,51.5 - uid: 10725 components: - type: Transform @@ -75515,12 +75597,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 77.5,44.5 - - uid: 10761 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 78.5,44.5 - uid: 10762 components: - type: Transform @@ -75551,12 +75627,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 100.5,44.5 - - uid: 10767 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 101.5,44.5 - uid: 10768 components: - type: Transform @@ -75862,8 +75932,8 @@ entities: components: - type: Transform parent: 2 - rot: 1.5707963267948966 rad - pos: 79.5,93.5 + rot: 3.141592653589793 rad + pos: 79.5,89.5 - uid: 10822 components: - type: Transform @@ -76060,8 +76130,8 @@ entities: components: - type: Transform parent: 2 - rot: -1.5707963267948966 rad - pos: 78.5,88.5 + rot: 3.141592653589793 rad + pos: 79.5,91.5 - uid: 10859 components: - type: Transform @@ -76911,6 +76981,12 @@ entities: - type: Transform parent: 2 pos: 29.5,37.5 + - uid: 11312 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 51.5,51.5 - uid: 11319 components: - type: Transform @@ -76946,12 +77022,27 @@ entities: - type: Transform parent: 2 pos: 96.5,92.5 + - uid: 20225 + components: + - type: Transform + parent: 2 + pos: 101.5,45.5 - uid: 24583 components: - type: Transform parent: 2 rot: -1.5707963267948966 rad pos: 33.5,88.5 + - uid: 24585 + components: + - type: Transform + parent: 2 + pos: 101.5,46.5 + - uid: 24714 + components: + - type: Transform + parent: 2 + pos: 101.5,47.5 - uid: 24851 components: - type: Transform @@ -77068,6 +77159,199 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 76.5,34.5 + - uid: 25386 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 104.5,66.5 + - uid: 25387 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 103.5,66.5 + - uid: 25388 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 102.5,66.5 + - uid: 25389 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 101.5,66.5 + - uid: 25391 + components: + - type: Transform + parent: 2 + pos: 100.5,67.5 + - uid: 25392 + components: + - type: Transform + parent: 2 + pos: 100.5,68.5 + - uid: 25393 + components: + - type: Transform + parent: 2 + pos: 100.5,69.5 + - uid: 25394 + components: + - type: Transform + parent: 2 + pos: 100.5,70.5 + - uid: 25395 + components: + - type: Transform + parent: 2 + pos: 100.5,71.5 + - uid: 25397 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 94.5,91.5 + - uid: 25398 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 94.5,90.5 + - uid: 25399 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 94.5,89.5 + - uid: 25403 + components: + - type: Transform + parent: 2 + pos: 49.5,67.5 + - uid: 25404 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 51.5,67.5 + - uid: 25405 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 52.5,66.5 + - uid: 25408 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 52.5,50.5 + - uid: 25411 + components: + - type: Transform + parent: 2 + pos: 78.5,43.5 + - uid: 25412 + components: + - type: Transform + parent: 2 + pos: 78.5,42.5 + - uid: 25413 + components: + - type: Transform + parent: 2 + pos: 78.5,41.5 + - uid: 25414 + components: + - type: Transform + parent: 2 + pos: 78.5,40.5 + - uid: 25415 + components: + - type: Transform + parent: 2 + pos: 78.5,39.5 + - uid: 25420 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 77.5,38.5 + - uid: 25421 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 76.5,38.5 + - uid: 25422 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 75.5,38.5 + - uid: 25423 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 74.5,38.5 + - uid: 25424 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 73.5,38.5 + - uid: 25425 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 72.5,38.5 + - uid: 25426 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 71.5,38.5 + - uid: 25427 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 70.5,38.5 + - uid: 25428 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 69.5,38.5 + - uid: 25429 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 68.5,39.5 + - uid: 25436 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 76.5,91.5 + - uid: 25437 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 75.5,91.5 + - uid: 25438 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 74.5,91.5 - proto: DisposalPipeBroken entities: - uid: 11006 @@ -77078,6 +77362,15 @@ entities: pos: 129.5,122.5 - proto: DisposalRouter entities: + - uid: 10724 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 78.5,44.5 + - type: DisposalRouter + tags: + - Cargo - uid: 11007 components: - type: Transform @@ -77089,6 +77382,49 @@ entities: - Chemistry - proto: DisposalRouterFlipped entities: + - uid: 10294 + components: + - type: Transform + parent: 2 + pos: 50.5,67.5 + - type: DisposalRouter + tags: + - Tider + - uid: 10526 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 105.5,66.5 + - type: DisposalRouter + tags: + - Science + - uid: 10597 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 94.5,92.5 + - type: DisposalRouter + tags: + - Security + - uid: 10710 + components: + - type: Transform + parent: 2 + pos: 50.5,51.5 + - type: DisposalRouter + tags: + - Engineering + - uid: 10761 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 101.5,44.5 + - type: DisposalRouter + tags: + - Medical - uid: 11008 components: - type: Transform @@ -77157,12 +77493,6 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 28.5,83.5 - - uid: 11014 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 73.5,90.5 - uid: 11016 components: - type: Transform @@ -77550,6 +77880,12 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 138.5,92.5 + - uid: 24716 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 100.5,48.5 - uid: 24855 components: - type: Transform @@ -77574,6 +77910,41 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 17.5,31.5 + - uid: 25396 + components: + - type: Transform + parent: 2 + pos: 100.5,72.5 + - uid: 25400 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 93.5,88.5 + - uid: 25406 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 52.5,65.5 + - uid: 25410 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 52.5,49.5 + - uid: 25416 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 67.5,40.5 + - uid: 25435 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 73.5,90.5 - proto: DisposalUnit entities: - uid: 1136 @@ -77959,12 +78330,6 @@ entities: - type: Transform parent: 2 pos: 106.5,87.5 - - uid: 11166 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 73.5,93.5 - uid: 11167 components: - type: Transform @@ -78804,12 +79169,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 107.5,53.5 - - uid: 11312 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 114.5,49.5 - uid: 11313 components: - type: Transform @@ -79134,6 +79493,11 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 58.5,42.5 + - uid: 20196 + components: + - type: Transform + parent: 2 + pos: 110.5,51.5 - uid: 21366 components: - type: Transform @@ -79537,6 +79901,13 @@ entities: pos: 119.5,81.5 - type: FaxMachine name: RD's Office + - uid: 11932 + components: + - type: Transform + parent: 2 + pos: 64.5,78.5 + - type: FaxMachine + name: Botany/Kitchen - proto: FaxMachineCaptain entities: - uid: 11416 @@ -79689,6 +80060,17 @@ entities: - 20718 - 20719 - 20976 + - uid: 10669 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 51.5,69.5 + - type: DeviceList + devices: + - 580 + - 15005 + - 15181 - uid: 11386 components: - type: Transform @@ -80268,6 +80650,7 @@ entities: - 11815 - 11814 - 11813 + - 25402 - uid: 11458 components: - type: Transform @@ -80327,17 +80710,6 @@ entities: - 15224 - 11763 - 11760 - - uid: 11463 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 53.5,64.5 - - type: DeviceList - devices: - - 580 - - 15005 - - 15181 - uid: 11465 components: - type: Transform @@ -81338,9 +81710,9 @@ entities: pos: 111.5,48.5 - type: DeviceNetwork deviceLists: - - 30 - 38 - 11484 + - 11936 - uid: 11549 components: - type: Transform @@ -81624,7 +81996,7 @@ entities: - 36 - 11431 - 11432 - - 134 + - 20226 - uid: 11579 components: - type: Transform @@ -81976,7 +82348,7 @@ entities: - type: DeviceNetwork deviceLists: - 39 - - 134 + - 20226 - uid: 11613 components: - type: Transform @@ -82555,9 +82927,9 @@ entities: pos: 59.5,80.5 - type: DeviceNetwork deviceLists: - - 87 - 89 - 11457 + - 17654 - uid: 11670 components: - type: Transform @@ -82618,8 +82990,8 @@ entities: - type: DeviceNetwork deviceLists: - 88 - - 87 - 137 + - 17654 - uid: 11676 components: - type: Transform @@ -82782,8 +83154,8 @@ entities: deviceLists: - 19 - 11442 - - 20 - 11490 + - 17794 - uid: 11691 components: - type: Transform @@ -82794,8 +83166,8 @@ entities: deviceLists: - 19 - 11442 - - 20 - 11490 + - 17794 - uid: 11692 components: - type: Transform @@ -85011,16 +85383,16 @@ entities: pos: 144.55678,98.73146 - proto: FoodPoppy entities: - - uid: 11932 - components: - - type: Transform - parent: 2 - pos: 64.43483,77.69029 - uid: 11933 components: - type: Transform parent: 2 pos: 53.485634,55.629414 + - uid: 20521 + components: + - type: Transform + parent: 2 + pos: 60.53769,77.37803 - proto: FoodRiceBoiled entities: - uid: 11934 @@ -85037,11 +85409,11 @@ entities: pos: 18.871925,94.69462 - proto: FoodShakerPepper entities: - - uid: 11936 + - uid: 11463 components: - type: Transform parent: 2 - pos: 64.387955,78.59654 + pos: 64.3606,77.61761 - uid: 11937 components: - type: Transform @@ -85049,11 +85421,6 @@ entities: pos: 136.76108,64.35375 - proto: FoodShakerSalt entities: - - uid: 11938 - components: - - type: Transform - parent: 2 - pos: 64.62233,78.36217 - uid: 11939 components: - type: Transform @@ -85064,6 +85431,11 @@ entities: - type: Transform parent: 2 pos: 136.5892,64.65063 + - uid: 21931 + components: + - type: Transform + parent: 2 + pos: 64.621025,77.36761 - proto: FoodSnackPopcorn entities: - uid: 11941 @@ -108929,7 +109301,7 @@ entities: - type: DeviceNetwork deviceLists: - 23 - - 11463 + - 10669 - uid: 15006 components: - type: Transform @@ -108963,8 +109335,8 @@ entities: color: '#0055CCFF' - type: DeviceNetwork deviceLists: - - 20 - 11490 + - 17794 - uid: 15009 components: - type: Transform @@ -109184,7 +109556,7 @@ entities: - type: DeviceNetwork deviceLists: - 11432 - - 134 + - 20226 - type: AtmosPipeColor color: '#0055CCFF' - uid: 15031 @@ -109195,7 +109567,7 @@ entities: pos: 111.5,46.5 - type: DeviceNetwork deviceLists: - - 30 + - 11936 - type: AtmosPipeColor color: '#0055CCFF' - uid: 15032 @@ -109981,7 +110353,7 @@ entities: pos: 61.5,79.5 - type: DeviceNetwork deviceLists: - - 87 + - 17654 - type: AtmosPipeColor color: '#0055CCFF' - uid: 15107 @@ -110896,7 +111268,7 @@ entities: - type: DeviceNetwork deviceLists: - 23 - - 11463 + - 10669 - uid: 15182 components: - type: Transform @@ -110931,8 +111303,8 @@ entities: color: '#990000FF' - type: DeviceNetwork deviceLists: - - 20 - 11490 + - 17794 - uid: 15185 components: - type: Transform @@ -111171,7 +111543,7 @@ entities: - type: DeviceNetwork deviceLists: - 11432 - - 134 + - 20226 - type: AtmosPipeColor color: '#990000FF' - uid: 15208 @@ -111204,7 +111576,7 @@ entities: pos: 109.5,46.5 - type: DeviceNetwork deviceLists: - - 30 + - 11936 - type: AtmosPipeColor color: '#990000FF' - uid: 15211 @@ -111998,7 +112370,7 @@ entities: pos: 63.5,79.5 - type: DeviceNetwork deviceLists: - - 87 + - 17654 - type: AtmosPipeColor color: '#990000FF' - uid: 15284 @@ -120053,12 +120425,6 @@ entities: - type: Transform parent: 2 pos: 69.5,65.5 - - uid: 16851 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 85.5,76.5 - uid: 16852 components: - type: Transform @@ -120081,6 +120447,12 @@ entities: - type: Transform parent: 2 pos: 129.5,65.5 + - uid: 25439 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 85.5,76.5 - proto: IntercomCommon entities: - uid: 9134 @@ -121408,6 +121780,46 @@ entities: pos: 80.5,37.5 - proto: MailingUnit entities: + - uid: 87 + components: + - type: Transform + parent: 2 + pos: 100.5,48.5 + - type: MailingUnit + tag: Medical + - type: Configuration + config: + tag: Medical + - uid: 8954 + components: + - type: Transform + parent: 2 + pos: 52.5,49.5 + - type: MailingUnit + tag: Engineering + - type: Configuration + config: + tag: Engineering + - uid: 8983 + components: + - type: Transform + parent: 2 + pos: 52.5,65.5 + - type: MailingUnit + tag: Tider + - type: Configuration + config: + tag: Tider + - uid: 11166 + components: + - type: Transform + parent: 2 + pos: 100.5,72.5 + - type: MailingUnit + tag: Science + - type: Configuration + config: + tag: Science - uid: 17052 components: - type: Transform @@ -121428,6 +121840,26 @@ entities: - type: Configuration config: tag: Chemistry + - uid: 17428 + components: + - type: Transform + parent: 2 + pos: 67.5,40.5 + - type: MailingUnit + tag: Cargo + - type: Configuration + config: + tag: Cargo + - uid: 17827 + components: + - type: Transform + parent: 2 + pos: 93.5,88.5 + - type: MailingUnit + tag: Security + - type: Configuration + config: + tag: Security - proto: MaintenanceFluffSpawner entities: - uid: 9183 @@ -123831,11 +124263,11 @@ entities: pos: 59.5,82.5 - proto: PosterContrabandMissingGloves entities: - - uid: 17428 + - uid: 25440 components: - type: Transform parent: 2 - pos: 61.5,74.5 + pos: 57.5,76.5 - proto: PosterContrabandMissingSpacepen entities: - uid: 17429 @@ -124470,11 +124902,6 @@ entities: - type: Transform parent: 2 pos: 72.5,22.5 - - uid: 17531 - components: - - type: Transform - parent: 2 - pos: 67.5,40.5 - uid: 17533 components: - type: Transform @@ -125022,12 +125449,24 @@ entities: pos: 143.5,118.5 - proto: Poweredlight entities: + - uid: 20 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 112.5,49.5 - uid: 56 components: - type: Transform parent: 2 rot: 3.141592653589793 rad pos: 107.5,106.5 + - uid: 504 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 61.5,77.5 - uid: 637 components: - type: Transform @@ -125195,6 +125634,12 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 73.5,69.5 + - uid: 16851 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 60.5,75.5 - uid: 16858 components: - type: Transform @@ -125338,11 +125783,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 124.5,47.5 - - uid: 17651 - components: - - type: Transform - parent: 2 - pos: 111.5,51.5 - uid: 17652 components: - type: Transform @@ -125355,11 +125795,6 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 112.5,58.5 - - uid: 17654 - components: - - type: Transform - parent: 2 - pos: 104.5,79.5 - uid: 17656 components: - type: Transform @@ -125929,23 +126364,11 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 28.5,86.5 - - uid: 17794 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 63.5,77.5 - uid: 17795 components: - type: Transform parent: 2 pos: 56.5,75.5 - - uid: 17796 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 60.5,74.5 - uid: 17797 components: - type: Transform @@ -126114,11 +126537,6 @@ entities: - type: Transform parent: 2 pos: 43.5,79.5 - - uid: 17827 - components: - - type: Transform - parent: 2 - pos: 39.5,79.5 - uid: 17828 components: - type: Transform @@ -126938,6 +127356,12 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 61.5,36.5 + - uid: 20216 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 64.5,81.5 - uid: 20512 components: - type: Transform @@ -135779,20 +136203,6 @@ entities: 1064: - - Pressed - Toggle - - uid: 19553 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 108.5,47.5 - - type: DeviceLinkSource - linkedPorts: - 19492: - - - Pressed - - Toggle - 19491: - - - Pressed - - Toggle - uid: 19554 components: - type: Transform @@ -135894,6 +136304,20 @@ entities: 19429: - - Pressed - Toggle + - uid: 24443 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 110.5,44.5 + - type: DeviceLinkSource + linkedPorts: + 19492: + - - Pressed + - Toggle + 19491: + - - Pressed + - Toggle - proto: SignalButtonDirectional entities: - uid: 17622 @@ -137311,11 +137735,11 @@ entities: pos: 29.5,39.5 - proto: SignPsychology entities: - - uid: 19742 + - uid: 20187 components: - type: Transform parent: 2 - pos: 112.5,48.5 + pos: 110.5,48.5 - proto: SignRadiationMed entities: - uid: 19743 @@ -137698,12 +138122,12 @@ entities: pos: 112.5,60.5 - proto: SignTelecomms entities: - - uid: 19807 + - uid: 1193 components: - type: Transform parent: 2 rot: -1.5707963267948966 rad - pos: 43.5,41.5 + pos: 43.5,43.5 - proto: SignTheater entities: - uid: 17771 @@ -139911,26 +140335,6 @@ entities: pos: 119.5,55.5 - proto: SpawnPointPassenger entities: - - uid: 20184 - components: - - type: Transform - parent: 2 - pos: 53.5,57.5 - - uid: 20185 - components: - - type: Transform - parent: 2 - pos: 56.5,58.5 - - uid: 20186 - components: - - type: Transform - parent: 2 - pos: 53.5,58.5 - - uid: 20187 - components: - - type: Transform - parent: 2 - pos: 56.5,57.5 - uid: 20188 components: - type: Transform @@ -139971,11 +140375,6 @@ entities: - type: Transform parent: 2 pos: 58.5,74.5 - - uid: 20196 - components: - - type: Transform - parent: 2 - pos: 39.5,70.5 - uid: 20198 components: - type: Transform @@ -140077,11 +140476,6 @@ entities: pos: 115.5,70.5 - proto: SpawnPointSecurityCadet entities: - - uid: 20216 - components: - - type: Transform - parent: 2 - pos: 110.5,108.5 - uid: 20217 components: - type: Transform @@ -140099,6 +140493,11 @@ entities: pos: 110.5,106.5 - proto: SpawnPointSecurityOfficer entities: + - uid: 20184 + components: + - type: Transform + parent: 2 + pos: 113.5,108.5 - uid: 20220 components: - type: Transform @@ -140126,16 +140525,16 @@ entities: pos: 112.5,108.5 - proto: SpawnPointServiceWorker entities: - - uid: 20225 + - uid: 19807 components: - type: Transform parent: 2 - pos: 26.5,84.5 - - uid: 20226 + pos: 27.5,84.5 + - uid: 20185 components: - type: Transform parent: 2 - pos: 62.5,80.5 + pos: 25.5,84.5 - proto: SpawnPointStationEngineer entities: - uid: 19339 @@ -141920,6 +142319,17 @@ entities: id: Arrivals Northeast setupAvailableNetworks: - SurveillanceCameraGeneral + - uid: 17796 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 40.5,79.5 + - type: SurveillanceCamera + nameSet: True + id: Dormroom Large + setupAvailableNetworks: + - SurveillanceCameraGeneral - uid: 18830 components: - type: Transform @@ -142120,16 +142530,6 @@ entities: id: Hallway Dorms East setupAvailableNetworks: - SurveillanceCameraGeneral - - uid: 20493 - components: - - type: Transform - parent: 2 - pos: 40.5,77.5 - - type: SurveillanceCamera - nameSet: True - id: Dormroom Large - setupAvailableNetworks: - - SurveillanceCameraGeneral - uid: 20494 components: - type: Transform @@ -142343,6 +142743,16 @@ entities: - SurveillanceCameraGeneral - proto: SurveillanceCameraMedical entities: + - uid: 17531 + components: + - type: Transform + parent: 2 + pos: 109.5,45.5 + - type: SurveillanceCamera + nameSet: True + id: Psychology + setupAvailableNetworks: + - SurveillanceCameraMedical - uid: 20516 components: - type: Transform @@ -142395,17 +142805,6 @@ entities: id: Cryo Pods setupAvailableNetworks: - SurveillanceCameraMedical - - uid: 20521 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 110.5,47.5 - - type: SurveillanceCamera - nameSet: True - id: Psychology - setupAvailableNetworks: - - SurveillanceCameraMedical - uid: 20522 components: - type: Transform @@ -149102,6 +149501,11 @@ entities: - type: Transform parent: 2 pos: 99.5,82.5 + - uid: 745 + components: + - type: Transform + parent: 2 + pos: 108.5,47.5 - uid: 3137 components: - type: Transform @@ -152372,11 +152776,6 @@ entities: - type: Transform parent: 2 pos: 108.5,48.5 - - uid: 21931 - components: - - type: Transform - parent: 2 - pos: 108.5,47.5 - uid: 21932 components: - type: Transform @@ -164725,11 +165124,11 @@ entities: pos: 40.5,79.5 - proto: WardrobeBotanist entities: - - uid: 24443 + - uid: 30 components: - type: Transform parent: 2 - pos: 64.5,79.5 + pos: 64.5,81.5 - proto: WardrobeCargoFilled entities: - uid: 24444 @@ -165630,10 +166029,17 @@ entities: pos: 59.5,84.5 - proto: WindoorMedicalLocked entities: - - uid: 24585 + - uid: 17651 components: - type: Transform parent: 2 + rot: 3.141592653589793 rad + pos: 103.5,51.5 + - uid: 20186 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad pos: 102.5,51.5 - uid: 24586 components: @@ -166262,6 +166668,18 @@ entities: pos: 15.5,65.5 - proto: WindowDirectionalCorner entities: + - uid: 685 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 19.5,95.5 + - uid: 1229 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 21.5,95.5 - uid: 11363 components: - type: Transform @@ -166273,6 +166691,17 @@ entities: - type: Transform parent: 2 pos: 136.5,47.5 + - uid: 19742 + components: + - type: Transform + parent: 2 + pos: 21.5,97.5 + - uid: 25433 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 19.5,97.5 - proto: WindowFrostedDirectional entities: - uid: 24702 @@ -166389,23 +166818,12 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 138.5,96.5 - - uid: 24714 - components: - - type: Transform - parent: 2 - pos: 103.5,51.5 - uid: 24715 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad pos: 101.5,52.5 - - uid: 24716 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 101.5,51.5 - uid: 24719 components: - type: Transform @@ -166694,6 +167112,12 @@ entities: - type: Transform parent: 2 pos: 102.5,60.5 + - uid: 20493 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 101.5,51.5 - uid: 25171 components: - type: Transform From 2550ad7562c964f21971f5e9113e6bcf9de48deb Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Tue, 15 Sep 2026 20:20:51 +0000 Subject: [PATCH 141/197] Buff disablers into stunning again, minor beanbag nerf (#46041) Initial commit --- .../Objects/Weapons/Guns/Projectiles/Bullets/shotgun.yml | 2 +- .../Objects/Weapons/Guns/Projectiles/Energy/stun.yml | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Bullets/shotgun.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Bullets/shotgun.yml index 40752e652d..7510971139 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Bullets/shotgun.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Bullets/shotgun.yml @@ -28,7 +28,7 @@ types: Blunt: 10 - type: StaminaDamageOnCollide - damage: 40 # 3 hits to stun + damage: 27 # 4 hits to stun - type: entity parent: BaseBullet diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Energy/stun.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Energy/stun.yml index 469af4a7e7..31e9a9942e 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Energy/stun.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/Energy/stun.yml @@ -130,6 +130,8 @@ soundHit: collection: WeakHit forceSound: true + - type: StaminaDamageOnCollide + damage: 8 - type: entity parent: BaseBullet @@ -221,8 +223,10 @@ components: - type: StunOnCollide slowdownAmount: 2.2 - walkSpeedModifier: 0.65 - sprintSpeedModifier: 0.65 + walkSpeedModifier: 0.7 + sprintSpeedModifier: 0.7 + - type: StaminaDamageOnCollide + damage: 4 - type: entity parent: BulletDisablerSmgBase From 6a9421f18ae4f58c1556f7a4c7a189c30bfbe547 Mon Sep 17 00:00:00 2001 From: Jessica M Date: Tue, 15 Sep 2026 20:48:08 +0000 Subject: [PATCH 142/197] =?UTF-8?q?remove=20all=20instances=20of=20?= =?UTF-8?q?=EF=BB=BF=20(=EF=BB=BFZERO=20WIDTH=20NO-BREAK=20SPACE)=20(#4604?= =?UTF-8?q?0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit remove all instances of  --- Content.Server/Atmos/Components/AirFilterComponent.cs | 2 +- Content.Server/Atmos/Components/AirIntakeComponent.cs | 2 +- Content.Server/StationEvents/Events/BluespaceArtifactRule.cs | 2 +- Content.Server/StationEvents/Events/BureaucraticErrorRule.cs | 2 +- Content.Shared/Actions/Components/ActionUpgradeComponent.cs | 2 +- Content.Shared/Mapping/StartPlacementActionEvent.cs | 2 +- Content.Shared/Sticky/Components/StickyVisualizerComponent.cs | 2 +- .../ServerInfo/Guidebook/ServerRules/SpaceLaw/SpaceLaw.xml | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Content.Server/Atmos/Components/AirFilterComponent.cs b/Content.Server/Atmos/Components/AirFilterComponent.cs index 6b65a646f2..a66df65557 100644 --- a/Content.Server/Atmos/Components/AirFilterComponent.cs +++ b/Content.Server/Atmos/Components/AirFilterComponent.cs @@ -1,5 +1,5 @@ using Content.Server.Atmos.EntitySystems; -using Content.Shared.Atmos; +using Content.Shared.Atmos; namespace Content.Server.Atmos.Components; diff --git a/Content.Server/Atmos/Components/AirIntakeComponent.cs b/Content.Server/Atmos/Components/AirIntakeComponent.cs index dafaed93a5..9aca3e126f 100644 --- a/Content.Server/Atmos/Components/AirIntakeComponent.cs +++ b/Content.Server/Atmos/Components/AirIntakeComponent.cs @@ -1,5 +1,5 @@ using Content.Server.Atmos.EntitySystems; -using Content.Shared.Atmos; +using Content.Shared.Atmos; namespace Content.Server.Atmos.Components; diff --git a/Content.Server/StationEvents/Events/BluespaceArtifactRule.cs b/Content.Server/StationEvents/Events/BluespaceArtifactRule.cs index 99ac50656c..600f54d80d 100644 --- a/Content.Server/StationEvents/Events/BluespaceArtifactRule.cs +++ b/Content.Server/StationEvents/Events/BluespaceArtifactRule.cs @@ -1,5 +1,5 @@ using Content.Server.StationEvents.Components; -using Content.Shared.GameTicking.Components; +using Content.Shared.GameTicking.Components; using Robust.Shared.Random; namespace Content.Server.StationEvents.Events; diff --git a/Content.Server/StationEvents/Events/BureaucraticErrorRule.cs b/Content.Server/StationEvents/Events/BureaucraticErrorRule.cs index 1844df7fd1..49a2220b03 100644 --- a/Content.Server/StationEvents/Events/BureaucraticErrorRule.cs +++ b/Content.Server/StationEvents/Events/BureaucraticErrorRule.cs @@ -2,7 +2,7 @@ using System.Linq; using Content.Server.Station.Components; using Content.Server.Station.Systems; using Content.Server.StationEvents.Components; -using Content.Shared.GameTicking.Components; +using Content.Shared.GameTicking.Components; using Content.Shared.Roles; using JetBrains.Annotations; using Robust.Shared.Random; diff --git a/Content.Shared/Actions/Components/ActionUpgradeComponent.cs b/Content.Shared/Actions/Components/ActionUpgradeComponent.cs index 72a3447a83..78eaf787db 100644 --- a/Content.Shared/Actions/Components/ActionUpgradeComponent.cs +++ b/Content.Shared/Actions/Components/ActionUpgradeComponent.cs @@ -1,5 +1,5 @@ using Content.Shared.Actions; -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; using Robust.Shared.Prototypes; namespace Content.Shared.Actions.Components; diff --git a/Content.Shared/Mapping/StartPlacementActionEvent.cs b/Content.Shared/Mapping/StartPlacementActionEvent.cs index 2091068b63..ba4a5e9b94 100644 --- a/Content.Shared/Mapping/StartPlacementActionEvent.cs +++ b/Content.Shared/Mapping/StartPlacementActionEvent.cs @@ -1,5 +1,5 @@ using Content.Shared.Actions; -using Content.Shared.Maps; +using Content.Shared.Maps; using Robust.Shared.Prototypes; namespace Content.Shared.Mapping; diff --git a/Content.Shared/Sticky/Components/StickyVisualizerComponent.cs b/Content.Shared/Sticky/Components/StickyVisualizerComponent.cs index fd37836dcf..95253b825e 100644 --- a/Content.Shared/Sticky/Components/StickyVisualizerComponent.cs +++ b/Content.Shared/Sticky/Components/StickyVisualizerComponent.cs @@ -2,7 +2,7 @@ using Robust.Shared.Serialization; namespace Content.Shared.Sticky.Components; -using DrawDepth; +using DrawDepth; /// /// Sets the sprite's draw depth depending on whether it's stuck. diff --git a/Resources/ServerInfo/Guidebook/ServerRules/SpaceLaw/SpaceLaw.xml b/Resources/ServerInfo/Guidebook/ServerRules/SpaceLaw/SpaceLaw.xml index e3875de452..04a8b8fe70 100644 --- a/Resources/ServerInfo/Guidebook/ServerRules/SpaceLaw/SpaceLaw.xml +++ b/Resources/ServerInfo/Guidebook/ServerRules/SpaceLaw/SpaceLaw.xml @@ -1,4 +1,4 @@ - + # Space Law On Space Station 14, stations operate under abbreviated space law. All crew, passengers, and visitors aboard the station are expected to follow these laws. From c6dfa83962239607620464c247dab219ea45990b Mon Sep 17 00:00:00 2001 From: cashew <70486856+cashew-42@users.noreply.github.com> Date: Tue, 15 Sep 2026 23:39:14 +0000 Subject: [PATCH 143/197] fix admin chat lobby names (#46043) --- Content.Server/Chat/Managers/ChatManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/Chat/Managers/ChatManager.cs b/Content.Server/Chat/Managers/ChatManager.cs index 97dc1aa67c..bba3fdb080 100644 --- a/Content.Server/Chat/Managers/ChatManager.cs +++ b/Content.Server/Chat/Managers/ChatManager.cs @@ -316,7 +316,7 @@ private ISawmill? _sawmill = default!; return; } - var playerName = _chatSystem.ChatNameLinks ? $"[textlink=\"{FormattedMessage.EscapeStringParameter(player.Name)}\" entity=\"{_entityManager.GetNetEntity(player.AttachedEntity)}\" color=\"{ChatChannel.AdminChat.TextColor().ToHex()}\"]" : FormattedMessage.EscapeText(player.Name); + var playerName = _chatSystem.ChatNameLinks && player.AttachedEntity is {} attachedEntity ? $"[textlink=\"{FormattedMessage.EscapeStringParameter(player.Name)}\" entity=\"{_entityManager.GetNetEntity(attachedEntity)}\" color=\"{ChatChannel.AdminChat.TextColor().ToHex()}\"]" : FormattedMessage.EscapeText(player.Name); var clients = _adminManager.ActiveAdmins.Select(p => p.Channel); var wrappedMessage = Loc.GetString("chat-manager-send-admin-chat-wrap-message", ("adminChannelName", Loc.GetString("chat-manager-admin-channel-name")), From 4ea1af1d51f5c0d7951d524ddd56dba8eaf6e8b8 Mon Sep 17 00:00:00 2001 From: ProPeperos <61984624+ProPeperos@users.noreply.github.com> Date: Wed, 16 Sep 2026 00:05:19 +0000 Subject: [PATCH 144/197] Shuttle - Tram Evac (#46042) --- Resources/Maps/Shuttles/emergency_tram.yml | 3091 +++++++++++++------- 1 file changed, 1955 insertions(+), 1136 deletions(-) diff --git a/Resources/Maps/Shuttles/emergency_tram.yml b/Resources/Maps/Shuttles/emergency_tram.yml index 32d3e5673b..86136cbb0c 100644 --- a/Resources/Maps/Shuttles/emergency_tram.yml +++ b/Resources/Maps/Shuttles/emergency_tram.yml @@ -4,8 +4,8 @@ meta: engineVersion: 289.0.3 forkId: "" forkVersion: "" - time: 09/14/2026 21:03:12 - entityCount: 1193 + time: 09/15/2026 20:15:06 + entityCount: 1266 maps: [] grids: - 2 @@ -22,8 +22,12 @@ tilemap: 9: FloorBar 5: FloorConcreteMono 10: FloorDark + 19: FloorDarkHerringbone 14: FloorDarkMono + 20: FloorDarkPavement 17: FloorDarkPlastic + 22: FloorKitchen + 21: FloorMowedAstroGrass 4: FloorShuttleBlack 3: FloorSteel 7: FloorSteelMono @@ -51,23 +55,23 @@ entities: chunks: 0,0: ind: 0,0 - tiles: CgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAoAAAAAAAACAAAAAAEAAgAAAAABAAAAAAAAAAAGAAAAAAAACgAAAAAAAAYAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAQAAAAAAAAIAAAAAAgAAAAAAAAAABgAAAAAAAAoAAAAAAAAGAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAACwAAAAAAAAsAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAACgAAAAAAAAEAAAAAAAACAAAAAAEAAAAAAAAAAAYAAAAAAAAKAAAAAAAABgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAsAAAAAAAALAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAoAAAAAAAABAAAAAAAAAgAAAAACAAAAAAAAAAAGAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAALAAAAAAAACwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAsAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAACgAAAAAAAAEAAAAAAAACAAAAAAEAAAAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAABEAAAAAAAARAAAAAAAAEQAAAAAAABEAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAABAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAARAAAAAAAAEQAAAAAAABEAAAAAAAARAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAABEAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAABAAIAAAAAAAACAAAAAAIAAgAAAAABAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAQABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAEAAgAAAAAAAAIAAAAAAQABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== + tiles: CgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAYAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAYAAAAAAAACAAAAAAEAAgAAAAABAAAAAAAAAAAGAAAAAAAACgAAAAAAAA4AAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAQAAAAAAAAIAAAAAAgAAAAAAAAAABgAAAAAAAAoAAAAAAAAOAAAAAAAACgAAAAAAAAYAAAAAAAAAAAAAAAAACwAAAAAAAAsAAAAAAAATAAAAAAAAEwAAAAAAAA4AAAAAAAAAAAAAAAAACgAAAAAAAAEAAAAAAAACAAAAAAEAAAAAAAAAAAYAAAAAAAAKAAAAAAAADgAAAAAAAAoAAAAAAAAGAAAAAAAAAAAAAAAAAAsAAAAAAAALAAAAAAAAEwAAAAAAABMAAAAAAAAOAAAAAAAAAAAAAAAAAAoAAAAAAAABAAAAAAAAAgAAAAACAAAAAAAAAAAGAAAAAAAACgAAAAAAAA4AAAAAAAAKAAAAAAAABgAAAAAAAAAAAAAAAAALAAAAAAAACwAAAAAAABMAAAAAAAATAAAAAAAAFAAAAAAAAAYAAAAAAAAKAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAsAAAAAAAATAAAAAAAAEwAAAAAAAA4AAAAAAAAAAAAAAAAACgAAAAAAAAEAAAAAAAACAAAAAAEAAAAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAABAAAAAAAAAAAKAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAACgAAAAAAAAAAAAAAAAARAAAAAAAAEQAAAAAAABEAAAAAAAARAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAABAAIAAAAAAAACAAAAAAIAAgAAAAABAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAQABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAEAAgAAAAAAAAIAAAAAAQABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== version: 7 0,-1: ind: 0,-1 - tiles: AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAABAAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAgAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAEAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAsAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAMAAAAAAAAGAAAAAAAABgAAAAAAAAMAAAAAAAAGAAAAAAAABgAAAAAAAAMAAAAAAAALAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAABgAAAAAAAAYAAAAAAAADAAAAAAAABgAAAAAAAAYAAAAAAAADAAAAAAAACwAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAGAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAwAAAAAAAAYAAAAAAAAGAAAAAAAAAwAAAAAAAAYAAAAAAAAGAAAAAAAAAwAAAAAAAAsAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABgAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAMAAAAAAAAGAAAAAAAABgAAAAAAAAMAAAAAAAAGAAAAAAAABgAAAAAAAAMAAAAAAAALAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAoAAAAAAAADAAAAAAAABgAAAAAAAAYAAAAAAAADAAAAAAAABgAAAAAAAAYAAAAAAAADAAAAAAAACwAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAAKAAAAAAAAAwAAAAAAAAYAAAAAAAAGAAAAAAAAAwAAAAAAAAYAAAAAAAAGAAAAAAAAAwAAAAAAAAsAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAYAAAAAAAAGAAAAAAAAAAAAAAAAAAMAAAAAAAAGAAAAAAAABgAAAAAAAAMAAAAAAAAGAAAAAAAABgAAAAAAAAMAAAAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAADAAAAAAAABgAAAAAAAAYAAAAAAAADAAAAAAAABgAAAAAAAAYAAAAAAAADAAAAAAAACwAAAAAAAA== + tiles: AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAABIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAgAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAASAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAEAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAEgAAAAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAsAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAMAAAAAAAAOAAAAAAAADgAAAAAAABUAAAAAAAAOAAAAAAAADgAAAAAAAAMAAAAAAAALAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAEQAAAAAAABEAAAAAAAAVAAAAAAAAEQAAAAAAABEAAAAAAAADAAAAAAAACwAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAGAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAwAAAAAAAA4AAAAAAAAOAAAAAAAAFQAAAAAAAA4AAAAAAAAOAAAAAAAAAwAAAAAAAAsAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABgAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAMAAAAAAAARAAAAAAAADgAAAAAAABUAAAAAAAAOAAAAAAAAEQAAAAAAAAMAAAAAAAALAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAoAAAAAAAADAAAAAAAAEQAAAAAAAA4AAAAAAAAVAAAAAAAADgAAAAAAABEAAAAAAAADAAAAAAAACwAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAAKAAAAAAAAAwAAAAAAAA4AAAAAAAAOAAAAAAAAFQAAAAAAAA4AAAAAAAAOAAAAAAAAAwAAAAAAAAsAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAYAAAAAAAAGAAAAAAAAAAAAAAAAAAMAAAAAAAARAAAAAAAAEQAAAAAAABUAAAAAAAARAAAAAAAAEQAAAAAAAAMAAAAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAADAAAAAAAADgAAAAAAAA4AAAAAAAAVAAAAAAAADgAAAAAAAA4AAAAAAAADAAAAAAAACwAAAAAAAA== version: 7 1,0: ind: 1,0 - tiles: CQAAAAAAAAkAAAAAAAAJAAAAAAAACgAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAACAAAAAAEAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAgAAAAACAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAACAAAAAAIAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAgABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAIAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAQACAAAAAAAAAgAAAAACAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== + tiles: FgAAAAAAABYAAAAAAAAWAAAAAAAACgAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAACAAAAAAEAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAgAAAAACAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAACAAAAAAIAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAgABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAACAAAAAAIAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAQACAAAAAAAAAgAAAAACAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== version: 7 1,-1: ind: 1,-1 - tiles: EAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAIAAAAAAQABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAEAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAIAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAgAAAAABAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAIAAAAAAgABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACgAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAYAAAAAAAAJAAAAAAAACQAAAAAAAAoAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAGAAAAAAAACQAAAAAAAAkAAAAAAAAKAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABgAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAYAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAGAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABgAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAYAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAGAAAAAAAACQAAAAAAAAkAAAAAAAAKAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABgAAAAAAAAkAAAAAAAAJAAAAAAAACgAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== + tiles: EAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAIAAAAAAQABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAEAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAIAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAgAAAAABAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAIAAAAAAgABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACgAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAYAAAAAAAAJAAAAAAAACQAAAAAAAAoAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAGAAAAAAAACQAAAAAAAAkAAAAAAAAKAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABgAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAYAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAGAAAAAAAAFgAAAAAAAAkAAAAAAAAAAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABgAAAAAAABYAAAAAAAAWAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAYAAAAAAAAWAAAAAAAAFgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAGAAAAAAAAFgAAAAAAABYAAAAAAAAKAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABgAAAAAAABYAAAAAAAAWAAAAAAAACgAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== version: 7 0,-2: ind: 0,-2 - tiles: AQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAEAAgAAAAACAAEAAAAAAAABAAAAAAAAAgAAAAACAAEAAAAAAAABAAAAAAAAAgAAAAABAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAIAAgAAAAABAAIAAAAAAQACAAAAAAEAAgAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAABAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAIAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAABAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAABAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAoAAAAAAAAKAAAAAAAAAQAAAAAAAAIAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAEAAAAAAAACAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAMAAAAAAAADAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAA== + tiles: AQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAEAAgAAAAACAAEAAAAAAAABAAAAAAAAAgAAAAACAAEAAAAAAAABAAAAAAAAAgAAAAABAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAIAAgAAAAABAAIAAAAAAQACAAAAAAEAAgAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAABAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAIAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAABAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAABAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAoAAAAAAAAKAAAAAAAAAQAAAAAAAAIAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAEAAAAAAAACAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAABgAAAAAAAAMAAAAAAAADAAAAAAAABgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAA== version: 7 1,-2: ind: 1,-2 @@ -75,11 +79,11 @@ entities: version: 7 -1,0: ind: -1,0 - tiles: AQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAACgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== + tiles: AQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== version: 7 -1,-1: ind: -1,-1 - tiles: AQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAADAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAQABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAABAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAADAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAA== + tiles: AQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAEgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAASAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAQABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAABAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAASAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAA== version: 7 - type: Broadphase - type: Physics @@ -118,6 +122,16 @@ entities: - volume: 2500 moles: {} immutable: True + - temperature: 293.14975 + volume: 2500 + moles: + Oxygen: 21.824879 + Nitrogen: 82.10312 + - temperature: 293.1495 + volume: 2500 + moles: + Oxygen: 21.824879 + Nitrogen: 82.10312 - temperature: 293.15 volume: 2500 moles: @@ -168,10 +182,13 @@ entities: 3,-1: 0: 65535 4,0: - 0: 13071 + 0: 12303 + 2: 768 1: 34816 4,1: - 0: 4915 + 3: 1 + 0: 4400 + 2: 514 1: 34952 4,2: 0: 7 @@ -228,7 +245,8 @@ entities: 4,-2: 0: 30591 4,-1: - 0: 65399 + 0: 63351 + 2: 2048 5,-4: 1: 17 5,-2: @@ -244,15 +262,16 @@ entities: 1: 32768 1,-6: 0: 61440 - 2: 34 + 4: 34 1: 2560 - 3: 136 + 5: 136 1,-7: 1: 3776 2,-7: 1: 2880 2,-6: - 0: 61038 + 0: 52846 + 3: 8192 3,-7: 1: 3936 3,-6: @@ -280,10 +299,10 @@ entities: pos: 8.5,-10.5 - type: DeviceList devices: - - 2257 - - 2249 - - 2286 - - 2261 + - 511 + - 475 + - 525 + - 522 - uid: 37 components: - type: Transform @@ -292,10 +311,15 @@ entities: pos: 9.5,-14.5 - type: DeviceList devices: - - 1694 - - 1949 - - 2156 - - 1969 + - 457 + - uid: 631 + components: + - type: Transform + parent: 2 + pos: 14.5,-15.5 + - type: DeviceList + devices: + - 518 - uid: 2175 components: - type: Transform @@ -304,7 +328,7 @@ entities: pos: 14.5,3.5 - type: DeviceList devices: - - 2262 + - 607 - uid: 2482 components: - type: Transform @@ -312,7 +336,7 @@ entities: pos: 7.5,-14.5 - type: DeviceList devices: - - 335 + - 449 - uid: 2484 components: - type: Transform @@ -321,7 +345,7 @@ entities: pos: 8.5,7.5 - type: DeviceList devices: - - 2266 + - 500 - uid: 2492 components: - type: Transform @@ -330,8 +354,9 @@ entities: pos: 0.5,-6.5 - type: DeviceList devices: - - 2025 - - 362 + - 461 + - 471 + - 462 - uid: 2493 components: - type: Transform @@ -339,7 +364,7 @@ entities: pos: 7.5,-10.5 - type: DeviceList devices: - - 1690 + - 502 - uid: 2494 components: - type: Transform @@ -348,7 +373,8 @@ entities: pos: 2.5,3.5 - type: DeviceList devices: - - 2259 + - 509 + - 476 - proto: Airlock entities: - uid: 36 @@ -363,28 +389,32 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 15.5,-14.5 - - uid: 161 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 12.5,-16.5 -- proto: AirlockCommand +- proto: AirlockCargo entities: - uid: 17 components: - type: Transform parent: 2 - pos: 12.5,2.5 - - uid: 31 + rot: 1.5707963267948966 rad + pos: 12.5,-16.5 +- proto: AirlockCommandGlassLocked + entities: + - uid: 542 components: - type: Transform parent: 2 - rot: -1.5707963267948966 rad - pos: 14.5,5.5 -- proto: AirlockEngineering + pos: 12.5,2.5 +- proto: AirlockCommandLocked entities: - - uid: 1835 + - uid: 52 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 14.5,5.5 +- proto: AirlockEngineeringLocked + entities: + - uid: 53 components: - type: Transform parent: 2 @@ -401,39 +431,10 @@ entities: invokeCounter: 1 - type: DeviceLinkSource linkedPorts: - 239: + 346: - - DoorStatus - DoorBolt - - uid: 239 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 18.5,8.5 - - type: DeviceLinkSink - invokeCounter: 1 - - type: DeviceLinkSource - linkedPorts: - 74: - - - DoorStatus - - DoorBolt - - uid: 288 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 16.5,-23.5 - - type: DeviceLinkSink - invokeCounter: 1 - - type: DeviceLinkSource - linkedPorts: - 1914: - - - DoorStatus - - DoorBolt - 289: - - - DoorStatus - - DoorBolt - - uid: 289 + - uid: 82 components: - type: Transform parent: 2 @@ -443,7 +444,7 @@ entities: invokeCounter: 1 - type: DeviceLinkSource linkedPorts: - 288: + 58: - - DoorStatus - DoorBolt - uid: 1908 @@ -455,7 +456,7 @@ entities: invokeCounter: 1 - type: DeviceLinkSource linkedPorts: - 1939: + 75: - - DoorStatus - DoorBolt - uid: 1914 @@ -467,20 +468,7 @@ entities: invokeCounter: 1 - type: DeviceLinkSource linkedPorts: - 288: - - - DoorStatus - - DoorBolt - - uid: 1939 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 1.5,-15.5 - - type: DeviceLinkSink - invokeCounter: 1 - - type: DeviceLinkSource - linkedPorts: - 1908: + 58: - - DoorStatus - DoorBolt - proto: AirlockExternalGlassShuttleEmergencyLocked @@ -509,6 +497,50 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: -0.5,0.5 +- proto: AirlockExternalLocked + entities: + - uid: 58 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 16.5,-23.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 1914: + - - DoorStatus + - DoorBolt + 82: + - - DoorStatus + - DoorBolt + - uid: 75 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 1.5,-15.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 1908: + - - DoorStatus + - DoorBolt + - uid: 346 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 18.5,8.5 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 74: + - - DoorStatus + - DoorBolt - proto: AirlockGlass entities: - uid: 121 @@ -535,20 +567,27 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 7.5,-2.5 -- proto: AirlockHatchMaintenanceLocked +- proto: AirlockHatchMaintenance entities: - - uid: 401 + - uid: 137 components: - type: Transform parent: 2 pos: 11.5,-19.5 -- proto: AirlockMedical +- proto: AirlockMaintGlass entities: - - uid: 2405 + - uid: 161 components: - type: Transform parent: 2 - rot: -1.5707963267948966 rad + pos: 15.5,1.5 +- proto: AirlockMedicalGlassLocked + entities: + - uid: 152 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad pos: 8.5,-12.5 - proto: AirlockSecurityLocked entities: @@ -563,13 +602,6 @@ entities: - type: Transform parent: 2 pos: 2.5,-0.5 -- proto: AirlockServiceLocked - entities: - - uid: 2367 - components: - - type: Transform - parent: 2 - pos: 15.5,1.5 - proto: APCBasic entities: - uid: 1770 @@ -680,6 +712,19 @@ entities: - type: Transform parent: 2 pos: 5.5,-23.5 +- proto: BarricadeBlock + entities: + - uid: 559 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 11.5,-19.5 + - uid: 560 + components: + - type: Transform + parent: 2 + pos: 13.5,-23.5 - proto: BarSignWiggleRoom entities: - uid: 286 @@ -840,16 +885,61 @@ entities: - type: Transform parent: 2 pos: 17.5,-15.5 + - uid: 224 + components: + - type: Transform + parent: 2 + pos: 12.5,10.5 + - uid: 239 + components: + - type: Transform + parent: 2 + pos: 8.5,10.5 + - uid: 244 + components: + - type: Transform + parent: 2 + pos: 9.5,10.5 + - uid: 253 + components: + - type: Transform + parent: 2 + pos: 10.5,10.5 + - uid: 272 + components: + - type: Transform + parent: 2 + pos: 11.5,10.5 - uid: 284 components: - type: Transform parent: 2 pos: 17.5,-18.5 + - uid: 288 + components: + - type: Transform + parent: 2 + pos: 11.5,9.5 + - uid: 289 + components: + - type: Transform + parent: 2 + pos: 7.5,9.5 - uid: 318 components: - type: Transform parent: 2 pos: 18.5,-15.5 + - uid: 334 + components: + - type: Transform + parent: 2 + pos: 7.5,8.5 + - uid: 338 + components: + - type: Transform + parent: 2 + pos: 12.5,9.5 - uid: 339 components: - type: Transform @@ -860,16 +950,21 @@ entities: - type: Transform parent: 2 pos: 2.5,0.5 + - uid: 341 + components: + - type: Transform + parent: 2 + pos: 13.5,9.5 - uid: 358 components: - type: Transform parent: 2 pos: 1.5,0.5 - - uid: 359 + - uid: 566 components: - type: Transform parent: 2 - pos: 0.5,0.5 + pos: 1.5,-0.5 - uid: 1680 components: - type: Transform @@ -1380,11 +1475,6 @@ entities: - type: Transform parent: 2 pos: 1.5,-2.5 - - uid: 2114 - components: - - type: Transform - parent: 2 - pos: 1.5,-1.5 - uid: 2120 components: - type: Transform @@ -1722,6 +1812,106 @@ entities: pos: 5.5,-16.5 - proto: CableHV entities: + - uid: 179 + components: + - type: Transform + parent: 2 + pos: 4.5,-20.5 + - uid: 191 + components: + - type: Transform + parent: 2 + pos: 9.5,-8.5 + - uid: 192 + components: + - type: Transform + parent: 2 + pos: 8.5,-8.5 + - uid: 344 + components: + - type: Transform + parent: 2 + pos: 2.5,-19.5 + - uid: 348 + components: + - type: Transform + parent: 2 + pos: 12.5,7.5 + - uid: 460 + components: + - type: Transform + parent: 2 + pos: 9.5,0.5 + - uid: 473 + components: + - type: Transform + parent: 2 + pos: 10.5,0.5 + - uid: 477 + components: + - type: Transform + parent: 2 + pos: 8.5,-7.5 + - uid: 478 + components: + - type: Transform + parent: 2 + pos: 8.5,-5.5 + - uid: 501 + components: + - type: Transform + parent: 2 + pos: 8.5,-4.5 + - uid: 503 + components: + - type: Transform + parent: 2 + pos: 8.5,-2.5 + - uid: 504 + components: + - type: Transform + parent: 2 + pos: 8.5,-1.5 + - uid: 505 + components: + - type: Transform + parent: 2 + pos: 8.5,-0.5 + - uid: 512 + components: + - type: Transform + parent: 2 + pos: 8.5,-3.5 + - uid: 520 + components: + - type: Transform + parent: 2 + pos: 8.5,-6.5 + - uid: 521 + components: + - type: Transform + parent: 2 + pos: 8.5,0.5 + - uid: 534 + components: + - type: Transform + parent: 2 + pos: 3.5,-19.5 + - uid: 537 + components: + - type: Transform + parent: 2 + pos: 5.5,-20.5 + - uid: 574 + components: + - type: Transform + parent: 2 + pos: 12.5,8.5 + - uid: 575 + components: + - type: Transform + parent: 2 + pos: 13.5,8.5 - uid: 1816 components: - type: Transform @@ -1737,16 +1927,6 @@ entities: - type: Transform parent: 2 pos: 3.5,-20.5 - - uid: 1851 - components: - - type: Transform - parent: 2 - pos: 3.5,-19.5 - - uid: 1853 - components: - - type: Transform - parent: 2 - pos: 4.5,-19.5 - uid: 1858 components: - type: Transform @@ -1837,51 +2017,6 @@ entities: - type: Transform parent: 2 pos: 10.5,-8.5 - - uid: 1877 - components: - - type: Transform - parent: 2 - pos: 11.5,-8.5 - - uid: 1878 - components: - - type: Transform - parent: 2 - pos: 11.5,-7.5 - - uid: 1879 - components: - - type: Transform - parent: 2 - pos: 11.5,-6.5 - - uid: 1880 - components: - - type: Transform - parent: 2 - pos: 11.5,-5.5 - - uid: 1881 - components: - - type: Transform - parent: 2 - pos: 11.5,-4.5 - - uid: 1882 - components: - - type: Transform - parent: 2 - pos: 11.5,-3.5 - - uid: 1883 - components: - - type: Transform - parent: 2 - pos: 11.5,-2.5 - - uid: 1884 - components: - - type: Transform - parent: 2 - pos: 11.5,-1.5 - - uid: 1885 - components: - - type: Transform - parent: 2 - pos: 11.5,-0.5 - uid: 1886 components: - type: Transform @@ -1927,83 +2062,13 @@ entities: - type: Transform parent: 2 pos: 2.5,-18.5 - - uid: 2516 - components: - - type: Transform - parent: 2 - pos: 4.5,-18.5 - uid: 2538 components: - type: Transform parent: 2 pos: 2.5,-20.5 - - uid: 2539 - components: - - type: Transform - parent: 2 - pos: 3.5,-21.5 - proto: CableMV entities: - - uid: 341 - components: - - type: Transform - parent: 2 - pos: 5.5,-5.5 - - uid: 342 - components: - - type: Transform - parent: 2 - pos: 4.5,-5.5 - - uid: 343 - components: - - type: Transform - parent: 2 - pos: 3.5,-5.5 - - uid: 344 - components: - - type: Transform - parent: 2 - pos: 2.5,-5.5 - - uid: 345 - components: - - type: Transform - parent: 2 - pos: 2.5,-4.5 - - uid: 346 - components: - - type: Transform - parent: 2 - pos: 2.5,-3.5 - - uid: 347 - components: - - type: Transform - parent: 2 - pos: 2.5,-2.5 - - uid: 348 - components: - - type: Transform - parent: 2 - pos: 3.5,-2.5 - - uid: 351 - components: - - type: Transform - parent: 2 - pos: 7.5,-3.5 - - uid: 353 - components: - - type: Transform - parent: 2 - pos: 5.5,-4.5 - - uid: 354 - components: - - type: Transform - parent: 2 - pos: 5.5,-3.5 - - uid: 361 - components: - - type: Transform - parent: 2 - pos: 6.5,-3.5 - uid: 363 components: - type: Transform @@ -2014,6 +2079,26 @@ entities: - type: Transform parent: 2 pos: 8.5,-4.5 + - uid: 498 + components: + - type: Transform + parent: 2 + pos: 5.5,-2.5 + - uid: 516 + components: + - type: Transform + parent: 2 + pos: 7.5,-2.5 + - uid: 517 + components: + - type: Transform + parent: 2 + pos: 8.5,-2.5 + - uid: 526 + components: + - type: Transform + parent: 2 + pos: 6.5,-2.5 - uid: 1944 components: - type: Transform @@ -2336,22 +2421,12 @@ entities: pos: 9.5,-8.5 - proto: CableTerminal entities: - - uid: 1854 + - uid: 589 components: - type: Transform parent: 2 - pos: 3.5,-18.5 - - uid: 1856 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad + rot: 1.5707963267948966 rad pos: 3.5,-20.5 - - uid: 2515 - components: - - type: Transform - parent: 2 - pos: 4.5,-18.5 - proto: Carpet entities: - uid: 271 @@ -2599,6 +2674,12 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 11.5,-20.5 + - uid: 535 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 4.5,-20.5 - uid: 1745 components: - type: Transform @@ -2668,11 +2749,6 @@ entities: - type: Transform parent: 2 pos: 15.5,-23.5 - - uid: 2331 - components: - - type: Transform - parent: 2 - pos: 18.5,8.5 - uid: 2387 components: - type: Transform @@ -2691,12 +2767,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 4.5,-19.5 - - uid: 2401 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 4.5,-20.5 - uid: 2421 components: - type: Transform @@ -2855,11 +2925,11 @@ entities: pos: 3.5,-16.5 - proto: Chair entities: - - uid: 137 + - uid: 168 components: - type: Transform parent: 2 - pos: 7.5,8.5 + pos: 10.5,-20.5 - uid: 327 components: - type: Transform @@ -2884,6 +2954,11 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 5.5,-16.5 + - uid: 573 + components: + - type: Transform + parent: 2 + pos: 4.5,8.5 - uid: 1681 components: - type: Transform @@ -2909,6 +2984,12 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 12.564465,8.5310335 + - uid: 442 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 10.50368,8.58155 - proto: ChairPilotSeat entities: - uid: 28 @@ -2917,246 +2998,178 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 3.5,-1.5 - - uid: 58 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 12.5,-7.5 - - uid: 75 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 12.5,-1.5 - - uid: 82 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 13.5,-0.5 - - uid: 87 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 12.5,-0.5 - - uid: 179 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 10.5,-1.5 - - uid: 190 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 5.5,3.5 - - uid: 192 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 10.5,-0.5 - - uid: 194 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 9.5,-3.5 - - uid: 200 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 5.5,2.5 - - uid: 204 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 13.5,-1.5 - - uid: 206 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 13.5,-6.5 - - uid: 208 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 9.5,-5.5 - - uid: 220 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 13.5,-7.5 - - uid: 222 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 13.5,-3.5 - - uid: 223 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 10.5,-6.5 - - uid: 224 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 13.5,-4.5 - uid: 231 components: - type: Transform parent: 2 rot: -1.5707963267948966 rad pos: 3.5,-2.5 - - uid: 1700 + - uid: 351 components: - type: Transform parent: 2 - rot: 3.141592653589793 rad - pos: 10.5,-5.5 - - uid: 1702 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 9.5,-6.5 - - uid: 1760 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad pos: 13.5,-5.5 - - uid: 1763 + - uid: 352 components: - type: Transform parent: 2 rot: 3.141592653589793 rad pos: 9.5,-2.5 - - uid: 1766 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 12.5,-2.5 - - uid: 1772 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 10.5,-4.5 - - uid: 1773 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 12.5,-4.5 - - uid: 1774 + - uid: 353 components: - type: Transform parent: 2 rot: 3.141592653589793 rad pos: 13.5,-2.5 - - uid: 1775 + - uid: 354 components: - type: Transform parent: 2 rot: 3.141592653589793 rad - pos: 10.5,-7.5 - - uid: 1783 + pos: 12.5,-2.5 + - uid: 355 components: - type: Transform parent: 2 - rot: 3.141592653589793 rad - pos: 3.5,4.5 - - uid: 1790 + rot: -1.5707963267948966 rad + pos: 10.5,-4.5 + - uid: 357 components: - type: Transform parent: 2 - rot: 3.141592653589793 rad - pos: 5.5,4.5 - - uid: 1802 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 9.5,-0.5 - - uid: 1803 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 9.5,-1.5 - - uid: 1804 + pos: 13.5,-0.5 + - uid: 361 components: - type: Transform parent: 2 rot: 3.141592653589793 rad pos: 10.5,-2.5 - - uid: 1805 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 12.5,-3.5 - - uid: 1806 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 9.5,-4.5 - - uid: 1807 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 12.5,-5.5 - - uid: 1808 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 12.5,-6.5 - - uid: 1809 + - uid: 365 components: - type: Transform parent: 2 rot: 3.141592653589793 rad pos: 9.5,-7.5 - - uid: 1899 + - uid: 366 + components: + - type: Transform + parent: 2 + pos: 12.5,-5.5 + - uid: 370 components: - type: Transform parent: 2 rot: 3.141592653589793 rad - pos: 10.5,-3.5 - - uid: 1926 + pos: 10.5,-7.5 + - uid: 372 + components: + - type: Transform + parent: 2 + pos: 10.5,-5.5 + - uid: 373 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 12.5,-3.5 + - uid: 374 + components: + - type: Transform + parent: 2 + pos: 9.5,-0.5 + - uid: 387 + components: + - type: Transform + parent: 2 + pos: 10.5,-0.5 + - uid: 396 components: - type: Transform parent: 2 rot: 3.141592653589793 rad - pos: 3.5,2.5 - - uid: 1927 + pos: 13.5,-7.5 + - uid: 401 components: - type: Transform parent: 2 - rot: 3.141592653589793 rad + rot: 1.5707963267948966 rad pos: 3.5,3.5 - - uid: 2256 + - uid: 417 + components: + - type: Transform + parent: 2 + pos: 12.5,-0.5 + - uid: 418 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 10.5,-3.5 + - uid: 430 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 12.5,-4.5 + - uid: 433 + components: + - type: Transform + parent: 2 + pos: 9.5,-5.5 + - uid: 434 components: - type: Transform parent: 2 rot: 3.141592653589793 rad + pos: 16.5,-20.5 + - uid: 435 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 12.5,-7.5 + - uid: 437 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad pos: 3.5,5.5 + - uid: 438 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 3.5,4.5 + - uid: 538 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 7.5,5.5 + - uid: 549 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 7.5,3.5 + - uid: 550 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 7.5,4.5 + - uid: 569 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 14.5,-19.5 + - uid: 570 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 14.5,-20.5 - uid: 2497 components: - type: Transform @@ -3183,6 +3196,11 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 9.520402,4.5419116 + - uid: 540 + components: + - type: Transform + parent: 2 + pos: 9.5,6.5 - uid: 2263 components: - type: Transform @@ -3207,10 +3225,17 @@ entities: root: 2 chunk: 0,-1 - type: DecalChunk - maxDecalId: 37 + maxDecalId: 80 decals: version: 1 nodes: + - node: + id: BotLeftGreyscale + color: '#FFFFFFFF' + decals: + 75: 5,-3 + 76: 5,-4 + 77: 5,-5 - node: id: BrickLineOverlayW color: '#52B4E996' @@ -3260,6 +3285,18 @@ entities: color: '#EFB34196' decals: 20: 8,-16 + - node: + id: BrickTileWhiteLineN + color: '#639137FF' + decals: + 9: 9,-1 + 10: 10,-1 + 11: 12,-1 + 12: 13,-1 + 45: 9,-6 + 46: 10,-6 + 47: 12,-6 + 48: 13,-6 - node: id: BrickTileWhiteLineN color: '#DE3A3A96' @@ -3267,6 +3304,18 @@ entities: 33: 2,-2 34: 3,-2 35: 1,-2 + - node: + id: BrickTileWhiteLineS + color: '#639137FF' + decals: + 37: 9,-3 + 38: 10,-3 + 39: 12,-3 + 40: 13,-3 + 41: 12,-8 + 42: 13,-8 + 43: 10,-8 + 44: 9,-8 - node: id: BrickTileWhiteLineW color: '#52B4E996' @@ -3279,6 +3328,42 @@ entities: color: '#DE3A3A96' decals: 31: 8,-1 + - node: + id: BushCTwo + color: '#FFFFFFFF' + decals: + 4: 11,-2 + - node: + id: Busha3 + color: '#FFFFFFFF' + decals: + 7: 11,-5 + - node: + id: Bushd2 + color: '#FFFFFFFF' + decals: + 8: 11,-7 + - node: + id: Bushi1 + color: '#FFFFFFFF' + decals: + 5: 11,-4 + 6: 11,-8 + - node: + id: Bushk1 + color: '#FFFFFFFF' + decals: + 0: 11,-1 + - node: + id: Bushk2 + color: '#FFFFFFFF' + decals: + 1: 11,-3 + - node: + id: Bushk3 + color: '#FFFFFFFF' + decals: + 3: 11,-6 - node: id: ConcreteTrimLineE color: '#9FED5896' @@ -3287,18 +3372,81 @@ entities: 23: 14,-13 24: 14,-14 25: 14,-15 + - node: + id: LoadingAreaGreyscale + color: '#FFFFFFFF' + angle: 1.5707963267948966 rad + decals: + 78: 3,-5 + 79: 3,-6 + - node: + id: StandClear + color: '#FFFFFFFF' + angle: 1.5707963267948966 rad + decals: + 80: 9,-13 + - node: + id: StandClearGreyscale + color: '#FFFFFFFF' + decals: + 72: 0,-8 + 73: 0,-2 + 74: 0,-10 + - node: + id: WarnCornerSmallGreyscaleNE + color: '#FFFFFFFF' + decals: + 49: 8,-9 + - node: + id: WarnCornerSmallGreyscaleNW + color: '#FFFFFFFF' + decals: + 50: 14,-9 - node: id: WarnCornerSmallNE color: '#FFFFFFFF' decals: 2: 3,-7 + - node: + id: WarnLineGreyscaleE + color: '#FFFFFFFF' + decals: + 51: 8,-8 + 52: 8,-7 + 53: 8,-6 + 54: 8,-5 + 55: 8,-4 + 56: 8,-3 + 57: 8,-2 + 58: 8,-1 + - node: + id: WarnLineGreyscaleN + color: '#FFFFFFFF' + decals: + 67: 13,-9 + 68: 12,-9 + 69: 11,-9 + 70: 10,-9 + 71: 9,-9 + - node: + id: WarnLineGreyscaleW + color: '#FFFFFFFF' + decals: + 59: 14,-8 + 60: 14,-7 + 61: 14,-6 + 62: 14,-5 + 63: 14,-4 + 64: 14,-3 + 65: 14,-2 + 66: 14,-1 - uid: 381 components: - type: ChunkEntity root: 2 chunk: 0,-2 - type: DecalChunk - maxDecalId: 35 + maxDecalId: 38 decals: version: 1 nodes: @@ -3306,9 +3454,6 @@ entities: id: Bot color: '#FFFFFFFF' decals: - 0: 15,-18 - 1: 15,-19 - 2: 15,-20 34: 10,-19 35: 10,-18 - node: @@ -3379,6 +3524,24 @@ entities: 13: 9,-24 14: 10,-24 15: 11,-24 + - node: + id: Remains + color: '#FFFFFFFF' + decals: + 38: 12,-21 + - node: + id: WarnCornerSmallSE + color: '#FFFFFFFF' + decals: + 37: 4,-18 + - node: + id: WarnLineN + color: '#FFFFFFFF' + decals: + 0: 5,-18 + 1: 6,-18 + 2: 7,-18 + 36: 8,-18 - uid: 382 components: - type: ChunkEntity @@ -3416,7 +3579,41 @@ entities: root: 2 chunk: 1,0 - type: DecalChunk - maxDecalId: 4 + maxDecalId: 8 + decals: + version: 1 + nodes: + - node: + id: Box + color: '#FFFFFFFF' + decals: + 0: 16,2 + 1: 17,2 + 2: 17,4 + 3: 16,4 + 4: 17,6 + - node: + id: BrickTileWhiteInnerNw + color: '#334E6DC8' + decals: + 5: 16,5 + - node: + id: BrickTileWhiteLineE + color: '#334E6DC8' + decals: + 7: 17,3 + 8: 17,5 + - node: + id: BrickTileWhiteLineW + color: '#334E6DC8' + decals: + 6: 16,6 + - uid: 384 + components: + - type: ChunkEntity + root: 2 + - type: DecalChunk + maxDecalId: 59 decals: version: 1 nodes: @@ -3424,20 +3621,17 @@ entities: id: Bot color: '#FFFFFFFF' decals: - 0: 17,6 - 1: 17,4 - 2: 16,4 - 3: 16,2 - 4: 17,2 - - uid: 384 - components: - - type: ChunkEntity - root: 2 - - type: DecalChunk - maxDecalId: 39 - decals: - version: 1 - nodes: + 51: 13,6 + 55: 15,6 + - node: + id: BotGreyscale + color: '#FFFFFFFF' + decals: + 46: 4,8 + 47: 5,8 + 48: 6,8 + 52: 13,4 + 53: 13,3 - node: id: BrickLineOverlayE color: '#334E6DC8' @@ -3467,6 +3661,11 @@ entities: color: '#DE3A3A96' decals: 18: 3,2 + - node: + id: BrickTileWhiteCornerNw + color: '#334E6DC8' + decals: + 59: 15,5 - node: id: BrickTileWhiteCornerSe color: '#DE3A3A96' @@ -3486,6 +3685,15 @@ entities: 15: 7,5 16: 6,1 17: 6,0 + 49: 7,8 + 50: 7,7 + - node: + id: BrickTileWhiteLineW + color: '#334E6DC8' + decals: + 56: 15,2 + 57: 15,3 + 58: 15,4 - node: id: BrickTileWhiteLineW color: '#DE3A3A96' @@ -3505,11 +3713,27 @@ entities: decals: 37: 4,6 38: 6,6 + - node: + id: LoadingAreaGreyscale + color: '#FFFFFFFF' + angle: 1.5707963267948966 rad + decals: + 54: 0,0 - node: id: MiniTileInnerOverlayNE color: '#334E6DC8' decals: 26: 10,1 + - node: + id: WarnCornerSmallGreyscaleSE + color: '#FFFFFFFF' + decals: + 44: 8,0 + - node: + id: WarnCornerSmallGreyscaleSW + color: '#FFFFFFFF' + decals: + 45: 14,0 - node: id: WarnLineGreyscaleN color: '#DE3A3A96' @@ -3526,6 +3750,15 @@ entities: 34: 1,0 35: 2,0 36: 3,0 + - node: + id: WarnLineGreyscaleS + color: '#FFFFFFFF' + decals: + 39: 9,0 + 40: 10,0 + 41: 11,0 + 42: 12,0 + 43: 13,0 - proto: ClosetEmergencyFilledRandom entities: - uid: 398 @@ -3538,6 +3771,11 @@ entities: - type: Transform parent: 2 pos: 13.5,1.5 + - uid: 629 + components: + - type: Transform + parent: 2 + pos: 9.5,-11.5 - uid: 1811 components: - type: Transform @@ -3553,37 +3791,90 @@ entities: - type: Transform parent: 2 pos: 15.5,8.5 -- proto: ClosetFireFilled +- proto: ClosetEmergencyN2FilledRandom entities: - - uid: 406 + - uid: 440 components: - type: Transform parent: 2 pos: 9.5,-13.5 + - uid: 441 + components: + - type: Transform + parent: 2 + pos: 13.5,-18.5 +- proto: ClosetFireFilled + entities: - uid: 1815 components: - type: Transform parent: 2 pos: 13.5,4.5 - - uid: 1921 +- proto: ClosetMaintenance + entities: + - uid: 586 components: - type: Transform parent: 2 - pos: 13.5,-18.5 + pos: 9.5,-20.5 + - type: ContainerContainer + containers: + entity_storage: !type:Container + ents: + - 587 + showEnts: False + occludes: True + paper_label: !type:ContainerSlot + ent: null + showEnts: False + occludes: True +- proto: ClosetWallEmergencyFilledRandom + entities: + - uid: 87 + components: + - type: Transform + parent: 2 + pos: 3.5,-14.5 + - uid: 632 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 13.5,-22.5 - proto: ClothingBeltUtilityEngineering entities: - uid: 420 components: - type: Transform parent: 2 - pos: 6.4888773,-15.524785 + pos: 6.5201616,-20.43535 - proto: ClothingHeadHatCone entities: - uid: 379 components: - type: Transform parent: 2 - pos: 10.380353,-22.311043 + pos: 10.535453,-22.47224 + - uid: 448 + components: + - type: Transform + parent: 2 + pos: 11.504203,-23.456615 + - uid: 583 + components: + - type: Transform + parent: 2 + pos: 9.347953,-23.65974 + - uid: 584 + components: + - type: Transform + parent: 2 + pos: 9.269828,-21.206615 + - uid: 585 + components: + - type: Transform + parent: 2 + pos: 11.676078,-21.581615 - proto: Cobweb1 entities: - uid: 2201 @@ -3606,12 +3897,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 12.5,-12.5 - - uid: 191 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 10.5,8.5 - uid: 201 components: - type: Transform @@ -3634,21 +3919,13 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 13.5,-13.5 -- proto: ComputerAlert +- proto: ComputerAtmosMonitoring entities: - - uid: 152 + - uid: 177 components: - type: Transform parent: 2 pos: 9.5,9.5 -- proto: ComputerCrewMonitoring - entities: - - uid: 214 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 13.5,7.5 - proto: ComputerEmergencyShuttle entities: - uid: 213 @@ -3671,6 +3948,30 @@ entities: - type: Transform parent: 2 pos: 11.5,9.5 +- proto: CrateEmptySpawner + entities: + - uid: 635 + components: + - type: Transform + parent: 2 + pos: 16.5,-18.5 +- proto: CrateFilledSpawner + entities: + - uid: 367 + components: + - type: Transform + parent: 2 + pos: 16.5,-17.5 + - uid: 443 + components: + - type: Transform + parent: 2 + pos: 17.5,-18.5 + - uid: 568 + components: + - type: Transform + parent: 2 + pos: 17.5,-17.5 - proto: CrateServiceCooking entities: - uid: 2254 @@ -3678,6 +3979,24 @@ entities: - type: Transform parent: 2 pos: 19.5,-1.5 + - type: ContainerContainer + containers: + entity_storage: !type:Container + ents: + - 130 + showEnts: False + occludes: True + paper_label: !type:ContainerSlot + ent: null + showEnts: False + occludes: True +- proto: CrowbarRed + entities: + - uid: 551 + components: + - type: Transform + parent: 2 + pos: 16.578987,8.446652 - proto: DresserFilled entities: - uid: 270 @@ -3704,6 +4023,35 @@ entities: - type: Transform parent: 2 pos: 9.396809,5.780712 +- proto: DrinkShotGlass + entities: + - uid: 368 + components: + - type: Transform + parent: 2 + pos: 6.592595,-15.972469 + - uid: 371 + components: + - type: Transform + parent: 2 + pos: 6.7037063,-16.18543 + - uid: 571 + components: + - type: Transform + parent: 2 + pos: 6.305558,-15.972469 + - uid: 572 + components: + - type: Transform + parent: 2 + pos: 6.4120398,-16.19932 +- proto: DrinkWhiskeyBottleFull + entities: + - uid: 376 + components: + - type: Transform + parent: 2 + pos: 6.379632,-15.32895 - proto: EmergencyLight entities: - uid: 219 @@ -3788,13 +4136,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 3.5,-3.5 -- proto: filingCabinetDrawerRandom - entities: - - uid: 1830 - components: - - type: Transform - parent: 2 - pos: 11.5,8.5 - proto: FireAlarm entities: - uid: 233 @@ -3926,6 +4267,7 @@ entities: components: - type: Transform parent: 2 + rot: 1.5707963267948966 rad pos: 8.5,-12.5 - uid: 2339 components: @@ -3939,26 +4281,31 @@ entities: components: - type: Transform parent: 2 + rot: 1.5707963267948966 rad pos: 14.5,5.5 - uid: 2342 components: - type: Transform parent: 2 + rot: 1.5707963267948966 rad pos: 15.5,-11.5 - uid: 2343 components: - type: Transform parent: 2 + rot: 1.5707963267948966 rad pos: 15.5,-14.5 - uid: 2344 components: - type: Transform parent: 2 + rot: 1.5707963267948966 rad pos: 12.5,-16.5 - uid: 2345 components: - type: Transform parent: 2 + rot: 1.5707963267948966 rad pos: 9.5,-16.5 - proto: FloorDrain entities: @@ -3969,27 +4316,16 @@ entities: pos: 17.5,-14.5 - type: Fixtures fixtures: {} -- proto: FoodBurgerGhost - entities: - - uid: 1904 - components: - - type: Transform - parent: 2 - pos: 16.5,-1.5 -- proto: FoodMealCubancarp - entities: - - uid: 1857 - components: - - type: Transform - parent: 2 - pos: 16.5,-4.5 - proto: FoodMealMilkape entities: - uid: 130 components: - type: Transform - parent: 2 - pos: 16.5,-7.5 + parent: 2254 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 2254 - proto: FoodPoppy entities: - uid: 2220 @@ -4010,7 +4346,7 @@ entities: inletOneConcentration: 0.77 enabled: True - type: AtmosPipeColor - color: '#0335FCFF' + color: '#03FCD3FF' - proto: GasPassiveVent entities: - uid: 60 @@ -4019,12 +4355,16 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 5.5,-22.5 + - type: AtmosPipeColor + color: '#03FCD3FF' - uid: 65 components: - type: Transform parent: 2 rot: 3.141592653589793 rad pos: 7.5,-22.5 + - type: AtmosPipeColor + color: '#03FCD3FF' - uid: 416 components: - type: Transform @@ -4044,53 +4384,14 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 9.5,-21.5 - - uid: 334 + - uid: 342 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad pos: 7.5,-16.5 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 355 - components: - - type: Transform - parent: 2 - pos: 2.5,-2.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 357 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 5.5,0.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 374 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 5.5,-5.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 375 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 5.5,-3.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 376 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 8.5,-3.5 - - type: AtmosPipeColor - color: '#0335FCFF' + color: '#0055CCFF' - uid: 399 components: - type: Transform @@ -4103,78 +4404,77 @@ entities: parent: 2 rot: 3.141592653589793 rad pos: 9.5,-23.5 - - uid: 1954 + - uid: 459 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 14.5,-17.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 486 + components: + - type: Transform + parent: 2 + pos: 14.5,-16.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 514 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 6.5,-12.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 603 + components: + - type: Transform + parent: 2 + pos: 6.5,7.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 612 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad - pos: 1.5,-6.5 + pos: 12.5,5.5 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2143 + color: '#0055CCFF' + - uid: 622 components: - type: Transform parent: 2 - rot: -1.5707963267948966 rad - pos: 2.5,-6.5 + pos: 16.5,-11.5 - type: AtmosPipeColor - color: '#0335FCFF' + color: '#0055CCFF' + - uid: 623 + components: + - type: Transform + parent: 2 + pos: 16.5,-14.5 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 2228 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad pos: 5.5,-20.5 - - uid: 2287 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 15.5,3.5 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2288 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 15.5,0.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2289 - components: - - type: Transform - parent: 2 - pos: 12.5,3.5 - - type: AtmosPipeColor - color: '#0335FCFF' + color: '#03FCD3FF' - proto: GasPipeFourway entities: - - uid: 2152 + - uid: 458 components: - type: Transform parent: 2 - pos: 10.5,-11.5 + pos: 10.5,-12.5 - type: AtmosPipeColor - color: '#0335FCFF' + color: '#0055CCFF' - proto: GasPipeStraight entities: - - uid: 52 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 11.5,-14.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 53 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 13.5,-14.5 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 147 components: - type: Transform @@ -4198,6 +4498,21 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 10.5,-21.5 + - uid: 222 + components: + - type: Transform + parent: 2 + pos: 1.5,-7.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 223 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 3.5,-4.5 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 280 components: - type: Transform @@ -4210,78 +4525,29 @@ entities: parent: 2 pos: 7.5,-17.5 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 366 - components: - - type: Transform - parent: 2 - pos: 8.5,-0.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 367 - components: - - type: Transform - parent: 2 - pos: 8.5,-1.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 368 - components: - - type: Transform - parent: 2 - pos: 8.5,-2.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 369 + color: '#0055CCFF' + - uid: 345 components: - type: Transform parent: 2 rot: -1.5707963267948966 rad - pos: 7.5,-3.5 + pos: 2.5,-4.5 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 370 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 6.5,-3.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 371 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 5.5,-4.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 372 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 4.5,-5.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 373 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 3.5,-5.5 - - type: AtmosPipeColor - color: '#0335FCFF' + color: '#0055CCFF' - uid: 392 components: - type: Transform parent: 2 pos: 7.5,-21.5 + - type: AtmosPipeColor + color: '#03FCD3FF' - uid: 393 components: - type: Transform parent: 2 pos: 5.5,-21.5 + - type: AtmosPipeColor + color: '#03FCD3FF' - uid: 400 components: - type: Transform @@ -4318,396 +4584,636 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 14.5,-23.5 - - uid: 2151 + - uid: 450 components: - type: Transform parent: 2 - pos: 7.5,-19.5 + pos: 9.5,-5.5 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2167 + color: '#0055CCFF' + - uid: 452 components: - type: Transform parent: 2 - rot: 1.5707963267948966 rad - pos: 12.5,-14.5 + pos: 9.5,-1.5 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2168 + color: '#0055CCFF' + - uid: 453 components: - type: Transform parent: 2 - rot: 3.141592653589793 rad - pos: 1.5,-7.5 + pos: 13.5,-0.5 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2230 + color: '#0055CCFF' + - uid: 454 + components: + - type: Transform + parent: 2 + pos: 13.5,-3.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 456 components: - type: Transform parent: 2 rot: -1.5707963267948966 rad - pos: 6.5,-20.5 - - uid: 2232 + pos: 7.5,-3.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 463 components: - type: Transform parent: 2 - pos: 7.5,-18.5 + pos: 13.5,-6.5 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2234 + color: '#0055CCFF' + - uid: 464 components: - type: Transform parent: 2 - pos: 10.5,-10.5 + pos: 13.5,-5.5 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2241 + color: '#0055CCFF' + - uid: 465 + components: + - type: Transform + parent: 2 + pos: 13.5,-4.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 466 + components: + - type: Transform + parent: 2 + pos: 13.5,-2.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 467 + components: + - type: Transform + parent: 2 + pos: 13.5,-1.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 468 + components: + - type: Transform + parent: 2 + pos: 9.5,-0.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 469 + components: + - type: Transform + parent: 2 + pos: 9.5,-2.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 479 + components: + - type: Transform + parent: 2 + pos: 9.5,-6.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 480 + components: + - type: Transform + parent: 2 + pos: 9.5,-7.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 481 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad - pos: 9.5,-16.5 + pos: 11.5,-8.5 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2243 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 10.5,-15.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2244 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 10.5,-13.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2251 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 9.5,-12.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2252 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 8.5,-12.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2267 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 2.5,-3.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2271 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 2.5,-4.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2279 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 6.5,0.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2280 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 7.5,0.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2282 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 9.5,0.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2290 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 15.5,1.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2291 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 15.5,2.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2292 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 12.5,2.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2293 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 12.5,1.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2294 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 13.5,0.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2296 - components: - - type: Transform - parent: 2 - pos: 11.5,-0.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2297 - components: - - type: Transform - parent: 2 - pos: 11.5,-1.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2298 - components: - - type: Transform - parent: 2 - pos: 11.5,-2.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2299 - components: - - type: Transform - parent: 2 - pos: 11.5,-3.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2300 - components: - - type: Transform - parent: 2 - pos: 11.5,-4.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2301 - components: - - type: Transform - parent: 2 - pos: 11.5,-5.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2302 - components: - - type: Transform - parent: 2 - pos: 11.5,-6.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2303 - components: - - type: Transform - parent: 2 - pos: 11.5,-7.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2306 + color: '#0055CCFF' + - uid: 482 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad pos: 12.5,-8.5 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2307 + color: '#0055CCFF' + - uid: 484 components: - type: Transform parent: 2 + pos: 10.5,-13.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 488 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 7.5,-12.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 497 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 9.5,-16.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 507 + components: + - type: Transform + parent: 2 + pos: 13.5,-7.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 508 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 8.5,-3.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 510 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 8.5,-12.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 513 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad pos: 10.5,-9.5 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2469 + color: '#0055CCFF' + - uid: 519 + components: + - type: Transform + parent: 2 + pos: 9.5,-4.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 523 + components: + - type: Transform + parent: 2 + pos: 10.5,-15.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 524 + components: + - type: Transform + parent: 2 + pos: 1.5,-3.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 527 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad - pos: 14.5,-14.5 + pos: 11.5,-16.5 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2470 + color: '#0055CCFF' + - uid: 529 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 10.5,-10.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 530 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad - pos: 15.5,-14.5 + pos: 13.5,-16.5 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2471 + color: '#0055CCFF' + - uid: 531 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad - pos: 15.5,-11.5 + pos: 12.5,-16.5 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2472 + color: '#0055CCFF' + - uid: 532 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 9.5,-12.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 533 + components: + - type: Transform + parent: 2 + pos: 1.5,-6.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 588 + components: + - type: Transform + parent: 2 + pos: 1.5,-5.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 590 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 4.5,-4.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 591 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 5.5,-4.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 593 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 6.5,-2.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 594 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 6.5,-1.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 595 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 6.5,-0.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 596 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 6.5,0.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 597 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 6.5,1.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 599 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 6.5,3.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 600 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 6.5,4.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 601 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 6.5,5.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 602 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 6.5,6.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 608 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 10.5,0.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 609 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 11.5,0.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 610 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 12.5,1.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 611 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 12.5,2.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 613 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad - pos: 14.5,-11.5 + pos: 13.5,5.5 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2473 + color: '#0055CCFF' + - uid: 614 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad - pos: 13.5,-11.5 + pos: 14.5,5.5 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2474 + color: '#0055CCFF' + - uid: 615 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad - pos: 12.5,-11.5 + pos: 15.5,5.5 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2475 + color: '#0055CCFF' + - uid: 616 + components: + - type: Transform + parent: 2 + pos: 12.5,4.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 617 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad pos: 11.5,-11.5 - type: AtmosPipeColor - color: '#0335FCFF' + color: '#0055CCFF' + - uid: 618 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 12.5,-11.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 619 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 13.5,-11.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 620 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 14.5,-11.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 621 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 15.5,-11.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 624 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 11.5,-14.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 625 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 12.5,-14.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 626 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 13.5,-14.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 627 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 14.5,-14.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 628 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 15.5,-14.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 2151 + components: + - type: Transform + parent: 2 + pos: 7.5,-19.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 2230 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 6.5,-20.5 + - type: AtmosPipeColor + color: '#03FCD3FF' + - uid: 2232 + components: + - type: Transform + parent: 2 + pos: 7.5,-18.5 + - type: AtmosPipeColor + color: '#0055CCFF' - proto: GasPipeTJunction entities: - - uid: 338 + - uid: 335 components: - type: Transform parent: 2 rot: 3.141592653589793 rad pos: 8.5,-16.5 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 356 - components: - - type: Transform - parent: 2 - pos: 8.5,0.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 365 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 2.5,-5.5 - - type: AtmosPipeColor - color: '#0335FCFF' + color: '#0055CCFF' - uid: 414 components: - type: Transform parent: 2 rot: -1.5707963267948966 rad pos: 11.5,-18.5 - - uid: 2015 + - uid: 451 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 13.5,-8.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 455 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 6.5,-4.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 470 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 9.5,-3.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 472 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 1.5,-4.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 483 + components: + - type: Transform + parent: 2 + pos: 10.5,-8.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 485 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad pos: 10.5,-14.5 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2163 - components: - - type: Transform - parent: 2 - pos: 14.5,0.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2242 + color: '#0055CCFF' + - uid: 487 components: - type: Transform parent: 2 rot: 3.141592653589793 rad pos: 10.5,-16.5 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2246 + color: '#0055CCFF' + - uid: 499 components: - type: Transform parent: 2 - rot: -1.5707963267948966 rad - pos: 10.5,-12.5 + pos: 9.5,0.5 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2284 + color: '#0055CCFF' + - uid: 515 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 10.5,-11.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 528 components: - type: Transform parent: 2 rot: 3.141592653589793 rad - pos: 10.5,0.5 + pos: 9.5,-8.5 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2285 + color: '#0055CCFF' + - uid: 592 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 6.5,-3.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 598 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 6.5,2.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 604 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 12.5,3.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 605 + components: + - type: Transform + parent: 2 + pos: 13.5,0.5 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 606 components: - type: Transform parent: 2 rot: 3.141592653589793 rad pos: 12.5,0.5 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2295 - components: - - type: Transform - parent: 2 - pos: 11.5,0.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2304 - components: - - type: Transform - parent: 2 - pos: 10.5,-8.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2305 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 11.5,-8.5 - - type: AtmosPipeColor - color: '#0335FCFF' + color: '#0055CCFF' - proto: GasPort entities: - uid: 273 @@ -4724,130 +5230,186 @@ entities: pos: 10.5,-18.5 - proto: GasVentPump entities: - - uid: 335 + - uid: 449 components: - type: Transform parent: 2 pos: 8.5,-15.5 + - type: DeviceNetwork + deviceLists: + - 2482 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 362 + color: '#0055CCFF' + - uid: 457 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 11.5,-12.5 + - type: DeviceNetwork + deviceLists: + - 37 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 461 components: - type: Transform parent: 2 - rot: 1.5707963267948966 rad pos: 1.5,-2.5 + - type: DeviceNetwork + deviceLists: + - 2492 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 1690 + color: '#0055CCFF' + - uid: 462 components: - type: Transform parent: 2 - rot: 1.5707963267948966 rad - pos: 7.5,-12.5 + rot: 3.141592653589793 rad + pos: 6.5,-5.5 + - type: DeviceNetwork + deviceLists: + - 2492 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 1694 - components: - - type: Transform - parent: 2 - rot: 1.5707963267948966 rad - pos: 9.5,-11.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 1949 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 11.5,-16.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 1969 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 16.5,-11.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2025 + color: '#0055CCFF' + - uid: 471 components: - type: Transform parent: 2 rot: 3.141592653589793 rad pos: 1.5,-8.5 + - type: DeviceNetwork + deviceLists: + - 2492 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2156 + color: '#0055CCFF' + - uid: 474 components: - type: Transform parent: 2 - rot: -1.5707963267948966 rad - pos: 16.5,-14.5 + rot: 3.141592653589793 rad + pos: 16.5,-12.5 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2249 + color: '#0055CCFF' + - uid: 475 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad - pos: 9.5,-8.5 + pos: 8.5,-8.5 + - type: DeviceNetwork + deviceLists: + - 11 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2257 + color: '#0055CCFF' + - uid: 476 components: - type: Transform parent: 2 - rot: -1.5707963267948966 rad - pos: 13.5,-8.5 + rot: 1.5707963267948966 rad + pos: 5.5,7.5 + - type: DeviceNetwork + deviceLists: + - 2494 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2259 - components: - - type: Transform - parent: 2 - pos: 5.5,1.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2261 - components: - - type: Transform - parent: 2 - pos: 10.5,1.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2262 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 16.5,3.5 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2266 + color: '#0055CCFF' + - uid: 500 components: - type: Transform parent: 2 rot: 1.5707963267948966 rad pos: 11.5,3.5 + - type: DeviceNetwork + deviceLists: + - 2484 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 2286 + color: '#0055CCFF' + - uid: 502 + components: + - type: Transform + parent: 2 + pos: 6.5,-11.5 + - type: DeviceNetwork + deviceLists: + - 2493 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 506 components: - type: Transform parent: 2 rot: 3.141592653589793 rad - pos: 14.5,-0.5 + pos: 16.5,-15.5 - type: AtmosPipeColor - color: '#0335FCFF' -- proto: GeneratorBasic15kW - entities: - - uid: 387 + color: '#0055CCFF' + - uid: 509 components: - type: Transform parent: 2 - pos: 4.5,-18.5 + rot: 1.5707963267948966 rad + pos: 5.5,2.5 + - type: DeviceNetwork + deviceLists: + - 2494 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 511 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 14.5,-8.5 + - type: DeviceNetwork + deviceLists: + - 11 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 518 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 15.5,-17.5 + - type: DeviceNetwork + deviceLists: + - 631 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 522 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 14.5,0.5 + - type: DeviceNetwork + deviceLists: + - 11 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 525 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 8.5,0.5 + - type: DeviceNetwork + deviceLists: + - 11 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 607 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 16.5,5.5 + - type: DeviceNetwork + deviceLists: + - 2175 + - type: AtmosPipeColor + color: '#0055CCFF' +- proto: GeneratorBasic15kW + entities: - uid: 388 components: - type: Transform @@ -4858,18 +5420,23 @@ entities: - type: Transform parent: 2 pos: 3.5,-20.5 + - uid: 546 + components: + - type: Transform + parent: 2 + pos: 3.5,-19.5 - proto: GeneratorWallmountAPU entities: + - uid: 190 + components: + - type: Transform + parent: 2 + pos: 2.5,-19.5 - uid: 2373 components: - type: Transform parent: 2 pos: 2.5,-18.5 - - uid: 2536 - components: - - type: Transform - parent: 2 - pos: 3.5,-21.5 - uid: 2537 components: - type: Transform @@ -4898,18 +5465,11 @@ entities: pos: 13.7238,-12.50692 - proto: GravityGeneratorMini entities: - - uid: 1746 + - uid: 545 components: - type: Transform parent: 2 - pos: 4.5,-20.5 -- proto: GrenadeStinger - entities: - - uid: 1931 - components: - - type: Transform - parent: 2 - pos: 7.7129054,4.49379 + pos: 4.5,-19.5 - proto: Grille entities: - uid: 9 @@ -4972,6 +5532,36 @@ entities: - type: Transform parent: 2 pos: 2.5,-13.5 + - uid: 362 + components: + - type: Transform + parent: 2 + pos: 18.5,-18.5 + - uid: 539 + components: + - type: Transform + parent: 2 + pos: 18.5,-11.5 + - uid: 543 + components: + - type: Transform + parent: 2 + pos: 18.5,-17.5 + - uid: 547 + components: + - type: Transform + parent: 2 + pos: 18.5,-19.5 + - uid: 553 + components: + - type: Transform + parent: 2 + pos: 11.5,2.5 + - uid: 564 + components: + - type: Transform + parent: 2 + pos: 1.5,-0.5 - uid: 1784 components: - type: Transform @@ -5064,18 +5654,18 @@ entities: pos: 6.5,-23.5 - proto: Gyroscope entities: - - uid: 2543 + - uid: 343 components: - type: Transform parent: 2 - pos: 6.5,-20.5 + pos: 4.5,-18.5 - proto: HoloprojectorSecurity entities: - uid: 2361 components: - type: Transform parent: 2 - pos: 7.5865355,3.9855292 + pos: 5.4612856,4.5328703 - proto: JetInjector entities: - uid: 1847 @@ -5097,6 +5687,28 @@ entities: - type: Transform parent: 2 pos: 19.5,0.5 +- proto: KnifePlastic + entities: + - uid: 446 + components: + - type: Transform + parent: 2 + rot: -1.0471975511965976 rad + pos: 12.613578,-20.956615 +- proto: LockerEvacRepairFilled + entities: + - uid: 431 + components: + - type: Transform + parent: 2 + pos: 5.5,-20.5 +- proto: LockerEvidence + entities: + - uid: 406 + components: + - type: Transform + parent: 2 + pos: 5.5,5.5 - proto: LockerMedicineFilled entities: - uid: 1924 @@ -5104,13 +5716,6 @@ entities: - type: Transform parent: 2 pos: 3.5,-11.5 -- proto: LockerSecurityFilled - entities: - - uid: 1928 - components: - - type: Transform - parent: 2 - pos: 7.5,5.5 - proto: MedicalBed entities: - uid: 1742 @@ -5199,12 +5804,12 @@ entities: pos: 13.5,-19.5 - proto: PaintingSleepingGypsy entities: - - uid: 1831 + - uid: 634 components: - type: Transform parent: 2 rot: -1.5707963267948966 rad - pos: 18.5,-11.5 + pos: 18.5,-12.5 - proto: PaintingTheKiss entities: - uid: 1922 @@ -5223,6 +5828,57 @@ entities: pos: 8.5,5.5 - proto: Paper entities: + - uid: 587 + components: + - type: MetaData + name: Crazy Ramblings + - type: Transform + parent: 586 + - type: Paper + content: >- + Crazy? + + I was crazy once. + + They locked me in a room. + + A shuttle room. + + A shuttle room with cones. + + And cones make me crazy. + + Crazy? + + I was crazy once. + + They locked me in a room. + + A shuttle room. + + A shuttle room with cones. + + And cones make me crazy. + + Crazy? + + I was crazy once. + + They locked me in a room. + + A shuttle room. + + A shuttle room with cones. + + And cones make me crazy. + + Crazy? + + I was crazy on-- + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 586 - uid: 1776 components: - type: Transform @@ -5417,11 +6073,16 @@ entities: pos: 6.5,-6.5 - proto: PottedPlantRandom entities: - - uid: 1820 + - uid: 445 components: - type: Transform parent: 2 - pos: 9.5,6.5 + pos: 13.5,7.5 + - uid: 580 + components: + - type: Transform + parent: 2 + pos: 9.5,7.5 - uid: 1823 components: - type: Transform @@ -5440,6 +6101,12 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 20.5,-15.5 + - uid: 541 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 1.5,6.5 - uid: 1909 components: - type: Transform @@ -5464,15 +6131,6 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 15.5,8.5 - - uid: 2391 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 1.09375,9.4214735 - anchored: False - - type: Physics - bodyType: Dynamic - uid: 2426 components: - type: Transform @@ -5520,6 +6178,12 @@ entities: - type: Transform parent: 2 pos: 1.5,0.5 + - uid: 581 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 10.5,3.5 - uid: 1834 components: - type: Transform @@ -5532,12 +6196,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 13.5,7.5 - - uid: 2161 - components: - - type: Transform - parent: 2 - rot: 3.141592653589793 rad - pos: 11.5,3.5 - uid: 2162 components: - type: Transform @@ -5679,12 +6337,12 @@ entities: pos: 6.5,-7.5 - proto: PoweredSmallLight entities: - - uid: 272 + - uid: 567 components: - type: Transform parent: 2 - rot: -1.5707963267948966 rad - pos: 17.5,-18.5 + rot: 3.141592653589793 rad + pos: 17.5,-20.5 - uid: 2309 components: - type: Transform @@ -5724,12 +6382,30 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 5.5,-19.5 + - uid: 578 + components: + - type: Transform + parent: 2 + pos: 9.5,7.5 - uid: 1917 components: - type: Transform parent: 2 rot: -1.5707963267948966 rad pos: 5.5,-18.5 +- proto: RailingCorner + entities: + - uid: 577 + components: + - type: Transform + parent: 2 + pos: 10.5,7.5 + - uid: 579 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 13.5,7.5 - proto: RandomArcade entities: - uid: 1855 @@ -5762,6 +6438,23 @@ entities: - type: Transform parent: 2 pos: 4.5,-9.5 +- proto: RandomFoodMeal + entities: + - uid: 369 + components: + - type: Transform + parent: 2 + pos: 16.5,-4.5 + - uid: 494 + components: + - type: Transform + parent: 2 + pos: 16.5,-7.5 + - uid: 582 + components: + - type: Transform + parent: 2 + pos: 16.5,-1.5 - proto: RandomVendingDrinks entities: - uid: 1818 @@ -5793,6 +6486,11 @@ entities: - type: Transform parent: 2 pos: 0.5,-5.5 + - uid: 31 + components: + - type: Transform + parent: 2 + pos: 11.5,2.5 - uid: 33 components: - type: Transform @@ -5883,6 +6581,31 @@ entities: - type: Transform parent: 2 pos: 20.5,-8.5 + - uid: 552 + components: + - type: Transform + parent: 2 + pos: 18.5,-11.5 + - uid: 554 + components: + - type: Transform + parent: 2 + pos: 1.5,-0.5 + - uid: 556 + components: + - type: Transform + parent: 2 + pos: 18.5,-19.5 + - uid: 557 + components: + - type: Transform + parent: 2 + pos: 18.5,-18.5 + - uid: 558 + components: + - type: Transform + parent: 2 + pos: 18.5,-17.5 - uid: 1756 components: - type: Transform @@ -5968,6 +6691,20 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 19.5,-6.5 +- proto: SignCargo + entities: + - uid: 544 + components: + - type: Transform + parent: 2 + pos: 12.5,-15.5 +- proto: SignEngineering + entities: + - uid: 630 + components: + - type: Transform + parent: 2 + pos: 9.5,-17.5 - proto: SignEVA entities: - uid: 2357 @@ -5991,14 +6728,6 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 19.5,-2.5 -- proto: SignMaterials - entities: - - uid: 2359 - components: - - type: Transform - parent: 2 - rot: -1.5707963267948966 rad - pos: 12.5,-15.5 - proto: SignMedical entities: - uid: 264 @@ -6088,28 +6817,11 @@ entities: pos: 16.5,-14.5 - proto: SMESBasic entities: - - uid: 417 + - uid: 347 components: - type: Transform parent: 2 - pos: 4.5,-19.5 - - uid: 418 - components: - - type: Transform - parent: 2 - pos: 3.5,-19.5 -- proto: SmokeGrenade - entities: - - uid: 253 - components: - - type: Transform - parent: 2 - pos: 7.4316554,4.5459094 - - uid: 1932 - components: - - type: Transform - parent: 2 - pos: 7.361392,4.421079 + pos: 4.5,-20.5 - proto: SodaDispenser entities: - uid: 298 @@ -6118,6 +6830,25 @@ entities: parent: 2 rot: -1.5707963267948966 rad pos: 19.5,-7.5 +- proto: SpiderWeb + entities: + - uid: 548 + components: + - type: Transform + parent: 2 + pos: 12.5,-23.5 +- proto: StairDark + entities: + - uid: 444 + components: + - type: Transform + parent: 2 + pos: 11.5,7.5 + - uid: 576 + components: + - type: Transform + parent: 2 + pos: 12.5,7.5 - proto: StasisBed entities: - uid: 260 @@ -6238,6 +6969,12 @@ entities: parent: 2 rot: 1.5707963267948966 rad pos: 6.5,-16.5 + - uid: 633 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 6.5,-20.5 - uid: 1791 components: - type: Transform @@ -6275,16 +7012,16 @@ entities: - type: Transform parent: 2 pos: 6.5,-1.5 - - uid: 168 + - uid: 356 components: - type: Transform parent: 2 - pos: 7.5,3.5 - - uid: 1929 + pos: 5.5,3.5 + - uid: 360 components: - type: Transform parent: 2 - pos: 7.5,4.5 + pos: 5.5,4.5 - proto: TableWood entities: - uid: 57 @@ -6531,16 +7268,16 @@ entities: pos: 17.491707,-20.389145 - proto: ToolboxEmergencyFilled entities: + - uid: 447 + components: + - type: Transform + parent: 2 + pos: 14.432401,-22.235931 - uid: 2383 components: - type: Transform parent: 2 - pos: 14.443944,-22.25664 - - uid: 2384 - components: - - type: Transform - parent: 2 - pos: 14.589777,-22.49639 + pos: 14.604276,-22.485931 - proto: UtilityKnife entities: - uid: 131 @@ -6579,6 +7316,13 @@ entities: - type: Transform parent: 2 pos: 3.5,-13.5 +- proto: VendingMachineSec + entities: + - uid: 439 + components: + - type: Transform + parent: 2 + pos: 3.5,2.5 - proto: VendingMachineTankDispenserEVA entities: - uid: 1817 @@ -6933,11 +7677,6 @@ entities: - type: Transform parent: 2 pos: 2.5,-14.5 - - uid: 177 - components: - - type: Transform - parent: 2 - pos: 18.5,-11.5 - uid: 178 components: - type: Transform @@ -7048,11 +7787,6 @@ entities: - type: Transform parent: 2 pos: 9.5,2.5 - - uid: 244 - components: - - type: Transform - parent: 2 - pos: 11.5,2.5 - uid: 245 components: - type: Transform @@ -7123,12 +7857,17 @@ entities: - type: Transform parent: 2 pos: 19.5,-16.5 - - uid: 352 + - uid: 555 components: - type: Transform parent: 2 - pos: 1.5,-0.5 - - uid: 360 + pos: 12.5,-22.5 + - uid: 562 + components: + - type: Transform + parent: 2 + pos: 11.5,-22.5 + - uid: 565 components: - type: Transform parent: 2 @@ -7193,21 +7932,6 @@ entities: - type: Transform parent: 2 pos: 13.5,-19.5 - - uid: 1710 - components: - - type: Transform - parent: 2 - pos: 18.5,-17.5 - - uid: 1711 - components: - - type: Transform - parent: 2 - pos: 18.5,-18.5 - - uid: 1712 - components: - - type: Transform - parent: 2 - pos: 18.5,-19.5 - uid: 1713 components: - type: Transform @@ -7493,16 +8217,6 @@ entities: - type: Transform parent: 2 pos: 8.5,-10.5 - - uid: 2315 - components: - - type: Transform - parent: 2 - pos: 12.5,-22.5 - - uid: 2316 - components: - - type: Transform - parent: 2 - pos: 11.5,-22.5 - uid: 2365 components: - type: Transform @@ -7594,16 +8308,16 @@ entities: pos: 5.5,-25.5 - proto: WardrobePrison entities: - - uid: 396 - components: - - type: Transform - parent: 2 - pos: 3.5,7.5 - uid: 397 components: - type: Transform parent: 2 pos: 3.5,8.5 + - uid: 561 + components: + - type: Transform + parent: 2 + pos: 7.5,8.5 - proto: WaterCooler entities: - uid: 2210 @@ -7613,21 +8327,19 @@ entities: pos: 12.5,-13.5 - proto: WeaponCapacitorRecharger entities: - - uid: 1930 + - uid: 536 components: - type: Transform parent: 2 - pos: 7.5,3.5 -- proto: Windoor + pos: 5.5,3.5 +- proto: WindoorBarLocked entities: - - uid: 2205 + - uid: 563 components: - type: Transform parent: 2 rot: -1.5707963267948966 rad pos: 16.5,-9.5 -- proto: WindoorBarLocked - entities: - uid: 2221 components: - type: Transform @@ -7694,6 +8406,113 @@ entities: - Close - proto: WindowReinforcedDirectional entities: + - uid: 194 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 11.5,-7.5 + - uid: 200 + components: + - type: Transform + parent: 2 + pos: 11.5,-7.5 + - uid: 204 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 11.5,-0.5 + - uid: 206 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 11.5,-2.5 + - uid: 208 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 11.5,-7.5 + - uid: 214 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 11.5,-6.5 + - uid: 220 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 11.5,-4.5 + - uid: 359 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 11.5,-0.5 + - uid: 375 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 11.5,-4.5 + - uid: 432 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 11.5,-1.5 + - uid: 436 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 11.5,-2.5 + - uid: 489 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 11.5,-3.5 + - uid: 490 + components: + - type: Transform + parent: 2 + rot: -1.5707963267948966 rad + pos: 11.5,-5.5 + - uid: 491 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 11.5,-3.5 + - uid: 492 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 11.5,-5.5 + - uid: 493 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 11.5,-1.5 + - uid: 495 + components: + - type: Transform + parent: 2 + rot: 3.141592653589793 rad + pos: 11.5,-0.5 + - uid: 496 + components: + - type: Transform + parent: 2 + rot: 1.5707963267948966 rad + pos: 11.5,-6.5 - uid: 1744 components: - type: Transform From 6afe6c9ea2466249c869881c8a3035602fe9b9e3 Mon Sep 17 00:00:00 2001 From: Fildrance Date: Wed, 16 Sep 2026 10:57:22 +0000 Subject: [PATCH 145/197] refactor: update changelog tool for publish-testing workflow, it should fix names in changelogs (#45909) --- .github/workflows/publish-testing.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish-testing.yml b/.github/workflows/publish-testing.yml index 57e5a4f1b5..0863202d05 100644 --- a/.github/workflows/publish-testing.yml +++ b/.github/workflows/publish-testing.yml @@ -37,7 +37,7 @@ jobs: - name: Update changelog run: | - dotnet tool install --global SpaceWizards.ChangelogTool --version 1.0.7 + dotnet tool install --global SpaceWizards.ChangelogTool --version 1.0.8 ss14-changelog update -d Resources/Changelog env: REPO: ${{ github.repository }} From 1cdf296bb6414d0f8851eab5c4964a456176a250 Mon Sep 17 00:00:00 2001 From: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Date: Wed, 16 Sep 2026 12:08:40 +0000 Subject: [PATCH 146/197] Action Requirements (#46029) * FAILURE * oh it was that easy * actually this is how its supposed to be yeah * remove mobstate and satiation * replacements * cleaner * discord remarks * refactor: extract ActionRequirementsSystem.DoCancel method, fix typo in ActionRequirementsComponent * review --------- Co-authored-by: Fildrance --- .../Actions/ActionRequirementsSystem.cs | 92 +++++++++++++++++++ .../Components/ActionRequirementsComponent.cs | 65 +++++++++++++ .../Actions/Events/ActionAttemptEvent.cs | 2 +- .../Actions/Events/ActionPerformedEvent.cs | 3 +- Content.Shared/Actions/SharedActionsSystem.cs | 10 +- .../MouthUncoveredEntityConditionSystem.cs | 36 ++++++++ .../ActionRequireMobStateComponent.cs | 28 ------ .../Systems/MobStateSystem.Subscribers.cs | 19 ---- .../ActionRequireMouthUncoveredComponent.cs | 16 ---- .../ActionRequireSatiationComponent.cs | 43 --------- .../EntitySystems/IngestionSystem.cs | 9 -- .../SatiationSystem.Subscribers.cs | 39 -------- .../guidebook/entity-effects/conditions.ftl | 3 + Resources/Locale/en-US/mob-state.ftl | 4 - Resources/Prototypes/Actions/changeling.yml | 80 ++++++++++++---- 15 files changed, 270 insertions(+), 179 deletions(-) create mode 100644 Content.Shared/Actions/ActionRequirementsSystem.cs create mode 100644 Content.Shared/Actions/Components/ActionRequirementsComponent.cs create mode 100644 Content.Shared/EntityConditions/Conditions/Body/MouthUncoveredEntityConditionSystem.cs delete mode 100644 Content.Shared/Mobs/Components/ActionRequireMobStateComponent.cs delete mode 100644 Content.Shared/Nutrition/Components/ActionRequireMouthUncoveredComponent.cs delete mode 100644 Content.Shared/Nutrition/Components/ActionRequireSatiationComponent.cs delete mode 100644 Content.Shared/Nutrition/EntitySystems/SatiationSystem.Subscribers.cs delete mode 100644 Resources/Locale/en-US/mob-state.ftl diff --git a/Content.Shared/Actions/ActionRequirementsSystem.cs b/Content.Shared/Actions/ActionRequirementsSystem.cs new file mode 100644 index 0000000000..cef464de86 --- /dev/null +++ b/Content.Shared/Actions/ActionRequirementsSystem.cs @@ -0,0 +1,92 @@ +using System.Linq; +using Content.Shared.Actions.Components; +using Content.Shared.Actions.Events; +using Content.Shared.EntityConditions; +using Content.Shared.EntityEffects; +using Content.Shared.IdentityManagement; + +namespace Content.Shared.Actions; + +/// +public sealed partial class ActionRequirementsSystem : EntitySystem +{ + [Dependency] private SharedEntityConditionsSystem _conditions = default!; + [Dependency] private SharedEntityEffectsSystem _effects = default!; + + [SubscribeLocalEvent] + private void OnActionAttempt(Entity ent, ref ActionAttemptEvent args) + { + var performerConditions = GetConditions(ent, ActionRequirementTarget.Performer); + + var user = args.User; + + // We always need to pass in some target to the Loc, it is probably safe to assume if there is no target we can just pass in the user. + // Its just popup stuff anyway. + var target = args.Target ?? args.User; + + if (!_conditions.TryConditions(args.User, performerConditions)) + { + DoCancel(ent, target, user, ref args); + return; + } + + var targetConditions = GetConditions(ent, ActionRequirementTarget.Target); + + if (args.Target != null && !_conditions.TryConditions(args.Target.Value, targetConditions)) + { + DoCancel(ent, target, user, ref args); + } + } + + [SubscribeLocalEvent] + private void OnActionPerformed(Entity ent, ref ActionPerformedEvent args) + { + var performerEffects = GetEffects(ent, ActionRequirementTarget.Performer); + + var user = args.Performer; + var target = args.Target; + + _effects.TryApplyEffects(user, performerEffects, user: user); + + if (target == null) + return; + + var targetEffects = GetEffects(ent, ActionRequirementTarget.Target); + + _effects.TryApplyEffects(target.Value, targetEffects, user: user); + } + + private EntityCondition[] GetConditions(Entity ent, ActionRequirementTarget target) + { + var conditions = ent.Comp.Conditions + .Where(x => x.Key.HasFlag(target)) + .SelectMany(x => x.Value); + + return conditions.ToArray(); + } + + private EntityEffect[] GetEffects(Entity ent, ActionRequirementTarget target) + { + var conditions = ent.Comp.Effects + .Where(x => x.Key.HasFlag(target)) + .SelectMany(x => x.Value); + + return conditions.ToArray(); + } + + private void DoCancel(Entity ent, EntityUid target, EntityUid user, ref ActionAttemptEvent args) + { + if (ent.Comp.FailPopup != null) + { + args.Reason = Loc.GetString( + ent.Comp.FailPopup, + ("target", Identity.Name(target, EntityManager)), + ("performer", Identity.Name(user, EntityManager)), + ("action", ent) + ); + } + + args.Type = ent.Comp.FailPopupType; + args.Cancelled = true; + } +} diff --git a/Content.Shared/Actions/Components/ActionRequirementsComponent.cs b/Content.Shared/Actions/Components/ActionRequirementsComponent.cs new file mode 100644 index 0000000000..b8f9ae2580 --- /dev/null +++ b/Content.Shared/Actions/Components/ActionRequirementsComponent.cs @@ -0,0 +1,65 @@ +using Content.Shared.EntityConditions; +using Content.Shared.EntityEffects; +using Content.Shared.Popups; +using Robust.Shared.GameStates; + +namespace Content.Shared.Actions.Components; + +/// +/// Specifies the action performer/target needs to meet specific conditions for the action to be correctly validated. +/// Can optionally use entity effects to do things such as subtracting satiation. +/// +[RegisterComponent, NetworkedComponent, Access(typeof(ActionRequirementsSystem))] +public sealed partial class ActionRequirementsComponent : Component +{ + /// + /// What entity conditions the related entities need to meet for the action to count as valid. + /// Can be used, for example, to check if the performer has enough satiation. + /// + [DataField] + public Dictionary Conditions = new (); + + /// + /// Effects to use on the related entities AFTER the action is successfully performed. + /// Can be used, for example, to spend satiation after the action is performed. + /// + [DataField] + public Dictionary Effects = new (); + + /// + /// The text to show to the performer about why their action failed. + /// Gets "Performer", "Target" and "Action" passed into it as identities. + /// + [DataField] + public LocId? FailPopup; // TODO: Conditions should return their own text for why they failed to use in popups. Then this can be optional and be made to ignore that text instead. + + /// + /// The type the popup for the performer should be. + /// + [DataField] + public PopupType FailPopupType = PopupType.Small; +} + +/// +/// Who the condition/effect will target. +/// +[Flags] +public enum ActionRequirementTarget : byte +{ + /// + /// The target is the action performer. + /// + Performer = 0, + + /// + /// The target is the action target (if any) + /// + Target = 1 << 0, + + /// + /// The target is both the performer and the target. + /// + Both = Performer | Target, + + // World - Maybe once conditions and effects support tile/world targeting properly. +} diff --git a/Content.Shared/Actions/Events/ActionAttemptEvent.cs b/Content.Shared/Actions/Events/ActionAttemptEvent.cs index ca15e01a58..db00c4e262 100644 --- a/Content.Shared/Actions/Events/ActionAttemptEvent.cs +++ b/Content.Shared/Actions/Events/ActionAttemptEvent.cs @@ -7,4 +7,4 @@ namespace Content.Shared.Actions.Events; /// Allowed to have side effects like modifying the action components. /// [ByRefEvent] -public record struct ActionAttemptEvent(EntityUid User, bool Cancelled = false, string? Reason = null, PopupType Type = PopupType.SmallCaution); +public record struct ActionAttemptEvent(EntityUid User, EntityUid? Target, bool Cancelled = false, string? Reason = null, PopupType Type = PopupType.SmallCaution); diff --git a/Content.Shared/Actions/Events/ActionPerformedEvent.cs b/Content.Shared/Actions/Events/ActionPerformedEvent.cs index 530d7c9335..3aab63dcf7 100644 --- a/Content.Shared/Actions/Events/ActionPerformedEvent.cs +++ b/Content.Shared/Actions/Events/ActionPerformedEvent.cs @@ -4,5 +4,6 @@ namespace Content.Shared.Actions.Events; /// Raised on the action entity when it is used and . /// /// The entity that performed this action. +/// The target of the action, if any. [ByRefEvent] -public readonly record struct ActionPerformedEvent(EntityUid Performer); +public readonly record struct ActionPerformedEvent(EntityUid Performer, EntityUid? Target); diff --git a/Content.Shared/Actions/SharedActionsSystem.cs b/Content.Shared/Actions/SharedActionsSystem.cs index 314273e966..3c9fa7e2fc 100644 --- a/Content.Shared/Actions/SharedActionsSystem.cs +++ b/Content.Shared/Actions/SharedActionsSystem.cs @@ -305,8 +305,10 @@ public abstract partial class SharedActionsSystem : EntitySystem if (IsCooldownActive(action, curTime)) return false; + var target = GetEntity(ev.EntityTarget); + // check for action use prevention - var attemptEv = new ActionAttemptEvent(user); + var attemptEv = new ActionAttemptEvent(user, target); RaiseLocalEvent(action, ref attemptEv); if (attemptEv.Cancelled) { @@ -610,7 +612,11 @@ public abstract partial class SharedActionsSystem : EntitySystem UpdateAction(action); - var performed = new ActionPerformedEvent(performer); + EntityUid? actionTarget = null; + if (actionEvent is EntityTargetActionEvent targetEv) + actionTarget = targetEv.Target; + + var performed = new ActionPerformedEvent(performer, actionTarget); RaiseLocalEvent(action, ref performed); } #endregion diff --git a/Content.Shared/EntityConditions/Conditions/Body/MouthUncoveredEntityConditionSystem.cs b/Content.Shared/EntityConditions/Conditions/Body/MouthUncoveredEntityConditionSystem.cs new file mode 100644 index 0000000000..4f1cc2d913 --- /dev/null +++ b/Content.Shared/EntityConditions/Conditions/Body/MouthUncoveredEntityConditionSystem.cs @@ -0,0 +1,36 @@ +using Content.Shared.Inventory; +using Content.Shared.Nutrition.Components; +using Content.Shared.Nutrition.EntitySystems; +using Robust.Shared.Prototypes; + +namespace Content.Shared.EntityConditions.Conditions.Body; + +/// +/// A condition which passes if the specified entity has their mouth uncovered, generally meaning they're able to eat or drink. +/// +public sealed partial class MouthUncoveredEntityConditionSystem : EntityConditionSystem +{ + [Dependency] private IngestionSystem _ingestion = default!; + + /// + protected override void Condition(Entity entity, ref EntityConditionEvent args) + { + args.Result = _ingestion.HasMouthAvailable(entity, args.Condition.Slots); + } +} + +/// +public sealed partial class MouthUncoveredCondition : EntityConditionBase +{ + /// + /// The slots to check for . + /// + [DataField] + public SlotFlags Slots = SlotFlags.HEAD | SlotFlags.MASK; + + /// + public override string EntityConditionGuidebookText(IPrototypeManager prototype) + { + return Loc.GetString("entity-condition-guidebook-mouth-uncovered-condition"); + } +} diff --git a/Content.Shared/Mobs/Components/ActionRequireMobStateComponent.cs b/Content.Shared/Mobs/Components/ActionRequireMobStateComponent.cs deleted file mode 100644 index 96e66ade2d..0000000000 --- a/Content.Shared/Mobs/Components/ActionRequireMobStateComponent.cs +++ /dev/null @@ -1,28 +0,0 @@ -using Content.Shared.Mobs.Systems; -using Content.Shared.Popups; -using Robust.Shared.GameStates; - -namespace Content.Shared.Mobs.Components; - -[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] -[Access(typeof(MobStateSystem))] -public sealed partial class ActionRequireMobStateComponent : Component -{ - /// - /// The required MobState for the action. - /// - [DataField(required: true), AutoNetworkedField] - public HashSet States = new(); - - /// - /// The type of Popup to be used. - /// - [DataField, AutoNetworkedField] - public LocId? FailReason = "mob-state-action-requires-state"; - - /// - /// The type of the popup the fail reason should show as. - /// - [DataField, AutoNetworkedField] - public PopupType FailReasonPopupType = PopupType.SmallCaution; -} diff --git a/Content.Shared/Mobs/Systems/MobStateSystem.Subscribers.cs b/Content.Shared/Mobs/Systems/MobStateSystem.Subscribers.cs index 6490476115..af345fd35d 100644 --- a/Content.Shared/Mobs/Systems/MobStateSystem.Subscribers.cs +++ b/Content.Shared/Mobs/Systems/MobStateSystem.Subscribers.cs @@ -222,25 +222,6 @@ public partial class MobStateSystem args.Damage *= _damageable.UniversalMobDamageModifier; } - [SubscribeLocalEvent] - private void OnMobStateActionAttempt(Entity ent, ref ActionAttemptEvent args) - { - if (_mobStateQuery.TryComp(args.User, out var mobState) && - ent.Comp.States.Contains(mobState.CurrentState)) - { - return; - } - - if (ent.Comp.FailReason != null) - { - var states = string.Join(", ", ent.Comp.States.Order().Select(s => Loc.GetString($"mob-state-{s}"))); - args.Reason = Loc.GetString(ent.Comp.FailReason, ("states", states)); - args.Type = ent.Comp.FailReasonPopupType; - } - - args.Cancelled = true; - } - [SubscribeLocalEvent] private void OnIncapCuffCheck(Entity ent, ref CheckIncapacitatedCuffEvent args) { diff --git a/Content.Shared/Nutrition/Components/ActionRequireMouthUncoveredComponent.cs b/Content.Shared/Nutrition/Components/ActionRequireMouthUncoveredComponent.cs deleted file mode 100644 index 9071433de0..0000000000 --- a/Content.Shared/Nutrition/Components/ActionRequireMouthUncoveredComponent.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Content.Shared.Inventory; -using Content.Shared.Nutrition.EntitySystems; -using Robust.Shared.GameStates; - -namespace Content.Shared.Nutrition.Components; - -[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] -[Access(typeof(IngestionSystem))] -public sealed partial class ActionRequireMouthUncoveredComponent : Component -{ - /// - /// The slots that must be free for the action to be used. - /// - [DataField, AutoNetworkedField] - public SlotFlags Slots = SlotFlags.HEAD | SlotFlags.MASK; -} diff --git a/Content.Shared/Nutrition/Components/ActionRequireSatiationComponent.cs b/Content.Shared/Nutrition/Components/ActionRequireSatiationComponent.cs deleted file mode 100644 index c3f84fa91f..0000000000 --- a/Content.Shared/Nutrition/Components/ActionRequireSatiationComponent.cs +++ /dev/null @@ -1,43 +0,0 @@ -using Content.Shared.FixedPoint; -using Content.Shared.Nutrition.EntitySystems; -using Content.Shared.Nutrition.Prototypes; -using Content.Shared.Popups; -using Robust.Shared.GameStates; -using Robust.Shared.Prototypes; - -namespace Content.Shared.Nutrition.Components; - -[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] -[Access(typeof(SatiationSystem))] -public sealed partial class ActionRequireSatiationComponent : Component -{ - /// - /// The required satiation type for this ability. - /// - [DataField(required: true)] - public ProtoId Satiation = SatiationSystem.Hunger; - - /// - /// The amount of satiation needed for this ability. - /// - [DataField, AutoNetworkedField] - public FixedPoint2 Amount = 10f; - - /// - /// Whether the satiation should be spent once the action is handled. - /// - [DataField, AutoNetworkedField] - public bool Spend = true; - - /// - /// The popup to show when we don't have enough of the specified satiation type. - /// - [DataField, AutoNetworkedField] - public LocId? FailReason = "satiation-not-enough-hunger"; - - /// - /// The type the popup should show as. - /// - [DataField, AutoNetworkedField] - public PopupType FailReasonType = PopupType.SmallCaution; -} diff --git a/Content.Shared/Nutrition/EntitySystems/IngestionSystem.cs b/Content.Shared/Nutrition/EntitySystems/IngestionSystem.cs index 30425740a9..cab6a65190 100644 --- a/Content.Shared/Nutrition/EntitySystems/IngestionSystem.cs +++ b/Content.Shared/Nutrition/EntitySystems/IngestionSystem.cs @@ -91,9 +91,6 @@ public sealed partial class IngestionSystem : EntitySystem SubscribeLocalEvent(OnAttemptShake); SubscribeLocalEvent(OnBeforeToolRefined); - // Actions - SubscribeLocalEvent(OnMouthUncoveredActionAttempt); - InitializeBlockers(); InitializeUtensils(); } @@ -535,10 +532,4 @@ public sealed partial class IngestionSystem : EntitySystem if (IsEmpty(entity)) args.Cancelled = true; } - - private void OnMouthUncoveredActionAttempt(Entity ent, ref ActionAttemptEvent args) - { - if (!HasMouthAvailable(args.User, ent.Comp.Slots)) - args.Cancelled = true; - } } diff --git a/Content.Shared/Nutrition/EntitySystems/SatiationSystem.Subscribers.cs b/Content.Shared/Nutrition/EntitySystems/SatiationSystem.Subscribers.cs deleted file mode 100644 index 500160cf41..0000000000 --- a/Content.Shared/Nutrition/EntitySystems/SatiationSystem.Subscribers.cs +++ /dev/null @@ -1,39 +0,0 @@ -using Content.Shared.Actions.Events; -using Content.Shared.Nutrition.Components; -using Content.Shared.Popups; - -namespace Content.Shared.Nutrition.EntitySystems; - -public abstract partial class SatiationSystem -{ - [Dependency] private EntityQuery _satiationQuery = default!; - - [SubscribeLocalEvent] - private void OnActionAttempt(Entity ent, ref ActionAttemptEvent args) - { - if (_satiationQuery.TryComp(args.User, out var satiation) - && GetValueOrNull((args.User, satiation), ent.Comp.Satiation) is {} value - && value >= ent.Comp.Amount) - return; - - if (ent.Comp.FailReason != null) - { - args.Reason = Loc.GetString(ent.Comp.FailReason); - args.Type = ent.Comp.FailReasonType; - } - - args.Cancelled = true; - } - - [SubscribeLocalEvent] - private void OnActionPerformed(Entity ent, ref ActionPerformedEvent args) - { - if (!ent.Comp.Spend) - return; - - if (!_satiationQuery.TryComp(args.Performer, out var satiation)) - return; - - ModifyValue((args.Performer, satiation), ent.Comp.Satiation, -ent.Comp.Amount.Float()); - } -} diff --git a/Resources/Locale/en-US/guidebook/entity-effects/conditions.ftl b/Resources/Locale/en-US/guidebook/entity-effects/conditions.ftl index 7796d9b99a..44ecefea72 100644 --- a/Resources/Locale/en-US/guidebook/entity-effects/conditions.ftl +++ b/Resources/Locale/en-US/guidebook/entity-effects/conditions.ftl @@ -92,3 +92,6 @@ entity-condition-guidebook-internals = [true] using internals *[false] breathing atmospheric air } + +entity-condition-guidebook-mouth-uncovered-condition = + the mob has an uncovered mouth diff --git a/Resources/Locale/en-US/mob-state.ftl b/Resources/Locale/en-US/mob-state.ftl deleted file mode 100644 index 3c4b83a256..0000000000 --- a/Resources/Locale/en-US/mob-state.ftl +++ /dev/null @@ -1,4 +0,0 @@ -mob-state-action-requires-state = You need to be {$states} to do that! -mob-state-Alive = Alive -mob-state-Critical = Critical -mob-state-Dead = Dead diff --git a/Resources/Prototypes/Actions/changeling.yml b/Resources/Prototypes/Actions/changeling.yml index 54dee99489..b3c1bafb7b 100644 --- a/Resources/Prototypes/Actions/changeling.yml +++ b/Resources/Prototypes/Actions/changeling.yml @@ -35,10 +35,19 @@ sprite: Interface/Actions/changeling2.rsi layers: - state: biodegrade - - type: ActionRequireSatiation - satiation: Chemicals - amount: 20 - failReason: changeling-not-enough-chemicals + - type: ActionRequirements + failPopup: changeling-not-enough-chemicals + failPopupType: SmallCaution + conditions: + Performer: + - !type:SatiationCondition + satiationType: Chemicals + min: 20 + effects: + Performer: + - !type:Satiate + satiationType: Chemicals + factor: -20 - type: InstantAction event: !type:ChangelingBiodegradeActionEvent - type: ChangelingBiodegradeAbility @@ -59,7 +68,10 @@ - state: "devour_on" map: ["enum.ActionVisuals.IconToggled"] visible: false - - type: ActionRequireMouthUncovered + - type: ActionRequirements + conditions: + Performer: + - !type:MouthUncoveredCondition - type: TargetAction - type: EntityTargetAction event: !type:ChangelingDevourActionEvent @@ -161,10 +173,17 @@ - state: "extract_dna_on" map: ["enum.ActionVisuals.IconToggled"] visible: false - - type: ActionRequireSatiation - satiation: Chemicals - amount: 50 - failReason: changeling-not-enough-chemicals + - type: ActionRequirements + conditions: + Performer: + - !type:SatiationCondition + satiationType: Chemicals + min: 50 + effects: + Performer: + - !type:Satiate + satiationType: Chemicals + factor: -50 - type: TargetAction - type: EntityTargetAction canTargetSelf: false @@ -188,10 +207,19 @@ components: - Bloodstream event: !type:EntityEffectActionEvent - - type: ActionRequireSatiation - satiation: Chemicals - amount: 30 - failReason: changeling-not-enough-chemicals + - type: ActionRequirements + failPopup: changeling-not-enough-chemicals + failPopupType: SmallCaution + conditions: + Performer: + - !type:SatiationCondition + satiationType: Chemicals + min: 30 + effects: + Performer: + - !type:Satiate + satiationType: Chemicals + factor: -30 - type: PopupOnAction popupType: Medium selfMessage: changeling-sting-success @@ -250,8 +278,17 @@ sprite: Interface/Actions/changeling2.rsi layers: - state: lethal_sting - - type: ActionRequireSatiation - amount: 50 + - type: ActionRequirements + conditions: + Performer: + - !type:SatiationCondition + satiationType: Chemicals + min: 50 + effects: + Performer: + - !type:Satiate + satiationType: Chemicals + factor: -50 - type: EntityEffectAction effects: - !type:AddReagentToBloodstream @@ -315,8 +352,17 @@ sprite: Interface/Actions/changeling2.rsi layers: - state: armblade_sting - - type: ActionRequireSatiation - amount: 50 + - type: ActionRequirements + conditions: + Performer: + - !type:SatiationCondition + satiationType: Chemicals + min: 50 + effects: + Performer: + - !type:Satiate + satiationType: Chemicals + factor: -50 - type: EntityEffectAction effects: - !type:ModifyStatusEffect From 5e5388c9b390b15db46ba0ae25946ac17faefac6 Mon Sep 17 00:00:00 2001 From: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Date: Wed, 16 Sep 2026 14:45:15 +0000 Subject: [PATCH 147/197] Small ActionRequirements Fix (#46048) john peak --- .../Actions/Components/ActionRequirementsComponent.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Content.Shared/Actions/Components/ActionRequirementsComponent.cs b/Content.Shared/Actions/Components/ActionRequirementsComponent.cs index b8f9ae2580..c9a87fa882 100644 --- a/Content.Shared/Actions/Components/ActionRequirementsComponent.cs +++ b/Content.Shared/Actions/Components/ActionRequirementsComponent.cs @@ -46,15 +46,20 @@ public sealed partial class ActionRequirementsComponent : Component [Flags] public enum ActionRequirementTarget : byte { + /// + /// Literally nothing. The condition and effect will target nothing, and as such, cannot happen. + /// + None = 0, + /// /// The target is the action performer. /// - Performer = 0, + Performer = 1 << 0, /// /// The target is the action target (if any) /// - Target = 1 << 0, + Target = 1 << 1, /// /// The target is both the performer and the target. From 687367e7bd38d5519450449220dbdfc806462a56 Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Wed, 16 Sep 2026 15:50:01 +0000 Subject: [PATCH 148/197] Move truncheon & telescopic shield to T2 research, make truncheon 2x3 (#45348) * Initial commit * Update ERT to make stuff stop falling out --- .../Prototypes/Entities/Clothing/Belt/job.yml | 1 - .../Entities/Objects/Weapons/security.yml | 5 ++- Resources/Prototypes/Research/arsenal.yml | 34 ++++++++--------- .../Jobs/CentComm/emergencyresponseteam.yml | 36 ++++++++---------- .../Guns/Battery/disabler_smg.rsi/icon.png | Bin 0 -> 15497 bytes .../Guns/Battery/disabler_smg.rsi/meta.json | 3 ++ 6 files changed, 40 insertions(+), 39 deletions(-) create mode 100644 Resources/Textures/Objects/Weapons/Guns/Battery/disabler_smg.rsi/icon.png diff --git a/Resources/Prototypes/Entities/Clothing/Belt/job.yml b/Resources/Prototypes/Entities/Clothing/Belt/job.yml index e9efc00427..4c39f13f3e 100644 --- a/Resources/Prototypes/Entities/Clothing/Belt/job.yml +++ b/Resources/Prototypes/Entities/Clothing/Belt/job.yml @@ -421,7 +421,6 @@ - MagazinePistol - MagazineMagnum - CombatKnife - - Truncheon - HandGrenade - Stunbaton components: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/security.yml b/Resources/Prototypes/Entities/Objects/Weapons/security.yml index 83f61ec1da..0c452211db 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/security.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/security.yml @@ -120,7 +120,10 @@ collection: MetalThud bluntStaminaDamageFactor: 1.5 - type: Item - size: Normal + size: Large + shape: + - 0,0,1,2 + storedRotation: -45 - type: Tag tags: - Truncheon diff --git a/Resources/Prototypes/Research/arsenal.yml b/Resources/Prototypes/Research/arsenal.yml index 846eef1452..5d601ace13 100644 --- a/Resources/Prototypes/Research/arsenal.yml +++ b/Resources/Prototypes/Research/arsenal.yml @@ -52,8 +52,8 @@ id: NonlethalAmmunition name: research-technology-nonlethal-ammunition icon: - sprite: Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell.rsi - state: beanbag + sprite: Objects/Weapons/Guns/Battery/disabler_smg.rsi + state: icon discipline: Arsenal tier: 1 cost: 5000 @@ -62,6 +62,7 @@ - BoxShellTranquilizer - BoxBeanbag - WeaponDisabler + - WeaponDisablerSMG - type: technology id: UraniumMunitions @@ -84,21 +85,6 @@ - MagazineBoxRifleUranium - BoxShotgunUranium -- type: technology - id: AdvancedRiotControl - name: research-technology-advanced-riot-control - icon: - sprite: Objects/Weapons/Melee/truncheon.rsi - state: icon - discipline: Arsenal - tier: 1 - cost: 8000 - recipeUnlocks: - - Truncheon - - TelescopicShield - - HoloprojectorSecurity - - WeaponDisablerSMG - - type: technology id: ExplosiveTechnology name: research-technology-explosive-technology @@ -133,6 +119,20 @@ # Tier 2 +- type: technology + id: AdvancedRiotControl + name: research-technology-advanced-riot-control + icon: + sprite: Objects/Weapons/Melee/truncheon.rsi + state: icon + discipline: Arsenal + tier: 2 + cost: 8000 + recipeUnlocks: + - Truncheon + - TelescopicShield + - HoloprojectorSecurity + - type: technology id: ConcentratedLaserWeaponry name: research-technology-concentrated-laser-weaponry diff --git a/Resources/Prototypes/Roles/Jobs/CentComm/emergencyresponseteam.yml b/Resources/Prototypes/Roles/Jobs/CentComm/emergencyresponseteam.yml index 2fa8da816a..84b59c474c 100644 --- a/Resources/Prototypes/Roles/Jobs/CentComm/emergencyresponseteam.yml +++ b/Resources/Prototypes/Roles/Jobs/CentComm/emergencyresponseteam.yml @@ -79,8 +79,8 @@ - MedkitCombatFilled # End of first line - GrenadeShrapnel - EmpGrenade - belt: - Truncheon + belt: - Handcuffs - Handcuffs - CrowbarRed @@ -370,23 +370,21 @@ - GrenadeBlast - GrenadeBlast - GrenadeBlast + - GrenadeFlash + - GrenadeFlash # End of first line + - GrenadeEMP + - GrenadeEMP + - GrenadeEMP - MagazinePistol - - MedkitCombatFilled # End of first line - - GrenadeEMP - - GrenadeEMP - - GrenadeEMP - - GrenadeFlash - - GrenadeFlash - - GrenadeFlash - - MagazinePistol - belt: - Truncheon - - Handcuffs + belt: - Handcuffs - CrowbarRed + - EmergencyMedipen - WeaponPistolMk58 - MagazinePistol - - EmergencyMedipen + - MagazinePistol + - MedkitCombatFilled - type: startingGear parent: ERTSecurityGearEVA @@ -399,23 +397,22 @@ - ExGrenade - SmokeGrenade - EmpGrenade - - HoloprojectorSecurity - TelescopicShield - - TelescopicShield - - TelescopicShield - - MedkitCombatFilled # End of first line + - TelescopicShield # End of first line + - MedkitCombatFilled - MagazinePistolSubMachineGunTopMounted - MagazinePistolSubMachineGunTopMounted - MagazinePistolSubMachineGunTopMounted - MagazinePistolSubMachineGunTopMounted - belt: - Truncheon + belt: - Handcuffs - Handcuffs - CrowbarRed - WeaponPistolMk58 - MagazinePistol - EmergencyMedipen + - HoloprojectorSecurity - type: startingGear parent: ERTSecurityGearEVA @@ -430,12 +427,11 @@ - BoxShotgunSlug - BoxShotgunIncendiary - MedkitCombatFilled # End of first line - - SmokeGrenade - ExGrenade - CableDetStack - BoxDetonator - belt: - Truncheon + belt: - Handcuffs - Handcuffs - CrowbarRed @@ -532,8 +528,8 @@ - MedkitCombatFilled - ClothingEyesGlassesChemical - ChemistryBottleOmnizine - belt: - Truncheon + belt: - Zipties - CrowbarRed - MagazineRifle diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/disabler_smg.rsi/icon.png b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler_smg.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..6856a375742608f42fa2d5570ce165ab52de0726 GIT binary patch literal 15497 zcmeI3du$ZP9mh8$G>L26I7(|Lw8`~|X%n;F$Gv=;y93+jCplw*>qlsV_jc#bTi@MY zZ})t6E)^If6vU${1uJQ5P+O6bwm{odBm%do2*HtPLz;v%Dk-2UN8IeFpw&Lqk{K z>Go(#uSQX2Cye8!J=JB4DatviboS^yzJ~=#4cCaW>IXH+a1{2YDA)32RFnpQZt{bm z5^wR>v|E&vG_~wJ;Wz z<}HGi6|B4|`!Rb;;FT*T2ZYt$rffQBxy}8$9u*iSkx0}eEH!E@$Z$@llVN#==V{o3 z)>08&Owti;NhU}xju&WBOo{4>8ZjAhMZX%?-Db0qDF4ZhD;&)yifCDOkRp>5qYPKW zGP8+fDX)pfW1;k|$r1xXAPge926f!5x@fr~Z{C$q{ratKWg4e3>7`f9flk=2CufQvyTh50T-171-F9-if`G{@6i zZ71gtShya!YLkr+NzRsyM93_H!%(ww!E;{~YZ?A0v1$i^t@iN=8SBa6B? zuPDWRi{i+V5Kv=bQTHfeF$kDwB1!hWXP{*vo-noQDj;t^< zRYi|w=^D(m!iPTiyvgJrIA@e+ei!>BFA5|2B%>m+ND>4H-Xys2d=M|eg#f{u1Q(tU z;w88cAb6AD!t+7A1Q!AXZxUR1K8Tm#LV(~+f(y?F@e*7J5WGon;rSq5f(rqHHwi90 zAH+*=AwcjZ!G-68cnK~92;L;P@O%(2!G!?9n*!T>)af+%?cddJ&iJ}%%w0i40lYgBY{oTM_ zb(JSK+`RU_Q!ku+>C~O0)y%}E`lA~+J!WcYnfkbI?A)WLE|lM2S?8*{mjE!}xDwY!bi?q;H0YV`f<<*QD=-qmFp1%HtQFpBVV%;SJ!a`u*2$T>LE66utvI=DLCQMz(|zlkpL+GT=6J`0UoKrDkDEq!?HPP%$Ck>z#I@81?mJd) z4L`HJ+_v!_lUDj?%6A_~eE$8ne!cr{zjUR3L0gsg=@k?_YQNNdcCfl?XJGi&GuXd-UfefLpcx$3J}e$l7J=>f`Lzcf^Og2N%3@%kH)k@7w)9IM@8Dvwh-BTNM;{ zmyd2eFwpzRaKFGDxNYaiYaQ_iPg|bcUhzcNU3b2y{;2!8$sH?Gi}tj=qJ>{u_nx-? z$*z6DUv2wI`{t|14*i>1et-Pl-~4gn!hQAD4ab)bFC7+ce381o-E;V(8+ErDFAKLe LwtElN_ig$Q^1>%r literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/disabler_smg.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler_smg.rsi/meta.json index 6322804e10..0cddf5e7cc 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Battery/disabler_smg.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler_smg.rsi/meta.json @@ -10,6 +10,9 @@ { "name": "base" }, + { + "name": "icon" + }, { "name": "mag-unshaded-4" }, From 2c6ffecf6266612c7bf20e7c573c51103abc8f7b Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> Date: Wed, 16 Sep 2026 19:34:19 +0000 Subject: [PATCH 149/197] Move GameTicker to Shared (#45834) * Scope creep my ass * why was this shit not pushed???? * gone... * fix that * review plus buildd * asfsafsafsafsafas * grug * burber * I'll fix this later * shrimply die * also this * it's snerf or snuthin * assaads * round snend * aaaa * fix this shit for real * actually, don't start GameRules until MapInit now that I think aboot it. * forgot u * don't actually need this part nullable * Deffer comp removal * one liner * do that too * chungus * Honestly makes more sense here, plus WHY are we doing all that shit on "GameRuleAdded" rather than GameRuleStarted(?) * deferred removal :V * aaaaaaaaaaaaaaa * whhop * Whoop * better * landmine that I placed for myself then forgot about lmao * cleanup * FUCKING `!` * gotovo * amogus * please don't check by metadata I beg * waawsasfdfsasfa * sfafsasfafsas * fdsaasffsasfa * code * fix * fasasffasfasfsad * chungaas * I may be stupid * gra * graaaaaaaaaaaaaaaaa * comment * gra * clearing is not predicted and would require major refactors, so don't cache on client. * lame shit :P * last holes * nukeopsfsafsasafsfafsa * why was that shit public bruh * bubrbgwahrghfaka * dynamic * revert change that did nothing lmao --- .../SpawnEquipDeleteBenchmark.cs | 2 +- .../UI/Tabs/ObjectsTab/ObjectsTab.xaml.cs | 6 +- .../Antag/ClientAntagSelectionSystem.cs | 32 + .../Audio/ContentAudioSystem.LobbyMusic.cs | 1 + ...CommunicationsConsoleBoundUserInterface.cs | 4 +- Content.Client/Entry/EntryPoint.cs | 2 - .../GameTicking/ClientGameTicker.cs | 190 ++++ .../GameTicking/Managers/ClientGameTicker.cs | 168 --- Content.Client/LateJoin/LateJoinGui.cs | 3 +- .../Light/EntitySystems/SunShadowSystem.cs | 4 +- Content.Client/Light/LightCycleSystem.cs | 5 +- Content.Client/Lobby/LobbyState.cs | 2 +- .../Lobby/UI/HumanoidProfileEditor.xaml.cs | 2 +- .../ProfilePreviewSpriteView.Humanoid.cs | 7 +- Content.Client/PDA/PdaMenu.xaml.cs | 6 +- .../RoundEnd/RoundEndSummaryUIController.cs | 2 +- .../Shuttles/ClientArrivalsSystem.cs | 6 + Content.Client/Station/ClientStationSystem.cs | 6 + .../Station/StationSpawningSystem.cs | 5 - Content.Client/Station/StationSystem.cs | 6 - ...lStationRecordConsoleBoundUserInterface.cs | 4 +- .../Store/Ui/StoreListingControl.xaml.cs | 6 +- .../Pair/TestPair.Recycle.cs | 4 +- Content.IntegrationTests/Pair/TestPair.cs | 2 +- .../Tests/Administration/Logs/AddTests.cs | 4 +- .../Tests/Administration/Logs/QueryTests.cs | 2 +- .../Tests/Commands/RestartRoundTest.cs | 3 +- Content.IntegrationTests/Tests/EntityTest.cs | 3 +- .../Tests/FollowerSystemTest.cs | 4 +- .../GameRules/AllGamePresetsStartTest.cs | 7 +- .../Tests/GameRules/AntagGhostRoleTest.cs | 9 +- .../Tests/GameRules/AntagTest.cs | 6 +- .../Tests/GameRules/FailAndStartPresetTest.cs | 4 +- .../Tests/GameRules/NukeOpsTest.cs | 6 +- .../Tests/GameRules/RuleMaxTimeRestartTest.cs | 5 +- .../Tests/GameRules/SecretStartsTest.cs | 3 +- .../Tests/GameRules/StartEndGameRulesTest.cs | 2 +- .../Tests/GameRules/TraitorRuleTest.cs | 6 +- .../Tests/GameTestTests/DependencyTests.cs | 9 +- .../Tests/Internals/AutoInternalsTests.cs | 2 +- .../Tests/Minds/MindTests.EntityDeletion.cs | 6 +- .../Tests/Minds/MindTests.Helpers.cs | 2 +- .../Tests/PostMapInitTest.cs | 6 +- .../Tests/Power/StationPowerTests.cs | 4 +- .../Tests/Preferences/LoadoutTests.cs | 1 + .../Tests/Replays/ReplayTests.cs | 2 +- .../Tests/ResettingEntitySystemTests.cs | 2 +- .../Tests/RestartRoundTest.cs | 2 +- .../Tests/Round/JobTest.cs | 16 +- .../Tests/RoundEndTest.cs | 3 +- Content.IntegrationTests/Tests/ShuttleTest.cs | 1 + .../Tests/Station/EvacShuttleTest.cs | 3 +- .../Tests/Station/StationJobsTest.cs | 15 +- Content.MapRenderer/Painters/MapPainter.cs | 2 +- .../Access/Systems/PresetIdCardSystem.cs | 6 +- .../AdminEventLog/AdminEventLogEui.cs | 2 +- .../Administration/Commands/AGhostCommand.cs | 4 +- .../Commands/ForceGhostCommand.cs | 2 +- .../Commands/LoadGameMapCommand.cs | 2 +- .../Commands/ReadyAllCommand.cs | 3 +- .../Commands/ThrowScoreboardCommand.cs | 2 +- .../Administration/Logs/AdminLogManager.cs | 2 +- .../Administration/Logs/AdminLogSystem.cs | 4 +- .../Administration/Logs/AdminLogsEui.cs | 2 +- .../Administration/Logs/IAdminLogManager.cs | 3 +- .../Administration/Managers/BanManager.cs | 2 +- .../Administration/Notes/AdminNotesManager.cs | 2 +- Content.Server/Administration/ServerApi.cs | 24 +- .../Administration/Systems/AdminSystem.cs | 2 +- .../Systems/AdminVerbSystem.Antags.cs | 11 +- .../Systems/AdminVerbSystem.Tools.cs | 2 +- .../Administration/Systems/AdminVerbSystem.cs | 3 +- .../Administration/Systems/BwoinkSystem.cs | 2 +- Content.Server/Afk/AfkSystem.cs | 3 +- .../AlertLevel/AlertLevelDisplaySystem.cs | 2 +- .../Commands/SetAlertLevelCommand.cs | 3 +- Content.Server/Anomaly/AnomalySystem.cs | 2 +- .../Antag/AntagMultipleRoleSpawnerSystem.cs | 1 + Content.Server/Antag/AntagObjectivesSystem.cs | 3 +- .../Antag/AntagRandomObjectivesSystem.cs | 2 +- Content.Server/Antag/AntagRandomSpawnRule.cs | 13 +- Content.Server/Antag/AntagSpawnerSystem.cs | 1 + .../AntagMultipleRoleSpawnerComponent.cs | 1 - .../Components/AntagRandomSpawnComponent.cs | 1 + .../Antag/MobReplacementRuleSystem.cs | 1 + .../Antag/ServerAntagSelectionSystem.cs | 167 +++ Content.Server/Audio/ContentAudioSystem.cs | 1 + .../Audio/ServerGlobalSoundSystem.cs | 2 +- .../Bed/Cryostorage/CryostorageSystem.cs | 22 +- .../Cargo/Systems/CargoSystem.Telepad.cs | 2 +- Content.Server/Cargo/Systems/CargoSystem.cs | 2 +- .../Cartridges/CrewManifestCartridgeSystem.cs | 2 +- .../ServerChangelingLastResortSystem.cs | 1 - Content.Server/Chat/Systems/ChatSystem.cs | 5 +- Content.Server/Clock/ClockSystem.cs | 1 + .../Clothing/Systems/OutfitSystem.cs | 5 +- .../Communications/CommsHackerSystem.cs | 2 +- .../CommunicationsConsoleSystem.cs | 1 + .../Connection/ConnectionManager.cs | 4 +- .../Construction/AnchorOnlyOnStationSystem.cs | 2 +- .../CrewManifest/CrewManifestSystem.cs | 2 +- .../Systems/CriminalRecordsConsoleSystem.cs | 2 +- .../Systems/CriminalRecordsHackerSystem.cs | 2 +- .../Systems/CriminalRecordsSystem.cs | 4 +- Content.Server/Delivery/DeliverySystem.cs | 2 +- .../Systems/SingletonDeviceNetServerSystem.cs | 2 +- .../Systems/StationLimitedNetworkSystem.cs | 3 +- .../Discord/WebhookMessages/VoteWebhooks.cs | 2 +- Content.Server/Entry/EntryPoint.cs | 2 +- Content.Server/Fax/FaxSystem.cs | 1 - .../FeedbackSystem/FeedbackSystem.cs | 2 +- .../GameTicking/Commands/DelayStartCommand.cs | 3 +- .../GameTicking/Commands/EndRoundCommand.cs | 3 +- .../Commands/ForcePresetCommand.cs | 5 +- .../GameTicking/Commands/GoLobbyCommand.cs | 4 +- .../GameTicking/Commands/JoinGameCommand.cs | 4 +- .../GameTicking/Commands/ObserveCommand.cs | 2 +- .../GameTicking/Commands/RespawnCommand.cs | 2 +- .../Commands/RestartRoundCommand.cs | 5 +- .../Commands/SetGamePresetCommand.cs | 7 +- .../GameTicking/Commands/StartRoundCommand.cs | 3 +- .../Commands/ToggleReadyCommand.cs | 3 +- .../GameTicking/GameTicker.CVars.cs | 82 -- .../GameTicking/GameTicker.GameRule.cs | 573 ---------- .../GameTicking/GameTicker.Lobby.cs | 188 ---- .../GameTicking/GameTicker.RoundFlow.cs | 998 ------------------ .../GameTicking/GameTicker.StatusShell.cs | 62 -- .../Presets/GamePresetPrototype.cs | 43 - .../Rules/AntagLoadProfileRuleSystem.cs | 2 + .../GameTicking/Rules/DeathMatchRuleSystem.cs | 15 +- .../GameTicking/Rules/DynamicRuleSystem.cs | 19 +- .../Rules/GameRuleSystem.Utility.cs | 184 ---- .../GameTicking/Rules/GameRuleSystem.cs | 118 --- .../Rules/InactivityTimeRestartRuleSystem.cs | 17 +- .../Rules/KillCalloutRuleSystem.cs | 3 +- .../Rules/MaxTimeRestartRuleSystem.cs | 12 +- .../GameTicking/Rules/RespawnRuleSystem.cs | 8 +- .../RoundstartStationVariationRuleSystem.cs | 16 +- .../GameTicking/Rules/RuleGridsSystem.cs | 5 +- .../GameTicking/Rules/SandboxRuleSystem.cs | 9 +- .../GameTicking/Rules/SecretRuleSystem.cs | 21 +- ...leSystem.cs => ServerNukeopsRuleSystem.cs} | 165 +-- ...em.cs => ServerRevolutionaryRuleSystem.cs} | 50 +- .../Rules/ServerTraitorRuleSystem.cs | 60 ++ .../Rules/ServerXenoborgsRuleSystem.cs | 43 + .../Rules/ServerZombieRuleSystem.cs | 60 ++ .../GameTicking/Rules/SubGamemodesSystem.cs | 1 + .../EntitySpawnVariationPassSystem.cs | 2 +- .../PuddleMessVariationPassSystem.cs | 2 +- .../VariationPass/VariationPassSystem.cs | 3 +- .../GameTicking/ServerGameTicker.CVars.cs | 101 ++ .../GameTicking/ServerGameTicker.Chat.cs | 40 + ...eset.cs => ServerGameTicker.GamePreset.cs} | 63 +- .../GameTicking/ServerGameTicker.GameRule.cs | 240 +++++ .../GameTicking/ServerGameTicker.Lobby.cs | 187 ++++ ...cs => ServerGameTicker.LobbyBackground.cs} | 4 +- ...r.Player.cs => ServerGameTicker.Player.cs} | 24 +- ...Replays.cs => ServerGameTicker.Replays.cs} | 15 +- .../GameTicking/ServerGameTicker.RoundFlow.cs | 878 +++++++++++++++ ...awning.cs => ServerGameTicker.Spawning.cs} | 85 +- .../ServerGameTicker.StatusShell.cs | 51 + .../{GameTicker.cs => ServerGameTicker.cs} | 37 +- Content.Server/Ghost/GhostCommand.cs | 2 +- Content.Server/Ghost/GhostSystem.cs | 7 +- Content.Server/Holiday/HolidaySystem.cs | 4 +- .../Implants/ChameleonControllerSystem.cs | 4 +- .../EntitySystems/EmergencyLightSystem.cs | 2 +- Content.Server/Magic/MagicSystem.cs | 8 +- Content.Server/Mapping/MappingCommand.cs | 2 +- Content.Server/Maps/GameMapManager.cs | 8 +- .../MassMedia/Systems/NewsSystem.cs | 4 +- Content.Server/Mind/MindSystem.cs | 5 +- Content.Server/Nuke/NukeCodePaperSystem.cs | 2 +- Content.Server/Nuke/NukeSystem.cs | 2 +- .../NukeOps/WarDeclaratorComponent.cs | 2 +- Content.Server/Objectives/ObjectivesSystem.cs | 6 +- .../MultipleTraitorsRequirementSystem.cs | 1 + .../Systems/ObjectiveLimitSystem.cs | 4 +- Content.Server/PDA/PdaSystem.cs | 9 +- Content.Server/Pinpointer/StationMapSystem.cs | 10 +- .../PowerMonitoringConsoleSystem.cs | 4 +- Content.Server/PowerSink/PowerSinkSystem.cs | 2 +- Content.Server/Procedural/DungeonSystem.cs | 1 + .../Respawn/SpecialRespawnSystem.cs | 1 + .../Revenant/EntitySystems/CorporealSystem.cs | 3 +- .../Revenant/EntitySystems/RevenantSystem.cs | 5 +- Content.Server/Roles/RoleBriefingSystem.cs | 1 + Content.Server/Roles/RoleSystem.cs | 39 - Content.Server/RoundEnd/RoundEndSystem.cs | 24 +- .../Salvage/JobBoard/SalvageJobBoardSystem.cs | 2 +- Content.Server/Salvage/SalvageSystem.cs | 2 +- Content.Server/Sandbox/SandboxSystem.cs | 5 +- .../Shuttles/Components/ShuttleComponent.cs | 79 -- .../Systems/EmergencyShuttleSystem.Console.cs | 5 - .../Systems/EmergencyShuttleSystem.cs | 14 +- ...ivalsSystem.cs => ServerArrivalsSystem.cs} | 746 ++++++------- .../Systems/ShuttleConsoleSystem.FTL.cs | 1 + .../Shuttles/Systems/ShuttleConsoleSystem.cs | 2 +- .../Shuttles/Systems/ShuttleSystem.Impact.cs | 3 +- .../Shuttles/Systems/ShuttleSystem.cs | 6 +- .../Shuttles/Systems/StationAnchorSystem.cs | 1 + Content.Server/Silicons/Laws/IonLawSystem.cs | 4 +- .../Silicons/Laws/SiliconLawSystem.cs | 2 +- .../Silicons/StationAi/StationAiSystem.cs | 8 +- .../EntitySystems/ConditionalSpawnerSystem.cs | 9 +- .../Station/Commands/JobsCommand.cs | 14 +- .../Station/Commands/StationCommand.cs | 16 +- ... => ServerStationJobsSystem.Roundstart.cs} | 4 +- ...bsSystem.cs => ServerStationJobsSystem.cs} | 36 +- ...tationSystem.cs => ServerStationSystem.cs} | 112 +- .../Station/Systems/StationBiomeSystem.cs | 2 +- .../Station/Systems/StationNameSystem.cs | 2 +- .../BasicStationEventSchedulerSystem.cs | 11 +- .../Components/MeteorSwarmComponent.cs | 6 + .../StationEvents/EventManagerSystem.cs | 72 +- .../Events/AlertLevelInterceptionRule.cs | 8 +- .../StationEvents/Events/AnomalySpawnRule.cs | 4 +- .../Events/BluespaceArtifactRule.cs | 2 +- .../StationEvents/Events/BreakerFlipRule.cs | 4 +- .../Events/BureaucraticErrorRule.cs | 6 +- .../StationEvents/Events/CargoGiftsRule.cs | 80 +- .../StationEvents/Events/ClericalErrorRule.cs | 2 +- .../StationEvents/Events/GasLeakRule.cs | 26 +- .../StationEvents/Events/GreytideVirusRule.cs | 6 +- .../StationEvents/Events/ImmovableRodRule.cs | 6 +- .../StationEvents/Events/IonStormRule.cs | 4 +- .../StationEvents/Events/KudzuGrowthRule.cs | 2 +- .../Events/MassHallucinationsRule.cs | 8 +- .../StationEvents/Events/MeteorSwarmSystem.cs | 44 +- .../Events/PowerGridCheckRule.cs | 35 +- .../Events/RandomEntityStorageSpawnRule.cs | 4 +- .../Events/RandomSentienceRule.cs | 4 +- .../StationEvents/Events/RandomSpawnRule.cs | 2 +- .../StationEvents/Events/SolarFlareRule.cs | 2 +- .../StationEvents/Events/SpaceSpawnRule.cs | 6 +- .../Events/StationEventSystem.cs | 23 +- .../StationEvents/Events/VentClogRule.cs | 4 +- .../StationEvents/Events/VentCrittersRule.cs | 4 +- .../StationEvents/Events/VentHordeRule.cs | 6 +- .../RampingStationEventSchedulerSystem.cs | 27 +- .../EntitySystems/BluespaceLockerSystem.cs | 3 +- Content.Server/Tips/TipsSystem.cs | 3 +- .../Components/TraitorCodePaperComponent.cs | 2 +- .../Traitor/Systems/AutoTraitorSystem.cs | 3 +- .../Traitor/Systems/TraitorCodePaperSystem.cs | 10 +- .../Trigger/Systems/GameRuleTriggerSystem.cs | 8 +- .../Managers/VoteManager.DefaultVotes.cs | 13 +- Content.Server/Voting/Managers/VoteManager.cs | 2 +- Content.Server/Voting/VoteCommands.cs | 2 +- Content.Server/Voting/VotingSystem.cs | 4 +- Content.Server/Xenoborgs/XenoborgSystem.cs | 9 +- .../Access/Systems/AccessReaderSystem.cs | 2 +- Content.Shared/AlertLevel/AlertLevelSystem.cs | 4 +- .../AntagSelectionSystem.API.Assignment.cs | 62 +- .../Antag/AntagSelectionSystem.API.cs | 330 ++++-- .../Antag/AntagSelectionSystem.cs | 185 +--- .../Components/AntagSelectionComponent.cs | 10 +- .../GhostRoleAntagSpawnerComponent.cs | 3 +- .../Antag/Selectors/AntagCountSelector.cs | 5 +- .../Antag/Selectors/FixedAntagCount.cs | 2 +- .../Antag/Selectors/LinearAntagCount.cs | 2 +- Content.Shared/CCVar/CCVars.Shuttle.cs | 4 +- Content.Shared/Clock/SharedClockSystem.cs | 2 +- Content.Shared/Clothing/LoadoutSystem.cs | 4 +- .../Codewords/CodewordComponent.cs | 2 +- .../Codewords/CodewordFactionPrototype.cs | 2 +- .../Codewords/CodewordGeneratorPrototype.cs | 13 +- .../Codewords/CodewordManagerComponent.cs | 2 +- .../Codewords/CodewordSystem.cs | 16 +- .../EntitySystems/AnchorableSystem.cs | 4 +- .../SharedCriminalRecordsConsoleSystem.cs | 3 +- .../Conditions/HasBudgetCondition.cs | 1 + .../Conditions/MaxRuleOccurenceCondition.cs | 5 +- .../Conditions/ReoccurrenceDelayCondition.cs | 6 +- .../Conditions/RoundDurationCondition.cs | 2 +- .../Components/ActiveGameRuleComponent.cs | 1 - .../Components/EndedGameRuleComponent.cs | 8 - .../Components/GameRuleComponent.cs | 105 +- .../GameTicking/Events/RoundStartingEvent.cs | 2 +- .../GameTicking/GameTicker.CVars.cs | 11 + Content.Shared/GameTicking/GameTicker.Chat.cs | 57 + .../GameTicking/GameTicker.GamePreset.cs | 44 + .../GameTicking/GameTicker.GameRule.cs | 589 +++++++++++ .../GameTicking/GameTicker.Lobby.cs | 16 + .../GameTicking/GameTicker.Player.cs | 8 + .../GameTicking/GameTicker.RoundFlow.cs | 169 +++ .../GameTicking/GameTicker.Spawning.cs | 15 + Content.Shared/GameTicking/GameTicker.cs | 258 +++++ .../Prototypes/GamePresetPrototype.cs | 42 + .../Components/ChangelingRuleComponent.cs | 2 +- .../Rules/Components/DragonRuleComponent.cs | 2 +- .../{ => Components}/DynamicRuleComponent.cs | 2 +- .../DynamicRuleCostComponent.cs | 2 +- .../Rules/Components/NukeopsRuleComponent.cs | 6 +- .../Components/ParadoxCloneRuleComponent.cs | 2 +- .../Components/RevolutionaryRuleComponent.cs | 4 +- ...RoundstartStationVariationRuleComponent.cs | 3 +- .../StationVariationPassRuleComponent.cs | 6 +- .../Rules/Components/SurvivorRuleComponent.cs | 2 +- .../Rules/Components/ThiefRuleComponent.cs | 6 +- .../Rules/Components/TraitorRuleComponent.cs | 5 +- .../Components/XenoborgsRuleComponent.cs | 2 +- .../Rules/Components/ZombieRuleComponent.cs | 7 +- .../GameTicking/Rules/DragonRuleSystem.cs | 31 +- .../Rules/GameRuleSystem.Utility.cs | 37 + .../GameTicking/Rules/GameRuleSystem.cs | 117 ++ .../GameTicking/Rules/NukeopsRuleSystem.cs | 88 ++ .../Rules/ParadoxCloneRuleSystem.cs | 31 +- .../Rules/RevolutionaryRuleSystem.cs | 20 + .../GameTicking/Rules/SurvivorRuleSystem.cs | 41 +- .../GameTicking/Rules/ThiefRuleSystem.cs | 19 +- .../GameTicking/Rules/TraitorRuleSystem.cs | 115 +- .../GameTicking/Rules/XenoborgsRuleSystem.cs | 83 +- .../GameTicking/Rules/ZombieRuleSystem.cs | 106 +- .../GameTicking/SharedGameTicker.cs | 237 ----- .../Maps/GameMapPoolPrototype.cs | 3 +- .../SuitSensors/SharedSuitSensorSystem.cs | 8 +- .../Components/TargetOverrideComponent.cs | 2 +- Content.Shared/PDA/SharedPdaSystem.cs | 14 + Content.Shared/Players/ContentPlayerData.cs | 2 +- .../Preferences/HumanoidCharacterProfile.cs | 2 +- Content.Shared/Roles/SharedRoleSystem.cs | 42 +- Content.Shared/RoundEnd/RoundEndBehavior.cs | 19 + .../Components/ArrivalsBlacklistComponent.cs | 6 +- .../Components/ArrivalsShuttleComponent.cs | 4 +- .../Components/ArrivalsSourceComponent.cs | 9 +- .../Components/EmergencyShuttleComponent.cs | 9 +- .../Components/PendingClockInComponent.cs | 7 +- .../Shuttles/Components/ShuttleComponent.cs | 81 ++ .../Components/StationArrivalsComponent.cs | 4 +- .../Shuttles/Systems/ArrivalsSystem.cs | 152 +++ .../Systems/SharedEmergencyShuttleSystem.cs | 14 + .../ContainerSpawnPointComponent.cs | 4 +- .../Spawners/Components/ISpawnPoint.cs | 2 +- .../Components/SpawnPointComponent.cs | 2 +- .../ContainerSpawnPointSystem.cs | 18 +- .../EntitySystems/SpawnPointSystem.cs | 14 +- .../Components/BecomesStationComponent.cs | 2 +- .../Components/StationDataComponent.cs | 3 +- .../StationEventEligibleComponent.cs | 7 +- .../Components/StationJobsComponent.cs | 5 +- .../Components/StationSpawningComponent.cs | 8 +- .../Components/StationTrackerComponent.cs | 3 +- .../Station/FlingTowardStationSystem.cs | 5 +- .../Station/SharedStationSpawningSystem.cs | 199 ---- .../Station/Systems/StationJobsSystem.cs | 6 + .../Station/Systems/StationSpawningSystem.cs | 311 ++++-- .../Station/Systems/StationSystem.Event.cs | 136 +++ .../StationSystem.Tracker.cs} | 20 +- .../StationSystem.cs} | 71 +- ...SharedGeneralStationRecordConsoleSystem.cs | 4 +- .../AlertLevelChangeOnTriggerSystem.cs | 4 +- Resources/Prototypes/GameRules/roundstart.yml | 9 +- Resources/Prototypes/GameRules/variation.yml | 4 +- 354 files changed, 6188 insertions(+), 5201 deletions(-) create mode 100644 Content.Client/Antag/ClientAntagSelectionSystem.cs create mode 100644 Content.Client/GameTicking/ClientGameTicker.cs delete mode 100644 Content.Client/GameTicking/Managers/ClientGameTicker.cs create mode 100644 Content.Client/Shuttles/ClientArrivalsSystem.cs create mode 100644 Content.Client/Station/ClientStationSystem.cs delete mode 100644 Content.Client/Station/StationSpawningSystem.cs delete mode 100644 Content.Client/Station/StationSystem.cs create mode 100644 Content.Server/Antag/ServerAntagSelectionSystem.cs delete mode 100644 Content.Server/GameTicking/GameTicker.CVars.cs delete mode 100644 Content.Server/GameTicking/GameTicker.GameRule.cs delete mode 100644 Content.Server/GameTicking/GameTicker.Lobby.cs delete mode 100644 Content.Server/GameTicking/GameTicker.RoundFlow.cs delete mode 100644 Content.Server/GameTicking/GameTicker.StatusShell.cs delete mode 100644 Content.Server/GameTicking/Presets/GamePresetPrototype.cs delete mode 100644 Content.Server/GameTicking/Rules/GameRuleSystem.Utility.cs delete mode 100644 Content.Server/GameTicking/Rules/GameRuleSystem.cs rename Content.Server/GameTicking/Rules/{NukeopsRuleSystem.cs => ServerNukeopsRuleSystem.cs} (79%) rename Content.Server/GameTicking/Rules/{RevolutionaryRuleSystem.cs => ServerRevolutionaryRuleSystem.cs} (87%) create mode 100644 Content.Server/GameTicking/Rules/ServerTraitorRuleSystem.cs create mode 100644 Content.Server/GameTicking/Rules/ServerXenoborgsRuleSystem.cs create mode 100644 Content.Server/GameTicking/Rules/ServerZombieRuleSystem.cs create mode 100644 Content.Server/GameTicking/ServerGameTicker.CVars.cs create mode 100644 Content.Server/GameTicking/ServerGameTicker.Chat.cs rename Content.Server/GameTicking/{GameTicker.GamePreset.cs => ServerGameTicker.GamePreset.cs} (75%) create mode 100644 Content.Server/GameTicking/ServerGameTicker.GameRule.cs create mode 100644 Content.Server/GameTicking/ServerGameTicker.Lobby.cs rename Content.Server/GameTicking/{GameTicker.LobbyBackground.cs => ServerGameTicker.LobbyBackground.cs} (92%) rename Content.Server/GameTicking/{GameTicker.Player.cs => ServerGameTicker.Player.cs} (85%) rename Content.Server/GameTicking/{GameTicker.Replays.cs => ServerGameTicker.Replays.cs} (89%) create mode 100644 Content.Server/GameTicking/ServerGameTicker.RoundFlow.cs rename Content.Server/GameTicking/{GameTicker.Spawning.cs => ServerGameTicker.Spawning.cs} (85%) create mode 100644 Content.Server/GameTicking/ServerGameTicker.StatusShell.cs rename Content.Server/GameTicking/{GameTicker.cs => ServerGameTicker.cs} (77%) delete mode 100644 Content.Server/Shuttles/Components/ShuttleComponent.cs rename Content.Server/Shuttles/Systems/{ArrivalsSystem.cs => ServerArrivalsSystem.cs} (70%) rename Content.Server/Station/Systems/{StationJobsSystem.Roundstart.cs => ServerStationJobsSystem.Roundstart.cs} (99%) rename Content.Server/Station/Systems/{StationJobsSystem.cs => ServerStationJobsSystem.cs} (93%) rename Content.Server/Station/Systems/{StationSystem.cs => ServerStationSystem.cs} (79%) rename {Content.Server => Content.Shared}/Antag/AntagSelectionSystem.API.Assignment.cs (91%) rename {Content.Server => Content.Shared}/Antag/AntagSelectionSystem.API.cs (67%) rename {Content.Server => Content.Shared}/Antag/AntagSelectionSystem.cs (81%) rename {Content.Server => Content.Shared}/Antag/Components/AntagSelectionComponent.cs (92%) rename {Content.Server => Content.Shared}/Antag/Components/GhostRoleAntagSpawnerComponent.cs (84%) rename {Content.Server => Content.Shared}/Antag/Selectors/AntagCountSelector.cs (90%) rename {Content.Server => Content.Shared}/Antag/Selectors/FixedAntagCount.cs (90%) rename {Content.Server => Content.Shared}/Antag/Selectors/LinearAntagCount.cs (90%) rename {Content.Server => Content.Shared}/Codewords/CodewordComponent.cs (88%) rename {Content.Server => Content.Shared}/Codewords/CodewordFactionPrototype.cs (93%) rename {Content.Server => Content.Shared}/Codewords/CodewordGeneratorPrototype.cs (84%) rename {Content.Server => Content.Shared}/Codewords/CodewordManagerComponent.cs (94%) rename {Content.Server => Content.Shared}/Codewords/CodewordSystem.cs (90%) delete mode 100644 Content.Shared/GameTicking/Components/EndedGameRuleComponent.cs rename {Content.Server => Content.Shared}/GameTicking/Events/RoundStartingEvent.cs (85%) create mode 100644 Content.Shared/GameTicking/GameTicker.CVars.cs create mode 100644 Content.Shared/GameTicking/GameTicker.Chat.cs create mode 100644 Content.Shared/GameTicking/GameTicker.GamePreset.cs create mode 100644 Content.Shared/GameTicking/GameTicker.GameRule.cs create mode 100644 Content.Shared/GameTicking/GameTicker.Lobby.cs create mode 100644 Content.Shared/GameTicking/GameTicker.Player.cs create mode 100644 Content.Shared/GameTicking/GameTicker.RoundFlow.cs create mode 100644 Content.Shared/GameTicking/GameTicker.Spawning.cs create mode 100644 Content.Shared/GameTicking/GameTicker.cs create mode 100644 Content.Shared/GameTicking/Prototypes/GamePresetPrototype.cs rename {Content.Server => Content.Shared}/GameTicking/Rules/Components/ChangelingRuleComponent.cs (75%) rename {Content.Server => Content.Shared}/GameTicking/Rules/Components/DragonRuleComponent.cs (59%) rename Content.Shared/GameTicking/Rules/{ => Components}/DynamicRuleComponent.cs (97%) rename Content.Shared/GameTicking/Rules/{ => Components}/DynamicRuleCostComponent.cs (85%) rename {Content.Server => Content.Shared}/GameTicking/Rules/Components/NukeopsRuleComponent.cs (96%) rename {Content.Server => Content.Shared}/GameTicking/Rules/Components/ParadoxCloneRuleComponent.cs (96%) rename {Content.Server => Content.Shared}/GameTicking/Rules/Components/RevolutionaryRuleComponent.cs (90%) rename {Content.Server => Content.Shared}/GameTicking/Rules/Components/RoundstartStationVariationRuleComponent.cs (87%) rename {Content.Server => Content.Shared}/GameTicking/Rules/Components/StationVariationPassRuleComponent.cs (75%) rename {Content.Server => Content.Shared}/GameTicking/Rules/Components/SurvivorRuleComponent.cs (85%) rename {Content.Server => Content.Shared}/GameTicking/Rules/Components/ThiefRuleComponent.cs (57%) rename {Content.Server => Content.Shared}/GameTicking/Rules/Components/TraitorRuleComponent.cs (95%) rename {Content.Server => Content.Shared}/GameTicking/Rules/Components/XenoborgsRuleComponent.cs (96%) rename {Content.Server => Content.Shared}/GameTicking/Rules/Components/ZombieRuleComponent.cs (86%) rename {Content.Server => Content.Shared}/GameTicking/Rules/DragonRuleSystem.cs (71%) create mode 100644 Content.Shared/GameTicking/Rules/GameRuleSystem.Utility.cs create mode 100644 Content.Shared/GameTicking/Rules/GameRuleSystem.cs create mode 100644 Content.Shared/GameTicking/Rules/NukeopsRuleSystem.cs rename {Content.Server => Content.Shared}/GameTicking/Rules/ParadoxCloneRuleSystem.cs (79%) create mode 100644 Content.Shared/GameTicking/Rules/RevolutionaryRuleSystem.cs rename {Content.Server => Content.Shared}/GameTicking/Rules/SurvivorRuleSystem.cs (76%) rename {Content.Server => Content.Shared}/GameTicking/Rules/ThiefRuleSystem.cs (73%) rename {Content.Server => Content.Shared}/GameTicking/Rules/TraitorRuleSystem.cs (63%) rename {Content.Server => Content.Shared}/GameTicking/Rules/XenoborgsRuleSystem.cs (55%) rename {Content.Server => Content.Shared}/GameTicking/Rules/ZombieRuleSystem.cs (57%) delete mode 100644 Content.Shared/GameTicking/SharedGameTicker.cs rename {Content.Server => Content.Shared}/Maps/GameMapPoolPrototype.cs (90%) rename {Content.Server => Content.Shared}/Objectives/Components/TargetOverrideComponent.cs (90%) create mode 100644 Content.Shared/RoundEnd/RoundEndBehavior.cs rename {Content.Server => Content.Shared}/Shuttles/Components/ArrivalsBlacklistComponent.cs (79%) rename {Content.Server => Content.Shared}/Shuttles/Components/ArrivalsShuttleComponent.cs (89%) rename {Content.Server => Content.Shared}/Shuttles/Components/ArrivalsSourceComponent.cs (51%) rename {Content.Server => Content.Shared}/Shuttles/Components/EmergencyShuttleComponent.cs (72%) rename {Content.Server => Content.Shared}/Shuttles/Components/PendingClockInComponent.cs (51%) create mode 100644 Content.Shared/Shuttles/Components/ShuttleComponent.cs rename {Content.Server => Content.Shared}/Shuttles/Components/StationArrivalsComponent.cs (82%) create mode 100644 Content.Shared/Shuttles/Systems/ArrivalsSystem.cs rename {Content.Server => Content.Shared}/Spawners/Components/ContainerSpawnPointComponent.cs (91%) rename {Content.Server => Content.Shared}/Spawners/Components/ISpawnPoint.cs (62%) rename {Content.Server => Content.Shared}/Spawners/Components/SpawnPointComponent.cs (94%) rename {Content.Server => Content.Shared}/Spawners/EntitySystems/ContainerSpawnPointSystem.cs (88%) rename {Content.Server => Content.Shared}/Spawners/EntitySystems/SpawnPointSystem.cs (89%) rename {Content.Server => Content.Shared}/Station/Components/StationEventEligibleComponent.cs (72%) rename {Content.Server => Content.Shared}/Station/Components/StationJobsComponent.cs (96%) rename {Content.Server => Content.Shared}/Station/Components/StationSpawningComponent.cs (71%) delete mode 100644 Content.Shared/Station/SharedStationSpawningSystem.cs create mode 100644 Content.Shared/Station/Systems/StationJobsSystem.cs rename {Content.Server => Content.Shared}/Station/Systems/StationSpawningSystem.cs (53%) create mode 100644 Content.Shared/Station/Systems/StationSystem.Event.cs rename Content.Shared/Station/{SharedStationSystem.Tracker.cs => Systems/StationSystem.Tracker.cs} (76%) rename Content.Shared/Station/{SharedStationSystem.cs => Systems/StationSystem.cs} (83%) diff --git a/Content.Benchmarks/SpawnEquipDeleteBenchmark.cs b/Content.Benchmarks/SpawnEquipDeleteBenchmark.cs index b6d5427480..e0c89bbc8e 100644 --- a/Content.Benchmarks/SpawnEquipDeleteBenchmark.cs +++ b/Content.Benchmarks/SpawnEquipDeleteBenchmark.cs @@ -3,8 +3,8 @@ using System.Threading.Tasks; using BenchmarkDotNet.Attributes; using Content.IntegrationTests; using Content.IntegrationTests.Pair; -using Content.Server.Station.Systems; using Content.Shared.Roles; +using Content.Shared.Station.Systems; using Robust.Shared; using Robust.Shared.Analyzers; using Robust.Shared.GameObjects; diff --git a/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTab.xaml.cs b/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTab.xaml.cs index 4195fe7a75..79bc3c2be4 100644 --- a/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTab.xaml.cs +++ b/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTab.xaml.cs @@ -1,6 +1,6 @@ using Content.Client.Administration.Managers; -using Content.Client.Station; using Content.Client.UserInterface.Controls; +using Content.Shared.Station.Systems; using Robust.Client.AutoGenerated; using Robust.Client.Console; using Robust.Client.Graphics; @@ -79,7 +79,7 @@ public sealed partial class ObjectsTab : Control // teleport to the station's largest grid, not to the station entity (which is in nullspace) if (!_entityManager.TryGetEntity(nent, out var station)) break; - var largestGrid = _entityManager.EntitySysManager.GetEntitySystem().GetLargestGrid(station.Value); + var largestGrid = _entityManager.System().GetLargestGrid(station.Value); if (largestGrid == null) break; _console.ExecuteCommand($"tpto {largestGrid.Value}"); @@ -107,7 +107,7 @@ public sealed partial class ObjectsTab : Control switch (selection) { case ObjectsTabSelection.Stations: - entities.AddRange(_entityManager.EntitySysManager.GetEntitySystem().GetStationNames()); + entities.AddRange(_entityManager.System().GetStationNames()); break; case ObjectsTabSelection.Grids: { diff --git a/Content.Client/Antag/ClientAntagSelectionSystem.cs b/Content.Client/Antag/ClientAntagSelectionSystem.cs new file mode 100644 index 0000000000..6c52b2a480 --- /dev/null +++ b/Content.Client/Antag/ClientAntagSelectionSystem.cs @@ -0,0 +1,32 @@ +using Content.Shared.Antag; +using Content.Shared.Antag.Components; +using Content.Shared.Roles; +using Robust.Shared.Audio; +using Robust.Shared.Player; +using Robust.Shared.Prototypes; + +namespace Content.Client.Antag; + +/// +public sealed partial class ClientAntagSelectionSystem : AntagSelectionSystem +{ + public override void SendBriefing(ICommonSession? session, string briefing, Color? briefingColor, SoundSpecifier? briefingSound) + { + + } + + public override IEnumerable> GetValidAntagPreferences(ICommonSession session, List>? filter = null) + { + yield break; + } + + public override bool IsAntagBanned(ICommonSession session, AntagSpecifierPrototype definition) + { + return false; + } + + protected override Entity? ForceGetGameRuleEnt(string id) + { + return null; + } +} diff --git a/Content.Client/Audio/ContentAudioSystem.LobbyMusic.cs b/Content.Client/Audio/ContentAudioSystem.LobbyMusic.cs index 26487fe24a..e8d9aab9ce 100644 --- a/Content.Client/Audio/ContentAudioSystem.LobbyMusic.cs +++ b/Content.Client/Audio/ContentAudioSystem.LobbyMusic.cs @@ -1,4 +1,5 @@ using System.Linq; +using Content.Client.GameTicking; using Content.Client.GameTicking.Managers; using Content.Client.Lobby; using Content.Shared.Audio.Events; diff --git a/Content.Client/Communications/UI/CommunicationsConsoleBoundUserInterface.cs b/Content.Client/Communications/UI/CommunicationsConsoleBoundUserInterface.cs index f382de1e79..eb416c3f3c 100644 --- a/Content.Client/Communications/UI/CommunicationsConsoleBoundUserInterface.cs +++ b/Content.Client/Communications/UI/CommunicationsConsoleBoundUserInterface.cs @@ -2,7 +2,7 @@ using Content.Shared.CCVar; using Content.Shared.Chat; using Content.Shared.AlertLevel; using Content.Shared.Communications; -using Content.Shared.Station; +using Content.Shared.Station.Systems; using Robust.Client.UserInterface; using Robust.Shared.Configuration; using Robust.Shared.Prototypes; @@ -18,7 +18,7 @@ namespace Content.Client.Communications.UI; public sealed partial class CommunicationsConsoleBoundUserInterface(EntityUid owner, Enum uiKey) : BoundUserInterface(owner, uiKey) { [Dependency] private IConfigurationManager _cfg = default!; - [Dependency] private SharedStationSystem _station = default!; + [Dependency] private StationSystem _station = default!; [Dependency] private AlertLevelSystem _alertLevel = default!; [ViewVariables] diff --git a/Content.Client/Entry/EntryPoint.cs b/Content.Client/Entry/EntryPoint.cs index 29ff0e85aa..3dea8e661f 100644 --- a/Content.Client/Entry/EntryPoint.cs +++ b/Content.Client/Entry/EntryPoint.cs @@ -128,8 +128,6 @@ namespace Content.Client.Entry _prototypeManager.RegisterIgnore("alertLevels"); _prototypeManager.RegisterIgnore("nukeopsRole"); _prototypeManager.RegisterIgnore("ghostRoleRaffleDecider"); - _prototypeManager.RegisterIgnore("codewordGenerator"); - _prototypeManager.RegisterIgnore("codewordFaction"); _componentFactory.GenerateNetIds(); _adminManager.Initialize(); diff --git a/Content.Client/GameTicking/ClientGameTicker.cs b/Content.Client/GameTicking/ClientGameTicker.cs new file mode 100644 index 0000000000..4109a991f7 --- /dev/null +++ b/Content.Client/GameTicking/ClientGameTicker.cs @@ -0,0 +1,190 @@ +using System.Numerics; +using Content.Client.Administration.Managers; +using Content.Client.Gameplay; +using Content.Client.Lobby; +using Content.Client.RoundEnd; +using Content.Shared.GameTicking; +using Content.Shared.GameTicking.Prototypes; +using Content.Shared.GameWindow; +using Content.Shared.Maps; +using Content.Shared.Roles; +using JetBrains.Annotations; +using Robust.Client.Graphics; +using Robust.Client.State; +using Robust.Client.UserInterface; +using Robust.Shared.Audio; +using Robust.Shared.EntitySerialization; +using Robust.Shared.Map; +using Robust.Shared.Player; +using Robust.Shared.Prototypes; + +namespace Content.Client.GameTicking; + +[UsedImplicitly] +public sealed partial class ClientGameTicker : GameTicker +{ + [Dependency] private IStateManager _stateManager = default!; + [Dependency] private IClientAdminManager _admin = default!; + [Dependency] private IClyde _clyde = default!; + [Dependency] private IUserInterfaceManager _userInterfaceManager = default!; + + private Dictionary, int?>> _jobsAvailable = new(); + private Dictionary _stationNames = new(); + private Dictionary?> _jobWeightsByStation = new(); + + [ViewVariables] public bool AreWeReady { get; private set; } + [ViewVariables] public bool IsGameStarted { get; private set; } + [ViewVariables] public ResolvedSoundSpecifier? RestartSound { get; private set; } + [ViewVariables] public ProtoId? LobbyBackground { get; private set; } + [ViewVariables] public bool DisallowedLateJoin { get; private set; } + [ViewVariables] public string? ServerInfoBlob { get; private set; } + [ViewVariables] public TimeSpan StartTime { get; private set; } + [ViewVariables] public new bool Paused { get; private set; } + + [ViewVariables] public IReadOnlyDictionary, int?>> JobsAvailable => _jobsAvailable; + [ViewVariables] public IReadOnlyDictionary StationNames => _stationNames; + [ViewVariables] public IReadOnlyDictionary?> JobWeightsByStation => _jobWeightsByStation; + + public event Action? InfoBlobUpdated; + public event Action? LobbyStatusUpdated; + public event Action? LobbyLateJoinStatusUpdated; + public event Action, int?>>>? LobbyJobsAvailableUpdated; + + public override void Initialize() + { + base.Initialize(); + + _admin.AdminStatusUpdated += OnAdminUpdated; + OnAdminUpdated(); + } + + public override void Shutdown() + { + _admin.AdminStatusUpdated -= OnAdminUpdated; + base.Shutdown(); + } + + public override IReadOnlyList LoadGameMap(GameMapPrototype proto, + out MapId mapId, + DeserializationOptions? options = null, + string? stationName = null, + Vector2? offset = null, + Angle? rot = null) + { + throw new NotImplementedException(); + } + + public override int ReadyPlayerCount() + { + throw new NotImplementedException(); + } + + public override void PlayerJoinGame(ICommonSession session, bool silent = false) + { + // TODO: Can probably move some logic into here :P + } + + private void OnAdminUpdated() + { + // TODO: We REALLY should not be logging parent changed events for parents the client cannot see :V + // Hide some map/grid related logs from clients. This is to try prevent some easy metagaming by just + // reading the console. E.g., logs like this one could leak the nuke station/grid: + // > Grid NT-Arrivals 1101 (122/n25896) changed parent. Old parent: map 10 (121/n25895). New parent: FTL (123/n26470) +#if !DEBUG + Map.Log.Level = _admin.IsAdmin() ? LogLevel.Info : LogLevel.Warning; +#endif + } + + [SubscribeNetworkEvent] + private void OnAttentionRequest(RequestWindowAttentionEvent ev) + { + _clyde.RequestWindowAttention(); + } + + [SubscribeNetworkEvent] + private void LateJoinStatus(TickerLateJoinStatusEvent message) + { + DisallowedLateJoin = message.Disallowed; + LobbyLateJoinStatusUpdated?.Invoke(); + } + + [SubscribeNetworkEvent] + private void UpdateJobsAvailable(TickerJobsAvailableEvent message) + { + _jobsAvailable.Clear(); + + foreach (var (job, data) in message.JobsAvailableByStation) + { + _jobsAvailable[job] = data; + } + + _stationNames.Clear(); + foreach (var weh in message.StationNames) + { + _stationNames[weh.Key] = weh.Value; + } + + _jobWeightsByStation.Clear(); + foreach (var (station, jobWeights) in message.JobWeightsByStation) + { + _jobWeightsByStation[station] = jobWeights; + } + + LobbyJobsAvailableUpdated?.Invoke(JobsAvailable); + } + + [SubscribeNetworkEvent] + private void JoinLobby(TickerJoinLobbyEvent message) + { + _stateManager.RequestStateChange(); + } + + [SubscribeNetworkEvent] + private void ConnectionStatus(TickerConnectionStatusEvent message) + { + RoundStartTimeSpan = message.RoundStartTimeSpan; + } + + [SubscribeNetworkEvent] + private void LobbyStatus(TickerLobbyStatusEvent message) + { + StartTime = message.StartTime; + RoundStartTimeSpan = message.RoundStartTimeSpan; + IsGameStarted = message.IsRoundStarted; + AreWeReady = message.YouAreReady; + LobbyBackground = message.LobbyBackground; + Paused = message.Paused; + + LobbyStatusUpdated?.Invoke(); + } + + [SubscribeNetworkEvent] + private void LobbyInfo(TickerLobbyInfoEvent message) + { + ServerInfoBlob = message.TextBlob; + + InfoBlobUpdated?.Invoke(); + } + + [SubscribeNetworkEvent] + private void JoinGame(TickerJoinGameEvent message) + { + _stateManager.RequestStateChange(); + } + + [SubscribeNetworkEvent] + private void LobbyCountdown(TickerLobbyCountdownEvent message) + { + StartTime = message.StartTime; + Paused = message.Paused; + } + + [SubscribeNetworkEvent] + private void RoundEnd(RoundEndMessageEvent message) + { + // Force an update in the event of this song being the same as the last. + RestartSound = message.RestartSound; + + _userInterfaceManager.GetUIController().OpenRoundEndSummaryWindow(message); + } +} diff --git a/Content.Client/GameTicking/Managers/ClientGameTicker.cs b/Content.Client/GameTicking/Managers/ClientGameTicker.cs deleted file mode 100644 index 021d3d6ca8..0000000000 --- a/Content.Client/GameTicking/Managers/ClientGameTicker.cs +++ /dev/null @@ -1,168 +0,0 @@ -using Content.Client.Administration.Managers; -using Content.Client.Gameplay; -using Content.Client.Lobby; -using Content.Client.RoundEnd; -using Content.Shared.GameTicking; -using Content.Shared.GameWindow; -using Content.Shared.Roles; -using JetBrains.Annotations; -using Robust.Client.Graphics; -using Robust.Client.State; -using Robust.Client.UserInterface; -using Robust.Shared.Prototypes; -using Robust.Shared.Audio; -using Content.Shared.GameTicking.Prototypes; - -namespace Content.Client.GameTicking.Managers -{ - [UsedImplicitly] - public sealed partial class ClientGameTicker : SharedGameTicker - { - [Dependency] private IStateManager _stateManager = default!; - [Dependency] private IClientAdminManager _admin = default!; - [Dependency] private IClyde _clyde = default!; - [Dependency] private IUserInterfaceManager _userInterfaceManager = default!; - - private Dictionary, int?>> _jobsAvailable = new(); - private Dictionary _stationNames = new(); - private Dictionary?> _jobWeightsByStation = new(); - - [ViewVariables] public bool AreWeReady { get; private set; } - [ViewVariables] public bool IsGameStarted { get; private set; } - [ViewVariables] public ResolvedSoundSpecifier? RestartSound { get; private set; } - [ViewVariables] public ProtoId? LobbyBackground { get; private set; } - [ViewVariables] public bool DisallowedLateJoin { get; private set; } - [ViewVariables] public string? ServerInfoBlob { get; private set; } - [ViewVariables] public TimeSpan StartTime { get; private set; } - [ViewVariables] public new bool Paused { get; private set; } - - public override IReadOnlyList<(TimeSpan, string)> AllPreviousGameRules => new List<(TimeSpan, string)>(); - - [ViewVariables] public IReadOnlyDictionary, int?>> JobsAvailable => _jobsAvailable; - [ViewVariables] public IReadOnlyDictionary StationNames => _stationNames; - [ViewVariables] public IReadOnlyDictionary?> JobWeightsByStation => _jobWeightsByStation; - - public event Action? InfoBlobUpdated; - public event Action? LobbyStatusUpdated; - public event Action? LobbyLateJoinStatusUpdated; - public event Action, int?>>>? LobbyJobsAvailableUpdated; - - public override void Initialize() - { - base.Initialize(); - - SubscribeNetworkEvent(JoinLobby); - SubscribeNetworkEvent(JoinGame); - SubscribeNetworkEvent(ConnectionStatus); - SubscribeNetworkEvent(LobbyStatus); - SubscribeNetworkEvent(LobbyInfo); - SubscribeNetworkEvent(LobbyCountdown); - SubscribeNetworkEvent(RoundEnd); - SubscribeNetworkEvent(OnAttentionRequest); - SubscribeNetworkEvent(LateJoinStatus); - SubscribeNetworkEvent(UpdateJobsAvailable); - - _admin.AdminStatusUpdated += OnAdminUpdated; - OnAdminUpdated(); - } - - public override void Shutdown() - { - _admin.AdminStatusUpdated -= OnAdminUpdated; - base.Shutdown(); - } - - private void OnAdminUpdated() - { - // Hide some map/grid related logs from clients. This is to try prevent some easy metagaming by just - // reading the console. E.g., logs like this one could leak the nuke station/grid: - // > Grid NT-Arrivals 1101 (122/n25896) changed parent. Old parent: map 10 (121/n25895). New parent: FTL (123/n26470) -#if !DEBUG - EntityManager.System().Log.Level = _admin.IsAdmin() ? LogLevel.Info : LogLevel.Warning; -#endif - } - - private void OnAttentionRequest(RequestWindowAttentionEvent ev) - { - _clyde.RequestWindowAttention(); - } - - private void LateJoinStatus(TickerLateJoinStatusEvent message) - { - DisallowedLateJoin = message.Disallowed; - LobbyLateJoinStatusUpdated?.Invoke(); - } - - private void UpdateJobsAvailable(TickerJobsAvailableEvent message) - { - _jobsAvailable.Clear(); - - foreach (var (job, data) in message.JobsAvailableByStation) - { - _jobsAvailable[job] = data; - } - - _stationNames.Clear(); - foreach (var weh in message.StationNames) - { - _stationNames[weh.Key] = weh.Value; - } - - _jobWeightsByStation.Clear(); - foreach (var (station, jobWeights) in message.JobWeightsByStation) - { - _jobWeightsByStation[station] = jobWeights; - } - - LobbyJobsAvailableUpdated?.Invoke(JobsAvailable); - } - - private void JoinLobby(TickerJoinLobbyEvent message) - { - _stateManager.RequestStateChange(); - } - - private void ConnectionStatus(TickerConnectionStatusEvent message) - { - RoundStartTimeSpan = message.RoundStartTimeSpan; - } - - private void LobbyStatus(TickerLobbyStatusEvent message) - { - StartTime = message.StartTime; - RoundStartTimeSpan = message.RoundStartTimeSpan; - IsGameStarted = message.IsRoundStarted; - AreWeReady = message.YouAreReady; - LobbyBackground = message.LobbyBackground; - Paused = message.Paused; - - LobbyStatusUpdated?.Invoke(); - } - - private void LobbyInfo(TickerLobbyInfoEvent message) - { - ServerInfoBlob = message.TextBlob; - - InfoBlobUpdated?.Invoke(); - } - - private void JoinGame(TickerJoinGameEvent message) - { - _stateManager.RequestStateChange(); - } - - private void LobbyCountdown(TickerLobbyCountdownEvent message) - { - StartTime = message.StartTime; - Paused = message.Paused; - } - - private void RoundEnd(RoundEndMessageEvent message) - { - // Force an update in the event of this song being the same as the last. - RestartSound = message.RestartSound; - - _userInterfaceManager.GetUIController().OpenRoundEndSummaryWindow(message); - } - } -} diff --git a/Content.Client/LateJoin/LateJoinGui.cs b/Content.Client/LateJoin/LateJoinGui.cs index bbba870e53..e6485aaec6 100644 --- a/Content.Client/LateJoin/LateJoinGui.cs +++ b/Content.Client/LateJoin/LateJoinGui.cs @@ -1,14 +1,13 @@ using System.Linq; using System.Numerics; using Content.Client.CrewManifest; -using Content.Client.GameTicking.Managers; +using Content.Client.GameTicking; using Content.Client.Lobby; using Content.Client.UserInterface.Controls; using Content.Client.Players.PlayTimeTracking; using Content.Shared.CCVar; using Content.Shared.Preferences; using Content.Shared.Roles; -using Content.Shared.StatusIcon; using Robust.Client.Console; using Robust.Client.GameObjects; using Robust.Client.UserInterface; diff --git a/Content.Client/Light/EntitySystems/SunShadowSystem.cs b/Content.Client/Light/EntitySystems/SunShadowSystem.cs index 873abd5817..1d9297026c 100644 --- a/Content.Client/Light/EntitySystems/SunShadowSystem.cs +++ b/Content.Client/Light/EntitySystems/SunShadowSystem.cs @@ -1,6 +1,6 @@ using System.Diagnostics.Contracts; using System.Numerics; -using Content.Client.GameTicking.Managers; +using Content.Shared.GameTicking; using Content.Shared.Light.Components; using Content.Shared.Light.EntitySystems; using Robust.Shared.Timing; @@ -10,7 +10,7 @@ namespace Content.Client.Light.EntitySystems; public sealed partial class SunShadowSystem : SharedSunShadowSystem { - [Dependency] private ClientGameTicker _ticker = default!; + [Dependency] private GameTicker _ticker = default!; [Dependency] private IGameTiming _timing = default!; [Dependency] private MetaDataSystem _metadata = default!; diff --git a/Content.Client/Light/LightCycleSystem.cs b/Content.Client/Light/LightCycleSystem.cs index 373431e2ef..dfb07e0faa 100644 --- a/Content.Client/Light/LightCycleSystem.cs +++ b/Content.Client/Light/LightCycleSystem.cs @@ -1,5 +1,4 @@ -using Content.Client.GameTicking.Managers; -using Content.Shared; +using Content.Shared.GameTicking; using Content.Shared.Light.Components; using Content.Shared.Light.EntitySystems; using Robust.Shared.Map.Components; @@ -10,7 +9,7 @@ namespace Content.Client.Light; /// public sealed partial class LightCycleSystem : SharedLightCycleSystem { - [Dependency] private ClientGameTicker _ticker = default!; + [Dependency] private GameTicker _ticker = default!; [Dependency] private IGameTiming _timing = default!; [Dependency] private MetaDataSystem _metadata = default!; diff --git a/Content.Client/Lobby/LobbyState.cs b/Content.Client/Lobby/LobbyState.cs index 6e8b00a3b2..b5373e0622 100644 --- a/Content.Client/Lobby/LobbyState.cs +++ b/Content.Client/Lobby/LobbyState.cs @@ -1,5 +1,5 @@ using Content.Client.Audio; -using Content.Client.GameTicking.Managers; +using Content.Client.GameTicking; using Content.Client.LateJoin; using Content.Client.Lobby.UI; using Content.Client.Message; diff --git a/Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs b/Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs index 0f6fe34048..6359069b7b 100644 --- a/Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs +++ b/Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs @@ -265,7 +265,7 @@ namespace Content.Client.Lobby.UI (int)PreferenceUnavailableMode.StayInLobby); PreferenceUnavailableButton.AddItem( Loc.GetString("humanoid-profile-editor-preference-unavailable-spawn-as-overflow-button", - ("overflowJob", Loc.GetString(SharedGameTicker.FallbackOverflowJobName))), + ("overflowJob", Loc.GetString(GameTicker.FallbackOverflowJobName))), (int)PreferenceUnavailableMode.SpawnAsOverflow); PreferenceUnavailableButton.OnItemSelected += args => diff --git a/Content.Client/Lobby/UI/ProfileEditorControls/ProfilePreviewSpriteView.Humanoid.cs b/Content.Client/Lobby/UI/ProfileEditorControls/ProfilePreviewSpriteView.Humanoid.cs index d8190eca4a..427a13a757 100644 --- a/Content.Client/Lobby/UI/ProfileEditorControls/ProfilePreviewSpriteView.Humanoid.cs +++ b/Content.Client/Lobby/UI/ProfileEditorControls/ProfilePreviewSpriteView.Humanoid.cs @@ -1,15 +1,12 @@ using System.Linq; -using Content.Client.Humanoid; -using Content.Client.Station; using Content.Shared.Body; using Content.Shared.Clothing; using Content.Shared.GameTicking; -using Content.Shared.Humanoid; -using Content.Shared.Humanoid.Prototypes; using Content.Shared.Inventory; using Content.Shared.Preferences; using Content.Shared.Preferences.Loadouts; using Content.Shared.Roles; +using Content.Shared.Station.Systems; using Robust.Shared.Map; using Robust.Shared.Prototypes; using Robust.Shared.Utility; @@ -80,7 +77,7 @@ public sealed partial class ProfilePreviewSpriteView { var highPriorityJob = profile.JobPriorities.FirstOrDefault(p => p.Value == JobPriority.High).Key; // ReSharper disable once NullCoalescingConditionIsAlwaysNotNullAccordingToAPIContract (what is resharper smoking?) - return _prototypeManager.Index(highPriorityJob.Id ?? SharedGameTicker.FallbackOverflowJob); + return _prototypeManager.Index(highPriorityJob.Id ?? GameTicker.FallbackOverflowJob); } private void GiveDummyLoadout(RoleLoadout? roleLoadout) diff --git a/Content.Client/PDA/PdaMenu.xaml.cs b/Content.Client/PDA/PdaMenu.xaml.cs index caf5e0528e..c144cca7a2 100644 --- a/Content.Client/PDA/PdaMenu.xaml.cs +++ b/Content.Client/PDA/PdaMenu.xaml.cs @@ -1,9 +1,9 @@ -using Content.Client.GameTicking.Managers; using Content.Shared.PDA; using Robust.Shared.Utility; using Content.Shared.CartridgeLoader; using Content.Client.Message; using Content.Shared.AlertLevel; +using Content.Shared.GameTicking; using Robust.Client.UserInterface; using Robust.Client.AutoGenerated; using Robust.Client.Graphics; @@ -20,7 +20,7 @@ namespace Content.Client.PDA [Dependency] private IGameTiming _gameTiming = default!; [Dependency] private IEntitySystemManager _entitySystem = default!; private readonly AlertLevelSystem _alert = default!; - private readonly ClientGameTicker _gameTicker; + private readonly GameTicker _gameTicker; public const int HomeView = 0; public const int ProgramListView = 1; @@ -45,7 +45,7 @@ namespace Content.Client.PDA { IoCManager.InjectDependencies(this); _alert = _entitySystem.GetEntitySystem(); - _gameTicker = _entitySystem.GetEntitySystem(); + _gameTicker = _entitySystem.GetEntitySystem(); RobustXamlLoader.Load(this); ViewContainer.OnChildAdded += control => control.Visible = false; diff --git a/Content.Client/RoundEnd/RoundEndSummaryUIController.cs b/Content.Client/RoundEnd/RoundEndSummaryUIController.cs index 0e8f5c5017..3ef81afaf5 100644 --- a/Content.Client/RoundEnd/RoundEndSummaryUIController.cs +++ b/Content.Client/RoundEnd/RoundEndSummaryUIController.cs @@ -1,4 +1,4 @@ -using Content.Client.GameTicking.Managers; +using Content.Client.GameTicking; using Content.Shared.GameTicking; using Content.Shared.Input; using JetBrains.Annotations; diff --git a/Content.Client/Shuttles/ClientArrivalsSystem.cs b/Content.Client/Shuttles/ClientArrivalsSystem.cs new file mode 100644 index 0000000000..28a2ce1825 --- /dev/null +++ b/Content.Client/Shuttles/ClientArrivalsSystem.cs @@ -0,0 +1,6 @@ +using Content.Shared.Shuttles.Systems; + +namespace Content.Client.Shuttles; + +/// +public sealed partial class ClientArrivalsSystem : ArrivalsSystem; diff --git a/Content.Client/Station/ClientStationSystem.cs b/Content.Client/Station/ClientStationSystem.cs new file mode 100644 index 0000000000..d1b0b3bbc0 --- /dev/null +++ b/Content.Client/Station/ClientStationSystem.cs @@ -0,0 +1,6 @@ +using Content.Shared.Station.Systems; + +namespace Content.Client.Station; + +/// +public sealed partial class ClientStationSystem : StationSystem; diff --git a/Content.Client/Station/StationSpawningSystem.cs b/Content.Client/Station/StationSpawningSystem.cs deleted file mode 100644 index 42dc677895..0000000000 --- a/Content.Client/Station/StationSpawningSystem.cs +++ /dev/null @@ -1,5 +0,0 @@ -using Content.Shared.Station; - -namespace Content.Client.Station; - -public sealed partial class StationSpawningSystem : SharedStationSpawningSystem; diff --git a/Content.Client/Station/StationSystem.cs b/Content.Client/Station/StationSystem.cs deleted file mode 100644 index e1ccd14d7b..0000000000 --- a/Content.Client/Station/StationSystem.cs +++ /dev/null @@ -1,6 +0,0 @@ -using Content.Shared.Station; - -namespace Content.Client.Station; - -/// -public sealed partial class StationSystem : SharedStationSystem; diff --git a/Content.Client/StationRecords/GeneralStationRecordConsoleBoundUserInterface.cs b/Content.Client/StationRecords/GeneralStationRecordConsoleBoundUserInterface.cs index c77735060b..e20caf59aa 100644 --- a/Content.Client/StationRecords/GeneralStationRecordConsoleBoundUserInterface.cs +++ b/Content.Client/StationRecords/GeneralStationRecordConsoleBoundUserInterface.cs @@ -1,4 +1,4 @@ -using Content.Shared.Station; +using Content.Shared.Station.Systems; using Content.Shared.StationRecords; using Content.Shared.StationRecords.Components; using Content.Shared.StationRecords.Systems; @@ -11,7 +11,7 @@ public sealed partial class GeneralStationRecordConsoleBoundUserInterface : Boun [ViewVariables] private GeneralStationRecordConsoleWindow? _window; - [Dependency] private SharedStationSystem _stationSys = default!; + [Dependency] private StationSystem _stationSys = default!; [Dependency] private StationRecordsSystem _recordsSys = default!; public GeneralStationRecordConsoleBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey) diff --git a/Content.Client/Store/Ui/StoreListingControl.xaml.cs b/Content.Client/Store/Ui/StoreListingControl.xaml.cs index 341dc78ec9..8951c0b9e9 100644 --- a/Content.Client/Store/Ui/StoreListingControl.xaml.cs +++ b/Content.Client/Store/Ui/StoreListingControl.xaml.cs @@ -1,4 +1,4 @@ -using Content.Client.GameTicking.Managers; +using Content.Shared.GameTicking; using Content.Shared.Store; using Robust.Client.AutoGenerated; using Robust.Client.Graphics; @@ -15,7 +15,7 @@ public sealed partial class StoreListingControl : Control [Dependency] private IPrototypeManager _prototype = default!; [Dependency] private IEntityManager _entity = default!; [Dependency] private IGameTiming _timing = default!; - private readonly ClientGameTicker _ticker; + private readonly GameTicker _ticker; private readonly ListingDataWithCostModifiers _data; @@ -27,7 +27,7 @@ public sealed partial class StoreListingControl : Control IoCManager.InjectDependencies(this); RobustXamlLoader.Load(this); - _ticker = _entity.System(); + _ticker = _entity.System(); _data = data; _hasBalance = hasBalance; diff --git a/Content.IntegrationTests/Pair/TestPair.Recycle.cs b/Content.IntegrationTests/Pair/TestPair.Recycle.cs index 887361a872..8e67627cdb 100644 --- a/Content.IntegrationTests/Pair/TestPair.Recycle.cs +++ b/Content.IntegrationTests/Pair/TestPair.Recycle.cs @@ -35,7 +35,7 @@ public sealed partial class TestPair protected override async Task Recycle(PairSettings next, TextWriter testOut) { // Move to pre-round lobby. Required to toggle dummy ticker on and off - var gameTicker = Server.System(); + var gameTicker = Server.System(); if (gameTicker.RunLevel != GameRunLevel.PreRoundLobby) { await testOut.WriteLineAsync($"Recycling: {Watch.Elapsed.TotalMilliseconds} ms: Restarting round."); @@ -68,7 +68,7 @@ public sealed partial class TestPair Assert.That(cfg.GetCVar(CCVars.GameLobbyEnabled), Is.EqualTo(settings.InLobby)); Assert.That(cfg.GetCVar(CCVars.GameDummyTicker), Is.EqualTo(settings.DummyTicker)); - var ticker = Server.System(); + var ticker = Server.System(); Assert.That(ticker.DummyTicker, Is.EqualTo(settings.DummyTicker)); var expectPreRound = settings.InLobby | settings.DummyTicker; diff --git a/Content.IntegrationTests/Pair/TestPair.cs b/Content.IntegrationTests/Pair/TestPair.cs index 81f99146f7..bcf95b33da 100644 --- a/Content.IntegrationTests/Pair/TestPair.cs +++ b/Content.IntegrationTests/Pair/TestPair.cs @@ -40,7 +40,7 @@ public sealed partial class TestPair : RobustIntegrationTest.TestPair var settings = (PoolSettings)Settings; if (!settings.DummyTicker) { - var gameTicker = Server.System(); + var gameTicker = Server.System(); await Server.WaitPost(() => gameTicker.RestartRound()); } } diff --git a/Content.IntegrationTests/Tests/Administration/Logs/AddTests.cs b/Content.IntegrationTests/Tests/Administration/Logs/AddTests.cs index d53b07b552..3e86667c12 100644 --- a/Content.IntegrationTests/Tests/Administration/Logs/AddTests.cs +++ b/Content.IntegrationTests/Tests/Administration/Logs/AddTests.cs @@ -25,7 +25,7 @@ public sealed class AddTests : GameTest [SidedDependency(Side.Server)] private readonly IAdminLogManager _sAdminLogManager = null!; [SidedDependency(Side.Server)] private readonly IServerDbManager _sDbManager = null!; - [SidedDependency(Side.Server)] private readonly GameTicker _sGameTicker = null!; + [SidedDependency(Side.Server)] private readonly ServerGameTicker _sGameTicker = null!; [SidedDependency(Side.Server)] private readonly IPlayerManager _sPlayerManager = null!; [Test] @@ -238,7 +238,7 @@ public sealed class PreRoundAddTests : GameTest [SidedDependency(Side.Server)] private readonly IAdminLogManager _sAdminLogManager = null!; [SidedDependency(Side.Server)] private readonly IServerDbManager _sDbManager = null!; - [SidedDependency(Side.Server)] private readonly GameTicker _sGameTicker = null!; + [SidedDependency(Side.Server)] private readonly ServerGameTicker _sGameTicker = null!; [Test] public async Task PreRoundAddAndGetSingle() diff --git a/Content.IntegrationTests/Tests/Administration/Logs/QueryTests.cs b/Content.IntegrationTests/Tests/Administration/Logs/QueryTests.cs index 55b36ebae1..20db63e47a 100644 --- a/Content.IntegrationTests/Tests/Administration/Logs/QueryTests.cs +++ b/Content.IntegrationTests/Tests/Administration/Logs/QueryTests.cs @@ -31,7 +31,7 @@ public sealed class QueryTests : GameTest var sPlayers = server.ResolveDependency(); var sAdminLogSystem = server.ResolveDependency(); - var sGamerTicker = sSystems.GetEntitySystem(); + var sGamerTicker = sSystems.GetEntitySystem(); var date = DateTime.UtcNow; var guid = Guid.NewGuid(); diff --git a/Content.IntegrationTests/Tests/Commands/RestartRoundTest.cs b/Content.IntegrationTests/Tests/Commands/RestartRoundTest.cs index bcacc8011b..da8d4adc7b 100644 --- a/Content.IntegrationTests/Tests/Commands/RestartRoundTest.cs +++ b/Content.IntegrationTests/Tests/Commands/RestartRoundTest.cs @@ -2,6 +2,7 @@ using Content.IntegrationTests.Fixtures; using Content.Server.GameTicking; using Content.Server.GameTicking.Commands; using Content.Shared.CCVar; +using Content.Shared.GameTicking; using Robust.Shared.Configuration; using Robust.Shared.GameObjects; using Robust.Shared.IoC; @@ -29,7 +30,7 @@ namespace Content.IntegrationTests.Tests.Commands var configManager = server.ResolveDependency(); var entityManager = server.ResolveDependency(); - var gameTicker = entityManager.System(); + var gameTicker = entityManager.System(); await pair.RunUntilSynced(); diff --git a/Content.IntegrationTests/Tests/EntityTest.cs b/Content.IntegrationTests/Tests/EntityTest.cs index 35298ce44e..387ad558aa 100644 --- a/Content.IntegrationTests/Tests/EntityTest.cs +++ b/Content.IntegrationTests/Tests/EntityTest.cs @@ -21,7 +21,7 @@ namespace Content.IntegrationTests.Tests [TestOf(typeof(EntityUid))] public sealed class EntityTest : GameTest { - private static readonly HashSet> IgnoredCategories = ["Spawner", "Debug"]; + private static readonly HashSet> IgnoredCategories = ["Spawner", "Debug", "GameRules"]; public override PoolSettings PoolSettings => new() { @@ -413,6 +413,7 @@ namespace Content.IntegrationTests.Tests "Broadphase", "StationData", // errors when removed mid-round "StationJobs", + "ActiveGameRule", // Requires GameRule :P "Actor", // We aren't testing actor components, those need their player session set. "BiomeSelection", // Whaddya know, requires config. "ActivatableUI", // Requires enum key diff --git a/Content.IntegrationTests/Tests/FollowerSystemTest.cs b/Content.IntegrationTests/Tests/FollowerSystemTest.cs index 56153aa8c2..225a47340b 100644 --- a/Content.IntegrationTests/Tests/FollowerSystemTest.cs +++ b/Content.IntegrationTests/Tests/FollowerSystemTest.cs @@ -33,11 +33,11 @@ public sealed class FollowerSystemTest : GameTest mapSys.CreateMap(out var map); // Spawn an observer to be followed. - var followed = entMan.SpawnEntity(GameTicker.ObserverPrototypeName, new MapCoordinates(0, 0, map)); + var followed = entMan.SpawnEntity(ServerGameTicker.ObserverPrototypeName, new MapCoordinates(0, 0, map)); logger.Info($"Spawned followed observer: {entMan.ToPrettyString(followed)}"); // Spawn an observer to follow another observer. - var follower = entMan.SpawnEntity(GameTicker.ObserverPrototypeName, new MapCoordinates(0, 0, map)); + var follower = entMan.SpawnEntity(ServerGameTicker.ObserverPrototypeName, new MapCoordinates(0, 0, map)); logger.Info($"Spawned follower observer: {entMan.ToPrettyString(follower)}"); followerSystem.StartFollowingEntity(follower, followed); diff --git a/Content.IntegrationTests/Tests/GameRules/AllGamePresetsStartTest.cs b/Content.IntegrationTests/Tests/GameRules/AllGamePresetsStartTest.cs index 5ffa82bb70..f7669dcfa6 100644 --- a/Content.IntegrationTests/Tests/GameRules/AllGamePresetsStartTest.cs +++ b/Content.IntegrationTests/Tests/GameRules/AllGamePresetsStartTest.cs @@ -2,14 +2,13 @@ using System.Linq; using Content.IntegrationTests.Fixtures.Attributes; using Content.IntegrationTests.Utility; -using Content.Server.Antag; -using Content.Server.Antag.Components; using Content.Server.GameTicking; -using Content.Server.GameTicking.Presets; using Content.Server.Shuttles.Components; using Content.Shared.Antag; +using Content.Shared.Antag.Components; using Content.Shared.CCVar; using Content.Shared.GameTicking; +using Content.Shared.GameTicking.Prototypes; using Robust.Shared.Map.Components; using Robust.Shared.Player; @@ -28,7 +27,7 @@ public sealed class AllGamePresetsStartTest : AntagTest // Tests that all game modes can start given ideal circumstances. [Test] - [TestOf(typeof(GameTicker)), TestOf(typeof(AntagSelectionSystem)), TestOf(typeof(AntagSelectionComponent))] + [TestOf(typeof(ServerGameTicker)), TestOf(typeof(AntagSelectionSystem)), TestOf(typeof(AntagSelectionComponent))] [TestCaseSource(nameof(_gamePresets))] [Description("Ensures all Game Presets are able to start and assign all antags correctly without spawning anyone in nullspace.")] [EnsureCVar(Side.Server, typeof(CCVars), nameof(CCVars.GameTickerIgnoredPresets), GameTicker.DummyGameRule)] diff --git a/Content.IntegrationTests/Tests/GameRules/AntagGhostRoleTest.cs b/Content.IntegrationTests/Tests/GameRules/AntagGhostRoleTest.cs index c9a3ec0782..f507b539a5 100644 --- a/Content.IntegrationTests/Tests/GameRules/AntagGhostRoleTest.cs +++ b/Content.IntegrationTests/Tests/GameRules/AntagGhostRoleTest.cs @@ -2,12 +2,11 @@ using System.Collections.Generic; using Content.IntegrationTests.Fixtures.Attributes; using Content.IntegrationTests.Utility; -using Content.Server.Antag; -using Content.Server.Antag.Components; using Content.Server.GameTicking; using Content.Server.Ghost.Roles; using Content.Server.Ghost.Roles.Components; using Content.Shared.Antag; +using Content.Shared.Antag.Components; using Content.Shared.Players; using Robust.Shared.GameObjects; using Robust.Shared.Map; @@ -33,7 +32,7 @@ public sealed partial class AntagGhostRoleTest : AntagTest private static readonly string[] AntagGameRules = GameDataScrounger.EntitiesWithComponent("AntagSelection"); [Test] - [TestOf(typeof(GameTicker)), TestOf(typeof(AntagSelectionSystem)), TestOf(typeof(AntagSelectionComponent)), TestOf(typeof(GhostRoleSystem))] + [TestOf(typeof(ServerGameTicker)), TestOf(typeof(AntagSelectionSystem)), TestOf(typeof(AntagSelectionComponent)), TestOf(typeof(GhostRoleSystem))] [TestCaseSource(nameof(AntagGameRules))] [Description($"Ensures all GameRule entities with {nameof(AntagSelectionComponent)} can properly spawn those roles and they can be taken.")] [RunOnSide(Side.Server)] @@ -64,7 +63,7 @@ public sealed partial class AntagGhostRoleTest : AntagTest while (roleEnumerator.MoveNext(out var spawner, out var role, out var xform)) { // Ensure the ghost role spawner spawned correctly! - Assert.That(spawner.Rule, Is.EqualTo(gameRule)); + Assert.That(spawner.Rule, Is.EqualTo(gameRule?.Owner)); Assert.That(spawner.Definition, Is.Not.Null); AssertGhostRoleTaken(spawner, role, xform); var value = rules[spawner.Definition.Value]; @@ -80,7 +79,7 @@ public sealed partial class AntagGhostRoleTest : AntagTest } [Test] - [TestOf(typeof(GameTicker)), TestOf(typeof(AntagSelectionSystem)), TestOf(typeof(AntagSelectionComponent)), TestOf(typeof(GhostRoleSystem))] + [TestOf(typeof(ServerGameTicker)), TestOf(typeof(AntagSelectionSystem)), TestOf(typeof(AntagSelectionComponent)), TestOf(typeof(GhostRoleSystem))] [Description("Ensures a player can take all antag ghost roles sequentially without transferring unwanted mind data.")] [RunOnSide(Side.Server)] public void TestAntagGhostRolesSequential() diff --git a/Content.IntegrationTests/Tests/GameRules/AntagTest.cs b/Content.IntegrationTests/Tests/GameRules/AntagTest.cs index 9f89a9fbac..f6d7a9a23b 100644 --- a/Content.IntegrationTests/Tests/GameRules/AntagTest.cs +++ b/Content.IntegrationTests/Tests/GameRules/AntagTest.cs @@ -1,7 +1,5 @@ -using System.Linq; -using Content.IntegrationTests.Fixtures; +using Content.IntegrationTests.Fixtures; using Content.IntegrationTests.Fixtures.Attributes; -using Content.Server.Antag; using Content.Server.GameTicking; using Content.Server.Mind; using Content.Shared.Antag; @@ -25,7 +23,7 @@ public abstract partial class AntagTest : GameTest }; [SidedDependency(Side.Server)] protected AntagSelectionSystem AntagSys = default!; - [SidedDependency(Side.Server)] protected GameTicker STicker = default!; + [SidedDependency(Side.Server)] protected ServerGameTicker STicker = default!; [SidedDependency(Side.Server)] protected MindSystem SMind = default!; /// diff --git a/Content.IntegrationTests/Tests/GameRules/FailAndStartPresetTest.cs b/Content.IntegrationTests/Tests/GameRules/FailAndStartPresetTest.cs index 13286c68a0..ad2d314edf 100644 --- a/Content.IntegrationTests/Tests/GameRules/FailAndStartPresetTest.cs +++ b/Content.IntegrationTests/Tests/GameRules/FailAndStartPresetTest.cs @@ -1,10 +1,10 @@ #nullable enable using Content.IntegrationTests.Fixtures; using Content.Server.GameTicking; -using Content.Server.GameTicking.Presets; using Content.Shared.CCVar; using Content.Shared.GameTicking; using Content.Shared.GameTicking.Components; +using Content.Shared.GameTicking.Prototypes; using Robust.Shared.GameObjects; namespace Content.IntegrationTests.Tests.GameRules; @@ -72,7 +72,7 @@ public sealed class FailAndStartPresetTest : GameTest var server = pair.Server; var client = pair.Client; var entMan = server.EntMan; - var ticker = server.System(); + var ticker = server.System(); server.System().Run = true; Assert.That(server.CfgMan.GetCVar(CCVars.GridFill), Is.False); diff --git a/Content.IntegrationTests/Tests/GameRules/NukeOpsTest.cs b/Content.IntegrationTests/Tests/GameRules/NukeOpsTest.cs index f9074f7dc6..5202f4f786 100644 --- a/Content.IntegrationTests/Tests/GameRules/NukeOpsTest.cs +++ b/Content.IntegrationTests/Tests/GameRules/NukeOpsTest.cs @@ -4,17 +4,17 @@ using System.Linq; using Content.IntegrationTests.Fixtures; using Content.Server.Body.Components; using Content.Server.GameTicking; -using Content.Server.GameTicking.Presets; using Content.Server.GameTicking.Rules.Components; using Content.Server.Mind; using Content.Server.Roles; using Content.Server.RoundEnd; using Content.Server.Shuttles.Components; using Content.Shared.CCVar; -using Content.Shared.Damage.Components; using Content.Shared.Damage.Systems; using Content.Shared.FixedPoint; using Content.Shared.GameTicking; +using Content.Shared.GameTicking.Prototypes; +using Content.Shared.GameTicking.Rules.Components; using Content.Shared.Hands.Components; using Content.Shared.Inventory; using Content.Shared.NPC.Prototypes; @@ -57,7 +57,7 @@ public sealed class NukeOpsTest : GameTest var client = pair.Client; var entMan = server.EntMan; var mapSys = server.System(); - var ticker = server.System(); + var ticker = server.System(); var mindSys = server.System(); var roleSys = server.System(); var invSys = server.System(); diff --git a/Content.IntegrationTests/Tests/GameRules/RuleMaxTimeRestartTest.cs b/Content.IntegrationTests/Tests/GameRules/RuleMaxTimeRestartTest.cs index 1a8fc6f6ee..638358c2a3 100644 --- a/Content.IntegrationTests/Tests/GameRules/RuleMaxTimeRestartTest.cs +++ b/Content.IntegrationTests/Tests/GameRules/RuleMaxTimeRestartTest.cs @@ -2,6 +2,7 @@ using Content.IntegrationTests.Fixtures; using Content.Server.GameTicking; using Content.Server.GameTicking.Rules; using Content.Server.GameTicking.Rules.Components; +using Content.Shared.GameTicking; using Content.Shared.GameTicking.Components; using Robust.Shared.GameObjects; using Robust.Shared.Prototypes; @@ -27,14 +28,14 @@ namespace Content.IntegrationTests.Tests.GameRules Assert.That(server.EntMan.Count(), Is.Zero); var entityManager = server.ResolveDependency(); - var sGameTicker = server.ResolveDependency().GetEntitySystem(); + var sGameTicker = server.ResolveDependency().GetEntitySystem(); var sGameTiming = server.ResolveDependency(); MaxTimeRestartRuleComponent maxTime = null; await server.WaitPost(() => { sGameTicker.StartGameRule(MaxTimeRestartGameRule, out var ruleEntity); - Assert.That(entityManager.TryGetComponent(ruleEntity, out maxTime)); + Assert.That(entityManager.TryGetComponent(ruleEntity, out maxTime)); }); Assert.That(server.EntMan.Count(), Is.EqualTo(1)); diff --git a/Content.IntegrationTests/Tests/GameRules/SecretStartsTest.cs b/Content.IntegrationTests/Tests/GameRules/SecretStartsTest.cs index efc5485e9b..444660f737 100644 --- a/Content.IntegrationTests/Tests/GameRules/SecretStartsTest.cs +++ b/Content.IntegrationTests/Tests/GameRules/SecretStartsTest.cs @@ -23,8 +23,7 @@ public sealed class SecretStartsTest : GameTest var server = pair.Server; await server.WaitIdleAsync(); - var entMan = server.ResolveDependency(); - var gameTicker = server.ResolveDependency().GetEntitySystem(); + var gameTicker = server.System(); await server.WaitAssertion(() => { diff --git a/Content.IntegrationTests/Tests/GameRules/StartEndGameRulesTest.cs b/Content.IntegrationTests/Tests/GameRules/StartEndGameRulesTest.cs index aef2fcf7cd..029704580e 100644 --- a/Content.IntegrationTests/Tests/GameRules/StartEndGameRulesTest.cs +++ b/Content.IntegrationTests/Tests/GameRules/StartEndGameRulesTest.cs @@ -26,7 +26,7 @@ public sealed class StartEndGameRulesTest : GameTest var pair = Pair; var server = pair.Server; await server.WaitIdleAsync(); - var gameTicker = server.ResolveDependency().GetEntitySystem(); + var gameTicker = server.System(); var cfg = server.ResolveDependency(); Assert.That(cfg.GetCVar(CCVars.GridFill), Is.False); diff --git a/Content.IntegrationTests/Tests/GameRules/TraitorRuleTest.cs b/Content.IntegrationTests/Tests/GameRules/TraitorRuleTest.cs index c76b349b64..84607cfcc0 100644 --- a/Content.IntegrationTests/Tests/GameRules/TraitorRuleTest.cs +++ b/Content.IntegrationTests/Tests/GameRules/TraitorRuleTest.cs @@ -8,6 +8,7 @@ using Content.Server.Mind; using Content.Server.Roles; using Content.Shared.GameTicking; using Content.Shared.GameTicking.Components; +using Content.Shared.GameTicking.Rules.Components; using Content.Shared.Mind; using Content.Shared.NPC.Prototypes; using Content.Shared.NPC.Systems; @@ -42,11 +43,10 @@ public sealed class TraitorRuleTest : GameTest var entMan = server.EntMan; var protoMan = server.ProtoMan; var compFact = server.ResolveDependency(); - var ticker = server.System(); + var ticker = server.System(); var mindSys = server.System(); var roleSys = server.System(); var factionSys = server.System(); - var traitorRuleSys = server.System(); // Look up the minimum player count and max total objective difficulty for the game rule var minPlayers = 1; @@ -96,7 +96,7 @@ public sealed class TraitorRuleTest : GameTest // Start the round ticker.StartRound(); // Force traitor mode to start (skip the delay) - ticker.StartGameRule(gameRuleEnt); + ticker.StartGameRule(gameRuleEnt!.Value); }); await pair.RunTicksSync(10); diff --git a/Content.IntegrationTests/Tests/GameTestTests/DependencyTests.cs b/Content.IntegrationTests/Tests/GameTestTests/DependencyTests.cs index 5ce2b486fd..a2cd082239 100644 --- a/Content.IntegrationTests/Tests/GameTestTests/DependencyTests.cs +++ b/Content.IntegrationTests/Tests/GameTestTests/DependencyTests.cs @@ -1,9 +1,8 @@ #nullable enable using System.Collections.Generic; -using Content.Client.GameTicking.Managers; +using Content.Client.GameTicking; using Content.IntegrationTests.Fixtures; using Content.IntegrationTests.Fixtures.Attributes; -using Content.IntegrationTests.NUnit.Constraints; using Content.Server.GameTicking; using Content.Shared.GameTicking; using Robust.Shared.GameObjects; @@ -14,8 +13,8 @@ namespace Content.IntegrationTests.Tests.GameTestTests; [TestOf(typeof(SidedDependencyAttribute))] public sealed class DependencyTests : GameTest { - [SidedDependency(Side.Server)] private readonly SharedGameTicker _sGameTicker = null!; - [SidedDependency(Side.Client)] private readonly SharedGameTicker _cGameTicker = null!; + [SidedDependency(Side.Server)] private readonly GameTicker _sGameTicker = null!; + [SidedDependency(Side.Client)] private readonly GameTicker _cGameTicker = null!; [SidedDependency(Side.Server)] private readonly EntityQuery _sXformQuery = default!; [Test] @@ -38,7 +37,7 @@ public sealed class DependencyTests : GameTest { Assert.That(!ReferenceEquals(_sGameTicker, _cGameTicker), "Server and client gametickers should be distinct"); - Assert.That(_sGameTicker, Is.TypeOf()); + Assert.That(_sGameTicker, Is.TypeOf()); Assert.That(_cGameTicker, Is.TypeOf()); } } diff --git a/Content.IntegrationTests/Tests/Internals/AutoInternalsTests.cs b/Content.IntegrationTests/Tests/Internals/AutoInternalsTests.cs index d2f67e9830..5ab785b05c 100644 --- a/Content.IntegrationTests/Tests/Internals/AutoInternalsTests.cs +++ b/Content.IntegrationTests/Tests/Internals/AutoInternalsTests.cs @@ -1,8 +1,8 @@ using Content.IntegrationTests.Fixtures; using Content.Server.Atmos.EntitySystems; using Content.Server.Body.Systems; -using Content.Server.Station.Systems; using Content.Shared.Preferences; +using Content.Shared.Station.Systems; namespace Content.IntegrationTests.Tests.Internals; diff --git a/Content.IntegrationTests/Tests/Minds/MindTests.EntityDeletion.cs b/Content.IntegrationTests/Tests/Minds/MindTests.EntityDeletion.cs index ce2cd643b2..e7b8037a0b 100644 --- a/Content.IntegrationTests/Tests/Minds/MindTests.EntityDeletion.cs +++ b/Content.IntegrationTests/Tests/Minds/MindTests.EntityDeletion.cs @@ -174,7 +174,7 @@ public sealed partial class MindTests EntityUid ghost = default!; await server.WaitAssertion(() => { - ghost = entMan.SpawnEntity(GameTicker.ObserverPrototypeName, MapCoordinates.Nullspace); + ghost = entMan.SpawnEntity(ServerGameTicker.ObserverPrototypeName, MapCoordinates.Nullspace); mindSystem.Visit(mind.Id, ghost); }); @@ -223,7 +223,7 @@ public sealed partial class MindTests var ghost = await BecomeGhost(pair); // Player is a normal ghost (not admin ghost). - Assert.That(entMan.GetComponent(player.AttachedEntity!.Value).EntityPrototype?.ID, Is.Not.EqualTo(GameTicker.AdminObserverPrototypeName)); + Assert.That(entMan.GetComponent(player.AttachedEntity!.Value).EntityPrototype?.ID, Is.Not.EqualTo(ServerGameTicker.AdminObserverPrototypeName)); // Try to become an admin ghost await server.WaitAssertion(() => serverConsole.ExecuteCommand(player, "aghost")); @@ -234,7 +234,7 @@ public sealed partial class MindTests { Assert.That(player.AttachedEntity, Is.Not.EqualTo(ghost), "Player is still attached to the old ghost"); Assert.That(entMan.HasComponent(player.AttachedEntity), "Player did not become a new ghost"); - Assert.That(entMan.GetComponent(player.AttachedEntity!.Value).EntityPrototype?.ID, Is.EqualTo(GameTicker.AdminObserverPrototypeName)); + Assert.That(entMan.GetComponent(player.AttachedEntity!.Value).EntityPrototype?.ID, Is.EqualTo(ServerGameTicker.AdminObserverPrototypeName)); }); var mindId = player.ContentData()?.Mind; diff --git a/Content.IntegrationTests/Tests/Minds/MindTests.Helpers.cs b/Content.IntegrationTests/Tests/Minds/MindTests.Helpers.cs index b3831a0cb1..5735987380 100644 --- a/Content.IntegrationTests/Tests/Minds/MindTests.Helpers.cs +++ b/Content.IntegrationTests/Tests/Minds/MindTests.Helpers.cs @@ -80,7 +80,7 @@ public sealed partial class MindTests await pair.Server.WaitAssertion(() => { var oldUid = player.AttachedEntity; - ghostUid = entMan.SpawnEntity(GameTicker.ObserverPrototypeName, MapCoordinates.Nullspace); + ghostUid = entMan.SpawnEntity(ServerGameTicker.ObserverPrototypeName, MapCoordinates.Nullspace); mindId = mindSys.GetMind(player.UserId)!.Value; Assert.That(mindId, Is.Not.EqualTo(default(EntityUid))); mind = entMan.GetComponent(mindId); diff --git a/Content.IntegrationTests/Tests/PostMapInitTest.cs b/Content.IntegrationTests/Tests/PostMapInitTest.cs index 2470568dc3..262a01709b 100644 --- a/Content.IntegrationTests/Tests/PostMapInitTest.cs +++ b/Content.IntegrationTests/Tests/PostMapInitTest.cs @@ -10,11 +10,11 @@ using Content.Server.Administration.Systems; using Content.Server.GameTicking; using Content.Server.Shuttles.Components; using Content.Server.Shuttles.Systems; -using Content.Server.Spawners.Components; -using Content.Server.Station.Components; using Content.Shared.CCVar; using Content.Shared.Maps; using Content.Shared.Roles; +using Content.Shared.Shuttles.Components; +using Content.Shared.Spawners.Components; using Content.Shared.Station.Components; using Robust.Shared.Configuration; using Robust.Shared.ContentPack; @@ -333,7 +333,7 @@ namespace Content.IntegrationTests.Tests var mapLoader = entManager.System(); var mapSystem = entManager.System(); var protoManager = server.ResolveDependency(); - var ticker = entManager.EntitySysManager.GetEntitySystem(); + var ticker = entManager.EntitySysManager.GetEntitySystem(); var shuttleSystem = entManager.EntitySysManager.GetEntitySystem(); var cfg = server.ResolveDependency(); diff --git a/Content.IntegrationTests/Tests/Power/StationPowerTests.cs b/Content.IntegrationTests/Tests/Power/StationPowerTests.cs index 236ebea2ff..ba27e106b4 100644 --- a/Content.IntegrationTests/Tests/Power/StationPowerTests.cs +++ b/Content.IntegrationTests/Tests/Power/StationPowerTests.cs @@ -50,7 +50,7 @@ public sealed class StationPowerTests : GameTest var entMan = server.EntMan; var protoMan = server.ProtoMan; - var ticker = entMan.System(); + var ticker = entMan.System(); var batterySys = entMan.System(); // Load the map @@ -108,7 +108,7 @@ public sealed class StationPowerTests : GameTest var entMan = server.EntMan; var protoMan = server.ProtoMan; - var ticker = entMan.System(); + var ticker = entMan.System(); var xform = entMan.System(); // Load the map diff --git a/Content.IntegrationTests/Tests/Preferences/LoadoutTests.cs b/Content.IntegrationTests/Tests/Preferences/LoadoutTests.cs index 62c9f1a460..7babf8f7f4 100644 --- a/Content.IntegrationTests/Tests/Preferences/LoadoutTests.cs +++ b/Content.IntegrationTests/Tests/Preferences/LoadoutTests.cs @@ -4,6 +4,7 @@ using Content.Server.Station.Systems; using Content.Shared.Inventory; using Content.Shared.Preferences; using Content.Shared.Preferences.Loadouts; +using Content.Shared.Station.Systems; using Robust.Shared.GameObjects; using Robust.Shared.Prototypes; diff --git a/Content.IntegrationTests/Tests/Replays/ReplayTests.cs b/Content.IntegrationTests/Tests/Replays/ReplayTests.cs index 4bd5f62e78..774c93f070 100644 --- a/Content.IntegrationTests/Tests/Replays/ReplayTests.cs +++ b/Content.IntegrationTests/Tests/Replays/ReplayTests.cs @@ -38,7 +38,7 @@ public sealed class ReplayTests : GameTest server.CfgMan.SetCVar(CCVars.ReplayAutoRecordName, $"c/d/{autoRecName}"); // Restart the round a few times - var ticker = server.System(); + var ticker = server.System(); await server.WaitPost(() => ticker.RestartRound()); await pair.RunTicksSync(25); Assert.That(recordMan.IsRecording, Is.True); diff --git a/Content.IntegrationTests/Tests/ResettingEntitySystemTests.cs b/Content.IntegrationTests/Tests/ResettingEntitySystemTests.cs index 17f178645a..bf646dd331 100644 --- a/Content.IntegrationTests/Tests/ResettingEntitySystemTests.cs +++ b/Content.IntegrationTests/Tests/ResettingEntitySystemTests.cs @@ -41,7 +41,7 @@ namespace Content.IntegrationTests.Tests var server = pair.Server; var entitySystemManager = server.ResolveDependency(); - var gameTicker = entitySystemManager.GetEntitySystem(); + var gameTicker = entitySystemManager.GetEntitySystem(); await server.WaitAssertion(() => { diff --git a/Content.IntegrationTests/Tests/RestartRoundTest.cs b/Content.IntegrationTests/Tests/RestartRoundTest.cs index 1ed43b0951..b32fc22a36 100644 --- a/Content.IntegrationTests/Tests/RestartRoundTest.cs +++ b/Content.IntegrationTests/Tests/RestartRoundTest.cs @@ -23,7 +23,7 @@ namespace Content.IntegrationTests.Tests await server.WaitPost(() => { - sysManager.GetEntitySystem().RestartRound(); + sysManager.GetEntitySystem().RestartRound(); }); await pair.RunUntilSynced(); diff --git a/Content.IntegrationTests/Tests/Round/JobTest.cs b/Content.IntegrationTests/Tests/Round/JobTest.cs index 04e629c1ba..2abd28d6e2 100644 --- a/Content.IntegrationTests/Tests/Round/JobTest.cs +++ b/Content.IntegrationTests/Tests/Round/JobTest.cs @@ -85,7 +85,7 @@ public sealed class JobTest : GameTest var jobSys = pair.Server.System(); var mindSys = pair.Server.System(); var roleSys = pair.Server.System(); - var ticker = pair.Server.System(); + var ticker = pair.Server.System(); user ??= pair.Client.User!.Value; @@ -110,7 +110,7 @@ public sealed class JobTest : GameTest var pair = Pair; pair.Server.CfgMan.SetCVar(CCVars.GameMap, _map); - var ticker = pair.Server.System(); + var ticker = pair.Server.System(); // Initially in the lobby Assert.That(ticker.RunLevel, Is.EqualTo(GameRunLevel.PreRoundLobby)); @@ -137,7 +137,7 @@ public sealed class JobTest : GameTest var pair = Pair; pair.Server.CfgMan.SetCVar(CCVars.GameMap, _map); - var ticker = pair.Server.System(); + var ticker = pair.Server.System(); Assert.That(ticker.RunLevel, Is.EqualTo(GameRunLevel.PreRoundLobby)); Assert.That(pair.Client.AttachedEntity, Is.Null); @@ -170,11 +170,11 @@ public sealed class JobTest : GameTest var pair = Pair; pair.Server.CfgMan.SetCVar(CCVars.GameMap, _map); - var ticker = pair.Server.System(); + var ticker = pair.Server.System(); Assert.That(ticker.RunLevel, Is.EqualTo(GameRunLevel.PreRoundLobby)); Assert.That(pair.Client.AttachedEntity, Is.Null); - var stationJobs = pair.Server.System(); + var stationJobs = pair.Server.System(); var captain = pair.Server.ProtoMan.Index(Captain); var engineer = pair.Server.ProtoMan.Index(Engineer); var passenger = pair.Server.ProtoMan.Index(Passenger); @@ -202,9 +202,9 @@ public sealed class JobTest : GameTest { var pair = Pair; pair.Server.CfgMan.SetCVar(CCVars.GameMap, JobWeightOverrideMap); - var ticker = pair.Server.System(); + var ticker = pair.Server.System(); - var stationJobs = pair.Server.System(); + var stationJobs = pair.Server.System(); var passenger = pair.Server.ProtoMan.Index(Passenger); var engineer = pair.Server.ProtoMan.Index(Engineer); var captain = pair.Server.ProtoMan.Index(Captain); @@ -256,7 +256,7 @@ public sealed class JobTest : GameTest var pair = Pair; pair.Server.CfgMan.SetCVar(CCVars.GameMap, _map); - var ticker = pair.Server.System(); + var ticker = pair.Server.System(); Assert.That(ticker.RunLevel, Is.EqualTo(GameRunLevel.PreRoundLobby)); Assert.That(pair.Client.AttachedEntity, Is.Null); diff --git a/Content.IntegrationTests/Tests/RoundEndTest.cs b/Content.IntegrationTests/Tests/RoundEndTest.cs index 4a02ede05e..72afdf480d 100644 --- a/Content.IntegrationTests/Tests/RoundEndTest.cs +++ b/Content.IntegrationTests/Tests/RoundEndTest.cs @@ -2,6 +2,7 @@ using Content.IntegrationTests.Fixtures; using Content.Server.GameTicking; using Content.Server.RoundEnd; using Content.Shared.CCVar; +using Content.Shared.GameTicking; using Robust.Shared.Configuration; using Robust.Shared.GameObjects; @@ -43,7 +44,7 @@ namespace Content.IntegrationTests.Tests var config = server.ResolveDependency(); var sysManager = server.ResolveDependency(); - var ticker = sysManager.GetEntitySystem(); + var ticker = sysManager.GetEntitySystem(); var roundEndSystem = sysManager.GetEntitySystem(); var sys = server.System(); sys.RoundCount = 0; diff --git a/Content.IntegrationTests/Tests/ShuttleTest.cs b/Content.IntegrationTests/Tests/ShuttleTest.cs index 2c77f6b8c7..8429dc7813 100644 --- a/Content.IntegrationTests/Tests/ShuttleTest.cs +++ b/Content.IntegrationTests/Tests/ShuttleTest.cs @@ -1,6 +1,7 @@ using System.Numerics; using Content.IntegrationTests.Fixtures; using Content.Server.Shuttles.Components; +using Content.Shared.Shuttles.Components; using Robust.Shared.GameObjects; using Robust.Shared.Map; using Robust.Shared.Physics; diff --git a/Content.IntegrationTests/Tests/Station/EvacShuttleTest.cs b/Content.IntegrationTests/Tests/Station/EvacShuttleTest.cs index e6a098a639..fc1d3741d4 100644 --- a/Content.IntegrationTests/Tests/Station/EvacShuttleTest.cs +++ b/Content.IntegrationTests/Tests/Station/EvacShuttleTest.cs @@ -4,6 +4,7 @@ using Content.Server.GameTicking; using Content.Server.Shuttles.Components; using Content.Server.Shuttles.Systems; using Content.Shared.CCVar; +using Content.Shared.GameTicking; using Content.Shared.Shuttles.Components; using Content.Shared.Station.Components; using Robust.Shared.GameObjects; @@ -30,7 +31,7 @@ public sealed class EvacShuttleTest : GameTest var pair = Pair; var server = pair.Server; var entMan = server.EntMan; - var ticker = server.System(); + var ticker = server.System(); // Dummy ticker tests should not have centcomm Assert.That(entMan.Count(), Is.Zero); diff --git a/Content.IntegrationTests/Tests/Station/StationJobsTest.cs b/Content.IntegrationTests/Tests/Station/StationJobsTest.cs index 7cdf0155ca..188fec54e8 100644 --- a/Content.IntegrationTests/Tests/Station/StationJobsTest.cs +++ b/Content.IntegrationTests/Tests/Station/StationJobsTest.cs @@ -6,6 +6,7 @@ using Content.Shared.CCVar; using Content.Shared.Maps; using Content.Shared.Preferences; using Content.Shared.Roles; +using Content.Shared.Station.Components; using Robust.Shared.Configuration; using Robust.Shared.GameObjects; using Robust.Shared.Network; @@ -14,7 +15,7 @@ using Robust.Shared.Prototypes; namespace Content.IntegrationTests.Tests.Station; [TestFixture] -[TestOf(typeof(StationJobsSystem))] +[TestOf(typeof(ServerStationJobsSystem))] public sealed class StationJobsTest : GameTest { private const string StationMapId = "FooStation"; @@ -137,8 +138,8 @@ public sealed class StationJobsTest : GameTest var prototypeManager = server.ResolveDependency(); var barStationProto = prototypeManager.Index(SecondStationMapId); var entSysMan = server.ResolveDependency().EntitySysManager; - var stationJobs = entSysMan.GetEntitySystem(); - var stationSystem = entSysMan.GetEntitySystem(); + var stationJobs = entSysMan.GetEntitySystem(); + var stationSystem = entSysMan.GetEntitySystem(); var firstStation = EntityUid.Invalid; var secondStation = EntityUid.Invalid; @@ -198,8 +199,8 @@ public sealed class StationJobsTest : GameTest var prototypeManager = server.ResolveDependency(); var barStationProto = prototypeManager.Index(SecondStationMapId); var entSysMan = server.ResolveDependency().EntitySysManager; - var stationJobs = entSysMan.GetEntitySystem(); - var stationSystem = entSysMan.GetEntitySystem(); + var stationJobs = entSysMan.GetEntitySystem(); + var stationSystem = entSysMan.GetEntitySystem(); var station = EntityUid.Invalid; await server.WaitPost(() => @@ -264,8 +265,8 @@ public sealed class StationJobsTest : GameTest var prototypeManager = server.ResolveDependency(); var fooStationProto = prototypeManager.Index(StationMapId); var entSysMan = server.ResolveDependency().EntitySysManager; - var stationJobs = entSysMan.GetEntitySystem(); - var stationSystem = entSysMan.GetEntitySystem(); + var stationJobs = entSysMan.GetEntitySystem(); + var stationSystem = entSysMan.GetEntitySystem(); var station = EntityUid.Invalid; await server.WaitPost(() => diff --git a/Content.MapRenderer/Painters/MapPainter.cs b/Content.MapRenderer/Painters/MapPainter.cs index c6ae9c03bf..cbef2364e6 100644 --- a/Content.MapRenderer/Painters/MapPainter.cs +++ b/Content.MapRenderer/Painters/MapPainter.cs @@ -172,7 +172,7 @@ namespace Content.MapRenderer.Painters if (_map is RenderMapPrototype) { - var mapId = sEntityManager.System().DefaultMap; + var mapId = sEntityManager.System().DefaultMap; _grids = mapSys.GetAllGrids(mapId).ToArray(); } diff --git a/Content.Server/Access/Systems/PresetIdCardSystem.cs b/Content.Server/Access/Systems/PresetIdCardSystem.cs index 63a355546e..ee224bad09 100644 --- a/Content.Server/Access/Systems/PresetIdCardSystem.cs +++ b/Content.Server/Access/Systems/PresetIdCardSystem.cs @@ -1,9 +1,9 @@ using Content.Server.Access.Components; -using Content.Server.GameTicking; -using Content.Server.Station.Components; using Content.Server.Station.Systems; using Content.Shared.Access.Systems; +using Content.Shared.GameTicking; using Content.Shared.Roles; +using Content.Shared.Station.Components; namespace Content.Server.Access.Systems; @@ -11,7 +11,7 @@ public sealed partial class PresetIdCardSystem : EntitySystem { [Dependency] private IdCardSystem _cardSystem = default!; [Dependency] private SharedAccessSystem _accessSystem = default!; - [Dependency] private StationSystem _stationSystem = default!; + [Dependency] private ServerStationSystem _stationSystem = default!; public override void Initialize() { diff --git a/Content.Server/Administration/AdminEventLog/AdminEventLogEui.cs b/Content.Server/Administration/AdminEventLog/AdminEventLogEui.cs index 5f9cea5316..5e668c7bc1 100644 --- a/Content.Server/Administration/AdminEventLog/AdminEventLogEui.cs +++ b/Content.Server/Administration/AdminEventLog/AdminEventLogEui.cs @@ -20,7 +20,7 @@ public sealed partial class AdminEventLogEui : BaseEui [Dependency] private EventWebhook _eventWebhook = default!; [Dependency] private IEntityManager _e = default!; - private int CurrentRoundId => _e.System().RoundId; + private int CurrentRoundId => _e.System().RoundId; public AdminEventLogEui() { diff --git a/Content.Server/Administration/Commands/AGhostCommand.cs b/Content.Server/Administration/Commands/AGhostCommand.cs index 5b450a2c4e..ae23427e45 100644 --- a/Content.Server/Administration/Commands/AGhostCommand.cs +++ b/Content.Server/Administration/Commands/AGhostCommand.cs @@ -75,7 +75,7 @@ public sealed partial class AGhostCommand : LocalizedCommands var metaDataSystem = _entities.System(); var ghostSystem = _entities.System(); var transformSystem = _entities.System(); - var gameTicker = _entities.System(); + var gameTicker = _entities.System(); if (!mindSystem.TryGetMind(player, out var mindId, out var mind)) { @@ -102,7 +102,7 @@ public sealed partial class AGhostCommand : LocalizedCommands coordinates = gameTicker.GetObserverSpawnPoint(); } - var ghost = _entities.SpawnEntity(GameTicker.AdminObserverPrototypeName, coordinates.Value); + var ghost = _entities.SpawnEntity(ServerGameTicker.AdminObserverPrototypeName, coordinates.Value); if (canReturn) { diff --git a/Content.Server/Administration/Commands/ForceGhostCommand.cs b/Content.Server/Administration/Commands/ForceGhostCommand.cs index 8a11a93917..b5f869ce4d 100644 --- a/Content.Server/Administration/Commands/ForceGhostCommand.cs +++ b/Content.Server/Administration/Commands/ForceGhostCommand.cs @@ -12,7 +12,7 @@ namespace Content.Server.Administration.Commands; public sealed partial class ForceGhostCommand : LocalizedEntityCommands { [Dependency] private IPlayerManager _playerManager = default!; - [Dependency] private GameTicker _gameTicker = default!; + [Dependency] private ServerGameTicker _gameTicker = default!; [Dependency] private SharedMindSystem _mind = default!; [Dependency] private GhostSystem _ghost = default!; diff --git a/Content.Server/Administration/Commands/LoadGameMapCommand.cs b/Content.Server/Administration/Commands/LoadGameMapCommand.cs index a3da721f82..019b1f0550 100644 --- a/Content.Server/Administration/Commands/LoadGameMapCommand.cs +++ b/Content.Server/Administration/Commands/LoadGameMapCommand.cs @@ -12,7 +12,7 @@ namespace Content.Server.Administration.Commands public sealed partial class LoadGameMapCommand : LocalizedEntityCommands { [Dependency] private IPrototypeManager _prototypeManager = default!; - [Dependency] private GameTicker _gameTicker = default!; + [Dependency] private ServerGameTicker _gameTicker = default!; [Dependency] private SharedMapSystem _mapSystem = default!; public override string Command => "loadgamemap"; diff --git a/Content.Server/Administration/Commands/ReadyAllCommand.cs b/Content.Server/Administration/Commands/ReadyAllCommand.cs index aa25830c4e..e173c12dd0 100644 --- a/Content.Server/Administration/Commands/ReadyAllCommand.cs +++ b/Content.Server/Administration/Commands/ReadyAllCommand.cs @@ -1,5 +1,6 @@ using Content.Server.GameTicking; using Content.Shared.Administration; +using Content.Shared.GameTicking; using Robust.Shared.Console; namespace Content.Server.Administration.Commands; @@ -7,7 +8,7 @@ namespace Content.Server.Administration.Commands; [AdminCommand(AdminFlags.Round)] public sealed partial class ReadyAllCommand : LocalizedEntityCommands { - [Dependency] private GameTicker _gameTicker = default!; + [Dependency] private ServerGameTicker _gameTicker = default!; public override string Command => "readyall"; diff --git a/Content.Server/Administration/Commands/ThrowScoreboardCommand.cs b/Content.Server/Administration/Commands/ThrowScoreboardCommand.cs index cacd043f39..1a9cabb558 100644 --- a/Content.Server/Administration/Commands/ThrowScoreboardCommand.cs +++ b/Content.Server/Administration/Commands/ThrowScoreboardCommand.cs @@ -22,6 +22,6 @@ public sealed partial class ThrowScoreboardCommand : IConsoleCommand shell.WriteLine(Help); return; } - _e.System().ShowRoundEndScoreboard(); + _e.System().ShowRoundEndScoreboard(); } } diff --git a/Content.Server/Administration/Logs/AdminLogManager.cs b/Content.Server/Administration/Logs/AdminLogManager.cs index 02884a8703..a4b16d2d93 100644 --- a/Content.Server/Administration/Logs/AdminLogManager.cs +++ b/Content.Server/Administration/Logs/AdminLogManager.cs @@ -5,11 +5,11 @@ using System.Threading.Tasks; using Content.Server.Administration.Systems; using Content.Server.Database; using Content.Server.EUI; -using Content.Server.GameTicking; using Content.Shared.Administration.Logs; using Content.Shared.CCVar; using Content.Shared.Chat; using Content.Shared.Database; +using Content.Shared.GameTicking; using Content.Shared.Mind; using Content.Shared.Players.PlayTimeTracking; using Prometheus; diff --git a/Content.Server/Administration/Logs/AdminLogSystem.cs b/Content.Server/Administration/Logs/AdminLogSystem.cs index aa3209bc39..e376750b5c 100644 --- a/Content.Server/Administration/Logs/AdminLogSystem.cs +++ b/Content.Server/Administration/Logs/AdminLogSystem.cs @@ -1,5 +1,5 @@ -using Content.Server.GameTicking; -using Content.Server.GameTicking.Events; +using Content.Shared.GameTicking; +using Content.Shared.GameTicking.Events; namespace Content.Server.Administration.Logs; diff --git a/Content.Server/Administration/Logs/AdminLogsEui.cs b/Content.Server/Administration/Logs/AdminLogsEui.cs index 184d0cf273..84ac91d247 100644 --- a/Content.Server/Administration/Logs/AdminLogsEui.cs +++ b/Content.Server/Administration/Logs/AdminLogsEui.cs @@ -52,7 +52,7 @@ public sealed partial class AdminLogsEui : BaseEui }; } - private int CurrentRoundId => _e.System().RoundId; + private int CurrentRoundId => _e.System().RoundId; public override async void Opened() { diff --git a/Content.Server/Administration/Logs/IAdminLogManager.cs b/Content.Server/Administration/Logs/IAdminLogManager.cs index 0793095ebf..cbd2eaca51 100644 --- a/Content.Server/Administration/Logs/IAdminLogManager.cs +++ b/Content.Server/Administration/Logs/IAdminLogManager.cs @@ -1,9 +1,8 @@ using System.Text.Json; using System.Threading.Tasks; using Content.Server.Database; -using Content.Server.GameTicking; using Content.Shared.Administration.Logs; -using Robust.Shared.Network; +using Content.Shared.GameTicking; using Robust.Shared.Player; namespace Content.Server.Administration.Logs; diff --git a/Content.Server/Administration/Managers/BanManager.cs b/Content.Server/Administration/Managers/BanManager.cs index 093ff092ee..dec725374d 100644 --- a/Content.Server/Administration/Managers/BanManager.cs +++ b/Content.Server/Administration/Managers/BanManager.cs @@ -276,7 +276,7 @@ public sealed partial class BanManager : IBanManager, IPostInjectInit { roundIds = [..banInfo.RoundIds]; } - else if (_systems.TryGetEntitySystem(out var ticker) && ticker.RoundId != 0) + else if (_systems.TryGetEntitySystem(out var ticker) && ticker.RoundId != 0) { roundIds = [ticker.RoundId]; } diff --git a/Content.Server/Administration/Notes/AdminNotesManager.cs b/Content.Server/Administration/Notes/AdminNotesManager.cs index 90a04c6164..2dd4b2cf34 100644 --- a/Content.Server/Administration/Notes/AdminNotesManager.cs +++ b/Content.Server/Administration/Notes/AdminNotesManager.cs @@ -122,7 +122,7 @@ public sealed partial class AdminNotesManager : IAdminNotesManager, IPostInjectI _sawmill.Info(sb.ToString()); - _systems.TryGetEntitySystem(out GameTicker? ticker); + _systems.TryGetEntitySystem(out ServerGameTicker? ticker); int? roundId = ticker == null || ticker.RoundId == 0 ? null : ticker.RoundId; var serverName = _config.GetCVar(CCVars.AdminLogsServerName); // This could probably be done another way, but this is fine. For displaying only. var createdAt = DateTime.UtcNow; diff --git a/Content.Server/Administration/ServerApi.cs b/Content.Server/Administration/ServerApi.cs index f7c5882d59..f2da1fbebb 100644 --- a/Content.Server/Administration/ServerApi.cs +++ b/Content.Server/Administration/ServerApi.cs @@ -10,14 +10,14 @@ using Content.Server.Administration.Managers; using Content.Server.Administration.Systems; using Content.Server.Database; using Content.Server.GameTicking; -using Content.Server.GameTicking.Presets; -using Content.Server.GameTicking.Rules.Components; using Content.Server.Maps; using Content.Server.RoundEnd; using Content.Shared.Administration.Managers; using Content.Shared.CCVar; using Content.Shared.Database; +using Content.Shared.GameTicking; using Content.Shared.GameTicking.Components; +using Content.Shared.GameTicking.Prototypes; using Content.Shared.Prototypes; using Robust.Server.ServerStatus; using Robust.Shared.Asynchronous; @@ -218,7 +218,7 @@ public sealed partial class ServerApi : IPostInjectInit await RunOnMainThread(async () => { - var ticker = _entitySystemManager.GetEntitySystem(); + var ticker = _entitySystemManager.GetEntitySystem(); if (ticker.RunLevel != GameRunLevel.PreRoundLobby) { await RespondError( @@ -258,7 +258,7 @@ public sealed partial class ServerApi : IPostInjectInit await RunOnMainThread(async () => { - var ticker = _entitySystemManager.GetEntitySystem(); + var ticker = _entitySystemManager.GetEntitySystem(); var gameRule = ticker .GetActiveGameRules() .FirstOrNull(rule => @@ -292,7 +292,7 @@ public sealed partial class ServerApi : IPostInjectInit await RunOnMainThread(async () => { - var ticker = _entitySystemManager.GetEntitySystem(); + var ticker = _entitySystemManager.GetEntitySystem(); if (!_prototypeManager.HasIndex(body.GameRuleId)) { await RespondError(context, @@ -302,11 +302,13 @@ public sealed partial class ServerApi : IPostInjectInit return; } - var ruleEntity = ticker.AddGameRule(body.GameRuleId); + if (ticker.AddGameRule(body.GameRuleId) is not { } ruleEntity) + return; + _sawmill.Info($"Added game rule {body.GameRuleId} by {FormatLogActor(actor)}."); if (ticker.RunLevel == GameRunLevel.InRound) { - ticker.StartGameRule(ruleEntity); + ticker.StartGameRule(ruleEntity.AsNullable()); _sawmill.Info($"Started game rule {body.GameRuleId} by {FormatLogActor(actor)}."); } @@ -418,7 +420,7 @@ public sealed partial class ServerApi : IPostInjectInit { await RunOnMainThread(async () => { - var ticker = _entitySystemManager.GetEntitySystem(); + var ticker = _entitySystemManager.GetEntitySystem(); if (ticker.RunLevel != GameRunLevel.PreRoundLobby) { @@ -441,7 +443,7 @@ public sealed partial class ServerApi : IPostInjectInit await RunOnMainThread(async () => { var roundEndSystem = _entitySystemManager.GetEntitySystem(); - var ticker = _entitySystemManager.GetEntitySystem(); + var ticker = _entitySystemManager.GetEntitySystem(); if (ticker.RunLevel != GameRunLevel.InRound) { @@ -463,7 +465,7 @@ public sealed partial class ServerApi : IPostInjectInit { await RunOnMainThread(async () => { - var ticker = _entitySystemManager.GetEntitySystem(); + var ticker = _entitySystemManager.GetEntitySystem(); ticker.RestartRound(); _sawmill.Info($"Forced instant round restart by {FormatLogActor(actor)}"); @@ -544,7 +546,7 @@ public sealed partial class ServerApi : IPostInjectInit var info = await RunOnMainThread(() => { - var ticker = _entitySystemManager.GetEntitySystem(); + var ticker = _entitySystemManager.GetEntitySystem(); var adminSystem = _entitySystemManager.GetEntitySystem(); var players = new List(); diff --git a/Content.Server/Administration/Systems/AdminSystem.cs b/Content.Server/Administration/Systems/AdminSystem.cs index 146f673211..ba580a0497 100644 --- a/Content.Server/Administration/Systems/AdminSystem.cs +++ b/Content.Server/Administration/Systems/AdminSystem.cs @@ -49,7 +49,7 @@ public sealed partial class AdminSystem : EntitySystem [Dependency] private PhysicsSystem _physics = default!; [Dependency] private PlayTimeTrackingManager _playTime = default!; [Dependency] private SharedRoleSystem _role = default!; - [Dependency] private GameTicker _gameTicker = default!; + [Dependency] private ServerGameTicker _gameTicker = default!; [Dependency] private SharedAudioSystem _audio = default!; [Dependency] private StationRecordsSystem _stationRecords = default!; [Dependency] private TransformSystem _transform = default!; diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs b/Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs index 078daa0b04..9a94d3ff46 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs @@ -1,10 +1,10 @@ -using Content.Server.Antag; using Content.Server.GameTicking; -using Content.Server.GameTicking.Rules.Components; using Content.Server.Zombies; using Content.Shared.Administration; using Content.Server.Clothing.Systems; +using Content.Shared.Antag; using Content.Shared.Database; +using Content.Shared.GameTicking.Rules.Components; using Content.Shared.Humanoid; using Content.Shared.Mind.Components; using Content.Shared.Roles; @@ -20,7 +20,7 @@ public sealed partial class AdminVerbSystem { [Dependency] private AntagSelectionSystem _antag = default!; [Dependency] private ZombieSystem _zombie = default!; - [Dependency] private GameTicker _gameTicker = default!; + [Dependency] private ServerGameTicker _gameTicker = default!; [Dependency] private OutfitSystem _outfit = default!; private static readonly EntProtoId DefaultTraitorRule = "Traitor"; @@ -179,14 +179,15 @@ public sealed partial class AdminVerbSystem Icon = new SpriteSpecifier.Rsi(new("/Textures/Interface/Misc/job_icons.rsi"), "ParadoxClone"), Act = () => { - var ruleEnt = _gameTicker.AddGameRule(ParadoxCloneRuleId); + if (_gameTicker.AddGameRule(ParadoxCloneRuleId) is not { } ruleEnt) + return; if (!TryComp(ruleEnt, out var paradoxCloneRuleComp)) return; paradoxCloneRuleComp.OriginalBody = args.Target; // override the target player - _gameTicker.StartGameRule(ruleEnt); + _gameTicker.StartGameRule(ruleEnt.AsNullable()); }, Impact = LogImpact.High, Message = string.Join(": ", paradoxCloneName, Loc.GetString("admin-verb-make-paradox-clone")), diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.Tools.cs b/Content.Server/Administration/Systems/AdminVerbSystem.Tools.cs index da4b442382..e98c5e5a7c 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.Tools.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.Tools.cs @@ -47,7 +47,7 @@ public sealed partial class AdminVerbSystem [Dependency] private HandsSystem _handsSystem = default!; [Dependency] private QuickDialogSystem _quickDialog = default!; [Dependency] private AdminTestArenaSystem _adminTestArenaSystem = default!; - [Dependency] private StationJobsSystem _stationJobsSystem = default!; + [Dependency] private ServerStationJobsSystem _stationJobsSystem = default!; [Dependency] private JointSystem _jointSystem = default!; [Dependency] private SharedBatterySystem _batterySystem = default!; [Dependency] private MetaDataSystem _metaSystem = default!; diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.cs b/Content.Server/Administration/Systems/AdminVerbSystem.cs index e2f0f152f1..3ef8c7ecfb 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.cs @@ -7,7 +7,6 @@ using Content.Server.Ghost.Roles; using Content.Server.Mind; using Content.Server.Prayer; using Content.Server.Silicons.Laws; -using Content.Server.Station.Systems; using Content.Shared.Administration; using Content.Shared.Administration.Systems; using Content.Shared.Chemistry.Components.SolutionManager; @@ -36,7 +35,7 @@ using Robust.Shared.Toolshed; using Robust.Shared.Utility; using System.Linq; using Content.Shared.Chemistry.Components; -using Content.Shared.Mind; +using Content.Shared.Station.Systems; using static Content.Shared.Configurable.ConfigurationComponent; namespace Content.Server.Administration.Systems diff --git a/Content.Server/Administration/Systems/BwoinkSystem.cs b/Content.Server/Administration/Systems/BwoinkSystem.cs index 59cf34cb66..4ab2ded9eb 100644 --- a/Content.Server/Administration/Systems/BwoinkSystem.cs +++ b/Content.Server/Administration/Systems/BwoinkSystem.cs @@ -38,7 +38,7 @@ namespace Content.Server.Administration.Systems [Dependency] private IConfigurationManager _config = default!; [Dependency] private IGameTiming _timing = default!; [Dependency] private IPlayerLocator _playerLocator = default!; - [Dependency] private GameTicker _gameTicker = default!; + [Dependency] private ServerGameTicker _gameTicker = default!; [Dependency] private SharedMindSystem _minds = default!; [Dependency] private IAfkManager _afkManager = default!; [Dependency] private IServerDbManager _dbManager = default!; diff --git a/Content.Server/Afk/AfkSystem.cs b/Content.Server/Afk/AfkSystem.cs index 36e61f07ab..28ee238fc3 100644 --- a/Content.Server/Afk/AfkSystem.cs +++ b/Content.Server/Afk/AfkSystem.cs @@ -2,6 +2,7 @@ using Content.Server.Administration.Managers; using Content.Server.GameTicking; using Content.Shared.Afk.Events; using Content.Shared.CCVar; +using Content.Shared.GameTicking; using Content.Shared.Instruments; using Robust.Server.Player; using Robust.Shared.Configuration; @@ -21,7 +22,7 @@ public sealed partial class AfkSystem : EntitySystem [Dependency] private IAfkManager _afkManager = default!; [Dependency] private IPlayerManager _playerManager = default!; [Dependency] private IGameTiming _timing = default!; - [Dependency] private GameTicker _ticker = default!; + [Dependency] private ServerGameTicker _ticker = default!; [Dependency] private IConfigurationManager _cfg = default!; /// diff --git a/Content.Server/AlertLevel/AlertLevelDisplaySystem.cs b/Content.Server/AlertLevel/AlertLevelDisplaySystem.cs index bc524c565f..39dc7b0667 100644 --- a/Content.Server/AlertLevel/AlertLevelDisplaySystem.cs +++ b/Content.Server/AlertLevel/AlertLevelDisplaySystem.cs @@ -7,7 +7,7 @@ namespace Content.Server.AlertLevel; public sealed partial class AlertLevelDisplaySystem : EntitySystem { - [Dependency] private StationSystem _stationSystem = default!; + [Dependency] private ServerStationSystem _stationSystem = default!; [Dependency] private SharedAppearanceSystem _appearance = default!; public override void Initialize() diff --git a/Content.Server/AlertLevel/Commands/SetAlertLevelCommand.cs b/Content.Server/AlertLevel/Commands/SetAlertLevelCommand.cs index f781b7a7da..c09e67d5dd 100644 --- a/Content.Server/AlertLevel/Commands/SetAlertLevelCommand.cs +++ b/Content.Server/AlertLevel/Commands/SetAlertLevelCommand.cs @@ -2,6 +2,7 @@ using Content.Shared.Administration; using Content.Shared.AlertLevel; using Content.Shared.Station; +using Content.Shared.Station.Systems; using Robust.Shared.Console; using Robust.Shared.Prototypes; @@ -11,7 +12,7 @@ namespace Content.Server.AlertLevel.Commands; public sealed partial class SetAlertLevelCommand : LocalizedEntityCommands { [Dependency] private AlertLevelSystem _alertLevelSystem = default!; - [Dependency] private SharedStationSystem _stationSystem = default!; + [Dependency] private StationSystem _stationSystem = default!; [Dependency] private IPrototypeManager _prototype = default!; public override string Command => "setalertlevel"; diff --git a/Content.Server/Anomaly/AnomalySystem.cs b/Content.Server/Anomaly/AnomalySystem.cs index e1514bfeaf..2693aa108b 100644 --- a/Content.Server/Anomaly/AnomalySystem.cs +++ b/Content.Server/Anomaly/AnomalySystem.cs @@ -5,12 +5,12 @@ using Content.Server.Explosion.EntitySystems; using Content.Server.Materials; using Content.Server.Radiation.Systems; using Content.Server.Radio.EntitySystems; -using Content.Server.Station.Systems; using Content.Shared.Anomaly; using Content.Shared.Anomaly.Components; using Content.Shared.Anomaly.Prototypes; using Content.Shared.Random; using Content.Shared.Random.Helpers; +using Content.Shared.Station.Systems; using Robust.Server.GameObjects; using Robust.Shared.Audio.Systems; using Robust.Shared.Configuration; diff --git a/Content.Server/Antag/AntagMultipleRoleSpawnerSystem.cs b/Content.Server/Antag/AntagMultipleRoleSpawnerSystem.cs index 485c5d46ad..ad5eba21c9 100644 --- a/Content.Server/Antag/AntagMultipleRoleSpawnerSystem.cs +++ b/Content.Server/Antag/AntagMultipleRoleSpawnerSystem.cs @@ -1,4 +1,5 @@ using Content.Server.Antag.Components; +using Content.Shared.Antag; using Robust.Shared.Random; namespace Content.Server.Antag; diff --git a/Content.Server/Antag/AntagObjectivesSystem.cs b/Content.Server/Antag/AntagObjectivesSystem.cs index 6fffe18926..560b90f08d 100644 --- a/Content.Server/Antag/AntagObjectivesSystem.cs +++ b/Content.Server/Antag/AntagObjectivesSystem.cs @@ -1,7 +1,6 @@ using Content.Server.Antag.Components; -using Content.Server.Objectives; +using Content.Shared.Antag; using Content.Shared.Mind; -using Content.Shared.Objectives.Systems; namespace Content.Server.Antag; diff --git a/Content.Server/Antag/AntagRandomObjectivesSystem.cs b/Content.Server/Antag/AntagRandomObjectivesSystem.cs index 3be62e20c9..8832f3d227 100644 --- a/Content.Server/Antag/AntagRandomObjectivesSystem.cs +++ b/Content.Server/Antag/AntagRandomObjectivesSystem.cs @@ -1,8 +1,8 @@ using Content.Server.Antag.Components; using Content.Server.Objectives; +using Content.Shared.Antag; using Content.Shared.Mind; using Content.Shared.Objectives.Components; -using Content.Shared.Objectives.Systems; using Robust.Shared.Random; namespace Content.Server.Antag; diff --git a/Content.Server/Antag/AntagRandomSpawnRule.cs b/Content.Server/Antag/AntagRandomSpawnRule.cs index 696c224287..7f2dc4c0ef 100644 --- a/Content.Server/Antag/AntagRandomSpawnRule.cs +++ b/Content.Server/Antag/AntagRandomSpawnRule.cs @@ -1,11 +1,14 @@ using Content.Server.Antag.Components; +using Content.Server.Station.Systems; +using Content.Shared.Antag; using Content.Shared.GameTicking.Components; -using Content.Server.GameTicking.Rules; +using Content.Shared.GameTicking.Rules; namespace Content.Server.Antag; public sealed partial class AntagRandomSpawnSystem : GameRuleSystem { + [Dependency] private ServerStationSystem _station = default!; [Dependency] private SharedTransformSystem _transform = default!; public override void Initialize() @@ -15,15 +18,15 @@ public sealed partial class AntagRandomSpawnSystem : GameRuleSystem(OnSelectLocation); } - protected override void Added(EntityUid uid, AntagRandomSpawnComponent comp, GameRuleComponent gameRule, GameRuleAddedEvent args) + protected override void Added(Entity rule, ref GameRuleAddedEvent args) { - base.Added(uid, comp, gameRule, args); + base.Added(rule, ref args); // we have to select this here because AntagSelectLocationEvent is raised twice because MakeAntag is called twice // once when a ghost role spawner is created and once when someone takes the ghost role - if (TryFindRandomTile(out _, out _, out _, out var coords)) - comp.Coords = coords; + if (_station.TryFindRandomTile(out _, out _, out _, out var coords)) + rule.Comp1.Coords = coords; } private void OnSelectLocation(Entity ent, ref AntagSelectLocationEvent args) diff --git a/Content.Server/Antag/AntagSpawnerSystem.cs b/Content.Server/Antag/AntagSpawnerSystem.cs index 9bbe784265..6f2089e7dd 100644 --- a/Content.Server/Antag/AntagSpawnerSystem.cs +++ b/Content.Server/Antag/AntagSpawnerSystem.cs @@ -1,4 +1,5 @@ using Content.Server.Antag.Components; +using Content.Shared.Antag; namespace Content.Server.Antag; diff --git a/Content.Server/Antag/Components/AntagMultipleRoleSpawnerComponent.cs b/Content.Server/Antag/Components/AntagMultipleRoleSpawnerComponent.cs index f375dd6dc3..84415f4d8f 100644 --- a/Content.Server/Antag/Components/AntagMultipleRoleSpawnerComponent.cs +++ b/Content.Server/Antag/Components/AntagMultipleRoleSpawnerComponent.cs @@ -1,5 +1,4 @@ using Content.Shared.Antag; -using Content.Shared.Roles; using Robust.Shared.Prototypes; namespace Content.Server.Antag.Components; diff --git a/Content.Server/Antag/Components/AntagRandomSpawnComponent.cs b/Content.Server/Antag/Components/AntagRandomSpawnComponent.cs index b73d5cdb68..c3df203e7d 100644 --- a/Content.Server/Antag/Components/AntagRandomSpawnComponent.cs +++ b/Content.Server/Antag/Components/AntagRandomSpawnComponent.cs @@ -1,3 +1,4 @@ +using Content.Shared.Antag.Components; using Robust.Shared.Map; namespace Content.Server.Antag.Components; diff --git a/Content.Server/Antag/MobReplacementRuleSystem.cs b/Content.Server/Antag/MobReplacementRuleSystem.cs index aaaf83868a..3f66d1e0f2 100644 --- a/Content.Server/Antag/MobReplacementRuleSystem.cs +++ b/Content.Server/Antag/MobReplacementRuleSystem.cs @@ -1,6 +1,7 @@ using Content.Server.Antag.Mimic; using Content.Server.GameTicking.Rules; using Content.Shared.GameTicking.Components; +using Content.Shared.GameTicking.Rules; using Content.Shared.VendingMachines.Components; using Robust.Shared.Map; using Robust.Shared.Random; diff --git a/Content.Server/Antag/ServerAntagSelectionSystem.cs b/Content.Server/Antag/ServerAntagSelectionSystem.cs new file mode 100644 index 0000000000..dddb3dc9e9 --- /dev/null +++ b/Content.Server/Antag/ServerAntagSelectionSystem.cs @@ -0,0 +1,167 @@ +using System.Diagnostics; +using System.Linq; +using Content.Server.Administration.Managers; +using Content.Server.Chat.Managers; +using Content.Server.GameTicking.Events; +using Content.Server.GameTicking.Rules.Components; +using Content.Server.Ghost.Roles; +using Content.Server.Ghost.Roles.Components; +using Content.Server.Objectives; +using Content.Server.Players.PlayTimeTracking; +using Content.Server.Preferences.Managers; +using Content.Shared.Antag; +using Content.Shared.Antag.Components; +using Content.Shared.Chat; +using Content.Shared.Roles; +using Robust.Shared.Audio; +using Robust.Shared.Player; +using Robust.Shared.Prototypes; + +namespace Content.Server.Antag; + +/// +public sealed partial class ServerAntagSelectionSystem : AntagSelectionSystem +{ + [Dependency] private IBanManager _ban = default!; + [Dependency] private IChatManager _chat = default!; + [Dependency] private IServerPreferencesManager _pref = default!; + [Dependency] private GhostRoleSystem _ghostRole = default!; + [Dependency] private PlayTimeTrackingSystem _playTime = default!; + + [SubscribeLocalEvent] + private void OnTakeGhostRole(Entity ent, ref TakeGhostRoleEvent args) + { + if (args.TookRole) + return; + + if (ent.Comp.Rule is not { } rule || ent.Comp.Definition is not { } proto) + return; + + if (!ProtoMan.Resolve(proto, out var def)) + return; + + if (!Exists(rule) || !RuleQuery.TryComp(rule, out var select)) + return; + + // Ensure the player is allowed to play this antagonist! + if (IsAntagBanned(args.Player, def) || !_playTime.IsAllowed(args.Player, def.PrefRoles)) + return; + + if (!TrySpawnAntagonist((rule, select), def, args.Player, XForm.GetMapCoordinates(ent), out var uid)) + { + Log.Error($"Tried to make {args.Player.UserId} into an antagonist but was unable to spawn an entity for them. Game rule {ToPrettyString(ent)}"); + return; + } + + // We do this after TrySpawnAntagonist so we don't have to worry about a failed spawn adding permanent pre selections to a game rule. + PreSelectSession((rule, select), def, args.Player); + InitializeAntag((rule, select), def, uid.Value, args.Player); + args.TookRole = true; + + // Move ghosts that were watching the raffle on the spawner over to the freshly spawned antag. + Follower.TransferFollowers(ent.Owner, uid.Value); + + _ghostRole.UnregisterGhostRole((ent, Comp(ent))); + } + + [SubscribeLocalEvent] + private void OnObjectivesTextGetInfo(Entity ent, ref ObjectivesTextGetInfoEvent args) + { + if (ent.Comp.AgentName is not { } name) + return; + + args.Minds = GetAntagIdentities(ent.AsNullable()).ToList(); + args.AgentName = Loc.GetString(name); + } + + [SubscribeLocalEvent] + private void OnJobNotAssigned(NoJobsAvailableSpawningEvent args) + { + // If someone fails to spawn in due to there being no jobs, they should be removed from any preselected antags. + // We only care about delayed rules, since if they're active the player should have already been removed via MakeAntag. + var query = QueryDelayedRules(); + while (query.MoveNext(out var uid, out var comp, out _, out _)) + { + if (comp.SelectionTime == AntagSelectionTime.RuleStarted) + continue; + + Debug.Assert(comp.SelectionTime != AntagSelectionTime.Never, $"Player: {args.Player.Name}, was pre selected for an game rule {ToPrettyString(uid)} which does not do pre-selections"); + + if (!comp.RemoveUponFailedSpawn) + continue; + + foreach (var antag in comp.Antags) + { + if (!comp.PreSelectedSessions.TryGetValue(antag, out var session)) + break; + session.Remove(args.Player); + } + } + } + + public override IEnumerable> GetValidAntagPreferences(ICommonSession session, List>? filter = null) + { + if (!_pref.TryGetCachedPreferences(session.UserId, out var prefs)) + yield break; + + foreach (var antag in prefs.SelectedCharacter.AntagPreferences) + { + // We also check this in IsSessionValid, but we also check it here since this is public API. + if (_ban.IsRoleBanned(session, antag) || !_playTime.IsAllowed(session, antag)) + continue; + + if (filter != null && !filter.Contains(antag)) + continue; + + yield return antag; + } + } + + public override void SendBriefing(ICommonSession? session, string briefing, Color? briefingColor, SoundSpecifier? briefingSound) + { + if (session == null) + return; + + Audio.PlayGlobal(briefingSound, session); + if (!string.IsNullOrEmpty(briefing)) + { + var wrappedMessage = Loc.GetString("chat-manager-server-wrap-message", ("message", briefing)); + _chat.ChatMessageToOne(ChatChannel.Server, briefing, wrappedMessage, default, false, session.Channel, briefingColor); + } + } + + public override bool IsAntagBanned(ICommonSession session, AntagSpecifierPrototype definition) + { + if (_ban.GetAntagBans(session.UserId) is not { } bans) + return false; + + foreach (var role in definition.PrefRoles) + { + // banned! + if (bans.Contains(role)) + return true; + } + + return false; + } + + protected override Entity? ForceGetGameRuleEnt(string id) + { + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out _, out var comp)) + { + if (MetaData(uid).EntityPrototype?.ID == id) + return (uid, comp); + } + + // Game Rule is invalid. You *really* fucked up. + if (GameTicker.AddGameRule(id) is not { } ruleEnt) + return null; + + RemComp(ruleEnt); + var antag = RuleQuery.Comp(ruleEnt); + antag.AssignmentHandled = true; // don't do normal selection. + GameTicker.StartGameRule(ruleEnt.AsNullable()); + return (ruleEnt, antag); + } +} diff --git a/Content.Server/Audio/ContentAudioSystem.cs b/Content.Server/Audio/ContentAudioSystem.cs index 90451fde77..9f4b31ea2e 100644 --- a/Content.Server/Audio/ContentAudioSystem.cs +++ b/Content.Server/Audio/ContentAudioSystem.cs @@ -5,6 +5,7 @@ using Content.Shared.Audio; using Content.Shared.Audio.Events; using Content.Shared.CCVar; using Content.Shared.GameTicking; +using Content.Shared.GameTicking.Events; using Robust.Server.Audio; using Robust.Shared.Audio; using Robust.Shared.Configuration; diff --git a/Content.Server/Audio/ServerGlobalSoundSystem.cs b/Content.Server/Audio/ServerGlobalSoundSystem.cs index 06a05834c1..3974b7b4ed 100644 --- a/Content.Server/Audio/ServerGlobalSoundSystem.cs +++ b/Content.Server/Audio/ServerGlobalSoundSystem.cs @@ -10,7 +10,7 @@ namespace Content.Server.Audio; public sealed partial class ServerGlobalSoundSystem : SharedGlobalSoundSystem { [Dependency] private IConsoleHost _conHost = default!; - [Dependency] private StationSystem _stationSystem = default!; + [Dependency] private ServerStationSystem _stationSystem = default!; [Dependency] private SharedAudioSystem _audio = default!; public override void Shutdown() diff --git a/Content.Server/Bed/Cryostorage/CryostorageSystem.cs b/Content.Server/Bed/Cryostorage/CryostorageSystem.cs index f3888f0553..0c199ec0b6 100644 --- a/Content.Server/Bed/Cryostorage/CryostorageSystem.cs +++ b/Content.Server/Bed/Cryostorage/CryostorageSystem.cs @@ -1,6 +1,6 @@ +using System.Globalization; using Content.Server.Chat.Managers; using Content.Server.Ghost; -using Content.Server.Station.Components; using Content.Server.Station.Systems; using Content.Shared.Access.Systems; using Content.Shared.Bed.Cryostorage; @@ -10,22 +10,22 @@ using Content.Shared.Clothing.Components; using Content.Shared.Database; using Content.Shared.GameTicking; using Content.Shared.Hands.Components; +using Content.Shared.Hands.EntitySystems; +using Content.Shared.Inventory; using Content.Shared.Mind.Components; +using Content.Shared.Popups; +using Content.Shared.Station.Components; +using Content.Shared.Station.Systems; using Content.Shared.StationRecords; +using Content.Shared.StationRecords.Components; +using Content.Shared.StationRecords.Systems; using Content.Shared.UserInterface; using Robust.Server.Player; +using Robust.Shared.Audio.Systems; using Robust.Shared.Containers; using Robust.Shared.Enums; using Robust.Shared.Network; using Robust.Shared.Player; -using System.Globalization; -using Content.Shared.Hands.EntitySystems; -using Content.Shared.Inventory; -using Content.Shared.Popups; -using Content.Shared.Station; -using Content.Shared.StationRecords.Components; -using Content.Shared.StationRecords.Systems; -using Robust.Shared.Audio.Systems; namespace Content.Server.Bed.Cryostorage; @@ -43,8 +43,8 @@ public sealed partial class CryostorageSystem : SharedCryostorageSystem [Dependency] private SharedHandsSystem _hands = default!; [Dependency] private InventorySystem _inventory = default!; [Dependency] private SharedPopupSystem _popup = default!; - [Dependency] private SharedStationSystem _station = default!; - [Dependency] private StationJobsSystem _stationJobs = default!; + [Dependency] private StationSystem _station = default!; + [Dependency] private ServerStationJobsSystem _stationJobs = default!; [Dependency] private StationRecordsSystem _stationRecords = default!; [Dependency] private SharedTransformSystem _transform = default!; [Dependency] private SharedUserInterfaceSystem _ui = default!; diff --git a/Content.Server/Cargo/Systems/CargoSystem.Telepad.cs b/Content.Server/Cargo/Systems/CargoSystem.Telepad.cs index d61422c9ea..7930391439 100644 --- a/Content.Server/Cargo/Systems/CargoSystem.Telepad.cs +++ b/Content.Server/Cargo/Systems/CargoSystem.Telepad.cs @@ -137,7 +137,7 @@ public sealed partial class CargoSystem if (_station.GetOwningStation(ent) is not { } station) { - station = _random.Pick(_station.GetStations().Where(HasComp).ToList()); + station = _random.Pick(_station.GetStations().Where(x => HasComp(x.Owner)).ToList()); } if (!TryComp(station, out var db) || diff --git a/Content.Server/Cargo/Systems/CargoSystem.cs b/Content.Server/Cargo/Systems/CargoSystem.cs index a753f785cf..6b2dbf103c 100644 --- a/Content.Server/Cargo/Systems/CargoSystem.cs +++ b/Content.Server/Cargo/Systems/CargoSystem.cs @@ -34,7 +34,7 @@ public sealed partial class CargoSystem : SharedCargoSystem [Dependency] private SharedAppearanceSystem _appearance = default!; [Dependency] private SharedAudioSystem _audio = default!; [Dependency] private StackSystem _stack = default!; - [Dependency] private StationSystem _station = default!; + [Dependency] private ServerStationSystem _station = default!; [Dependency] private UserInterfaceSystem _uiSystem = default!; [Dependency] private MetaDataSystem _metaSystem = default!; [Dependency] private RadioSystem _radio = default!; diff --git a/Content.Server/CartridgeLoader/Cartridges/CrewManifestCartridgeSystem.cs b/Content.Server/CartridgeLoader/Cartridges/CrewManifestCartridgeSystem.cs index add42c4953..ba3ae0dbcf 100644 --- a/Content.Server/CartridgeLoader/Cartridges/CrewManifestCartridgeSystem.cs +++ b/Content.Server/CartridgeLoader/Cartridges/CrewManifestCartridgeSystem.cs @@ -14,7 +14,7 @@ public sealed partial class CrewManifestCartridgeSystem : EntitySystem [Dependency] private CartridgeLoaderSystem _cartridgeLoader = default!; [Dependency] private IConfigurationManager _configManager = default!; [Dependency] private CrewManifestSystem _crewManifest = default!; - [Dependency] private StationSystem _stationSystem = default!; + [Dependency] private ServerStationSystem _stationSystem = default!; private static readonly EntProtoId CartridgePrototypeName = "CrewManifestCartridge"; diff --git a/Content.Server/Changeling/Systems/ServerChangelingLastResortSystem.cs b/Content.Server/Changeling/Systems/ServerChangelingLastResortSystem.cs index 76cb6c338b..de1bdb9302 100644 --- a/Content.Server/Changeling/Systems/ServerChangelingLastResortSystem.cs +++ b/Content.Server/Changeling/Systems/ServerChangelingLastResortSystem.cs @@ -1,4 +1,3 @@ -using Content.Server.Antag; using Content.Shared.Antag; using Content.Shared.Changeling.Components; using Content.Shared.Changeling.Systems; diff --git a/Content.Server/Chat/Systems/ChatSystem.cs b/Content.Server/Chat/Systems/ChatSystem.cs index 9f5a868e0c..79b9c3e7af 100644 --- a/Content.Server/Chat/Systems/ChatSystem.cs +++ b/Content.Server/Chat/Systems/ChatSystem.cs @@ -2,14 +2,13 @@ using System.Globalization; using Content.Server.Administration.Logs; using Content.Server.Administration.Managers; using Content.Server.Chat.Managers; -using Content.Server.GameTicking; using Content.Server.Station.Systems; using Content.Shared.ActionBlocker; using Content.Shared.Administration; using Content.Shared.CCVar; using Content.Shared.Chat; using Content.Shared.Examine; -using Content.Shared.Ghost; +using Content.Shared.GameTicking; using Content.Shared.Ghost.Components; using Content.Shared.Mobs.Systems; using Content.Shared.Players.RateLimiting; @@ -40,7 +39,7 @@ public sealed partial class ChatSystem : SharedChatSystem [Dependency] private IRobustRandom _random = default!; [Dependency] private IAdminLogManager _adminLogger = default!; [Dependency] private ActionBlockerSystem _actionBlocker = default!; - [Dependency] private StationSystem _stationSystem = default!; + [Dependency] private ServerStationSystem _stationSystem = default!; [Dependency] private MobStateSystem _mobStateSystem = default!; [Dependency] private SharedAudioSystem _audio = default!; [Dependency] private ReplacementAccentSystem _wordreplacement = default!; diff --git a/Content.Server/Clock/ClockSystem.cs b/Content.Server/Clock/ClockSystem.cs index 0c12a63ac4..a278e8ab70 100644 --- a/Content.Server/Clock/ClockSystem.cs +++ b/Content.Server/Clock/ClockSystem.cs @@ -1,6 +1,7 @@ using Content.Server.GameTicking.Events; using Content.Shared.Clock; using Content.Shared.Destructible; +using Content.Shared.GameTicking.Events; using Robust.Server.GameStates; using Robust.Shared.Random; diff --git a/Content.Server/Clothing/Systems/OutfitSystem.cs b/Content.Server/Clothing/Systems/OutfitSystem.cs index ff2b19f7b9..1395a87db8 100644 --- a/Content.Server/Clothing/Systems/OutfitSystem.cs +++ b/Content.Server/Clothing/Systems/OutfitSystem.cs @@ -13,6 +13,7 @@ using Content.Shared.Preferences.Loadouts; using Content.Shared.Roles; using Content.Shared.Station; using Content.Shared.Containers.ItemSlots; +using Content.Shared.Station.Systems; using Content.Shared.Storage; using Robust.Shared.Player; @@ -23,7 +24,7 @@ public sealed partial class OutfitSystem : EntitySystem [Dependency] private IServerPreferencesManager _preferenceManager = default!; [Dependency] private HandsSystem _handSystem = default!; [Dependency] private InventorySystem _invSystem = default!; - [Dependency] private SharedStationSpawningSystem _spawningSystem = default!; + [Dependency] private StationSpawningSystem _spawningSystem = default!; [Dependency] private ItemSlotsSystem _itemSlotsSystem = default!; [Dependency] private StorageSystem _storageSystem = default!; @@ -43,7 +44,7 @@ public sealed partial class OutfitSystem : EntitySystem session = actorComponent.PlayerSession; var userId = actorComponent.PlayerSession.UserId; var prefs = _preferenceManager.GetPreferences(userId); - profile = prefs.SelectedCharacter as HumanoidCharacterProfile; + profile = prefs.SelectedCharacter; } if (_invSystem.TryGetSlots(target, out var slots)) diff --git a/Content.Server/Communications/CommsHackerSystem.cs b/Content.Server/Communications/CommsHackerSystem.cs index 19613078ce..1d0ea03052 100644 --- a/Content.Server/Communications/CommsHackerSystem.cs +++ b/Content.Server/Communications/CommsHackerSystem.cs @@ -1,8 +1,8 @@ using Content.Server.Chat.Systems; -using Content.Server.GameTicking; using Content.Server.Ninja.Systems; using Content.Shared.Communications; using Content.Shared.DoAfter; +using Content.Shared.GameTicking; using Content.Shared.Interaction; using Content.Shared.Random; using Content.Shared.Random.Helpers; diff --git a/Content.Server/Communications/CommunicationsConsoleSystem.cs b/Content.Server/Communications/CommunicationsConsoleSystem.cs index afb465916e..3d128e1527 100644 --- a/Content.Server/Communications/CommunicationsConsoleSystem.cs +++ b/Content.Server/Communications/CommunicationsConsoleSystem.cs @@ -16,6 +16,7 @@ using Content.Shared.DeviceNetwork.Components; using Content.Shared.IdentityManagement; using Content.Shared.Popups; using Content.Shared.Screens; +using Content.Shared.Station.Systems; using Robust.Server.GameObjects; using Robust.Shared.Configuration; using Robust.Shared.Prototypes; diff --git a/Content.Server/Connection/ConnectionManager.cs b/Content.Server/Connection/ConnectionManager.cs index 996c7392af..e0641f4c8a 100644 --- a/Content.Server/Connection/ConnectionManager.cs +++ b/Content.Server/Connection/ConnectionManager.cs @@ -64,7 +64,7 @@ namespace Content.Server.Connection [Dependency] private IAdminManager _adminManager = default!; [Dependency] private IEntityManager _entityManager = default!; - private GameTicker? _ticker; + private ServerGameTicker? _ticker; private ISawmill _sawmill = default!; private readonly Dictionary _temporaryBypasses = []; @@ -291,7 +291,7 @@ namespace Content.Server.Connection } } - _ticker ??= _entityManager.SystemOrNull(); + _ticker ??= _entityManager.SystemOrNull(); var wasInGame = _ticker != null && _ticker.PlayerGameStatuses.TryGetValue(userId, out var status) && status == PlayerGameStatus.JoinedGame; diff --git a/Content.Server/Construction/AnchorOnlyOnStationSystem.cs b/Content.Server/Construction/AnchorOnlyOnStationSystem.cs index c66bde4061..dd731c3efb 100644 --- a/Content.Server/Construction/AnchorOnlyOnStationSystem.cs +++ b/Content.Server/Construction/AnchorOnlyOnStationSystem.cs @@ -1,6 +1,6 @@ using System.Linq; -using Content.Server.Station.Systems; using Content.Shared.Construction.Components; +using Content.Shared.Station.Systems; using Robust.Server.GameObjects; namespace Content.Server.Construction; diff --git a/Content.Server/CrewManifest/CrewManifestSystem.cs b/Content.Server/CrewManifest/CrewManifestSystem.cs index 6cdd89d09f..22e96452fd 100644 --- a/Content.Server/CrewManifest/CrewManifestSystem.cs +++ b/Content.Server/CrewManifest/CrewManifestSystem.cs @@ -20,7 +20,7 @@ namespace Content.Server.CrewManifest; public sealed partial class CrewManifestSystem : EntitySystem { - [Dependency] private StationSystem _stationSystem = default!; + [Dependency] private ServerStationSystem _stationSystem = default!; [Dependency] private StationRecordsSystem _recordsSystem = default!; [Dependency] private EuiManager _euiManager = default!; [Dependency] private IConfigurationManager _configManager = default!; diff --git a/Content.Server/CriminalRecords/Systems/CriminalRecordsConsoleSystem.cs b/Content.Server/CriminalRecords/Systems/CriminalRecordsConsoleSystem.cs index 5dc921332c..dc3578cd85 100644 --- a/Content.Server/CriminalRecords/Systems/CriminalRecordsConsoleSystem.cs +++ b/Content.Server/CriminalRecords/Systems/CriminalRecordsConsoleSystem.cs @@ -30,7 +30,7 @@ public sealed partial class CriminalRecordsConsoleSystem : SharedCriminalRecords [Dependency] private PopupSystem _popup = default!; [Dependency] private RadioSystem _radio = default!; [Dependency] private StationRecordsSystem _records = default!; - [Dependency] private StationSystem _station = default!; + [Dependency] private ServerStationSystem _station = default!; [Dependency] private UserInterfaceSystem _ui = default!; [Dependency] private IdentitySystem _identity = default!; diff --git a/Content.Server/CriminalRecords/Systems/CriminalRecordsHackerSystem.cs b/Content.Server/CriminalRecords/Systems/CriminalRecordsHackerSystem.cs index 57c2bc2028..db23c789a1 100644 --- a/Content.Server/CriminalRecords/Systems/CriminalRecordsHackerSystem.cs +++ b/Content.Server/CriminalRecords/Systems/CriminalRecordsHackerSystem.cs @@ -16,7 +16,7 @@ public sealed partial class CriminalRecordsHackerSystem : SharedCriminalRecordsH [Dependency] private ChatSystem _chat = default!; [Dependency] private CriminalRecordsSystem _criminalRecords = default!; [Dependency] private IRobustRandom _random = default!; - [Dependency] private StationSystem _station = default!; + [Dependency] private ServerStationSystem _station = default!; [Dependency] private StationRecordsSystem _records = default!; public override void Initialize() diff --git a/Content.Server/CriminalRecords/Systems/CriminalRecordsSystem.cs b/Content.Server/CriminalRecords/Systems/CriminalRecordsSystem.cs index ec870f4c7e..b97daa0f94 100644 --- a/Content.Server/CriminalRecords/Systems/CriminalRecordsSystem.cs +++ b/Content.Server/CriminalRecords/Systems/CriminalRecordsSystem.cs @@ -22,9 +22,9 @@ namespace Content.Server.CriminalRecords.Systems; /// public sealed partial class CriminalRecordsSystem : SharedCriminalRecordsSystem { - [Dependency] private GameTicker _ticker = default!; + [Dependency] private ServerGameTicker _ticker = default!; [Dependency] private StationRecordsSystem _records = default!; - [Dependency] private StationSystem _station = default!; + [Dependency] private ServerStationSystem _station = default!; [Dependency] private CartridgeLoaderSystem _cartridge = default!; public override void Initialize() diff --git a/Content.Server/Delivery/DeliverySystem.cs b/Content.Server/Delivery/DeliverySystem.cs index a8a06889d8..21aec1a9dc 100644 --- a/Content.Server/Delivery/DeliverySystem.cs +++ b/Content.Server/Delivery/DeliverySystem.cs @@ -25,7 +25,7 @@ public sealed partial class DeliverySystem : SharedDeliverySystem [Dependency] private SharedAppearanceSystem _appearance = default!; [Dependency] private SharedAudioSystem _audio = default!; [Dependency] private StationRecordsSystem _records = default!; - [Dependency] private StationSystem _station = default!; + [Dependency] private ServerStationSystem _station = default!; [Dependency] private FingerprintReaderSystem _fingerprintReader = default!; [Dependency] private LabelSystem _label = default!; [Dependency] private SharedContainerSystem _container = default!; diff --git a/Content.Server/DeviceNetwork/Systems/SingletonDeviceNetServerSystem.cs b/Content.Server/DeviceNetwork/Systems/SingletonDeviceNetServerSystem.cs index 97098c75ad..a303833f38 100644 --- a/Content.Server/DeviceNetwork/Systems/SingletonDeviceNetServerSystem.cs +++ b/Content.Server/DeviceNetwork/Systems/SingletonDeviceNetServerSystem.cs @@ -14,7 +14,7 @@ namespace Content.Server.DeviceNetwork.Systems; public sealed partial class SingletonDeviceNetServerSystem : EntitySystem { [Dependency] private DeviceNetworkSystem _deviceNetworkSystem = default!; - [Dependency] private StationSystem _stationSystem = default!; + [Dependency] private ServerStationSystem _stationSystem = default!; public override void Initialize() { diff --git a/Content.Server/DeviceNetwork/Systems/StationLimitedNetworkSystem.cs b/Content.Server/DeviceNetwork/Systems/StationLimitedNetworkSystem.cs index 7120e452f9..cfbfdc8816 100644 --- a/Content.Server/DeviceNetwork/Systems/StationLimitedNetworkSystem.cs +++ b/Content.Server/DeviceNetwork/Systems/StationLimitedNetworkSystem.cs @@ -11,7 +11,8 @@ namespace Content.Server.DeviceNetwork.Systems [UsedImplicitly] public sealed partial class StationLimitedNetworkSystem : EntitySystem { - [Dependency] private StationSystem _stationSystem = default!; + [Dependency] private ServerStationSystem _stationSystem = default!; + public override void Initialize() { base.Initialize(); diff --git a/Content.Server/Discord/WebhookMessages/VoteWebhooks.cs b/Content.Server/Discord/WebhookMessages/VoteWebhooks.cs index ba41aa4602..19d0d25906 100644 --- a/Content.Server/Discord/WebhookMessages/VoteWebhooks.cs +++ b/Content.Server/Discord/WebhookMessages/VoteWebhooks.cs @@ -39,7 +39,7 @@ public sealed partial class VoteWebhooks : IPostInjectInit fields.Add(newVote); } - var gameTicker = _entSys.GetEntitySystemOrNull(); + var gameTicker = _entSys.GetEntitySystemOrNull(); _sawmill = Logger.GetSawmill("discord"); var runLevel = gameTicker != null ? Loc.GetString($"game-run-level-{gameTicker.RunLevel}") : ""; diff --git a/Content.Server/Entry/EntryPoint.cs b/Content.Server/Entry/EntryPoint.cs index 7900836343..762a65df00 100644 --- a/Content.Server/Entry/EntryPoint.cs +++ b/Content.Server/Entry/EntryPoint.cs @@ -162,7 +162,7 @@ namespace Content.Server.Entry _discordChatLink.Initialize(); _euiManager.Initialize(); _gameMap.Initialize(); - _entSys.GetEntitySystem().PostInitialize(); + _entSys.GetEntitySystem().PostInitialize(); _ban.Initialize(); _connection.PostInit(); _multiServerKick.Initialize(); diff --git a/Content.Server/Fax/FaxSystem.cs b/Content.Server/Fax/FaxSystem.cs index a702fcece0..3f131fb2c5 100644 --- a/Content.Server/Fax/FaxSystem.cs +++ b/Content.Server/Fax/FaxSystem.cs @@ -38,7 +38,6 @@ public sealed partial class FaxSystem : EntitySystem [Dependency] private IAdminManager _adminManager = default!; [Dependency] private ItemSlotsSystem _itemSlotsSystem = default!; [Dependency] private SharedAppearanceSystem _appearanceSystem = default!; - [Dependency] private SharedGameTicker _gameTicker = default!; [Dependency] private PopupSystem _popupSystem = default!; [Dependency] private DeviceNetworkSystem _deviceNetworkSystem = default!; [Dependency] private PaperSystem _paperSystem = default!; diff --git a/Content.Server/FeedbackSystem/FeedbackSystem.cs b/Content.Server/FeedbackSystem/FeedbackSystem.cs index 4c9aae7d64..5bb7648c76 100644 --- a/Content.Server/FeedbackSystem/FeedbackSystem.cs +++ b/Content.Server/FeedbackSystem/FeedbackSystem.cs @@ -8,7 +8,7 @@ namespace Content.Server.FeedbackSystem; public sealed partial class FeedbackSystem : EntitySystem { [Dependency] private ServerFeedbackManager _feedbackManager = null!; - [Dependency] private GameTicker _gameTicker = null!; + [Dependency] private ServerGameTicker _gameTicker = null!; public override void Initialize() { diff --git a/Content.Server/GameTicking/Commands/DelayStartCommand.cs b/Content.Server/GameTicking/Commands/DelayStartCommand.cs index d82d2f0f12..df5f750e87 100644 --- a/Content.Server/GameTicking/Commands/DelayStartCommand.cs +++ b/Content.Server/GameTicking/Commands/DelayStartCommand.cs @@ -1,5 +1,6 @@ using Content.Server.Administration; using Content.Shared.Administration; +using Content.Shared.GameTicking; using Robust.Shared.Console; namespace Content.Server.GameTicking.Commands; @@ -11,7 +12,7 @@ sealed class DelayStartCommand : LocalizedEntityCommands public override void Execute(IConsoleShell shell, string argStr, string[] args) { - var ticker = EntityManager.System(); + var ticker = EntityManager.System(); if (ticker.RunLevel != GameRunLevel.PreRoundLobby) { shell.WriteLine(Loc.GetString("delaystart-preround-only")); diff --git a/Content.Server/GameTicking/Commands/EndRoundCommand.cs b/Content.Server/GameTicking/Commands/EndRoundCommand.cs index 8fa427fdc2..19f8fb6fa9 100644 --- a/Content.Server/GameTicking/Commands/EndRoundCommand.cs +++ b/Content.Server/GameTicking/Commands/EndRoundCommand.cs @@ -1,5 +1,6 @@ using Content.Server.Administration; using Content.Shared.Administration; +using Content.Shared.GameTicking; using Robust.Shared.Console; namespace Content.Server.GameTicking.Commands; @@ -7,7 +8,7 @@ namespace Content.Server.GameTicking.Commands; [AdminCommand(AdminFlags.Round)] public sealed partial class EndRoundCommand : LocalizedEntityCommands { - [Dependency] private GameTicker _gameTicker = default!; + [Dependency] private ServerGameTicker _gameTicker = default!; public override string Command => "endround"; diff --git a/Content.Server/GameTicking/Commands/ForcePresetCommand.cs b/Content.Server/GameTicking/Commands/ForcePresetCommand.cs index a7c38f5a3e..5bcfcba67a 100644 --- a/Content.Server/GameTicking/Commands/ForcePresetCommand.cs +++ b/Content.Server/GameTicking/Commands/ForcePresetCommand.cs @@ -1,7 +1,8 @@ using System.Linq; using Content.Server.Administration; -using Content.Server.GameTicking.Presets; using Content.Shared.Administration; +using Content.Shared.GameTicking; +using Content.Shared.GameTicking.Prototypes; using Robust.Shared.Console; using Robust.Shared.Prototypes; @@ -11,7 +12,7 @@ namespace Content.Server.GameTicking.Commands public sealed partial class ForcePresetCommand : LocalizedEntityCommands { [Dependency] private IPrototypeManager _prototypeManager = default!; - [Dependency] private GameTicker _ticker = default!; + [Dependency] private ServerGameTicker _ticker = default!; public override string Command => "forcepreset"; diff --git a/Content.Server/GameTicking/Commands/GoLobbyCommand.cs b/Content.Server/GameTicking/Commands/GoLobbyCommand.cs index 23d7dc4c8d..58e180e7ad 100644 --- a/Content.Server/GameTicking/Commands/GoLobbyCommand.cs +++ b/Content.Server/GameTicking/Commands/GoLobbyCommand.cs @@ -1,7 +1,7 @@ using Content.Server.Administration; -using Content.Server.GameTicking.Presets; using Content.Shared.Administration; using Content.Shared.CCVar; +using Content.Shared.GameTicking.Prototypes; using Robust.Shared.Configuration; using Robust.Shared.Console; @@ -11,7 +11,7 @@ namespace Content.Server.GameTicking.Commands public sealed partial class GoLobbyCommand : LocalizedEntityCommands { [Dependency] private IConfigurationManager _configManager = default!; - [Dependency] private GameTicker _gameTicker = default!; + [Dependency] private ServerGameTicker _gameTicker = default!; public override string Command => "golobby"; diff --git a/Content.Server/GameTicking/Commands/JoinGameCommand.cs b/Content.Server/GameTicking/Commands/JoinGameCommand.cs index 1148dd4160..20b4dd99f4 100644 --- a/Content.Server/GameTicking/Commands/JoinGameCommand.cs +++ b/Content.Server/GameTicking/Commands/JoinGameCommand.cs @@ -47,8 +47,8 @@ namespace Content.Server.GameTicking.Commands return; } - var ticker = _entManager.System(); - var stationJobs = _entManager.System(); + var ticker = _entManager.System(); + var stationJobs = _entManager.System(); if (ticker.PlayerGameStatuses.TryGetValue(player.UserId, out var status) && status == PlayerGameStatus.JoinedGame) { diff --git a/Content.Server/GameTicking/Commands/ObserveCommand.cs b/Content.Server/GameTicking/Commands/ObserveCommand.cs index 45d911887d..c61d60cdd9 100644 --- a/Content.Server/GameTicking/Commands/ObserveCommand.cs +++ b/Content.Server/GameTicking/Commands/ObserveCommand.cs @@ -23,7 +23,7 @@ namespace Content.Server.GameTicking.Commands return; } - var ticker = _e.System(); + var ticker = _e.System(); if (ticker.RunLevel == GameRunLevel.PreRoundLobby) { diff --git a/Content.Server/GameTicking/Commands/RespawnCommand.cs b/Content.Server/GameTicking/Commands/RespawnCommand.cs index 479549bd5f..f0d5caf152 100644 --- a/Content.Server/GameTicking/Commands/RespawnCommand.cs +++ b/Content.Server/GameTicking/Commands/RespawnCommand.cs @@ -12,7 +12,7 @@ namespace Content.Server.GameTicking.Commands { [Dependency] private IPlayerManager _player = default!; [Dependency] private IPlayerLocator _locator = default!; - [Dependency] private GameTicker _gameTicker = default!; + [Dependency] private ServerGameTicker _gameTicker = default!; [Dependency] private MindSystem _mind = default!; public override string Command => "respawn"; diff --git a/Content.Server/GameTicking/Commands/RestartRoundCommand.cs b/Content.Server/GameTicking/Commands/RestartRoundCommand.cs index cd9c77ce0c..c125e6fa32 100644 --- a/Content.Server/GameTicking/Commands/RestartRoundCommand.cs +++ b/Content.Server/GameTicking/Commands/RestartRoundCommand.cs @@ -1,6 +1,7 @@ using Content.Server.Administration; using Content.Server.RoundEnd; using Content.Shared.Administration; +using Content.Shared.GameTicking; using Robust.Shared.Console; namespace Content.Server.GameTicking.Commands; @@ -8,7 +9,7 @@ namespace Content.Server.GameTicking.Commands; [AdminCommand(AdminFlags.Round)] public sealed partial class RestartRoundCommand : LocalizedEntityCommands { - [Dependency] private GameTicker _gameTicker = default!; + [Dependency] private ServerGameTicker _gameTicker = default!; [Dependency] private RoundEndSystem _roundEndSystem = default!; public override string Command => "restartround"; @@ -28,7 +29,7 @@ public sealed partial class RestartRoundCommand : LocalizedEntityCommands [AdminCommand(AdminFlags.Round)] public sealed partial class RestartRoundNowCommand : LocalizedEntityCommands { - [Dependency] private GameTicker _gameTicker = default!; + [Dependency] private ServerGameTicker _gameTicker = default!; public override string Command => "restartroundnow"; diff --git a/Content.Server/GameTicking/Commands/SetGamePresetCommand.cs b/Content.Server/GameTicking/Commands/SetGamePresetCommand.cs index a577867ec4..93d885699b 100644 --- a/Content.Server/GameTicking/Commands/SetGamePresetCommand.cs +++ b/Content.Server/GameTicking/Commands/SetGamePresetCommand.cs @@ -1,7 +1,6 @@ -using System.Linq; -using Content.Server.Administration; -using Content.Server.GameTicking.Presets; +using Content.Server.Administration; using Content.Shared.Administration; +using Content.Shared.GameTicking.Prototypes; using Robust.Shared.Console; namespace Content.Server.GameTicking.Commands @@ -23,7 +22,7 @@ namespace Content.Server.GameTicking.Commands return; } - var ticker = _entity.System(); + var ticker = _entity.System(); if (!ticker.TryFindGamePreset(args[0], out var preset)) { diff --git a/Content.Server/GameTicking/Commands/StartRoundCommand.cs b/Content.Server/GameTicking/Commands/StartRoundCommand.cs index 90d4ffa35a..52b888df84 100644 --- a/Content.Server/GameTicking/Commands/StartRoundCommand.cs +++ b/Content.Server/GameTicking/Commands/StartRoundCommand.cs @@ -1,5 +1,6 @@ using Content.Server.Administration; using Content.Shared.Administration; +using Content.Shared.GameTicking; using Robust.Shared.Console; namespace Content.Server.GameTicking.Commands; @@ -7,7 +8,7 @@ namespace Content.Server.GameTicking.Commands; [AdminCommand(AdminFlags.Round)] public sealed partial class StartRoundCommand : LocalizedEntityCommands { - [Dependency] private GameTicker _gameTicker = default!; + [Dependency] private ServerGameTicker _gameTicker = default!; public override string Command => "startround"; diff --git a/Content.Server/GameTicking/Commands/ToggleReadyCommand.cs b/Content.Server/GameTicking/Commands/ToggleReadyCommand.cs index b990e92ca7..16361c4930 100644 --- a/Content.Server/GameTicking/Commands/ToggleReadyCommand.cs +++ b/Content.Server/GameTicking/Commands/ToggleReadyCommand.cs @@ -1,4 +1,5 @@ using Content.Shared.Administration; +using Content.Shared.GameTicking; using Robust.Shared.Console; namespace Content.Server.GameTicking.Commands; @@ -6,7 +7,7 @@ namespace Content.Server.GameTicking.Commands; [AnyCommand] public sealed partial class ToggleReadyCommand : LocalizedEntityCommands { - [Dependency] private GameTicker _gameTicker = default!; + [Dependency] private ServerGameTicker _gameTicker = default!; public override string Command => "toggleready"; diff --git a/Content.Server/GameTicking/GameTicker.CVars.cs b/Content.Server/GameTicking/GameTicker.CVars.cs deleted file mode 100644 index c247c66471..0000000000 --- a/Content.Server/GameTicking/GameTicker.CVars.cs +++ /dev/null @@ -1,82 +0,0 @@ -using Content.Server.Discord; -using Content.Shared.CCVar; -using Content.Shared.GameTicking; - -namespace Content.Server.GameTicking -{ - public sealed partial class GameTicker - { - [ViewVariables] - public bool LobbyEnabled { get; private set; } - - [ViewVariables] - public bool DummyTicker { get; private set; } = false; - - [ViewVariables] - public TimeSpan LobbyDuration { get; private set; } = TimeSpan.Zero; - - [ViewVariables] - public bool DisallowLateJoin { get; private set; } = false; - - [ViewVariables] - public string? ServerName { get; private set; } - - [ViewVariables] - private string? DiscordRoundEndRole { get; set; } - - private WebhookIdentifier? _webhookIdentifier; - - [ViewVariables] - private string? RoundEndSoundCollection { get; set; } - -#if EXCEPTION_TOLERANCE - [ViewVariables] - public int RoundStartFailShutdownCount { get; private set; } = 0; -#endif - - private void InitializeCVars() - { - Subs.CVar(_cfg, CCVars.GameLobbyEnabled, value => - { - LobbyEnabled = value; - foreach (var (userId, status) in _playerGameStatuses) - { - if (status == PlayerGameStatus.JoinedGame) - continue; - _playerGameStatuses[userId] = - LobbyEnabled ? PlayerGameStatus.NotReadyToPlay : PlayerGameStatus.ReadyToPlay; - } - }, true); - Subs.CVar(_cfg, CCVars.GameDummyTicker, value => DummyTicker = value, true); - Subs.CVar(_cfg, CCVars.GameLobbyDuration, value => LobbyDuration = TimeSpan.FromSeconds(value), true); - Subs.CVar(_cfg, CCVars.GameDisallowLateJoins, - value => { DisallowLateJoin = value; UpdateLateJoinStatus(); }, true); - Subs.CVar(_cfg, CCVars.AdminLogsServerName, value => - { - // TODO why tf is the server name on admin logs - ServerName = value; - }, true); - Subs.CVar(_cfg, CCVars.DiscordRoundUpdateWebhook, value => - { - if (!string.IsNullOrWhiteSpace(value)) - { - _discord.GetWebhook(value, data => _webhookIdentifier = data.ToIdentifier()); - } - }, true); - Subs.CVar(_cfg, CCVars.DiscordRoundEndRoleWebhook, value => - { - DiscordRoundEndRole = value; - - if (value == string.Empty) - { - DiscordRoundEndRole = null; - } - }, true); - Subs.CVar(_cfg, CCVars.RoundEndSoundCollection, value => RoundEndSoundCollection = value, true); -#if EXCEPTION_TOLERANCE - Subs.CVar(_cfg, CCVars.RoundStartFailShutdownCount, value => RoundStartFailShutdownCount = value, true); -#endif - Subs.CVar(_cfg, CCVars.GameTickerIgnoredPresets, value => _ignoredRules = value.Split(",")); - } - } -} diff --git a/Content.Server/GameTicking/GameTicker.GameRule.cs b/Content.Server/GameTicking/GameTicker.GameRule.cs deleted file mode 100644 index 5c2d93078c..0000000000 --- a/Content.Server/GameTicking/GameTicker.GameRule.cs +++ /dev/null @@ -1,573 +0,0 @@ -using System.Linq; -using System.Text; -using Content.Server.Administration; -using Content.Server.GameTicking.Rules.Components; -using Content.Shared.Administration; -using Content.Shared.CCVar; -using Content.Shared.Database; -using Content.Shared.GameTicking.Components; -using Content.Shared.Prototypes; -using Content.Shared.Whitelist; -using JetBrains.Annotations; -using Robust.Shared.Console; -using Robust.Shared.Map; -using Robust.Shared.Prototypes; - -namespace Content.Server.GameTicking; - -public sealed partial class GameTicker -{ - /// - /// Designated game rule that spawns a fake antagonist to discourage metagaming. - /// Has to be a string since cannot be a const. - /// - public const string DummyGameRule = "DummyNonAntag"; - - [ViewVariables] private readonly List<(TimeSpan, string)> _allPreviousGameRules = new(); - - /// - /// List of ignored game rules, these rules won't be spawned by normal means. - /// This list is populated by - /// - [ViewVariables] private string[] _ignoredRules = []; - - [Dependency] private EntityWhitelistSystem _whitelist = null!; - - /// - /// A list storing the start times of all game rules that have been started this round. - /// Game rules can be started and stopped at any time, including midround. - /// - public override IReadOnlyList<(TimeSpan, string)> AllPreviousGameRules => _allPreviousGameRules; - - private void InitializeGameRules() - { - // Add game rule command. - _consoleHost.RegisterCommand("addgamerule", - string.Empty, - "addgamerule ", - AddGameRuleCommand, - AddGameRuleCompletions); - - // End game rule command. - _consoleHost.RegisterCommand("endgamerule", - string.Empty, - "endgamerule ", - EndGameRuleCommand, - EndGameRuleCompletions); - - // Clear game rules command. - _consoleHost.RegisterCommand("cleargamerules", - string.Empty, - "cleargamerules", - ClearGameRulesCommand); - - // List game rules command. - var localizedHelp = Loc.GetString("listgamerules-command-help"); - - _consoleHost.RegisterCommand("listgamerules", - string.Empty, - $"listgamerules - {localizedHelp}", - ListGameRuleCommand); - - SubscribeLocalEvent(OnStartAttempt); - } - - private void ShutdownGameRules() - { - _consoleHost.UnregisterCommand("addgamerule"); - _consoleHost.UnregisterCommand("endgamerule"); - _consoleHost.UnregisterCommand("cleargamerules"); - _consoleHost.UnregisterCommand("listgamerules"); - } - - /// - /// Adds a game rule to the list, but does not - /// start it yet, instead waiting until the rule is actually started by other code (usually roundstart) - /// - /// The entity for the added gamerule - public EntityUid AddGameRule([ForbidLiteral] string ruleId) - { - var ruleEntity = Spawn(ruleId, MapCoordinates.Nullspace); - _sawmill.Info($"Added game rule {ToPrettyString(ruleEntity)}"); - _adminLogger.Add(LogType.EventStarted, $"Added game rule {ToPrettyString(ruleEntity)}"); - var str = Loc.GetString("station-event-system-run-event", ("eventName", ToPrettyString(ruleEntity))); -#if DEBUG - _chatManager.SendAdminAlert(str); -#else - if (RunLevel == GameRunLevel.InRound) // avoids telling admins the round type before it starts so that can be handled elsewhere. - { - _chatManager.SendAdminAlert(str); - } -#endif - Log.Info(str); - - var ev = new GameRuleAddedEvent(ruleEntity, ruleId); - RaiseLocalEvent(ruleEntity, ref ev, true); - - var currentTime = RunLevel == GameRunLevel.PreRoundLobby ? TimeSpan.Zero : RoundDuration(); - if (!HasComp(ruleEntity) && !HasComp(ruleEntity)) - { - _allPreviousGameRules.Add((currentTime, ruleId + " (Pending)")); - } - - return ruleEntity; - } - - /// - /// Tries to add a gamerule to the current round, but ignores any - /// - /// Game rule entity that we are trying to spawn - /// The entityUid of the spawned game rule, if it wasn't ignored. - public EntityUid? AddFilteredGameRule([ForbidLiteral] EntProtoId gameRule) - { - if (IsIgnored(gameRule)) - return null; - - return AddGameRule(gameRule); - } - - /// - /// Checks if this GameRule should be ignored before a spawning attempt. - /// - /// GameRule we are trying to validate - /// True if the gamerule should be ignored and not spawned. - public bool IsIgnored([ForbidLiteral] EntProtoId gameRule) - { - return _ignoredRules.Contains(gameRule); - } - - /// - /// Game rules can be 'started' separately from being added. 'Starting' them usually - /// happens at round start while they can be added and removed before then. - /// - public bool StartGameRule([ForbidLiteral] string ruleId) - { - return StartGameRule(ruleId, out _); - } - - /// - /// Game rules can be 'started' separately from being added. 'Starting' them usually - /// happens at round start while they can be added and removed before then. - /// - public bool StartGameRule([ForbidLiteral] string ruleId, out EntityUid ruleEntity) - { - ruleEntity = AddGameRule(ruleId); - return StartGameRule(ruleEntity); - } - - /// - /// Game rules can be 'started' separately from being added. 'Starting' them usually - /// happens at round start while they can be added and removed before then. - /// - public bool StartGameRule(EntityUid ruleEntity, GameRuleComponent? ruleData = null) - { - if (!Resolve(ruleEntity, ref ruleData)) - ruleData ??= EnsureComp(ruleEntity); - - // can't start an already active rule - if (HasComp(ruleEntity) || HasComp(ruleEntity)) - return false; - - if (MetaData(ruleEntity).EntityPrototype?.ID is not { } id) // you really fucked up - return false; - - // If we already have it, then we just skip the delay as it has already happened. - if (!RemComp(ruleEntity) && ruleData.Delay != null) - { - var delayTime = TimeSpan.FromSeconds(ruleData.Delay.Value.Next(_robustRandom)); - - if (delayTime > TimeSpan.Zero) - { - _sawmill.Info($"Queued start for game rule {ToPrettyString(ruleEntity)} with delay {delayTime}"); - _adminLogger.Add(LogType.EventStarted, - $"Queued start for game rule {ToPrettyString(ruleEntity)} with delay {delayTime}"); - - var delayed = EnsureComp(ruleEntity); - delayed.RuleStartTime = _gameTiming.CurTime + (delayTime); - return true; - } - } - - var currentTime = RunLevel == GameRunLevel.PreRoundLobby ? TimeSpan.Zero : RoundDuration(); - - // Remove the first occurrence of the pending entry before adding the started entry - var pendingRuleIndex = _allPreviousGameRules.FindIndex(rule => rule.Item2 == id + " (Pending)"); - if (pendingRuleIndex >= 0) - { - _allPreviousGameRules.RemoveAt(pendingRuleIndex); - } - - if (!HasComp(ruleEntity) && !HasComp(ruleEntity)) - { - _allPreviousGameRules.Add((currentTime, id)); - } - - _sawmill.Info($"Started game rule {ToPrettyString(ruleEntity)}"); - _adminLogger.Add(LogType.EventStarted, $"Started game rule {ToPrettyString(ruleEntity)}"); - - EnsureComp(ruleEntity); - ruleData.ActivatedAt = _gameTiming.CurTime; - - var ev = new GameRuleStartedEvent(ruleEntity, id); - RaiseLocalEvent(ruleEntity, ref ev, true); - return true; - } - - /// - /// Ends a game rule. - /// - [PublicAPI] - public bool EndGameRule(EntityUid ruleEntity, GameRuleComponent? ruleData = null) - { - if (!Resolve(ruleEntity, ref ruleData)) - return false; - - // don't end it multiple times - if (HasComp(ruleEntity)) - return false; - - if (MetaData(ruleEntity).EntityPrototype?.ID is not { } id) // you really fucked up - return false; - - RemComp(ruleEntity); - EnsureComp(ruleEntity); - - _sawmill.Info($"Ended game rule {ToPrettyString(ruleEntity)}"); - _adminLogger.Add(LogType.EventStopped, $"Ended game rule {ToPrettyString(ruleEntity)}"); - - var ev = new GameRuleEndedEvent(ruleEntity, id); - RaiseLocalEvent(ruleEntity, ref ev, true); - return true; - } - - /// - /// Returns true if a game rule with the given component has been added. - /// - public bool IsGameRuleAdded() - where T : IComponent - { - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out _, out _)) - { - if (HasComp(uid)) - continue; - - return true; - } - - return false; - } - - public bool IsGameRuleAdded(EntityUid ruleEntity, GameRuleComponent? component = null) - { - return Resolve(ruleEntity, ref component) && !HasComp(ruleEntity); - } - - public bool IsGameRuleAdded([ForbidLiteral] string rule) - { - foreach (var ruleEntity in GetAddedGameRules()) - { - if (MetaData(ruleEntity).EntityPrototype?.ID == rule) - return true; - } - - return false; - } - - /// - /// Returns true if a game rule that passes the whitelist and blacklist has been added. - /// - /// whitelist for the game rules - /// blacklist for the game rules - public bool IsGameRuleAdded(EntityWhitelist? ruleWhitelist, EntityWhitelist? ruleBlacklist = null) - { - foreach (var ruleEntity in GetAddedGameRules()) - { - if (_whitelist.CheckBoth(ruleEntity, ruleBlacklist, ruleWhitelist)) - return true; - } - - return false; - } - - /// - /// Returns true if a game rule with the given component is active.. - /// - public bool IsGameRuleActive() - where T : IComponent - { - var query = EntityQueryEnumerator(); - // out, damned underscore!!! - while (query.MoveNext(out _, out _, out _, out _)) - { - return true; - } - - return false; - } - - public bool IsGameRuleActive(EntityUid ruleEntity, GameRuleComponent? component = null) - { - return Resolve(ruleEntity, ref component) && HasComp(ruleEntity); - } - - public bool IsGameRuleActive([ForbidLiteral] string rule) - { - foreach (var ruleEntity in GetActiveGameRules()) - { - if (MetaData(ruleEntity).EntityPrototype?.ID == rule) - return true; - } - - return false; - } - - /// - /// Returns true if a game rule that passes the whitelist and blacklist is active. - /// - /// whitelist for the game rules - /// blacklist for the game rules - public bool IsGameRuleActive(EntityWhitelist? ruleWhitelist, EntityWhitelist? ruleBlacklist = null) - { - foreach (var ruleEntity in GetActiveGameRules()) - { - if (_whitelist.CheckBoth(ruleEntity, ruleBlacklist, ruleWhitelist)) - return true; - } - - return false; - } - - public void ClearGameRules() - { - foreach (var rule in GetAddedGameRules()) - { - EndGameRule(rule); - } - } - - /// - /// Gets all the gamerule entities that have been added. - /// - public IEnumerable GetAddedGameRules() - { - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var ruleData)) - { - if (IsGameRuleAdded(uid, ruleData)) - yield return uid; - } - } - - /// - /// Gets all the gamerule entities with {T} component that have been added. - /// - public IEnumerable> GetAddedGameRules() where T : Component - { - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var comp, out var ruleData)) - { - if (IsGameRuleAdded(uid, ruleData)) - yield return (uid, comp); - } - } - - - /// - /// Gets all the gamerule entities which are currently active. - /// - public IEnumerable GetActiveGameRules() - { - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out _, out _)) - { - yield return uid; - } - } - - /// - /// Gets all the gamerule entities with {T} component that are currently active. - /// - public IEnumerable> GetActiveGameRules() where T : Component - { - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var comp, out _, out _)) - { - yield return (uid, comp); - } - } - - /// - /// Gets all gamerule prototypes - /// - public IEnumerable GetAllGameRulePrototypes() - { - foreach (var proto in ProtoMan.EnumeratePrototypes()) - { - if (proto.Abstract) - continue; - - if (proto.HasComponent()) - yield return proto; - } - } - - private void UpdateGameRules() - { - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var delay, out var rule)) - { - if (_gameTiming.CurTime < delay.RuleStartTime) - continue; - - StartGameRule(uid, rule); - } - } - - private void OnStartAttempt(RoundStartAttemptEvent args) - { - if (args.Forced || args.Cancelled) - return; - - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var gameRule)) - { - var minPlayers = gameRule.MinPlayers; - var name = ToPrettyString(uid); - - if (args.Players.Length >= minPlayers) - continue; - - if (gameRule.CancelPresetOnTooFewPlayers) - { - _chatManager.SendAdminAnnouncement(Loc.GetString("preset-not-enough-ready-players", - ("readyPlayersCount", args.Players.Length), - ("minimumPlayers", minPlayers), - ("presetName", name))); - args.Cancel(); - //TODO remove this once announcements are logged - Log.Info($"Rule '{name}' requires {minPlayers} players, but only {args.Players.Length} are ready."); - } - else - { - EndGameRule(uid, gameRule); - } - } - } - - #region Command Implementations - - [AdminCommand(AdminFlags.Fun)] - private void AddGameRuleCommand(IConsoleShell shell, string argstr, string[] args) - { - if (args.Length == 0) - return; - - foreach (var rule in args) - { - if (!ProtoMan.HasIndex(rule)) - { - shell.WriteError($"Invalid game rule {rule} was skipped."); - - continue; - } - - if (shell.Player != null) - { - _adminLogger.Add(LogType.EventStarted, $"{shell.Player} tried to add game rule [{rule}] via command"); - _chatManager.SendAdminAnnouncement(Loc.GetString("add-gamerule-admin", ("rule", rule), ("admin", shell.Player))); - } - else - { - _adminLogger.Add(LogType.EventStarted, $"Unknown tried to add game rule [{rule}] via command"); - } - var ent = AddGameRule(rule); - - // Start rule if we're already in the middle of a round - if(RunLevel == GameRunLevel.InRound) - StartGameRule(ent); - - } - } - - private CompletionResult AddGameRuleCompletions(IConsoleShell shell, string[] args) - { - return CompletionResult.FromHintOptions(GetAllGameRulePrototypes().Select(p => p.ID), ""); - } - - [AdminCommand(AdminFlags.Fun)] - private void EndGameRuleCommand(IConsoleShell shell, string argstr, string[] args) - { - if (args.Length == 0) - return; - - foreach (var rule in args) - { - if (!NetEntity.TryParse(rule, out var ruleEntNet) || !TryGetEntity(ruleEntNet, out var ruleEnt)) - continue; - if (shell.Player != null) - { - _adminLogger.Add(LogType.EventStopped, $"{shell.Player} tried to end game rule [{rule}] via command"); - } - else - { - _adminLogger.Add(LogType.EventStopped, $"Unknown tried to end game rule [{rule}] via command"); - } - - EndGameRule(ruleEnt.Value); - } - } - - private CompletionResult EndGameRuleCompletions(IConsoleShell shell, string[] args) - { - var opts = GetAddedGameRules().Select(ent => new CompletionOption(ent.ToString(), ToPrettyString(ent))).ToList(); - return CompletionResult.FromHintOptions(opts, ""); - } - - [AdminCommand(AdminFlags.Fun)] - private void ClearGameRulesCommand(IConsoleShell shell, string argstr, string[] args) - { - ClearGameRules(); - } - - [AdminCommand(AdminFlags.Admin)] - private void ListGameRuleCommand(IConsoleShell shell, string argstr, string[] args) - { - _sawmill.Info($"{shell.Player} tried to get list of game rules via command"); - _adminLogger.Add(LogType.Action, $"{shell.Player} tried to get list of game rules via command"); - var message = GetGameRulesListMessage(false); - shell.WriteLine(message); - } - private string GetGameRulesListMessage(bool forChatWindow) - { - if (_allPreviousGameRules.Count > 0) - { - var sortedRules = _allPreviousGameRules.OrderBy(rule => rule.Item1).ToList(); - var message = new StringBuilder(); - message.AppendLine(); - - if (!forChatWindow) - { - var header = Loc.GetString("list-gamerule-admin-header"); - message.AppendLine(); - message.AppendLine(header); - message.AppendLine("|------------|------------------"); - } - - foreach (var (time, rule) in sortedRules) - { - var formattedTime = time.ToString(@"hh\:mm\:ss"); - message.AppendLine($"| {formattedTime,-10} | {rule,-16} "); - } - - return message.ToString().TrimEnd('\n'); - } - else - { - return Loc.GetString("list-gamerule-admin-no-rules"); - - } - } - - #endregion -} diff --git a/Content.Server/GameTicking/GameTicker.Lobby.cs b/Content.Server/GameTicking/GameTicker.Lobby.cs deleted file mode 100644 index 6be7e3abca..0000000000 --- a/Content.Server/GameTicking/GameTicker.Lobby.cs +++ /dev/null @@ -1,188 +0,0 @@ -using System.Linq; -using Content.Shared.GameTicking; -using Content.Server.Station.Components; -using Robust.Shared.Network; -using Robust.Shared.Player; -using System.Text; - -namespace Content.Server.GameTicking -{ - public sealed partial class GameTicker - { - [ViewVariables] - private readonly Dictionary _playerGameStatuses = new(); - - [ViewVariables] - private TimeSpan _roundStartTime; - - /// - /// How long before RoundStartTime do we load maps. - /// - [ViewVariables] - public TimeSpan RoundPreloadTime { get; } = TimeSpan.FromSeconds(15); - - [ViewVariables] - private TimeSpan _pauseTime; - - [ViewVariables] - public new bool Paused { get; set; } - - [ViewVariables] - private bool _roundStartCountdownHasNotStartedYetDueToNoPlayers; - - /// - /// The game status of a players user Id. May contain disconnected players - /// - public IReadOnlyDictionary PlayerGameStatuses => _playerGameStatuses; - - public void UpdateInfoText() - { - RaiseNetworkEvent(GetInfoMsg(), Filter.Empty().AddPlayers(_playerManager.NetworkedSessions)); - } - - private string GetInfoText() - { - var preset = CurrentPreset ?? Preset; - if (preset == null) - { - return string.Empty; - } - - var playerCount = $"{_playerManager.PlayerCount}"; - var readyCount = _playerGameStatuses.Values.Count(x => x == PlayerGameStatus.ReadyToPlay); - - var stationNames = new StringBuilder(); - var query = - EntityQueryEnumerator(); - - var foundOne = false; - - while (query.MoveNext(out _, out _, out var meta)) - { - foundOne = true; - if (stationNames.Length > 0) - stationNames.Append('\n'); - - stationNames.Append(meta.EntityName); - } - - if (!foundOne) - { - stationNames.Append(_gameMapManager.GetSelectedMap()?.MapName ?? - Loc.GetString("game-ticker-no-map-selected")); - } - - var gmTitle = (Decoy == null) ? Loc.GetString(preset.ModeTitle) : Loc.GetString(Decoy.ModeTitle); - var desc = (Decoy == null) ? Loc.GetString(preset.Description) : Loc.GetString(Decoy.Description); - return Loc.GetString( - RunLevel == GameRunLevel.PreRoundLobby - ? "game-ticker-get-info-preround-text" - : "game-ticker-get-info-text", - ("roundId", RoundId), - ("playerCount", playerCount), - ("readyCount", readyCount), - ("mapName", stationNames.ToString()), - ("gmTitle", gmTitle), - ("desc", desc)); - } - - private TickerConnectionStatusEvent GetConnectionStatusMsg() - { - return new TickerConnectionStatusEvent(RoundStartTimeSpan); - } - - private TickerLobbyStatusEvent GetStatusMsg(ICommonSession session) - { - _playerGameStatuses.TryGetValue(session.UserId, out var status); - return new TickerLobbyStatusEvent(RunLevel != GameRunLevel.PreRoundLobby, LobbyBackground, status == PlayerGameStatus.ReadyToPlay, _roundStartTime, RoundPreloadTime, RoundStartTimeSpan, Paused); - } - - private void SendStatusToAll() - { - foreach (var player in _playerManager.Sessions) - { - RaiseNetworkEvent(GetStatusMsg(player), player.Channel); - } - } - - private TickerLobbyInfoEvent GetInfoMsg() - { - return new(GetInfoText()); - } - - private void UpdateLateJoinStatus() - { - RaiseNetworkEvent(new TickerLateJoinStatusEvent(DisallowLateJoin)); - } - - public bool PauseStart(bool pause = true) - { - if (Paused == pause) - { - return false; - } - - Paused = pause; - - if (pause) - { - _pauseTime = _gameTiming.CurTime; - } - else if (_pauseTime != default) - { - _roundStartTime += _gameTiming.CurTime - _pauseTime; - } - - RaiseNetworkEvent(new TickerLobbyCountdownEvent(_roundStartTime, Paused)); - - _chatManager.DispatchServerAnnouncement(Loc.GetString(Paused - ? "game-ticker-pause-start" - : "game-ticker-pause-start-resumed")); - - return true; - } - - public bool TogglePause() - { - PauseStart(!Paused); - return Paused; - } - - public void ToggleReadyAll(bool ready) - { - var status = ready ? PlayerGameStatus.ReadyToPlay : PlayerGameStatus.NotReadyToPlay; - foreach (var playerUserId in _playerGameStatuses.Keys) - { - _playerGameStatuses[playerUserId] = status; - if (!_playerManager.TryGetSessionById(playerUserId, out var playerSession)) - continue; - RaiseNetworkEvent(GetStatusMsg(playerSession), playerSession.Channel); - } - } - - public void ToggleReady(ICommonSession player, bool ready) - { - if (!_playerGameStatuses.ContainsKey(player.UserId)) - return; - - if (!_userDb.IsLoadComplete(player)) - return; - - if (RunLevel != GameRunLevel.PreRoundLobby) - { - return; - } - - _playerGameStatuses[player.UserId] = ready ? PlayerGameStatus.ReadyToPlay : PlayerGameStatus.NotReadyToPlay; - RaiseNetworkEvent(GetStatusMsg(player), player.Channel); - // update server info to reflect new ready count - UpdateInfoText(); - } - - public bool UserHasJoinedGame(ICommonSession session) - => UserHasJoinedGame(session.UserId); - - public bool UserHasJoinedGame(NetUserId userId) - => PlayerGameStatuses.TryGetValue(userId, out var status) && status == PlayerGameStatus.JoinedGame; - } -} diff --git a/Content.Server/GameTicking/GameTicker.RoundFlow.cs b/Content.Server/GameTicking/GameTicker.RoundFlow.cs deleted file mode 100644 index e6ae3634c1..0000000000 --- a/Content.Server/GameTicking/GameTicker.RoundFlow.cs +++ /dev/null @@ -1,998 +0,0 @@ -using System.Linq; -using System.Numerics; -using Content.Server.Announcements; -using Content.Server.Discord; -using Content.Server.GameTicking.Events; -using Content.Server.Maps; -using Content.Server.Roles; -using Content.Shared.CCVar; -using Content.Shared.Database; -using Content.Shared.GameTicking; -using Content.Shared.Maps; -using Content.Shared.Mind; -using Content.Shared.Players; -using Content.Shared.Preferences; -using Content.Shared.Roles.Components; -using JetBrains.Annotations; -using Prometheus; -using Robust.Shared.Asynchronous; -using Robust.Shared.Audio; -using Robust.Shared.EntitySerialization; -using Robust.Shared.EntitySerialization.Systems; -using Robust.Shared.Map; -using Robust.Shared.Network; -using Robust.Shared.Player; -using Robust.Shared.Random; -using Robust.Shared.Utility; - -namespace Content.Server.GameTicking -{ - public sealed partial class GameTicker - { - [Dependency] private DiscordWebhook _discord = default!; - [Dependency] private RoleSystem _role = default!; - [Dependency] private ITaskManager _taskManager = default!; - - private static readonly Counter RoundNumberMetric = Metrics.CreateCounter( - "ss14_round_number", - "Round number."); - - private static readonly Gauge RoundLengthMetric = Metrics.CreateGauge( - "ss14_round_length", - "Round length in seconds."); - -#if EXCEPTION_TOLERANCE - [ViewVariables] - private int _roundStartFailCount = 0; -#endif - - [ViewVariables] - private bool _startingRound; - - [ViewVariables] - private GameRunLevel _runLevel; - - private RoundEndMessageEvent.RoundEndPlayerInfo[]? _replayRoundPlayerInfo; - - private string? _replayRoundText; - - [ViewVariables] - public GameRunLevel RunLevel - { - get => _runLevel; - private set - { - // Game admins can run `restartroundnow` while still in-lobby, which'd break things with this check. - // if (_runLevel == value) return; - - var old = _runLevel; - _runLevel = value; - - RaiseLocalEvent(new GameRunLevelChangedEvent(old, value)); - } - } - - /// - /// Returns true if the round's map is eligible to be updated. - /// - /// - public bool CanUpdateMap() - { - return RunLevel == GameRunLevel.PreRoundLobby && - _roundStartTime - RoundPreloadTime > _gameTiming.CurTime; - } - - /// - /// Loads all the maps for the given round. - /// - /// - /// Must be called before the runlevel is set to InRound. - /// - private void LoadMaps() - { - if (_map.MapExists(DefaultMap)) - return; - - AddGamePresetRules(); - - var maps = new List(); - - // the map might have been force-set by something - // (i.e. votemap or forcemap) - var mainStationMap = _gameMapManager.GetSelectedMap(); - if (mainStationMap == null) - { - // otherwise set the map using the config rules - _gameMapManager.SelectMapByConfigRules(); - mainStationMap = _gameMapManager.GetSelectedMap(); - } - - // Small chance the above could return no map. - // ideally SelectMapByConfigRules will always find a valid map - if (mainStationMap != null) - { - maps.Add(mainStationMap); - } - else - { - throw new Exception("invalid config; couldn't select a valid station map!"); - } - - if (CurrentPreset?.MapPool != null && - ProtoMan.TryIndex(CurrentPreset.MapPool, out var pool) && - !pool.Maps.Contains(mainStationMap.ID)) - { - var msg = Loc.GetString("game-ticker-start-round-invalid-map", - ("map", mainStationMap.MapName), - ("mode", Loc.GetString(CurrentPreset.ModeTitle))); - Log.Debug(msg); - SendServerMessage(msg); - } - - // Let game rules dictate what maps we should load. - RaiseLocalEvent(new LoadingMapsEvent(maps)); - - if (maps.Count == 0) - { - _map.CreateMap(out var mapId, runMapInit: false); - DefaultMap = mapId; - return; - } - - for (var i = 0; i < maps.Count; i++) - { - LoadGameMap(maps[i], out var mapId); - DebugTools.Assert(!_map.IsInitialized(mapId)); - - if (i == 0) - DefaultMap = mapId; - } - } - - public PreGameMapLoad RaisePreLoad( - GameMapPrototype proto, - DeserializationOptions? opts = null, - Vector2? offset = null, - Angle? rot = null) - { - offset ??= proto.MaxRandomOffset != 0f - ? _robustRandom.NextVector2(proto.MaxRandomOffset) - : Vector2.Zero; - - rot ??= proto.RandomRotation - ? _robustRandom.NextAngle() - : Angle.Zero; - - opts ??= DeserializationOptions.Default; - var ev = new PreGameMapLoad(proto, opts.Value, offset.Value, rot.Value); - RaiseLocalEvent(ev); - return ev; - } - - /// - /// Loads a new map, allowing systems interested in it to handle loading events. - /// In the base game, this is required to be used if you want to load a station. - /// This does not initialze maps, unles specified via the . - /// - /// - /// This is basically a wrapper around a method that auto generate - /// some using information in a prototype, and raise some events to allow content - /// to modify the options and react to the map creation. - /// - /// Game map prototype to load in. - /// The id of the map that was loaded. - /// Entity loading options, including whether the maps should be initialized. - /// Name to assign to the loaded station. - /// All loaded entities and grids. - public IReadOnlyList LoadGameMap( - GameMapPrototype proto, - out MapId mapId, - DeserializationOptions? options = null, - string? stationName = null, - Vector2? offset = null, - Angle? rot = null) - { - var ev = RaisePreLoad(proto, options, offset, rot); - - if (ev.GameMap.IsGrid) - { - var mapUid = _map.CreateMap(out mapId, runMapInit: options?.InitializeMaps ?? false); - if (!_loader.TryLoadGrid(mapId, - ev.GameMap.MapPath, - out var grid, - ev.Options, - ev.Offset, - ev.Rotation)) - { - throw new Exception($"Failed to load game-map grid {ev.GameMap.ID}"); - } - - _metaData.SetEntityName(mapUid, proto.MapName); - var g = new List { grid.Value.Owner }; - RaiseLocalEvent(new PostGameMapLoad(proto, mapId, g, stationName)); - return g; - } - - if (!_loader.TryLoadMap(ev.GameMap.MapPath, - out var map, - out var grids, - ev.Options, - ev.Offset, - ev.Rotation)) - { - throw new Exception($"Failed to load game map {ev.GameMap.ID}"); - } - - mapId = map.Value.Comp.MapId; - _metaData.SetEntityName(map.Value.Owner, proto.MapName); - var gridUids = grids.Select(x => x.Owner).ToList(); - RaiseLocalEvent(new PostGameMapLoad(proto, mapId, gridUids, stationName)); - return gridUids; - } - - /// - /// Variant of that attempts to assign the provided to the - /// loaded map. - /// - public IReadOnlyList LoadGameMapWithId( - GameMapPrototype proto, - MapId mapId, - DeserializationOptions? opts = null, - string? stationName = null, - Vector2? offset = null, - Angle? rot = null) - { - var ev = RaisePreLoad(proto, opts, offset, rot); - - if (ev.GameMap.IsGrid) - { - var mapUid = _map.CreateMap(mapId); - if (!_loader.TryLoadGrid(mapId, - ev.GameMap.MapPath, - out var grid, - ev.Options, - ev.Offset, - ev.Rotation)) - { - throw new Exception($"Failed to load game-map grid {ev.GameMap.ID}"); - } - - _metaData.SetEntityName(mapUid, proto.MapName); - var g = new List { grid.Value.Owner }; - RaiseLocalEvent(new PostGameMapLoad(proto, mapId, g, stationName)); - return g; - } - - if (!_loader.TryLoadMapWithId( - mapId, - ev.GameMap.MapPath, - out var map, - out var grids, - ev.Options, - ev.Offset, - ev.Rotation)) - { - throw new Exception($"Failed to load map"); - } - - _metaData.SetEntityName(map.Value.Owner, proto.MapName); - var gridUids = grids.Select(x => x.Owner).ToList(); - RaiseLocalEvent(new PostGameMapLoad(proto, mapId, gridUids, stationName)); - return gridUids; - } - - /// - /// Variant of that loads and then merges a game map onto an existing map. - /// - public IReadOnlyList MergeGameMap( - GameMapPrototype proto, - MapId targetMap, - DeserializationOptions? opts = null, - string? stationName = null, - Vector2? offset = null, - Angle? rot = null) - { - // TODO MAP LOADING use a new event? - // This is quite different from the other methods, which will actually create a **new** map. - var ev = RaisePreLoad(proto, opts, offset, rot); - - if (ev.GameMap.IsGrid) - { - if (!_loader.TryLoadGrid(targetMap, - ev.GameMap.MapPath, - out var grid, - ev.Options, - ev.Offset, - ev.Rotation)) - { - throw new Exception($"Failed to load game-map grid {ev.GameMap.ID}"); - } - - var g = new List { grid.Value.Owner }; - // TODO MAP LOADING use a new event? - RaiseLocalEvent(new PostGameMapLoad(proto, targetMap, g, stationName)); - return g; - } - - if (!_loader.TryMergeMap(targetMap, - ev.GameMap.MapPath, - out var grids, - ev.Options, - ev.Offset, - ev.Rotation)) - { - throw new Exception($"Failed to load map"); - } - - var gridUids = grids.Select(x => x.Owner).ToList(); - - // TODO MAP LOADING use a new event? - RaiseLocalEvent(new PostGameMapLoad(proto, targetMap, gridUids, stationName)); - return gridUids; - } - - public int ReadyPlayerCount() - { - var total = 0; - foreach (var (userId, status) in _playerGameStatuses) - { - if (LobbyEnabled && status == PlayerGameStatus.NotReadyToPlay) - continue; - - if (!_playerManager.TryGetSessionById(userId, out _)) - continue; - - total++; - } - - return total; - } - - public void StartRound(bool force = false) - { -#if EXCEPTION_TOLERANCE - try - { -#endif - // If this game ticker is a dummy or the round is already being started, do nothing! - if (DummyTicker || _startingRound) - return; - - _startingRound = true; - - if (RoundId == 0) - IncrementRoundNumber(); - - ReplayStartRound(); - - DebugTools.Assert(RunLevel == GameRunLevel.PreRoundLobby); - _sawmill.Info("Starting round!"); - - SendServerMessage(Loc.GetString("game-ticker-start-round")); - - var readyPlayers = new List(); - var readyPlayerProfiles = new Dictionary(); - var autoDeAdmin = _cfg.GetCVar(CCVars.AdminDeadminOnJoin); - foreach (var (userId, status) in _playerGameStatuses) - { - if (LobbyEnabled && status != PlayerGameStatus.ReadyToPlay) continue; - if (!_playerManager.TryGetSessionById(userId, out var session)) continue; - - if (autoDeAdmin && _adminManager.IsAdmin(session)) - { - _adminManager.DeAdmin(session); - } -#if DEBUG - DebugTools.Assert(_userDb.IsLoadComplete(session), $"Player was readied up but didn't have user DB data loaded yet??"); -#endif - - readyPlayers.Add(session); - HumanoidCharacterProfile profile; - if (_prefsManager.TryGetCachedPreferences(userId, out var preferences)) - { - profile = (HumanoidCharacterProfile)preferences.SelectedCharacter; - } - else - { - var speciesToBlacklist = - new HashSet(_cfg.GetCVar(CCVars.ICNewAccountSpeciesBlacklist).Split(",")); - profile = HumanoidCharacterProfile.Random(speciesToBlacklist); - } - readyPlayerProfiles.Add(userId, profile); - } - - DebugTools.AssertEqual(readyPlayers.Count, ReadyPlayerCount()); - - // Just in case it hasn't been loaded previously we'll try loading it. - LoadMaps(); - - // map has been selected so update the lobby info text - // applies to players who didn't ready up - UpdateInfoText(); - - StartGamePresetRules(); - - RoundLengthMetric.Set(0); - - var startingEvent = new RoundStartingEvent(RoundId); - RaiseLocalEvent(startingEvent); - - var origReadyPlayers = readyPlayers.ToArray(); - - if (!StartPreset(origReadyPlayers, force)) - { - _startingRound = false; - return; - } - - // MapInitialize *before* spawning players, our codebase is too shit to do it afterwards... - _map.InitializeMap(DefaultMap); - - SpawnPlayers(readyPlayers, readyPlayerProfiles, force); - - _roundStartDateTime = DateTime.UtcNow; - RunLevel = GameRunLevel.InRound; - - RoundStartTimeSpan = _gameTiming.CurTime; - SendStatusToAll(); - ReqWindowAttentionAll(); - UpdateLateJoinStatus(); - AnnounceRound(); - UpdateInfoText(); - SendRoundStartedDiscordMessage(); - -#if EXCEPTION_TOLERANCE - } - catch (Exception e) - { - _roundStartFailCount++; - - if (RoundStartFailShutdownCount > 0 && _roundStartFailCount >= RoundStartFailShutdownCount) - { - _sawmill.Fatal($"Failed to start a round {_roundStartFailCount} time(s) in a row... Shutting down!"); - _runtimeLog.LogException(e, nameof(GameTicker)); - _baseServer.Shutdown("Restarting server"); - return; - } - - _sawmill.Error($"Exception caught while trying to start the round! Restarting round..."); - _runtimeLog.LogException(e, nameof(GameTicker)); - _startingRound = false; - RestartRound(); - return; - } - - // Round started successfully! Reset counter... - _roundStartFailCount = 0; -#endif - _startingRound = false; - } - - private void RefreshLateJoinAllowed() - { - var refresh = new RefreshLateJoinAllowedEvent(); - RaiseLocalEvent(refresh); - DisallowLateJoin = refresh.DisallowLateJoin; - } - - public void EndRound(string text = "") - { - // If this game ticker is a dummy, do nothing! - if (DummyTicker) - return; - - DebugTools.Assert(RunLevel == GameRunLevel.InRound); - _sawmill.Info("Ending round!"); - - RunLevel = GameRunLevel.PostRound; - - try - { - ShowRoundEndScoreboard(text); - } - catch (Exception e) - { - Log.Error($"Error while showing round end scoreboard: {e}"); - } - - try - { - SendRoundEndDiscordMessage(); - } - catch (Exception e) - { - Log.Error($"Error while sending round end Discord message: {e}"); - } - } - - public void ShowRoundEndScoreboard(string text = "") - { - // Log end of round - _adminLogger.Add(LogType.EmergencyShuttle, LogImpact.High, $"Round ended, showing summary"); - - //Tell every client the round has ended. - var gamemodeTitle = CurrentPreset != null ? Loc.GetString(CurrentPreset.ModeTitle) : string.Empty; - - // Let things add text here. - var textEv = new RoundEndTextAppendEvent(); - RaiseLocalEvent(textEv); - - var roundEndText = $"{text}\n{textEv.Text}"; - - //Get the timespan of the round. - var roundDuration = RoundDuration(); - - //Generate a list of basic player info to display in the end round summary. - var listOfPlayerInfo = new List(); - // Grab the great big book of all the Minds, we'll need them for this. - var allMinds = EntityQueryEnumerator(); - var pvsOverride = _cfg.GetCVar(CCVars.RoundEndPVSOverrides); - while (allMinds.MoveNext(out var mindId, out var mind)) - { - // TODO don't list redundant observer roles? - // I.e., if a player was an observer ghost, then a hamster ghost role, maybe just list hamster and not - // the observer role? - var userId = mind.UserId ?? mind.OriginalOwnerUserId; - - var connected = false; - var observer = _role.MindHasRole(mindId); - // Continuing - if (userId != null && _playerManager.ValidSessionId(userId.Value)) - { - connected = true; - } - ContentPlayerData? contentPlayerData = null; - if (userId != null && _playerManager.TryGetPlayerData(userId.Value, out var playerData)) - { - contentPlayerData = playerData.ContentData(); - } - // Finish - - var antag = _roles.MindIsAntagonist(mindId); - - var playerIcName = "Unknown"; - - if (mind.CharacterName != null) - playerIcName = mind.CharacterName; - else if (mind.CurrentEntity != null && TryName(mind.CurrentEntity.Value, out var icName)) - playerIcName = icName; - - if (TryGetEntity(mind.OriginalOwnedEntity, out var entity) && pvsOverride) - { - _pvsOverride.AddGlobalOverride(entity.Value); - } - - var roles = _roles.MindGetAllRoleInfo(mindId); - - var playerEndRoundInfo = new RoundEndMessageEvent.RoundEndPlayerInfo() - { - // Note that contentPlayerData?.Name sticks around after the player is disconnected. - // This is as opposed to ply?.Name which doesn't. - PlayerOOCName = contentPlayerData?.Name ?? "(IMPOSSIBLE: REGISTERED MIND WITH NO OWNER)", - // Character name takes precedence over current entity name - PlayerICName = playerIcName, - PlayerGuid = userId, - PlayerNetEntity = GetNetEntity(entity), - Role = antag - ? roles.First(role => role.Antagonist).Name - : roles.FirstOrDefault().Name ?? Loc.GetString("game-ticker-unknown-role"), - Antag = antag, - JobPrototypes = roles.Where(role => !role.Antagonist).Select(role => role.Prototype).ToArray(), - AntagPrototypes = roles.Where(role => role.Antagonist).Select(role => role.Prototype).ToArray(), - Observer = observer, - Connected = connected - }; - listOfPlayerInfo.Add(playerEndRoundInfo); - } - - // This ordering mechanism isn't great (no ordering of minds) but functions - var listOfPlayerInfoFinal = listOfPlayerInfo.OrderBy(pi => pi.PlayerOOCName).ToArray(); - var sound = RoundEndSoundCollection == null ? null : _audio.ResolveSound(new SoundCollectionSpecifier(RoundEndSoundCollection)); - - var roundEndMessageEvent = new RoundEndMessageEvent( - gamemodeTitle, - roundEndText, - roundDuration, - RoundId, - listOfPlayerInfoFinal.Length, - listOfPlayerInfoFinal, - sound - ); - RaiseNetworkEvent(roundEndMessageEvent); - RaiseLocalEvent(roundEndMessageEvent); - - _replayRoundPlayerInfo = listOfPlayerInfoFinal; - _replayRoundText = roundEndText; - } - - private async void SendRoundEndDiscordMessage() - { - try - { - if (_webhookIdentifier == null) - return; - - var duration = RoundDuration(); - var content = Loc.GetString("discord-round-notifications-end", - ("id", RoundId), - ("hours", Math.Truncate(duration.TotalHours)), - ("minutes", duration.Minutes), - ("seconds", duration.Seconds)); - var payload = new WebhookPayload { Content = content }; - - await _discord.CreateMessage(_webhookIdentifier.Value, payload); - - if (DiscordRoundEndRole == null) - return; - - content = Loc.GetString("discord-round-notifications-end-ping", ("roleId", DiscordRoundEndRole)); - payload = new WebhookPayload { Content = content }; - payload.AllowedMentions.AllowRoleMentions(); - - await _discord.CreateMessage(_webhookIdentifier.Value, payload); - } - catch (Exception e) - { - Log.Error($"Error while sending discord round end message:\n{e}"); - } - } - - public void RestartRound() - { - // If this game ticker is a dummy, do nothing! - if (DummyTicker) - return; - - ReplayEndRound(); - - // Handle restart for server update - if (_serverUpdates.RoundEnded()) - return; - - // Check if the GamePreset needs to be reset - TryResetPreset(); - - _sawmill.Info("Restarting round!"); - - SendServerMessage(Loc.GetString("game-ticker-restart-round")); - - RoundNumberMetric.Inc(); - - PlayersJoinedRoundNormally = 0; - - RunLevel = GameRunLevel.PreRoundLobby; - RandomizeLobbyBackground(); - ResettingCleanup(); - IncrementRoundNumber(); - SendRoundStartingDiscordMessage(); - - if (!LobbyEnabled) - { - StartRound(); - } - else - { - if (_playerManager.PlayerCount == 0) - _roundStartCountdownHasNotStartedYetDueToNoPlayers = true; - else - _roundStartTime = _gameTiming.CurTime + LobbyDuration; - - SendStatusToAll(); - UpdateInfoText(); - - ReqWindowAttentionAll(); - } - } - - private async void SendRoundStartingDiscordMessage() - { - try - { - if (_webhookIdentifier == null) - return; - - var content = Loc.GetString("discord-round-notifications-new"); - - var payload = new WebhookPayload { Content = content }; - - await _discord.CreateMessage(_webhookIdentifier.Value, payload); - } - catch (Exception e) - { - Log.Error($"Error while sending discord round starting message:\n{e}"); - } - } - - /// - /// Cleanup that has to run to clear up anything from the previous round. - /// Stuff like wiping the previous map clean. - /// - private void ResettingCleanup() - { - // Move everybody currently in the server to lobby. - foreach (var player in _playerManager.Sessions) - { - PlayerJoinLobby(player); - } - - // Round restart cleanup event, so entity systems can reset. - var ev = new RoundRestartCleanupEvent(); - RaiseLocalEvent(ev); - - // So clients' entity systems can clean up too... - RaiseNetworkEvent(ev); - - EntityManager.FlushEntities(); - - _banManager.Restart(); - - _gameMapManager.ClearSelectedMap(); - - // Clear up any game rules. - ClearGameRules(); - CurrentPreset = null; - - _allPreviousGameRules.Clear(); - - DisallowLateJoin = false; - _playerGameStatuses.Clear(); - foreach (var session in _playerManager.Sessions) - { - _playerGameStatuses[session.UserId] = LobbyEnabled ? PlayerGameStatus.NotReadyToPlay : PlayerGameStatus.ReadyToPlay; - } - } - - public bool DelayStart(TimeSpan time) - { - if (_runLevel != GameRunLevel.PreRoundLobby) - { - return false; - } - - _roundStartTime += time; - - RaiseNetworkEvent(new TickerLobbyCountdownEvent(_roundStartTime, Paused)); - - _chatManager.DispatchServerAnnouncement(Loc.GetString("game-ticker-delay-start", ("seconds", time.TotalSeconds))); - - return true; - } - - private void UpdateRoundFlow(float frameTime) - { - if (RunLevel == GameRunLevel.InRound) - { - RoundLengthMetric.Inc(frameTime); - } - - if (_roundStartTime == TimeSpan.Zero || - RunLevel != GameRunLevel.PreRoundLobby || - Paused || - _roundStartTime - RoundPreloadTime > _gameTiming.CurTime || - _roundStartCountdownHasNotStartedYetDueToNoPlayers) - { - return; - } - - if (_roundStartTime < _gameTiming.CurTime) - { - StartRound(); - } - // Preload maps so we can start faster - else if (_roundStartTime - RoundPreloadTime < _gameTiming.CurTime) - { - LoadMaps(); - } - } - - private void AnnounceRound() - { - if (CurrentPreset == null) return; - - var options = ProtoMan.EnumeratePrototypes().ToList(); - - if (options.Count == 0) - return; - - var proto = _robustRandom.Pick(options); - - if (proto.Message != null) - _chatSystem.DispatchGlobalAnnouncement(Loc.GetString(proto.Message), playSound: true); - - if (proto.Sound != null) - _audio.PlayGlobal(proto.Sound, Filter.Broadcast(), true); - } - - private async void SendRoundStartedDiscordMessage() - { - try - { - if (_webhookIdentifier == null) - return; - - var mapName = _gameMapManager.GetSelectedMap()?.MapName ?? Loc.GetString("discord-round-notifications-unknown-map"); - var content = Loc.GetString("discord-round-notifications-started", ("id", RoundId), ("map", mapName)); - - var payload = new WebhookPayload { Content = content }; - - await _discord.CreateMessage(_webhookIdentifier.Value, payload); - } - catch (Exception e) - { - Log.Error($"Error while sending discord round start message:\n{e}"); - } - } - } - - public enum GameRunLevel - { - PreRoundLobby = 0, - InRound = 1, - PostRound = 2 - } - - public sealed class GameRunLevelChangedEvent - { - public GameRunLevel Old { get; } - public GameRunLevel New { get; } - - public GameRunLevelChangedEvent(GameRunLevel old, GameRunLevel @new) - { - Old = old; - New = @new; - } - } - - /// - /// Event raised before maps are loaded in pre-round setup. - /// Contains a list of game map prototypes to load; modify it if you want to load different maps, - /// for example as part of a game rule. - /// - [PublicAPI] - public sealed class LoadingMapsEvent : EntityEventArgs - { - public List Maps; - - public LoadingMapsEvent(List maps) - { - Maps = maps; - } - } - - /// - /// Event raised before the game loads a given map. - /// This event is mutable, and load options should be tweaked if necessary. - /// - /// - /// You likely want to subscribe to this after StationSystem. - /// - [PublicAPI] - public sealed class PreGameMapLoad(GameMapPrototype gameMap, DeserializationOptions options, Vector2 offset, Angle rotation) : EntityEventArgs - { - public readonly GameMapPrototype GameMap = gameMap; - public DeserializationOptions Options = options; - public Vector2 Offset = offset; - public Angle Rotation = rotation; - } - - /// - /// Event raised after the game loads a given map. - /// - /// - /// You likely want to subscribe to this after StationSystem. - /// - [PublicAPI] - public sealed class PostGameMapLoad : EntityEventArgs - { - public readonly GameMapPrototype GameMap; - public readonly MapId Map; - public readonly IReadOnlyList Grids; - public readonly string? StationName; - - public PostGameMapLoad(GameMapPrototype gameMap, MapId map, IReadOnlyList grids, string? stationName) - { - GameMap = gameMap; - Map = map; - Grids = grids; - StationName = stationName; - } - } - - /// - /// Event raised to refresh the late join status. - /// If you want to disallow late joins, listen to this and call Disallow. - /// - public sealed class RefreshLateJoinAllowedEvent - { - public bool DisallowLateJoin { get; private set; } = false; - - public void Disallow() - { - DisallowLateJoin = true; - } - } - - /// - /// Attempt event raised on round start. - /// This can be listened to by GameRule systems to cancel round start if some condition is not met, like player count. - /// - public sealed class RoundStartAttemptEvent : CancellableEntityEventArgs - { - public ICommonSession[] Players { get; } - public bool Forced { get; } - - public RoundStartAttemptEvent(ICommonSession[] players, bool forced) - { - Players = players; - Forced = forced; - } - } - - /// - /// Event raised before readied up players are spawned and given jobs by the GameTicker. - /// You can use this to spawn people off-station, like in the case of nuke ops or wizard. - /// Remove the players you spawned from the PlayerPool and call on them. - /// - public sealed class RulePlayerSpawningEvent - { - /// - /// Pool of players to be spawned. - /// If you want to handle a specific player being spawned, remove it from this list and do what you need. - /// - /// If you spawn a player by yourself from this event, don't forget to call on them. - public List PlayerPool { get; } - public IReadOnlyDictionary Profiles { get; } - public bool Forced { get; } - - public RulePlayerSpawningEvent(List playerPool, IReadOnlyDictionary profiles, bool forced) - { - PlayerPool = playerPool; - Profiles = profiles; - Forced = forced; - } - } - - /// - /// Event raised after players were assigned jobs by the GameTicker and have been spawned in. - /// You can give on-station people special roles by listening to this event. - /// - public sealed class RulePlayerJobsAssignedEvent - { - public ICommonSession[] Players { get; } - public IReadOnlyDictionary Profiles { get; } - public bool Forced { get; } - - public RulePlayerJobsAssignedEvent(ICommonSession[] players, IReadOnlyDictionary profiles, bool forced) - { - Players = players; - Profiles = profiles; - Forced = forced; - } - } - - /// - /// Event raised to allow subscribers to add text to the round end summary screen. - /// - public sealed class RoundEndTextAppendEvent - { - private bool _doNewLine; - - /// - /// Text to display in the round end summary screen. - /// - public string Text { get; private set; } = string.Empty; - - /// - /// Invoke this method to add text to the round end summary screen. - /// - /// - public void AddLine(string text) - { - if (_doNewLine) - Text += "\n"; - - Text += text; - _doNewLine = true; - } - } -} diff --git a/Content.Server/GameTicking/GameTicker.StatusShell.cs b/Content.Server/GameTicking/GameTicker.StatusShell.cs deleted file mode 100644 index 87d4129a9c..0000000000 --- a/Content.Server/GameTicking/GameTicker.StatusShell.cs +++ /dev/null @@ -1,62 +0,0 @@ -using System.Linq; -using System.Text.Json.Nodes; -using Content.Shared.CCVar; -using Content.Shared.GameTicking; -using Robust.Server.ServerStatus; -using Robust.Shared.Configuration; - -namespace Content.Server.GameTicking -{ - public sealed partial class GameTicker - { - /// - /// Used for thread safety, given is called from another thread. - /// - private readonly object _statusShellLock = new(); - - /// - /// Round start time in UTC, for status shell purposes. - /// - [ViewVariables] - private DateTime _roundStartDateTime; - - /// - /// For access to CVars in status responses. - /// - [Dependency] private IConfigurationManager _cfg = default!; - /// - /// For access to the round ID in status responses. - /// - [Dependency] private SharedGameTicker _gameTicker = default!; - - private void InitializeStatusShell() - { - IoCManager.Resolve().OnStatusRequest += GetStatusResponse; - } - - private void GetStatusResponse(JsonNode jObject) - { - var preset = CurrentPreset ?? Preset; - - // This method is raised from another thread, so this better be thread safe! - lock (_statusShellLock) - { - jObject["name"] = _baseServer.ServerName; - jObject["map"] = _gameMapManager.GetSelectedMap()?.MapName; - jObject["round_id"] = _gameTicker.RoundId; - jObject["players"] = _cfg.GetCVar(CCVars.AdminsCountInReportedPlayerCount) - ? _playerManager.PlayerCount - : _playerManager.PlayerCount - _adminManager.ActiveAdmins.Count(); - jObject["soft_max_players"] = _cfg.GetCVar(CCVars.SoftMaxPlayers); - jObject["panic_bunker"] = _cfg.GetCVar(CCVars.PanicBunkerEnabled); - jObject["run_level"] = (int) _runLevel; - if (preset != null) - jObject["preset"] = (Decoy == null) ? Loc.GetString(preset.ModeTitle) : Loc.GetString(Decoy.ModeTitle); - if (_runLevel >= GameRunLevel.InRound) - { - jObject["round_start_time"] = _roundStartDateTime.ToString("o"); - } - } - } - } -} diff --git a/Content.Server/GameTicking/Presets/GamePresetPrototype.cs b/Content.Server/GameTicking/Presets/GamePresetPrototype.cs deleted file mode 100644 index febaef8270..0000000000 --- a/Content.Server/GameTicking/Presets/GamePresetPrototype.cs +++ /dev/null @@ -1,43 +0,0 @@ -using Content.Server.Maps; -using Robust.Shared.Prototypes; - -namespace Content.Server.GameTicking.Presets -{ - /// - /// A round-start setup preset, such as which antagonists to spawn. - /// - [Prototype] - public sealed partial class GamePresetPrototype : IPrototype - { - [IdDataField] - public string ID { get; private set; } = default!; - - [DataField] - public string[] Alias = Array.Empty(); - - [DataField("name")] - public string ModeTitle = "????"; - - [DataField] - public string Description = string.Empty; - - [DataField] - public bool ShowInVote; - - [DataField] - public int? MinPlayers; - - [DataField] - public int? MaxPlayers; - - [DataField] - public IReadOnlyList Rules { get; private set; } = Array.Empty(); - - /// - /// If specified, the gamemode will only be run with these maps. - /// If none are elligible, the global fallback will be used. - /// - [DataField("supportedMaps")] - public ProtoId? MapPool; - } -} diff --git a/Content.Server/GameTicking/Rules/AntagLoadProfileRuleSystem.cs b/Content.Server/GameTicking/Rules/AntagLoadProfileRuleSystem.cs index 6216abebb3..de03fd8915 100644 --- a/Content.Server/GameTicking/Rules/AntagLoadProfileRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/AntagLoadProfileRuleSystem.cs @@ -1,7 +1,9 @@ using Content.Server.Antag; using Content.Server.GameTicking.Rules.Components; using Content.Server.Preferences.Managers; +using Content.Shared.Antag; using Content.Shared.Body; +using Content.Shared.GameTicking.Rules; using Content.Shared.Humanoid; using Content.Shared.Humanoid.Prototypes; using Content.Shared.Preferences; diff --git a/Content.Server/GameTicking/Rules/DeathMatchRuleSystem.cs b/Content.Server/GameTicking/Rules/DeathMatchRuleSystem.cs index 44a2121835..0305fa3d27 100644 --- a/Content.Server/GameTicking/Rules/DeathMatchRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/DeathMatchRuleSystem.cs @@ -8,7 +8,9 @@ using Content.Server.Station.Systems; using Content.Shared.EntityTable; using Content.Shared.GameTicking; using Content.Shared.GameTicking.Components; +using Content.Shared.GameTicking.Rules; using Content.Shared.Points; +using Content.Shared.Station.Systems; using Robust.Server.Player; using Robust.Shared.Utility; @@ -43,7 +45,7 @@ public sealed partial class DeathMatchRuleSystem : GameRuleSystem(); while (query.MoveNext(out var uid, out var dm, out var tracker, out var point, out var rule)) { - if (!GameTicker.IsGameRuleActive(uid, rule)) + if (!GameTicker.IsGameRuleActive((uid, rule))) continue; var newMind = _mind.CreateMind(ev.Player.UserId, ev.Profile.Name); @@ -71,8 +73,9 @@ public sealed partial class DeathMatchRuleSystem : GameRuleSystem(); while (query.MoveNext(out var uid, out _, out var tracker, out var rule)) { - if (!GameTicker.IsGameRuleActive(uid, rule)) + if (!GameTicker.IsGameRuleActive((uid, rule))) continue; + _respawn.AddToTracker((ev.Mob, null), (uid, tracker)); } } @@ -82,7 +85,7 @@ public sealed partial class DeathMatchRuleSystem : GameRuleSystem(); while (query.MoveNext(out var uid, out var dm, out var point, out var rule)) { - if (!GameTicker.IsGameRuleActive(uid, rule)) + if (!GameTicker.IsGameRuleActive((uid, rule))) continue; // YOU SUICIDED OR GOT THROWN INTO LAVA! @@ -117,12 +120,12 @@ public sealed partial class DeathMatchRuleSystem : GameRuleSystem entity, ref RoundEndTextAppendEvent args) { - if (!TryComp(uid, out var point)) + if (!TryComp(entity, out var point)) return; - if (component.Victor != null && _player.TryGetPlayerData(component.Victor.Value, out var data)) + if (entity.Comp.Victor != null && _player.TryGetPlayerData(entity.Comp.Victor.Value, out var data)) { args.AddLine(Loc.GetString("point-scoreboard-winner", ("player", data.UserName))); args.AddLine(""); diff --git a/Content.Server/GameTicking/Rules/DynamicRuleSystem.cs b/Content.Server/GameTicking/Rules/DynamicRuleSystem.cs index bc9d9d01d1..f84668b4f5 100644 --- a/Content.Server/GameTicking/Rules/DynamicRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/DynamicRuleSystem.cs @@ -1,4 +1,3 @@ -using System.Diagnostics; using Content.Server.Administration.Logs; using Content.Server.RoundEnd; using Content.Shared.Database; @@ -6,6 +5,7 @@ using Content.Shared.EntityTable; using Content.Shared.EntityTable.Conditions; using Content.Shared.GameTicking.Components; using Content.Shared.GameTicking.Rules; +using Content.Shared.GameTicking.Rules.Components; using Robust.Shared.Prototypes; using Robust.Shared.Random; @@ -36,13 +36,14 @@ public sealed partial class DynamicRuleSystem : GameRuleSystem rule, ref GameRuleEndedEvent args) { - base.Ended(uid, component, gameRule, args); + base.Ended(rule, ref args); - foreach (var rule in component.Rules) + foreach (var gameRule in rule.Comp.Rules) { - GameTicker.EndGameRule(rule); + GameTicker.EndGameRule(gameRule); } } @@ -102,10 +103,10 @@ public sealed partial class DynamicRuleSystem : GameRuleSystem(ruleUid, out var cost)) { @@ -130,7 +131,7 @@ public sealed partial class DynamicRuleSystem : GameRuleSystem(); while (query.MoveNext(out var uid, out _, out var comp)) { - if (!GameTicker.IsGameRuleActive(uid, comp)) + if (!GameTicker.IsGameRuleActive((uid, comp))) continue; rules.Add(uid); } diff --git a/Content.Server/GameTicking/Rules/GameRuleSystem.Utility.cs b/Content.Server/GameTicking/Rules/GameRuleSystem.Utility.cs deleted file mode 100644 index 9c8c26bdc7..0000000000 --- a/Content.Server/GameTicking/Rules/GameRuleSystem.Utility.cs +++ /dev/null @@ -1,184 +0,0 @@ -using System.Diagnostics; -using System.Diagnostics.CodeAnalysis; -using System.Linq; -using Content.Server.Station.Components; -using Content.Shared.GameTicking.Components; -using Content.Shared.Station.Components; -using Robust.Shared.Collections; -using Robust.Shared.Map; -using Robust.Shared.Map.Components; -using Robust.Shared.Utility; - -namespace Content.Server.GameTicking.Rules; - -public abstract partial class GameRuleSystem where T: IComponent -{ - protected EntityQueryEnumerator QueryActiveRules() - { - return EntityQueryEnumerator(); - } - - protected EntityQueryEnumerator QueryDelayedRules() - { - return EntityQueryEnumerator(); - } - - /// - /// Queries all gamerules, regardless of if they're active or not. - /// - protected EntityQueryEnumerator QueryAllRules() - { - return EntityQueryEnumerator(); - } - - /// - /// Utility function for finding a random event-eligible station entity - /// - protected bool TryGetRandomStation([NotNullWhen(true)] out EntityUid? station, Func? filter = null) - { - var stations = new ValueList(Count()); - - filter ??= _ => true; - var query = AllEntityQuery(); - - while (query.MoveNext(out var uid, out _)) - { - if (!filter(uid)) - continue; - - stations.Add(uid); - } - - if (stations.Count == 0) - { - station = null; - return false; - } - - // TODO: Engine PR. - station = stations[RobustRandom.Next(stations.Count)]; - return true; - } - - protected bool TryFindRandomTile(out Vector2i tile, - [NotNullWhen(true)] out EntityUid? targetStation, - out EntityUid targetGrid, - out EntityCoordinates targetCoords) - { - tile = default; - targetStation = EntityUid.Invalid; - targetGrid = EntityUid.Invalid; - targetCoords = EntityCoordinates.Invalid; - if (TryGetRandomStation(out targetStation)) - { - return TryFindRandomTileOnStation((targetStation.Value, Comp(targetStation.Value)), - out tile, - out targetGrid, - out targetCoords); - } - - return false; - } - - protected bool TryFindRandomTileOnStation(Entity station, - out Vector2i tile, - out EntityUid targetGrid, - out EntityCoordinates targetCoords, - int numAttempts = 10) - { - tile = default; - targetCoords = EntityCoordinates.Invalid; - targetGrid = EntityUid.Invalid; - - // Weight grid choice by tilecount - var totalTiles = 0; - var grids = new List<(Entity Entity, int Count, List Tiles)>(); - foreach (var possibleTarget in station.Comp.Grids) - { - if (!TryComp(possibleTarget, out var comp)) - continue; - - // Get the tile count for the given grid. - var tileCount = _map.GetFilledTileCount((possibleTarget, comp)); - - // Just to be sure, no empty elements. - if (tileCount > 0) - { - grids.Add(((possibleTarget, comp), tileCount, new())); - totalTiles += tileCount; - } - } - - if (grids.Count == 0) - { - targetGrid = EntityUid.Invalid; - return false; - } - - for (var i = 0; i < numAttempts; i++) - { - // Find random tile within list. - var nextTileIndex = RobustRandom.Next(totalTiles); - TileRef? randomTileRef = null; - MapGridComponent gridComp = default!; - var startIndex = 0; - for (int j = 0; j < grids.Count; j++) - { - var grid = grids[j]; - // If the index is in this particular grid, find it and remove the tile to prevent selecting it twice. - if (nextTileIndex >= startIndex + grid.Count) - { - startIndex += grid.Count; - continue; - } - - (targetGrid, gridComp) = grid.Entity; - - // Empty list: hasn't been queried yet - get our tiles. - if (grid.Tiles.Count <= 0) - { - grid.Tiles = _map.GetAllTiles(targetGrid, gridComp).ToList(); - - // Actual list count doesn't match expected count (a bug - return failure). - Debug.Assert(grid.Tiles.Count == grid.Count); - if (grid.Tiles.Count != grid.Count) - return false; - } - - var ourTileIndex = nextTileIndex - startIndex; - randomTileRef = grid.Tiles[ourTileIndex]; - grid.Tiles.RemoveSwap(ourTileIndex); - grid.Count--; - totalTiles--; - - // Empty list, remove element - if (grid.Tiles.Count <= 0) - grids.RemoveSwap(j); - - break; - } - - // Out of valid tiles, return early. - if (randomTileRef is not { } tileRef) - return false; - - // Invalid tile, try again. - if (_atmosphere.IsTileSpace(targetGrid, Transform(targetGrid).MapUid, tileRef.GridIndices) - || _atmosphere.IsTileAirBlockedCached(targetGrid, tileRef.GridIndices)) - { - continue; - } - - targetCoords = _map.GridTileToLocal(targetGrid, gridComp, tileRef.GridIndices); - tile = tileRef.GridIndices; - return true; - } - - return false; - } - - protected void ForceEndSelf(EntityUid uid, GameRuleComponent? component = null) - { - GameTicker.EndGameRule(uid, component); - } -} diff --git a/Content.Server/GameTicking/Rules/GameRuleSystem.cs b/Content.Server/GameTicking/Rules/GameRuleSystem.cs deleted file mode 100644 index 5398503ea8..0000000000 --- a/Content.Server/GameTicking/Rules/GameRuleSystem.cs +++ /dev/null @@ -1,118 +0,0 @@ -using Content.Server.Atmos.EntitySystems; -using Content.Shared.GameTicking.Components; -using Robust.Server.GameObjects; -using Robust.Shared.Random; -using Robust.Shared.Timing; - -namespace Content.Server.GameTicking.Rules; - -public abstract partial class GameRuleSystem : EntitySystem where T : IComponent -{ - [Dependency] protected IGameTiming Timing = default!; - [Dependency] protected IRobustRandom RobustRandom = default!; - [Dependency] protected GameTicker GameTicker = default!; - - // Not protected, just to be used in utility methods - [Dependency] private AtmosphereSystem _atmosphere = default!; - [Dependency] private MapSystem _map = default!; - - [Dependency] protected EntityQuery GameRuleQuery = default!; - [Dependency] protected EntityQuery RuleQuery = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnGameRuleAdded); - SubscribeLocalEvent(OnGameRuleStarted); - SubscribeLocalEvent(OnGameRuleEnded); - SubscribeLocalEvent(OnRoundEndTextAppend); - } - - private void OnGameRuleAdded(EntityUid uid, T component, ref GameRuleAddedEvent args) - { - if (!GameRuleQuery.TryComp(uid, out var ruleData)) - return; - - Added(uid, component, ruleData, args); - } - - private void OnGameRuleStarted(EntityUid uid, T component, ref GameRuleStartedEvent args) - { - if (!GameRuleQuery.TryComp(uid, out var ruleData)) - return; - - Started(uid, component, ruleData, args); - } - - private void OnGameRuleEnded(EntityUid uid, T component, ref GameRuleEndedEvent args) - { - if (!GameRuleQuery.TryComp(uid, out var ruleData)) - return; - - Ended(uid, component, ruleData, args); - } - - private void OnRoundEndTextAppend(RoundEndTextAppendEvent ev) - { - var query = QueryAllRules(); - while (query.MoveNext(out var uid, out var comp, out var ruleData)) - { - AppendRoundEndText(uid, comp, ruleData, ref ev); - } - } - - /// - /// Called when the gamerule is added - /// - protected virtual void Added(EntityUid uid, T component, GameRuleComponent gameRule, GameRuleAddedEvent args) - { - - } - - /// - /// Called when the gamerule begins - /// - protected virtual void Started(EntityUid uid, T component, GameRuleComponent gameRule, GameRuleStartedEvent args) - { - - } - - /// - /// Called when the gamerule ends - /// - protected virtual void Ended(EntityUid uid, T component, GameRuleComponent gameRule, GameRuleEndedEvent args) - { - - } - - /// - /// Called at the end of a round when text needs to be added for a game rule. - /// - protected virtual void AppendRoundEndText(EntityUid uid, T component, GameRuleComponent gameRule, ref RoundEndTextAppendEvent args) - { - - } - - /// - /// Called on an active gamerule entity in the Update function - /// - protected virtual void ActiveTick(EntityUid uid, T component, GameRuleComponent gameRule, float frameTime) - { - - } - - public override void Update(float frameTime) - { - base.Update(frameTime); - - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var comp1, out var comp2)) - { - if (!GameTicker.IsGameRuleActive(uid, comp2)) - continue; - - ActiveTick(uid, comp1, comp2, frameTime); - } - } -} diff --git a/Content.Server/GameTicking/Rules/InactivityTimeRestartRuleSystem.cs b/Content.Server/GameTicking/Rules/InactivityTimeRestartRuleSystem.cs index cc67b76a51..1fd287be13 100644 --- a/Content.Server/GameTicking/Rules/InactivityTimeRestartRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/InactivityTimeRestartRuleSystem.cs @@ -1,7 +1,9 @@ using System.Threading; using Content.Server.Chat.Managers; using Content.Server.GameTicking.Rules.Components; +using Content.Shared.GameTicking; using Content.Shared.GameTicking.Components; +using Content.Shared.GameTicking.Rules; using Robust.Server.Player; using Robust.Shared.Player; using Timer = Robust.Shared.Timing.Timer; @@ -27,11 +29,11 @@ public sealed partial class InactivityTimeRestartRuleSystem : GameRuleSystem rule, ref GameRuleEndedEvent args) { - base.Ended(uid, component, gameRule, args); + base.Ended(rule, ref args); - StopTimer(uid, component); + StopTimer(rule, rule.Comp); } public void RestartTimer(EntityUid uid, InactivityRuleComponent? component = null) @@ -66,12 +68,9 @@ public sealed partial class InactivityTimeRestartRuleSystem : GameRuleSystem(); - while (query.MoveNext(out var uid, out var inactivity, out var gameRule)) + var query = QueryActiveRules(); + while (query.MoveNext(out var uid, out var inactivity, out _, out _)) { - if (!GameTicker.IsGameRuleActive(uid, gameRule)) - return; - switch (args.New) { case GameRunLevel.InRound: @@ -90,7 +89,7 @@ public sealed partial class InactivityTimeRestartRuleSystem : GameRuleSystem(); while (query.MoveNext(out var uid, out var inactivity, out var gameRule)) { - if (!GameTicker.IsGameRuleActive(uid, gameRule)) + if (!GameTicker.IsGameRuleActive((uid, gameRule))) return; if (GameTicker.RunLevel != GameRunLevel.InRound) diff --git a/Content.Server/GameTicking/Rules/KillCalloutRuleSystem.cs b/Content.Server/GameTicking/Rules/KillCalloutRuleSystem.cs index a61eab34c7..e8f7fc2dd6 100644 --- a/Content.Server/GameTicking/Rules/KillCalloutRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/KillCalloutRuleSystem.cs @@ -3,6 +3,7 @@ using Content.Server.GameTicking.Rules.Components; using Content.Server.KillTracking; using Content.Shared.Chat; using Content.Shared.GameTicking.Components; +using Content.Shared.GameTicking.Rules; using Robust.Server.Player; using Robust.Shared.Player; using Robust.Shared.Random; @@ -31,7 +32,7 @@ public sealed partial class KillCalloutRuleSystem : GameRuleSystem(); while (query.MoveNext(out var uid, out var kill, out var rule)) { - if (!GameTicker.IsGameRuleActive(uid, rule)) + if (!GameTicker.IsGameRuleActive((uid, rule))) continue; var callout = GetCallout(kill, ev); diff --git a/Content.Server/GameTicking/Rules/MaxTimeRestartRuleSystem.cs b/Content.Server/GameTicking/Rules/MaxTimeRestartRuleSystem.cs index 5740ffe8fe..66f36caca5 100644 --- a/Content.Server/GameTicking/Rules/MaxTimeRestartRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/MaxTimeRestartRuleSystem.cs @@ -1,7 +1,9 @@ using System.Threading; using Content.Server.Chat.Managers; using Content.Server.GameTicking.Rules.Components; +using Content.Shared.GameTicking; using Content.Shared.GameTicking.Components; +using Content.Shared.GameTicking.Rules; using Timer = Robust.Shared.Timing.Timer; namespace Content.Server.GameTicking.Rules; @@ -21,15 +23,15 @@ public sealed partial class MaxTimeRestartRuleSystem : GameRuleSystem rule, ref GameRuleEndedEvent args) { - base.Ended(uid, component, gameRule, args); + base.Ended(rule, ref args); - StopTimer(component); + StopTimer(rule); } public void RestartTimer(MaxTimeRestartRuleComponent component) @@ -60,7 +62,7 @@ public sealed partial class MaxTimeRestartRuleSystem : GameRuleSystem(); while (query.MoveNext(out var uid, out var timer, out var gameRule)) { - if (!GameTicker.IsGameRuleActive(uid, gameRule)) + if (!GameTicker.IsGameRuleActive((uid, gameRule))) return; switch (args.New) diff --git a/Content.Server/GameTicking/Rules/RespawnRuleSystem.cs b/Content.Server/GameTicking/Rules/RespawnRuleSystem.cs index c960cfc156..d69c2934c1 100644 --- a/Content.Server/GameTicking/Rules/RespawnRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/RespawnRuleSystem.cs @@ -1,9 +1,9 @@ using Content.Server.Chat.Managers; -using Content.Server.Database.Migrations.Postgres; using Content.Server.GameTicking.Rules.Components; using Content.Server.Station.Systems; using Content.Shared.Chat; using Content.Shared.GameTicking.Components; +using Content.Shared.GameTicking.Rules; using Content.Shared.Interaction.Events; using Content.Shared.Mind; using Content.Shared.Mobs; @@ -24,7 +24,7 @@ public sealed partial class RespawnRuleSystem : GameRuleSystem public override void Initialize() @@ -54,6 +54,7 @@ public sealed partial class RespawnRuleSystem : GameRuleSystem(mind, out var mindComp) && mindComp.OwnedEntity.HasValue) QueueDel(mindComp.OwnedEntity.Value); + GameTicker.MakeJoinGame(session, station, silent: true); tracker.RespawnQueue.Remove(player); } @@ -84,7 +85,7 @@ public sealed partial class RespawnRuleSystem : GameRuleSystem(); while (query.MoveNext(out var uid, out var respawnRule, out var tracker, out var rule)) { - if (!GameTicker.IsGameRuleActive(uid, rule)) + if (!GameTicker.IsGameRuleActive((uid, rule))) continue; if (respawnRule.AlwaysRespawnDead) @@ -109,6 +110,7 @@ public sealed partial class RespawnRuleSystem : GameRuleSystem(); while (passQuery.MoveNext(out var uid, out _, out _)) { - // TODO: for some reason, ending a game rule just gives it a marker comp, - // and doesnt delete it - // so we have to check here that it isnt an ended game rule (which could happen if a preset failed to start - // or it was ended before station maps spawned etc etc etc) - if (HasComp(uid)) - continue; - RaiseLocalEvent(uid, ref passEv); } @@ -62,7 +56,7 @@ public sealed partial class RoundstartStationVariationRuleSystem : GameRuleSyste } /// -/// Raised directed on game rule entities which are added and marked as +/// Raised directed on game rule entities which are added and marked as /// when a new station is initialized that should be varied. /// /// The new station that was added, and its config & grids. diff --git a/Content.Server/GameTicking/Rules/RuleGridsSystem.cs b/Content.Server/GameTicking/Rules/RuleGridsSystem.cs index 6ad59099ce..3a50ce752e 100644 --- a/Content.Server/GameTicking/Rules/RuleGridsSystem.cs +++ b/Content.Server/GameTicking/Rules/RuleGridsSystem.cs @@ -1,6 +1,9 @@ using Content.Server.Antag; using Content.Server.GameTicking.Rules.Components; using Content.Server.Spawners.Components; +using Content.Shared.Antag; +using Content.Shared.GameTicking.Rules; +using Content.Shared.Spawners.Components; using Content.Shared.Whitelist; using Robust.Server.Physics; using Robust.Shared.Map; @@ -28,7 +31,7 @@ public sealed partial class RuleGridsSystem : GameRuleSystem private void OnGridSplit(ref GridSplitEvent args) { var rule = QueryActiveRules(); - while (rule.MoveNext(out _, out var comp, out _)) + while (rule.MoveNext(out var comp, out _, out _)) { if (!comp.MapGrids.Contains(args.Grid)) continue; diff --git a/Content.Server/GameTicking/Rules/SandboxRuleSystem.cs b/Content.Server/GameTicking/Rules/SandboxRuleSystem.cs index 88e9686402..fd1d7c6d48 100644 --- a/Content.Server/GameTicking/Rules/SandboxRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/SandboxRuleSystem.cs @@ -1,6 +1,7 @@ using Content.Server.GameTicking.Rules.Components; using Content.Server.Sandbox; using Content.Shared.GameTicking.Components; +using Content.Shared.GameTicking.Rules; namespace Content.Server.GameTicking.Rules; @@ -8,15 +9,15 @@ public sealed partial class SandboxRuleSystem : GameRuleSystem rule, ref GameRuleStartedEvent args) { - base.Started(uid, component, gameRule, args); + base.Started(rule, ref args); _sandbox.IsSandboxEnabled = true; } - protected override void Ended(EntityUid uid, SandboxRuleComponent component, GameRuleComponent gameRule, GameRuleEndedEvent args) + protected override void Ended(Entity rule, ref GameRuleEndedEvent args) { - base.Ended(uid, component, gameRule, args); + base.Ended(rule, ref args); _sandbox.IsSandboxEnabled = false; } } diff --git a/Content.Server/GameTicking/Rules/SecretRuleSystem.cs b/Content.Server/GameTicking/Rules/SecretRuleSystem.cs index d8594ebf98..d249bad118 100644 --- a/Content.Server/GameTicking/Rules/SecretRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/SecretRuleSystem.cs @@ -1,12 +1,14 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; using Content.Server.Administration.Logs; -using Content.Server.GameTicking.Presets; using Content.Server.GameTicking.Rules.Components; using Content.Shared.GameTicking.Components; using Content.Shared.Random; using Content.Shared.CCVar; using Content.Shared.Database; +using Content.Shared.GameTicking; +using Content.Shared.GameTicking.Prototypes; +using Content.Shared.GameTicking.Rules; using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Configuration; @@ -48,7 +50,7 @@ public sealed partial class SecretRuleSystem : GameRuleSystem? ruleEnt; // if we're pre-round (i.e. will only be added) // then just add rules. if we're added in the middle of the round (or at any other point really) @@ -58,17 +60,22 @@ public sealed partial class SecretRuleSystem : GameRuleSystem rule, ref GameRuleEndedEvent args) { - base.Ended(uid, component, gameRule, args); + base.Ended(rule, ref args); - foreach (var rule in component.AdditionalGameRules) + foreach (var gameRule in rule.Comp.AdditionalGameRules) { - GameTicker.EndGameRule(rule); + GameTicker.EndGameRule(gameRule); } } diff --git a/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs b/Content.Server/GameTicking/Rules/ServerNukeopsRuleSystem.cs similarity index 79% rename from Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs rename to Content.Server/GameTicking/Rules/ServerNukeopsRuleSystem.cs index 9b44691d20..599809db8c 100644 --- a/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/ServerNukeopsRuleSystem.cs @@ -1,32 +1,33 @@ -using Content.Server.Antag; +using System.Linq; +using System.Text; using Content.Server.Communications; using Content.Server.GameTicking.Rules.Components; using Content.Server.Nuke; using Content.Server.NukeOps; using Content.Server.Pinpointer; using Content.Server.Popups; -using Content.Server.Roles; using Content.Server.RoundEnd; using Content.Server.Shuttles.Events; using Content.Server.Shuttles.Systems; -using Content.Server.Station.Components; +using Content.Server.Station.Systems; using Content.Server.Store.Systems; using Content.Shared.Access.Systems; -using Content.Shared.GameTicking.Components; +using Content.Shared.GameTicking; +using Content.Shared.GameTicking.Rules; +using Content.Shared.GameTicking.Rules.Components; using Content.Shared.Mind; using Content.Shared.Mind.Components; using Content.Shared.Mobs; using Content.Shared.Mobs.Components; -using Content.Shared.NPC.Components; -using Content.Shared.NPC.Systems; using Content.Shared.Nuke; using Content.Shared.NukeOps; using Content.Shared.Roles; using Content.Shared.Roles.Components; using Content.Shared.Roles.Jobs; -using Content.Shared.Station; +using Content.Shared.RoundEnd; using Content.Shared.Station.Components; using Content.Shared.StationRecords; +using Content.Shared.StationRecords.Systems; using Content.Shared.Store; using Content.Shared.Store.Components; using Content.Shared.Tag; @@ -36,30 +37,24 @@ using Robust.Shared.Containers; using Robust.Shared.Map; using Robust.Shared.Network; using Robust.Shared.Prototypes; -using Robust.Shared.Random; using Robust.Shared.Utility; -using System.Data; -using System.Linq; -using System.Text; -using Content.Shared.StationRecords.Systems; namespace Content.Server.GameTicking.Rules; -public sealed partial class NukeopsRuleSystem : GameRuleSystem +/// +public sealed partial class ServerNukeopsRuleSystem : NukeopsRuleSystem { - [Dependency] private AntagSelectionSystem _antag = default!; [Dependency] private EmergencyShuttleSystem _emergency = default!; [Dependency] private SharedIdCardSystem _idCard = default!; [Dependency] private SharedJobSystem _jobs = default!; [Dependency] private IPlayerManager _player = default!; [Dependency] private SharedMindSystem _mind = default!; [Dependency] private NavMapSystem _navMap = default!; - [Dependency] private NpcFactionSystem _npcFaction = default!; [Dependency] private PopupSystem _popupSystem = default!; [Dependency] private RoundEndSystem _roundEndSystem = default!; [Dependency] private SharedContainerSystem _containers = default!; [Dependency] private SharedRoleSystem _roles = default!; - [Dependency] private SharedStationSystem _station = default!; + [Dependency] private ServerStationSystem _station = default!; [Dependency] private StationRecordsSystem _records = default!; [Dependency] private StoreSystem _store = default!; [Dependency] private TagSystem _tag = default!; @@ -67,68 +62,14 @@ public sealed partial class NukeopsRuleSystem : GameRuleSystem TelecrystalCurrencyPrototype = "Telecrystal"; private static readonly ProtoId NukeOpsUplinkTagPrototype = "NukeOpsUplink"; - // TODO: This shouldn't be matching by ProtoId. - // It would be better if this were checked by component or something, - // but it needs to be distinct between the full Nukeops and Loneops rules, - // which NukeopsRuleComponent currently isn't. - // Better yet, maybe the behaviors this is used for could be moved to the rule component. - private static readonly EntProtoId NukeopsGameRule = "Nukeops"; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnNukeExploded); - SubscribeLocalEvent(OnRunLevelChanged); - SubscribeLocalEvent(OnNukeDisarm); - - SubscribeLocalEvent(OnComponentRemove); - SubscribeLocalEvent(OnMobStateChanged); - SubscribeLocalEvent(OnOperativeZombified); - - SubscribeLocalEvent(OnGetBriefing); - - SubscribeLocalEvent(OnShuttleFTLAttempt); - SubscribeLocalEvent(OnWarDeclared); - SubscribeLocalEvent(OnShuttleCallAttempt); - - SubscribeLocalEvent(OnAfterAntagEntSelected); - SubscribeLocalEvent(OnRuleLoadedGrids); - } - - protected override void Started(EntityUid uid, - NukeopsRuleComponent component, - GameRuleComponent gameRule, - GameRuleStartedEvent args) - { - var eligible = new List>(); - var eligibleQuery = EntityQueryEnumerator(); - while (eligibleQuery.MoveNext(out var eligibleUid, out var eligibleComp, out var member)) - { - if (!_npcFaction.IsFactionHostile(component.Faction, (eligibleUid, member))) - continue; - - eligible.Add((eligibleUid, eligibleComp, member)); - } - - if (eligible.Count == 0) - return; - - component.TargetStation = RobustRandom.Pick(eligible); - var ev = new NukeopsTargetStationSelectedEvent(uid, component.TargetStation); - RaiseLocalEvent(ref ev); - } - #region Event Handlers - protected override void AppendRoundEndText(EntityUid uid, - NukeopsRuleComponent component, - GameRuleComponent gameRule, + protected override void AppendRoundEndText(Entity rule, ref RoundEndTextAppendEvent args) { - var winText = Loc.GetString($"nukeops-{component.WinType.ToString().ToLower()}"); + var winText = Loc.GetString($"nukeops-{rule.Comp.WinType.ToString().ToLower()}"); args.AddLine(winText); - foreach (var cond in component.WinConditions) + foreach (var cond in rule.Comp.WinConditions) { var text = Loc.GetString($"nukeops-cond-{cond.ToString().ToLower()}"); args.AddLine(text); @@ -136,7 +77,7 @@ public sealed partial class NukeopsRuleSystem : GameRuleSystem diskWinConditions = [WinCondition.NukeDiskOnCentCom, WinCondition.NukeDiskNotOnCentCom]; - if (component.WinConditions.Any(diskWinConditions.Contains)) + if (rule.Comp.WinConditions.Any(diskWinConditions.Contains)) { var diskQuery = AllEntityQuery(); while (diskQuery.MoveNext(out var diskUid, out _, out var transform)) @@ -193,7 +134,7 @@ public sealed partial class NukeopsRuleSystem : GameRuleSystem entity, ref ComponentRemove args) { CheckRoundShouldEnd(); } - private void OnMobStateChanged(EntityUid uid, NukeOperativeComponent component, MobStateChangedEvent ev) + [SubscribeLocalEvent] + private void OnMobStateChanged(Entity entity, ref MobStateChangedEvent ev) { if (ev.NewMobState == MobState.Dead) CheckRoundShouldEnd(); } - private void OnOperativeZombified(EntityUid uid, NukeOperativeComponent component, ref EntityZombifiedEvent args) + [SubscribeLocalEvent] + private void OnOperativeZombified(Entity entity, ref EntityZombifiedEvent args) { - RemCompDeferred(uid, component); + RemCompDeferred(entity, entity.Comp); } + [SubscribeLocalEvent] private void OnRuleLoadedGrids(Entity ent, ref RuleLoadedGridsEvent args) { // Check each nukie shuttle @@ -388,10 +339,11 @@ public sealed partial class NukeopsRuleSystem : GameRuleSystem ent, ref AfterAntagEntitySelectedEvent args) - { - var target = (ent.Comp.TargetStation is not null) ? Name(ent.Comp.TargetStation.Value) : "the target"; - - _antag.SendBriefing(args.Session, - Loc.GetString("nukeops-welcome", - ("station", target), - ("name", Name(ent))), - Color.Red, - ent.Comp.GreetSoundNotification); - } - - private void OnGetBriefing(Entity role, ref GetBriefingEvent args) - { - // TODO Different character screen briefing for the 3 nukie types - args.Append(Loc.GetString("nukeops-briefing")); - } - /// /// Is this method the shitty glue holding together the last of my sanity? yes. /// Do i have a better solution? not presently. @@ -704,20 +640,3 @@ public sealed partial class NukeopsRuleSystem : GameRuleSystem -/// Raised when a station has been assigned as a target for the NukeOps rule. -/// -[ByRefEvent] -public readonly struct NukeopsTargetStationSelectedEvent(EntityUid ruleEntity, EntityUid? targetStation) -{ - /// - /// The entity containing the NukeOps gamerule. - /// - public readonly EntityUid RuleEntity = ruleEntity; - - /// - /// The target station, if it exists. - /// - public readonly EntityUid? TargetStation = targetStation; -} diff --git a/Content.Server/GameTicking/Rules/RevolutionaryRuleSystem.cs b/Content.Server/GameTicking/Rules/ServerRevolutionaryRuleSystem.cs similarity index 87% rename from Content.Server/GameTicking/Rules/RevolutionaryRuleSystem.cs rename to Content.Server/GameTicking/Rules/ServerRevolutionaryRuleSystem.cs index 9a63c0fca1..a5648f6df6 100644 --- a/Content.Server/GameTicking/Rules/RevolutionaryRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/ServerRevolutionaryRuleSystem.cs @@ -1,8 +1,6 @@ using System.Linq; using Content.Server.Administration.Logs; -using Content.Server.Antag; using Content.Server.EUI; -using Content.Server.GameTicking.Rules.Components; using Content.Server.Mind; using Content.Server.Popups; using Content.Server.Revolutionary; @@ -11,12 +9,18 @@ using Content.Server.Roles; using Content.Server.RoundEnd; using Content.Server.Shuttles.Systems; using Content.Server.Station.Systems; +using Content.Shared.Antag; +using Content.Shared.Cuffs.Components; using Content.Shared.Database; using Content.Shared.Flash; +using Content.Shared.GameTicking; using Content.Shared.GameTicking.Components; +using Content.Shared.GameTicking.Rules; +using Content.Shared.GameTicking.Rules.Components; using Content.Shared.Humanoid; using Content.Shared.IdentityManagement; using Content.Shared.Mind.Components; +using Content.Shared.Mindshield; using Content.Shared.Mobs; using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; @@ -25,25 +29,20 @@ using Content.Shared.NPC.Systems; using Content.Shared.Revolutionary; using Content.Shared.Revolutionary.Components; using Content.Shared.Roles.Components; +using Content.Shared.RoundEnd; using Content.Shared.Stunnable; +using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Timing; -using Content.Shared.Cuffs.Components; -using Robust.Shared.Player; -using Content.Shared.Mindshield; namespace Content.Server.GameTicking.Rules; -/// -/// Where all the main stuff for Revolutionaries happens (Assigning Head Revs, Command on station, and checking for the game to end.) -/// -public sealed partial class RevolutionaryRuleSystem : GameRuleSystem +public sealed partial class ServerRevolutionaryRuleSystem : RevolutionaryRuleSystem { [Dependency] private AntagSelectionSystem _antag = default!; [Dependency] private EmergencyShuttleSystem _emergencyShuttle = default!; [Dependency] private EuiManager _euiMan = default!; [Dependency] private IAdminLogManager _adminLogManager = default!; - [Dependency] private IGameTiming _timing = default!; [Dependency] private ISharedPlayerManager _player = default!; [Dependency] private MindSystem _mind = default!; [Dependency] private MobStateSystem _mobState = default!; @@ -52,7 +51,7 @@ public sealed partial class RevolutionaryRuleSystem : GameRuleSystem(OnPostFlash); SubscribeLocalEvent(OnHeadRevMobStateChanged); - SubscribeLocalEvent(OnGetBriefing); - } - protected override void Started(EntityUid uid, RevolutionaryRuleComponent component, GameRuleComponent gameRule, GameRuleStartedEvent args) + protected override void Started(Entity entity, ref GameRuleStartedEvent args) { - base.Started(uid, component, gameRule, args); - component.CommandCheck = _timing.CurTime + component.TimerWait; + base.Started(entity, ref args); + entity.Comp1.CommandCheck = Timing.CurTime + entity.Comp1.TimerWait; } protected override void ActiveTick(EntityUid uid, RevolutionaryRuleComponent component, GameRuleComponent gameRule, float frameTime) { base.ActiveTick(uid, component, gameRule, frameTime); - if (component.CommandCheck <= _timing.CurTime) + if (component.CommandCheck <= Timing.CurTime) { - component.CommandCheck = _timing.CurTime + component.TimerWait; + component.CommandCheck = Timing.CurTime + component.TimerWait; if (CheckCommandLose()) { _roundEnd.DoRoundEndBehavior(RoundEndBehavior.ShuttleCall, component.ShuttleCallTime); - GameTicker.EndGameRule(uid, gameRule); + GameTicker.EndGameRule((uid, gameRule)); } } } - protected override void AppendRoundEndText(EntityUid uid, - RevolutionaryRuleComponent component, - GameRuleComponent gameRule, + protected override void AppendRoundEndText(Entity rule, ref RoundEndTextAppendEvent args) { - base.AppendRoundEndText(uid, component, gameRule, ref args); + base.AppendRoundEndText(rule, ref args); var revsLost = CheckRevsLose(); var commandLost = CheckCommandLose(); @@ -106,7 +101,7 @@ public sealed partial class RevolutionaryRuleSystem : GameRuleSystem(ent); - args.Append(Loc.GetString(head ? "head-rev-briefing" : "rev-briefing")); - } - /// /// Called when a Head Rev uses a flash in melee to convert somebody else. /// diff --git a/Content.Server/GameTicking/Rules/ServerTraitorRuleSystem.cs b/Content.Server/GameTicking/Rules/ServerTraitorRuleSystem.cs new file mode 100644 index 0000000000..da437ab7ee --- /dev/null +++ b/Content.Server/GameTicking/Rules/ServerTraitorRuleSystem.cs @@ -0,0 +1,60 @@ +using Content.Server.Objectives; +using Content.Server.Traitor.Uplink; +using Content.Shared.FixedPoint; +using Content.Shared.PDA; +using Content.Shared.GameTicking.Rules; +using Content.Shared.GameTicking.Rules.Components; + +namespace Content.Server.GameTicking.Rules; + +public sealed partial class ServerTraitorRuleSystem : TraitorRuleSystem +{ + [Dependency] private UplinkSystem _uplink = default!; + + public override void Initialize() + { + base.Initialize(); + + Log.Level = LogLevel.Debug; + } + + protected override (Note[]?, string) RequestUplink(EntityUid traitor, FixedPoint2 startingBalance, string briefing) + { + var pda = _uplink.FindUplinkTarget(traitor); + + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Uplink add"); + var uplinked = _uplink.AddUplink(traitor, startingBalance, out var code, pda, giveDiscounts: true, bindToPda: false); + + if (code != null && uplinked == AddUplinkResult.Pda) + { + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Uplink is PDA"); + + // If giveUplink is false the uplink code part is omitted + briefing = string.Format("{0}\n{1}", + briefing, + Loc.GetString("traitor-role-uplink-code-short", ("code", string.Join("-", code).Replace("sharp", "#")))); + return (code, briefing); + } + + if (uplinked == AddUplinkResult.Implant) + { + Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Uplink is implant"); + briefing += "\n" + Loc.GetString("traitor-role-uplink-implant-short"); + } + else + { + Log.Error($"MakeTraitor failed on {ToPrettyString(traitor)} - No uplink could be added"); + } + + + return (null, briefing); + } + + // TODO: AntagCodewordsComponent + [SubscribeLocalEvent] + private void OnObjectivesTextPrepend(EntityUid uid, TraitorRuleComponent comp, ref ObjectivesTextPrependEvent args) + { + if(comp.GiveCodewords) + args.Text += "\n" + Loc.GetString("traitor-round-end-codewords", ("codewords", string.Join(", ", Codeword.GetCodewords(comp.CodewordFactionPrototypeId)))); + } +} diff --git a/Content.Server/GameTicking/Rules/ServerXenoborgsRuleSystem.cs b/Content.Server/GameTicking/Rules/ServerXenoborgsRuleSystem.cs new file mode 100644 index 0000000000..69dce2495e --- /dev/null +++ b/Content.Server/GameTicking/Rules/ServerXenoborgsRuleSystem.cs @@ -0,0 +1,43 @@ +using Content.Server.RoundEnd; +using Content.Shared.GameTicking.Components; +using Content.Shared.GameTicking.Rules; +using Content.Shared.GameTicking.Rules.Components; +using Content.Shared.Objectives.Systems; +using Robust.Shared.Timing; + +namespace Content.Server.GameTicking.Rules; + +public sealed partial class ServerXenoborgsRuleSystem : XenoborgsRuleSystem +{ + [Dependency] private IGameTiming _timing = default!; + [Dependency] private RoundEndSystem _roundEnd = default!; + [Dependency] private AliveHumanoidTargetSystem _target = default!; + + protected override void ActiveTick(EntityUid uid, XenoborgsRuleComponent component, GameRuleComponent gameRule, float frameTime) + { + base.ActiveTick(uid, component, gameRule, frameTime); + + if (!component.NextRoundEndCheck.HasValue || component.NextRoundEndCheck > _timing.CurTime) + return; + + CheckRoundEnd(component); + component.NextRoundEndCheck = _timing.CurTime + component.EndCheckDelay; + } + + private void CheckRoundEnd(XenoborgsRuleComponent xenoborgsRuleComponent) + { + var numXenoborgs = GetNumberXenoborgs(); + var numHumans = _target.GetMinds().Count; + + xenoborgsRuleComponent.MaxNumberXenoborgs = Math.Max(xenoborgsRuleComponent.MaxNumberXenoborgs, numXenoborgs); + + if (xenoborgsRuleComponent.XenoborgShuttleCalled + || (float)numXenoborgs / (numHumans + numXenoborgs) <= xenoborgsRuleComponent.XenoborgShuttleCallPercentage + || _roundEnd.IsRoundEndRequested()) + return; + + GameTicker.StationAnnouncement("xenoborg-shuttle-call", color: Color.BlueViolet); + _roundEnd.RequestRoundEnd(null, null, false, cantRecall: true); + xenoborgsRuleComponent.XenoborgShuttleCalled = true; + } +} diff --git a/Content.Server/GameTicking/Rules/ServerZombieRuleSystem.cs b/Content.Server/GameTicking/Rules/ServerZombieRuleSystem.cs new file mode 100644 index 0000000000..f61d69b6de --- /dev/null +++ b/Content.Server/GameTicking/Rules/ServerZombieRuleSystem.cs @@ -0,0 +1,60 @@ +using Content.Server.Chat.Systems; +using Content.Server.Popups; +using Content.Server.RoundEnd; +using Content.Server.Zombies; +using Content.Shared.GameTicking.Components; +using Content.Shared.GameTicking.Rules; +using Content.Shared.GameTicking.Rules.Components; +using Content.Shared.Zombies; + +namespace Content.Server.GameTicking.Rules; + +public sealed partial class ServerZombieRuleSystem : ZombieRuleSystem +{ + [Dependency] private ChatSystem _chat = default!; + [Dependency] private PopupSystem _popup = default!; + [Dependency] private RoundEndSystem _roundEnd = default!; + [Dependency] private ZombieSystem _zombie = default!; + + protected override void ActiveTick(EntityUid uid, ZombieRuleComponent component, GameRuleComponent gameRule, float frameTime) + { + base.ActiveTick(uid, component, gameRule, frameTime); + if (!component.NextRoundEndCheck.HasValue || component.NextRoundEndCheck > Timing.CurTime) + return; + CheckRoundEnd(component); + component.NextRoundEndCheck = Timing.CurTime + component.EndCheckDelay; + } + + /// + /// The big kahoona function for checking if the round is gonna end + /// + private void CheckRoundEnd(ZombieRuleComponent zombieRuleComponent) + { + var healthy = GetHealthyHumans(); + if (healthy.Count == 1) // Only one human left. spooky + _popup.PopupEntity(Loc.GetString("zombie-alone"), healthy[0], healthy[0]); + + if (GetInfectedFraction(false) > zombieRuleComponent.ZombieShuttleCallPercentage && !_roundEnd.IsRoundEndRequested()) + { + foreach (var station in Station.GetStations()) + { + _chat.DispatchStationAnnouncement(station, Loc.GetString("zombie-shuttle-call"), colorOverride: Color.Crimson); + } + + _roundEnd.DoRoundEndBehavior(zombieRuleComponent.ZombieRoundEndBehavior, zombieRuleComponent.ZombieEvacShuttleTime); + } + + // we include dead for this count because we don't want to end the round + // when everyone gets on the shuttle. + if (GetInfectedFraction() >= 1) // Oops, all zombies + _roundEnd.EndRound(); + } + + [SubscribeLocalEvent] + private void OnZombifySelf(EntityUid uid, IncurableZombieComponent component, ZombifySelfActionEvent args) + { + _zombie.ZombifyEntity(uid); + if (component.Action != null) + Del(component.Action.Value); + } +} diff --git a/Content.Server/GameTicking/Rules/SubGamemodesSystem.cs b/Content.Server/GameTicking/Rules/SubGamemodesSystem.cs index 069a4d5ccc..ff58164a40 100644 --- a/Content.Server/GameTicking/Rules/SubGamemodesSystem.cs +++ b/Content.Server/GameTicking/Rules/SubGamemodesSystem.cs @@ -1,5 +1,6 @@ using Content.Server.GameTicking.Rules.Components; using Content.Shared.GameTicking.Components; +using Content.Shared.GameTicking.Rules; using Content.Shared.Storage; namespace Content.Server.GameTicking.Rules; diff --git a/Content.Server/GameTicking/Rules/VariationPass/EntitySpawnVariationPassSystem.cs b/Content.Server/GameTicking/Rules/VariationPass/EntitySpawnVariationPassSystem.cs index 9014ad0e4d..1e9653de35 100644 --- a/Content.Server/GameTicking/Rules/VariationPass/EntitySpawnVariationPassSystem.cs +++ b/Content.Server/GameTicking/Rules/VariationPass/EntitySpawnVariationPassSystem.cs @@ -16,7 +16,7 @@ public sealed partial class EntitySpawnVariationPassSystem : VariationPassSystem for (var i = 0; i < trashTiles; i++) { - if (!TryFindRandomTileOnStation(args.Station, out _, out _, out var coords)) + if (!Stations.TryFindRandomTileOnStation(args.Station, out _, out _, out var coords)) continue; var ents = EntitySpawnCollection.GetSpawns(ent.Comp.Entities, Random); diff --git a/Content.Server/GameTicking/Rules/VariationPass/PuddleMessVariationPassSystem.cs b/Content.Server/GameTicking/Rules/VariationPass/PuddleMessVariationPassSystem.cs index 360c3378bc..28d880eca2 100644 --- a/Content.Server/GameTicking/Rules/VariationPass/PuddleMessVariationPassSystem.cs +++ b/Content.Server/GameTicking/Rules/VariationPass/PuddleMessVariationPassSystem.cs @@ -23,7 +23,7 @@ public sealed partial class PuddleMessVariationPassSystem : VariationPassSystem< for (var i = 0; i < puddleTiles; i++) { - if (!TryFindRandomTileOnStation(args.Station, out _, out _, out var coords)) + if (!Stations.TryFindRandomTileOnStation(args.Station, out _, out _, out var coords)) continue; var sol = proto.Pick(Random); diff --git a/Content.Server/GameTicking/Rules/VariationPass/VariationPassSystem.cs b/Content.Server/GameTicking/Rules/VariationPass/VariationPassSystem.cs index ff64b168f1..41df08a449 100644 --- a/Content.Server/GameTicking/Rules/VariationPass/VariationPassSystem.cs +++ b/Content.Server/GameTicking/Rules/VariationPass/VariationPassSystem.cs @@ -1,4 +1,5 @@ using Content.Server.Station.Systems; +using Content.Shared.GameTicking.Rules; using Robust.Shared.Random; namespace Content.Server.GameTicking.Rules.VariationPass; @@ -10,7 +11,7 @@ namespace Content.Server.GameTicking.Rules.VariationPass; public abstract partial class VariationPassSystem : GameRuleSystem where T: IComponent { - [Dependency] protected StationSystem Stations = default!; + [Dependency] protected ServerStationSystem Stations = default!; [Dependency] protected IRobustRandom Random = default!; public override void Initialize() diff --git a/Content.Server/GameTicking/ServerGameTicker.CVars.cs b/Content.Server/GameTicking/ServerGameTicker.CVars.cs new file mode 100644 index 0000000000..d147093008 --- /dev/null +++ b/Content.Server/GameTicking/ServerGameTicker.CVars.cs @@ -0,0 +1,101 @@ +using Content.Server.Discord; +using Content.Shared.CCVar; +using Content.Shared.GameTicking; + +namespace Content.Server.GameTicking; + +public sealed partial class ServerGameTicker +{ + [ViewVariables] + public bool LobbyEnabled { get; private set; } + + [ViewVariables] + public bool DummyTicker { get; private set; } = false; + + [ViewVariables] + public TimeSpan LobbyDuration { get; private set; } = TimeSpan.Zero; + + [ViewVariables] + public bool DisallowLateJoin { get; private set; } = false; + + [ViewVariables] + public string? ServerName { get; private set; } + + [ViewVariables] + private string? DiscordRoundEndRole { get; set; } + + private WebhookIdentifier? _webhookIdentifier; + + [ViewVariables] + private string? RoundEndSoundCollection { get; set; } + +#if EXCEPTION_TOLERANCE + [ViewVariables] + public int RoundStartFailShutdownCount { get; private set; } = 0; +#endif + + protected override void InitializeCVars() + { + base.InitializeCVars(); + + Subs.CVar(Cfg, CCVars.ICRandomCharacters, e => _randomizeCharacters = e, true); + Subs.CVar(Cfg, + CCVars.GameLobbyEnabled, + value => + { + LobbyEnabled = value; + foreach (var (userId, status) in _playerGameStatuses) + { + if (status == PlayerGameStatus.JoinedGame) + continue; + _playerGameStatuses[userId] = + LobbyEnabled ? PlayerGameStatus.NotReadyToPlay : PlayerGameStatus.ReadyToPlay; + } + }, + true); + Subs.CVar(Cfg, CCVars.GameDummyTicker, value => DummyTicker = value, true); + Subs.CVar(Cfg, CCVars.GameLobbyDuration, value => LobbyDuration = TimeSpan.FromSeconds(value), true); + Subs.CVar(Cfg, + CCVars.GameDisallowLateJoins, + value => + { + DisallowLateJoin = value; + UpdateLateJoinStatus(); + }, + true); + Subs.CVar(Cfg, + CCVars.AdminLogsServerName, + value => + { + // TODO why tf is the server name on admin logs + ServerName = value; + }, + true); + Subs.CVar(Cfg, + CCVars.DiscordRoundUpdateWebhook, + value => + { + if (!string.IsNullOrWhiteSpace(value)) + { + _discord.GetWebhook(value, data => _webhookIdentifier = data.ToIdentifier()); + } + }, + true); + Subs.CVar(Cfg, + CCVars.DiscordRoundEndRoleWebhook, + value => + { + DiscordRoundEndRole = value; + + if (value == string.Empty) + { + DiscordRoundEndRole = null; + } + }, + true); + Subs.CVar(Cfg, CCVars.RoundEndSoundCollection, value => RoundEndSoundCollection = value, true); +#if EXCEPTION_TOLERANCE + Subs.CVar(Cfg, CCVars.RoundStartFailShutdownCount, value => RoundStartFailShutdownCount = value, true); +#endif + } +} diff --git a/Content.Server/GameTicking/ServerGameTicker.Chat.cs b/Content.Server/GameTicking/ServerGameTicker.Chat.cs new file mode 100644 index 0000000000..712562db85 --- /dev/null +++ b/Content.Server/GameTicking/ServerGameTicker.Chat.cs @@ -0,0 +1,40 @@ +using Content.Shared.Station.Components; +using Robust.Shared.Audio; +using Robust.Shared.Map; +using Robust.Shared.Player; + +namespace Content.Server.GameTicking; + +public sealed partial class ServerGameTicker +{ + public override void GameAnnouncement(LocId announcement, SoundSpecifier? announcementSound = null, Color? color = null) + { + var filter = Filter.Empty().AddWhere(UserHasJoinedGame); + Chat.DispatchFilteredAnnouncement(filter, Loc.GetString(announcement), announcementSound: announcementSound, colorOverride: color); + } + + public override void MapAnnouncement(MapId map, LocId announcement, SoundSpecifier? announcementSound = null, Color? color = null) + { + var filter = Filter.Empty().AddInMap(map); + Chat.DispatchFilteredAnnouncement(filter, Loc.GetString(announcement), announcementSound: announcementSound, colorOverride: color); + } + + public override void StationMapAnnouncement(Entity station, LocId announcement, SoundSpecifier? announcementSound = null, Color? color = null) + { + var filter = Station.GetOnMap(station.Comp); + Chat.DispatchFilteredAnnouncement(filter, Loc.GetString(announcement), announcementSound: announcementSound, colorOverride: color); + } + + public override void StationAnnouncement(LocId announcement, SoundSpecifier? announcementSound = null, Color? color = null) + { + foreach (var station in Station.GetStations()) + { + StationAnnouncement(station, announcement, announcementSound, color); + } + } + + public override void StationAnnouncement(EntityUid station, LocId announcement, SoundSpecifier? announcementSound = null, Color? color = null) + { + _chatSystem.DispatchStationAnnouncement(station, Loc.GetString(announcement), announcementSound: announcementSound, colorOverride: color); + } +} diff --git a/Content.Server/GameTicking/GameTicker.GamePreset.cs b/Content.Server/GameTicking/ServerGameTicker.GamePreset.cs similarity index 75% rename from Content.Server/GameTicking/GameTicker.GamePreset.cs rename to Content.Server/GameTicking/ServerGameTicker.GamePreset.cs index 9a473cd4e6..ac3f754f36 100644 --- a/Content.Server/GameTicking/GameTicker.GamePreset.cs +++ b/Content.Server/GameTicking/ServerGameTicker.GamePreset.cs @@ -1,18 +1,14 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Threading.Tasks; -using Content.Server.GameTicking.Presets; -using Content.Server.Maps; using Content.Shared.CCVar; -using Content.Shared.GameTicking.Components; +using Content.Shared.GameTicking.Prototypes; using Content.Shared.Maps; -using JetBrains.Annotations; using Robust.Shared.Player; -using Robust.Shared.Prototypes; namespace Content.Server.GameTicking; -public sealed partial class GameTicker +public sealed partial class ServerGameTicker { public const float PresetFailedCooldownIncrease = 30f; @@ -38,7 +34,7 @@ public sealed partial class GameTicker private bool StartPreset(ICommonSession[] origReadyPlayers, bool force) { - _sawmill.Info($"Attempting to start preset '{CurrentPreset?.ID}'"); + Log.Info($"Attempting to start preset '{CurrentPreset?.ID}'"); var startAttempt = new RoundStartAttemptEvent(origReadyPlayers, force); RaiseLocalEvent(startAttempt); @@ -55,17 +51,17 @@ public sealed partial class GameTicker DelayStart(TimeSpan.FromSeconds(PresetFailedCooldownIncrease)); } - if (_cfg.GetCVar(CCVars.GameLobbyFallbackEnabled)) + if (Cfg.GetCVar(CCVars.GameLobbyFallbackEnabled)) { - var fallbackPresets = _cfg.GetCVar(CCVars.GameLobbyFallbackPreset).Split(","); + var fallbackPresets = Cfg.GetCVar(CCVars.GameLobbyFallbackPreset).Split(","); var startFailed = true; - _sawmill.Info($"Fallback - Failed to start round, attempting to start fallback presets."); + Log.Info($"Fallback - Failed to start round, attempting to start fallback presets."); foreach (var preset in fallbackPresets) { - _sawmill.Info($"Fallback - Clearing up gamerules"); + Log.Info($"Fallback - Clearing up gamerules"); ClearGameRules(); - _sawmill.Info($"Fallback - Attempting to start '{preset}'"); + Log.Info($"Fallback - Attempting to start '{preset}'"); SetGamePreset(preset, resetDelay: 1); AddGamePresetRules(); StartGamePresetRules(); @@ -83,7 +79,7 @@ public sealed partial class GameTicker startFailed = false; break; } - _sawmill.Info($"Fallback - '{preset}' failed to start."); + Log.Info($"Fallback - '{preset}' failed to start."); } if (startFailed) @@ -95,7 +91,7 @@ public sealed partial class GameTicker else { - _sawmill.Info($"Fallback - Failed to start preset but fallbacks are disabled. Returning to Lobby."); + Log.Info($"Fallback - Failed to start preset but fallbacks are disabled. Returning to Lobby."); FailedPresetRestart(); return false; } @@ -105,7 +101,7 @@ public sealed partial class GameTicker private void InitializeGamePreset() { - SetGamePreset(LobbyEnabled ? _cfg.GetCVar(CCVars.GameLobbyDefaultPreset) : "sandbox"); + SetGamePreset(LobbyEnabled ? Cfg.GetCVar(CCVars.GameLobbyDefaultPreset) : "sandbox"); } public void SetGamePreset(GamePresetPrototype? preset, bool force = false, GamePresetPrototype? decoy = null, int? resetDelay = null) @@ -203,7 +199,7 @@ public sealed partial class GameTicker CurrentPreset = Preset; foreach (var rule in Preset.Rules) { - AddFilteredGameRule(rule); + AddGameRule(rule); } return true; @@ -228,44 +224,9 @@ public sealed partial class GameTicker } } - /// - [PublicAPI] - public int GetMinimumPlayerCount(ProtoId proto) - { - if (!ProtoMan.Resolve(proto, out var preset)) - return 0; - - return GetMinimumPlayerCount(preset); - } - - /// - /// Gets the minimum number of players required for a game preset to start. - /// Checks both the preset itself, and all rules to find the minimum. - /// - /// Game preset prototype we're checking. - /// Minimum number of players required for the rule to start. - [PublicAPI] - public int GetMinimumPlayerCount(GamePresetPrototype proto) - { - var min = proto.MinPlayers ?? 0; - foreach (var entProto in proto.Rules) - { - if (!ProtoMan.Resolve(entProto, out var ent)) - continue; - - if (!ent.TryComp(out var rule, Factory)) - continue; - - min = Math.Max(min, rule.MinPlayers); - } - - return min; - } - private void IncrementRoundNumber() { var playerIds = _playerGameStatuses.Keys.Select(player => player.UserId).ToArray(); - var serverName = _cfg.GetCVar(CCVars.AdminLogsServerName); // TODO FIXME AAAAAAAAAAAAAAAAAAAH THIS IS BROKEN // Task.Run as a terrible dirty workaround to avoid synchronization context deadlock from .Result here. diff --git a/Content.Server/GameTicking/ServerGameTicker.GameRule.cs b/Content.Server/GameTicking/ServerGameTicker.GameRule.cs new file mode 100644 index 0000000000..32f7d8afdc --- /dev/null +++ b/Content.Server/GameTicking/ServerGameTicker.GameRule.cs @@ -0,0 +1,240 @@ +using System.Linq; +using System.Text; +using Content.Server.Administration; +using Content.Shared.Administration; +using Content.Shared.Database; +using Content.Shared.GameTicking; +using Content.Shared.GameTicking.Components; +using Robust.Shared.Console; +using Robust.Shared.Prototypes; + +namespace Content.Server.GameTicking; + +public sealed partial class ServerGameTicker +{ + private void InitializeGameRules() + { + // Add game rule command. + _consoleHost.RegisterCommand("addgamerule", + string.Empty, + "addgamerule ", + AddGameRuleCommand, + AddGameRuleCompletions); + + // End game rule command. + _consoleHost.RegisterCommand("endgamerule", + string.Empty, + "endgamerule ", + EndGameRuleCommand, + EndGameRuleCompletions); + + // Clear game rules command. + _consoleHost.RegisterCommand("cleargamerules", + string.Empty, + "cleargamerules", + ClearGameRulesCommand); + + // List game rules command. + var localizedHelp = Loc.GetString("listgamerules-command-help"); + + _consoleHost.RegisterCommand("listgamerules", + string.Empty, + $"listgamerules - {localizedHelp}", + ListGameRuleCommand); + + SubscribeLocalEvent(OnStartAttempt); + } + + private void ShutdownGameRules() + { + _consoleHost.UnregisterCommand("addgamerule"); + _consoleHost.UnregisterCommand("endgamerule"); + _consoleHost.UnregisterCommand("cleargamerules"); + _consoleHost.UnregisterCommand("listgamerules"); + } + + /// + /// Adds a game rule to the list, but does not + /// start it yet, instead waiting until the rule is actually started by other code (usually roundstart) + /// + /// The entity for the added gamerule + protected override Entity SpawnGameRule(EntProtoId ruleId) + { + var ruleEntity = base.SpawnGameRule(ruleId); + var str = Loc.GetString("station-event-system-run-event", ("eventName", ToPrettyString(ruleEntity))); +#if DEBUG + _chatManager.SendAdminAlert(str); +#else + if (RunLevel == GameRunLevel.InRound) // avoids telling admins the round type before it starts so that can be handled elsewhere. + _chatManager.SendAdminAlert(str); +#endif + Log.Info(str); + + return ruleEntity; + } + + public void ClearGameRules() + { + foreach (var rule in GetAddedGameRules()) + { + EndGameRule(rule); + } + } + + private void UpdateGameRules() + { + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var delay, out var rule)) + { + if (Timing.CurTime < delay.RuleStartTime) + continue; + + StartGameRule((uid, rule)); + } + } + + private void OnStartAttempt(RoundStartAttemptEvent args) + { + if (args.Forced || args.Cancelled) + return; + + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var gameRule)) + { + var minPlayers = gameRule.MinPlayers; + var name = ToPrettyString(uid); + + if (args.Players.Length >= minPlayers) + continue; + + if (gameRule.CancelPresetOnTooFewPlayers) + { + _chatManager.SendAdminAnnouncement(Loc.GetString("preset-not-enough-ready-players", + ("readyPlayersCount", args.Players.Length), + ("minimumPlayers", minPlayers), + ("presetName", name))); + args.Cancel(); + //TODO remove this once announcements are logged + Log.Info($"Rule '{name}' requires {minPlayers} players, but only {args.Players.Length} are ready."); + } + else + { + EndGameRule((uid, gameRule)); + } + } + } + + #region Command Implementations + + [AdminCommand(AdminFlags.Fun)] + private void AddGameRuleCommand(IConsoleShell shell, string argstr, string[] args) + { + if (args.Length == 0) + return; + + foreach (var rule in args) + { + if (!ProtoMan.HasIndex(rule)) + { + shell.WriteError($"Invalid game rule {rule} was skipped."); + + continue; + } + + if (shell.Player != null) + { + Admin.Add(LogType.EventStarted, $"{shell.Player} tried to add game rule [{rule}] via command"); + _chatManager.SendAdminAnnouncement(Loc.GetString("add-gamerule-admin", ("rule", rule), ("admin", shell.Player))); + } + else + { + Admin.Add(LogType.EventStarted, $"Unknown tried to add game rule [{rule}] via command"); + } + var ent = SpawnGameRule(rule); + + // Start rule if we're already in the middle of a round + // TODO: DO WE EVEN NEED THIS CHECK??? + if (RunLevel == GameRunLevel.InRound) + StartGameRule(ent.AsNullable()); + } + } + + private CompletionResult AddGameRuleCompletions(IConsoleShell shell, string[] args) + { + return CompletionResult.FromHintOptions(GetAllGameRulePrototypes().Select(p => p.ID), ""); + } + + [AdminCommand(AdminFlags.Fun)] + private void EndGameRuleCommand(IConsoleShell shell, string argstr, string[] args) + { + if (args.Length == 0) + return; + + foreach (var rule in args) + { + if (!NetEntity.TryParse(rule, out var ruleEntNet) || !TryGetEntity(ruleEntNet, out var ruleEnt)) + continue; + if (shell.Player != null) + { + Admin.Add(LogType.EventStopped, $"{shell.Player} tried to end game rule [{rule}] via command"); + } + else + { + Admin.Add(LogType.EventStopped, $"Unknown tried to end game rule [{rule}] via command"); + } + + EndGameRule(ruleEnt.Value); + } + } + + private CompletionResult EndGameRuleCompletions(IConsoleShell shell, string[] args) + { + var opts = GetAddedGameRules().Select(ent => new CompletionOption(ent.ToString(), ToPrettyString(ent))).ToList(); + return CompletionResult.FromHintOptions(opts, ""); + } + + [AdminCommand(AdminFlags.Fun)] + private void ClearGameRulesCommand(IConsoleShell shell, string argstr, string[] args) + { + ClearGameRules(); + } + + [AdminCommand(AdminFlags.Admin)] + private void ListGameRuleCommand(IConsoleShell shell, string argstr, string[] args) + { + Log.Info($"{shell.Player} tried to get list of game rules via command"); + Admin.Add(LogType.Action, $"{shell.Player} tried to get list of game rules via command"); + var message = GetGameRulesListMessage(false); + shell.WriteLine(message); + } + + private string GetGameRulesListMessage(bool forChatWindow) + { + if (AllRoundGameRules.Count > 0) + { + var message = new StringBuilder(); + message.AppendLine(); + + if (!forChatWindow) + { + var header = Loc.GetString("list-gamerule-admin-header"); + message.AppendLine(); + message.AppendLine(header); + message.AppendLine("|------------|---------------------------"); + } + + foreach (var (time, rule, stage) in AllRoundGameRules) + { + var formattedTime = time.ToString(@"hh\:mm\:ss"); + var name = RuleToString(rule, stage); + message.AppendLine($"| {formattedTime,-10} | {name,-24} "); + } + + return message.ToString().TrimEnd('\n'); + } + + return Loc.GetString("list-gamerule-admin-no-rules"); + } + + #endregion +} diff --git a/Content.Server/GameTicking/ServerGameTicker.Lobby.cs b/Content.Server/GameTicking/ServerGameTicker.Lobby.cs new file mode 100644 index 0000000000..7098562198 --- /dev/null +++ b/Content.Server/GameTicking/ServerGameTicker.Lobby.cs @@ -0,0 +1,187 @@ +using System.Linq; +using Content.Shared.GameTicking; +using Robust.Shared.Network; +using Robust.Shared.Player; +using System.Text; +using Content.Shared.Station.Components; + +namespace Content.Server.GameTicking; + +public sealed partial class ServerGameTicker +{ + [ViewVariables] + private readonly Dictionary _playerGameStatuses = new(); + + [ViewVariables] + private TimeSpan _roundStartTime; + + /// + /// How long before RoundStartTime do we load maps. + /// + [ViewVariables] + public TimeSpan RoundPreloadTime { get; } = TimeSpan.FromSeconds(15); + + [ViewVariables] + private TimeSpan _pauseTime; + + [ViewVariables] + public new bool Paused { get; set; } + + [ViewVariables] + private bool _roundStartCountdownHasNotStartedYetDueToNoPlayers; + + /// + /// The game status of a players user Id. May contain disconnected players + /// + public IReadOnlyDictionary PlayerGameStatuses => _playerGameStatuses; + + public void UpdateInfoText() + { + RaiseNetworkEvent(GetInfoMsg(), Filter.Empty().AddPlayers(_playerManager.NetworkedSessions)); + } + + // TODO: You can move this to shared. + // TODO: You *should* move this to shared >:) + // TODO: If you are reading this, move this to shared! + private string GetInfoText() + { + var preset = CurrentPreset ?? Preset; + if (preset == null) + { + return string.Empty; + } + + var playerCount = $"{_playerManager.PlayerCount}"; + var readyCount = _playerGameStatuses.Values.Count(x => x == PlayerGameStatus.ReadyToPlay); + + var stationNames = new StringBuilder(); + var query = + EntityQueryEnumerator(); + + var foundOne = false; + + while (query.MoveNext(out _, out _, out var meta)) + { + foundOne = true; + if (stationNames.Length > 0) + stationNames.Append('\n'); + + stationNames.Append(meta.EntityName); + } + + if (!foundOne) + { + stationNames.Append(_gameMapManager.GetSelectedMap()?.MapName ?? + Loc.GetString("game-ticker-no-map-selected")); + } + + var gmTitle = (Decoy == null) ? Loc.GetString(preset.ModeTitle) : Loc.GetString(Decoy.ModeTitle); + var desc = (Decoy == null) ? Loc.GetString(preset.Description) : Loc.GetString(Decoy.Description); + return Loc.GetString( + RunLevel == GameRunLevel.PreRoundLobby + ? "game-ticker-get-info-preround-text" + : "game-ticker-get-info-text", + ("roundId", RoundId), + ("playerCount", playerCount), + ("readyCount", readyCount), + ("mapName", stationNames.ToString()), + ("gmTitle", gmTitle), + ("desc", desc)); + } + + private TickerConnectionStatusEvent GetConnectionStatusMsg() + { + return new TickerConnectionStatusEvent(RoundStartTimeSpan); + } + + private TickerLobbyStatusEvent GetStatusMsg(ICommonSession session) + { + _playerGameStatuses.TryGetValue(session.UserId, out var status); + return new TickerLobbyStatusEvent(RunLevel != GameRunLevel.PreRoundLobby, LobbyBackground, status == PlayerGameStatus.ReadyToPlay, _roundStartTime, RoundPreloadTime, RoundStartTimeSpan, Paused); + } + + private void SendStatusToAll() + { + foreach (var player in _playerManager.Sessions) + { + RaiseNetworkEvent(GetStatusMsg(player), player.Channel); + } + } + + private TickerLobbyInfoEvent GetInfoMsg() + { + return new(GetInfoText()); + } + + private void UpdateLateJoinStatus() + { + RaiseNetworkEvent(new TickerLateJoinStatusEvent(DisallowLateJoin)); + } + + public bool PauseStart(bool pause = true) + { + if (Paused == pause) + { + return false; + } + + Paused = pause; + + if (pause) + { + _pauseTime = Timing.CurTime; + } + else if (_pauseTime != default) + { + _roundStartTime += Timing.CurTime - _pauseTime; + } + + RaiseNetworkEvent(new TickerLobbyCountdownEvent(_roundStartTime, Paused)); + + _chatManager.DispatchServerAnnouncement(Loc.GetString(Paused + ? "game-ticker-pause-start" + : "game-ticker-pause-start-resumed")); + + return true; + } + + public bool TogglePause() + { + PauseStart(!Paused); + return Paused; + } + + public void ToggleReadyAll(bool ready) + { + var status = ready ? PlayerGameStatus.ReadyToPlay : PlayerGameStatus.NotReadyToPlay; + foreach (var playerUserId in _playerGameStatuses.Keys) + { + _playerGameStatuses[playerUserId] = status; + if (!_playerManager.TryGetSessionById(playerUserId, out var playerSession)) + continue; + RaiseNetworkEvent(GetStatusMsg(playerSession), playerSession.Channel); + } + } + + public void ToggleReady(ICommonSession player, bool ready) + { + if (!_playerGameStatuses.ContainsKey(player.UserId)) + return; + + if (!_userDb.IsLoadComplete(player)) + return; + + if (RunLevel != GameRunLevel.PreRoundLobby) + { + return; + } + + _playerGameStatuses[player.UserId] = ready ? PlayerGameStatus.ReadyToPlay : PlayerGameStatus.NotReadyToPlay; + RaiseNetworkEvent(GetStatusMsg(player), player.Channel); + // update server info to reflect new ready count + UpdateInfoText(); + } + + public override bool UserHasJoinedGame(NetUserId userId) + => PlayerGameStatuses.TryGetValue(userId, out var status) && status == PlayerGameStatus.JoinedGame; +} diff --git a/Content.Server/GameTicking/GameTicker.LobbyBackground.cs b/Content.Server/GameTicking/ServerGameTicker.LobbyBackground.cs similarity index 92% rename from Content.Server/GameTicking/GameTicker.LobbyBackground.cs rename to Content.Server/GameTicking/ServerGameTicker.LobbyBackground.cs index bf522919a3..21b50b1bf3 100644 --- a/Content.Server/GameTicking/GameTicker.LobbyBackground.cs +++ b/Content.Server/GameTicking/ServerGameTicker.LobbyBackground.cs @@ -5,7 +5,7 @@ using System.Linq; namespace Content.Server.GameTicking; -public sealed partial class GameTicker +public sealed partial class ServerGameTicker { [ViewVariables] public ProtoId? LobbyBackground { get; private set; } @@ -37,7 +37,7 @@ public sealed partial class GameTicker private void RandomizeLobbyBackground() { if (_lobbyBackgrounds != null && _lobbyBackgrounds.Count != 0) - LobbyBackground = _robustRandom.Pick(_lobbyBackgrounds); + LobbyBackground = Random.Pick(_lobbyBackgrounds); else LobbyBackground = null; } diff --git a/Content.Server/GameTicking/GameTicker.Player.cs b/Content.Server/GameTicking/ServerGameTicker.Player.cs similarity index 85% rename from Content.Server/GameTicking/GameTicker.Player.cs rename to Content.Server/GameTicking/ServerGameTicker.Player.cs index 1ccfed4a88..5f99a02c12 100644 --- a/Content.Server/GameTicking/GameTicker.Player.cs +++ b/Content.Server/GameTicking/ServerGameTicker.Player.cs @@ -16,7 +16,7 @@ using Robust.Shared.Utility; namespace Content.Server.GameTicking { [UsedImplicitly] - public sealed partial class GameTicker + public sealed partial class ServerGameTicker { [Dependency] private IPlayerManager _playerManager = default!; @@ -29,7 +29,7 @@ namespace Content.Server.GameTicking { var session = args.Session; - if (_mind.TryGetMind(session.UserId, out var mindId, out var mind)) + if (Mind.TryGetMind(session.UserId, out var mindId, out var mind)) { if (args.NewStatus != SessionStatus.Disconnected) { @@ -67,15 +67,15 @@ namespace Content.Server.GameTicking RaiseNetworkEvent(GetConnectionStatusMsg(), session.Channel); - if (firstConnection && _cfg.GetCVar(CCVars.AdminNewPlayerJoinSound)) - _audio.PlayGlobal(new SoundPathSpecifier("/Audio/Effects/newplayerping.ogg"), + if (firstConnection && Cfg.GetCVar(CCVars.AdminNewPlayerJoinSound)) + Audio.PlayGlobal(new SoundPathSpecifier("/Audio/Effects/newplayerping.ogg"), Filter.Empty().AddPlayers(_adminManager.ActiveAdmins), false, audioParams: new AudioParams { Volume = -5f }); if (LobbyEnabled && _roundStartCountdownHasNotStartedYetDueToNoPlayers) { _roundStartCountdownHasNotStartedYetDueToNoPlayers = false; - _roundStartTime = _gameTiming.CurTime + LobbyDuration; + _roundStartTime = Timing.CurTime + LobbyDuration; } break; @@ -92,7 +92,7 @@ namespace Content.Server.GameTicking else SpawnWaitDb(); - _adminLogger.Add(LogType.Connection, LogImpact.Low, $"User {args.Session:Player} attached to {(args.Session.AttachedEntity != null ? ToPrettyString(args.Session.AttachedEntity) : "nothing"):entity} connected to the game."); + Admin.Add(LogType.Connection, LogImpact.Low, $"User {args.Session:Player} attached to {(args.Session.AttachedEntity != null ? ToPrettyString(args.Session.AttachedEntity) : "nothing"):entity} connected to the game."); break; } @@ -119,7 +119,7 @@ namespace Content.Server.GameTicking } } - _adminLogger.Add(LogType.Connection, LogImpact.Low, $"User {args.Session:Player} attached to {(args.Session.AttachedEntity != null ? ToPrettyString(args.Session.AttachedEntity) : "nothing"):entity} connected to the game."); + Admin.Add(LogType.Connection, LogImpact.Low, $"User {args.Session:Player} attached to {(args.Session.AttachedEntity != null ? ToPrettyString(args.Session.AttachedEntity) : "nothing"):entity} connected to the game."); break; } @@ -134,7 +134,7 @@ namespace Content.Server.GameTicking _userDb.ClientDisconnected(session); - _adminLogger.Add(LogType.Connection, LogImpact.Low, $"User {args.Session:Player} attached to {(args.Session.AttachedEntity != null ? ToPrettyString(args.Session.AttachedEntity) : "nothing"):entity} disconnected from the game."); + Admin.Add(LogType.Connection, LogImpact.Low, $"User {args.Session:Player} attached to {(args.Session.AttachedEntity != null ? ToPrettyString(args.Session.AttachedEntity) : "nothing"):entity} disconnected from the game."); break; } } @@ -175,7 +175,7 @@ namespace Content.Server.GameTicking async void AddPlayerToDb(Guid id) { - if (RoundId != 0 && _runLevel != GameRunLevel.PreRoundLobby) + if (RoundId != 0 && RunLevel != GameRunLevel.PreRoundLobby) { await _db.AddRoundPlayers(RoundId, id); } @@ -187,7 +187,7 @@ namespace Content.Server.GameTicking return (HumanoidCharacterProfile) _prefsManager.GetPreferences(p.UserId).SelectedCharacter; } - public void PlayerJoinGame(ICommonSession session, bool silent = false) + public override void PlayerJoinGame(ICommonSession session, bool silent = false) { if (!silent) _chatManager.DispatchServerMessage(session, Loc.GetString("game-ticker-player-join-game-message")); @@ -197,13 +197,15 @@ namespace Content.Server.GameTicking if (_adminManager.HasAdminFlag(session, AdminFlags.Admin)) { - if (_allPreviousGameRules.Count > 0) + if (AllRoundGameRules.Count > 0) { + // TODO: Try version of this method var rulesMessage = GetGameRulesListMessage(true); _chatManager.SendAdminAnnouncementMessage(session, Loc.GetString("starting-rule-selected-preset", ("preset", rulesMessage))); } } + // TODO: We may not need to network this anymore >:D RaiseNetworkEvent(new TickerJoinGameEvent(), session.Channel); } diff --git a/Content.Server/GameTicking/GameTicker.Replays.cs b/Content.Server/GameTicking/ServerGameTicker.Replays.cs similarity index 89% rename from Content.Server/GameTicking/GameTicker.Replays.cs rename to Content.Server/GameTicking/ServerGameTicker.Replays.cs index 68b391f8e4..36f71f0869 100644 --- a/Content.Server/GameTicking/GameTicker.Replays.cs +++ b/Content.Server/GameTicking/ServerGameTicker.Replays.cs @@ -3,14 +3,13 @@ using Robust.Shared; using Robust.Shared.ContentPack; using Robust.Shared.Replays; using Robust.Shared.Serialization.Manager; -using Robust.Shared.Serialization.Markdown; using Robust.Shared.Serialization.Markdown.Mapping; using Robust.Shared.Serialization.Markdown.Value; using Robust.Shared.Utility; namespace Content.Server.GameTicking; -public sealed partial class GameTicker +public sealed partial class ServerGameTicker { [Dependency] private IReplayRecordingManager _replays = default!; [Dependency] private IResourceManager _resourceManager = default!; @@ -32,7 +31,7 @@ public sealed partial class GameTicker { try { - if (!_cfg.GetCVar(CCVars.ReplayAutoRecord)) + if (!Cfg.GetCVar(CCVars.ReplayAutoRecord)) return; if (_replays.IsRecording) @@ -45,7 +44,7 @@ public sealed partial class GameTicker var finalPath = GetAutoReplayPath(); var recordPath = finalPath; - var tempDir = _cfg.GetCVar(CCVars.ReplayAutoRecordTempDir); + var tempDir = Cfg.GetCVar(CCVars.ReplayAutoRecordTempDir); ResPath? moveToPath = null; // Set the round end player and text back to null to prevent it from writing the previous round's data. @@ -54,7 +53,7 @@ public sealed partial class GameTicker if (!string.IsNullOrEmpty(tempDir)) { - var baseReplayPath = new ResPath(_cfg.GetCVar(CVars.ReplayDirectory)).ToRootedPath(); + var baseReplayPath = new ResPath(Cfg.GetCVar(CVars.ReplayDirectory)).ToRootedPath(); moveToPath = baseReplayPath / finalPath; var fileName = finalPath.Filename; @@ -127,14 +126,14 @@ public sealed partial class GameTicker metadata["gamemode"] = new ValueDataNode(CurrentPreset != null ? Loc.GetString(CurrentPreset.ModeTitle) : string.Empty); metadata["roundEndPlayers"] = _serialman.WriteValue(_replayRoundPlayerInfo); metadata["roundEndText"] = new ValueDataNode(_replayRoundText); - metadata["server_id"] = new ValueDataNode(_cfg.GetCVar(CCVars.ServerId)); - metadata["server_name"] = new ValueDataNode(_cfg.GetCVar(CCVars.AdminLogsServerName)); + metadata["server_id"] = new ValueDataNode(Cfg.GetCVar(CCVars.ServerId)); + metadata["server_name"] = new ValueDataNode(ServerName); metadata["roundId"] = new ValueDataNode(RoundId.ToString()); } private ResPath GetAutoReplayPath() { - var cfgValue = _cfg.GetCVar(CCVars.ReplayAutoRecordName); + var cfgValue = Cfg.GetCVar(CCVars.ReplayAutoRecordName); var time = DateTime.UtcNow; diff --git a/Content.Server/GameTicking/ServerGameTicker.RoundFlow.cs b/Content.Server/GameTicking/ServerGameTicker.RoundFlow.cs new file mode 100644 index 0000000000..981ea1ab9c --- /dev/null +++ b/Content.Server/GameTicking/ServerGameTicker.RoundFlow.cs @@ -0,0 +1,878 @@ +using System.Linq; +using System.Numerics; +using Content.Server.Announcements; +using Content.Server.Discord; +using Content.Server.GameTicking.Events; +using Content.Server.Roles; +using Content.Shared.CCVar; +using Content.Shared.Database; +using Content.Shared.GameTicking; +using Content.Shared.GameTicking.Events; +using Content.Shared.Maps; +using Content.Shared.Mind; +using Content.Shared.Players; +using Content.Shared.Preferences; +using Content.Shared.Roles.Components; +using JetBrains.Annotations; +using Prometheus; +using Robust.Shared.Asynchronous; +using Robust.Shared.Audio; +using Robust.Shared.EntitySerialization; +using Robust.Shared.Map; +using Robust.Shared.Network; +using Robust.Shared.Player; +using Robust.Shared.Random; +using Robust.Shared.Utility; + +namespace Content.Server.GameTicking; + +public sealed partial class ServerGameTicker +{ + [Dependency] private DiscordWebhook _discord = default!; + [Dependency] private RoleSystem _role = default!; + [Dependency] private ITaskManager _taskManager = default!; + + private static readonly Counter RoundNumberMetric = Metrics.CreateCounter( + "ss14_round_number", + "Round number."); + + private static readonly Gauge RoundLengthMetric = Metrics.CreateGauge( + "ss14_round_length", + "Round length in seconds."); + +#if EXCEPTION_TOLERANCE + [ViewVariables] + private int _roundStartFailCount = 0; +#endif + + [ViewVariables] + private bool _startingRound; + + private RoundEndMessageEvent.RoundEndPlayerInfo[]? _replayRoundPlayerInfo; + + private string? _replayRoundText; + + /// + /// Returns true if the round's map is eligible to be updated. + /// + /// + public bool CanUpdateMap() + { + return RunLevel == GameRunLevel.PreRoundLobby && + _roundStartTime - RoundPreloadTime > Timing.CurTime; + } + + /// + /// Loads all the maps for the given round. + /// + /// + /// Must be called before the runlevel is set to InRound. + /// + private void LoadMaps() + { + if (Map.MapExists(DefaultMap)) + return; + + AddGamePresetRules(); + + var maps = new List(); + + // the map might have been force-set by something + // (i.e. votemap or forcemap) + var mainStationMap = _gameMapManager.GetSelectedMap(); + if (mainStationMap == null) + { + // otherwise set the map using the config rules + _gameMapManager.SelectMapByConfigRules(); + mainStationMap = _gameMapManager.GetSelectedMap(); + } + + // Small chance the above could return no map. + // ideally SelectMapByConfigRules will always find a valid map + if (mainStationMap != null) + { + maps.Add(mainStationMap); + } + else + { + throw new Exception("invalid config; couldn't select a valid station map!"); + } + + if (CurrentPreset?.MapPool != null && + ProtoMan.TryIndex(CurrentPreset.MapPool, out var pool) && + !pool.Maps.Contains(mainStationMap.ID)) + { + var msg = Loc.GetString("game-ticker-start-round-invalid-map", + ("map", mainStationMap.MapName), + ("mode", Loc.GetString(CurrentPreset.ModeTitle))); + Log.Debug(msg); + SendServerMessage(msg); + } + + // Let game rules dictate what maps we should load. + RaiseLocalEvent(new LoadingMapsEvent(maps)); + + if (maps.Count == 0) + { + Map.CreateMap(out var mapId, runMapInit: false); + DefaultMap = mapId; + return; + } + + for (var i = 0; i < maps.Count; i++) + { + LoadGameMap(maps[i], out var mapId); + DebugTools.Assert(!Map.IsInitialized(mapId)); + + if (i == 0) + DefaultMap = mapId; + } + } + + public PreGameMapLoad RaisePreLoad( + GameMapPrototype proto, + DeserializationOptions? opts = null, + Vector2? offset = null, + Angle? rot = null) + { + offset ??= proto.MaxRandomOffset != 0f + ? Random.NextVector2(proto.MaxRandomOffset) + : Vector2.Zero; + + rot ??= proto.RandomRotation + ? Random.NextAngle() + : Angle.Zero; + + opts ??= DeserializationOptions.Default; + var ev = new PreGameMapLoad(proto, opts.Value, offset.Value, rot.Value); + RaiseLocalEvent(ev); + return ev; + } + + public override IReadOnlyList LoadGameMap( + GameMapPrototype proto, + out MapId mapId, + DeserializationOptions? options = null, + string? stationName = null, + Vector2? offset = null, + Angle? rot = null) + { + var ev = RaisePreLoad(proto, options, offset, rot); + + if (ev.GameMap.IsGrid) + { + var mapUid = Map.CreateMap(out mapId, runMapInit: options?.InitializeMaps ?? false); + if (!_loader.TryLoadGrid(mapId, + ev.GameMap.MapPath, + out var grid, + ev.Options, + ev.Offset, + ev.Rotation)) + { + throw new Exception($"Failed to load game-map grid {ev.GameMap.ID}"); + } + + Meta.SetEntityName(mapUid, proto.MapName); + var g = new List { grid.Value.Owner }; + RaiseLocalEvent(new PostGameMapLoad(proto, mapId, g, stationName)); + return g; + } + + if (!_loader.TryLoadMap(ev.GameMap.MapPath, + out var map, + out var grids, + ev.Options, + ev.Offset, + ev.Rotation)) + { + throw new Exception($"Failed to load game map {ev.GameMap.ID}"); + } + + mapId = map.Value.Comp.MapId; + Meta.SetEntityName(map.Value.Owner, proto.MapName); + var gridUids = grids.Select(x => x.Owner).ToList(); + RaiseLocalEvent(new PostGameMapLoad(proto, mapId, gridUids, stationName)); + return gridUids; + } + + /// + /// Variant of that attempts to assign the provided to the + /// loaded map. + /// + public IReadOnlyList LoadGameMapWithId( + GameMapPrototype proto, + MapId mapId, + DeserializationOptions? opts = null, + string? stationName = null, + Vector2? offset = null, + Angle? rot = null) + { + var ev = RaisePreLoad(proto, opts, offset, rot); + + if (ev.GameMap.IsGrid) + { + var mapUid = Map.CreateMap(mapId); + if (!_loader.TryLoadGrid(mapId, + ev.GameMap.MapPath, + out var grid, + ev.Options, + ev.Offset, + ev.Rotation)) + { + throw new Exception($"Failed to load game-map grid {ev.GameMap.ID}"); + } + + Meta.SetEntityName(mapUid, proto.MapName); + var g = new List { grid.Value.Owner }; + RaiseLocalEvent(new PostGameMapLoad(proto, mapId, g, stationName)); + return g; + } + + if (!_loader.TryLoadMapWithId( + mapId, + ev.GameMap.MapPath, + out var map, + out var grids, + ev.Options, + ev.Offset, + ev.Rotation)) + { + throw new Exception($"Failed to load map"); + } + + Meta.SetEntityName(map.Value.Owner, proto.MapName); + var gridUids = grids.Select(x => x.Owner).ToList(); + RaiseLocalEvent(new PostGameMapLoad(proto, mapId, gridUids, stationName)); + return gridUids; + } + + /// + /// Variant of that loads and then merges a game map onto an existing map. + /// + public IReadOnlyList MergeGameMap( + GameMapPrototype proto, + MapId targetMap, + DeserializationOptions? opts = null, + string? stationName = null, + Vector2? offset = null, + Angle? rot = null) + { + // TODO MAP LOADING use a new event? + // This is quite different from the other methods, which will actually create a **new** map. + var ev = RaisePreLoad(proto, opts, offset, rot); + + if (ev.GameMap.IsGrid) + { + if (!_loader.TryLoadGrid(targetMap, + ev.GameMap.MapPath, + out var grid, + ev.Options, + ev.Offset, + ev.Rotation)) + { + throw new Exception($"Failed to load game-map grid {ev.GameMap.ID}"); + } + + var g = new List { grid.Value.Owner }; + // TODO MAP LOADING use a new event? + RaiseLocalEvent(new PostGameMapLoad(proto, targetMap, g, stationName)); + return g; + } + + if (!_loader.TryMergeMap(targetMap, + ev.GameMap.MapPath, + out var grids, + ev.Options, + ev.Offset, + ev.Rotation)) + { + throw new Exception($"Failed to load map"); + } + + var gridUids = grids.Select(x => x.Owner).ToList(); + + // TODO MAP LOADING use a new event? + RaiseLocalEvent(new PostGameMapLoad(proto, targetMap, gridUids, stationName)); + return gridUids; + } + + public override int ReadyPlayerCount() + { + var total = 0; + foreach (var (userId, status) in _playerGameStatuses) + { + if (LobbyEnabled && status == PlayerGameStatus.NotReadyToPlay) + continue; + + if (!_playerManager.TryGetSessionById(userId, out _)) + continue; + + total++; + } + + return total; + } + + public void StartRound(bool force = false) + { +#if EXCEPTION_TOLERANCE + try + { +#endif + // If this game ticker is a dummy or the round is already being started, do nothing! + if (DummyTicker || _startingRound) + return; + + _startingRound = true; + + if (RoundId == 0) + IncrementRoundNumber(); + + ReplayStartRound(); + + DebugTools.Assert(RunLevel == GameRunLevel.PreRoundLobby); + Log.Info("Starting round!"); + + SendServerMessage(Loc.GetString("game-ticker-start-round")); + + var readyPlayers = new List(); + var readyPlayerProfiles = new Dictionary(); + var autoDeAdmin = Cfg.GetCVar(CCVars.AdminDeadminOnJoin); + foreach (var (userId, status) in _playerGameStatuses) + { + if (LobbyEnabled && status != PlayerGameStatus.ReadyToPlay) + continue; + + if (!_playerManager.TryGetSessionById(userId, out var session)) + continue; + + if (autoDeAdmin && _adminManager.IsAdmin(session)) + { + _adminManager.DeAdmin(session); + } +#if DEBUG + DebugTools.Assert(_userDb.IsLoadComplete(session), $"Player was readied up but didn't have user DB data loaded yet??"); +#endif + + readyPlayers.Add(session); + HumanoidCharacterProfile profile; + if (_prefsManager.TryGetCachedPreferences(userId, out var preferences)) + { + profile = preferences.SelectedCharacter; + } + else + { + var speciesToBlacklist = + new HashSet(Cfg.GetCVar(CCVars.ICNewAccountSpeciesBlacklist).Split(",")); + profile = HumanoidCharacterProfile.Random(speciesToBlacklist); + } + readyPlayerProfiles.Add(userId, profile); + } + + DebugTools.AssertEqual(readyPlayers.Count, ReadyPlayerCount()); + + // Just in case it hasn't been loaded previously we'll try loading it. + LoadMaps(); + + // map has been selected so update the lobby info text + // applies to players who didn't ready up + UpdateInfoText(); + + StartGamePresetRules(); + + RoundLengthMetric.Set(0); + + var startingEvent = new RoundStartingEvent(RoundId); + RaiseLocalEvent(startingEvent); + + var origReadyPlayers = readyPlayers.ToArray(); + + if (!StartPreset(origReadyPlayers, force)) + { + _startingRound = false; + return; + } + + // MapInitialize *before* spawning players, our codebase is too shit to do it afterwards... + Map.InitializeMap(DefaultMap); + + SpawnPlayers(readyPlayers, readyPlayerProfiles, force); + + _roundStartDateTime = DateTime.UtcNow; + RunLevel = GameRunLevel.InRound; + + RoundStartTimeSpan = Timing.CurTime; + SendStatusToAll(); + ReqWindowAttentionAll(); + UpdateLateJoinStatus(); + AnnounceRound(); + UpdateInfoText(); + SendRoundStartedDiscordMessage(); + +#if EXCEPTION_TOLERANCE + } + catch (Exception e) + { + _roundStartFailCount++; + + if (RoundStartFailShutdownCount > 0 && _roundStartFailCount >= RoundStartFailShutdownCount) + { + Log.Fatal($"Failed to start a round {_roundStartFailCount} time(s) in a row... Shutting down!"); + _runtimeLog.LogException(e, nameof(GameTicker)); + _baseServer.Shutdown("Restarting server"); + return; + } + + Log.Error($"Exception caught while trying to start the round! Restarting round..."); + _runtimeLog.LogException(e, nameof(GameTicker)); + _startingRound = false; + RestartRound(); + return; + } + + // Round started successfully! Reset counter... + _roundStartFailCount = 0; +#endif + _startingRound = false; + } + + private void RefreshLateJoinAllowed() + { + var refresh = new RefreshLateJoinAllowedEvent(); + RaiseLocalEvent(refresh); + DisallowLateJoin = refresh.DisallowLateJoin; + } + + public override void EndRound(string text = "") + { + // If this game ticker is a dummy, do nothing! + if (DummyTicker) + return; + + DebugTools.Assert(RunLevel == GameRunLevel.InRound); + Log.Info("Ending round!"); + + RunLevel = GameRunLevel.PostRound; + + try + { + ShowRoundEndScoreboard(text); + } + catch (Exception e) + { + Log.Error($"Error while showing round end scoreboard: {e}"); + } + + try + { + SendRoundEndDiscordMessage(); + } + catch (Exception e) + { + Log.Error($"Error while sending round end Discord message: {e}"); + } + } + + public void ShowRoundEndScoreboard(string text = "") + { + // Log end of round + Admin.Add(LogType.EmergencyShuttle, LogImpact.High, $"Round ended, showing summary"); + + //Tell every client the round has ended. + var gamemodeTitle = CurrentPreset != null ? Loc.GetString(CurrentPreset.ModeTitle) : string.Empty; + + // Let things add text here. + var textEv = new RoundEndTextAppendEvent(); + RaiseLocalEvent(ref textEv); + + var roundEndText = $"{text}\n{textEv.Text}"; + + //Get the timespan of the round. + var roundDuration = RoundDuration(); + + //Generate a list of basic player info to display in the end round summary. + var listOfPlayerInfo = new List(); + // Grab the great big book of all the Minds, we'll need them for this. + var allMinds = EntityQueryEnumerator(); + var pvsOverride = Cfg.GetCVar(CCVars.RoundEndPVSOverrides); + while (allMinds.MoveNext(out var mindId, out var mind)) + { + // TODO don't list redundant observer roles? + // I.e., if a player was an observer ghost, then a hamster ghost role, maybe just list hamster and not + // the observer role? + var userId = mind.UserId ?? mind.OriginalOwnerUserId; + + var connected = false; + var observer = _role.MindHasRole(mindId); + // Continuing + if (userId != null && _playerManager.ValidSessionId(userId.Value)) + { + connected = true; + } + ContentPlayerData? contentPlayerData = null; + if (userId != null && _playerManager.TryGetPlayerData(userId.Value, out var playerData)) + { + contentPlayerData = playerData.ContentData(); + } + // Finish + + var antag = Role.MindIsAntagonist(mindId); + + var playerIcName = "Unknown"; + + if (mind.CharacterName != null) + playerIcName = mind.CharacterName; + else if (mind.CurrentEntity != null && TryName(mind.CurrentEntity.Value, out var icName)) + playerIcName = icName; + + if (TryGetEntity(mind.OriginalOwnedEntity, out var entity) && pvsOverride) + { + _pvsOverride.AddGlobalOverride(entity.Value); + } + + var roles = Role.MindGetAllRoleInfo(mindId); + + var playerEndRoundInfo = new RoundEndMessageEvent.RoundEndPlayerInfo() + { + // Note that contentPlayerData?.Name sticks around after the player is disconnected. + // This is as opposed to ply?.Name which doesn't. + PlayerOOCName = contentPlayerData?.Name ?? "(IMPOSSIBLE: REGISTERED MIND WITH NO OWNER)", + // Character name takes precedence over current entity name + PlayerICName = playerIcName, + PlayerGuid = userId, + PlayerNetEntity = GetNetEntity(entity), + Role = antag + ? roles.First(role => role.Antagonist).Name + : roles.FirstOrDefault().Name ?? Loc.GetString("game-ticker-unknown-role"), + Antag = antag, + JobPrototypes = roles.Where(role => !role.Antagonist).Select(role => role.Prototype).ToArray(), + AntagPrototypes = roles.Where(role => role.Antagonist).Select(role => role.Prototype).ToArray(), + Observer = observer, + Connected = connected + }; + listOfPlayerInfo.Add(playerEndRoundInfo); + } + + // This ordering mechanism isn't great (no ordering of minds) but functions + var listOfPlayerInfoFinal = listOfPlayerInfo.OrderBy(pi => pi.PlayerOOCName).ToArray(); + var sound = RoundEndSoundCollection == null ? null : Audio.ResolveSound(new SoundCollectionSpecifier(RoundEndSoundCollection)); + + var roundEndMessageEvent = new RoundEndMessageEvent( + gamemodeTitle, + roundEndText, + roundDuration, + RoundId, + listOfPlayerInfoFinal.Length, + listOfPlayerInfoFinal, + sound + ); + RaiseNetworkEvent(roundEndMessageEvent); + RaiseLocalEvent(roundEndMessageEvent); + + _replayRoundPlayerInfo = listOfPlayerInfoFinal; + _replayRoundText = roundEndText; + } + + private async void SendRoundEndDiscordMessage() + { + try + { + if (_webhookIdentifier == null) + return; + + var duration = RoundDuration(); + var content = Loc.GetString("discord-round-notifications-end", + ("id", RoundId), + ("hours", Math.Truncate(duration.TotalHours)), + ("minutes", duration.Minutes), + ("seconds", duration.Seconds)); + var payload = new WebhookPayload { Content = content }; + + await _discord.CreateMessage(_webhookIdentifier.Value, payload); + + if (DiscordRoundEndRole == null) + return; + + content = Loc.GetString("discord-round-notifications-end-ping", ("roleId", DiscordRoundEndRole)); + payload = new WebhookPayload { Content = content }; + payload.AllowedMentions.AllowRoleMentions(); + + await _discord.CreateMessage(_webhookIdentifier.Value, payload); + } + catch (Exception e) + { + Log.Error($"Error while sending discord round end message:\n{e}"); + } + } + + public override void RestartRound() + { + // If this game ticker is a dummy, do nothing! + if (DummyTicker) + return; + + ReplayEndRound(); + + // Handle restart for server update + if (_serverUpdates.RoundEnded()) + return; + + // Check if the GamePreset needs to be reset + TryResetPreset(); + + Log.Info("Restarting round!"); + + SendServerMessage(Loc.GetString("game-ticker-restart-round")); + + RoundNumberMetric.Inc(); + + PlayersJoinedRoundNormally = 0; + + RunLevel = GameRunLevel.PreRoundLobby; + RandomizeLobbyBackground(); + ResettingCleanup(); + IncrementRoundNumber(); + SendRoundStartingDiscordMessage(); + + if (!LobbyEnabled) + { + StartRound(); + } + else + { + if (_playerManager.PlayerCount == 0) + _roundStartCountdownHasNotStartedYetDueToNoPlayers = true; + else + _roundStartTime = Timing.CurTime + LobbyDuration; + + SendStatusToAll(); + UpdateInfoText(); + + ReqWindowAttentionAll(); + } + } + + private async void SendRoundStartingDiscordMessage() + { + try + { + if (_webhookIdentifier == null) + return; + + var content = Loc.GetString("discord-round-notifications-new"); + + var payload = new WebhookPayload { Content = content }; + + await _discord.CreateMessage(_webhookIdentifier.Value, payload); + } + catch (Exception e) + { + Log.Error($"Error while sending discord round starting message:\n{e}"); + } + } + + /// + /// Cleanup that has to run to clear up anything from the previous round. + /// Stuff like wiping the previous map clean. + /// + private void ResettingCleanup() + { + // Move everybody currently in the server to lobby. + foreach (var player in _playerManager.Sessions) + { + PlayerJoinLobby(player); + } + + // Round restart cleanup event, so entity systems can reset. + var ev = new RoundRestartCleanupEvent(); + RaiseLocalEvent(ev); + + // So clients' entity systems can clean up too... + RaiseNetworkEvent(ev); + + EntityManager.FlushEntities(); + + _banManager.Restart(); + + _gameMapManager.ClearSelectedMap(); + + // Clear up any game rules. + CurrentPreset = null; + + AllRoundGameRules.Clear(); + + DisallowLateJoin = false; + _playerGameStatuses.Clear(); + foreach (var session in _playerManager.Sessions) + { + _playerGameStatuses[session.UserId] = LobbyEnabled ? PlayerGameStatus.NotReadyToPlay : PlayerGameStatus.ReadyToPlay; + } + } + + public bool DelayStart(TimeSpan time) + { + if (RunLevel != GameRunLevel.PreRoundLobby) + { + return false; + } + + _roundStartTime += time; + + RaiseNetworkEvent(new TickerLobbyCountdownEvent(_roundStartTime, Paused)); + + _chatManager.DispatchServerAnnouncement(Loc.GetString("game-ticker-delay-start", ("seconds", time.TotalSeconds))); + + return true; + } + + private void UpdateRoundFlow(float frameTime) + { + if (RunLevel == GameRunLevel.InRound) + { + RoundLengthMetric.Inc(frameTime); + } + + if (_roundStartTime == TimeSpan.Zero || + RunLevel != GameRunLevel.PreRoundLobby || + Paused || + _roundStartTime - RoundPreloadTime > Timing.CurTime || + _roundStartCountdownHasNotStartedYetDueToNoPlayers) + { + return; + } + + if (_roundStartTime < Timing.CurTime) + { + StartRound(); + } + // Preload maps so we can start faster + else if (_roundStartTime - RoundPreloadTime < Timing.CurTime) + { + LoadMaps(); + } + } + + private void AnnounceRound() + { + if (CurrentPreset == null) + return; + + var options = ProtoMan.EnumeratePrototypes().ToList(); + + if (options.Count == 0) + return; + + var proto = Random.Pick(options); + + if (proto.Message != null) + _chatSystem.DispatchGlobalAnnouncement(Loc.GetString(proto.Message), playSound: true); + + if (proto.Sound != null) + Audio.PlayGlobal(proto.Sound, Filter.Broadcast(), true); + } + + private async void SendRoundStartedDiscordMessage() + { + try + { + if (_webhookIdentifier == null) + return; + + var mapName = _gameMapManager.GetSelectedMap()?.MapName ?? Loc.GetString("discord-round-notifications-unknown-map"); + var content = Loc.GetString("discord-round-notifications-started", ("id", RoundId), ("map", mapName)); + + var payload = new WebhookPayload { Content = content }; + + await _discord.CreateMessage(_webhookIdentifier.Value, payload); + } + catch (Exception e) + { + Log.Error($"Error while sending discord round start message:\n{e}"); + } + } +} + +/// +/// Event raised before maps are loaded in pre-round setup. +/// Contains a list of game map prototypes to load; modify it if you want to load different maps, +/// for example as part of a game rule. +/// +[PublicAPI] +public sealed class LoadingMapsEvent : EntityEventArgs +{ + public List Maps; + + public LoadingMapsEvent(List maps) + { + Maps = maps; + } +} + +/// +/// Event raised before the game loads a given map. +/// This event is mutable, and load options should be tweaked if necessary. +/// +/// +/// You likely want to subscribe to this after StationSystem. +/// +[PublicAPI] +public sealed class PreGameMapLoad(GameMapPrototype gameMap, DeserializationOptions options, Vector2 offset, Angle rotation) : EntityEventArgs +{ + public readonly GameMapPrototype GameMap = gameMap; + public DeserializationOptions Options = options; + public Vector2 Offset = offset; + public Angle Rotation = rotation; +} + +/// +/// Event raised after the game loads a given map. +/// +/// +/// You likely want to subscribe to this after StationSystem. +/// +[PublicAPI] +public sealed class PostGameMapLoad : EntityEventArgs +{ + public readonly GameMapPrototype GameMap; + public readonly MapId Map; + public readonly IReadOnlyList Grids; + public readonly string? StationName; + + public PostGameMapLoad(GameMapPrototype gameMap, MapId map, IReadOnlyList grids, string? stationName) + { + GameMap = gameMap; + Map = map; + Grids = grids; + StationName = stationName; + } +} + +/// +/// Event raised to refresh the late join status. +/// If you want to disallow late joins, listen to this and call Disallow. +/// +public sealed class RefreshLateJoinAllowedEvent +{ + public bool DisallowLateJoin { get; private set; } + + public void Disallow() + { + DisallowLateJoin = true; + } +} + +/// +/// Attempt event raised on round start. +/// This can be listened to by GameRule systems to cancel round start if some condition is not met, like player count. +/// +public sealed class RoundStartAttemptEvent : CancellableEntityEventArgs +{ + public ICommonSession[] Players { get; } + public bool Forced { get; } + + public RoundStartAttemptEvent(ICommonSession[] players, bool forced) + { + Players = players; + Forced = forced; + } +} diff --git a/Content.Server/GameTicking/GameTicker.Spawning.cs b/Content.Server/GameTicking/ServerGameTicker.Spawning.cs similarity index 85% rename from Content.Server/GameTicking/GameTicker.Spawning.cs rename to Content.Server/GameTicking/ServerGameTicker.Spawning.cs index d5b6649104..67d79be7a1 100644 --- a/Content.Server/GameTicking/GameTicker.Spawning.cs +++ b/Content.Server/GameTicking/ServerGameTicker.Spawning.cs @@ -4,8 +4,6 @@ using System.Numerics; using Content.Server.Administration.Managers; using Content.Server.Administration.Systems; using Content.Server.GameTicking.Events; -using Content.Server.Spawners.Components; -using Content.Server.Station.Components; using Content.Shared.CCVar; using Content.Shared.Database; using Content.Shared.GameTicking; @@ -17,6 +15,8 @@ using Content.Shared.Random; using Content.Shared.Random.Helpers; using Content.Shared.Roles; using Content.Shared.Roles.Jobs; +using Content.Shared.Spawners.Components; +using Content.Shared.Station.Components; using Robust.Shared.Map; using Robust.Shared.Map.Components; using Robust.Shared.Network; @@ -27,7 +27,7 @@ using Robust.Shared.Utility; namespace Content.Server.GameTicking { - public sealed partial class GameTicker + public sealed partial class ServerGameTicker { [Dependency] private IAdminManager _adminManager = default!; [Dependency] private SharedJobSystem _jobs = default!; @@ -167,7 +167,7 @@ namespace Content.Server.GameTicking if (station == EntityUid.Invalid) { var stations = GetSpawnableStations(); - _robustRandom.Shuffle(stations); + Random.Shuffle(stations); if (stations.Count == 0) station = EntityUid.Invalid; else @@ -183,7 +183,7 @@ namespace Content.Server.GameTicking string speciesId; if (_randomizeCharacters) { - var weightId = _cfg.GetCVar(CCVars.ICRandomSpeciesWeights); + var weightId = Cfg.GetCVar(CCVars.ICRandomSpeciesWeights); // If blank, choose a round start species. if (string.IsNullOrEmpty(weightId)) @@ -199,12 +199,12 @@ namespace Content.Server.GameTicking speciesId = roundStart.Count == 0 ? HumanoidCharacterProfile.DefaultSpecies - : _robustRandom.Pick(roundStart); + : Random.Pick(roundStart); } else { var weights = ProtoMan.Index(weightId); - speciesId = weights.Pick(_robustRandom); + speciesId = weights.Pick(Random); } // The random profile must retain the job priorities set by the player @@ -287,13 +287,13 @@ namespace Content.Server.GameTicking if (lateJoin) { - _adminLogger.Add(LogType.LateJoin, + Admin.Add(LogType.LateJoin, LogImpact.Medium, $"Player {player.Name} late joined as {character.Name:characterName} on station {Name(station):stationName} with {ToPrettyString(mob):entity} as a {jobName:jobName}."); } else { - _adminLogger.Add(LogType.RoundStartJoin, + Admin.Add(LogType.RoundStartJoin, LogImpact.Medium, $"Player {player.Name} joined as {character.Name:characterName} on station {Name(station):stationName} with {ToPrettyString(mob):entity} as a {jobName:jobName}."); } @@ -349,22 +349,22 @@ namespace Content.Server.GameTicking DebugTools.AssertNotNull(mobMaybe); mob = mobMaybe!.Value; - var newMind = _mind.CreateMind(data.UserId, Name(mob)); - _mind.SetUserId(newMind, data.UserId); + var newMind = Mind.CreateMind(data.UserId, Name(mob)); + Mind.SetUserId(newMind, data.UserId); _playTimeTrackings.PlayerRolesChanged(player); - _mind.TransferTo(newMind, mob); + Mind.TransferTo(newMind, mob); - _roles.MindAddJobRole(newMind, silent: silent, jobPrototype: jobId); + Role.MindAddJobRole(newMind, silent: silent, jobPrototype: jobId); jobName = _jobs.MindTryGetJobName(newMind); _admin.UpdatePlayerList(player); } public void Respawn(ICommonSession player) { - _mind.WipeMind(player); - _adminLogger.Add(LogType.Respawn, LogImpact.Medium, $"Player {player} was respawned."); + Mind.WipeMind(player); + Admin.Add(LogType.Respawn, LogImpact.Medium, $"Player {player} was respawned."); if (LobbyEnabled) PlayerJoinLobby(player); @@ -372,14 +372,8 @@ namespace Content.Server.GameTicking SpawnPlayer(player, EntityUid.Invalid); } - /// - /// Makes a player join into the game and spawn on a station. - /// - /// The player joining - /// The station they're spawning on - /// An optional job for them to spawn as - /// Whether or not the player should be greeted upon joining - public void MakeJoinGame(ICommonSession player, EntityUid station, string? jobId = null, bool silent = false) + /// + public override void MakeJoinGame(ICommonSession player, EntityUid station, string? jobId = null, bool silent = false) { if (!_playerGameStatuses.ContainsKey(player.UserId)) return; @@ -417,17 +411,17 @@ namespace Content.Server.GameTicking if (mind == null) { var name = GetPlayerProfile(player).Name; - var (mindId, mindComp) = _mind.CreateMind(player.UserId, name); + var (mindId, mindComp) = Mind.CreateMind(player.UserId, name); mind = (mindId, mindComp); - _mind.SetUserId(mind.Value, player.UserId); + Mind.SetUserId(mind.Value, player.UserId); makeObserver = true; } var ghost = _ghost.SpawnGhost(mind.Value); if (makeObserver) - _roles.MindAddRole(mind.Value, "MindRoleObserver"); + Role.MindAddRole(mind.Value, "MindRoleObserver"); - _adminLogger.Add(LogType.LateJoin, + Admin.Add(LogType.LateJoin, LogImpact.Low, $"{player.Name} late joined the round as an Observer with {ToPrettyString(ghost):entity}."); } @@ -454,14 +448,9 @@ namespace Content.Server.GameTicking // Fallback to a random grid. if (_possiblePositions.Count == 0) { - var query = AllEntityQuery(); - while (query.MoveNext(out var uid, out var grid)) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out _)) { - if (!TryComp(uid, out MetaDataComponent? meta) || meta.EntityPaused || TerminatingOrDeleted(uid)) - { - continue; - } - _possiblePositions.Add(new EntityCoordinates(uid, Vector2.Zero)); } } @@ -471,44 +460,40 @@ namespace Content.Server.GameTicking // TODO: This is just here for the eye lerping. // Ideally engine would just spawn them on grid directly I guess? Right now grid traversal is handling it during // update which means we need to add a hack somewhere around it. - var spawn = _robustRandom.Pick(_possiblePositions); - var toMap = _transform.ToMapCoordinates(spawn); + var spawn = Random.Pick(_possiblePositions); + var toMap = XForm.ToMapCoordinates(spawn); - if (_map.TryFindGridAt(toMap, out var gridUid, out _)) + if (Map.TryFindGridAt(toMap, out var gridUid, out _)) { var gridXform = Transform(gridUid); - return new EntityCoordinates(gridUid, Vector2.Transform(toMap.Position, _transform.GetInvWorldMatrix(gridXform))); + return new EntityCoordinates(gridUid, Vector2.Transform(toMap.Position, XForm.GetInvWorldMatrix(gridXform))); } return spawn; } - if (_map.MapExists(DefaultMap)) + if (Map.MapExists(DefaultMap)) { - var mapUid = _map.GetMapOrInvalid(DefaultMap); + var mapUid = Map.GetMapOrInvalid(DefaultMap); if (!TerminatingOrDeleted(mapUid)) return new EntityCoordinates(mapUid, Vector2.Zero); } // Just pick a point at this point I guess. - foreach (var map in _map.GetAllMapIds()) + foreach (var map in Map.GetAllMapIds()) { - var mapUid = _map.GetMapOrInvalid(map); + var mapUid = Map.GetMapOrInvalid(map); + var meta = MetaData(mapUid); - if (!TryComp(mapUid, out MetaDataComponent? meta) - || meta.EntityPaused - || TerminatingOrDeleted(mapUid)) - { + if (meta.EntityPaused || TerminatingOrDeleted(mapUid, meta)) continue; - } return new EntityCoordinates(mapUid, Vector2.Zero); } - // AAAAAAAAAAAAA - // This should be an error, if it didn't cause tests to start erroring when they delete a player. - _sawmill.Warning("Found no observer spawn points!"); + // You REALLY fucked up + Log.Error("Found no observer spawn points!"); return EntityCoordinates.Invalid; } diff --git a/Content.Server/GameTicking/ServerGameTicker.StatusShell.cs b/Content.Server/GameTicking/ServerGameTicker.StatusShell.cs new file mode 100644 index 0000000000..698c6d6170 --- /dev/null +++ b/Content.Server/GameTicking/ServerGameTicker.StatusShell.cs @@ -0,0 +1,51 @@ +using System.Linq; +using System.Text.Json.Nodes; +using Content.Shared.CCVar; +using Content.Shared.GameTicking; +using Robust.Server.ServerStatus; + +namespace Content.Server.GameTicking; + +public sealed partial class ServerGameTicker +{ + /// + /// Used for thread safety, given is called from another thread. + /// + private readonly object _statusShellLock = new(); + + /// + /// Round start time in UTC, for status shell purposes. + /// + [ViewVariables] + private DateTime _roundStartDateTime; + + private void InitializeStatusShell() + { + IoCManager.Resolve().OnStatusRequest += GetStatusResponse; + } + + private void GetStatusResponse(JsonNode jObject) + { + var preset = CurrentPreset ?? Preset; + + // This method is raised from another thread, so this better be thread safe! + lock (_statusShellLock) + { + jObject["name"] = _baseServer.ServerName; + jObject["map"] = _gameMapManager.GetSelectedMap()?.MapName; + jObject["round_id"] = RoundId; + jObject["players"] = Cfg.GetCVar(CCVars.AdminsCountInReportedPlayerCount) + ? _playerManager.PlayerCount + : _playerManager.PlayerCount - _adminManager.ActiveAdmins.Count(); + jObject["soft_max_players"] = Cfg.GetCVar(CCVars.SoftMaxPlayers); + jObject["panic_bunker"] = Cfg.GetCVar(CCVars.PanicBunkerEnabled); + jObject["run_level"] = (int) RunLevel; + if (preset != null) + jObject["preset"] = (Decoy == null) ? Loc.GetString(preset.ModeTitle) : Loc.GetString(Decoy.ModeTitle); + if (RunLevel >= GameRunLevel.InRound) + { + jObject["round_start_time"] = _roundStartDateTime.ToString("o"); + } + } + } +} diff --git a/Content.Server/GameTicking/GameTicker.cs b/Content.Server/GameTicking/ServerGameTicker.cs similarity index 77% rename from Content.Server/GameTicking/GameTicker.cs rename to Content.Server/GameTicking/ServerGameTicker.cs index 3d6ad8ad4c..99edf3d636 100644 --- a/Content.Server/GameTicking/GameTicker.cs +++ b/Content.Server/GameTicking/ServerGameTicker.cs @@ -1,4 +1,3 @@ -using Content.Server.Administration.Logs; using Content.Server.Administration.Managers; using Content.Server.Chat.Managers; using Content.Server.Chat.Systems; @@ -9,19 +8,14 @@ using Content.Server.Players.PlayTimeTracking; using Content.Server.Preferences.Managers; using Content.Server.ServerUpdates; using Content.Server.Station.Systems; -using Content.Shared.CCVar; using Content.Shared.Chat; using Content.Shared.GameTicking; -using Content.Shared.Mind; -using Content.Shared.Roles; +using Content.Shared.Station.Systems; using Robust.Server; using Robust.Server.GameStates; -using Robust.Shared.Audio.Systems; using Robust.Shared.Console; using Robust.Shared.EntitySerialization.Systems; using Robust.Shared.Map; -using Robust.Shared.Random; -using Robust.Shared.Timing; using Robust.Shared.Utility; #if EXCEPTION_TOLERANCE using Robust.Shared.Exceptions; @@ -29,46 +23,35 @@ using Robust.Shared.Exceptions; namespace Content.Server.GameTicking { - public sealed partial class GameTicker : SharedGameTicker + public sealed partial class ServerGameTicker : GameTicker { - [Dependency] private IAdminLogManager _adminLogger = default!; [Dependency] private IBanManager _banManager = default!; [Dependency] private IBaseServer _baseServer = default!; [Dependency] private IChatManager _chatManager = default!; [Dependency] private IConsoleHost _consoleHost = default!; [Dependency] private IGameMapManager _gameMapManager = default!; - [Dependency] private IGameTiming _gameTiming = default!; [Dependency] private ILogManager _logManager = default!; - [Dependency] private IRobustRandom _robustRandom = default!; #if EXCEPTION_TOLERANCE [Dependency] private IRuntimeLog _runtimeLog = default!; #endif [Dependency] private IServerPreferencesManager _prefsManager = default!; [Dependency] private IServerDbManager _db = default!; [Dependency] private ChatSystem _chatSystem = default!; - [Dependency] private MapLoaderSystem _loader = default!; - [Dependency] private SharedMapSystem _map = default!; [Dependency] private GhostSystem _ghost = default!; - [Dependency] private SharedMindSystem _mind = default!; + [Dependency] private MapLoaderSystem _loader = default!; [Dependency] private PlayTimeTrackingSystem _playTimeTrackings = default!; [Dependency] private PvsOverrideSystem _pvsOverride = default!; - [Dependency] private ServerUpdateManager _serverUpdates = default!; - [Dependency] private SharedAudioSystem _audio = default!; - [Dependency] private StationJobsSystem _stationJobs = default!; - [Dependency] private StationSpawningSystem _stationSpawning = default!; - [Dependency] private SharedTransformSystem _transform = default!; - [Dependency] private UserDbDataManager _userDb = default!; - [Dependency] private MetaDataSystem _metaData = default!; - [Dependency] private SharedRoleSystem _roles = default!; [Dependency] private ServerDbEntryManager _dbEntryManager = default!; + [Dependency] private ServerUpdateManager _serverUpdates = default!; + [Dependency] private ServerStationJobsSystem _stationJobs = default!; + [Dependency] private StationSpawningSystem _stationSpawning = default!; + [Dependency] private UserDbDataManager _userDb = default!; [ViewVariables] private bool _initialized; [ViewVariables] private bool _postInitialized; [ViewVariables] public MapId DefaultMap { get; private set; } - private ISawmill _sawmill = default!; - private bool _randomizeCharacters; public override void Initialize() @@ -78,11 +61,9 @@ namespace Content.Server.GameTicking DebugTools.Assert(!_initialized); DebugTools.Assert(!_postInitialized); - _sawmill = _logManager.GetSawmill("ticker"); + // TODO: Move replays to their own bespoke system so we don't need two sawmills, or allow for name overrides for specific logs _sawmillReplays = _logManager.GetSawmill("ticker.replays"); - Subs.CVar(_cfg, CCVars.ICRandomCharacters, e => _randomizeCharacters = e, true); - // Initialize the other parts of the game ticker. InitializeStatusShell(); InitializeCVars(); @@ -132,7 +113,7 @@ namespace Content.Server.GameTicking public static int GetRoundId(IEntitySystemManager esm) { - return esm.GetEntitySystemOrNull()?.RoundId ?? 0; + return esm.GetEntitySystemOrNull()?.RoundId ?? 0; } } } diff --git a/Content.Server/Ghost/GhostCommand.cs b/Content.Server/Ghost/GhostCommand.cs index 81f278a73c..7420e1a1a8 100644 --- a/Content.Server/Ghost/GhostCommand.cs +++ b/Content.Server/Ghost/GhostCommand.cs @@ -25,7 +25,7 @@ namespace Content.Server.Ghost return; } - var gameTicker = _entities.System(); + var gameTicker = _entities.System(); if (!gameTicker.PlayerGameStatuses.TryGetValue(player.UserId, out var playerStatus) || playerStatus is not PlayerGameStatus.JoinedGame) { diff --git a/Content.Server/Ghost/GhostSystem.cs b/Content.Server/Ghost/GhostSystem.cs index 6c13006551..3c9d94c827 100644 --- a/Content.Server/Ghost/GhostSystem.cs +++ b/Content.Server/Ghost/GhostSystem.cs @@ -16,6 +16,7 @@ using Content.Shared.Eye; using Content.Shared.FixedPoint; using Content.Shared.Follower; using Content.Shared.Follower.Components; +using Content.Shared.GameTicking; using Content.Shared.Ghost.Components; using Content.Shared.Ghost.Systems; using Content.Shared.GhostTypes; @@ -65,7 +66,7 @@ namespace Content.Server.Ghost [Dependency] private IConfigurationManager _configurationManager = default!; [Dependency] private IChatManager _chatManager = default!; [Dependency] private SharedMindSystem _mind = default!; - [Dependency] private GameTicker _gameTicker = default!; + [Dependency] private ServerGameTicker _gameTicker = default!; [Dependency] private DamageableSystem _damageable = default!; [Dependency] private SharedPopupSystem _popup = default!; [Dependency] private IRobustRandom _random = default!; @@ -104,7 +105,7 @@ namespace Content.Server.Ghost SubscribeLocalEvent(OnGhostHearingAction); SubscribeLocalEvent(OnEntityStorageInsertAttempt); - SubscribeLocalEvent(_ => MakeVisible(true)); + SubscribeLocalEvent(_ => MakeVisible(true)); SubscribeLocalEvent(OnToggleGhostVisibilityToAll); SubscribeLocalEvent(OnGhostVis); @@ -503,7 +504,7 @@ namespace Content.Server.Ghost return null; } - var ghost = SpawnAtPosition(GameTicker.ObserverPrototypeName, spawnPosition.Value); + var ghost = SpawnAtPosition(ServerGameTicker.ObserverPrototypeName, spawnPosition.Value); var ghostComponent = Comp(ghost); if (TryComp(ghost, out var state)) // If more TryComps are added this should be turned into an event diff --git a/Content.Server/Holiday/HolidaySystem.cs b/Content.Server/Holiday/HolidaySystem.cs index bafc821138..7fd70476dc 100644 --- a/Content.Server/Holiday/HolidaySystem.cs +++ b/Content.Server/Holiday/HolidaySystem.cs @@ -2,6 +2,7 @@ using System.Linq; using Content.Server.Chat.Managers; using Content.Server.GameTicking; using Content.Shared.CCVar; +using Content.Shared.GameTicking; using Content.Shared.Holiday; using Robust.Shared.Configuration; @@ -87,7 +88,8 @@ namespace Content.Server.Holiday private void OnRunLevelChanged(GameRunLevelChangedEvent eventArgs) { - if (!_enabled) return; + if (!_enabled) + return; switch (eventArgs.New) { diff --git a/Content.Server/Implants/ChameleonControllerSystem.cs b/Content.Server/Implants/ChameleonControllerSystem.cs index 2fb2f5c97d..9bbd3bd3f6 100644 --- a/Content.Server/Implants/ChameleonControllerSystem.cs +++ b/Content.Server/Implants/ChameleonControllerSystem.cs @@ -8,7 +8,7 @@ using Content.Shared.Inventory; using Content.Shared.Preferences; using Content.Shared.Preferences.Loadouts; using Content.Shared.Roles; -using Content.Shared.Station; +using Content.Shared.Station.Systems; using Content.Shared.Timing.Systems; using Robust.Shared.Player; using Robust.Shared.Prototypes; @@ -18,7 +18,7 @@ namespace Content.Server.Implants; public sealed partial class ChameleonControllerSystem : SharedChameleonControllerSystem { [Dependency] private InventorySystem _inventory = default!; - [Dependency] private SharedStationSpawningSystem _stationSpawningSystem = default!; + [Dependency] private StationSpawningSystem _stationSpawningSystem = default!; [Dependency] private ChameleonClothingSystem _chameleonClothingSystem = default!; [Dependency] private IServerPreferencesManager _preferences = default!; [Dependency] private UseDelaySystem _delay = default!; diff --git a/Content.Server/Light/EntitySystems/EmergencyLightSystem.cs b/Content.Server/Light/EntitySystems/EmergencyLightSystem.cs index fce66ee6f2..0b5f661f50 100644 --- a/Content.Server/Light/EntitySystems/EmergencyLightSystem.cs +++ b/Content.Server/Light/EntitySystems/EmergencyLightSystem.cs @@ -22,7 +22,7 @@ public sealed partial class EmergencyLightSystem : SharedEmergencyLightSystem [Dependency] private BatterySystem _battery = default!; [Dependency] private PointLightSystem _pointLight = default!; [Dependency] private SharedAppearanceSystem _appearance = default!; - [Dependency] private StationSystem _station = default!; + [Dependency] private ServerStationSystem _station = default!; public override void Initialize() { diff --git a/Content.Server/Magic/MagicSystem.cs b/Content.Server/Magic/MagicSystem.cs index b66680afd7..c012591b5d 100644 --- a/Content.Server/Magic/MagicSystem.cs +++ b/Content.Server/Magic/MagicSystem.cs @@ -1,6 +1,7 @@ using Content.Server.Chat.Systems; using Content.Server.GameTicking; using Content.Server.GameTicking.Rules.Components; +using Content.Shared.GameTicking.Rules.Components; using Content.Shared.Magic; using Content.Shared.Magic.Events; using Content.Shared.Mind; @@ -12,18 +13,13 @@ namespace Content.Server.Magic; public sealed partial class MagicSystem : SharedMagicSystem { [Dependency] private ChatSystem _chat = default!; - [Dependency] private GameTicker _gameTicker = default!; + [Dependency] private ServerGameTicker _gameTicker = default!; [Dependency] private TagSystem _tag = default!; [Dependency] private SharedMindSystem _mind = default!; private static readonly ProtoId InvalidForSurvivorAntagTag = "InvalidForSurvivorAntag"; private static readonly EntProtoId SurvivorGameRule = "Survivor"; - public override void Initialize() - { - base.Initialize(); - } - public override void OnVoidApplause(VoidApplauseSpellEvent ev) { base.OnVoidApplause(ev); diff --git a/Content.Server/Mapping/MappingCommand.cs b/Content.Server/Mapping/MappingCommand.cs index 5692439a06..59daeadf94 100644 --- a/Content.Server/Mapping/MappingCommand.cs +++ b/Content.Server/Mapping/MappingCommand.cs @@ -146,7 +146,7 @@ namespace Content.Server.Mapping // map successfully created. run misc helpful mapping commands if (player.AttachedEntity is { Valid: true } playerEntity && - (EntityManager.GetComponent(playerEntity).EntityPrototype is not { } proto || proto != GameTicker.AdminObserverPrototypeName)) + (EntityManager.GetComponent(playerEntity).EntityPrototype is not { } proto || proto != ServerGameTicker.AdminObserverPrototypeName)) { shell.ExecuteCommand("aghost"); } diff --git a/Content.Server/Maps/GameMapManager.cs b/Content.Server/Maps/GameMapManager.cs index fd31c91844..5e15f51e15 100644 --- a/Content.Server/Maps/GameMapManager.cs +++ b/Content.Server/Maps/GameMapManager.cs @@ -102,14 +102,14 @@ public sealed partial class GameMapManager : IGameMapManager public IEnumerable AllVotableMaps() { - var poolPrototype = _entityManager.System().Preset?.MapPool ?? + var poolPrototype = _entityManager.System().Preset?.MapPool ?? _configurationManager.GetCVar(CCVars.GameMapPool); - if (_prototypeManager.TryIndex(poolPrototype, out var pool)) + if (_prototypeManager.TryIndex(poolPrototype, out var pool)) { foreach (var map in pool.Maps) { - if (!_prototypeManager.TryIndex(map, out var mapProto)) + if (!_prototypeManager.TryIndex(map, out var mapProto)) { _log.Error($"Couldn't index map {map} in pool {poolPrototype}"); continue; @@ -194,7 +194,7 @@ public sealed partial class GameMapManager : IGameMapManager return map.MaxPlayers >= _playerManager.PlayerCount && map.MinPlayers <= _playerManager.PlayerCount && map.Conditions.All(x => x.Check(map)) && - _entityManager.System().IsMapEligible(map); + _entityManager.System().IsMapEligible(map); } private bool TryLookupMap(string gameMap, [NotNullWhen(true)] out GameMapPrototype? map) diff --git a/Content.Server/MassMedia/Systems/NewsSystem.cs b/Content.Server/MassMedia/Systems/NewsSystem.cs index e0c27105ff..5fde3c8541 100644 --- a/Content.Server/MassMedia/Systems/NewsSystem.cs +++ b/Content.Server/MassMedia/Systems/NewsSystem.cs @@ -40,8 +40,8 @@ public sealed partial class NewsSystem : SharedNewsSystem [Dependency] private CartridgeLoaderSystem _cartridgeLoaderSystem = default!; [Dependency] private SharedAudioSystem _audio = default!; [Dependency] private PopupSystem _popup = default!; - [Dependency] private StationSystem _station = default!; - [Dependency] private GameTicker _ticker = default!; + [Dependency] private ServerStationSystem _station = default!; + [Dependency] private ServerGameTicker _ticker = default!; [Dependency] private IChatManager _chatManager = default!; [Dependency] private DiscordWebhook _discord = default!; [Dependency] private IConfigurationManager _cfg = default!; diff --git a/Content.Server/Mind/MindSystem.cs b/Content.Server/Mind/MindSystem.cs index be5dd86563..826cbe9b2a 100644 --- a/Content.Server/Mind/MindSystem.cs +++ b/Content.Server/Mind/MindSystem.cs @@ -12,12 +12,13 @@ using Robust.Shared.Network; using Robust.Shared.Player; using Robust.Shared.Utility; using System.Diagnostics.CodeAnalysis; +using Content.Shared.GameTicking; namespace Content.Server.Mind; public sealed partial class MindSystem : SharedMindSystem { - [Dependency] private GameTicker _gameTicker = default!; + [Dependency] private ServerGameTicker _gameTicker = default!; [Dependency] private IAdminLogManager _adminLogger = default!; [Dependency] private IPlayerManager _players = default!; [Dependency] private GhostSystem _ghosts = default!; @@ -210,7 +211,7 @@ public sealed partial class MindSystem : SharedMindSystem ? _transform.ToMapCoordinates(_gameTicker.GetObserverSpawnPoint()) : _transform.GetMapCoordinates(mind.OwnedEntity.Value); - entity = Spawn(GameTicker.ObserverPrototypeName, position); + entity = Spawn(ServerGameTicker.ObserverPrototypeName, position); component = EnsureComp(entity.Value); var ghostComponent = Comp(entity.Value); _ghosts.SetCanReturnToBody((entity.Value, ghostComponent), false); diff --git a/Content.Server/Nuke/NukeCodePaperSystem.cs b/Content.Server/Nuke/NukeCodePaperSystem.cs index e85066b1e6..d3e00f1363 100644 --- a/Content.Server/Nuke/NukeCodePaperSystem.cs +++ b/Content.Server/Nuke/NukeCodePaperSystem.cs @@ -14,7 +14,7 @@ namespace Content.Server.Nuke { [Dependency] private IRobustRandom _random = default!; [Dependency] private ChatSystem _chatSystem = default!; - [Dependency] private StationSystem _station = default!; + [Dependency] private ServerStationSystem _station = default!; [Dependency] private PaperSystem _paper = default!; [Dependency] private FaxSystem _faxSystem = default!; diff --git a/Content.Server/Nuke/NukeSystem.cs b/Content.Server/Nuke/NukeSystem.cs index 1dba04507f..67c2fa99fb 100644 --- a/Content.Server/Nuke/NukeSystem.cs +++ b/Content.Server/Nuke/NukeSystem.cs @@ -40,7 +40,7 @@ public sealed partial class NukeSystem : EntitySystem [Dependency] private SharedDoAfterSystem _doAfter = default!; [Dependency] private SharedTransformSystem _transform = default!; [Dependency] private SharedMapSystem _map = default!; - [Dependency] private StationSystem _station = default!; + [Dependency] private ServerStationSystem _station = default!; [Dependency] private UserInterfaceSystem _ui = default!; [Dependency] private AppearanceSystem _appearance = default!; [Dependency] private TurfSystem _turf = default!; diff --git a/Content.Server/NukeOps/WarDeclaratorComponent.cs b/Content.Server/NukeOps/WarDeclaratorComponent.cs index 462d2b1681..d3b058d6c3 100644 --- a/Content.Server/NukeOps/WarDeclaratorComponent.cs +++ b/Content.Server/NukeOps/WarDeclaratorComponent.cs @@ -9,7 +9,7 @@ namespace Content.Server.NukeOps; /// Used with NukeOps game rule to send war declaration announcement /// [RegisterComponent, AutoGenerateComponentPause] -[Access(typeof(WarDeclaratorSystem), typeof(NukeopsRuleSystem))] +[Access(typeof(WarDeclaratorSystem), typeof(ServerNukeopsRuleSystem))] public sealed partial class WarDeclaratorComponent : Component { /// diff --git a/Content.Server/Objectives/ObjectivesSystem.cs b/Content.Server/Objectives/ObjectivesSystem.cs index f01b2cc30b..44db00da87 100644 --- a/Content.Server/Objectives/ObjectivesSystem.cs +++ b/Content.Server/Objectives/ObjectivesSystem.cs @@ -13,6 +13,7 @@ using System.Linq; using System.Text; using Content.Server.Objectives.Commands; using Content.Shared.CCVar; +using Content.Shared.GameTicking; using Content.Shared.Prototypes; using Content.Shared.Roles.Jobs; using Robust.Server.Player; @@ -37,8 +38,6 @@ public sealed partial class ObjectivesSystem : SharedObjectivesSystem { base.Initialize(); - SubscribeLocalEvent(OnRoundEndText); - Subs.CVar(_cfg, CCVars.GameShowGreentext, value => _showGreentext = value, true); ProtoMan.PrototypesReloaded += CreateCompletions; @@ -54,7 +53,8 @@ public sealed partial class ObjectivesSystem : SharedObjectivesSystem /// /// Adds objective text for each game rule's players on round end. /// - private void OnRoundEndText(RoundEndTextAppendEvent ev) + [SubscribeLocalEvent] + private void OnRoundEndText(ref RoundEndTextAppendEvent ev) { // go through each gamerule getting data for the roundend summary. var summaries = new Dictionary>>(); diff --git a/Content.Server/Objectives/Systems/MultipleTraitorsRequirementSystem.cs b/Content.Server/Objectives/Systems/MultipleTraitorsRequirementSystem.cs index f5fbe9cd4b..845ab2f0df 100644 --- a/Content.Server/Objectives/Systems/MultipleTraitorsRequirementSystem.cs +++ b/Content.Server/Objectives/Systems/MultipleTraitorsRequirementSystem.cs @@ -1,5 +1,6 @@ using Content.Server.GameTicking.Rules; using Content.Server.Objectives.Components; +using Content.Shared.GameTicking.Rules; using Content.Shared.Objectives.Components; namespace Content.Server.Objectives.Systems; diff --git a/Content.Server/Objectives/Systems/ObjectiveLimitSystem.cs b/Content.Server/Objectives/Systems/ObjectiveLimitSystem.cs index 034af91c00..63aabcd77b 100644 --- a/Content.Server/Objectives/Systems/ObjectiveLimitSystem.cs +++ b/Content.Server/Objectives/Systems/ObjectiveLimitSystem.cs @@ -1,8 +1,10 @@ -using Content.Server.GameTicking.Rules.Components; using Content.Server.Objectives.Components; +using Content.Shared.GameTicking.Rules.Components; using Content.Shared.Mind; using Content.Shared.Objectives.Components; +namespace Content.Server.Objectives.Systems; + public sealed partial class ObjectiveLimitSystem : EntitySystem { public override void Initialize() diff --git a/Content.Server/PDA/PdaSystem.cs b/Content.Server/PDA/PdaSystem.cs index cfe69e6b58..a425d96b15 100644 --- a/Content.Server/PDA/PdaSystem.cs +++ b/Content.Server/PDA/PdaSystem.cs @@ -33,7 +33,7 @@ namespace Content.Server.PDA [Dependency] private CartridgeLoaderSystem _cartridgeLoader = default!; [Dependency] private InstrumentSystem _instrument = default!; [Dependency] private RingerSystem _ringer = default!; - [Dependency] private StationSystem _station = default!; + [Dependency] private ServerStationSystem _station = default!; [Dependency] private StoreSystem _store = default!; [Dependency] private IChatManager _chatManager = default!; [Dependency] private UserInterfaceSystem _ui = default!; @@ -131,13 +131,6 @@ namespace Content.Server.PDA UpdatePdaUi(uid, pda); } - public void SetOwner(EntityUid uid, PdaComponent pda, EntityUid owner, string ownerName) - { - pda.OwnerName = ownerName; - pda.PdaOwner = owner; - UpdatePdaUi(uid, pda); - } - private void OnStationRenamed(StationRenamedEvent ev) { UpdateAllPdaUisOnStation(); diff --git a/Content.Server/Pinpointer/StationMapSystem.cs b/Content.Server/Pinpointer/StationMapSystem.cs index 54180533a9..1d37befcdf 100644 --- a/Content.Server/Pinpointer/StationMapSystem.cs +++ b/Content.Server/Pinpointer/StationMapSystem.cs @@ -1,9 +1,9 @@ using Content.Server.GameTicking; -using Content.Server.GameTicking.Rules; -using Content.Server.GameTicking.Rules.Components; +using Content.Server.Station.Systems; +using Content.Shared.GameTicking.Rules; +using Content.Shared.GameTicking.Rules.Components; using Content.Shared.PowerCell; using Content.Shared.Pinpointer; -using Content.Shared.Station; using Robust.Server.GameObjects; namespace Content.Server.Pinpointer; @@ -12,9 +12,9 @@ public sealed partial class StationMapSystem : EntitySystem { [Dependency] private UserInterfaceSystem _ui = default!; [Dependency] private PowerCellSystem _cell = default!; - [Dependency] private SharedStationSystem _station = default!; + [Dependency] private ServerStationSystem _station = default!; [Dependency] private SharedTransformSystem _xform = default!; - [Dependency] private GameTicker _gameTicker = default!; + [Dependency] private ServerGameTicker _gameTicker = default!; public override void Initialize() { diff --git a/Content.Server/Power/EntitySystems/PowerMonitoringConsoleSystem.cs b/Content.Server/Power/EntitySystems/PowerMonitoringConsoleSystem.cs index 76d3e24aad..ce5dbedb49 100644 --- a/Content.Server/Power/EntitySystems/PowerMonitoringConsoleSystem.cs +++ b/Content.Server/Power/EntitySystems/PowerMonitoringConsoleSystem.cs @@ -239,7 +239,7 @@ internal sealed partial class PowerMonitoringConsoleSystem : SharedPowerMonitori private void OnPowerGridCheckStarted(ref GameRuleStartedEvent ev) { - if (!TryComp(ev.RuleEntity, out var rule)) + if (!TryComp(ev.Rule, out var rule)) return; var query = AllEntityQuery(); @@ -255,7 +255,7 @@ internal sealed partial class PowerMonitoringConsoleSystem : SharedPowerMonitori private void OnPowerGridCheckEnded(ref GameRuleEndedEvent ev) { - if (!TryComp(ev.RuleEntity, out var rule)) + if (!TryComp(ev.Rule, out var rule)) return; var query = AllEntityQuery(); diff --git a/Content.Server/PowerSink/PowerSinkSystem.cs b/Content.Server/PowerSink/PowerSinkSystem.cs index 0213d6926e..6ac4daec65 100644 --- a/Content.Server/PowerSink/PowerSinkSystem.cs +++ b/Content.Server/PowerSink/PowerSinkSystem.cs @@ -31,7 +31,7 @@ namespace Content.Server.PowerSink [Dependency] private ChatSystem _chat = default!; [Dependency] private ExplosionSystem _explosionSystem = default!; [Dependency] private SharedAudioSystem _audio = default!; - [Dependency] private StationSystem _station = default!; + [Dependency] private ServerStationSystem _station = default!; [Dependency] private BatterySystem _battery = default!; public override void Initialize() diff --git a/Content.Server/Procedural/DungeonSystem.cs b/Content.Server/Procedural/DungeonSystem.cs index 4f59df5fd9..77de45baf0 100644 --- a/Content.Server/Procedural/DungeonSystem.cs +++ b/Content.Server/Procedural/DungeonSystem.cs @@ -6,6 +6,7 @@ using Content.Server.GameTicking.Events; using Content.Shared.CCVar; using Content.Shared.Construction.EntitySystems; using Content.Shared.GameTicking; +using Content.Shared.GameTicking.Events; using Content.Shared.Maps; using Content.Shared.Physics; using Content.Shared.Procedural; diff --git a/Content.Server/Respawn/SpecialRespawnSystem.cs b/Content.Server/Respawn/SpecialRespawnSystem.cs index 9ba5dea3ee..671600da47 100644 --- a/Content.Server/Respawn/SpecialRespawnSystem.cs +++ b/Content.Server/Respawn/SpecialRespawnSystem.cs @@ -3,6 +3,7 @@ using Content.Server.Atmos.EntitySystems; using Content.Server.Chat.Managers; using Content.Server.GameTicking; using Content.Shared.Database; +using Content.Shared.GameTicking; using Content.Shared.Maps; using Content.Shared.Physics; using Content.Shared.Respawn; diff --git a/Content.Server/Revenant/EntitySystems/CorporealSystem.cs b/Content.Server/Revenant/EntitySystems/CorporealSystem.cs index e9dc405b53..444c904537 100644 --- a/Content.Server/Revenant/EntitySystems/CorporealSystem.cs +++ b/Content.Server/Revenant/EntitySystems/CorporealSystem.cs @@ -1,5 +1,6 @@ using Content.Server.GameTicking; using Content.Shared.Eye; +using Content.Shared.GameTicking; using Content.Shared.Revenant.Components; using Content.Shared.Revenant.EntitySystems; using Robust.Server.GameObjects; @@ -9,7 +10,7 @@ namespace Content.Server.Revenant.EntitySystems; public sealed partial class CorporealSystem : SharedCorporealSystem { [Dependency] private VisibilitySystem _visibilitySystem = default!; - [Dependency] private GameTicker _ticker = default!; + [Dependency] private ServerGameTicker _ticker = default!; public override void OnStartup(EntityUid uid, CorporealComponent component, ComponentStartup args) { diff --git a/Content.Server/Revenant/EntitySystems/RevenantSystem.cs b/Content.Server/Revenant/EntitySystems/RevenantSystem.cs index e6dae76609..383c9221e6 100644 --- a/Content.Server/Revenant/EntitySystems/RevenantSystem.cs +++ b/Content.Server/Revenant/EntitySystems/RevenantSystem.cs @@ -8,6 +8,7 @@ using Content.Shared.DoAfter; using Content.Shared.Examine; using Content.Shared.Eye; using Content.Shared.FixedPoint; +using Content.Shared.GameTicking; using Content.Shared.Interaction; using Content.Shared.Maps; using Content.Shared.Mobs.Systems; @@ -31,7 +32,7 @@ public sealed partial class RevenantSystem : EntitySystem [Dependency] private AtmosphereSystem _atmosphere = default!; [Dependency] private DamageableSystem _damage = default!; [Dependency] private EntityLookupSystem _lookup = default!; - [Dependency] private GameTicker _ticker = default!; + [Dependency] private ServerGameTicker _ticker = default!; [Dependency] private MobStateSystem _mobState = default!; [Dependency] private PhysicsSystem _physics = default!; [Dependency] private SharedDoAfterSystem _doAfter = default!; @@ -54,7 +55,7 @@ public sealed partial class RevenantSystem : EntitySystem SubscribeLocalEvent(OnExamine); SubscribeLocalEvent(OnStatusAdded); SubscribeLocalEvent(OnStatusEnded); - SubscribeLocalEvent(_ => MakeVisible(true)); + SubscribeLocalEvent(_ => MakeVisible(true)); SubscribeLocalEvent(OnRevenantGetVis); diff --git a/Content.Server/Roles/RoleBriefingSystem.cs b/Content.Server/Roles/RoleBriefingSystem.cs index 12e0a6fb14..ed1474b4e1 100644 --- a/Content.Server/Roles/RoleBriefingSystem.cs +++ b/Content.Server/Roles/RoleBriefingSystem.cs @@ -1,3 +1,4 @@ +using Content.Shared.Roles; using Content.Shared.Roles.Components; namespace Content.Server.Roles; diff --git a/Content.Server/Roles/RoleSystem.cs b/Content.Server/Roles/RoleSystem.cs index a15414ee27..69b105f466 100644 --- a/Content.Server/Roles/RoleSystem.cs +++ b/Content.Server/Roles/RoleSystem.cs @@ -85,42 +85,3 @@ public sealed partial class RoleSystem : SharedRoleSystem } } } - -/// -/// Event raised on the mind to get its briefing. -/// Handlers can either replace or append to the briefing, whichever is more appropriate. -/// -[ByRefEvent] -public sealed class GetBriefingEvent -{ - /// - /// The text that will be shown on the Character Screen - /// - public string? Briefing; - - /// - /// The Mind to whose Mind Role Entities the briefing is sent to - /// - public Entity Mind; - - public GetBriefingEvent(string? briefing = null) - { - Briefing = briefing; - } - - /// - /// If there is no briefing, sets it to the string. - /// If there is a briefing, adds a new line to separate it from the appended string. - /// - public void Append(string text) - { - if (Briefing == null) - { - Briefing = text; - } - else - { - Briefing += "\n" + text; - } - } -} diff --git a/Content.Server/RoundEnd/RoundEndSystem.cs b/Content.Server/RoundEnd/RoundEndSystem.cs index 590140b4ae..5870212dc1 100644 --- a/Content.Server/RoundEnd/RoundEndSystem.cs +++ b/Content.Server/RoundEnd/RoundEndSystem.cs @@ -33,11 +33,11 @@ namespace Content.Server.RoundEnd [Dependency] private IChatManager _chatManager = default!; [Dependency] private IGameTiming _gameTiming = default!; [Dependency] private ChatSystem _chatSystem = default!; - [Dependency] private GameTicker _gameTicker = default!; + [Dependency] private ServerGameTicker _gameTicker = default!; [Dependency] private DeviceNetworkSystem _deviceNetworkSystem = default!; [Dependency] private EmergencyShuttleSystem _shuttle = default!; [Dependency] private SharedAudioSystem _audio = default!; - [Dependency] private StationSystem _stationSystem = default!; + [Dependency] private ServerStationSystem _stationSystem = default!; public TimeSpan DefaultCooldownDuration { get; set; } = TimeSpan.FromSeconds(30); @@ -97,7 +97,7 @@ namespace Content.Server.RoundEnd } /// - /// Attempts to get the MapUid of the station using + /// Attempts to get the MapUid of the station using /// public EntityUid? GetStation() { @@ -394,22 +394,4 @@ namespace Content.Server.RoundEnd { public static RoundEndSystemChangedEvent Default { get; } = new(); } - - public enum RoundEndBehavior : byte - { - /// - /// Instantly end round - /// - InstantEnd, - - /// - /// Call shuttle with custom announcement - /// - ShuttleCall, - - /// - /// Do nothing - /// - Nothing - } } diff --git a/Content.Server/Salvage/JobBoard/SalvageJobBoardSystem.cs b/Content.Server/Salvage/JobBoard/SalvageJobBoardSystem.cs index f2e19d8d63..c37107c77f 100644 --- a/Content.Server/Salvage/JobBoard/SalvageJobBoardSystem.cs +++ b/Content.Server/Salvage/JobBoard/SalvageJobBoardSystem.cs @@ -26,7 +26,7 @@ public sealed partial class SalvageJobBoardSystem : EntitySystem [Dependency] private LabelSystem _label = default!; [Dependency] private PaperSystem _paper = default!; [Dependency] private RadioSystem _radio = default!; - [Dependency] private StationSystem _station = default!; + [Dependency] private ServerStationSystem _station = default!; [Dependency] private UserInterfaceSystem _ui = default!; /// diff --git a/Content.Server/Salvage/SalvageSystem.cs b/Content.Server/Salvage/SalvageSystem.cs index 06171637a8..520b98b93e 100644 --- a/Content.Server/Salvage/SalvageSystem.cs +++ b/Content.Server/Salvage/SalvageSystem.cs @@ -38,7 +38,7 @@ namespace Content.Server.Salvage [Dependency] private SharedMapSystem _mapSystem = default!; [Dependency] private ShuttleSystem _shuttle = default!; [Dependency] private ShuttleConsoleSystem _shuttleConsoles = default!; - [Dependency] private StationSystem _station = default!; + [Dependency] private ServerStationSystem _station = default!; [Dependency] private UserInterfaceSystem _ui = default!; [Dependency] private EntityQuery _gridQuery = default!; diff --git a/Content.Server/Sandbox/SandboxSystem.cs b/Content.Server/Sandbox/SandboxSystem.cs index 1cc4f58d9e..63cba9948e 100644 --- a/Content.Server/Sandbox/SandboxSystem.cs +++ b/Content.Server/Sandbox/SandboxSystem.cs @@ -1,8 +1,10 @@ +using System.Linq; using Content.Server.GameTicking; using Content.Shared.Access; using Content.Shared.Access.Components; using Content.Shared.Access.Systems; using Content.Shared.Containers.ItemSlots; +using Content.Shared.GameTicking; using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; using Content.Shared.Inventory; @@ -15,7 +17,6 @@ using Robust.Server.Player; using Robust.Shared.Enums; using Robust.Shared.Player; using Robust.Shared.Prototypes; -using System.Linq; namespace Content.Server.Sandbox { @@ -28,7 +29,7 @@ namespace Content.Server.Sandbox [Dependency] private SharedAccessSystem _access = default!; [Dependency] private InventorySystem _inventory = default!; [Dependency] private ItemSlotsSystem _slots = default!; - [Dependency] private GameTicker _ticker = default!; + [Dependency] private ServerGameTicker _ticker = default!; [Dependency] private SharedHandsSystem _handsSystem = default!; private bool _isSandboxEnabled; diff --git a/Content.Server/Shuttles/Components/ShuttleComponent.cs b/Content.Server/Shuttles/Components/ShuttleComponent.cs deleted file mode 100644 index 12123de69a..0000000000 --- a/Content.Server/Shuttles/Components/ShuttleComponent.cs +++ /dev/null @@ -1,79 +0,0 @@ -using System.Numerics; - -namespace Content.Server.Shuttles.Components -{ - [RegisterComponent] - public sealed partial class ShuttleComponent : Component - { - [ViewVariables] - public bool Enabled = true; - - [ViewVariables] - public Vector2[] CenterOfThrust = new Vector2[4]; - - /// - /// Thrust gets multiplied by this value if it's for braking. - /// - public const float BrakeCoefficient = 1.5f; - - /// - /// Maximum velocity. - /// - [DataField] - public float BaseMaxLinearVelocity = 60f; - - public const float MaxAngularVelocity = 4f; - - /// - /// The cached thrust available for each cardinal direction - /// - [ViewVariables] - public readonly float[] LinearThrust = new float[4]; - - /// - /// The thrusters contributing to each direction for impulse. - /// - // No touchy - public readonly List[] LinearThrusters = new List[] - { - new(), - new(), - new(), - new(), - }; - - /// - /// The thrusters contributing to the angular impulse of the shuttle. - /// - public readonly List AngularThrusters = new(); - - [ViewVariables] - public float AngularThrust = 0f; - - /// - /// A bitmask of all the directions we are considered thrusting. - /// - [ViewVariables] - public DirectionFlag ThrustDirections = DirectionFlag.None; - - /// - /// Base damping modifier applied to the shuttle's physics component when not in FTL. - /// - [DataField] - public float BodyModifier = 0.25f; - - /// - /// Final Damping Modifier for a shuttle. - /// This value is set to 0 during FTL. And to BodyModifier when not in FTL. - /// - [DataField] - public float DampingModifier; - - /// - /// Optional override for the FTL cooldown for this shuttle. - /// If not null, then the value will be used instead of the shuttle.cooldown CCVar. - /// - [DataField] - public TimeSpan? FTLCooldownOverride = null; - } -} diff --git a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.Console.cs b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.Console.cs index 2d7e6feefc..5202162273 100644 --- a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.Console.cs +++ b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.Console.cs @@ -27,11 +27,6 @@ namespace Content.Server.Shuttles.Systems; /// public sealed partial class EmergencyShuttleSystem { - /// - /// Has the emergency shuttle arrived? - /// - public bool EmergencyShuttleArrived { get; private set; } - public bool EarlyLaunchAuthorized { get; private set; } /// diff --git a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs index a6105f3e58..05309ff14a 100644 --- a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs +++ b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs @@ -21,6 +21,7 @@ using Content.Shared.CCVar; using Content.Shared.Database; using Content.Shared.DeviceNetwork.Components; using Content.Shared.GameTicking; +using Content.Shared.GameTicking.Events; using Content.Shared.Localizations; using Content.Shared.RoundEnd; using Content.Shared.Shuttles.Components; @@ -56,7 +57,7 @@ public sealed partial class EmergencyShuttleSystem : SharedEmergencyShuttleSyste [Dependency] private CommunicationsConsoleSystem _commsConsole = default!; [Dependency] private DeviceNetworkSystem _deviceNetworkSystem = default!; [Dependency] private DockingSystem _dock = default!; - [Dependency] private GameTicker _ticker = default!; + [Dependency] private ServerGameTicker _ticker = default!; [Dependency] private IdCardSystem _idSystem = default!; [Dependency] private NavMapSystem _navMap = default!; [Dependency] private MapLoaderSystem _loader = default!; @@ -64,7 +65,7 @@ public sealed partial class EmergencyShuttleSystem : SharedEmergencyShuttleSyste [Dependency] private RoundEndSystem _roundEnd = default!; [Dependency] private SharedAudioSystem _audio = default!; [Dependency] private ShuttleSystem _shuttle = default!; - [Dependency] private StationSystem _station = default!; + [Dependency] private ServerStationSystem _station = default!; [Dependency] private TransformSystem _transformSystem = default!; [Dependency] private UserInterfaceSystem _uiSystem = default!; @@ -119,15 +120,6 @@ public sealed partial class EmergencyShuttleSystem : SharedEmergencyShuttleSyste component.MapEntity = null; } - /// - /// Attempts to get the EntityUid of the emergency shuttle - /// - public EntityUid? GetShuttle() - { - AllEntityQuery().MoveNext(out var shuttle, out _); - return shuttle; - } - private void SetEmergencyShuttleEnabled(bool value) { if (_emergencyShuttleEnabled == value) diff --git a/Content.Server/Shuttles/Systems/ArrivalsSystem.cs b/Content.Server/Shuttles/Systems/ServerArrivalsSystem.cs similarity index 70% rename from Content.Server/Shuttles/Systems/ArrivalsSystem.cs rename to Content.Server/Shuttles/Systems/ServerArrivalsSystem.cs index e79a0d6b08..51e8a1b3e4 100644 --- a/Content.Server/Shuttles/Systems/ArrivalsSystem.cs +++ b/Content.Server/Shuttles/Systems/ServerArrivalsSystem.cs @@ -1,32 +1,30 @@ using System.Linq; using System.Numerics; using Content.Server.Administration; -using Content.Server.Antag; using Content.Server.Chat.Managers; using Content.Server.DeviceNetwork.Systems; -using Content.Server.GameTicking; -using Content.Server.GameTicking.Events; using Content.Server.Parallax; using Content.Server.Shuttles.Components; using Content.Server.Shuttles.Events; -using Content.Server.Spawners.Components; -using Content.Server.Spawners.EntitySystems; using Content.Server.Station.Events; -using Content.Server.Station.Systems; using Content.Shared.Administration; +using Content.Shared.Antag; using Content.Shared.CCVar; using Content.Shared.Damage.Components; using Content.Shared.DeviceNetwork.Components; using Content.Shared.GameTicking; +using Content.Shared.GameTicking.Events; using Content.Shared.Mobs.Components; using Content.Shared.Movement.Components; using Content.Shared.Parallax.Biomes; using Content.Shared.RoundEnd; using Content.Shared.Salvage; using Content.Shared.Shuttles.Components; +using Content.Shared.Shuttles.Systems; +using Content.Shared.Spawners.Components; +using Content.Shared.Station.Systems; using Content.Shared.Tiles; using Robust.Shared.Collections; -using Robust.Shared.Configuration; using Robust.Shared.Console; using Robust.Shared.EntitySerialization.Systems; using Robust.Shared.Map; @@ -34,47 +32,29 @@ using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Spawners; -using Robust.Shared.Timing; using Robust.Shared.Utility; namespace Content.Server.Shuttles.Systems; -/// -/// If enabled spawns players on a separate arrivals station before they can transfer to the main station. -/// -public sealed partial class ArrivalsSystem : EntitySystem +/// +public sealed partial class ServerArrivalsSystem : ArrivalsSystem { [Dependency] private IChatManager _chat = default!; - [Dependency] private IConfigurationManager _cfgManager = default!; [Dependency] private IConsoleHost _console = default!; - [Dependency] private IGameTiming _timing = default!; - [Dependency] private IRobustRandom _random = default!; [Dependency] private ActorSystem _actor = default!; + [Dependency] private AntagSelectionSystem _antag = default!; [Dependency] private BiomeSystem _biomes = default!; [Dependency] private DeviceNetworkSystem _deviceNetworkSystem = default!; - [Dependency] private GameTicker _ticker = default!; [Dependency] private MapLoaderSystem _loader = default!; [Dependency] private MetaDataSystem _metaData = default!; + [Dependency] private ShuttleSystem _shuttles = default!; [Dependency] private SharedMapSystem _mapSystem = default!; [Dependency] private SharedTransformSystem _transform = default!; - [Dependency] private ShuttleSystem _shuttles = default!; - [Dependency] private StationSpawningSystem _stationSpawning = default!; [Dependency] private StationSystem _station = default!; - [Dependency] private AntagSelectionSystem _antag = default!; - [Dependency] private EntityQuery _pendingQuery = default!; - [Dependency] private EntityQuery _blacklistQuery = default!; - [Dependency] private EntityQuery _mobQuery = default!; - - /// - /// If enabled then spawns players on an alternate map so they can take a shuttle to the station. - /// - public bool Enabled { get; private set; } - - /// - /// Flags if all players spawning at the departure terminal have godmode until they leave the terminal. - /// - public bool ArrivalsGodmode { get; private set; } + [Dependency] private EntityQuery _pendingQuery; + [Dependency] private EntityQuery _blacklistQuery; + [Dependency] private EntityQuery _mobQuery; /// /// The first arrival is a little early, to save everyone 10s @@ -92,396 +72,18 @@ public sealed partial class ArrivalsSystem : EntitySystem { base.Initialize(); - SubscribeLocalEvent(HandlePlayerSpawning, before: new []{ typeof(SpawnPointSystem)}, after: new [] { typeof(ContainerSpawnPointSystem)}); - - SubscribeLocalEvent(OnStationPostInit); - - SubscribeLocalEvent(OnShuttleStartup); - SubscribeLocalEvent(OnShuttleTag); - - SubscribeLocalEvent(OnRoundStarting); - SubscribeLocalEvent(OnArrivalsFTL); - SubscribeLocalEvent(OnArrivalsDocked); - - SubscribeLocalEvent(SendDirections); - - // Don't invoke immediately as it will get set in the natural course of things. - Enabled = _cfgManager.GetCVar(CCVars.ArrivalsShuttles); - ArrivalsGodmode = _cfgManager.GetCVar(CCVars.GodmodeArrivals); - - _cfgManager.OnValueChanged(CCVars.ArrivalsShuttles, SetArrivals); - _cfgManager.OnValueChanged(CCVars.GodmodeArrivals, b => ArrivalsGodmode = b); + Cfg.OnValueChanged(CCVars.ArrivalsShuttles, SetArrivals); // Command so admins can set these for funsies _console.RegisterCommand("arrivals", ArrivalsCommand, ArrivalsCompletion); } - private void OnShuttleTag(EntityUid uid, ArrivalsShuttleComponent component, ref FTLTagEvent args) - { - if (args.Handled) - return; - - // Just saves mappers forgetting. (v2 boogaloo) - args.Handled = true; - args.Tag = "DockArrivals"; - } - - private CompletionResult ArrivalsCompletion(IConsoleShell shell, string[] args) - { - if (args.Length != 1) - return CompletionResult.Empty; - - return new CompletionResult(new CompletionOption[] - { - // Enables and disable are separate comms in case you don't want to accidentally toggle it, compared to - // returns which doesn't have an immediate effect - new("enable", Loc.GetString("cmd-arrivals-enable-hint")), - new("disable", Loc.GetString("cmd-arrivals-disable-hint")), - new("returns", Loc.GetString("cmd-arrivals-returns-hint")), - new ("force", Loc.GetString("cmd-arrivals-force-hint")) - }, "Option"); - } - - [AdminCommand(AdminFlags.Fun)] - private void ArrivalsCommand(IConsoleShell shell, string argstr, string[] args) - { - if (args.Length != 1) - { - shell.WriteError(Loc.GetString("cmd-arrivals-invalid")); - return; - } - - switch (args[0]) - { - case "enable": - _cfgManager.SetCVar(CCVars.ArrivalsShuttles, true); - break; - case "disable": - _cfgManager.SetCVar(CCVars.ArrivalsShuttles, false); - break; - case "returns": - var existing = _cfgManager.GetCVar(CCVars.ArrivalsReturns); - _cfgManager.SetCVar(CCVars.ArrivalsReturns, !existing); - shell.WriteLine(Loc.GetString("cmd-arrivals-returns", ("value", !existing))); - break; - case "force": - var query = AllEntityQuery(); - var spawnPoints = EntityQuery().ToList(); - - TryGetArrivals(out var arrivalsUid); - - while (query.MoveNext(out var uid, out _, out var pendingXform)) - { - _random.Shuffle(spawnPoints); - - foreach (var (point, xform) in spawnPoints) - { - if (point.SpawnType != SpawnPointType.LateJoin || xform.GridUid == arrivalsUid) - continue; - - _transform.SetCoordinates(uid, pendingXform, xform.Coordinates); - break; - } - - RemCompDeferred(uid); - RemCompDeferred(uid); - shell.WriteLine(Loc.GetString("cmd-arrivals-forced", ("uid", ToPrettyString(uid)))); - } - break; - default: - shell.WriteError(Loc.GetString($"cmd-arrivals-invalid")); - break; - } - } - - /// - /// First sends shuttle timer data, then kicks people off the shuttle if it isn't leaving the arrivals terminal - /// - private void OnArrivalsFTL(EntityUid shuttleUid, ArrivalsShuttleComponent component, ref FTLStartedEvent args) - { - if (!TryGetArrivals(out EntityUid arrivals)) - return; - - if (TryComp(shuttleUid, out var netComp)) - { - TryComp(shuttleUid, out var ftlComp); - var ftlTime = TimeSpan.FromSeconds(ftlComp?.TravelTime ?? _shuttles.DefaultTravelTime); - - var payload = new ScreenShuttlePayload - { - Shuttle = shuttleUid, - ShuttleTime = ftlTime, - }; - - // unfortunate levels of spaghetti due to roundstart arrivals ftl behavior - EntityUid? sourceMap; - var arrivalsDelay = _cfgManager.GetCVar(CCVars.ArrivalsCooldown); - - if (component.FirstRun) - { - var station = _station.GetLargestGrid(component.Station); - sourceMap = station == null ? null : Transform(station.Value)?.MapUid; - arrivalsDelay += RoundStartFTLDuration; - component.FirstRun = false; - payload.DestinationMap = Transform(args.TargetCoordinates.EntityId).MapUid; - payload.DestinationTime = ftlTime; - } - else - sourceMap = args.FromMapUid; - - payload.SourceMap = sourceMap; - payload.SourceTime = ftlTime + TimeSpan.FromSeconds(arrivalsDelay); - - _deviceNetworkSystem.SendPacket(shuttleUid, null, ref payload, netComp.TransmitFrequency); - } - - // Don't do anything here when leaving arrivals. - var arrivalsMapUid = Transform(arrivals).MapUid; - if (args.FromMapUid == arrivalsMapUid) - return; - - // Any mob then yeet them off the shuttle. - if (!_cfgManager.GetCVar(CCVars.ArrivalsReturns) && args.FromMapUid != null) - DumpChildren(shuttleUid, ref args); - - var pendingQuery = AllEntityQuery(); - - // We're heading from the station back to arrivals (if leaving arrivals, would have returned above). - // Process everyone who holds a PendingClockInComponent - // Note, due to way DumpChildren works, anyone who doesn't have a PendingClockInComponent gets left in space - // and will not warp. This is intended behavior. - while (pendingQuery.MoveNext(out var pUid, out _, out var xform)) - { - if (xform.GridUid == shuttleUid) - { - // Warp all players who are still on this shuttle to a spawn point. This doesn't let them return to - // arrivals. It also ensures noobs, slow players or AFK players safely leave the shuttle. - TryTeleportToMapSpawn(pUid, component.Station, xform); - } - - // Players who have remained at arrivals keep their warp coupon (PendingClockInComponent) for now. - if (xform.MapUid == arrivalsMapUid) - continue; - - // The player has successfully left arrivals and is also not on the shuttle. Remove their warp coupon. - RemCompDeferred(pUid); - RemCompDeferred(pUid); - - if (ArrivalsGodmode) - RemCompDeferred(pUid); - - if (_actor.TryGetSession(pUid, out var session) && session is not null) - _antag.TryMakeLateJoinAntag(session); - } - } - - private void OnArrivalsDocked(EntityUid uid, ArrivalsShuttleComponent component, ref FTLCompletedEvent args) - { - var dockTime = component.NextTransfer - _timing.CurTime + TimeSpan.FromSeconds(_shuttles.DefaultStartupTime); - - if (TryComp(uid, out var netComp)) - { - var payload = new ScreenShuttlePayload - { - Shuttle = uid, - ShuttleTime = dockTime, - SourceMap = args.MapUid, - SourceTime = dockTime, - Docked = true, - }; - _deviceNetworkSystem.SendPacket(uid, null, ref payload, netComp.TransmitFrequency); - } - } - - private void DumpChildren(EntityUid uid, ref FTLStartedEvent args) - { - var toDump = new List>(); - FindDumpChildren(uid, toDump); - foreach (var (ent, xform) in toDump) - { - var rotation = xform.LocalRotation; - _transform.SetCoordinates(ent, new EntityCoordinates(args.FromMapUid!.Value, Vector2.Transform(xform.LocalPosition, args.FTLFrom))); - _transform.SetWorldRotation(ent, args.FromRotation + rotation); - if (_actor.TryGetSession(ent, out var session)) - { - _chat.DispatchServerMessage(session!, Loc.GetString("latejoin-arrivals-dumped-from-shuttle")); - } - } - } - - private void FindDumpChildren(EntityUid uid, List> toDump) - { - if (_pendingQuery.HasComponent(uid)) - return; - - var xform = Transform(uid); - - if (_mobQuery.HasComponent(uid) || _blacklistQuery.HasComponent(uid)) - { - toDump.Add((uid, xform)); - return; - } - - var children = xform.ChildEnumerator; - while (children.MoveNext(out var child)) - { - FindDumpChildren(child, toDump); - } - } - - public void HandlePlayerSpawning(PlayerSpawningEvent ev) - { - if (ev.SpawnResult != null) - return; - - // We use arrivals as the default spawn so don't check for job prio. - - // Only works on latejoin even if enabled. - if (!Enabled || _ticker.RunLevel != GameRunLevel.InRound) - return; - - if (!HasComp(ev.Station)) - return; - - TryGetArrivals(out var arrivals); - - if (!TryComp(arrivals, out TransformComponent? arrivalsXform)) - return; - - var mapId = arrivalsXform.MapID; - - var points = EntityQueryEnumerator(); - var possiblePositions = new List(); - while (points.MoveNext(out var uid, out var spawnPoint, out var xform)) - { - if (spawnPoint.SpawnType != SpawnPointType.LateJoin || xform.MapID != mapId) - continue; - - possiblePositions.Add(xform.Coordinates); - } - - if (possiblePositions.Count <= 0) - return; - - var spawnLoc = _random.Pick(possiblePositions); - ev.SpawnResult = _stationSpawning.SpawnPlayerMob( - spawnLoc, - ev.Job, - ev.HumanoidCharacterProfile, - ev.Station); - - EnsureComp(ev.SpawnResult.Value); - EnsureComp(ev.SpawnResult.Value); - - // If you're forced to spawn, you're invincible until you leave wherever you were forced to spawn. - if (ArrivalsGodmode) - EnsureComp(ev.SpawnResult.Value); - } - - private void SendDirections(PlayerSpawnCompleteEvent ev) - { - if (!Enabled || !ev.LateJoin || ev.Silent || !_pendingQuery.HasComp(ev.Mob)) - return; - - var arrival = NextShuttleArrival(); - - var message = arrival is not null - ? Loc.GetString("latejoin-arrivals-direction-time", ("time", $"{arrival:mm\\:ss}")) - : Loc.GetString("latejoin-arrivals-direction"); - - _chat.DispatchServerMessage(ev.Player, message); - } - - private bool TryTeleportToMapSpawn(EntityUid player, EntityUid stationId, TransformComponent? transform = null) - { - if (!Resolve(player, ref transform)) - return false; - - var points = EntityQueryEnumerator(); - var possiblePositions = new ValueList(32); - - // Find a spawnpoint on the same map as the player is already docked with now. - while (points.MoveNext(out var uid, out var spawnPoint, out var xform)) - { - if (spawnPoint.SpawnType == SpawnPointType.LateJoin && - _station.GetOwningStation(uid, xform) == stationId) - { - // Add to list of possible spawn locations - possiblePositions.Add(xform.Coordinates); - } - } - - if (possiblePositions.Count > 0) - { - // Move the player to a random late-join spawnpoint. - _transform.SetCoordinates(player, transform, _random.Pick(possiblePositions)); - if (_actor.TryGetSession(player, out var session)) - { - _chat.DispatchServerMessage(session!, Loc.GetString("latejoin-arrivals-teleport-to-spawn")); - } - return true; - } - - return false; - } - - private void OnShuttleStartup(EntityUid uid, ArrivalsShuttleComponent component, ComponentStartup args) - { - EnsureComp(uid); - } - - private bool TryGetArrivals(out EntityUid uid) - { - var arrivalsQuery = EntityQueryEnumerator(); - - while (arrivalsQuery.MoveNext(out uid, out _)) - { - return true; - } - - return false; - } - - /// - /// Check if an entity is on the arrivals grid. - /// - /// Entity to check. - /// True if the entity is on the arrivals grid. Returns false if not on arrivals, or there is no arrivals grid. - public bool IsOnArrivals(Entity entity) - { - if (!Resolve(entity, ref entity.Comp)) - return false; - - if (!TryGetArrivals(out var arrivals)) - return false; - - var arrivalsGridUid = Transform(arrivals).GridUid; - if (!arrivalsGridUid.HasValue) - return false; - - return entity.Comp.GridUid == Transform(arrivals).GridUid; - } - - public TimeSpan? NextShuttleArrival() - { - var query = EntityQueryEnumerator(); - var time = TimeSpan.MaxValue; - while (query.MoveNext(out var uid, out var comp)) - { - if (comp.NextArrivalsTime < time) - time = comp.NextArrivalsTime; - } - - var duration = _timing.CurTime; - return (time < duration) ? null : time - duration; - } - public override void Update(float frameTime) { base.Update(frameTime); var query = EntityQueryEnumerator(); - var curTime = _timing.CurTime; + var curTime = Timing.CurTime; TryGetArrivals(out var arrivals); if (TryComp(arrivals, out TransformComponent? arrivalsXform)) @@ -499,7 +101,7 @@ public sealed partial class ArrivalsSystem : EntitySystem if (arrivals.IsValid()) _shuttles.FTLToDock(uid, shuttle, arrivals); - comp.NextArrivalsTime = _timing.CurTime + TimeSpan.FromSeconds(tripTime); + comp.NextArrivalsTime = Timing.CurTime + TimeSpan.FromSeconds(tripTime); } // Go to station else @@ -511,27 +113,18 @@ public sealed partial class ArrivalsSystem : EntitySystem // The ArrivalsCooldown includes the trip there, so we only need to add the time taken for // the trip back. - comp.NextArrivalsTime = _timing.CurTime + TimeSpan.FromSeconds( - _cfgManager.GetCVar(CCVars.ArrivalsCooldown) + tripTime); + comp.NextArrivalsTime = Timing.CurTime + TimeSpan.FromSeconds( + Cfg.GetCVar(CCVars.ArrivalsCooldown) + tripTime); } - comp.NextTransfer += TimeSpan.FromSeconds(_cfgManager.GetCVar(CCVars.ArrivalsCooldown)); + comp.NextTransfer += TimeSpan.FromSeconds(Cfg.GetCVar(CCVars.ArrivalsCooldown)); } } } - private void OnRoundStarting(RoundStartingEvent ev) - { - // Setup arrivals station - if (!Enabled) - return; - - SetupArrivalsStation(); - } - private void SetupArrivalsStation() { - var path = new ResPath(_cfgManager.GetCVar(CCVars.ArrivalsMap)); + var path = new ResPath(Cfg.GetCVar(CCVars.ArrivalsMap)); _mapSystem.CreateMap(out var mapId, runMapInit: false); var mapUid = _mapSystem.GetMap(mapId); @@ -545,9 +138,9 @@ public sealed partial class ArrivalsSystem : EntitySystem EnsureComp(grid.Value); // Setup planet arrivals if relevant - if (_cfgManager.GetCVar(CCVars.ArrivalsPlanet)) + if (Cfg.GetCVar(CCVars.ArrivalsPlanet)) { - var template = _random.Pick(_arrivalsBiomeOptions); + var template = Random.Pick(_arrivalsBiomeOptions); _biomes.EnsurePlanet(mapUid, ProtoMan.Index(template)); var restricted = new RestrictedRangeComponent { @@ -599,15 +192,6 @@ public sealed partial class ArrivalsSystem : EntitySystem } } - private void OnStationPostInit(EntityUid uid, StationArrivalsComponent component, ref StationPostInitEvent args) - { - if (!Enabled) - return; - - // If it's a latespawn station then this will fail but that's okey - SetupShuttle(uid, component); - } - private void SetupShuttle(EntityUid uid, StationArrivalsComponent component) { if (!Deleted(component.Shuttle)) @@ -625,11 +209,297 @@ public sealed partial class ArrivalsSystem : EntitySystem arrivalsComp.Station = uid; EnsureComp(uid); _shuttles.FTLToDock(component.Shuttle, shuttleComp, arrivals, hyperspaceTime: RoundStartFTLDuration); - arrivalsComp.NextTransfer = _timing.CurTime + TimeSpan.FromSeconds(_cfgManager.GetCVar(CCVars.ArrivalsCooldown)); + arrivalsComp.NextTransfer = Timing.CurTime + TimeSpan.FromSeconds(Cfg.GetCVar(CCVars.ArrivalsCooldown)); } // Don't start the arrivals shuttle immediately docked so power has a time to stabilise? var timer = AddComp(dummpMapEntity); timer.Lifetime = 15f; } + + [SubscribeLocalEvent] + private void OnRoundStarting(RoundStartingEvent ev) + { + // Setup arrivals station + if (!Enabled) + return; + + SetupArrivalsStation(); + } + + [SubscribeLocalEvent] + private void OnStationPostInit(EntityUid uid, StationArrivalsComponent component, ref StationPostInitEvent args) + { + if (!Enabled) + return; + + // If it's a latespawn station then this will fail but that's okey + SetupShuttle(uid, component); + } + + /// + /// First sends shuttle timer data, then kicks people off the shuttle if it isn't leaving the arrivals terminal + /// + [SubscribeLocalEvent] + private void OnArrivalsFTL(EntityUid shuttleUid, ArrivalsShuttleComponent component, ref FTLStartedEvent args) + { + if (!TryGetArrivals(out EntityUid arrivals)) + return; + + if (TryComp(shuttleUid, out var netComp)) + { + TryComp(shuttleUid, out var ftlComp); + var ftlTime = TimeSpan.FromSeconds(ftlComp?.TravelTime ?? _shuttles.DefaultTravelTime); + + var payload = new ScreenShuttlePayload + { + Shuttle = shuttleUid, + ShuttleTime = ftlTime, + }; + + // unfortunate levels of spaghetti due to roundstart arrivals ftl behavior + EntityUid? sourceMap; + var arrivalsDelay = Cfg.GetCVar(CCVars.ArrivalsCooldown); + + if (component.FirstRun) + { + var station = _station.GetLargestGrid(component.Station); + sourceMap = station == null ? null : Transform(station.Value).MapUid; + arrivalsDelay += RoundStartFTLDuration; + component.FirstRun = false; + payload.DestinationMap = Transform(args.TargetCoordinates.EntityId).MapUid; + payload.DestinationTime = ftlTime; + } + else + sourceMap = args.FromMapUid; + + payload.SourceMap = sourceMap; + payload.SourceTime = ftlTime + TimeSpan.FromSeconds(arrivalsDelay); + + _deviceNetworkSystem.SendPacket(shuttleUid, null, ref payload, netComp.TransmitFrequency); + } + + // Don't do anything here when leaving arrivals. + var arrivalsMapUid = Transform(arrivals).MapUid; + if (args.FromMapUid == arrivalsMapUid) + return; + + // Any mob then yeet them off the shuttle. + if (!Cfg.GetCVar(CCVars.ArrivalsReturns) && args.FromMapUid != null) + DumpChildren(shuttleUid, ref args); + + var pendingQuery = AllEntityQuery(); + + // We're heading from the station back to arrivals (if leaving arrivals, would have returned above). + // Process everyone who holds a PendingClockInComponent + // Note, due to way DumpChildren works, anyone who doesn't have a PendingClockInComponent gets left in space + // and will not warp. This is intended behavior. + while (pendingQuery.MoveNext(out var pUid, out _, out var xform)) + { + if (xform.GridUid == shuttleUid) + { + // Warp all players who are still on this shuttle to a spawn point. This doesn't let them return to + // arrivals. It also ensures noobs, slow players or AFK players safely leave the shuttle. + TryTeleportToMapSpawn(pUid, component.Station, xform); + } + + // Players who have remained at arrivals keep their warp coupon (PendingClockInComponent) for now. + if (xform.MapUid == arrivalsMapUid) + continue; + + // The player has successfully left arrivals and is also not on the shuttle. Remove their warp coupon. + RemCompDeferred(pUid); + RemCompDeferred(pUid); + + if (ArrivalsGodmode) + RemCompDeferred(pUid); + + if (_actor.TryGetSession(pUid, out var session) && session is not null) + _antag.TryMakeLateJoinAntag(session); + } + } + + [SubscribeLocalEvent] + private void OnArrivalsDocked(EntityUid uid, ArrivalsShuttleComponent component, ref FTLCompletedEvent args) + { + var dockTime = component.NextTransfer - Timing.CurTime + TimeSpan.FromSeconds(_shuttles.DefaultStartupTime); + + if (TryComp(uid, out var netComp)) + { + var payload = new ScreenShuttlePayload + { + Shuttle = uid, + ShuttleTime = dockTime, + SourceMap = args.MapUid, + SourceTime = dockTime, + Docked = true, + }; + _deviceNetworkSystem.SendPacket(uid, null, ref payload, netComp.TransmitFrequency); + } + } + + private void DumpChildren(EntityUid uid, ref FTLStartedEvent args) + { + var toDump = new List>(); + FindDumpChildren(uid, toDump); + foreach (var (ent, xform) in toDump) + { + var rotation = xform.LocalRotation; + _transform.SetCoordinates(ent, new EntityCoordinates(args.FromMapUid!.Value, Vector2.Transform(xform.LocalPosition, args.FTLFrom))); + _transform.SetWorldRotation(ent, args.FromRotation + rotation); + if (_actor.TryGetSession(ent, out var session)) + { + _chat.DispatchServerMessage(session!, Loc.GetString("latejoin-arrivals-dumped-from-shuttle")); + } + } + } + + + private void FindDumpChildren(EntityUid uid, List> toDump) + { + if (_pendingQuery.HasComponent(uid)) + return; + + var xform = Transform(uid); + + if (_mobQuery.HasComponent(uid) || _blacklistQuery.HasComponent(uid)) + { + toDump.Add((uid, xform)); + return; + } + + var children = xform.ChildEnumerator; + while (children.MoveNext(out var child)) + { + FindDumpChildren(child, toDump); + } + } + + [SubscribeLocalEvent] + private void OnShuttleTag(EntityUid uid, ArrivalsShuttleComponent component, ref FTLTagEvent args) + { + if (args.Handled) + return; + + // Just saves mappers forgetting. (v2 boogaloo) + args.Handled = true; + args.Tag = "DockArrivals"; + } + + [SubscribeLocalEvent] + private void SendDirections(PlayerSpawnCompleteEvent ev) + { + if (!Enabled || !ev.LateJoin || ev.Silent || !_pendingQuery.HasComp(ev.Mob)) + return; + + var arrival = NextShuttleArrival(); + + var message = arrival is not null + ? Loc.GetString("latejoin-arrivals-direction-time", ("time", $"{arrival:mm\\:ss}")) + : Loc.GetString("latejoin-arrivals-direction"); + + _chat.DispatchServerMessage(ev.Player, message); + } + + private bool TryTeleportToMapSpawn(EntityUid player, EntityUid stationId, TransformComponent? transform = null) + { + if (!Resolve(player, ref transform)) + return false; + + var points = EntityQueryEnumerator(); + var possiblePositions = new ValueList(32); + + // Find a spawnpoint on the same map as the player is already docked with now. + while (points.MoveNext(out var uid, out var spawnPoint, out var xform)) + { + if (spawnPoint.SpawnType == SpawnPointType.LateJoin && + _station.GetOwningStation(uid, xform) == stationId) + { + // Add to list of possible spawn locations + possiblePositions.Add(xform.Coordinates); + } + } + + if (possiblePositions.Count > 0) + { + // Move the player to a random late-join spawnpoint. + _transform.SetCoordinates(player, transform, Random.Pick(possiblePositions)); + if (_actor.TryGetSession(player, out var session)) + { + _chat.DispatchServerMessage(session!, Loc.GetString("latejoin-arrivals-teleport-to-spawn")); + } + return true; + } + + return false; + } + + [AdminCommand(AdminFlags.Fun)] + private void ArrivalsCommand(IConsoleShell shell, string argstr, string[] args) + { + if (args.Length != 1) + { + shell.WriteError(Loc.GetString("cmd-arrivals-invalid")); + return; + } + + switch (args[0]) + { + case "enable": + Cfg.SetCVar(CCVars.ArrivalsShuttles, true); + break; + case "disable": + Cfg.SetCVar(CCVars.ArrivalsShuttles, false); + break; + case "returns": + var existing = Cfg.GetCVar(CCVars.ArrivalsReturns); + Cfg.SetCVar(CCVars.ArrivalsReturns, !existing); + shell.WriteLine(Loc.GetString("cmd-arrivals-returns", ("value", !existing))); + break; + case "force": + var query = AllEntityQuery(); + var spawnPoints = EntityQuery().ToList(); + + TryGetArrivals(out var arrivalsUid); + + while (query.MoveNext(out var uid, out _, out var pendingXform)) + { + Random.Shuffle(spawnPoints); + + foreach (var (point, xform) in spawnPoints) + { + if (point.SpawnType != SpawnPointType.LateJoin || xform.GridUid == arrivalsUid) + continue; + + _transform.SetCoordinates(uid, pendingXform, xform.Coordinates); + break; + } + + RemCompDeferred(uid); + RemCompDeferred(uid); + shell.WriteLine(Loc.GetString("cmd-arrivals-forced", ("uid", ToPrettyString(uid)))); + } + break; + default: + shell.WriteError(Loc.GetString($"cmd-arrivals-invalid")); + break; + } + } + + private CompletionResult ArrivalsCompletion(IConsoleShell shell, string[] args) + { + if (args.Length != 1) + return CompletionResult.Empty; + + return new CompletionResult(new CompletionOption[] + { + // Enables and disable are separate comms in case you don't want to accidentally toggle it, compared to + // returns which doesn't have an immediate effect + new("enable", Loc.GetString("cmd-arrivals-enable-hint")), + new("disable", Loc.GetString("cmd-arrivals-disable-hint")), + new("returns", Loc.GetString("cmd-arrivals-returns-hint")), + new ("force", Loc.GetString("cmd-arrivals-force-hint")) + }, + "Option"); + } } diff --git a/Content.Server/Shuttles/Systems/ShuttleConsoleSystem.FTL.cs b/Content.Server/Shuttles/Systems/ShuttleConsoleSystem.FTL.cs index d9ac71cc87..df62c8927b 100644 --- a/Content.Server/Shuttles/Systems/ShuttleConsoleSystem.FTL.cs +++ b/Content.Server/Shuttles/Systems/ShuttleConsoleSystem.FTL.cs @@ -1,5 +1,6 @@ using Content.Server.Shuttles.Components; using Content.Server.Shuttles.Events; +using Content.Shared.Shuttles.Components; using Content.Shared.Shuttles.Events; using Content.Shared.Shuttles.UI.MapObjects; using Robust.Shared.Map; diff --git a/Content.Server/Shuttles/Systems/ShuttleConsoleSystem.cs b/Content.Server/Shuttles/Systems/ShuttleConsoleSystem.cs index 1933c71cf3..d89533892a 100644 --- a/Content.Server/Shuttles/Systems/ShuttleConsoleSystem.cs +++ b/Content.Server/Shuttles/Systems/ShuttleConsoleSystem.cs @@ -32,7 +32,7 @@ public sealed partial class ShuttleConsoleSystem : SharedShuttleConsoleSystem [Dependency] private SharedPopupSystem _popup = default!; [Dependency] private SharedTransformSystem _transform = default!; [Dependency] private ShuttleSystem _shuttle = default!; - [Dependency] private StationSystem _station = default!; + [Dependency] private ServerStationSystem _station = default!; [Dependency] private TagSystem _tags = default!; [Dependency] private UserInterfaceSystem _ui = default!; [Dependency] private SharedContentEyeSystem _eyeSystem = default!; diff --git a/Content.Server/Shuttles/Systems/ShuttleSystem.Impact.cs b/Content.Server/Shuttles/Systems/ShuttleSystem.Impact.cs index df9ac8c551..6b90d7dce6 100644 --- a/Content.Server/Shuttles/Systems/ShuttleSystem.Impact.cs +++ b/Content.Server/Shuttles/Systems/ShuttleSystem.Impact.cs @@ -1,4 +1,3 @@ -using Content.Server.Shuttles.Components; using Content.Shared.Atmos.Components; using Content.Shared.Audio; using Content.Shared.CCVar; @@ -6,7 +5,6 @@ using Content.Shared.Damage; using Content.Shared.Database; using Content.Shared.Maps; using Content.Shared.Physics; -using Content.Shared.Projectiles; using Robust.Shared.Audio; using Robust.Shared.Map; using Robust.Shared.Map.Components; @@ -18,6 +16,7 @@ using Robust.Shared.Prototypes; using Robust.Shared.Random; using System.Numerics; using Content.Shared.Damage.Components; +using Content.Shared.Shuttles.Components; namespace Content.Server.Shuttles.Systems; diff --git a/Content.Server/Shuttles/Systems/ShuttleSystem.cs b/Content.Server/Shuttles/Systems/ShuttleSystem.cs index 965636ec39..1216b8cd74 100644 --- a/Content.Server/Shuttles/Systems/ShuttleSystem.cs +++ b/Content.Server/Shuttles/Systems/ShuttleSystem.cs @@ -2,7 +2,6 @@ using Content.Server.Administration.Logs; using Content.Server.Buckle.Systems; using Content.Server.Parallax; using Content.Server.Procedural; -using Content.Server.Shuttles.Components; using Content.Server.Shuttles.Events; using Content.Server.Station.Systems; using Content.Server.Stunnable; @@ -10,8 +9,10 @@ using Content.Shared.Buckle.Components; using Content.Shared.Damage.Systems; using Content.Shared.Gibbing; using Content.Shared.Light.Components; +using Content.Shared.Maps; using Content.Shared.Movement.Events; using Content.Shared.Salvage; +using Content.Shared.Shuttles.Components; using Content.Shared.Shuttles.Systems; using Content.Shared.Throwing; using JetBrains.Annotations; @@ -26,7 +27,6 @@ using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Systems; using Robust.Shared.Random; using Robust.Shared.Timing; -using Content.Shared.Maps; namespace Content.Server.Shuttles.Systems; @@ -53,7 +53,7 @@ public sealed partial class ShuttleSystem : SharedShuttleSystem [Dependency] private SharedTransformSystem _transform = default!; [Dependency] private SharedSalvageSystem _salvage = default!; [Dependency] private ShuttleConsoleSystem _console = default!; - [Dependency] private StationSystem _station = default!; + [Dependency] private ServerStationSystem _station = default!; [Dependency] private StunSystem _stuns = default!; [Dependency] private ThrowingSystem _throwing = default!; [Dependency] private ThrusterSystem _thruster = default!; diff --git a/Content.Server/Shuttles/Systems/StationAnchorSystem.cs b/Content.Server/Shuttles/Systems/StationAnchorSystem.cs index e12c4075d4..2b0d138b74 100644 --- a/Content.Server/Shuttles/Systems/StationAnchorSystem.cs +++ b/Content.Server/Shuttles/Systems/StationAnchorSystem.cs @@ -3,6 +3,7 @@ using Content.Server.Power.EntitySystems; using Content.Server.Shuttles.Components; using Content.Shared.Construction.Components; using Content.Shared.Popups; +using Content.Shared.Shuttles.Components; namespace Content.Server.Shuttles.Systems; diff --git a/Content.Server/Silicons/Laws/IonLawSystem.cs b/Content.Server/Silicons/Laws/IonLawSystem.cs index b657d21b06..7726814658 100644 --- a/Content.Server/Silicons/Laws/IonLawSystem.cs +++ b/Content.Server/Silicons/Laws/IonLawSystem.cs @@ -1,10 +1,10 @@ using Content.Shared.Dataset; using Content.Shared.Silicons.Laws; -using Content.Shared.Station; using Content.Shared.StationRecords; using Robust.Shared.Prototypes; using Robust.Shared.Random; using System.Linq; +using Content.Server.Station.Systems; using Content.Shared.StationRecords.Components; using Content.Shared.StationRecords.Systems; @@ -16,7 +16,7 @@ namespace Content.Server.Silicons.Laws; public sealed partial class IonLawSystem : EntitySystem { [Dependency] private IRobustRandom _random = default!; - [Dependency] private SharedStationSystem _stationSystem = default!; + [Dependency] private ServerStationSystem _stationSystem = default!; [Dependency] private StationRecordsSystem _stationRecordsSystem = default!; private ISawmill _sawmill = default!; diff --git a/Content.Server/Silicons/Laws/SiliconLawSystem.cs b/Content.Server/Silicons/Laws/SiliconLawSystem.cs index 739577804f..31a4d511e3 100644 --- a/Content.Server/Silicons/Laws/SiliconLawSystem.cs +++ b/Content.Server/Silicons/Laws/SiliconLawSystem.cs @@ -31,7 +31,7 @@ public sealed partial class SiliconLawSystem : SharedSiliconLawSystem [Dependency] private IChatManager _chatManager = default!; [Dependency] private SharedMindSystem _mind = default!; [Dependency] private SharedRoleSystem _roles = default!; - [Dependency] private StationSystem _station = default!; + [Dependency] private ServerStationSystem _station = default!; [Dependency] private UserInterfaceSystem _userInterface = default!; [Dependency] private EmagSystem _emag = default!; [Dependency] private ISharedAdminLogManager _adminLogger = default!; diff --git a/Content.Server/Silicons/StationAi/StationAiSystem.cs b/Content.Server/Silicons/StationAi/StationAiSystem.cs index 3e2efa0189..871d320c27 100644 --- a/Content.Server/Silicons/StationAi/StationAiSystem.cs +++ b/Content.Server/Silicons/StationAi/StationAiSystem.cs @@ -7,8 +7,6 @@ using Content.Server.Ghost.Roles.Components; using Content.Server.Mind; using Content.Server.Power.Components; using Content.Server.Roles; -using Content.Server.Spawners.Components; -using Content.Server.Spawners.EntitySystems; using Content.Server.Station.Systems; using Content.Shared.Alert; using Content.Shared.Chat.Prototypes; @@ -27,6 +25,8 @@ using Content.Shared.Power.Components; using Content.Shared.Rejuvenate; using Content.Shared.Roles; using Content.Shared.Silicons.StationAi; +using Content.Shared.Spawners.Components; +using Content.Shared.Spawners.EntitySystems; using Content.Shared.Speech.Components; using Content.Shared.StationAi; using Content.Shared.Turrets; @@ -55,8 +55,8 @@ public sealed partial class StationAiSystem : SharedStationAiSystem [Dependency] private SharedBatterySystem _battery = default!; [Dependency] private DamageableSystem _damageable = default!; [Dependency] private SharedPopupSystem _popups = default!; - [Dependency] private StationSystem _station = default!; - [Dependency] private StationJobsSystem _stationJobs = default!; + [Dependency] private ServerStationSystem _station = default!; + [Dependency] private ServerStationJobsSystem _stationJobs = default!; [Dependency] private MobStateSystem _mobState = default!; [Dependency] private SharedAppearanceSystem _appearance = default!; diff --git a/Content.Server/Spawners/EntitySystems/ConditionalSpawnerSystem.cs b/Content.Server/Spawners/EntitySystems/ConditionalSpawnerSystem.cs index d745beee2d..07cbf27dd3 100644 --- a/Content.Server/Spawners/EntitySystems/ConditionalSpawnerSystem.cs +++ b/Content.Server/Spawners/EntitySystems/ConditionalSpawnerSystem.cs @@ -24,7 +24,7 @@ namespace Content.Server.Spawners.EntitySystems; public sealed partial class ConditionalSpawnerSystem : EntitySystem { [Dependency] private IRobustRandom _robustRandom = default!; - [Dependency] private GameTicker _ticker = default!; + [Dependency] private ServerGameTicker _ticker = default!; [Dependency] private EntityTableSystem _entityTable = default!; [Dependency] private StackSystem _stack = default!; [Dependency] private TransformSystem _xform = default!; @@ -61,9 +61,12 @@ public sealed partial class ConditionalSpawnerSystem : EntitySystem } } - public void RuleStarted(EntityUid uid, ConditionalSpawnerComponent component, GameRuleStartedEvent obj) + public void RuleStarted(EntityUid uid, ConditionalSpawnerComponent component, GameRuleStartedEvent args) { - if (component.GameRules.Contains(obj.RuleId)) + if (args.RuleId is not { } id) + return; + + if (component.GameRules.Contains(id)) Spawn(uid, component); } diff --git a/Content.Server/Station/Commands/JobsCommand.cs b/Content.Server/Station/Commands/JobsCommand.cs index c971a1cac3..3a21074516 100644 --- a/Content.Server/Station/Commands/JobsCommand.cs +++ b/Content.Server/Station/Commands/JobsCommand.cs @@ -13,12 +13,12 @@ namespace Content.Server.Station.Commands; [ToolshedCommand, AdminCommand(AdminFlags.VarEdit)] public sealed class JobsCommand : ToolshedCommand { - private StationJobsSystem? _jobs; + private ServerStationJobsSystem? _jobs; [CommandImplementation("jobs")] public IEnumerable Jobs([PipedArgument] EntityUid station) { - _jobs ??= GetSys(); + _jobs ??= GetSys(); foreach (var (job, _) in _jobs.GetJobs(station)) { @@ -33,7 +33,7 @@ public sealed class JobsCommand : ToolshedCommand [CommandImplementation("job")] public JobSlotRef Job([PipedArgument] EntityUid station, ProtoId job) { - _jobs ??= GetSys(); + _jobs ??= GetSys(); return new JobSlotRef(job.Id, station, _jobs, EntityManager); } @@ -53,7 +53,7 @@ public sealed class JobsCommand : ToolshedCommand [CommandImplementation("adjust")] public JobSlotRef Adjust([PipedArgument] JobSlotRef @ref, int by) { - _jobs ??= GetSys(); + _jobs ??= GetSys(); _jobs.TryAdjustJobSlot(@ref.Station, @ref.Job, by, true, true); return @ref; } @@ -66,7 +66,7 @@ public sealed class JobsCommand : ToolshedCommand [CommandImplementation("set")] public JobSlotRef Set([PipedArgument] JobSlotRef @ref, int by) { - _jobs ??= GetSys(); + _jobs ??= GetSys(); _jobs.TrySetJobSlot(@ref.Station, @ref.Job, by, true); return @ref; } @@ -78,7 +78,7 @@ public sealed class JobsCommand : ToolshedCommand [CommandImplementation("amount")] public int Amount([PipedArgument] JobSlotRef @ref) { - _jobs ??= GetSys(); + _jobs ??= GetSys(); _jobs.TryGetJobSlot(@ref.Station, @ref.Job, out var slots); return slots ?? 0; } @@ -89,7 +89,7 @@ public sealed class JobsCommand : ToolshedCommand } // Used for Toolshed queries. -public readonly record struct JobSlotRef(string Job, EntityUid Station, StationJobsSystem Jobs, IEntityManager EntityManager) +public readonly record struct JobSlotRef(string Job, EntityUid Station, ServerStationJobsSystem Jobs, IEntityManager EntityManager) { public override string ToString() { diff --git a/Content.Server/Station/Commands/StationCommand.cs b/Content.Server/Station/Commands/StationCommand.cs index f9dcb83d93..b3acb07d06 100644 --- a/Content.Server/Station/Commands/StationCommand.cs +++ b/Content.Server/Station/Commands/StationCommand.cs @@ -15,13 +15,13 @@ namespace Content.Server.Station.Commands; [ToolshedCommand, AdminCommand(AdminFlags.Admin)] public sealed class StationsCommand : ToolshedCommand { - private StationSystem? _station; + private ServerStationSystem? _station; private CargoSystem? _cargo; [CommandImplementation("list")] public IEnumerable List() { - _station ??= GetSys(); + _station ??= GetSys(); return _station.GetStationsSet(); } @@ -29,7 +29,7 @@ public sealed class StationsCommand : ToolshedCommand [CommandImplementation("get")] public EntityUid Get(IInvocationContext ctx) { - _station ??= GetSys(); + _station ??= GetSys(); var set = _station.GetStationsSet(); if (set.Count > 1 || set.Count == 0) @@ -45,7 +45,7 @@ public sealed class StationsCommand : ToolshedCommand [CommandImplementation("getowningstation")] public EntityUid? GetOwningStation([PipedArgument] EntityUid input) { - _station ??= GetSys(); + _station ??= GetSys(); return _station.GetOwningStation(input); } @@ -53,7 +53,7 @@ public sealed class StationsCommand : ToolshedCommand [CommandImplementation("largestgrid")] public EntityUid? LargestGrid([PipedArgument] EntityUid input) { - _station ??= GetSys(); + _station ??= GetSys(); return _station.GetLargestGrid(input); } @@ -81,21 +81,21 @@ public sealed class StationsCommand : ToolshedCommand [CommandImplementation("addgrid")] public void AddGrid([PipedArgument] EntityUid input, EntityUid grid) { - _station ??= GetSys(); + _station ??= GetSys(); _station.AddGridToStation(input, grid); } [CommandImplementation("rmgrid")] public void RmGrid([PipedArgument] EntityUid input, EntityUid grid) { - _station ??= GetSys(); + _station ??= GetSys(); _station.RemoveGridFromStation(input, grid); } [CommandImplementation("rename")] public void Rename([PipedArgument] EntityUid input, string name) { - _station ??= GetSys(); + _station ??= GetSys(); _station.RenameStation(input, name); } diff --git a/Content.Server/Station/Systems/StationJobsSystem.Roundstart.cs b/Content.Server/Station/Systems/ServerStationJobsSystem.Roundstart.cs similarity index 99% rename from Content.Server/Station/Systems/StationJobsSystem.Roundstart.cs rename to Content.Server/Station/Systems/ServerStationJobsSystem.Roundstart.cs index b0c015f154..df72bf86cd 100644 --- a/Content.Server/Station/Systems/StationJobsSystem.Roundstart.cs +++ b/Content.Server/Station/Systems/ServerStationJobsSystem.Roundstart.cs @@ -1,8 +1,8 @@ using System.Linq; using Content.Server.Administration.Managers; -using Content.Server.Antag; using Content.Server.Station.Components; using Content.Server.Station.Events; +using Content.Shared.Antag; using Content.Shared.CCVar; using Content.Shared.Preferences; using Content.Shared.Roles; @@ -16,7 +16,7 @@ using Robust.Shared.Utility; namespace Content.Server.Station.Systems; // Contains code for round-start spawning. -public sealed partial class StationJobsSystem +public sealed partial class ServerStationJobsSystem { [Dependency] private IBanManager _banManager = default!; [Dependency] private SharedJobSystem _jobs = default!; diff --git a/Content.Server/Station/Systems/StationJobsSystem.cs b/Content.Server/Station/Systems/ServerStationJobsSystem.cs similarity index 93% rename from Content.Server/Station/Systems/StationJobsSystem.cs rename to Content.Server/Station/Systems/ServerStationJobsSystem.cs index daeca7dce3..c7e6083ec7 100644 --- a/Content.Server/Station/Systems/StationJobsSystem.cs +++ b/Content.Server/Station/Systems/ServerStationJobsSystem.cs @@ -1,14 +1,13 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; using Content.Server.GameTicking; -using Content.Server.Station.Components; using Content.Server.Station.Events; using Content.Shared.CCVar; -using Content.Shared.FixedPoint; using Content.Shared.GameTicking; using Content.Shared.Preferences; using Content.Shared.Roles; using Content.Shared.Station.Components; +using Content.Shared.Station.Systems; using JetBrains.Annotations; using Robust.Server.Player; using Robust.Shared.Configuration; @@ -19,16 +18,14 @@ using Robust.Shared.Random; namespace Content.Server.Station.Systems; -/// -/// Manages job slots for stations. -/// +/// [PublicAPI] -public sealed partial class StationJobsSystem : EntitySystem +public sealed partial class ServerStationJobsSystem : StationJobsSystem { [Dependency] private IConfigurationManager _configurationManager = default!; [Dependency] private IPlayerManager _player = default!; [Dependency] private IRobustRandom _random = default!; - [Dependency] private GameTicker _gameTicker = default!; + [Dependency] private ServerGameTicker _gameTicker = default!; /// public override void Initialize() @@ -91,7 +88,7 @@ public sealed partial class StationJobsSystem : EntitySystem #region Public API - /// + /// /// Station to assign a job on. /// Job to assign. /// The net user ID of the player we're assigning this job to. @@ -123,15 +120,14 @@ public sealed partial class StationJobsSystem : EntitySystem return true; } - /// + /// /// Station to adjust the job slot on. /// Job to adjust. /// Amount to adjust by. /// Whether or not it should create the slot if it doesn't exist. /// Whether or not to clamp to zero if you'd remove more jobs than are available. /// Resolve pattern, station jobs component of the station. - public bool TryAdjustJobSlot(EntityUid station, JobPrototype job, int amount, bool createSlot = false, bool clamp = false, - StationJobsComponent? stationJobs = null) + public bool TryAdjustJobSlot(EntityUid station, JobPrototype job, int amount, bool createSlot = false, bool clamp = false, StationJobsComponent? stationJobs = null) { return TryAdjustJobSlot(station, job.ID, amount, createSlot, clamp, stationJobs); } @@ -219,15 +215,14 @@ public sealed partial class StationJobsSystem : EntitySystem return jobsComponent.PlayerJobs.Remove(userId); } - /// + /// /// Station to adjust the job slot on. /// Job prototype to adjust. /// Amount to set to. /// Whether or not it should create the slot if it doesn't exist. /// Resolve pattern, station jobs component of the station. /// - public bool TrySetJobSlot(EntityUid station, JobPrototype jobPrototype, int amount, bool createSlot = false, - StationJobsComponent? stationJobs = null) + public bool TrySetJobSlot(EntityUid station, JobPrototype jobPrototype, int amount, bool createSlot = false, StationJobsComponent? stationJobs = null) { return TrySetJobSlot(station, jobPrototype.ID, amount, createSlot, stationJobs); } @@ -273,7 +268,7 @@ public sealed partial class StationJobsSystem : EntitySystem } } - /// + /// /// Station to make a job unlimited on. /// Job to make unlimited. /// Resolve pattern, station jobs component of the station. @@ -303,7 +298,7 @@ public sealed partial class StationJobsSystem : EntitySystem UpdateJobsAvailable(); } - /// + /// /// Station to check. /// Job to check. /// Resolve pattern, station jobs component of the station. @@ -328,11 +323,7 @@ public sealed partial class StationJobsSystem : EntitySystem return stationJobs.JobList.TryGetValue(jobPrototypeId, out var job) && job == null; } - /// - /// Station to get slot info from. - /// Job to get slot info for. - /// The number of slots remaining. Null if infinite. - /// Resolve pattern, station jobs component of the station. + /// public bool TryGetJobSlot(EntityUid station, JobPrototype job, out int? slots, StationJobsComponent? stationJobs = null) { return TryGetJobSlot(station, job.ID, out slots, stationJobs); @@ -506,7 +497,8 @@ public sealed partial class StationJobsSystem : EntitySystem var list = comp.JobList.ToDictionary(x => x.Key, x => x.Value); jobs.Add(netStation, list); stationNames.Add(netStation, Name(station)); - jobWeights.Add(netStation, TryComp(station, out var stationData) + jobWeights.Add(netStation, + TryComp(station, out var stationData) ? stationData.JobWeights : null); } diff --git a/Content.Server/Station/Systems/StationSystem.cs b/Content.Server/Station/Systems/ServerStationSystem.cs similarity index 79% rename from Content.Server/Station/Systems/StationSystem.cs rename to Content.Server/Station/Systems/ServerStationSystem.cs index cd2e5d0313..05fc8bf52c 100644 --- a/Content.Server/Station/Systems/StationSystem.cs +++ b/Content.Server/Station/Systems/ServerStationSystem.cs @@ -1,8 +1,11 @@ +using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; using System.Linq; +using Content.Server.Atmos.EntitySystems; using Content.Server.Chat.Systems; using Content.Server.GameTicking; -using Content.Server.Station.Components; using Content.Server.Station.Events; +using Content.Shared.GameTicking; using Content.Shared.Station; using Content.Shared.Station.Components; using JetBrains.Annotations; @@ -22,13 +25,12 @@ namespace Content.Server.Station.Systems; /// For jobs, look at StationJobSystem. For spawning, look at StationSpawningSystem. /// [PublicAPI] -public sealed partial class StationSystem : SharedStationSystem +public sealed partial class ServerStationSystem : Shared.Station.Systems.StationSystem { [Dependency] private IPlayerManager _player = default!; + [Dependency] private AtmosphereSystem _atmos = default!; [Dependency] private ChatSystem _chatSystem = default!; - [Dependency] private MetaDataSystem _metaData = default!; [Dependency] private PvsOverrideSystem _pvsOverride = default!; - [Dependency] private EntityQuery _gridQuery = default!; private ISawmill _sawmill = default!; @@ -234,7 +236,7 @@ public sealed partial class StationSystem : SharedStationSystem throw new ArgumentException("Tried to use a non-station entity as a station!", nameof(station)); if (!string.IsNullOrEmpty(name)) - _metaData.SetEntityName(mapGrid, name); + Meta.SetEntityName(mapGrid, name); var stationMember = EnsureComp(mapGrid); stationMember.Station = station; @@ -285,7 +287,7 @@ public sealed partial class StationSystem : SharedStationSystem throw new ArgumentException("Tried to use a non-station entity as a station!", nameof(station)); var oldName = metaData.EntityName; - _metaData.SetEntityName(station, name, metaData); + Meta.SetEntityName(station, name, metaData); if (loud) { @@ -308,6 +310,104 @@ public sealed partial class StationSystem : SharedStationSystem QueueDel(station); } + + /// + public override bool TryFindRandomTileOnStation(Entity station, + out Vector2i tile, + [NotNullWhen(true)] out Entity? targetGrid, + out EntityCoordinates targetCoords, + int numAttempts = 10) + { + tile = default; + targetCoords = EntityCoordinates.Invalid; + targetGrid = null; + + // Weight grid choice by tilecount + var totalTiles = 0; + var grids = new List<(Entity Entity, int Count, List Tiles)>(); + foreach (var possibleTarget in station.Comp.Grids) + { + if (!GridQuery.TryComp(possibleTarget, out var comp)) + continue; + + // Get the tile count for the given grid. + var tileCount = Map.GetFilledTileCount((possibleTarget, comp)); + + // Just to be sure, no empty elements. + if (tileCount > 0) + { + grids.Add(((possibleTarget, comp), tileCount, new())); + totalTiles += tileCount; + } + } + + if (grids.Count == 0) + return false; + + for (var i = 0; i < numAttempts; i++) + { + // Find random tile within list. + var nextTileIndex = Random.Next(totalTiles); + TileRef? randomTileRef = null; + var startIndex = 0; + for (int j = 0; j < grids.Count; j++) + { + var grid = grids[j]; + // If the index is in this particular grid, find it and remove the tile to prevent selecting it twice. + if (nextTileIndex >= startIndex + grid.Count) + { + startIndex += grid.Count; + continue; + } + + targetGrid = grid.Entity; + + // Empty list: hasn't been queried yet - get our tiles. + if (grid.Tiles.Count <= 0) + { + grid.Tiles = Map.GetAllTiles(targetGrid.Value, targetGrid.Value.Comp).ToList(); + + // Actual list count doesn't match expected count (a bug - return failure). + Debug.Assert(grid.Tiles.Count == grid.Count); + if (grid.Tiles.Count != grid.Count) + return false; + } + + var ourTileIndex = nextTileIndex - startIndex; + randomTileRef = grid.Tiles[ourTileIndex]; + grid.Tiles.RemoveSwap(ourTileIndex); + grid.Count--; + totalTiles--; + + // Empty list, remove element + if (grid.Tiles.Count <= 0) + grids.RemoveSwap(j); + + break; + } + + // Out of valid tiles, return early. + if (randomTileRef is not { } tileRef) + return false; + + // Could not find a grid... + if (targetGrid == null) + continue; + + // Invalid tile, try again. + if (_atmos.IsTileSpace(targetGrid.Value.Owner, Transform(targetGrid.Value).MapUid, tileRef.GridIndices) + || _atmos.IsTileAirBlockedCached(targetGrid.Value.Owner, tileRef.GridIndices)) + { + continue; + } + + targetCoords = Map.GridTileToLocal(targetGrid.Value, targetGrid.Value, tileRef.GridIndices); + tile = tileRef.GridIndices; + return true; + } + + return false; + } } /// diff --git a/Content.Server/Station/Systems/StationBiomeSystem.cs b/Content.Server/Station/Systems/StationBiomeSystem.cs index 29d6a1af25..0d2a879892 100644 --- a/Content.Server/Station/Systems/StationBiomeSystem.cs +++ b/Content.Server/Station/Systems/StationBiomeSystem.cs @@ -7,7 +7,7 @@ namespace Content.Server.Station.Systems; public sealed partial class StationBiomeSystem : EntitySystem { [Dependency] private BiomeSystem _biome = default!; - [Dependency] private StationSystem _station = default!; + [Dependency] private ServerStationSystem _station = default!; [Dependency] private SharedMapSystem _map = default!; public override void Initialize() diff --git a/Content.Server/Station/Systems/StationNameSystem.cs b/Content.Server/Station/Systems/StationNameSystem.cs index c64d036a85..0bca57bdcc 100644 --- a/Content.Server/Station/Systems/StationNameSystem.cs +++ b/Content.Server/Station/Systems/StationNameSystem.cs @@ -8,7 +8,7 @@ namespace Content.Server.Station.Systems; /// public sealed partial class StationNameSystem : EntitySystem { - [Dependency] private StationSystem _station = default!; + [Dependency] private ServerStationSystem _station = default!; /// public override void Initialize() diff --git a/Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs b/Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs index e88a333ead..93e1a6e87c 100644 --- a/Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs +++ b/Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs @@ -1,11 +1,11 @@ using System.Linq; using Content.Server.Administration; using Content.Server.GameTicking; -using Content.Server.GameTicking.Rules; using Content.Server.StationEvents.Components; using Content.Shared.Administration; using Content.Shared.EntityTable; using Content.Shared.GameTicking.Components; +using Content.Shared.GameTicking.Rules; using JetBrains.Annotations; using Robust.Shared.Prototypes; using Robust.Shared.Random; @@ -30,10 +30,9 @@ namespace Content.Server.StationEvents component.TimeUntilNextEvent = RobustRandom.NextFloat(component.MinimumTimeUntilFirstEvent, component.MinimumTimeUntilFirstEvent + component.MaximumSpanUntilFirstEvent); } - protected override void Ended(EntityUid uid, BasicStationEventSchedulerComponent component, GameRuleComponent gameRule, - GameRuleEndedEvent args) + protected override void Ended(Entity rule, ref GameRuleEndedEvent args) { - component.TimeUntilNextEvent = component.MinimumTimeUntilFirstEvent; + rule.Comp.TimeUntilNextEvent = rule.Comp.MinimumTimeUntilFirstEvent; } @@ -47,7 +46,7 @@ namespace Content.Server.StationEvents var query = EntityQueryEnumerator(); while (query.MoveNext(out var uid, out var eventScheduler, out var gameRule)) { - if (!GameTicker.IsGameRuleActive(uid, gameRule)) + if (!GameTicker.IsGameRuleActive((uid, gameRule))) continue; if (eventScheduler.TimeUntilNextEvent > 0) @@ -86,7 +85,7 @@ namespace Content.Server.StationEvents /// /// /// This isn't perfect. Code path eventually goes into , which requires - /// state from . As a result, you should probably just run this locally and not doing + /// state from . As a result, you should probably just run this locally and not doing /// a real round (it won't pollute the state, but it will get contaminated by previously ran events in the actual round) /// and things like `MaxOccurrences` and `ReoccurrenceDelay` won't be respected. /// diff --git a/Content.Server/StationEvents/Components/MeteorSwarmComponent.cs b/Content.Server/StationEvents/Components/MeteorSwarmComponent.cs index 1cde2ac8fa..c5c95468fd 100644 --- a/Content.Server/StationEvents/Components/MeteorSwarmComponent.cs +++ b/Content.Server/StationEvents/Components/MeteorSwarmComponent.cs @@ -11,6 +11,12 @@ public sealed partial class MeteorSwarmComponent : Component [DataField, AutoPausedField] public TimeSpan NextWaveTime; + /// + /// Grid which this game rule is targeting. + /// + [DataField] + public EntityUid? TargetGrid; + /// /// We'll send a specific amount of waves of meteors towards the station per ending rather than using a timer. /// diff --git a/Content.Server/StationEvents/EventManagerSystem.cs b/Content.Server/StationEvents/EventManagerSystem.cs index 8531ebbb91..e7f2a1921b 100644 --- a/Content.Server/StationEvents/EventManagerSystem.cs +++ b/Content.Server/StationEvents/EventManagerSystem.cs @@ -9,6 +9,7 @@ using Robust.Shared.Prototypes; using Robust.Shared.Random; using Content.Shared.EntityTable.EntitySelectors; using Content.Shared.EntityTable; +using Content.Shared.GameTicking.Components; namespace Content.Server.StationEvents; @@ -18,7 +19,7 @@ public sealed partial class EventManagerSystem : EntitySystem [Dependency] private IPlayerManager _playerManager = default!; [Dependency] private IRobustRandom _random = default!; [Dependency] private EntityTableSystem _entityTable = default!; - [Dependency] public GameTicker GameTicker = default!; + [Dependency] private ServerGameTicker _gameTicker = default!; [Dependency] private RoundEndSystem _roundEnd = default!; public bool EventsEnabled { get; private set; } @@ -67,7 +68,7 @@ public sealed partial class EventManagerSystem : EntitySystem return; } - GameTicker.AddGameRule(randomLimitedEvent); + _gameTicker.AddGameRule(randomLimitedEvent); } /// @@ -105,7 +106,7 @@ public sealed partial class EventManagerSystem : EntitySystem playerCount ??= _playerManager.PlayerCount; // playerCount does a lock so we'll just keep the variable here - currentTime ??= GameTicker.RoundDuration(); + currentTime ??= _gameTicker.RoundDuration(); var totalWeight = 0f; @@ -158,11 +159,11 @@ public sealed partial class EventManagerSystem : EntitySystem playerCount ??= _playerManager.PlayerCount; // playerCount does a lock so we'll just keep the variable here - currentTime ??= GameTicker.RoundDuration(); + currentTime ??= _gameTicker.RoundDuration(); foreach (var eventid in selectedEvents) { - if (GameTicker.IsIgnored(eventid)) + if (_gameTicker.IsIgnored(eventid)) continue; if (!ProtoMan.Resolve(eventid, out var eventproto)) @@ -250,7 +251,7 @@ public sealed partial class EventManagerSystem : EntitySystem var playerCount = playerCountOverride ?? _playerManager.PlayerCount; // playerCount does a lock so we'll just keep the variable here - var currentTime = currentTimeOverride ?? GameTicker.RoundDuration(); + var currentTime = currentTimeOverride ?? _gameTicker.RoundDuration(); var result = new Dictionary(); @@ -294,59 +295,36 @@ public sealed partial class EventManagerSystem : EntitySystem return allEvents; } - private int GetOccurrences(EntityPrototype stationEvent) - { - return GetOccurrences(stationEvent.ID); - } - - private int GetOccurrences(string stationEvent) - { - return GameTicker.AllPreviousGameRules.Count(p => p.Item2 == stationEvent); - } - - public TimeSpan TimeSinceLastEvent(EntityPrototype stationEvent) - { - foreach (var (time, rule) in GameTicker.AllPreviousGameRules.Reverse()) - { - if (rule == stationEvent.ID) - return time; - } - - return TimeSpan.Zero; - } - + // TODO: WRITE A TEST TO ENSURE THAT IF A EVENT HAS MAX OCCURRENCES, THAT IT WILL PROPERLY CANCEL ONLY WHEN THEY'RE HIT private bool CanRun(EntityPrototype prototype, StationEventComponent stationEvent, int playerCount, TimeSpan currentTime) { - if (GameTicker.IsGameRuleActive(prototype.ID)) - return false; - - if (stationEvent.MaxOccurrences.HasValue && GetOccurrences(prototype) >= stationEvent.MaxOccurrences.Value) - { - return false; - } - + // Do the really simple comparisons BEFORE we create an IEnumerable for GameRules :V if (playerCount < stationEvent.MinimumPlayers) - { return false; - } if (currentTime != TimeSpan.Zero && currentTime.TotalMinutes < stationEvent.EarliestStart) - { return false; + + // Slightly slower if we don't care about MaxOccurrences, but that's not a huge issue in the context of the event scheduler. + var count = 0; + var lastRun = TimeSpan.Zero; + var ruleQuery = EntityQueryEnumerator(); + while (ruleQuery.MoveNext(out var rule, out var meta)) + { + if (meta.EntityPrototype?.Name != prototype.ID) + continue; + + count++; + if (lastRun < rule.ActivatedAt) + lastRun = rule.ActivatedAt; } - var lastRun = TimeSinceLastEvent(prototype); - if (lastRun != TimeSpan.Zero && currentTime.TotalMinutes < - stationEvent.ReoccurrenceDelay + lastRun.TotalMinutes) - { + if (stationEvent.MaxOccurrences.HasValue && count >= stationEvent.MaxOccurrences.Value) return false; - } - if (_roundEnd.IsRoundEndRequested() && !stationEvent.OccursDuringRoundEnd && !_roundEnd.CanCallOrRecall()) - { + if (lastRun != TimeSpan.Zero && currentTime.TotalMinutes < stationEvent.ReoccurrenceDelay + lastRun.TotalMinutes) return false; - } - return true; + return !_roundEnd.IsRoundEndRequested() || stationEvent.OccursDuringRoundEnd || _roundEnd.CanCallOrRecall(); } } diff --git a/Content.Server/StationEvents/Events/AlertLevelInterceptionRule.cs b/Content.Server/StationEvents/Events/AlertLevelInterceptionRule.cs index d1b039bdaa..141d4220a5 100644 --- a/Content.Server/StationEvents/Events/AlertLevelInterceptionRule.cs +++ b/Content.Server/StationEvents/Events/AlertLevelInterceptionRule.cs @@ -13,15 +13,15 @@ public sealed partial class AlertLevelInterceptionRule : StationEventSystem(chosenStation, out var stationData)) return; - var grid = StationSystem.GetLargestGrid((chosenStation.Value, stationData)); + var grid = Station.GetLargestGrid((chosenStation.Value, stationData)); if (grid is null) return; diff --git a/Content.Server/StationEvents/Events/BluespaceArtifactRule.cs b/Content.Server/StationEvents/Events/BluespaceArtifactRule.cs index 600f54d80d..a3b19d7e42 100644 --- a/Content.Server/StationEvents/Events/BluespaceArtifactRule.cs +++ b/Content.Server/StationEvents/Events/BluespaceArtifactRule.cs @@ -25,7 +25,7 @@ public sealed partial class BluespaceArtifactRule : StationEventSystem _whitelist.IsWhitelistFailOrNull(component.Blacklist, uid))) + if (!Station.TryGetRandomStation(out var chosenStation, uid => _whitelist.IsWhitelistFailOrNull(component.Blacklist, uid))) return; var stationApcs = new List>(); var query = EntityQueryEnumerator(); while (query.MoveNext(out var apcUid, out var apc, out var xform)) { - if (apc.MainBreakerEnabled && CompOrNull(xform.GridUid)?.Station == chosenStation) + if (apc.MainBreakerEnabled && CompOrNull(xform.GridUid)?.Station == chosenStation.Value.Owner) { stationApcs.Add((apcUid, apc)); } diff --git a/Content.Server/StationEvents/Events/BureaucraticErrorRule.cs b/Content.Server/StationEvents/Events/BureaucraticErrorRule.cs index 49a2220b03..bb740312d7 100644 --- a/Content.Server/StationEvents/Events/BureaucraticErrorRule.cs +++ b/Content.Server/StationEvents/Events/BureaucraticErrorRule.cs @@ -1,9 +1,7 @@ using System.Linq; -using Content.Server.Station.Components; using Content.Server.Station.Systems; using Content.Server.StationEvents.Components; using Content.Shared.GameTicking.Components; -using Content.Shared.Roles; using JetBrains.Annotations; using Robust.Shared.Random; @@ -12,13 +10,13 @@ namespace Content.Server.StationEvents.Events; [UsedImplicitly] public sealed partial class BureaucraticErrorRule : StationEventSystem { - [Dependency] private StationJobsSystem _stationJobs = default!; + [Dependency] private ServerStationJobsSystem _stationJobs = default!; protected override void Started(EntityUid uid, BureaucraticErrorRuleComponent component, GameRuleComponent gameRule, GameRuleStartedEvent args) { base.Started(uid, component, gameRule, args); - if (!TryGetRandomStation(out var chosenStation, HasComp)) + if (!Station.TryGetRandomStation(out var chosenStation, HasComp)) return; var jobList = _stationJobs.GetJobs(chosenStation.Value).Keys.ToList(); diff --git a/Content.Server/StationEvents/Events/CargoGiftsRule.cs b/Content.Server/StationEvents/Events/CargoGiftsRule.cs index ca6019d806..8a4992fbd5 100644 --- a/Content.Server/StationEvents/Events/CargoGiftsRule.cs +++ b/Content.Server/StationEvents/Events/CargoGiftsRule.cs @@ -13,18 +13,21 @@ public sealed partial class CargoGiftsRule : StationEventSystem rule, ref GameRuleAddedEvent args) { - if (!TryComp(uid, out var stationEvent)) + if (!TryComp(rule, out var stationEvent)) return; - var str = Loc.GetString(component.Announce, - ("sender", Loc.GetString(component.Sender)), ("description", Loc.GetString(component.Description)), ("dest", Loc.GetString(component.Dest))); + // TODO: One must question, why we're saving it to this component and forcing each system to TryComp twice instead of just calling a method other than "Added" + // TODO: Also realistically this should be called on "Started" not added... + // TODO: Second PR energy... + var str = Loc.GetString(rule.Comp1.Announce, + ("sender", Loc.GetString(rule.Comp1.Sender)), ("description", Loc.GetString(rule.Comp1.Description)), ("dest", Loc.GetString(rule.Comp1.Dest))); stationEvent.StartAnnouncement = str; - base.Added(uid, component, gameRule, args); + base.Added(rule, ref args); } /// @@ -43,7 +46,7 @@ public sealed partial class CargoGiftsRule : StationEventSystem) || + if (!Station.TryGetRandomStation(out var station, HasComp) || !TryComp(station, out var stationData)) return; @@ -81,7 +84,68 @@ public sealed partial class CargoGiftsRule : StationEventSystem(chosenStation, out var stationRecords)) diff --git a/Content.Server/StationEvents/Events/GasLeakRule.cs b/Content.Server/StationEvents/Events/GasLeakRule.cs index 29251ee394..a9bd716012 100644 --- a/Content.Server/StationEvents/Events/GasLeakRule.cs +++ b/Content.Server/StationEvents/Events/GasLeakRule.cs @@ -1,5 +1,4 @@ using Content.Server.Atmos.EntitySystems; -using Content.Server.GameTicking.Rules.Components; using Content.Server.StationEvents.Components; using Content.Shared.GameTicking.Components; using Robust.Shared.Audio; @@ -21,8 +20,9 @@ namespace Content.Server.StationEvents.Events return; // Essentially we'll pick out a target amount of gas to leak, then a rate to leak it at, then work out the duration from there. - if (TryFindRandomTile(out component.TargetTile, out var target, out component.TargetGrid, out component.TargetCoords)) + if (Station.TryFindRandomTile(out component.TargetTile, out var target, out var grid, out component.TargetCoords)) { + component.TargetGrid = grid.Value; component.TargetStation = target.Value; component.FoundTile = true; @@ -62,28 +62,28 @@ namespace Content.Server.StationEvents.Events environment?.AdjustMoles(component.LeakGas, component.LeakCooldown * component.MolesPerSecond); } - protected override void Ended(EntityUid uid, GasLeakRuleComponent component, GameRuleComponent gameRule, GameRuleEndedEvent args) + protected override void Ended(Entity rule, ref GameRuleEndedEvent args) { - base.Ended(uid, component, gameRule, args); - Spark(uid, component); + base.Ended(rule, ref args); + Spark(rule); } - private void Spark(EntityUid uid, GasLeakRuleComponent component) + private void Spark(Entity rule) { - if (RobustRandom.NextFloat() <= component.SparkChance) + if (RobustRandom.NextFloat() <= rule.Comp.SparkChance) { - if (!component.FoundTile || - component.TargetGrid == default || - (!Exists(component.TargetGrid) ? EntityLifeStage.Deleted : MetaData(component.TargetGrid).EntityLifeStage) >= EntityLifeStage.Deleted || - !_atmosphere.IsSimulatedGrid(component.TargetGrid)) + if (!rule.Comp.FoundTile || + rule.Comp.TargetGrid == default || + (!Exists(rule.Comp.TargetGrid) ? EntityLifeStage.Deleted : MetaData(rule.Comp.TargetGrid).EntityLifeStage) >= EntityLifeStage.Deleted || + !_atmosphere.IsSimulatedGrid(rule.Comp.TargetGrid)) { return; } // Don't want it to be so obnoxious as to instantly murder anyone in the area but enough that // it COULD start potentially start a bigger fire. - _atmosphere.HotspotExpose(component.TargetGrid, component.TargetTile, 700f, 50f, null, true); - Audio.PlayPvs(new SoundPathSpecifier("/Audio/Effects/sparks4.ogg"), component.TargetCoords); + _atmosphere.HotspotExpose(rule.Comp.TargetGrid, rule.Comp.TargetTile, 700f, 50f, null, true); + Audio.PlayPvs(new SoundPathSpecifier("/Audio/Effects/sparks4.ogg"), rule.Comp.TargetCoords); } } } diff --git a/Content.Server/StationEvents/Events/GreytideVirusRule.cs b/Content.Server/StationEvents/Events/GreytideVirusRule.cs index 39ea7c7ae3..2bd16123b2 100644 --- a/Content.Server/StationEvents/Events/GreytideVirusRule.cs +++ b/Content.Server/StationEvents/Events/GreytideVirusRule.cs @@ -47,7 +47,7 @@ public sealed partial class GreytideVirusRule : StationEventSystem(xform.GridUid)?.Station != chosenStation) + if (CompOrNull(xform.GridUid)?.Station != chosenStation.Value.Owner) continue; // check access @@ -90,7 +90,7 @@ public sealed partial class GreytideVirusRule : StationEventSystem(xform.GridUid)?.Station != chosenStation) + if (CompOrNull(xform.GridUid)?.Station != chosenStation.Value.Owner) continue; // use the access reader from the door electronics if they exist diff --git a/Content.Server/StationEvents/Events/ImmovableRodRule.cs b/Content.Server/StationEvents/Events/ImmovableRodRule.cs index 47d39da0a8..a5c8650b24 100644 --- a/Content.Server/StationEvents/Events/ImmovableRodRule.cs +++ b/Content.Server/StationEvents/Events/ImmovableRodRule.cs @@ -1,3 +1,4 @@ +using System.Linq; using System.Numerics; using Content.Server.ImmovableRod; using Content.Server.StationEvents.Components; @@ -5,8 +6,7 @@ using Content.Server.Weapons.Ranged.Systems; using Content.Shared.GameTicking.Components; using Content.Shared.Storage; using Robust.Shared.Prototypes; -using TimedDespawnComponent = Robust.Shared.Spawners.TimedDespawnComponent; -using System.Linq; +using Robust.Shared.Spawners; namespace Content.Server.StationEvents.Events; @@ -27,7 +27,7 @@ public sealed partial class ImmovableRodRule : StationEventSystem(out var rod, EntityManager.ComponentFactory) && proto.TryComp(out var despawn, EntityManager.ComponentFactory)) { - if (!TryFindRandomTile(out _, out _, out _, out var targetCoords)) + if (!Station.TryFindRandomTile(out _, out _, out _, out var targetCoords)) return; var speed = RobustRandom.NextFloat(rod.MinSpeed, rod.MaxSpeed); diff --git a/Content.Server/StationEvents/Events/IonStormRule.cs b/Content.Server/StationEvents/Events/IonStormRule.cs index cb46ec579a..fdc4c29e8b 100644 --- a/Content.Server/StationEvents/Events/IonStormRule.cs +++ b/Content.Server/StationEvents/Events/IonStormRule.cs @@ -14,14 +14,14 @@ public sealed partial class IonStormRule : StationEventSystem(); while (query.MoveNext(out var ent, out var lawBound, out var xform, out var target)) { // only affect law holders on the station - if (CompOrNull(xform.GridUid)?.Station != chosenStation) + if (CompOrNull(xform.GridUid)?.Station != chosenStation.Value.Owner) continue; _ionStorm.IonStormTarget((ent, lawBound, target)); diff --git a/Content.Server/StationEvents/Events/KudzuGrowthRule.cs b/Content.Server/StationEvents/Events/KudzuGrowthRule.cs index a94eaf063b..5b00ad5b0e 100644 --- a/Content.Server/StationEvents/Events/KudzuGrowthRule.cs +++ b/Content.Server/StationEvents/Events/KudzuGrowthRule.cs @@ -11,7 +11,7 @@ public sealed partial class KudzuGrowthRule : StationEventSystem rule, ref GameRuleEndedEvent args) { - base.Ended(uid, component, gameRule, args); + base.Ended(rule, ref args); - foreach (var ent in component.AffectedEntities) + foreach (var ent in rule.Comp.AffectedEntities) { RemComp(ent); } - component.AffectedEntities.Clear(); + rule.Comp.AffectedEntities.Clear(); } } diff --git a/Content.Server/StationEvents/Events/MeteorSwarmSystem.cs b/Content.Server/StationEvents/Events/MeteorSwarmSystem.cs index 1d3eebf590..0371a8d46a 100644 --- a/Content.Server/StationEvents/Events/MeteorSwarmSystem.cs +++ b/Content.Server/StationEvents/Events/MeteorSwarmSystem.cs @@ -1,15 +1,12 @@ using System.Numerics; -using Content.Server.Chat.Systems; -using Content.Server.GameTicking.Rules; using Content.Server.Station.Systems; using Content.Server.StationEvents.Components; using Content.Shared.GameTicking.Components; +using Content.Shared.GameTicking.Rules; using Content.Shared.Random.Helpers; -using Robust.Server.Audio; using Robust.Shared.Map; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Systems; -using Robust.Shared.Player; using Robust.Shared.Random; namespace Content.Server.StationEvents.Events; @@ -17,23 +14,24 @@ namespace Content.Server.StationEvents.Events; public sealed partial class MeteorSwarmSystem : GameRuleSystem { [Dependency] private SharedPhysicsSystem _physics = default!; - [Dependency] private AudioSystem _audio = default!; - [Dependency] private ChatSystem _chat = default!; - [Dependency] private StationSystem _station = default!; + [Dependency] private ServerStationSystem _station = default!; - protected override void Added(EntityUid uid, MeteorSwarmComponent component, GameRuleComponent gameRule, GameRuleAddedEvent args) + protected override void Added(Entity rule, ref GameRuleAddedEvent args) { - base.Added(uid, component, gameRule, args); + base.Added(rule, ref args); + var stations = _station.GetStations(); + if (stations.Count == 0) + return; - component.WaveCounter = component.Waves.Next(RobustRandom); + var station = RobustRandom.Pick(stations); + if (_station.GetLargestGrid(station.AsNullable()) is not { } grid) + return; - // we don't want to send to players who aren't in game (i.e. in the lobby) - Filter allPlayersInGame = Filter.Empty().AddWhere(GameTicker.UserHasJoinedGame); + rule.Comp1.TargetGrid = grid; + rule.Comp1.WaveCounter = rule.Comp1.Waves.Next(RobustRandom); - if (component.Announcement is { } locId) - _chat.DispatchFilteredAnnouncement(allPlayersInGame, Loc.GetString(locId), playSound: false, colorOverride: Color.Gold); - - _audio.PlayGlobal(component.AnnouncementSound, allPlayersInGame, true); + if (rule.Comp1.Announcement is { } locId) + GameTicker.StationMapAnnouncement(station, locId, rule.Comp1.AnnouncementSound, Color.Gold); } protected override void ActiveTick(EntityUid uid, MeteorSwarmComponent component, GameRuleComponent gameRule, float frameTime) @@ -41,16 +39,14 @@ public sealed partial class MeteorSwarmSystem : GameRuleSystem { [Dependency] private ApcSystem _apcSystem = default!; - [Dependency] private SharedStationSystem _stationSystem = default!; public override void Initialize() { @@ -32,12 +27,12 @@ namespace Content.Server.StationEvents.Events { base.Started(uid, component, gameRule, args); - if (!TryGetRandomStation(out var chosenStation)) + if (!Station.TryGetRandomStation(out var chosenStation)) return; component.AffectedStation = chosenStation.Value; - var largestGrid = _stationSystem.GetLargestGrid(chosenStation.Value); + var largestGrid = Station.GetLargestGrid(chosenStation.Value.AsNullable()); if (largestGrid == null) return; @@ -48,7 +43,7 @@ namespace Content.Server.StationEvents.Events if (!apc.MainBreakerEnabled) continue; - if (CompOrNull(transform.GridUid)?.Station != chosenStation) + if (CompOrNull(transform.GridUid)?.Station != chosenStation.Value.Owner) continue; if (transform.GridUid != largestGrid.Value) @@ -103,12 +98,12 @@ namespace Content.Server.StationEvents.Events } var activeRules = AllEntityQuery(); - while (activeRules.MoveNext(out var _entity, out var powerGridRule, out var _activeGameRule)) + while (activeRules.MoveNext(out _, out var powerGridRule, out _)) { if (stationMemberComp.Station != powerGridRule.AffectedStation) continue; - var largestGrid = _stationSystem.GetLargestGrid(powerGridRule.AffectedStation); + var largestGrid = Station.GetLargestGrid(powerGridRule.AffectedStation); if (largestGrid == null) continue; @@ -122,11 +117,11 @@ namespace Content.Server.StationEvents.Events return null; } - protected override void Ended(EntityUid uid, PowerGridCheckRuleComponent component, GameRuleComponent gameRule, GameRuleEndedEvent args) + protected override void Ended(Entity rule, ref GameRuleEndedEvent args) { - base.Ended(uid, component, gameRule, args); + base.Ended(rule, ref args); - foreach (var entity in component.Unpowered) + foreach (var entity in rule.Comp.Unpowered) { if (Deleted(entity)) continue; @@ -139,13 +134,15 @@ namespace Content.Server.StationEvents.Events } // Can't use the default EndAudio - component.AnnounceCancelToken?.Cancel(); - component.AnnounceCancelToken = new CancellationTokenSource(); - Timer.Spawn(3000, () => + rule.Comp.AnnounceCancelToken?.Cancel(); + rule.Comp.AnnounceCancelToken = new CancellationTokenSource(); + Timer.Spawn(3000, + () => { - Audio.PlayGlobal(component.PowerOnSound, Filter.Broadcast(), true); - }, component.AnnounceCancelToken.Token); - component.Unpowered.Clear(); + Audio.PlayGlobal(rule.Comp.PowerOnSound, Filter.Broadcast(), true); + }, + rule.Comp.AnnounceCancelToken.Token); + rule.Comp.Unpowered.Clear(); } protected override void ActiveTick(EntityUid uid, PowerGridCheckRuleComponent component, GameRuleComponent gameRule, float frameTime) diff --git a/Content.Server/StationEvents/Events/RandomEntityStorageSpawnRule.cs b/Content.Server/StationEvents/Events/RandomEntityStorageSpawnRule.cs index 0b959a98e9..88a25c59f4 100644 --- a/Content.Server/StationEvents/Events/RandomEntityStorageSpawnRule.cs +++ b/Content.Server/StationEvents/Events/RandomEntityStorageSpawnRule.cs @@ -15,7 +15,7 @@ public sealed partial class RandomEntityStorageSpawnRule : StationEventSystem(); @@ -24,7 +24,7 @@ public sealed partial class RandomEntityStorageSpawnRule : StationEventSystem(); while (query.MoveNext(out var ent, out var storage, out var xform)) { - if (StationSystem.GetOwningStation(ent, xform) != station) + if (Station.GetOwningStation(ent, xform) != station.Value.Owner) continue; if (!_entityStorage.CanInsert(spawn, ent, storage)) diff --git a/Content.Server/StationEvents/Events/RandomSentienceRule.cs b/Content.Server/StationEvents/Events/RandomSentienceRule.cs index d580c93b70..b3976790bb 100644 --- a/Content.Server/StationEvents/Events/RandomSentienceRule.cs +++ b/Content.Server/StationEvents/Events/RandomSentienceRule.cs @@ -19,14 +19,14 @@ public sealed partial class RandomSentienceRule : StationEventSystem>(); var query = EntityQueryEnumerator(); while (query.MoveNext(out var targetUid, out var target, out var xform)) { - if (StationSystem.GetOwningStation(targetUid, xform) != station) + if (Station.GetOwningStation(targetUid, xform) != station.Value.Owner) continue; targetList.Add((targetUid, target)); diff --git a/Content.Server/StationEvents/Events/RandomSpawnRule.cs b/Content.Server/StationEvents/Events/RandomSpawnRule.cs index 210b8cec51..3b44073909 100644 --- a/Content.Server/StationEvents/Events/RandomSpawnRule.cs +++ b/Content.Server/StationEvents/Events/RandomSpawnRule.cs @@ -10,7 +10,7 @@ public sealed partial class RandomSpawnRule : StationEventSystem(); while (query.MoveNext(out var uid, out var flare, out var gameRule)) { - if (!GameTicker.IsGameRuleActive(uid, gameRule)) + if (!GameTicker.IsGameRuleActive((uid, gameRule))) continue; if (!flare.AffectedChannels.Contains(args.Channel.ID)) diff --git a/Content.Server/StationEvents/Events/SpaceSpawnRule.cs b/Content.Server/StationEvents/Events/SpaceSpawnRule.cs index 5e0027053b..129adf497e 100644 --- a/Content.Server/StationEvents/Events/SpaceSpawnRule.cs +++ b/Content.Server/StationEvents/Events/SpaceSpawnRule.cs @@ -1,9 +1,9 @@ using Content.Server.Antag; using Content.Server.StationEvents.Components; +using Content.Shared.Antag; using Content.Shared.GameTicking.Components; using Robust.Shared.Map; using Robust.Shared.Map.Components; -using Robust.Shared.Random; namespace Content.Server.StationEvents.Events; @@ -25,14 +25,14 @@ public sealed partial class SpaceSpawnRule : StationEventSystem(gridUid, out var grid)) { Sawmill.Warning("Chosen station has no grids, cannot pick location for {ToPrettyString(uid):rule}"); diff --git a/Content.Server/StationEvents/Events/StationEventSystem.cs b/Content.Server/StationEvents/Events/StationEventSystem.cs index ae5d6ff47a..b5da5355fe 100644 --- a/Content.Server/StationEvents/Events/StationEventSystem.cs +++ b/Content.Server/StationEvents/Events/StationEventSystem.cs @@ -1,11 +1,10 @@ using Content.Server.Administration.Logs; using Content.Server.Chat.Systems; -using Content.Server.GameTicking; -using Content.Server.GameTicking.Rules; using Content.Server.Station.Systems; using Content.Server.StationEvents.Components; using Content.Shared.Database; using Content.Shared.GameTicking.Components; +using Content.Shared.GameTicking.Rules; using Robust.Shared.Audio.Systems; using Robust.Shared.Player; @@ -19,7 +18,7 @@ public abstract partial class StationEventSystem : GameRuleSystem where T [Dependency] protected IAdminLogManager AdminLogManager = default!; [Dependency] protected ChatSystem ChatSystem = default!; [Dependency] protected SharedAudioSystem Audio = default!; - [Dependency] protected StationSystem StationSystem = default!; + [Dependency] protected ServerStationSystem Station = default!; protected ISawmill Sawmill = default!; @@ -70,14 +69,14 @@ public abstract partial class StationEventSystem : GameRuleSystem where T } /// - protected override void Ended(EntityUid uid, T component, GameRuleComponent gameRule, GameRuleEndedEvent args) + protected override void Ended(Entity rule, ref GameRuleEndedEvent args) { - base.Ended(uid, component, gameRule, args); + base.Ended(rule, ref args); - if (!TryComp(uid, out var stationEvent)) + if (!TryComp(rule, out var stationEvent)) return; - AdminLogManager.Add(LogType.EventStopped, $"Event ended: {ToPrettyString(uid)}"); + AdminLogManager.Add(LogType.EventStopped, $"Event ended: {ToPrettyString(rule)}"); // we don't want to send to players who aren't in game (i.e. in the lobby) Filter allPlayersInGame = Filter.Empty().AddWhere(GameTicker.UserHasJoinedGame); @@ -100,16 +99,16 @@ public abstract partial class StationEventSystem : GameRuleSystem where T var query = EntityQueryEnumerator(); while (query.MoveNext(out var uid, out var stationEvent, out var ruleData)) { - if (!GameTicker.IsGameRuleAdded(uid, ruleData)) + if (!GameTicker.IsGameRuleAdded((uid, ruleData))) continue; - if (!GameTicker.IsGameRuleActive(uid, ruleData) && !HasComp(uid)) + if (!GameTicker.IsGameRuleActive((uid, ruleData)) && !HasComp(uid)) { - GameTicker.StartGameRule(uid, ruleData); + GameTicker.StartGameRule((uid, ruleData)); } - else if (stationEvent.EndTime != null && Timing.CurTime >= stationEvent.EndTime && GameTicker.IsGameRuleActive(uid, ruleData)) + else if (stationEvent.EndTime != null && Timing.CurTime >= stationEvent.EndTime && GameTicker.IsGameRuleActive((uid, ruleData))) { - GameTicker.EndGameRule(uid, ruleData); + GameTicker.EndGameRule((uid, ruleData)); } } } diff --git a/Content.Server/StationEvents/Events/VentClogRule.cs b/Content.Server/StationEvents/Events/VentClogRule.cs index dbd4c53fa9..befdffb994 100644 --- a/Content.Server/StationEvents/Events/VentClogRule.cs +++ b/Content.Server/StationEvents/Events/VentClogRule.cs @@ -22,7 +22,7 @@ public sealed partial class VentClogRule : StationEventSystem()) { - if (CompOrNull(transform.GridUid)?.Station != chosenStation) + if (CompOrNull(transform.GridUid)?.Station != chosenStation.Value.Owner) { continue; } diff --git a/Content.Server/StationEvents/Events/VentCrittersRule.cs b/Content.Server/StationEvents/Events/VentCrittersRule.cs index 9d75ef5c1e..a6042a481c 100644 --- a/Content.Server/StationEvents/Events/VentCrittersRule.cs +++ b/Content.Server/StationEvents/Events/VentCrittersRule.cs @@ -18,7 +18,7 @@ public sealed partial class VentCrittersRule : StationEventSystem(transform.GridUid)?.Station == station) + if (CompOrNull(transform.GridUid)?.Station == station.Value.Owner) { validLocations.Add(transform.Coordinates); foreach (var spawn in EntitySpawnCollection.GetSpawns(component.Entries, RobustRandom)) diff --git a/Content.Server/StationEvents/Events/VentHordeRule.cs b/Content.Server/StationEvents/Events/VentHordeRule.cs index 2bf4b0bcc1..7028f1d918 100644 --- a/Content.Server/StationEvents/Events/VentHordeRule.cs +++ b/Content.Server/StationEvents/Events/VentHordeRule.cs @@ -35,7 +35,7 @@ public sealed partial class VentHordeRule : StationEventSystem(uid)) continue; - if (CompOrNull(transform.GridUid)?.Station == station) + if (CompOrNull(transform.GridUid)?.Station == station.Value.Owner) { validLocations.Add(uid); } diff --git a/Content.Server/StationEvents/RampingStationEventSchedulerSystem.cs b/Content.Server/StationEvents/RampingStationEventSchedulerSystem.cs index b425254d9d..a89d3b0c03 100644 --- a/Content.Server/StationEvents/RampingStationEventSchedulerSystem.cs +++ b/Content.Server/StationEvents/RampingStationEventSchedulerSystem.cs @@ -2,6 +2,7 @@ using Content.Server.GameTicking; using Content.Server.GameTicking.Rules; using Content.Server.StationEvents.Components; using Content.Shared.GameTicking.Components; +using Content.Shared.GameTicking.Rules; using Robust.Shared.Random; namespace Content.Server.StationEvents; @@ -10,7 +11,7 @@ public sealed partial class RampingStationEventSchedulerSystem : GameRuleSystem< { [Dependency] private IRobustRandom _random = default!; [Dependency] private EventManagerSystem _event = default!; - [Dependency] private GameTicker _gameTicker = default!; + [Dependency] private ServerGameTicker _gameTicker = default!; /// /// Returns the ChaosModifier which increases as round time increases to a point. @@ -38,28 +39,20 @@ public sealed partial class RampingStationEventSchedulerSystem : GameRuleSystem< PickNextEventTime(uid, component); } - public override void Update(float frameTime) + // TODO: GO THROUGH EVERY SINGLE GAME RULE AND JUST CLEAN THIS STUFF UP!!! + protected override void ActiveTick(EntityUid entityUid, RampingStationEventSchedulerComponent component, GameRuleComponent gameRuleComponent, float frameTime) { - base.Update(frameTime); - if (!_event.EventsEnabled) return; - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var scheduler, out var gameRule)) + if (component.TimeUntilNextEvent > 0f) { - if (!GameTicker.IsGameRuleActive(uid, gameRule)) - continue; - - if (scheduler.TimeUntilNextEvent > 0f) - { - scheduler.TimeUntilNextEvent -= frameTime; - continue; - } - - PickNextEventTime(uid, scheduler); - _event.RunRandomEvent(scheduler.ScheduledGameRules); + component.TimeUntilNextEvent -= frameTime; + return; } + + PickNextEventTime(entityUid, component); + _event.RunRandomEvent(component.ScheduledGameRules); } /// diff --git a/Content.Server/Storage/EntitySystems/BluespaceLockerSystem.cs b/Content.Server/Storage/EntitySystems/BluespaceLockerSystem.cs index 14954f497f..abdd875856 100644 --- a/Content.Server/Storage/EntitySystems/BluespaceLockerSystem.cs +++ b/Content.Server/Storage/EntitySystems/BluespaceLockerSystem.cs @@ -16,8 +16,7 @@ using Robust.Shared.Containers; using Robust.Shared.Random; using Robust.Shared.Timing; using Robust.Shared.Prototypes; -using Content.Server.Shuttles.Components; -using Robust.Shared.Physics; +using Content.Shared.Shuttles.Components; namespace Content.Server.Storage.EntitySystems; diff --git a/Content.Server/Tips/TipsSystem.cs b/Content.Server/Tips/TipsSystem.cs index f1e3753132..bdaa569d95 100644 --- a/Content.Server/Tips/TipsSystem.cs +++ b/Content.Server/Tips/TipsSystem.cs @@ -3,6 +3,7 @@ using Content.Server.GameTicking; using Content.Shared.CCVar; using Content.Shared.Chat; using Content.Shared.Dataset; +using Content.Shared.GameTicking; using Content.Shared.Tips; using Robust.Shared.Configuration; using Robust.Shared.Player; @@ -18,7 +19,7 @@ public sealed partial class TipsSystem : SharedTipsSystem [Dependency] private IConfigurationManager _cfg = default!; [Dependency] private IGameTiming _timing = default!; [Dependency] private IRobustRandom _random = default!; - [Dependency] private GameTicker _ticker = default!; + [Dependency] private ServerGameTicker _ticker = default!; private bool _tipsEnabled; private float _tipTimeOutOfRound; diff --git a/Content.Server/Traitor/Components/TraitorCodePaperComponent.cs b/Content.Server/Traitor/Components/TraitorCodePaperComponent.cs index d4ce40c066..8e7d9ab78e 100644 --- a/Content.Server/Traitor/Components/TraitorCodePaperComponent.cs +++ b/Content.Server/Traitor/Components/TraitorCodePaperComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.Codewords; +using Content.Shared.Codewords; using Robust.Shared.Prototypes; namespace Content.Server.Traitor.Components; diff --git a/Content.Server/Traitor/Systems/AutoTraitorSystem.cs b/Content.Server/Traitor/Systems/AutoTraitorSystem.cs index 96fdf51ab9..8f76aba0d3 100644 --- a/Content.Server/Traitor/Systems/AutoTraitorSystem.cs +++ b/Content.Server/Traitor/Systems/AutoTraitorSystem.cs @@ -1,8 +1,7 @@ -using Content.Server.Antag; using Content.Server.Traitor.Components; +using Content.Shared.Antag; using Content.Shared.Mind.Components; using Robust.Shared.Player; -using Robust.Shared.Prototypes; namespace Content.Server.Traitor.Systems; diff --git a/Content.Server/Traitor/Systems/TraitorCodePaperSystem.cs b/Content.Server/Traitor/Systems/TraitorCodePaperSystem.cs index 545b0f132d..cfbc203083 100644 --- a/Content.Server/Traitor/Systems/TraitorCodePaperSystem.cs +++ b/Content.Server/Traitor/Systems/TraitorCodePaperSystem.cs @@ -1,14 +1,10 @@ using System.Diagnostics.CodeAnalysis; -using Content.Server.GameTicking; -using Content.Server.GameTicking.Rules; -using Content.Server.GameTicking.Rules.Components; -using Content.Server.Paper; +using System.Linq; using Content.Server.Traitor.Components; +using Content.Shared.Codewords; +using Content.Shared.Paper; using Robust.Shared.Random; using Robust.Shared.Utility; -using System.Linq; -using Content.Server.Codewords; -using Content.Shared.Paper; namespace Content.Server.Traitor.Systems; diff --git a/Content.Server/Trigger/Systems/GameRuleTriggerSystem.cs b/Content.Server/Trigger/Systems/GameRuleTriggerSystem.cs index db7cf5973a..fdfb3fe568 100644 --- a/Content.Server/Trigger/Systems/GameRuleTriggerSystem.cs +++ b/Content.Server/Trigger/Systems/GameRuleTriggerSystem.cs @@ -1,6 +1,7 @@ using Content.Server.Administration.Logs; using Content.Server.GameTicking; using Content.Shared.Database; +using Content.Shared.GameTicking; using Content.Shared.Trigger; using Content.Shared.Trigger.Components.Effects; @@ -11,7 +12,7 @@ namespace Content.Server.Trigger.Systems; /// public sealed partial class GameRuleTriggerSystem : EntitySystem { - [Dependency] private GameTicker _ticker = default!; + [Dependency] private ServerGameTicker _ticker = default!; [Dependency] private IAdminLogManager _adminLogger = default!; /// @@ -27,7 +28,8 @@ public sealed partial class GameRuleTriggerSystem : EntitySystem if (args.Key != null && !ent.Comp.KeysIn.Contains(args.Key)) return; - var rule = _ticker.AddGameRule(ent.Comp.GameRule); + if (_ticker.AddGameRule(ent.Comp.GameRule) is not { } rule) + return; _adminLogger.Add(LogType.EventStarted, $"{ToPrettyString(args.User):entity} added a game rule [{ent.Comp.GameRule}]" + @@ -35,7 +37,7 @@ public sealed partial class GameRuleTriggerSystem : EntitySystem if (ent.Comp.StartRule && _ticker.RunLevel == GameRunLevel.InRound) { - _ticker.StartGameRule(rule); + _ticker.StartGameRule(rule.AsNullable()); _adminLogger.Add(LogType.EventStarted, $"{ToPrettyString(args.User):entity} started game rule [{ent.Comp.GameRule}]."); } diff --git a/Content.Server/Voting/Managers/VoteManager.DefaultVotes.cs b/Content.Server/Voting/Managers/VoteManager.DefaultVotes.cs index 0023eabc9a..d1804481e5 100644 --- a/Content.Server/Voting/Managers/VoteManager.DefaultVotes.cs +++ b/Content.Server/Voting/Managers/VoteManager.DefaultVotes.cs @@ -1,16 +1,15 @@ using System.Linq; -using System.Net; -using System.Net.Sockets; using Content.Server.Administration; using Content.Server.Administration.Managers; using Content.Server.Discord.WebhookMessages; using Content.Server.GameTicking; -using Content.Server.GameTicking.Presets; using Content.Server.Roles; using Content.Server.RoundEnd; using Content.Shared.CCVar; using Content.Shared.Chat; using Content.Shared.Database; +using Content.Shared.GameTicking; +using Content.Shared.GameTicking.Prototypes; using Content.Shared.Maps; using Content.Shared.Players; using Content.Shared.Players.PlayTimeTracking; @@ -31,7 +30,7 @@ namespace Content.Server.Voting.Managers private VotingSystem? _votingSystem; private RoleSystem? _roleSystem; - private GameTicker? _gameTicker; + private ServerGameTicker? _gameTicker; private static readonly Dictionary> VoteTypesToEnableCVars = new() { @@ -50,7 +49,7 @@ namespace Content.Server.Voting.Managers else _adminLogger.Add(LogType.Vote, LogImpact.Medium, $"Initiated a {voteType.ToString()} vote"); - _gameTicker = _entityManager.EntitySysManager.GetEntitySystem(); + _gameTicker = _entityManager.EntitySysManager.GetEntitySystem(); bool timeoutVote = true; @@ -256,7 +255,7 @@ namespace Content.Server.Voting.Managers Loc.GetString("ui-vote-gamemode-win", ("winner", Loc.GetString(presets[picked])))); } _adminLogger.Add(LogType.Vote, LogImpact.Medium, $"Preset vote finished: {picked}"); - var ticker = _entityManager.EntitySysManager.GetEntitySystem(); + var ticker = _entityManager.EntitySysManager.GetEntitySystem(); ticker.SetGamePreset(picked); }; } @@ -303,7 +302,7 @@ namespace Content.Server.Voting.Managers } _adminLogger.Add(LogType.Vote, LogImpact.Medium, $"Map vote finished: {picked.MapName}"); - var ticker = _entityManager.EntitySysManager.GetEntitySystem(); + var ticker = _entityManager.EntitySysManager.GetEntitySystem(); if (ticker.CanUpdateMap()) { if (_gameMapManager.CheckMapExists(picked.ID)) diff --git a/Content.Server/Voting/Managers/VoteManager.cs b/Content.Server/Voting/Managers/VoteManager.cs index 2f4cf272fa..824eb93877 100644 --- a/Content.Server/Voting/Managers/VoteManager.cs +++ b/Content.Server/Voting/Managers/VoteManager.cs @@ -363,7 +363,7 @@ namespace Content.Server.Voting.Managers if (voteType == StandardVoteType.Preset) { var presets = GetGamePresets(); - if (presets.Count == 1 && presets.Select(x => x.Key).Single() == _entityManager.System().Preset?.ID) + if (presets.Count == 1 && presets.Select(x => x.Key).Single() == _entityManager.System().Preset?.ID) return false; } diff --git a/Content.Server/Voting/VoteCommands.cs b/Content.Server/Voting/VoteCommands.cs index 57338490a4..eca8d9f249 100644 --- a/Content.Server/Voting/VoteCommands.cs +++ b/Content.Server/Voting/VoteCommands.cs @@ -112,7 +112,7 @@ namespace Content.Server.Voting var voteLogId = await _dbManager.CustomVoteLogAdd( title, - GameTicker.GetRoundId(_esm), + ServerGameTicker.GetRoundId(_esm), shell.Player?.UserId, [..options.Options.Select(x => x.text)]); diff --git a/Content.Server/Voting/VotingSystem.cs b/Content.Server/Voting/VotingSystem.cs index 41d7e72afc..bcad9bde90 100644 --- a/Content.Server/Voting/VotingSystem.cs +++ b/Content.Server/Voting/VotingSystem.cs @@ -13,6 +13,7 @@ using Robust.Shared.Player; using Robust.Shared.Timing; using System.Threading.Tasks; using Content.Server.Players.Whitelist; +using Content.Shared.GameTicking; using Content.Shared.Players.PlayTimeTracking; using Content.Shared.Ghost.Components; @@ -20,13 +21,12 @@ namespace Content.Server.Voting; public sealed partial class VotingSystem : EntitySystem { - [Dependency] private IPlayerManager _playerManager = default!; [Dependency] private IAdminManager _adminManager = default!; [Dependency] private IGameTiming _gameTiming = default!; [Dependency] private IConfigurationManager _cfg = default!; [Dependency] private JobSystem _jobs = default!; - [Dependency] private GameTicker _gameTicker = default!; + [Dependency] private ServerGameTicker _gameTicker = default!; [Dependency] private ISharedPlaytimeManager _playtimeManager = default!; [Dependency] private WhitelistManager _whitelistManager = default!; diff --git a/Content.Server/Xenoborgs/XenoborgSystem.cs b/Content.Server/Xenoborgs/XenoborgSystem.cs index 17a067d3e4..215fe58a94 100644 --- a/Content.Server/Xenoborgs/XenoborgSystem.cs +++ b/Content.Server/Xenoborgs/XenoborgSystem.cs @@ -1,15 +1,12 @@ -using Content.Server.Antag; using Content.Server.GameTicking.Rules; -using Content.Server.GameTicking.Rules.Components; using Content.Server.Silicons.Borgs; +using Content.Shared.Antag; using Content.Shared.Destructible; -using Content.Shared.Mind; +using Content.Shared.GameTicking.Rules.Components; using Content.Shared.Mind.Components; using Content.Shared.Roles; -using Content.Shared.Roles.Components; using Content.Shared.Silicons.Borgs.Components; using Content.Shared.Xenoborgs.Components; -using Robust.Shared.Audio; using Robust.Shared.Player; namespace Content.Server.Xenoborgs; @@ -19,7 +16,7 @@ public sealed partial class XenoborgSystem : EntitySystem [Dependency] private AntagSelectionSystem _antag = default!; [Dependency] private BorgSystem _borg = default!; [Dependency] private SharedRoleSystem _roles = default!; - [Dependency] private XenoborgsRuleSystem _xenoborgsRule = default!; + [Dependency] private ServerXenoborgsRuleSystem _xenoborgsRule = default!; private static readonly Color XenoborgBriefingColor = Color.BlueViolet; diff --git a/Content.Shared/Access/Systems/AccessReaderSystem.cs b/Content.Shared/Access/Systems/AccessReaderSystem.cs index ae32557d8e..677526ed4c 100644 --- a/Content.Shared/Access/Systems/AccessReaderSystem.cs +++ b/Content.Shared/Access/Systems/AccessReaderSystem.cs @@ -31,7 +31,7 @@ public sealed partial class AccessReaderSystem : EntitySystem [Dependency] private IGameTiming _gameTiming = default!; [Dependency] private EmagSystem _emag = default!; [Dependency] private TagSystem _tag = default!; - [Dependency] private SharedGameTicker _gameTicker = default!; + [Dependency] private GameTicker _gameTicker = default!; [Dependency] private SharedHandsSystem _handsSystem = default!; [Dependency] private SharedContainerSystem _containerSystem = default!; [Dependency] private StationRecordsSystem _recordsSystem = default!; diff --git a/Content.Shared/AlertLevel/AlertLevelSystem.cs b/Content.Shared/AlertLevel/AlertLevelSystem.cs index 73234337a8..7fe5a0afce 100644 --- a/Content.Shared/AlertLevel/AlertLevelSystem.cs +++ b/Content.Shared/AlertLevel/AlertLevelSystem.cs @@ -1,7 +1,7 @@ using System.Diagnostics.CodeAnalysis; using Content.Shared.Chat; -using Content.Shared.Station; using Content.Shared.CCVar; +using Content.Shared.Station.Systems; using Robust.Shared.Audio.Systems; using Robust.Shared.Configuration; using Robust.Shared.Network; @@ -18,7 +18,7 @@ public sealed partial class AlertLevelSystem : EntitySystem [Dependency] private IPrototypeManager _prototype = default!; [Dependency] private SharedAudioSystem _audio = default!; [Dependency] private SharedChatSystem _chat = default!; - [Dependency] private SharedStationSystem _station = default!; + [Dependency] private StationSystem _station = default!; private static string _fallbackAlertKey = "alert-level-unknown"; private static string _fallbackAlertName = $"{_fallbackAlertKey}"; diff --git a/Content.Server/Antag/AntagSelectionSystem.API.Assignment.cs b/Content.Shared/Antag/AntagSelectionSystem.API.Assignment.cs similarity index 91% rename from Content.Server/Antag/AntagSelectionSystem.API.Assignment.cs rename to Content.Shared/Antag/AntagSelectionSystem.API.Assignment.cs index 12582961d1..a6d41c6b17 100644 --- a/Content.Server/Antag/AntagSelectionSystem.API.Assignment.cs +++ b/Content.Shared/Antag/AntagSelectionSystem.API.Assignment.cs @@ -1,9 +1,6 @@ -using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Linq; -using Content.Server.Antag.Components; -using Content.Server.GameTicking.Rules.Components; -using Content.Shared.Antag; +using Content.Shared.Antag.Components; using Content.Shared.Database; using Content.Shared.Ghost.Components; using Content.Shared.Humanoid; @@ -12,11 +9,11 @@ using JetBrains.Annotations; using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Random; -using static Content.Server.Antag.Components.AntagSelectionTime; +using Robust.Shared.Utility; -namespace Content.Server.Antag; +namespace Content.Shared.Antag; -public sealed partial class AntagSelectionSystem +public abstract partial class AntagSelectionSystem { /// [PublicAPI] @@ -131,7 +128,7 @@ public sealed partial class AntagSelectionSystem private bool IsMindValid([NotNullWhen(true)] EntityUid? mind, AntagSpecifierPrototype def) { // The jobless can always be antag! - if (!_jobs.MindTryGetJob(mind, out var job)) + if (!Jobs.MindTryGetJob(mind, out var job)) return true; // "Sorry buddy, but you can't be a traitor and the head of security" - Urist 1984 @@ -175,7 +172,7 @@ public sealed partial class AntagSelectionSystem public bool IsEntityValid([NotNullWhen(true)] EntityUid? uid, AntagSpecifierPrototype def) { // If the player has not spawned in as any entity (e.g., in the lobby), they can be given an antag role/entity. - if (!_whitelist.CheckBoth(uid, def.Blacklist, def.Whitelist)) + if (!Whitelist.CheckBoth(uid, def.Blacklist, def.Whitelist)) return false; if (_arrivals.IsOnArrivals((uid.Value, null))) @@ -199,20 +196,7 @@ public sealed partial class AntagSelectionSystem /// The definition which a player may or may not be banned from /// True if any of the preferred roles within the definition hit a ban. [PublicAPI] - public bool IsAntagBanned(ICommonSession session, AntagSpecifierPrototype definition) - { - if (_ban.GetAntagBans(session.UserId) is not { } bans) - return false; - - foreach (var role in definition.PrefRoles) - { - // banned! - if (bans.Contains(role)) - return true; - } - - return false; - } + public abstract bool IsAntagBanned(ICommonSession session, AntagSpecifierPrototype definition); /// [PublicAPI] @@ -236,7 +220,7 @@ public sealed partial class AntagSelectionSystem ICommonSession session, bool checkPref = true) { - _adminLogger.Add(LogType.AntagSelection, + AdminLogger.Add(LogType.AntagSelection, $"Start trying to make {session} become the antagonist: {ToPrettyString(gameRule)}, {prototype.ID}"); if (!CanBeAntag(session, gameRule, prototype, checkPref)) @@ -295,10 +279,10 @@ public sealed partial class AntagSelectionSystem // This logic is effectively copy-pasted from the old system with some fixes. var query = QueryActiveRules(); var rules = new List<(EntityUid, AntagSelectionComponent)>(); - while (query.MoveNext(out var uid, out _, out var antag, out _)) + while (query.MoveNext(out var uid, out var antag, out _, out _)) { // This is intended to only be used for ghost roles so it shouldn't be assigned for late joins - if (antag.SelectionTime == Never || !antag.LateJoinAdditional) + if (antag.SelectionTime == AntagSelectionTime.Never || !antag.LateJoinAdditional) continue; rules.Add((uid, antag)); @@ -394,7 +378,7 @@ public sealed partial class AntagSelectionSystem { if (proto.SpawnerPrototype is not { } spawnerPrototype) { - Debug.Assert(!assert, $"Tried to spawn a ghost role for {proto.ID}, but it had no prototype!"); + DebugTools.Assert(!assert, $"Tried to spawn a ghost role for {proto.ID}, but it had no prototype!"); return; } @@ -409,7 +393,7 @@ public sealed partial class AntagSelectionSystem if (!TryComp(spawner, out var spawnerComp)) { Log.Error($"Antag spawner {spawner} does not have a {nameof(GhostRoleAntagSpawnerComponent)}."); - _adminLogger.Add(LogType.AntagSelection, + AdminLogger.Add(LogType.AntagSelection, $"Antag spawner {spawner} in game rule {ToPrettyString(gameRule)} failed due to not having {nameof(GhostRoleAntagSpawnerComponent)}."); Del(spawner); return; @@ -427,7 +411,8 @@ public sealed partial class AntagSelectionSystem [Obsolete] public void ForceMakeAntag(ICommonSession player, EntProtoId defaultRule) where T : Component { - var rule = ForceGetGameRuleEnt(defaultRule); + if (ForceGetGameRuleEnt(defaultRule) is not { } rule) + return; if (TryAssignNextAvailableAntag(rule, player)) return; @@ -461,7 +446,8 @@ public sealed partial class AntagSelectionSystem /// public void ForceMakeAntag(ICommonSession player, EntProtoId ruleProto, AntagSpecifierPrototype proto) where T : Component { - var rule = ForceGetGameRuleEnt(ruleProto); + if (ForceGetGameRuleEnt(ruleProto) is not { } rule) + return; foreach (var antag in rule.Comp.Antags) { @@ -482,21 +468,7 @@ public sealed partial class AntagSelectionSystem /// Note that this is private because you generally should not be forcing a gamerule and this code is evil. /// I'm not touching it any more than I have to. /// - private Entity ForceGetGameRuleEnt(string id) where T : Component - { - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out _, out var comp)) - { - if (MetaData(uid).EntityPrototype?.ID == id) - return (uid, comp); - } - var ruleEnt = GameTicker.AddGameRule(id); - RemComp(ruleEnt); - var antag = RuleQuery.Comp(ruleEnt); - antag.AssignmentHandled = true; // don't do normal selection. - GameTicker.StartGameRule(ruleEnt); - return (ruleEnt, antag); - } + protected abstract Entity? ForceGetGameRuleEnt(string id) where T : Component; /// /// Assigns components to an entity based on a diff --git a/Content.Server/Antag/AntagSelectionSystem.API.cs b/Content.Shared/Antag/AntagSelectionSystem.API.cs similarity index 67% rename from Content.Server/Antag/AntagSelectionSystem.API.cs rename to Content.Shared/Antag/AntagSelectionSystem.API.cs index b125d41149..5213dddf01 100644 --- a/Content.Server/Antag/AntagSelectionSystem.API.cs +++ b/Content.Shared/Antag/AntagSelectionSystem.API.cs @@ -1,9 +1,6 @@ using System.Linq; -using Content.Server.Antag.Components; -using Content.Server.Antag.Selectors; -using Content.Shared.Antag; -using Content.Shared.Chat; -using Content.Shared.GameTicking.Components; +using Content.Shared.Antag.Components; +using Content.Shared.Antag.Selectors; using Content.Shared.Ghost.Components; using Content.Shared.Mind; using Content.Shared.Roles; @@ -13,15 +10,15 @@ using Robust.Shared.Enums; using Robust.Shared.Player; using Robust.Shared.Prototypes; -namespace Content.Server.Antag; +namespace Content.Shared.Antag; -public sealed partial class AntagSelectionSystem +public abstract partial class AntagSelectionSystem { /// [PublicAPI] public int GetActivePlayerCount() { - return GetActivePlayerCount(_playerManager.Sessions); + return GetActivePlayerCount(PlayerManager.Sessions); } /// @@ -51,7 +48,7 @@ public sealed partial class AntagSelectionSystem [PublicAPI] public IEnumerable GetActivePlayers() { - return GetActivePlayers(_playerManager.Sessions); + return GetActivePlayers(PlayerManager.Sessions); } [PublicAPI] @@ -191,7 +188,7 @@ public sealed partial class AntagSelectionSystem if (!TryComp(mind, out var mindComp) || mindComp.OriginalOwnerUserId == null) continue; - if (!_playerManager.TryGetPlayerData(mindComp.OriginalOwnerUserId.Value, out var data)) + if (!PlayerManager.TryGetPlayerData(mindComp.OriginalOwnerUserId.Value, out var data)) continue; yield return (mind, data, name); @@ -253,7 +250,7 @@ public sealed partial class AntagSelectionSystem var minds = GetAntagMinds(ent); foreach (var mind in minds) { - if (_mind.IsCharacterDeadIc(mind)) + if (Mind.IsCharacterDeadIc(mind)) continue; if (mind.Comp.OriginalOwnedEntity != null) @@ -274,7 +271,7 @@ public sealed partial class AntagSelectionSystem var minds = GetAntagMinds(ent); foreach (var mind in minds) { - if (_mind.IsCharacterDeadIc(mind)) + if (Mind.IsCharacterDeadIc(mind)) continue; numbah++; @@ -317,13 +314,13 @@ public sealed partial class AntagSelectionSystem [PublicAPI] public void SendBriefing(EntityUid entity, string briefing, Color? briefingColor, SoundSpecifier? briefingSound) { - if (!_mind.TryGetMind(entity, out _, out var mindComponent)) + if (!Mind.TryGetMind(entity, out _, out var mindComponent)) return; - if (!_playerManager.TryGetSessionById(mindComponent.UserId, out var session)) + if (!PlayerManager.TryGetSessionById(mindComponent.UserId, out var session)) return; - SendBriefing(session, briefing, briefingColor, briefingSound); + SendBriefing((ICommonSession?)session, briefing, briefingColor, briefingSound); } /// @@ -366,21 +363,114 @@ public sealed partial class AntagSelectionSystem /// The color the briefing should be, null for default /// The sound to briefing/greeting sound to play // TODO: It might take a bit of effort but this can probably be privated. - public void SendBriefing( - ICommonSession? session, - string briefing, - Color? briefingColor, - SoundSpecifier? briefingSound) - { - if (session == null) - return; + public abstract void SendBriefing(ICommonSession? session, string briefing, Color? briefingColor, SoundSpecifier? briefingSound); - _audio.PlayGlobal(briefingSound, session); - if (!string.IsNullOrEmpty(briefing)) + /// + /// Returns a list of all antag players who are constrained by a job whitelist or blacklist from an antag. + /// + /// A dictionary of antag sessions, and their job blacklists. + [PublicAPI] + public Dictionary>? Whitelist, HashSet>? Blacklist)> + GetAntagJobs() + { + var result = new Dictionary>? Whitelist, HashSet>? Blacklist)>(); + var query = QueryAllRules(); + while (query.MoveNext(out var comp, out _)) { - var wrappedMessage = Loc.GetString("chat-manager-server-wrap-message", ("message", briefing)); - _chat.ChatMessageToOne(ChatChannel.Server, briefing, wrappedMessage, default, false, session.Channel, briefingColor); + foreach (var antag in comp.Antags) + { + if (!comp.PreSelectedSessions.TryGetValue(antag, out var set) || !ProtoMan.Resolve(antag.Proto, out var proto)) + continue; + + // Check this here so we don't make a dictionary entry for a bunch of players, with empty blacklists and whitelists. + if (proto.JobBlacklist == null && proto.JobWhitelist == null) + continue; + + foreach (var player in set) + { + if (result.TryGetValue(player, out var jobs)) + { + if (proto.JobWhitelist != null) + { + if (jobs.Whitelist == null) + jobs.Whitelist = proto.JobWhitelist; + else + jobs.Whitelist.UnionWith(proto.JobWhitelist); + } + + if (proto.JobBlacklist != null) + { + if (jobs.Blacklist == null) + jobs.Blacklist = proto.JobBlacklist; + else + jobs.Blacklist.UnionWith(proto.JobBlacklist); + } + } + else + { + result.Add(player, (proto.JobWhitelist, proto.JobBlacklist)); + } + } + } } + + return result; + } + + /// + /// Returns a list of all antag players who are constrained by a job whitelist or blacklist from an antag. + /// + /// Antag prototype we're excluding for our returned job whitelist/blacklist. + /// A dictionary of antag sessions, and their job blacklists. + [PublicAPI] + public Dictionary>? Whitelist, HashSet>? Blacklist)> + GetAntagJobs(ProtoId except) + { + var result = new Dictionary>? Whitelist, HashSet>? Blacklist)>(); + var query = QueryAllRules(); + while (query.MoveNext(out var comp, out _)) + { + foreach (var antag in comp.Antags) + { + if (except == antag) + continue; + + if (!comp.PreSelectedSessions.TryGetValue(antag, out var set) || !ProtoMan.Resolve(antag.Proto, out var proto)) + continue; + + // Check this here so we don't make a dictionary entry for a bunch of players, with empty blacklists and whitelists. + if (proto.JobBlacklist == null && proto.JobWhitelist == null) + continue; + + foreach (var player in set) + { + if (result.TryGetValue(player, out var jobs)) + { + if (proto.JobWhitelist != null) + { + if (jobs.Whitelist == null) + jobs.Whitelist = proto.JobWhitelist; + else + jobs.Whitelist.UnionWith(proto.JobWhitelist); + } + + if (proto.JobBlacklist != null) + { + if (jobs.Blacklist == null) + jobs.Blacklist = proto.JobBlacklist; + else + jobs.Blacklist.UnionWith(proto.JobBlacklist); + } + } + else + { + result.Add(player, (proto.JobWhitelist, proto.JobBlacklist)); + } + } + } + } + + return result; } /// @@ -390,15 +480,12 @@ public sealed partial class AntagSelectionSystem /// A dictionary of antag sessions, and their job blacklists. [PublicAPI] public Dictionary>? Whitelist, HashSet>? Blacklist)> - GetAntagJobs(params HashSet> except) + GetAntagJobs(HashSet> except) { var result = new Dictionary>? Whitelist, HashSet>? Blacklist)>(); var query = QueryAllRules(); - while (query.MoveNext(out var uid, out var comp, out _)) + while (query.MoveNext(out var comp, out _)) { - if (HasComp(uid)) - continue; - foreach (var antag in comp.Antags) { if (except.Contains(antag)) @@ -450,16 +537,60 @@ public sealed partial class AntagSelectionSystem /// A tuple of a whitelist and blacklist hashset for this player. [PublicAPI] public (HashSet>? Whitelist, HashSet>? Blacklist) - GetAntagJobs(ICommonSession player, params HashSet> except) + GetAntagJobs(ICommonSession player, ProtoId except) { HashSet>? whitelist = null; HashSet>? blacklist = null; var query = QueryAllRules(); - while (query.MoveNext(out var uid, out var comp, out _)) + while (query.MoveNext(out var comp, out _)) { - if (HasComp(uid)) - continue; + foreach (var antag in comp.Antags) + { + if (except == antag) + continue; + if (!comp.PreSelectedSessions.TryGetValue(antag, out var set) || !set.Contains(player)) + continue; + + if (!ProtoMan.Resolve(antag.Proto, out var proto)) + continue; + + if (proto.JobWhitelist != null) + { + if (whitelist == null) + whitelist = proto.JobWhitelist; + else + whitelist.UnionWith(proto.JobWhitelist); + } + + if (proto.JobBlacklist != null) + { + if (blacklist == null) + blacklist = proto.JobBlacklist; + else + blacklist.UnionWith(proto.JobBlacklist); + } + } + } + + return (whitelist, blacklist); + } + + /// + /// Returns a list of all blacklisted and whitelisted jobs for this player + /// + /// Player we're checking the blocked jobs of + /// Antag prototypes we're excluding in our search + /// A tuple of a whitelist and blacklist hashset for this player. + [PublicAPI] + public (HashSet>? Whitelist, HashSet>? Blacklist) + GetAntagJobs(ICommonSession player, HashSet> except) + { + HashSet>? whitelist = null; + HashSet>? blacklist = null; + var query = QueryAllRules(); + while (query.MoveNext(out var comp, out _)) + { foreach (var antag in comp.Antags) { if (except.Contains(antag)) @@ -497,15 +628,36 @@ public sealed partial class AntagSelectionSystem /// /// A specific definition to be excluded from the check. [PublicAPI] - public HashSet GetPreSelectedAntagSessions(params HashSet> except) + public HashSet GetPreSelectedAntagSessions(ProtoId except) { var result = new HashSet(); var query = QueryAllRules(); - while (query.MoveNext(out var uid, out var comp, out _)) + while (query.MoveNext(out var comp, out _)) { - if (HasComp(uid)) - continue; + foreach (var antag in comp.Antags) + { + if (except == antag) + continue; + if (comp.PreSelectedSessions.TryGetValue(antag, out var set)) + result.UnionWith(set); + } + } + + return result; + } + + /// + /// Get all sessions that have been preselected for antag. + /// + /// A specific definition to be excluded from the check. + [PublicAPI] + public HashSet GetPreSelectedAntagSessions(HashSet> except) + { + var result = new HashSet(); + var query = QueryAllRules(); + while (query.MoveNext(out var comp, out _)) + { foreach (var antag in comp.Antags) { if (except.Contains(antag)) @@ -546,23 +698,7 @@ public sealed partial class AntagSelectionSystem /// Optional list of antag preferences we're specifically looking for. /// A list of all antags which the player meets the requirement for, and are contained in the filter [PublicAPI] - public IEnumerable> GetValidAntagPreferences(ICommonSession session, List>? filter = null) - { - if (!_pref.TryGetCachedPreferences(session.UserId, out var prefs)) - yield break; - - foreach (var antag in prefs.SelectedCharacter.AntagPreferences) - { - // We also check this in IsSessionValid, but we also check it here since this is public API. - if (_ban.IsRoleBanned(session, antag) || !_playTime.IsAllowed(session, antag)) - continue; - - if (filter != null && !filter.Contains(antag)) - continue; - - yield return antag; - } - } + public abstract IEnumerable> GetValidAntagPreferences(ICommonSession session, List>? filter = null); /// /// Checks if a player has been assigned antag for a specific game rule. @@ -573,7 +709,7 @@ public sealed partial class AntagSelectionSystem public bool IsAssignedAntag(Entity gameRule, ICommonSession player) { // First check our mindroles. - if (_role.PlayerIsAntagonist(player)) + if (Role.PlayerIsAntagonist(player)) return true; foreach (var (_, sessions) in gameRule.Comp.PreSelectedSessions) @@ -610,16 +746,47 @@ public sealed partial class AntagSelectionSystem /// You can only get one antag per game rule so it's fine to ignore by uid. /// True if there is a game rule giving this player antag status [PublicAPI] - public bool IsAssignedAntag(ICommonSession player, params HashSet ignored) + public bool IsAssignedAntag(ICommonSession player, EntityUid ignored) { // First check our mindroles. - if (_role.PlayerIsAntagonist(player)) + if (Role.PlayerIsAntagonist(player)) return true; var query = QueryAllRules(); while (query.MoveNext(out var uid, out var comp, out _)) { - if (ignored.Contains(uid) || HasComp(uid)) + if (ignored == uid) + continue; + + foreach (var (_, sessions) in comp.PreSelectedSessions) + { + // Session has already been preselected as antagonist, and therefore *has* been assigned antag! + if (sessions.Contains(player)) + return true; + } + } + + return false; + } + + /// + /// Checks if the given player is currently assigned antag for any game rule. + /// + /// Player who may or may not be the antagonist. + /// Game rule entities we're ignoring. + /// You can only get one antag per game rule so it's fine to ignore by uid. + /// True if there is a game rule giving this player antag status + [PublicAPI] + public bool IsAssignedAntag(ICommonSession player, HashSet ignored) + { + // First check our mindroles. + if (Role.PlayerIsAntagonist(player)) + return true; + + var query = QueryAllRules(); + while (query.MoveNext(out var uid, out var comp, out _)) + { + if (ignored.Contains(uid)) continue; foreach (var (_, sessions) in comp.PreSelectedSessions) @@ -640,16 +807,51 @@ public sealed partial class AntagSelectionSystem /// Game rule entities we're ignoring. /// True if there is a game rule giving this player antag status that is exclusive with other antags [PublicAPI] - public bool IsAssignedExclusiveAntag(ICommonSession player, params HashSet ignored) + public bool IsAssignedExclusiveAntag(ICommonSession player, EntityUid ignored) { // First check our mindroles. - if (_role.MindIsExclusiveAntagonist(player.AttachedEntity)) + if (Role.MindIsExclusiveAntagonist(player.AttachedEntity)) return true; var query = QueryAllRules(); while (query.MoveNext(out var uid, out var comp, out _)) { - if (ignored.Contains(uid) || HasComp(uid)) + if (ignored == uid) + continue; + + foreach (var (proto, sessions) in comp.PreSelectedSessions) + { + if (!ProtoMan.Resolve(proto, out var def)) + continue; // How did you even get here? + + if (!sessions.Contains(player)) + continue; + + if (def.MultiAntagSetting == AntagAcceptability.None) + return true; + } + } + + return false; + } + + /// + /// Checks if the given player is currently assigned antag for any game rule that is incompatible with other antag prototypes. + /// + /// Player who may or may not be the antagonist. + /// Game rule entities we're ignoring. + /// True if there is a game rule giving this player antag status that is exclusive with other antags + [PublicAPI] + public bool IsAssignedExclusiveAntag(ICommonSession player, HashSet ignored) + { + // First check our mindroles. + if (Role.MindIsExclusiveAntagonist(player.AttachedEntity)) + return true; + + var query = QueryAllRules(); + while (query.MoveNext(out var uid, out var comp, out _)) + { + if (ignored.Contains(uid)) continue; foreach (var (proto, sessions) in comp.PreSelectedSessions) diff --git a/Content.Server/Antag/AntagSelectionSystem.cs b/Content.Shared/Antag/AntagSelectionSystem.cs similarity index 81% rename from Content.Server/Antag/AntagSelectionSystem.cs rename to Content.Shared/Antag/AntagSelectionSystem.cs index 8ca6c70e6e..b02ebf914c 100644 --- a/Content.Server/Antag/AntagSelectionSystem.cs +++ b/Content.Shared/Antag/AntagSelectionSystem.cs @@ -1,43 +1,28 @@ -using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Linq; -using Content.Server.Administration.Managers; -using Content.Server.Antag.Components; -using Content.Server.Chat.Managers; -using Content.Server.GameTicking; -using Content.Server.GameTicking.Events; -using Content.Server.GameTicking.Rules; -using Content.Server.Ghost.Roles; -using Content.Server.Ghost.Roles.Components; -using Content.Server.Mind; -using Content.Server.Objectives; -using Content.Server.Players.PlayTimeTracking; -using Content.Server.Preferences.Managers; -using Content.Server.Roles; -using Content.Server.Roles.Jobs; -using Content.Server.Shuttles.Systems; using Content.Shared.Administration.Logs; -using Content.Shared.Antag; +using Content.Shared.Antag.Components; using Content.Shared.Clothing; using Content.Shared.Database; using Content.Shared.Follower; using Content.Shared.GameTicking; using Content.Shared.GameTicking.Components; +using Content.Shared.GameTicking.Rules; +using Content.Shared.Mind; using Content.Shared.Random.Helpers; using Content.Shared.Roles; +using Content.Shared.Roles.Jobs; +using Content.Shared.Shuttles.Systems; using Content.Shared.Whitelist; -using JetBrains.Annotations; -using Robust.Server.Audio; -using Robust.Server.GameObjects; -using Robust.Server.Player; +using Robust.Shared.Audio.Systems; using Robust.Shared.Map; using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Utility; -using static Content.Server.Antag.Components.AntagSelectionTime; +using static Content.Shared.Antag.Components.AntagSelectionTime; -namespace Content.Server.Antag; +namespace Content.Shared.Antag; /// /// Turns players into antags. @@ -54,24 +39,19 @@ namespace Content.Server.Antag; /// I hope this system is now readable and significantly less buggy thanks to my efforts. /// I could do more, but I've been soaped enough. Now it's your turn to fix it. /// -public sealed partial class AntagSelectionSystem : GameRuleSystem +public abstract partial class AntagSelectionSystem : GameRuleSystem { - [Dependency] private IBanManager _ban = default!; - [Dependency] private IChatManager _chat = default!; - [Dependency] private IPlayerManager _playerManager = default!; - [Dependency] private IServerPreferencesManager _pref = default!; - [Dependency] private ISharedAdminLogManager _adminLogger = default!; + [Dependency] protected ISharedPlayerManager PlayerManager = default!; + [Dependency] protected ISharedAdminLogManager AdminLogger = default!; [Dependency] private ArrivalsSystem _arrivals = default!; - [Dependency] private AudioSystem _audio = default!; - [Dependency] private EntityWhitelistSystem _whitelist = default!; - [Dependency] private FollowerSystem _follower = default!; - [Dependency] private GhostRoleSystem _ghostRole = default!; - [Dependency] private JobSystem _jobs = default!; - [Dependency] private LoadoutSystem _loadout = default!; - [Dependency] private MindSystem _mind = default!; - [Dependency] private PlayTimeTrackingSystem _playTime = default!; - [Dependency] private RoleSystem _role = default!; - [Dependency] private TransformSystem _transform = default!; + [Dependency] protected EntityWhitelistSystem Whitelist = default!; + [Dependency] protected FollowerSystem Follower = default!; + [Dependency] protected LoadoutSystem Loadout = default!; + [Dependency] protected SharedAudioSystem Audio = default!; + [Dependency] protected SharedJobSystem Jobs = default!; + [Dependency] protected SharedMindSystem Mind = default!; + [Dependency] protected SharedRoleSystem Role = default!; + [Dependency] protected SharedTransformSystem XForm = default!; // arbitrary random number to give late joining some mild interest. public const float LateJoinRandomChance = 0.5f; @@ -103,77 +83,37 @@ public sealed partial class AntagSelectionSystem : GameRuleSystem(OnTakeGhostRole); - - SubscribeLocalEvent(OnObjectivesTextGetInfo); - // In order of how these occur. SubscribeLocalEvent(OnPlayerSpawning); - SubscribeLocalEvent(OnJobNotAssigned); SubscribeLocalEvent(OnJobsAssigned); SubscribeLocalEvent(OnSpawnComplete); } - protected override void Started(EntityUid uid, AntagSelectionComponent component, GameRuleComponent gameRule, GameRuleStartedEvent args) + protected override void Started(Entity rule, ref GameRuleStartedEvent args) { - base.Started(uid, component, gameRule, args); + base.Started(rule, ref args); // If we're not in round, don't spawn or assign antags. Those will be handled by RulePlayerSpawning, and RulePlayerJobs if (GameTicker.RunLevel != GameRunLevel.InRound) return; - if (component.AssignmentHandled) + if (rule.Comp1.AssignmentHandled) return; // Antags haven't been selected so we need to select them! Only if we select when the game rule starts though! - if (component.PreSelectionsComplete) + if (rule.Comp1.PreSelectionsComplete) { - AssignPreSelectedSessions((uid, component)); + AssignPreSelectedSessions(rule); return; } // If pre-selections haven't completed, then we need to select and assign antags. var players = GetActivePlayers().ToArray(); - if (component.SelectionTime == RuleStarted) // Only pre-select antags if we pre-select on rule start - AssignAntags((uid, component), players); + if (rule.Comp1.SelectionTime == RuleStarted) // Only pre-select antags if we pre-select on rule start + AssignAntags(rule, players); else // Otherwise, we only spawn the ghost roles! - SpawnGhostRoles((uid, component), players.Length); - } - - private void OnTakeGhostRole(Entity ent, ref TakeGhostRoleEvent args) - { - if (args.TookRole) - return; - - if (ent.Comp.Rule is not { } rule || ent.Comp.Definition is not { } proto) - return; - - if (!ProtoMan.Resolve(proto, out var def)) - return; - - if (!Exists(rule) || !RuleQuery.TryComp(rule, out var select)) - return; - - // Ensure the player is allowed to play this antagonist! - if (IsAntagBanned(args.Player, def) || !_playTime.IsAllowed(args.Player, def.PrefRoles)) - return; - - if (!TrySpawnAntagonist((rule, select), def, args.Player, _transform.GetMapCoordinates(ent), out var uid)) - { - Log.Error($"Tried to make {args.Player.UserId} into an antagonist but was unable to spawn an entity for them. Game rule {ToPrettyString(ent)}"); - return; - } - - // We do this after TrySpawnAntagonist so we don't have to worry about a failed spawn adding permanent pre selections to a game rule. - PreSelectSession((rule, select), def, args.Player); - InitializeAntag((rule, select), def, uid.Value, args.Player); - args.TookRole = true; - - // Move ghosts that were watching the raffle on the spawner over to the freshly spawned antag. - _follower.TransferFollowers(ent.Owner, uid.Value); - - _ghostRole.UnregisterGhostRole((ent, Comp(ent))); + SpawnGhostRoles(rule, players.Length); } private void OnSpawnComplete(PlayerSpawnCompleteEvent args) @@ -197,7 +137,7 @@ public sealed partial class AntagSelectionSystem : GameRuleSystem gameRule, int playerCount, ref List preSpawnRoles, @@ -400,7 +316,7 @@ public sealed partial class AntagSelectionSystem : GameRuleSystemGame rule which has chosen this player for antag. /// Antag prototype this player will become. /// Player. - private void PreSelectSession(Entity gameRule, ProtoId protoId, ICommonSession player) + protected void PreSelectSession(Entity gameRule, ProtoId protoId, ICommonSession player) { if (!gameRule.Comp.PreSelectedSessions.TryGetValue(protoId, out var set)) gameRule.Comp.PreSelectedSessions.Add(protoId, set = new HashSet()); @@ -582,7 +498,7 @@ public sealed partial class AntagSelectionSystem : GameRuleSystem @@ -618,7 +534,7 @@ public sealed partial class AntagSelectionSystem : GameRuleSystem @@ -695,7 +611,7 @@ public sealed partial class AntagSelectionSystem : GameRuleSystem - private bool TrySpawnAntagonist(Entity gameRule, + protected bool TrySpawnAntagonist(Entity gameRule, AntagSpecifierPrototype prototype, ICommonSession player, MapCoordinates coordinates, @@ -729,7 +645,7 @@ public sealed partial class AntagSelectionSystem : GameRuleSystem - private void InitializeAntag(Entity gameRule, AntagSpecifierPrototype prototype, EntityUid antag, ICommonSession player) + protected void InitializeAntag(Entity gameRule, AntagSpecifierPrototype prototype, EntityUid antag, ICommonSession player) { // Make sure player was properly pre-selected. - Debug.Assert(gameRule.Comp.PreSelectedSessions.TryGetValue(prototype.ID, out var value) && value.Contains(player), + DebugTools.Assert(gameRule.Comp.PreSelectedSessions.TryGetValue(prototype.ID, out var value) && value.Contains(player), $"Game rule {ToPrettyString(gameRule)}, failed to pre-assign {player.Name} to antag {prototype.ID}"); // The following is where we apply components, equipment, and other changes to our antagonist entity. @@ -788,18 +704,18 @@ public sealed partial class AntagSelectionSystem : GameRuleSystem gameRule, ProtoId proto, EntityUid mind, EntityUid antag) + protected void AssignMind(Entity gameRule, ProtoId proto, EntityUid mind, EntityUid antag) { if (gameRule.Comp.AssignedMinds.TryGetValue(proto, out var minds)) { @@ -820,15 +736,6 @@ public sealed partial class AntagSelectionSystem : GameRuleSystem ent, ref ObjectivesTextGetInfoEvent args) - { - if (ent.Comp.AgentName is not { } name) - return; - - args.Minds = GetAntagIdentities(ent.AsNullable()).ToList(); - args.AgentName = Loc.GetString(name); - } } /// diff --git a/Content.Server/Antag/Components/AntagSelectionComponent.cs b/Content.Shared/Antag/Components/AntagSelectionComponent.cs similarity index 92% rename from Content.Server/Antag/Components/AntagSelectionComponent.cs rename to Content.Shared/Antag/Components/AntagSelectionComponent.cs index de26f81843..84581a32b0 100644 --- a/Content.Server/Antag/Components/AntagSelectionComponent.cs +++ b/Content.Shared/Antag/Components/AntagSelectionComponent.cs @@ -1,14 +1,12 @@ -using Content.Server.Administration.Systems; -using Content.Server.Antag.Selectors; -using Content.Server.GameTicking; -using Content.Shared.Antag; +using Content.Shared.Antag.Selectors; +using Content.Shared.GameTicking; using Content.Shared.GameTicking.Components; using Robust.Shared.Player; using Robust.Shared.Prototypes; -namespace Content.Server.Antag.Components; +namespace Content.Shared.Antag.Components; -[RegisterComponent, Access(typeof(AntagSelectionSystem), typeof(AdminVerbSystem))] +[RegisterComponent, Access(typeof(AntagSelectionSystem))] public sealed partial class AntagSelectionComponent : Component { /// diff --git a/Content.Server/Antag/Components/GhostRoleAntagSpawnerComponent.cs b/Content.Shared/Antag/Components/GhostRoleAntagSpawnerComponent.cs similarity index 84% rename from Content.Server/Antag/Components/GhostRoleAntagSpawnerComponent.cs rename to Content.Shared/Antag/Components/GhostRoleAntagSpawnerComponent.cs index 0c563f3c40..5eaf887a9f 100644 --- a/Content.Server/Antag/Components/GhostRoleAntagSpawnerComponent.cs +++ b/Content.Shared/Antag/Components/GhostRoleAntagSpawnerComponent.cs @@ -1,7 +1,6 @@ -using Content.Shared.Antag; using Robust.Shared.Prototypes; -namespace Content.Server.Antag.Components; +namespace Content.Shared.Antag.Components; /// /// Ghost role spawner that creates an antag for the associated game rule. diff --git a/Content.Server/Antag/Selectors/AntagCountSelector.cs b/Content.Shared/Antag/Selectors/AntagCountSelector.cs similarity index 90% rename from Content.Server/Antag/Selectors/AntagCountSelector.cs rename to Content.Shared/Antag/Selectors/AntagCountSelector.cs index 3f02581385..351e4f06ba 100644 --- a/Content.Server/Antag/Selectors/AntagCountSelector.cs +++ b/Content.Shared/Antag/Selectors/AntagCountSelector.cs @@ -1,9 +1,8 @@ -using Content.Shared.Antag; -using Content.Shared.Destructible.Thresholds; +using Content.Shared.Destructible.Thresholds; using Robust.Shared.Prototypes; using Robust.Shared.Random; -namespace Content.Server.Antag.Selectors; +namespace Content.Shared.Antag.Selectors; /// /// An abstract class meant to return the amount of antags to spawn. diff --git a/Content.Server/Antag/Selectors/FixedAntagCount.cs b/Content.Shared/Antag/Selectors/FixedAntagCount.cs similarity index 90% rename from Content.Server/Antag/Selectors/FixedAntagCount.cs rename to Content.Shared/Antag/Selectors/FixedAntagCount.cs index 17b4dc30d0..03c7612bbc 100644 --- a/Content.Server/Antag/Selectors/FixedAntagCount.cs +++ b/Content.Shared/Antag/Selectors/FixedAntagCount.cs @@ -1,6 +1,6 @@ using Robust.Shared.Random; -namespace Content.Server.Antag.Selectors; +namespace Content.Shared.Antag.Selectors; /// /// Always spawns this many antags. diff --git a/Content.Server/Antag/Selectors/LinearAntagCount.cs b/Content.Shared/Antag/Selectors/LinearAntagCount.cs similarity index 90% rename from Content.Server/Antag/Selectors/LinearAntagCount.cs rename to Content.Shared/Antag/Selectors/LinearAntagCount.cs index 78fce94733..54e5e75fec 100644 --- a/Content.Server/Antag/Selectors/LinearAntagCount.cs +++ b/Content.Shared/Antag/Selectors/LinearAntagCount.cs @@ -1,6 +1,6 @@ using Robust.Shared.Random; -namespace Content.Server.Antag.Selectors; +namespace Content.Shared.Antag.Selectors; /// /// Spawns a constrained number of antags that scales linearly. diff --git a/Content.Shared/CCVar/CCVars.Shuttle.cs b/Content.Shared/CCVar/CCVars.Shuttle.cs index c29ee7a488..e975a9484f 100644 --- a/Content.Shared/CCVar/CCVars.Shuttle.cs +++ b/Content.Shared/CCVar/CCVars.Shuttle.cs @@ -31,7 +31,7 @@ public sealed partial class CCVars /// Whether the arrivals shuttle is enabled. /// public static readonly CVarDef ArrivalsShuttles = - CVarDef.Create("shuttle.arrivals", true, CVar.SERVERONLY); + CVarDef.Create("shuttle.arrivals", true); /// /// The map to use for the arrivals station. @@ -55,7 +55,7 @@ public sealed partial class CCVars /// Should all players who spawn at arrivals have godmode until they leave the map? /// public static readonly CVarDef GodmodeArrivals = - CVarDef.Create("shuttle.godmode_arrivals", false, CVar.SERVERONLY); + CVarDef.Create("shuttle.godmode_arrivals", false); /// /// If a grid is split then hide any smaller ones under this mass (kg) from the map. diff --git a/Content.Shared/Clock/SharedClockSystem.cs b/Content.Shared/Clock/SharedClockSystem.cs index c07fb5e83e..da8f5b6afe 100644 --- a/Content.Shared/Clock/SharedClockSystem.cs +++ b/Content.Shared/Clock/SharedClockSystem.cs @@ -6,7 +6,7 @@ namespace Content.Shared.Clock; public abstract partial class SharedClockSystem : EntitySystem { - [Dependency] private SharedGameTicker _ticker = default!; + [Dependency] private GameTicker _ticker = default!; /// public override void Initialize() diff --git a/Content.Shared/Clothing/LoadoutSystem.cs b/Content.Shared/Clothing/LoadoutSystem.cs index fcb1982dc5..fe541684d8 100644 --- a/Content.Shared/Clothing/LoadoutSystem.cs +++ b/Content.Shared/Clothing/LoadoutSystem.cs @@ -5,7 +5,7 @@ using Content.Shared.Humanoid; using Content.Shared.Preferences; using Content.Shared.Preferences.Loadouts; using Content.Shared.Roles; -using Content.Shared.Station; +using Content.Shared.Station.Systems; using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Random; @@ -20,7 +20,7 @@ public sealed partial class LoadoutSystem : EntitySystem // Shared so we can predict it for placement manager. [Dependency] private ActorSystem _actors = default!; - [Dependency] private SharedStationSpawningSystem _station = default!; + [Dependency] private StationSpawningSystem _station = default!; [Dependency] private IRobustRandom _random = default!; public override void Initialize() diff --git a/Content.Server/Codewords/CodewordComponent.cs b/Content.Shared/Codewords/CodewordComponent.cs similarity index 88% rename from Content.Server/Codewords/CodewordComponent.cs rename to Content.Shared/Codewords/CodewordComponent.cs index 6ceb3a513a..1116a79622 100644 --- a/Content.Server/Codewords/CodewordComponent.cs +++ b/Content.Shared/Codewords/CodewordComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Codewords; +namespace Content.Shared.Codewords; /// /// Container for generated codewords. diff --git a/Content.Server/Codewords/CodewordFactionPrototype.cs b/Content.Shared/Codewords/CodewordFactionPrototype.cs similarity index 93% rename from Content.Server/Codewords/CodewordFactionPrototype.cs rename to Content.Shared/Codewords/CodewordFactionPrototype.cs index 62552c1966..af5841890b 100644 --- a/Content.Server/Codewords/CodewordFactionPrototype.cs +++ b/Content.Shared/Codewords/CodewordFactionPrototype.cs @@ -1,6 +1,6 @@ using Robust.Shared.Prototypes; -namespace Content.Server.Codewords; +namespace Content.Shared.Codewords; /// /// This is a prototype for easy access to codewords using identifiers instead of magic strings. diff --git a/Content.Server/Codewords/CodewordGeneratorPrototype.cs b/Content.Shared/Codewords/CodewordGeneratorPrototype.cs similarity index 84% rename from Content.Server/Codewords/CodewordGeneratorPrototype.cs rename to Content.Shared/Codewords/CodewordGeneratorPrototype.cs index b17a40fc6a..82a8a09cf2 100644 --- a/Content.Server/Codewords/CodewordGeneratorPrototype.cs +++ b/Content.Shared/Codewords/CodewordGeneratorPrototype.cs @@ -1,7 +1,7 @@ using Content.Shared.Dataset; using Robust.Shared.Prototypes; -namespace Content.Server.Codewords; +namespace Content.Shared.Codewords; /// /// This is a prototype for specifying codeword generation @@ -17,12 +17,11 @@ public sealed partial class CodewordGeneratorPrototype : IPrototype /// List of datasets to use for word generation. All values will be concatenated into one list and then randomly chosen from /// [DataField] - public List> Words { get; private set; } = - [ - "Adjectives", - "Verbs", - ]; - + public List> Words { get; private set; } = new(2) + { + "Adjectives", + "Verbs", + }; /// /// How many codewords should be generated? diff --git a/Content.Server/Codewords/CodewordManagerComponent.cs b/Content.Shared/Codewords/CodewordManagerComponent.cs similarity index 94% rename from Content.Server/Codewords/CodewordManagerComponent.cs rename to Content.Shared/Codewords/CodewordManagerComponent.cs index 46ddc357a1..089065f598 100644 --- a/Content.Server/Codewords/CodewordManagerComponent.cs +++ b/Content.Shared/Codewords/CodewordManagerComponent.cs @@ -1,6 +1,6 @@ using Robust.Shared.Prototypes; -namespace Content.Server.Codewords; +namespace Content.Shared.Codewords; /// /// Component that defines to use and keeps track of generated codewords. diff --git a/Content.Server/Codewords/CodewordSystem.cs b/Content.Shared/Codewords/CodewordSystem.cs similarity index 90% rename from Content.Server/Codewords/CodewordSystem.cs rename to Content.Shared/Codewords/CodewordSystem.cs index 2b8251bd99..6a33dff522 100644 --- a/Content.Server/Codewords/CodewordSystem.cs +++ b/Content.Shared/Codewords/CodewordSystem.cs @@ -1,28 +1,22 @@ using System.Linq; -using Content.Server.Administration.Logs; -using Content.Server.GameTicking.Events; +using Content.Shared.Administration.Logs; using Content.Shared.Database; +using Content.Shared.GameTicking.Events; using Robust.Shared.Map; using Robust.Shared.Prototypes; using Robust.Shared.Random; -namespace Content.Server.Codewords; +namespace Content.Shared.Codewords; /// /// Gamerule that provides codewords for other gamerules that rely on them. /// public sealed partial class CodewordSystem : EntitySystem { - [Dependency] private IAdminLogManager _adminLogger = default!; + [Dependency] private ISharedAdminLogManager _adminLogger = default!; [Dependency] private IRobustRandom _random = default!; - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnRoundStart); - } - + [SubscribeLocalEvent] private void OnRoundStart(RoundStartingEvent ev) { var manager = Spawn(); diff --git a/Content.Shared/Construction/EntitySystems/AnchorableSystem.cs b/Content.Shared/Construction/EntitySystems/AnchorableSystem.cs index 997cc4d3dd..1e5ab9e16f 100644 --- a/Content.Shared/Construction/EntitySystems/AnchorableSystem.cs +++ b/Content.Shared/Construction/EntitySystems/AnchorableSystem.cs @@ -9,7 +9,7 @@ using Content.Shared.Interaction; using Content.Shared.Movement.Pulling.Components; using Content.Shared.Movement.Pulling.Systems; using Content.Shared.Popups; -using Content.Shared.Station; +using Content.Shared.Station.Systems; using Content.Shared.Tools.Components; using Robust.Shared.Map; using Robust.Shared.Map.Components; @@ -28,7 +28,7 @@ public sealed partial class AnchorableSystem : EntitySystem [Dependency] private SharedPopupSystem _popup = default!; [Dependency] private PullingSystem _pulling = default!; [Dependency] private SharedMapSystem _map = default!; - [Dependency] private SharedStationSystem _stationSystem = null!; + [Dependency] private StationSystem _stationSystem = null!; [Dependency] private SharedToolSystem _tool = default!; [Dependency] private SharedTransformSystem _transformSystem = default!; [Dependency] private TagSystem _tagSystem = default!; diff --git a/Content.Shared/CriminalRecords/Systems/SharedCriminalRecordsConsoleSystem.cs b/Content.Shared/CriminalRecords/Systems/SharedCriminalRecordsConsoleSystem.cs index 68b1fb15be..ff22c9dff5 100644 --- a/Content.Shared/CriminalRecords/Systems/SharedCriminalRecordsConsoleSystem.cs +++ b/Content.Shared/CriminalRecords/Systems/SharedCriminalRecordsConsoleSystem.cs @@ -2,6 +2,7 @@ using Content.Shared.IdentityManagement; using Content.Shared.Security; using Content.Shared.Security.Components; using Content.Shared.Station; +using Content.Shared.Station.Systems; using Content.Shared.StationRecords; using Content.Shared.StationRecords.Systems; @@ -11,7 +12,7 @@ public abstract partial class SharedCriminalRecordsConsoleSystem : EntitySystem { [Dependency] private SharedCriminalRecordsSystem _criminalRecords = default!; [Dependency] private StationRecordsSystem _records = default!; - [Dependency] private SharedStationSystem _station = default!; + [Dependency] private StationSystem _station = default!; /// /// Checks if the new identity's name has a criminal record attached to it, and gives the entity the icon that diff --git a/Content.Shared/EntityTable/Conditions/HasBudgetCondition.cs b/Content.Shared/EntityTable/Conditions/HasBudgetCondition.cs index 0eea81f736..ef854978d6 100644 --- a/Content.Shared/EntityTable/Conditions/HasBudgetCondition.cs +++ b/Content.Shared/EntityTable/Conditions/HasBudgetCondition.cs @@ -1,5 +1,6 @@ using Content.Shared.EntityTable.EntitySelectors; using Content.Shared.GameTicking.Rules; +using Content.Shared.GameTicking.Rules.Components; using Robust.Shared.Prototypes; namespace Content.Shared.EntityTable.Conditions; diff --git a/Content.Shared/EntityTable/Conditions/MaxRuleOccurenceCondition.cs b/Content.Shared/EntityTable/Conditions/MaxRuleOccurenceCondition.cs index 1e55feb338..852230485b 100644 --- a/Content.Shared/EntityTable/Conditions/MaxRuleOccurenceCondition.cs +++ b/Content.Shared/EntityTable/Conditions/MaxRuleOccurenceCondition.cs @@ -1,4 +1,3 @@ -using System.Linq; using Content.Shared.EntityTable.EntitySelectors; using Content.Shared.GameTicking; using Robust.Shared.Prototypes; @@ -47,8 +46,8 @@ public sealed partial class MaxRuleOccurenceCondition : EntityTableCondition if (rule == string.Empty) return false; - var gameTicker = entMan.System(); + var gameTicker = entMan.System(); - return gameTicker.AllPreviousGameRules.Count(p => p.Item2 == rule) < Max; + return gameTicker.GetOccurrences(rule) < Max; } } diff --git a/Content.Shared/EntityTable/Conditions/ReoccurrenceDelayCondition.cs b/Content.Shared/EntityTable/Conditions/ReoccurrenceDelayCondition.cs index 0329592a4a..3edfdca35f 100644 --- a/Content.Shared/EntityTable/Conditions/ReoccurrenceDelayCondition.cs +++ b/Content.Shared/EntityTable/Conditions/ReoccurrenceDelayCondition.cs @@ -41,9 +41,7 @@ public sealed partial class ReoccurrenceDelayCondition : EntityTableCondition if (rule == string.Empty) return false; - var gameTicker = entMan.System(); - - return gameTicker.AllPreviousGameRules.Any( - p => p.Item2 == rule && p.Item1 + Delay <= gameTicker.RoundDuration()); + var gameTicker = entMan.System(); + return gameTicker.GetLastRuleTime(rule) + Delay <= gameTicker.RoundDuration(); } } diff --git a/Content.Shared/EntityTable/Conditions/RoundDurationCondition.cs b/Content.Shared/EntityTable/Conditions/RoundDurationCondition.cs index 518faf4bc6..f95696c577 100644 --- a/Content.Shared/EntityTable/Conditions/RoundDurationCondition.cs +++ b/Content.Shared/EntityTable/Conditions/RoundDurationCondition.cs @@ -26,7 +26,7 @@ public sealed partial class RoundDurationCondition : EntityTableCondition IPrototypeManager proto, EntityTableContext ctx) { - var gameTicker = entMan.System(); + var gameTicker = entMan.System(); var duration = gameTicker.RoundDuration(); return duration >= Min && duration <= Max; diff --git a/Content.Shared/GameTicking/Components/ActiveGameRuleComponent.cs b/Content.Shared/GameTicking/Components/ActiveGameRuleComponent.cs index 51bdd1c037..6b535465d0 100644 --- a/Content.Shared/GameTicking/Components/ActiveGameRuleComponent.cs +++ b/Content.Shared/GameTicking/Components/ActiveGameRuleComponent.cs @@ -2,7 +2,6 @@ /// /// Added to game rules before and removed before . -/// Mutually exclusive with . /// [RegisterComponent] public sealed partial class ActiveGameRuleComponent : Component; diff --git a/Content.Shared/GameTicking/Components/EndedGameRuleComponent.cs b/Content.Shared/GameTicking/Components/EndedGameRuleComponent.cs deleted file mode 100644 index 5e209ed78a..0000000000 --- a/Content.Shared/GameTicking/Components/EndedGameRuleComponent.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Content.Shared.GameTicking.Components; - -/// -/// Added to game rules before . -/// Mutually exclusive with . -/// -[RegisterComponent] -public sealed partial class EndedGameRuleComponent : Component; diff --git a/Content.Shared/GameTicking/Components/GameRuleComponent.cs b/Content.Shared/GameTicking/Components/GameRuleComponent.cs index 87a5822d47..bc36c95aa0 100644 --- a/Content.Shared/GameTicking/Components/GameRuleComponent.cs +++ b/Content.Shared/GameTicking/Components/GameRuleComponent.cs @@ -30,6 +30,13 @@ public sealed partial class GameRuleComponent : Component [DataField] public bool CancelPresetOnTooFewPlayers = true; + /// + /// Marks a gamerule as "Silent" meaning that it will run and then proceed to delete itself without logging. + /// This WILL throw a debug assert if it still exists when it's supposed to start! + /// + [DataField] + public bool Silent; + /// /// A delay for when the rule the is started and when the starting logic actually runs. /// @@ -42,18 +49,110 @@ public sealed partial class GameRuleComponent : Component /// Good for announcing station events and other such things. /// [ByRefEvent] -public readonly record struct GameRuleAddedEvent(EntityUid RuleEntity, string RuleId); +public readonly record struct GameRuleAddedEvent(Entity Rule); /// /// Raised when the rule actually begins. /// Player-facing logic should begin here. /// [ByRefEvent] -public readonly record struct GameRuleStartedEvent(EntityUid RuleEntity, string RuleId); +public readonly record struct GameRuleStartedEvent(Entity Rule, EntProtoId? RuleId); /// /// Raised when the rule ends. /// Do cleanup and other such things here. /// [ByRefEvent] -public readonly record struct GameRuleEndedEvent(EntityUid RuleEntity, string RuleId); +public readonly record struct GameRuleEndedEvent(EntityUid Rule); + +/// +/// A simple struct to keep track of the Lifespan of a Gamerule in an organized fashion. +/// +/// Time that this game rule was added, or started +/// EntityUid of the game rule +/// Current lifetime of the game rule. +[Access(typeof(GameTicker))] +public record struct GameRule(TimeSpan StartTime, EntityUid Uid, GameRuleLifeStage LifeStage = GameRuleLifeStage.Added) : IComparable, IComparable +{ + /// + /// The time that this rule has started, or was added if it hasn't started yet! + /// + public TimeSpan StartTime { get; private set; } = StartTime; + + /// + /// EntityUid for this GameRule, it's cheaper memory wise to store an int over the whole ass ProtoId, which is available through MetaDataComp lookup... + /// + public readonly EntityUid Uid = Uid; + + /// + /// The time that this rule has started, or was added if it hasn't started yet! + /// + public GameRuleLifeStage LifeStage { get; private set; } = LifeStage; + + /// + /// Marks that this GameRule has been started. + /// + /// Timespan which we started the rule. + /// True if the game rule successfully started, false if was already started or ended. + public bool StartRule(TimeSpan time) + { + if (LifeStage > GameRuleLifeStage.Added) + return false; + + LifeStage = GameRuleLifeStage.Started; + StartTime = time; + return true; + } + + /// + /// Marks that this GameRule has ended. + /// + public bool EndRule() + { + if (LifeStage == GameRuleLifeStage.Ended) + return false; + + LifeStage = GameRuleLifeStage.Ended; + return true; + } + + public int CompareTo(GameRule other) + { + return CompareTo(other.LifeStage); + } + + public int CompareTo(GameRuleLifeStage other) + { + return LifeStage.CompareTo(other); + } + + public static implicit operator GameRule((TimeSpan Time, EntityUid Rule) tuple) + { + return new GameRule(tuple.Time, tuple.Rule); + } + + public static implicit operator GameRule((TimeSpan Time, EntityUid Rule, GameRuleLifeStage Stage) tuple) + { + return new GameRule(tuple.Time, tuple.Rule, tuple.Stage); + } + + public readonly void Deconstruct(out TimeSpan time, out EntityUid rule) + { + time = StartTime; + rule = Uid; + } + + public readonly void Deconstruct(out TimeSpan time, out EntityUid rule, out GameRuleLifeStage stage) + { + time = StartTime; + rule = Uid; + stage = LifeStage; + } +} + +public enum GameRuleLifeStage : byte +{ + Added = 0, + Started = 1, + Ended = 2, +} diff --git a/Content.Server/GameTicking/Events/RoundStartingEvent.cs b/Content.Shared/GameTicking/Events/RoundStartingEvent.cs similarity index 85% rename from Content.Server/GameTicking/Events/RoundStartingEvent.cs rename to Content.Shared/GameTicking/Events/RoundStartingEvent.cs index cc3ada337b..a3a81bd263 100644 --- a/Content.Server/GameTicking/Events/RoundStartingEvent.cs +++ b/Content.Shared/GameTicking/Events/RoundStartingEvent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.GameTicking.Events; +namespace Content.Shared.GameTicking.Events; /// /// Raised at the start of , after round id has been incremented diff --git a/Content.Shared/GameTicking/GameTicker.CVars.cs b/Content.Shared/GameTicking/GameTicker.CVars.cs new file mode 100644 index 0000000000..61e2048b2d --- /dev/null +++ b/Content.Shared/GameTicking/GameTicker.CVars.cs @@ -0,0 +1,11 @@ +using Content.Shared.CCVar; + +namespace Content.Shared.GameTicking; + +public abstract partial class GameTicker +{ + protected virtual void InitializeCVars() + { + Subs.CVar(Cfg, CCVars.GameTickerIgnoredPresets, value => _ignoredRules = value.Split(",")); + } +} diff --git a/Content.Shared/GameTicking/GameTicker.Chat.cs b/Content.Shared/GameTicking/GameTicker.Chat.cs new file mode 100644 index 0000000000..7d2c3d83d0 --- /dev/null +++ b/Content.Shared/GameTicking/GameTicker.Chat.cs @@ -0,0 +1,57 @@ +using Content.Shared.Station.Components; +using JetBrains.Annotations; +using Robust.Shared.Audio; +using Robust.Shared.Map; + +namespace Content.Shared.GameTicking; + +public abstract partial class GameTicker +{ + /// + /// Dispatches an announcement to all players in game, aka not in the lobby. + /// + /// LocId of the announcement we're sending. + /// Sound that plays with the announcement. + /// Optional color override for the announcement. + [PublicAPI] + public virtual void GameAnnouncement(LocId announcement, SoundSpecifier? announcementSound = null, Color? color = null) { } + + /// + /// Dispatches an announcement to all players on a given map. + /// + /// Map we are dispatching the announcement to. + /// LocId of the announcement we're sending. + /// Sound that plays with the announcement. + /// Optional color override for the announcement. + [PublicAPI] + public virtual void MapAnnouncement(MapId map, LocId announcement, SoundSpecifier? announcementSound = null, Color? color = null) { } + + /// + /// Dispatches an announcement to all players on the same map as the given station. + /// + /// Station m + /// LocId of the announcement we're sending. + /// Sound that plays with the announcement. + /// Optional color override for the announcement. + [PublicAPI] + public virtual void StationMapAnnouncement(Entity station, LocId announcement, SoundSpecifier? announcementSound = null, Color? color = null) { } + + /// + /// Dispatches an announcement to all players on all station grids. + /// + /// LocId of the announcement we're sending. + /// Sound that plays with the announcement. + /// Optional color override for the announcement. + [PublicAPI] + public virtual void StationAnnouncement(LocId announcement, SoundSpecifier? announcementSound = null, Color? color = null) { } + + /// + /// Dispatches an announcement to all players on a given station. + /// + /// Station we are dispatching the announcement to. + /// LocId of the announcement we're sending. + /// Sound that plays with the announcement. + /// Optional color override for the announcement. + [PublicAPI] + public virtual void StationAnnouncement(EntityUid station, LocId announcement, SoundSpecifier? announcementSound = null, Color? color = null) { } +} diff --git a/Content.Shared/GameTicking/GameTicker.GamePreset.cs b/Content.Shared/GameTicking/GameTicker.GamePreset.cs new file mode 100644 index 0000000000..b13f4736c6 --- /dev/null +++ b/Content.Shared/GameTicking/GameTicker.GamePreset.cs @@ -0,0 +1,44 @@ +using Content.Shared.GameTicking.Prototypes; +using Content.Shared.GameTicking.Components; +using JetBrains.Annotations; +using Robust.Shared.Prototypes; + +namespace Content.Shared.GameTicking; + +public abstract partial class GameTicker +{ + + /// + [PublicAPI] + public int GetMinimumPlayerCount(ProtoId proto) + { + if (!ProtoMan.Resolve(proto, out var preset)) + return 0; + + return GetMinimumPlayerCount(preset); + } + + /// + /// Gets the minimum number of players required for a game preset to start. + /// Checks both the preset itself, and all rules to find the minimum. + /// + /// Game preset prototype we're checking. + /// Minimum number of players required for the rule to start. + [PublicAPI] + public int GetMinimumPlayerCount(GamePresetPrototype proto) + { + var min = proto.MinPlayers ?? 0; + foreach (var entProto in proto.Rules) + { + if (!ProtoMan.Resolve(entProto, out var ent)) + continue; + + if (!ent.TryComp(out var rule, Factory)) + continue; + + min = Math.Max(min, rule.MinPlayers); + } + + return min; + } +} diff --git a/Content.Shared/GameTicking/GameTicker.GameRule.cs b/Content.Shared/GameTicking/GameTicker.GameRule.cs new file mode 100644 index 0000000000..237f22c1f5 --- /dev/null +++ b/Content.Shared/GameTicking/GameTicker.GameRule.cs @@ -0,0 +1,589 @@ +using System.Diagnostics.CodeAnalysis; +using Content.Shared.CCVar; +using Content.Shared.Database; +using Content.Shared.GameTicking.Components; +using Content.Shared.Whitelist; +using JetBrains.Annotations; +using Robust.Shared.Map; +using Robust.Shared.Prototypes; + +namespace Content.Shared.GameTicking; + +public abstract partial class GameTicker +{ + /// + /// Designated game rule that spawns a fake antagonist to discourage metagaming. + /// Has to be a string since cannot be a const. + /// + public const string DummyGameRule = "DummyNonAntag"; + + /// + /// List of ignored game rules, these rules won't be spawned by normal means. + /// This list is populated by + /// + [ViewVariables] private string[] _ignoredRules = []; + + [ViewVariables] protected readonly List AllRoundGameRules = []; + + [SubscribeLocalEvent] + private void OnGameRuleAdded(Entity rule, ref MapInitEvent args) + { + // Cache it first in case the game rule is ended due to a fail state being reached! + if (!rule.Comp.Silent && _net.IsServer) + AllRoundGameRules.Add((GetRoundTime(), rule)); + + var ev = new GameRuleAddedEvent(rule); + RaiseLocalEvent(rule, ref ev, true); + } + + [SubscribeLocalEvent] + private void OnGameRuleStarted(Entity rule, ref MapInitEvent args) + { + var ruleComp = RuleQuery.Comp(rule); + Log.Info($"Started game rule {ToPrettyString(rule)}"); + Admin.Add(LogType.EventStarted, $"Started game rule {ToPrettyString(rule)}"); + + if (!ruleComp.Silent) + StartRuleCache(rule); + + var ev = new GameRuleStartedEvent((rule, ruleComp), MetaData(rule).EntityPrototype?.ID); + RaiseLocalEvent(rule, ref ev, true); + + // If the game rule isn't cached, then it shouldn't be running past start! + if (ruleComp.Silent) + EndGameRule((rule, ruleComp)); + } + + [SubscribeLocalEvent] + private void OnGameRuleEnded(Entity rule, ref ComponentShutdown args) + { + RemComp(rule); + var ev = new GameRuleEndedEvent(rule); + RaiseLocalEvent(rule, ref ev, true); + + if (!rule.Comp.Silent) + EndRuleCache(rule); + } + + /// + /// Tries to add a gamerule to the current round, but ignores any + /// + /// Game rule entity that we are trying to spawn + /// Forces the game rule to spawn regardless of if it's ignored or not + /// The entityUid of the spawned game rule, if it wasn't ignored. + public Entity? AddGameRule([ForbidLiteral] EntProtoId gameRule, bool force = false) + { + if (!force && IsIgnored(gameRule)) + return null; + + return SpawnGameRule(gameRule); + } + + /// + /// Checks if this GameRule should be ignored before a spawning attempt. + /// + /// GameRule we are trying to validate + /// True if the gamerule should be ignored and not spawned. + public bool IsIgnored([ForbidLiteral] EntProtoId gameRule) + { + return _ignoredRules.Contains(gameRule); + } + + /// + /// Spawns a GameRule in nullspace! Protected since it ignores the rule blacklist! + /// + /// Name of the game rule we're spawning + /// EntityUid of the rule we spawned. + protected virtual Entity SpawnGameRule(EntProtoId ruleId) + { + var rule = Spawn(ruleId, MapCoordinates.Nullspace); + FlagPredicted(rule); + var meta = MetaData(rule); + Log.Info($"Added game rule {ToPrettyString((rule, meta))}"); + Admin.Add(LogType.EventStarted, $"Added game rule {ToPrettyString((rule, meta))}"); + + // This should probably be a bool on the GameRuleComponent... + if (RuleQuery.TryComp(rule, out var ruleComp)) + return (rule, ruleComp); + + Log.Error($"Entity {ToPrettyString((rule, meta))} lacked a {nameof(GameRuleComponent)}!"); + ruleComp = AddComp(rule); + return (rule, ruleComp); + } + + /// + /// Game rules can be 'started' separately from being added. 'Starting' them usually + /// happens at round start while they can be added and removed before then. + /// + [PublicAPI] + public bool StartGameRule([ForbidLiteral] EntProtoId ruleId) + { + return StartGameRule(ruleId, out _); + } + + /// + /// Game rules can be 'started' separately from being added. 'Starting' them usually + /// happens at round start while they can be added and removed before then. + /// + [PublicAPI] + public bool StartGameRule([ForbidLiteral] EntProtoId ruleId, [NotNullWhen(true)] out Entity? ruleEntity) + { + ruleEntity = AddGameRule(ruleId); + return ruleEntity != null && StartGameRule(ruleEntity.Value.AsNullable()); // Worst shit I've ever seen in C# + } + + /// + /// Game rules can be 'started' separately from being added. 'Starting' them usually + /// happens at round start while they can be added and removed before then. + /// + [PublicAPI] + public bool StartGameRule(Entity rule) + { + // Game rule has already ended itself, or this was never a game rule... + if (!RuleQuery.Resolve(rule, ref rule.Comp, false)) + return false; + + // can't start an already active rule + if (ActiveRuleQuery.HasComp(rule)) + return false; + + // TODO: Don't want to refactor this now, but this seems unnecessary and like it's hiding bugs... + // If this rule has a delay, check if the delay was already applied. If it was, then start the rule now. + if (rule.Comp.Delay == null || RemComp(rule)) + { + AddComp(rule); + rule.Comp.ActivatedAt = Timing.CurTime; + return true; + } + + var delayTime = TimeSpan.FromSeconds(rule.Comp.Delay.Value.Next(Random)); + + if (delayTime <= TimeSpan.Zero) + return true; + + Log.Info($"Queued start for game rule {ToPrettyString(rule)} with delay {delayTime}"); + Admin.Add(LogType.EventStarted, + $"Queued start for game rule {ToPrettyString(rule)} with delay {delayTime}"); + + var delayed = EnsureComp(rule); + delayed.RuleStartTime = Timing.CurTime + (delayTime); + return true; + } + + private void StartRuleCache(EntityUid uid) + { + if (_net.IsClient) + return; + + // Very likely to be a recently added rule, so we start from the top! + for (var i = AllRoundGameRules.Count - 1; i >= 0; i--) + { + var rule = AllRoundGameRules[i]; + if (rule.Uid != uid) + continue; + + if (!rule.StartRule(GetRoundTime())) + Log.Error($"Rule {ToPrettyString(uid)} tried to be started, but was already started!"); + + AllRoundGameRules[i] = rule; + return; + } + + Log.Error($"Rule {ToPrettyString(uid)} was started but had not been added yet somehow!"); + AllRoundGameRules.Add((GetRoundTime(), uid, GameRuleLifeStage.Started)); + } + + private void EndRuleCache(EntityUid uid) + { + if (_net.IsClient) + return; + + // Very likely to be a recently added rule, so we start from the top! + for (var i = AllRoundGameRules.Count - 1; i >= 0; i--) + { + var rule = AllRoundGameRules[i]; + if (rule.Uid != uid) + continue; + + if (!rule.EndRule()) + Log.Error($"Rule {ToPrettyString(uid)} tried to be ended, but was already ended!"); + + AllRoundGameRules[i] = rule; + return; + } + + // We don't log an error here because it's possible a game rule was added before MapInit, and then removed. + // Removals of game rules in this scenario should already throw errors elsewhere, logging here just fails tests. + } + + /// + /// Ends a game rule. + /// + [PublicAPI] + public bool EndGameRule(Entity rule) + { + // Don't log missing because we could've already ended the rule. + // TODO: Maybe do log missing to ensure we only ever try to end a rule once? + if (!Resolve(rule, ref rule.Comp, false)) + return false; + + RemComp(rule, rule.Comp); + + Log.Info($"Ended game rule {ToPrettyString(rule)}"); + Admin.Add(LogType.EventStopped, $"Ended game rule {ToPrettyString(rule)}"); + return true; + } + + /// + /// Returns true if a game rule with the given component has been added. + /// + [PublicAPI] + public bool IsGameRuleAdded() + where T : IComponent + { + var query = EntityQueryEnumerator(); + return query.MoveNext(out _, out _, out _); + } + + /// + /// Returns if a game rule entity has been added yet. + /// + /// Game Rule entity + /// True if the rule has been added, and has not ended yet. + [PublicAPI] + public bool IsGameRuleAdded(Entity rule) + { + return Resolve(rule, ref rule.Comp); + } + + /// + /// Checks if a game rule of a specific prototype has been added yet. + /// + /// Rule prototype we're checking for + /// True if a game rule exists with this prototype, that has not ended yet. + [PublicAPI] + [Obsolete($"Use generic {nameof(IsGameRuleAdded)} instead.")] + public bool IsGameRuleAdded([ForbidLiteral] string rule) + { + foreach (var ruleEntity in GetAddedGameRules()) + { + if (MetaData(ruleEntity).EntityPrototype?.ID == rule) + return true; + } + + return false; + } + + /// + /// Returns true if a game rule that passes the whitelist and blacklist has been added. + /// + /// whitelist for the game rules + /// blacklist for the game rules + [PublicAPI] + public bool IsGameRuleAdded(EntityWhitelist? ruleWhitelist, EntityWhitelist? ruleBlacklist = null) + { + foreach (var ruleEntity in GetAddedGameRules()) + { + if (Whitelist.CheckBoth(ruleEntity, ruleBlacklist, ruleWhitelist)) + return true; + } + + return false; + } + + /// + /// Returns true if a game rule with the given component is active.. + /// + [PublicAPI] + public bool IsGameRuleActive() + where T : IComponent + { + var query = EntityQueryEnumerator(); + // out, damned underscore!!! + while (query.MoveNext(out _, out _, out _, out _)) + { + return true; + } + + return false; + } + + /// + /// Checks if a game rule entity has been added, and has been started. + /// + /// Entity we are checking. + /// True if the game rule has been added, and has been started. + [PublicAPI] + public bool IsGameRuleActive(Entity entity) + { + return Resolve(entity, ref entity.Comp) && ActiveRuleQuery.HasComp(entity); + } + + /// + /// Checks if a game rule with a given prototype has been added, and has been started. + /// + /// Prototype we are looking for. + /// True if the game rule has been added, and has been started. + [PublicAPI] + [Obsolete($"Use generic {nameof(IsGameRuleActive)} instead.")] + public bool IsGameRuleActive([ForbidLiteral] string rule) + { + foreach (var ruleEntity in GetActiveGameRules()) + { + if (MetaData(ruleEntity).EntityPrototype?.ID == rule) + return true; + } + + return false; + } + + /// + /// Returns true if a game rule that passes the whitelist and blacklist is active. + /// + /// whitelist for the game rules + /// blacklist for the game rules + [PublicAPI] + public bool IsGameRuleActive(EntityWhitelist? ruleWhitelist, EntityWhitelist? ruleBlacklist = null) + { + foreach (var ruleEntity in GetActiveGameRules()) + { + if (Whitelist.CheckBoth(ruleEntity, ruleBlacklist, ruleWhitelist)) + return true; + } + + return false; + } + + + /// + /// Gets all the game rule entities that have been added. + /// + [PublicAPI] + public IEnumerable GetAddedGameRules() + { + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var ruleData)) + { + if (IsGameRuleAdded((uid, ruleData))) + yield return uid; + } + } + + /// + /// Gets all the game rule entities which have not ended and match the given prototype. + /// + [PublicAPI] + public IEnumerable GetAddedGameRules(EntProtoId stationEvent) + { + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var ruleData, out var meta)) + { + if (IsGameRuleAdded((uid, ruleData)) && meta.EntityPrototype is { } id && id == stationEvent) + yield return uid; + } + } + + /// + /// Gets all the gamerule entities with {T} component that have been added. + /// + [PublicAPI] + public IEnumerable> GetAddedGameRules() where T : Component + { + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var comp, out var ruleData)) + { + if (IsGameRuleAdded((uid, ruleData))) + yield return (uid, comp); + } + } + + /// + /// Gets all the game rule entities with {T} which have not ended and match the given prototype. + /// + [PublicAPI] + public IEnumerable> GetAddedGameRules(EntProtoId stationEvent) where T : Component + { + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var comp, out var ruleData, out var meta)) + { + if (IsGameRuleAdded((uid, ruleData)) && meta.EntityPrototype is { } id && id == stationEvent) + yield return (uid, comp); + } + } + + /// + /// Gets all the gamerule entities which are currently active. + /// + [PublicAPI] + public IEnumerable GetActiveGameRules() + { + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out _, out _)) + { + yield return uid; + } + } + + /// + /// Gets all the game rule entities which are currently active and match the given prototype. + /// + [PublicAPI] + public IEnumerable GetActiveGameRules(EntProtoId stationEvent) + { + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out _, out _, out var meta)) + { + if (meta.EntityPrototype is { } id && id == stationEvent) + yield return uid; + } + } + + /// + /// Gets all the gamerule entities with {T} component that are currently active. + /// + [PublicAPI] + public IEnumerable> GetActiveGameRules() where T : Component + { + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var comp, out _, out _)) + { + yield return (uid, comp); + } + } + + /// + /// Gets all the game rule entities with {T} component that are currently active and have the given prototype. + /// + [PublicAPI] + public IEnumerable> GetActiveGameRules(EntProtoId stationEvent) where T : Component + { + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var comp, out _, out _, out var meta)) + { + if (meta.EntityPrototype is { } id && id == stationEvent) + yield return (uid, comp); + } + } + + /// + /// Gets all gamerule prototypes + /// + [PublicAPI] + public IEnumerable GetAllGameRulePrototypes() + { + foreach (var proto in ProtoMan.EnumeratePrototypes()) + { + if (proto.Abstract) + continue; + + if (HasComp(proto)) + yield return proto; + } + } + + + [PublicAPI] + public int GetOccurrences(EntityPrototype stationEvent) + { + return GetOccurrences(stationEvent.ID); + } + + /// + /// Gets the total number of game rule entities which match the inputted prototype! + /// + /// Event prototype we are looking for. + /// Number of already existing events which match this prototype. + [PublicAPI] + public int GetOccurrences(EntProtoId stationEvent) + { + var count = 0; + var ruleQuery = EntityQueryEnumerator(); + while (ruleQuery.MoveNext(out _, out var meta)) + { + if (meta.EntityPrototype is { } id && id == stationEvent) + count++; + } + + return count; + } + + /// + /// Gets the last added game rule or null if there are no game rules! + /// + [PublicAPI] + public GameRule? GetLastGameRule() + { + if (AllRoundGameRules.Count == 0) + return null; + + return AllRoundGameRules[^1]; + } + + /// + /// Gets the last added game rule or null if there are no game rules! + /// + [PublicAPI] + public TimeSpan GetLastRuleTime() + { + return GetLastGameRule() is not { } rule ? TimeSpan.Zero : rule.StartTime; + } + + /// + /// Gets the last added game rule or null if there are no game rules! + /// + [PublicAPI] + public GameRule? GetLastGameRule(EntProtoId proto) + { + for (var i = AllRoundGameRules.Count - 1; i >= 0; i--) + { + var rule = AllRoundGameRules[i]; + if (Deleted(rule.Uid) || MetaData(rule.Uid).EntityPrototype is not { } id || id != proto) + continue; + + return rule; + } + + return null; + } + + /// + /// Gets the last added game rule or null if there are no game rules! + /// + [PublicAPI] + public TimeSpan GetLastRuleTime(EntProtoId proto) + { + return GetLastGameRule(proto) is not { } rule ? TimeSpan.Zero : rule.StartTime; + } + + /// + /// Returns a readable string for this Game Rule. + /// + /// GameRule struct we're searching for. + /// A readable string representing this gamerule and its status. + [PublicAPI] + public string RuleToString(GameRule rule) + { + return RuleToString(rule.Uid, rule.LifeStage); + } + + /// + [PublicAPI] + public string RuleToString(EntityUid rule, GameRuleLifeStage stage) + { + if (!TryComp(rule, out MetaDataComponent? meta)) + return "Deleted Rule"; + + var str = $"{meta.EntityPrototype?.ID ?? "Unknown Rule"} ({rule.Id})"; + switch (stage) + { + case GameRuleLifeStage.Added: + str += " - Pending"; + break; + case GameRuleLifeStage.Ended: + str += " - Ended"; + break; + } + + return str; + } +} diff --git a/Content.Shared/GameTicking/GameTicker.Lobby.cs b/Content.Shared/GameTicking/GameTicker.Lobby.cs new file mode 100644 index 0000000000..af4f6e14ba --- /dev/null +++ b/Content.Shared/GameTicking/GameTicker.Lobby.cs @@ -0,0 +1,16 @@ +using Robust.Shared.Network; +using Robust.Shared.Player; + +namespace Content.Shared.GameTicking; + +public abstract partial class GameTicker +{ + public bool UserHasJoinedGame(ICommonSession session) => UserHasJoinedGame(session.UserId); + + /// + /// Returns if a given session has currently joined the game. + /// + /// User + /// Returns true if the player has joined the game. Only can return true on server! + public virtual bool UserHasJoinedGame(NetUserId userId) => false; +} diff --git a/Content.Shared/GameTicking/GameTicker.Player.cs b/Content.Shared/GameTicking/GameTicker.Player.cs new file mode 100644 index 0000000000..ef00e7092c --- /dev/null +++ b/Content.Shared/GameTicking/GameTicker.Player.cs @@ -0,0 +1,8 @@ +using Robust.Shared.Player; + +namespace Content.Shared.GameTicking; + +public abstract partial class GameTicker +{ + public abstract void PlayerJoinGame(ICommonSession session, bool silent = false); +} diff --git a/Content.Shared/GameTicking/GameTicker.RoundFlow.cs b/Content.Shared/GameTicking/GameTicker.RoundFlow.cs new file mode 100644 index 0000000000..9796196597 --- /dev/null +++ b/Content.Shared/GameTicking/GameTicker.RoundFlow.cs @@ -0,0 +1,169 @@ +using System.Numerics; +using Content.Shared.Maps; +using Content.Shared.Preferences; +using Robust.Shared.EntitySerialization; +using Robust.Shared.EntitySerialization.Systems; +using Robust.Shared.Map; +using Robust.Shared.Network; +using Robust.Shared.Player; + +namespace Content.Shared.GameTicking; + +public abstract partial class GameTicker +{ + /// + /// Game's current run level. + /// + [ViewVariables] + public GameRunLevel RunLevel + { + get; + protected set + { + var old = field; + field = value; + + var gameRunLevelChangedEvent = new GameRunLevelChangedEvent(old, value); + RaiseLocalEvent(gameRunLevelChangedEvent); + } + } + + /// + /// Ends the current round, with custom end of round text. + /// + /// Text displayed at the end of round scoreboard. + public virtual void EndRound(string text = "") { } + + /// + /// Restarts the current round, sending the game to the lobby or starting a new round if lobby is disabled. + /// + public virtual void RestartRound() { } + + /// + /// Loads a new map, allowing systems interested in it to handle loading events. + /// In the base game, this is required to be used if you want to load a station. + /// This does not initialze maps, unles specified via the . + /// + /// + /// This is basically a wrapper around a method that auto generate + /// some using information in a prototype, and raise some events to allow content + /// to modify the options and react to the map creation. + /// + /// Game map prototype to load in. + /// The id of the map that was loaded. + /// Entity loading options, including whether the maps should be initialized. + /// Name to assign to the loaded station. + /// Coordinate offset for spawning grids within this map + /// Rotation offset for spawning grids within this map + /// All loaded entities and grids. + public abstract IReadOnlyList LoadGameMap( + GameMapPrototype proto, + out MapId mapId, + DeserializationOptions? options = null, + string? stationName = null, + Vector2? offset = null, + Angle? rot = null); + + /// + /// Gets the current round duration, returning zero if the round has not started. + /// + public TimeSpan GetRoundTime() + { + return RunLevel == GameRunLevel.PreRoundLobby ? TimeSpan.Zero : RoundDuration(); + } + + /// + /// Gets the current number of readied up players. + /// + public abstract int ReadyPlayerCount(); +} + +public enum GameRunLevel +{ + PreRoundLobby = 0, + InRound = 1, + PostRound = 2 +} + +public sealed class GameRunLevelChangedEvent +{ + public GameRunLevel Old { get; } + public GameRunLevel New { get; } + + public GameRunLevelChangedEvent(GameRunLevel old, GameRunLevel @new) + { + Old = old; + New = @new; + } +} + +/// +/// Event raised to allow subscribers to add text to the round end summary screen. +/// +[ByRefEvent] +public record struct RoundEndTextAppendEvent +{ + private bool _doNewLine; + + public RoundEndTextAppendEvent() { } + + /// + /// Text to display in the round end summary screen. + /// + public string Text { get; private set; } = string.Empty; + + /// + /// Invoke this method to add text to the round end summary screen. + /// + /// + public void AddLine(string text) + { + if (_doNewLine) + Text += "\n"; + + Text += text; + _doNewLine = true; + } +} + +/// +/// Event raised before readied up players are spawned and given jobs by the GameTicker. +/// You can use this to spawn people off-station, like in the case of nuke ops or wizard. +/// Remove the players you spawned from the PlayerPool and call on them. +/// +public sealed class RulePlayerSpawningEvent +{ + /// + /// Pool of players to be spawned. + /// If you want to handle a specific player being spawned, remove it from this list and do what you need. + /// + /// If you spawn a player by yourself from this event, don't forget to call on them. + public List PlayerPool { get; } + public IReadOnlyDictionary Profiles { get; } + public bool Forced { get; } + + public RulePlayerSpawningEvent(List playerPool, IReadOnlyDictionary profiles, bool forced) + { + PlayerPool = playerPool; + Profiles = profiles; + Forced = forced; + } +} + +/// +/// Event raised after players were assigned jobs by the GameTicker and have been spawned in. +/// You can give on-station people special roles by listening to this event. +/// +public sealed class RulePlayerJobsAssignedEvent +{ + public ICommonSession[] Players { get; } + public IReadOnlyDictionary Profiles { get; } + public bool Forced { get; } + + public RulePlayerJobsAssignedEvent(ICommonSession[] players, IReadOnlyDictionary profiles, bool forced) + { + Players = players; + Profiles = profiles; + Forced = forced; + } +} diff --git a/Content.Shared/GameTicking/GameTicker.Spawning.cs b/Content.Shared/GameTicking/GameTicker.Spawning.cs new file mode 100644 index 0000000000..258fbacb60 --- /dev/null +++ b/Content.Shared/GameTicking/GameTicker.Spawning.cs @@ -0,0 +1,15 @@ +using Robust.Shared.Player; + +namespace Content.Shared.GameTicking; + +public abstract partial class GameTicker +{ + /// + /// Makes a player join into the game and spawn on a station. + /// + /// The player joining + /// The station they're spawning on + /// An optional job for them to spawn as + /// Whether or not the player should be greeted upon joining + public virtual void MakeJoinGame(ICommonSession player, EntityUid station, string? jobId = null, bool silent = false) { } +} diff --git a/Content.Shared/GameTicking/GameTicker.cs b/Content.Shared/GameTicking/GameTicker.cs new file mode 100644 index 0000000000..36675a5437 --- /dev/null +++ b/Content.Shared/GameTicking/GameTicker.cs @@ -0,0 +1,258 @@ +using Content.Shared.Administration.Logs; +using Content.Shared.Chat; +using Content.Shared.GameTicking.Components; +using Content.Shared.GameTicking.Prototypes; +using Content.Shared.Mind; +using Content.Shared.Roles; +using Content.Shared.Station.Systems; +using Content.Shared.Whitelist; +using Robust.Shared.Audio; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Configuration; +using Robust.Shared.Network; +using Robust.Shared.Prototypes; +using Robust.Shared.Random; +using Robust.Shared.Replays; +using Robust.Shared.Serialization; +using Robust.Shared.Serialization.Markdown.Mapping; +using Robust.Shared.Serialization.Markdown.Value; +using Robust.Shared.Timing; + +namespace Content.Shared.GameTicking; + +public abstract partial class GameTicker : EntitySystem +{ + // Behold! My massive wall of dependencies!!! + [Dependency] protected IConfigurationManager Cfg = default!; + [Dependency] protected IGameTiming Timing = default!; + [Dependency] private INetManager _net = default!; + [Dependency] protected ISharedAdminLogManager Admin = default!; + [Dependency] protected IReplayRecordingManager Replay = default!; + [Dependency] protected IRobustRandom Random = default!; + [Dependency] protected EntityWhitelistSystem Whitelist = default!; + [Dependency] protected MetaDataSystem Meta = default!; + [Dependency] protected SharedAudioSystem Audio = default!; + [Dependency] protected SharedChatSystem Chat = default!; + [Dependency] protected SharedMapSystem Map = default!; + [Dependency] protected SharedMindSystem Mind = default!; + [Dependency] protected SharedRoleSystem Role = default!; + [Dependency] protected StationSystem Station = default!; + [Dependency] protected SharedTransformSystem XForm = default!; + + // A second wall of dependencies has hit the GameTicker... + [Dependency] protected EntityQuery RuleQuery; + [Dependency] protected EntityQuery ActiveRuleQuery; + + // See ideally these would be pulled from the job definition or something. + // But this is easier, and at least it isn't hardcoded. + //TODO: Move these, they really belong in StationJobsSystem or a cvar. + public static readonly ProtoId FallbackOverflowJob = "Passenger"; + + public const string FallbackOverflowJobName = "job-name-passenger"; + + // TODO network. + // Probably most useful for replays, round end info, and probably things like lobby menus. + [ViewVariables] + public int RoundId { get; protected set; } + [ViewVariables] public TimeSpan RoundStartTimeSpan { get; protected set; } + + public override void Initialize() + { + base.Initialize(); + Replay.RecordingStarted += OnRecordingStart; + } + + public override void Shutdown() + { + base.Shutdown(); + Replay.RecordingStarted -= OnRecordingStart; + } + + private void OnRecordingStart(MappingDataNode metadata, List events) + { + if (RoundId != 0) + { + metadata["roundId"] = new ValueDataNode(RoundId.ToString()); + } + } + + public TimeSpan RoundDuration() + { + return Timing.CurTime.Subtract(RoundStartTimeSpan); + } +} + +[Serializable, NetSerializable] +public sealed class TickerJoinLobbyEvent : EntityEventArgs +{ +} + +[Serializable, NetSerializable] +public sealed class TickerJoinGameEvent : EntityEventArgs +{ +} + +[Serializable, NetSerializable] +public sealed class TickerLateJoinStatusEvent : EntityEventArgs +{ + // TODO: Make this a replicated CVar, honestly. + public bool Disallowed { get; } + + public TickerLateJoinStatusEvent(bool disallowed) + { + Disallowed = disallowed; + } +} + +[Serializable, NetSerializable] +public sealed class TickerConnectionStatusEvent : EntityEventArgs +{ + public TimeSpan RoundStartTimeSpan { get; } + public TickerConnectionStatusEvent(TimeSpan roundStartTimeSpan) + { + RoundStartTimeSpan = roundStartTimeSpan; + } +} + +[Serializable, NetSerializable] +public sealed class TickerLobbyStatusEvent : EntityEventArgs +{ + public bool IsRoundStarted { get; } + public ProtoId? LobbyBackground { get; } + public bool YouAreReady { get; } + // UTC. + public TimeSpan StartTime { get; } + public TimeSpan RoundStartTimeSpan { get; } + public bool Paused { get; } + + public TickerLobbyStatusEvent(bool isRoundStarted, ProtoId? lobbyBackground, bool youAreReady, TimeSpan startTime, TimeSpan preloadTime, TimeSpan roundStartTimeSpan, bool paused) + { + IsRoundStarted = isRoundStarted; + LobbyBackground = lobbyBackground; + YouAreReady = youAreReady; + StartTime = startTime; + RoundStartTimeSpan = roundStartTimeSpan; + Paused = paused; + } +} + +[Serializable, NetSerializable] +public sealed class TickerLobbyInfoEvent : EntityEventArgs +{ + public string TextBlob { get; } + + public TickerLobbyInfoEvent(string textBlob) + { + TextBlob = textBlob; + } +} + +[Serializable, NetSerializable] +public sealed class TickerLobbyCountdownEvent : EntityEventArgs +{ + /// + /// The game time that the game will start at. + /// + public TimeSpan StartTime { get; } + + /// + /// Whether or not the countdown is paused + /// + public bool Paused { get; } + + public TickerLobbyCountdownEvent(TimeSpan startTime, bool paused) + { + StartTime = startTime; + Paused = paused; + } +} + +[Serializable, NetSerializable] +public sealed class TickerJobsAvailableEvent( + Dictionary stationNames, + Dictionary, int?>> jobsAvailableByStation, + Dictionary?> jobWeightsByStation) + : EntityEventArgs +{ + /// + /// The Status of the Player in the lobby (ready, observer, ...) + /// + public Dictionary, int?>> JobsAvailableByStation { get; } = jobsAvailableByStation; + + public Dictionary StationNames { get; } = stationNames; + + public Dictionary?> JobWeightsByStation { get; } = jobWeightsByStation; +} + +[Serializable, NetSerializable, DataDefinition] +public sealed partial class RoundEndMessageEvent : EntityEventArgs +{ + [Serializable, NetSerializable, DataDefinition] + public partial struct RoundEndPlayerInfo + { + [DataField] + public string PlayerOOCName; + + [DataField] + public string? PlayerICName; + + [DataField, NonSerialized] + public NetUserId? PlayerGuid; + + public string Role; + + [DataField, NonSerialized] + public string[] JobPrototypes; + + [DataField, NonSerialized] + public string[] AntagPrototypes; + + public NetEntity? PlayerNetEntity; + + [DataField] + public bool Antag; + + [DataField] + public bool Observer; + + public bool Connected; + } + + public string GamemodeTitle { get; } + public string RoundEndText { get; } + public TimeSpan RoundDuration { get; } + public int RoundId { get; } + public int PlayerCount { get; } + public RoundEndPlayerInfo[] AllPlayersEndInfo { get; } + + /// + /// Sound gets networked due to how entity lifecycle works between client / server and to avoid clipping. + /// + public ResolvedSoundSpecifier? RestartSound; + + public RoundEndMessageEvent( + string gamemodeTitle, + string roundEndText, + TimeSpan roundDuration, + int roundId, + int playerCount, + RoundEndPlayerInfo[] allPlayersEndInfo, + ResolvedSoundSpecifier? restartSound) + { + GamemodeTitle = gamemodeTitle; + RoundEndText = roundEndText; + RoundDuration = roundDuration; + RoundId = roundId; + PlayerCount = playerCount; + AllPlayersEndInfo = allPlayersEndInfo; + RestartSound = restartSound; + } +} + +[Serializable, NetSerializable] +public enum PlayerGameStatus : sbyte +{ + NotReadyToPlay = 0, + ReadyToPlay, + JoinedGame, +} diff --git a/Content.Shared/GameTicking/Prototypes/GamePresetPrototype.cs b/Content.Shared/GameTicking/Prototypes/GamePresetPrototype.cs new file mode 100644 index 0000000000..307abf2970 --- /dev/null +++ b/Content.Shared/GameTicking/Prototypes/GamePresetPrototype.cs @@ -0,0 +1,42 @@ +using Content.Shared.Maps; +using Robust.Shared.Prototypes; + +namespace Content.Shared.GameTicking.Prototypes; + +/// +/// A round-start setup preset, such as which antagonists to spawn. +/// +[Prototype] +public sealed partial class GamePresetPrototype : IPrototype +{ + [IdDataField] + public string ID { get; private set; } = default!; + + [DataField] + public string[] Alias = Array.Empty(); + + [DataField("name")] + public string ModeTitle = "????"; + + [DataField] + public string Description = string.Empty; + + [DataField] + public bool ShowInVote; + + [DataField] + public int? MinPlayers; + + [DataField] + public int? MaxPlayers; + + [DataField] + public IReadOnlyList Rules { get; private set; } = Array.Empty(); + + /// + /// If specified, the gamemode will only be run with these maps. + /// If none are elligible, the global fallback will be used. + /// + [DataField("supportedMaps")] + public ProtoId? MapPool; +} diff --git a/Content.Server/GameTicking/Rules/Components/ChangelingRuleComponent.cs b/Content.Shared/GameTicking/Rules/Components/ChangelingRuleComponent.cs similarity index 75% rename from Content.Server/GameTicking/Rules/Components/ChangelingRuleComponent.cs rename to Content.Shared/GameTicking/Rules/Components/ChangelingRuleComponent.cs index 13891c1988..dc60f0b534 100644 --- a/Content.Server/GameTicking/Rules/Components/ChangelingRuleComponent.cs +++ b/Content.Shared/GameTicking/Rules/Components/ChangelingRuleComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.GameTicking.Rules.Components; +namespace Content.Shared.GameTicking.Rules.Components; /// /// Gamerule component for handling a changeling antagonist. diff --git a/Content.Server/GameTicking/Rules/Components/DragonRuleComponent.cs b/Content.Shared/GameTicking/Rules/Components/DragonRuleComponent.cs similarity index 59% rename from Content.Server/GameTicking/Rules/Components/DragonRuleComponent.cs rename to Content.Shared/GameTicking/Rules/Components/DragonRuleComponent.cs index e3fab85f2d..a20107d401 100644 --- a/Content.Server/GameTicking/Rules/Components/DragonRuleComponent.cs +++ b/Content.Shared/GameTicking/Rules/Components/DragonRuleComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.GameTicking.Rules.Components; +namespace Content.Shared.GameTicking.Rules.Components; [RegisterComponent] public sealed partial class DragonRuleComponent : Component; diff --git a/Content.Shared/GameTicking/Rules/DynamicRuleComponent.cs b/Content.Shared/GameTicking/Rules/Components/DynamicRuleComponent.cs similarity index 97% rename from Content.Shared/GameTicking/Rules/DynamicRuleComponent.cs rename to Content.Shared/GameTicking/Rules/Components/DynamicRuleComponent.cs index 7782717758..b1d21e6082 100644 --- a/Content.Shared/GameTicking/Rules/DynamicRuleComponent.cs +++ b/Content.Shared/GameTicking/Rules/Components/DynamicRuleComponent.cs @@ -1,7 +1,7 @@ using Content.Shared.EntityTable.EntitySelectors; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; -namespace Content.Shared.GameTicking.Rules; +namespace Content.Shared.GameTicking.Rules.Components; /// /// Gamerule the spawns multiple antags at intervals based on a budget diff --git a/Content.Shared/GameTicking/Rules/DynamicRuleCostComponent.cs b/Content.Shared/GameTicking/Rules/Components/DynamicRuleCostComponent.cs similarity index 85% rename from Content.Shared/GameTicking/Rules/DynamicRuleCostComponent.cs rename to Content.Shared/GameTicking/Rules/Components/DynamicRuleCostComponent.cs index 180b168dc1..458334d862 100644 --- a/Content.Shared/GameTicking/Rules/DynamicRuleCostComponent.cs +++ b/Content.Shared/GameTicking/Rules/Components/DynamicRuleCostComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.GameTicking.Rules; +namespace Content.Shared.GameTicking.Rules.Components; /// /// Component that tracks how much a rule "costs" for Dynamic diff --git a/Content.Server/GameTicking/Rules/Components/NukeopsRuleComponent.cs b/Content.Shared/GameTicking/Rules/Components/NukeopsRuleComponent.cs similarity index 96% rename from Content.Server/GameTicking/Rules/Components/NukeopsRuleComponent.cs rename to Content.Shared/GameTicking/Rules/Components/NukeopsRuleComponent.cs index dc118e9bb7..037a17584d 100644 --- a/Content.Server/GameTicking/Rules/Components/NukeopsRuleComponent.cs +++ b/Content.Shared/GameTicking/Rules/Components/NukeopsRuleComponent.cs @@ -1,12 +1,10 @@ -using Content.Server.RoundEnd; -using Content.Shared.Dataset; using Content.Shared.NPC.Prototypes; -using Content.Shared.Roles; +using Content.Shared.RoundEnd; using Robust.Shared.Audio; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; -namespace Content.Server.GameTicking.Rules.Components; +namespace Content.Shared.GameTicking.Rules.Components; [RegisterComponent, Access(typeof(NukeopsRuleSystem))] public sealed partial class NukeopsRuleComponent : Component diff --git a/Content.Server/GameTicking/Rules/Components/ParadoxCloneRuleComponent.cs b/Content.Shared/GameTicking/Rules/Components/ParadoxCloneRuleComponent.cs similarity index 96% rename from Content.Server/GameTicking/Rules/Components/ParadoxCloneRuleComponent.cs rename to Content.Shared/GameTicking/Rules/Components/ParadoxCloneRuleComponent.cs index f1e8e41258..6856eb4cd4 100644 --- a/Content.Server/GameTicking/Rules/Components/ParadoxCloneRuleComponent.cs +++ b/Content.Shared/GameTicking/Rules/Components/ParadoxCloneRuleComponent.cs @@ -2,7 +2,7 @@ using Content.Shared.Cloning; using Content.Shared.Whitelist; using Robust.Shared.Prototypes; -namespace Content.Server.GameTicking.Rules.Components; +namespace Content.Shared.GameTicking.Rules.Components; /// /// Gamerule component for spawning a paradox clone antagonist. diff --git a/Content.Server/GameTicking/Rules/Components/RevolutionaryRuleComponent.cs b/Content.Shared/GameTicking/Rules/Components/RevolutionaryRuleComponent.cs similarity index 90% rename from Content.Server/GameTicking/Rules/Components/RevolutionaryRuleComponent.cs rename to Content.Shared/GameTicking/Rules/Components/RevolutionaryRuleComponent.cs index 3b19bbffb6..69b62183d1 100644 --- a/Content.Server/GameTicking/Rules/Components/RevolutionaryRuleComponent.cs +++ b/Content.Shared/GameTicking/Rules/Components/RevolutionaryRuleComponent.cs @@ -1,8 +1,6 @@ -using Content.Shared.Roles; -using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; -namespace Content.Server.GameTicking.Rules.Components; +namespace Content.Shared.GameTicking.Rules.Components; /// /// Component for the RevolutionaryRuleSystem that stores info about winning/losing, player counts required for starting, as well as prototypes for Revolutionaries and their gear. diff --git a/Content.Server/GameTicking/Rules/Components/RoundstartStationVariationRuleComponent.cs b/Content.Shared/GameTicking/Rules/Components/RoundstartStationVariationRuleComponent.cs similarity index 87% rename from Content.Server/GameTicking/Rules/Components/RoundstartStationVariationRuleComponent.cs rename to Content.Shared/GameTicking/Rules/Components/RoundstartStationVariationRuleComponent.cs index 44ae89f7b3..77e4c5e82b 100644 --- a/Content.Server/GameTicking/Rules/Components/RoundstartStationVariationRuleComponent.cs +++ b/Content.Shared/GameTicking/Rules/Components/RoundstartStationVariationRuleComponent.cs @@ -1,7 +1,6 @@ using Content.Shared.Storage; -using Robust.Shared.Prototypes; -namespace Content.Server.GameTicking.Rules.Components; +namespace Content.Shared.GameTicking.Rules.Components; /// /// This handles starting various roundstart variation rules after a station has been loaded. diff --git a/Content.Server/GameTicking/Rules/Components/StationVariationPassRuleComponent.cs b/Content.Shared/GameTicking/Rules/Components/StationVariationPassRuleComponent.cs similarity index 75% rename from Content.Server/GameTicking/Rules/Components/StationVariationPassRuleComponent.cs rename to Content.Shared/GameTicking/Rules/Components/StationVariationPassRuleComponent.cs index 9fdc62a7e0..abfbb65116 100644 --- a/Content.Server/GameTicking/Rules/Components/StationVariationPassRuleComponent.cs +++ b/Content.Shared/GameTicking/Rules/Components/StationVariationPassRuleComponent.cs @@ -1,9 +1,7 @@ -namespace Content.Server.GameTicking.Rules.Components; +namespace Content.Shared.GameTicking.Rules.Components; /// /// This is a marker component placed on rule entities which are a single "pass" of station variation. /// [RegisterComponent] -public sealed partial class StationVariationPassRuleComponent : Component -{ -} +public sealed partial class StationVariationPassRuleComponent : Component; diff --git a/Content.Server/GameTicking/Rules/Components/SurvivorRuleComponent.cs b/Content.Shared/GameTicking/Rules/Components/SurvivorRuleComponent.cs similarity index 85% rename from Content.Server/GameTicking/Rules/Components/SurvivorRuleComponent.cs rename to Content.Shared/GameTicking/Rules/Components/SurvivorRuleComponent.cs index 5e6cc203d2..08d1ccedc2 100644 --- a/Content.Server/GameTicking/Rules/Components/SurvivorRuleComponent.cs +++ b/Content.Shared/GameTicking/Rules/Components/SurvivorRuleComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.GameTicking.Rules.Components; +namespace Content.Shared.GameTicking.Rules.Components; /// /// Component for the SurvivorRuleSystem. Game rule that turns everyone into a survivor and gives them the objective to escape centcom alive. diff --git a/Content.Server/GameTicking/Rules/Components/ThiefRuleComponent.cs b/Content.Shared/GameTicking/Rules/Components/ThiefRuleComponent.cs similarity index 57% rename from Content.Server/GameTicking/Rules/Components/ThiefRuleComponent.cs rename to Content.Shared/GameTicking/Rules/Components/ThiefRuleComponent.cs index 6ad1e17775..c46edbc00e 100644 --- a/Content.Server/GameTicking/Rules/Components/ThiefRuleComponent.cs +++ b/Content.Shared/GameTicking/Rules/Components/ThiefRuleComponent.cs @@ -1,8 +1,4 @@ -using Content.Shared.Random; -using Robust.Shared.Audio; -using Robust.Shared.Prototypes; - -namespace Content.Server.GameTicking.Rules.Components; +namespace Content.Shared.GameTicking.Rules.Components; /// /// Stores data for . diff --git a/Content.Server/GameTicking/Rules/Components/TraitorRuleComponent.cs b/Content.Shared/GameTicking/Rules/Components/TraitorRuleComponent.cs similarity index 95% rename from Content.Server/GameTicking/Rules/Components/TraitorRuleComponent.cs rename to Content.Shared/GameTicking/Rules/Components/TraitorRuleComponent.cs index 092f4b71c2..2c84307c7c 100644 --- a/Content.Server/GameTicking/Rules/Components/TraitorRuleComponent.cs +++ b/Content.Shared/GameTicking/Rules/Components/TraitorRuleComponent.cs @@ -1,14 +1,13 @@ -using Content.Server.Codewords; +using Content.Shared.Codewords; using Content.Shared.Dataset; using Content.Shared.FixedPoint; using Content.Shared.NPC.Prototypes; -using Content.Shared.Random; using Content.Shared.Roles; using Robust.Shared.Audio; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; -namespace Content.Server.GameTicking.Rules.Components; +namespace Content.Shared.GameTicking.Rules.Components; [RegisterComponent, Access(typeof(TraitorRuleSystem))] public sealed partial class TraitorRuleComponent : Component diff --git a/Content.Server/GameTicking/Rules/Components/XenoborgsRuleComponent.cs b/Content.Shared/GameTicking/Rules/Components/XenoborgsRuleComponent.cs similarity index 96% rename from Content.Server/GameTicking/Rules/Components/XenoborgsRuleComponent.cs rename to Content.Shared/GameTicking/Rules/Components/XenoborgsRuleComponent.cs index 4a018d7e6c..b343e53f1e 100644 --- a/Content.Server/GameTicking/Rules/Components/XenoborgsRuleComponent.cs +++ b/Content.Shared/GameTicking/Rules/Components/XenoborgsRuleComponent.cs @@ -1,6 +1,6 @@ using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; -namespace Content.Server.GameTicking.Rules.Components; +namespace Content.Shared.GameTicking.Rules.Components; [RegisterComponent, Access(typeof(XenoborgsRuleSystem))] [AutoGenerateComponentPause] diff --git a/Content.Server/GameTicking/Rules/Components/ZombieRuleComponent.cs b/Content.Shared/GameTicking/Rules/Components/ZombieRuleComponent.cs similarity index 86% rename from Content.Server/GameTicking/Rules/Components/ZombieRuleComponent.cs rename to Content.Shared/GameTicking/Rules/Components/ZombieRuleComponent.cs index f8612a2421..eceebdfa1d 100644 --- a/Content.Server/GameTicking/Rules/Components/ZombieRuleComponent.cs +++ b/Content.Shared/GameTicking/Rules/Components/ZombieRuleComponent.cs @@ -1,10 +1,7 @@ -using Content.Shared.Roles; -using Robust.Shared.Audio; -using Robust.Shared.Prototypes; +using Content.Shared.RoundEnd; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; -using Content.Server.RoundEnd; -namespace Content.Server.GameTicking.Rules.Components; +namespace Content.Shared.GameTicking.Rules.Components; [RegisterComponent, Access(typeof(ZombieRuleSystem))] public sealed partial class ZombieRuleComponent : Component diff --git a/Content.Server/GameTicking/Rules/DragonRuleSystem.cs b/Content.Shared/GameTicking/Rules/DragonRuleSystem.cs similarity index 71% rename from Content.Server/GameTicking/Rules/DragonRuleSystem.cs rename to Content.Shared/GameTicking/Rules/DragonRuleSystem.cs index 1992fc2793..132a8fc418 100644 --- a/Content.Server/GameTicking/Rules/DragonRuleSystem.cs +++ b/Content.Shared/GameTicking/Rules/DragonRuleSystem.cs @@ -1,30 +1,22 @@ -using Content.Server.Antag; -using Content.Server.GameTicking.Rules.Components; -using Content.Server.Mind; -using Content.Server.Roles; -using Content.Server.Station.Systems; +using Content.Shared.Antag; +using Content.Shared.GameTicking.Rules.Components; using Content.Shared.Localizations; +using Content.Shared.Mind; +using Content.Shared.Roles; using Content.Shared.Roles.Components; -using Robust.Server.GameObjects; +using Content.Shared.Station.Systems; -namespace Content.Server.GameTicking.Rules; +namespace Content.Shared.GameTicking.Rules; public sealed partial class DragonRuleSystem : GameRuleSystem { - [Dependency] private TransformSystem _transform = default!; [Dependency] private AntagSelectionSystem _antag = default!; [Dependency] private StationSystem _station = default!; - [Dependency] private RoleSystem _roleSystem = default!; - [Dependency] private MindSystem _mind = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(AfterAntagEntitySelected); - SubscribeLocalEvent(UpdateBriefing); - } + [Dependency] private SharedMindSystem _mind = default!; + [Dependency] private SharedRoleSystem _roleSystem = default!; + [Dependency] private SharedTransformSystem _transform = default!; + [SubscribeLocalEvent] private void UpdateBriefing(Entity entity, ref GetBriefingEvent args) { var ent = args.Mind.Comp.OwnedEntity; @@ -35,9 +27,10 @@ public sealed partial class DragonRuleSystem : GameRuleSystem ent, ref AfterAntagEntitySelectedEvent args) { - if (!_mind.TryGetMind(args.EntityUid, out var mindId, out var mind)) + if (!_mind.TryGetMind(args.EntityUid, out var mindId, out _)) return; _roleSystem.MindHasRole(mindId, out var dragonRole); diff --git a/Content.Shared/GameTicking/Rules/GameRuleSystem.Utility.cs b/Content.Shared/GameTicking/Rules/GameRuleSystem.Utility.cs new file mode 100644 index 0000000000..e1efea9964 --- /dev/null +++ b/Content.Shared/GameTicking/Rules/GameRuleSystem.Utility.cs @@ -0,0 +1,37 @@ +using Content.Shared.GameTicking.Components; + +namespace Content.Shared.GameTicking.Rules; + +// TODO: Someone should probably make this virtual and make it into a "GameRuleSystem" with all GameRules in it. +// TODO: Then move GameTicker.GameRule into here and have GameRuleSystem inherit, since it already uses it as a dependency... +public abstract partial class GameRuleSystem where T: IComponent +{ + protected EntityQueryEnumerator QueryActiveRules() + { + return EntityQueryEnumerator(); + } + + protected EntityQueryEnumerator QueryDelayedRules() + { + return EntityQueryEnumerator(); + } + + /// + /// Queries all gamerules, regardless of if they're active or not. + /// + protected EntityQueryEnumerator QueryAllRules() + { + return EntityQueryEnumerator(); + } + + protected void ForceEndSelf(Entity entity) + { + GameTicker.EndGameRule(entity); + } + + [Obsolete("Use Entity typed version of this method instead!")] + protected void ForceEndSelf(EntityUid uid, GameRuleComponent? component = null) + { + ForceEndSelf((uid, component)); + } +} diff --git a/Content.Shared/GameTicking/Rules/GameRuleSystem.cs b/Content.Shared/GameTicking/Rules/GameRuleSystem.cs new file mode 100644 index 0000000000..1fb44b309c --- /dev/null +++ b/Content.Shared/GameTicking/Rules/GameRuleSystem.cs @@ -0,0 +1,117 @@ +using Content.Shared.GameTicking.Components; +using Robust.Shared.Random; +using Robust.Shared.Timing; + +namespace Content.Shared.GameTicking.Rules; + +public abstract partial class GameRuleSystem : EntitySystem where T : IComponent +{ + [Dependency] protected IGameTiming Timing = default!; + [Dependency] protected IRobustRandom RobustRandom = default!; + [Dependency] protected GameTicker GameTicker = default!; + [Dependency] protected EntityQuery RuleQuery = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnGameRuleAdded); + SubscribeLocalEvent(OnGameRuleStarted); + SubscribeLocalEvent(OnGameRuleEnded); + } + + private void OnGameRuleAdded(Entity entity, ref GameRuleAddedEvent args) + { + Added((entity, entity, args.Rule), ref args); + } + + private void OnGameRuleStarted(Entity entity, ref GameRuleStartedEvent args) + { + Started((entity, entity, args.Rule), ref args); + } + + private void OnGameRuleEnded(Entity entity, ref GameRuleEndedEvent args) + { + Ended((entity, entity), ref args); + } + + [SubscribeLocalEvent] + private void OnRoundEndTextAppend(ref RoundEndTextAppendEvent ev) + { + // We don't query GameRuleComponent since the rule may have ended! + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var comp)) + { + AppendRoundEndText((uid, comp), ref ev); + } + } + + /// + /// Called when the gamerule is added + /// + [Obsolete("Use Entity version instead")] + protected virtual void Added(EntityUid uid, T component, GameRuleComponent gameRule, GameRuleAddedEvent args) + { + + } + + /// + /// Called when the gamerule is added + /// + protected virtual void Added(Entity rule, ref GameRuleAddedEvent args) + { + Added(rule.Owner, rule.Comp1, rule.Comp2, args); + } + + /// + /// Called when the gamerule begins + /// + [Obsolete("Use Entity version instead")] + protected virtual void Started(EntityUid uid, T component, GameRuleComponent gameRule, GameRuleStartedEvent args) + { + + } + + /// + /// Called when the gamerule is added + /// + protected virtual void Started(Entity rule, ref GameRuleStartedEvent args) + { + Started(rule.Owner, rule.Comp1, rule.Comp2, args); + } + + /// + /// Called when the gamerule is added + /// + protected virtual void Ended(Entity rule, ref GameRuleEndedEvent args) { } + + /// w + /// Called at the end of a round when text needs to be added for a game rule. + /// + protected virtual void AppendRoundEndText(Entity rule, ref RoundEndTextAppendEvent args) + { + + } + + /// + /// Called on an active gamerule entity in the Update function + /// + protected virtual void ActiveTick(EntityUid uid, T component, GameRuleComponent gameRule, float frameTime) + { + + } + + // TODO: We probably should move this to its own rule system that way we aren't doing an Enumerator for EVERY SINGLE GameRule. + // TODO: Or have GameTicker query over all GameRules once and then raise to each one :P + // TODO: Either way something that isn't this... + public override void Update(float frameTime) + { + base.Update(frameTime); + + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var comp1, out _, out var comp2)) + { + ActiveTick(uid, comp1, comp2, frameTime); + } + } +} diff --git a/Content.Shared/GameTicking/Rules/NukeopsRuleSystem.cs b/Content.Shared/GameTicking/Rules/NukeopsRuleSystem.cs new file mode 100644 index 0000000000..e792489ea2 --- /dev/null +++ b/Content.Shared/GameTicking/Rules/NukeopsRuleSystem.cs @@ -0,0 +1,88 @@ +using Content.Shared.Antag; +using Content.Shared.GameTicking.Components; +using Content.Shared.GameTicking.Rules.Components; +using Content.Shared.NPC.Components; +using Content.Shared.NPC.Systems; +using Content.Shared.Roles; +using Content.Shared.Roles.Components; +using Content.Shared.Station.Components; +using Robust.Shared.Prototypes; +using Robust.Shared.Random; + +namespace Content.Shared.GameTicking.Rules; + +/// +/// This handles the game rule logic for the and +/// If you do not know what NukeOps is you should try playing the game. +/// +public abstract partial class NukeopsRuleSystem : GameRuleSystem +{ + [Dependency] protected AntagSelectionSystem Antag = default!; + [Dependency] private NpcFactionSystem _npcFaction = default!; + + // TODO: This shouldn't be matching by ProtoId. + // It would be better if this were checked by component or something, + // but it needs to be distinct between the full Nukeops and Loneops rules, + // which NukeopsRuleComponent currently isn't. + // Better yet, maybe the behaviors this is used for could be moved to the rule component. + public static readonly EntProtoId NukeopsGameRule = "Nukeops"; + + protected override void Started(Entity rule, ref GameRuleStartedEvent args) + { + var eligible = new List>(); + var eligibleQuery = EntityQueryEnumerator(); + while (eligibleQuery.MoveNext(out var eligibleUid, out var eligibleComp, out var member)) + { + if (!_npcFaction.IsFactionHostile(rule.Comp1.Faction, (eligibleUid, member))) + continue; + + eligible.Add((eligibleUid, eligibleComp, member)); + } + + if (eligible.Count == 0) + return; + + rule.Comp1.TargetStation = RobustRandom.Pick(eligible); + var ev = new NukeopsTargetStationSelectedEvent(rule, rule.Comp1.TargetStation); + RaiseLocalEvent(ref ev); + } + + [SubscribeLocalEvent] + private void OnGetBriefing(Entity role, ref GetBriefingEvent args) + { + // TODO Different character screen briefing for the 3 nukie types + args.Append(Loc.GetString("nukeops-briefing")); + } + + [SubscribeLocalEvent] + private void OnAfterAntagEntSelected(Entity ent, ref AfterAntagEntitySelectedEvent args) + { + var target = (ent.Comp.TargetStation is not null) ? Name(ent.Comp.TargetStation.Value) : "the target"; + + Antag.SendBriefing(args.Session, + Loc.GetString("nukeops-welcome", + ("station", target), + ("name", Name(ent))), + Color.Red, + ent.Comp.GreetSoundNotification); + } +} + + +/// +/// Raised when a station has been assigned as a target for the NukeOps rule. +/// +[ByRefEvent] +public readonly struct NukeopsTargetStationSelectedEvent(EntityUid ruleEntity, EntityUid? targetStation) +{ + /// + /// The entity containing the NukeOps gamerule. + /// + public readonly EntityUid RuleEntity = ruleEntity; + + /// + /// The target station, if it exists. + /// + public readonly EntityUid? TargetStation = targetStation; +} + diff --git a/Content.Server/GameTicking/Rules/ParadoxCloneRuleSystem.cs b/Content.Shared/GameTicking/Rules/ParadoxCloneRuleSystem.cs similarity index 79% rename from Content.Server/GameTicking/Rules/ParadoxCloneRuleSystem.cs rename to Content.Shared/GameTicking/Rules/ParadoxCloneRuleSystem.cs index 447a25499f..9a713334ba 100644 --- a/Content.Server/GameTicking/Rules/ParadoxCloneRuleSystem.cs +++ b/Content.Shared/GameTicking/Rules/ParadoxCloneRuleSystem.cs @@ -1,36 +1,27 @@ -using Content.Server.Antag; -using Content.Server.Cloning; -using Content.Server.GameTicking.Rules.Components; -using Content.Server.Medical.SuitSensors; -using Content.Server.Objectives.Components; +using Content.Shared.Antag; +using Content.Shared.Cloning; using Content.Shared.GameTicking.Components; +using Content.Shared.GameTicking.Rules.Components; using Content.Shared.Gibbing.Components; using Content.Shared.Medical.SuitSensors; using Content.Shared.Mind; +using Content.Shared.Objectives.Components; using Content.Shared.Objectives.Systems; using Robust.Shared.Random; -namespace Content.Server.GameTicking.Rules; +namespace Content.Shared.GameTicking.Rules; public sealed partial class ParadoxCloneRuleSystem : GameRuleSystem { [Dependency] private IRobustRandom _random = default!; - [Dependency] private CloningSystem _cloning = default!; + [Dependency] private SharedCloningSystem _cloning = default!; [Dependency] private SharedMindSystem _mind = default!; - [Dependency] private SuitSensorSystem _sensor = default!; + [Dependency] private SharedSuitSensorSystem _sensor = default!; [Dependency] private AliveHumanoidTargetSystem _target = default!; - public override void Initialize() + protected override void Started(Entity rule, ref GameRuleStartedEvent args) { - base.Initialize(); - - SubscribeLocalEvent(OnAntagSelectEntity); - SubscribeLocalEvent(AfterAntagEntitySelected); - } - - protected override void Started(EntityUid uid, ParadoxCloneRuleComponent component, GameRuleComponent gameRule, GameRuleStartedEvent args) - { - base.Started(uid, component, gameRule, args); + base.Started(rule, ref args); // check if we got enough potential cloning targets, otherwise cancel the gamerule so that the ghost role does not show up var allHumans = _target.GetMinds(); @@ -38,11 +29,12 @@ public sealed partial class ParadoxCloneRuleSystem : GameRuleSystem ent, ref AntagSelectEntityEvent args) { if (ent.Comp.OriginalBody != null) // target was overridden, for example by admin antag control @@ -92,6 +84,7 @@ public sealed partial class ParadoxCloneRuleSystem : GameRuleSystem ent, ref AfterAntagEntitySelectedEvent args) { if (ent.Comp.OriginalMind == null) diff --git a/Content.Shared/GameTicking/Rules/RevolutionaryRuleSystem.cs b/Content.Shared/GameTicking/Rules/RevolutionaryRuleSystem.cs new file mode 100644 index 0000000000..4d75ce0daa --- /dev/null +++ b/Content.Shared/GameTicking/Rules/RevolutionaryRuleSystem.cs @@ -0,0 +1,20 @@ +using Content.Shared.GameTicking.Rules.Components; +using Content.Shared.Revolutionary.Components; +using Content.Shared.Roles; +using Content.Shared.Roles.Components; + +namespace Content.Shared.GameTicking.Rules; + +/// +/// Where all the main stuff for Revolutionaries happens (Assigning Head Revs, Command on station, and checking for the game to end.) +/// +public abstract partial class RevolutionaryRuleSystem : GameRuleSystem +{ + [SubscribeLocalEvent] + private void OnGetBriefing(Entity comp, ref GetBriefingEvent args) + { + var ent = args.Mind.Comp.OwnedEntity; + var head = HasComp(ent); + args.Append(Loc.GetString(head ? "head-rev-briefing" : "rev-briefing")); + } +} diff --git a/Content.Server/GameTicking/Rules/SurvivorRuleSystem.cs b/Content.Shared/GameTicking/Rules/SurvivorRuleSystem.cs similarity index 76% rename from Content.Server/GameTicking/Rules/SurvivorRuleSystem.cs rename to Content.Shared/GameTicking/Rules/SurvivorRuleSystem.cs index 80bab5a499..21792b6b46 100644 --- a/Content.Server/GameTicking/Rules/SurvivorRuleSystem.cs +++ b/Content.Shared/GameTicking/Rules/SurvivorRuleSystem.cs @@ -1,42 +1,34 @@ -using Content.Server.Antag; -using Content.Server.GameTicking.Rules.Components; -using Content.Server.Roles; -using Content.Server.Shuttles.Systems; +using Content.Shared.Antag; using Content.Shared.GameTicking.Components; +using Content.Shared.GameTicking.Rules.Components; using Content.Shared.Mind; using Content.Shared.Mobs.Systems; using Content.Shared.Objectives.Systems; +using Content.Shared.Roles; using Content.Shared.Roles.Components; +using Content.Shared.Shuttles.Systems; using Content.Shared.Survivor.Components; using Content.Shared.Tag; -using Robust.Server.GameObjects; using Robust.Shared.Prototypes; -namespace Content.Server.GameTicking.Rules; +namespace Content.Shared.GameTicking.Rules; public sealed partial class SurvivorRuleSystem : GameRuleSystem { - [Dependency] private AntagSelectionSystem _antag = default!; - [Dependency] private EmergencyShuttleSystem _eShuttle = default!; - [Dependency] private MobStateSystem _mobState = default!; - [Dependency] private RoleSystem _role = default!; - [Dependency] private TagSystem _tag = default!; [Dependency] private AliveHumanoidTargetSystem _target = default!; - [Dependency] private TransformSystem _xform = default!; + [Dependency] private AntagSelectionSystem _antag = default!; + [Dependency] private MobStateSystem _mobState = default!; + [Dependency] private SharedEmergencyShuttleSystem _eShuttle = default!; + [Dependency] private SharedRoleSystem _role = default!; + [Dependency] private SharedTransformSystem _xform = default!; + [Dependency] private TagSystem _tag = default!; private static readonly ProtoId InvalidForSurvivorAntagTag = "InvalidForSurvivorAntag"; - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnGetBriefing); - } - // TODO: Planned rework post wizard release when RandomGlobalSpawnSpell becomes a gamerule - protected override void Started(EntityUid uid, SurvivorRuleComponent component, GameRuleComponent gameRule, GameRuleStartedEvent args) + protected override void Started(Entity rule, ref GameRuleStartedEvent args) { - base.Started(uid, component, gameRule, args); + base.Started(rule, ref args); var allAliveHumanMinds = _target.GetMinds(); @@ -57,17 +49,16 @@ public sealed partial class SurvivorRuleSystem : GameRuleSystem ent, ref GetBriefingEvent args) { args.Append(Loc.GetString("survivor-role-greeting")); } - protected override void AppendRoundEndText(EntityUid uid, - SurvivorRuleComponent component, - GameRuleComponent gameRule, + protected override void AppendRoundEndText(Entity rule, ref RoundEndTextAppendEvent args) { - base.AppendRoundEndText(uid, component, gameRule, ref args); + base.AppendRoundEndText(rule, ref args); // Using this instead of alive antagonists to make checking for shuttle & if the ent is alive easier var existingSurvivors = AllEntityQuery(); diff --git a/Content.Server/GameTicking/Rules/ThiefRuleSystem.cs b/Content.Shared/GameTicking/Rules/ThiefRuleSystem.cs similarity index 73% rename from Content.Server/GameTicking/Rules/ThiefRuleSystem.cs rename to Content.Shared/GameTicking/Rules/ThiefRuleSystem.cs index d6239449a2..fb016d7596 100644 --- a/Content.Server/GameTicking/Rules/ThiefRuleSystem.cs +++ b/Content.Shared/GameTicking/Rules/ThiefRuleSystem.cs @@ -1,25 +1,17 @@ -using Content.Server.Antag; -using Content.Server.GameTicking.Rules.Components; -using Content.Server.Roles; +using Content.Shared.Antag; +using Content.Shared.GameTicking.Rules.Components; using Content.Shared.Humanoid; +using Content.Shared.Roles; using Content.Shared.Roles.Components; -namespace Content.Server.GameTicking.Rules; +namespace Content.Shared.GameTicking.Rules; public sealed partial class ThiefRuleSystem : GameRuleSystem { [Dependency] private AntagSelectionSystem _antag = default!; - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(AfterAntagSelected); - - SubscribeLocalEvent(OnGetBriefing); - } - // Greeting upon thief activation + [SubscribeLocalEvent] private void AfterAntagSelected(Entity mindId, ref AfterAntagEntitySelectedEvent args) { var ent = args.EntityUid; @@ -27,6 +19,7 @@ public sealed partial class ThiefRuleSystem : GameRuleSystem } // Character screen briefing + [SubscribeLocalEvent] private void OnGetBriefing(Entity role, ref GetBriefingEvent args) { var ent = args.Mind.Comp.OwnedEntity; diff --git a/Content.Server/GameTicking/Rules/TraitorRuleSystem.cs b/Content.Shared/GameTicking/Rules/TraitorRuleSystem.cs similarity index 63% rename from Content.Server/GameTicking/Rules/TraitorRuleSystem.cs rename to Content.Shared/GameTicking/Rules/TraitorRuleSystem.cs index 9d4ba46985..bce7e76751 100644 --- a/Content.Server/GameTicking/Rules/TraitorRuleSystem.cs +++ b/Content.Shared/GameTicking/Rules/TraitorRuleSystem.cs @@ -1,9 +1,9 @@ -using Content.Server.Antag; -using Content.Server.GameTicking.Rules.Components; -using Content.Server.Mind; -using Content.Server.Objectives; -using Content.Server.Traitor.Uplink; +using System.Linq; +using System.Text; +using Content.Shared.Antag; +using Content.Shared.Codewords; using Content.Shared.FixedPoint; +using Content.Shared.GameTicking.Rules.Components; using Content.Shared.Mind; using Content.Shared.NPC.Systems; using Content.Shared.PDA; @@ -13,46 +13,33 @@ using Content.Shared.Roles.Components; using Content.Shared.Roles.Jobs; using Content.Shared.Roles.RoleCodeword; using Robust.Shared.Random; -using System.Linq; -using System.Text; -using Content.Server.Codewords; -namespace Content.Server.GameTicking.Rules; +namespace Content.Shared.GameTicking.Rules; -public sealed partial class TraitorRuleSystem : GameRuleSystem +public abstract partial class TraitorRuleSystem : GameRuleSystem { - private static readonly Color TraitorCodewordColor = Color.FromHex("#cc3b3b"); - - [Dependency] private AntagSelectionSystem _antag = default!; - [Dependency] private SharedJobSystem _jobs = default!; - [Dependency] private MindSystem _mindSystem = default!; - [Dependency] private NpcFactionSystem _npcFaction = default!; [Dependency] private IRobustRandom _random = default!; + [Dependency] private AntagSelectionSystem _antag = default!; + [Dependency] protected CodewordSystem Codeword = default!; + [Dependency] private NpcFactionSystem _npcFaction = default!; + [Dependency] private SharedJobSystem _jobs = default!; + [Dependency] private SharedMindSystem _mindSystem = default!; [Dependency] private SharedRoleCodewordSystem _roleCodewordSystem = default!; [Dependency] private SharedRoleSystem _roleSystem = default!; - [Dependency] private UplinkSystem _uplink = default!; - [Dependency] private CodewordSystem _codewordSystem = default!; - public override void Initialize() + private static readonly Color TraitorCodewordColor = Color.FromHex("#cc3b3b"); + + [SubscribeLocalEvent] + private void AfterEntitySelected(Entity rule, ref AfterAntagEntitySelectedEvent args) { - base.Initialize(); - - Log.Level = LogLevel.Debug; - - SubscribeLocalEvent(AfterEntitySelected); - SubscribeLocalEvent(OnObjectivesTextPrepend); + Log.Debug($"AfterAntagEntitySelected {ToPrettyString(rule)}"); + MakeTraitor(args.EntityUid, rule); } - private void AfterEntitySelected(Entity ent, ref AfterAntagEntitySelectedEvent args) - { - Log.Debug($"AfterAntagEntitySelected {ToPrettyString(ent)}"); - MakeTraitor(args.EntityUid, ent); - } - - public bool MakeTraitor(EntityUid traitor, TraitorRuleComponent component) + public bool MakeTraitor(EntityUid traitor, Entity rule) { Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - start"); - var factionCodewords = _codewordSystem.GetCodewords(component.CodewordFactionPrototypeId); + var factionCodewords = Codeword.GetCodewords(rule.Comp.CodewordFactionPrototypeId); //Grab the mind if it wasn't provided if (!_mindSystem.TryGetMind(traitor, out var mindId, out var mind)) @@ -63,22 +50,22 @@ public sealed partial class TraitorRuleSystem : GameRuleSystem(mindId, out var traitorRole); + _roleSystem.MindHasRole((mindId, mind), out var traitorRole); if (traitorRole is not null) { Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Add traitor briefing components"); @@ -134,51 +121,17 @@ public sealed partial class TraitorRuleSystem : GameRuleSystem +public abstract partial class XenoborgsRuleSystem : GameRuleSystem { - [Dependency] private IGameTiming _timing = default!; - [Dependency] private AntagSelectionSystem _antag = default!; - [Dependency] private ChatSystem _chatSystem = default!; - [Dependency] private MobStateSystem _mobState = default!; - [Dependency] private RoundEndSystem _roundEnd = default!; - [Dependency] private SharedMindSystem _mindSystem = default!; - [Dependency] private StationSystem _station = default!; [Dependency] private AliveHumanoidTargetSystem _target = default!; + [Dependency] private AntagSelectionSystem _antag = default!; + [Dependency] private MobStateSystem _mobState = default!; + [Dependency] private SharedMindSystem _mindSystem = default!; private static readonly Color AnnouncmentColor = Color.Gold; - public void SendXenoborgDeathAnnouncement(Entity ent, bool mothershipCoreAlive) + public void SendXenoborgDeathAnnouncement(Entity ent, bool mothershipCoreAlive) { if (ent.Comp.MothershipCoreDeathAnnouncmentSent) return; var status = mothershipCoreAlive ? "alive" : "dead"; - _chatSystem.DispatchGlobalAnnouncement( - Loc.GetString($"xenoborgs-no-more-threat-mothership-core-{status}-announcement"), - colorOverride: AnnouncmentColor); + GameTicker.GameAnnouncement($"xenoborgs-no-more-threat-mothership-core-{status}-announcement", color: AnnouncmentColor); } public void SendMothershipDeathAnnouncement(Entity ent) { - _chatSystem.DispatchGlobalAnnouncement( - Loc.GetString("mothership-destroyed-announcement"), - colorOverride: AnnouncmentColor); - + GameTicker.GameAnnouncement("mothership-destroyed-announcement", color: AnnouncmentColor); ent.Comp.MothershipCoreDeathAnnouncmentSent = true; } // TODO: Refactor the end of round text - protected override void AppendRoundEndText(EntityUid uid, - XenoborgsRuleComponent component, - GameRuleComponent gameRule, + protected override void AppendRoundEndText(Entity rule, ref RoundEndTextAppendEvent args) { - base.AppendRoundEndText(uid, component, gameRule, ref args); + base.AppendRoundEndText(rule, ref args); var numXenoborgs = GetNumberXenoborgs(); var numHumans = _target.GetMinds().Count; @@ -82,11 +66,11 @@ public sealed partial class XenoborgsRuleSystem : GameRuleSystem rule, ref GameRuleStartedEvent args) { - var numXenoborgs = GetNumberXenoborgs(); - var numHumans = _target.GetMinds().Count; + base.Started(rule, ref args); - xenoborgsRuleComponent.MaxNumberXenoborgs = Math.Max(xenoborgsRuleComponent.MaxNumberXenoborgs, numXenoborgs); - - if (xenoborgsRuleComponent.XenoborgShuttleCalled - || (float)numXenoborgs / (numHumans + numXenoborgs) <= xenoborgsRuleComponent.XenoborgShuttleCallPercentage - || _roundEnd.IsRoundEndRequested()) - return; - - foreach (var station in _station.GetStations()) - { - _chatSystem.DispatchStationAnnouncement(station, Loc.GetString("xenoborg-shuttle-call"), colorOverride: Color.BlueViolet); - } - _roundEnd.RequestRoundEnd(null, null, false, cantRecall: true); - xenoborgsRuleComponent.XenoborgShuttleCalled = true; - } - - protected override void Started(EntityUid uid, XenoborgsRuleComponent component, GameRuleComponent gameRule, GameRuleStartedEvent args) - { - base.Started(uid, component, gameRule, args); - - component.NextRoundEndCheck = _timing.CurTime + component.EndCheckDelay; - } - - protected override void ActiveTick(EntityUid uid, XenoborgsRuleComponent component, GameRuleComponent gameRule, float frameTime) - { - base.ActiveTick(uid, component, gameRule, frameTime); - - if (!component.NextRoundEndCheck.HasValue || component.NextRoundEndCheck > _timing.CurTime) - return; - - CheckRoundEnd(component); - component.NextRoundEndCheck = _timing.CurTime + component.EndCheckDelay; + rule.Comp1.NextRoundEndCheck = Timing.CurTime + rule.Comp1.EndCheckDelay; } /// @@ -139,7 +92,7 @@ public sealed partial class XenoborgsRuleSystem : GameRuleSystemif it should only include xenoborgs with a mind /// if it should only include xenoborgs that are alive /// the number of xenoborgs - private int GetNumberXenoborgs(bool playerControlled = true, bool alive = true) + protected int GetNumberXenoborgs(bool playerControlled = true, bool alive = true) { var numberXenoborgs = 0; diff --git a/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs b/Content.Shared/GameTicking/Rules/ZombieRuleSystem.cs similarity index 57% rename from Content.Server/GameTicking/Rules/ZombieRuleSystem.cs rename to Content.Shared/GameTicking/Rules/ZombieRuleSystem.cs index bf188122a5..d1fb49e7a7 100644 --- a/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs +++ b/Content.Shared/GameTicking/Rules/ZombieRuleSystem.cs @@ -1,12 +1,8 @@ -using Content.Server.Antag; -using Content.Server.Chat.Systems; -using Content.Server.GameTicking.Rules.Components; -using Content.Server.Popups; -using Content.Server.Roles; -using Content.Server.RoundEnd; -using Content.Server.Station.Systems; -using Content.Server.Zombies; +using System.Globalization; +using System.Linq; +using Content.Shared.Antag; using Content.Shared.GameTicking.Components; +using Content.Shared.GameTicking.Rules.Components; using Content.Shared.Humanoid; using Content.Shared.Mind; using Content.Shared.Mobs; @@ -14,55 +10,47 @@ using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; using Content.Shared.Roles; using Content.Shared.Roles.Components; +using Content.Shared.Station.Systems; using Content.Shared.Zombies; using Robust.Shared.Player; -using Robust.Shared.Timing; -using System.Globalization; -using System.Linq; -namespace Content.Server.GameTicking.Rules; +namespace Content.Shared.GameTicking.Rules; -public sealed partial class ZombieRuleSystem : GameRuleSystem +public abstract partial class ZombieRuleSystem : GameRuleSystem { - [Dependency] private AntagSelectionSystem _antag = default!; - [Dependency] private ChatSystem _chat = default!; - [Dependency] private IGameTiming _timing = default!; [Dependency] private ISharedPlayerManager _player = default!; + [Dependency] private AntagSelectionSystem _antag = default!; [Dependency] private MobStateSystem _mobState = default!; - [Dependency] private PopupSystem _popup = default!; - [Dependency] private RoundEndSystem _roundEnd = default!; [Dependency] private SharedMindSystem _mindSystem = default!; [Dependency] private SharedRoleSystem _roles = default!; - [Dependency] private StationSystem _station = default!; - [Dependency] private ZombieSystem _zombie = default!; - [Dependency] private EntityQuery _zombieQuery = default!; + [Dependency] protected StationSystem Station = default!; - public override void Initialize() + [Dependency] private EntityQuery _zombieQuery; + + protected override void Started(Entity rule, ref GameRuleStartedEvent args) { - base.Initialize(); + base.Started(rule, ref args); - SubscribeLocalEvent(OnGetBriefing); - SubscribeLocalEvent(OnGetBriefing); - SubscribeLocalEvent(OnZombifySelf); + rule.Comp1.NextRoundEndCheck = Timing.CurTime + rule.Comp1.EndCheckDelay; } + [SubscribeLocalEvent] private void OnGetBriefing(Entity role, ref GetBriefingEvent args) { if (!_roles.MindHasRole(args.Mind.Owner)) args.Append(Loc.GetString("zombie-patientzero-role-greeting")); } + [SubscribeLocalEvent] private void OnGetBriefing(Entity role, ref GetBriefingEvent args) { args.Append(Loc.GetString("zombie-infection-greeting")); } - protected override void AppendRoundEndText(EntityUid uid, - ZombieRuleComponent component, - GameRuleComponent gameRule, + protected override void AppendRoundEndText(Entity rule, ref RoundEndTextAppendEvent args) { - base.AppendRoundEndText(uid, component, gameRule, ref args); + base.AppendRoundEndText(rule, ref args); // This is just the general condition thing used for determining the win/lose text var fraction = GetInfectedFraction(true, true); @@ -78,7 +66,7 @@ public sealed partial class ZombieRuleSystem : GameRuleSystem - /// The big kahoona function for checking if the round is gonna end - /// - private void CheckRoundEnd(ZombieRuleComponent zombieRuleComponent) - { - var healthy = GetHealthyHumans(); - if (healthy.Count == 1) // Only one human left. spooky - _popup.PopupEntity(Loc.GetString("zombie-alone"), healthy[0], healthy[0]); - - if (GetInfectedFraction(false) > zombieRuleComponent.ZombieShuttleCallPercentage && !_roundEnd.IsRoundEndRequested()) - { - foreach (var station in _station.GetStations()) - { - _chat.DispatchStationAnnouncement(station, Loc.GetString("zombie-shuttle-call"), colorOverride: Color.Crimson); - } - - _roundEnd.DoRoundEndBehavior(zombieRuleComponent.ZombieRoundEndBehavior, - zombieRuleComponent.ZombieEvacShuttleTime); - } - - // we include dead for this count because we don't want to end the round - // when everyone gets on the shuttle. - if (GetInfectedFraction() >= 1) // Oops, all zombies - _roundEnd.EndRound(); - } - - protected override void Started(EntityUid uid, ZombieRuleComponent component, GameRuleComponent gameRule, GameRuleStartedEvent args) - { - base.Started(uid, component, gameRule, args); - - component.NextRoundEndCheck = _timing.CurTime + component.EndCheckDelay; - } - - protected override void ActiveTick(EntityUid uid, ZombieRuleComponent component, GameRuleComponent gameRule, float frameTime) - { - base.ActiveTick(uid, component, gameRule, frameTime); - if (!component.NextRoundEndCheck.HasValue || component.NextRoundEndCheck > _timing.CurTime) - return; - CheckRoundEnd(component); - component.NextRoundEndCheck = _timing.CurTime + component.EndCheckDelay; - } - - private void OnZombifySelf(EntityUid uid, IncurableZombieComponent component, ZombifySelfActionEvent args) - { - _zombie.ZombifyEntity(uid); - if (component.Action != null) - Del(component.Action.Value); - } /// /// Get the fraction of players that are infected, between 0 and 1 @@ -166,7 +106,7 @@ public sealed partial class ZombieRuleSystem : GameRuleSystemInclude healthy players that are not on the station grid /// Should dead zombies be included in the count /// - private float GetInfectedFraction(bool includeOffStation = true, bool includeDead = false) + protected float GetInfectedFraction(bool includeOffStation = true, bool includeDead = false) { var players = GetHealthyHumans(includeOffStation); var zombieCount = 0; @@ -186,16 +126,16 @@ public sealed partial class ZombieRuleSystem : GameRuleSystem /// - private List GetHealthyHumans(bool includeOffStation = true) + protected List GetHealthyHumans(bool includeOffStation = true) { var healthy = new List(); var stationGrids = new HashSet(); if (!includeOffStation) { - foreach (var station in _station.GetStationsSet()) + foreach (var station in Station.GetStationsSet()) { - if (_station.GetLargestGrid(station) is { } grid) + if (Station.GetLargestGrid(station) is { } grid) stationGrids.Add(grid); } } diff --git a/Content.Shared/GameTicking/SharedGameTicker.cs b/Content.Shared/GameTicking/SharedGameTicker.cs deleted file mode 100644 index 878f6213cb..0000000000 --- a/Content.Shared/GameTicking/SharedGameTicker.cs +++ /dev/null @@ -1,237 +0,0 @@ -using Content.Shared.Roles; -using Robust.Shared.Network; -using Robust.Shared.Prototypes; -using Robust.Shared.Replays; -using Robust.Shared.Serialization; -using Robust.Shared.Serialization.Markdown.Mapping; -using Robust.Shared.Serialization.Markdown.Value; -using Robust.Shared.Timing; -using Robust.Shared.Audio; -using Content.Shared.GameTicking.Prototypes; - -namespace Content.Shared.GameTicking -{ - public abstract partial class SharedGameTicker : EntitySystem - { - [Dependency] private IReplayRecordingManager _replay = default!; - [Dependency] private IGameTiming _gameTiming = default!; - - /// - /// A list storing the start times of all game rules that have been started this round. - /// Game rules can be started and stopped at any time, including midround. - /// - public abstract IReadOnlyList<(TimeSpan, string)> AllPreviousGameRules { get; } - - // See ideally these would be pulled from the job definition or something. - // But this is easier, and at least it isn't hardcoded. - //TODO: Move these, they really belong in StationJobsSystem or a cvar. - public static readonly ProtoId FallbackOverflowJob = "Passenger"; - - public const string FallbackOverflowJobName = "job-name-passenger"; - - // TODO network. - // Probably most useful for replays, round end info, and probably things like lobby menus. - [ViewVariables] - public int RoundId { get; protected set; } - [ViewVariables] public TimeSpan RoundStartTimeSpan { get; protected set; } - - public override void Initialize() - { - base.Initialize(); - _replay.RecordingStarted += OnRecordingStart; - } - - public override void Shutdown() - { - _replay.RecordingStarted -= OnRecordingStart; - } - - private void OnRecordingStart(MappingDataNode metadata, List events) - { - if (RoundId != 0) - { - metadata["roundId"] = new ValueDataNode(RoundId.ToString()); - } - } - - public TimeSpan RoundDuration() - { - return _gameTiming.CurTime.Subtract(RoundStartTimeSpan); - } - } - - [Serializable, NetSerializable] - public sealed class TickerJoinLobbyEvent : EntityEventArgs - { - } - - [Serializable, NetSerializable] - public sealed class TickerJoinGameEvent : EntityEventArgs - { - } - - [Serializable, NetSerializable] - public sealed class TickerLateJoinStatusEvent : EntityEventArgs - { - // TODO: Make this a replicated CVar, honestly. - public bool Disallowed { get; } - - public TickerLateJoinStatusEvent(bool disallowed) - { - Disallowed = disallowed; - } - } - - [Serializable, NetSerializable] - public sealed class TickerConnectionStatusEvent : EntityEventArgs - { - public TimeSpan RoundStartTimeSpan { get; } - public TickerConnectionStatusEvent(TimeSpan roundStartTimeSpan) - { - RoundStartTimeSpan = roundStartTimeSpan; - } - } - - [Serializable, NetSerializable] - public sealed class TickerLobbyStatusEvent : EntityEventArgs - { - public bool IsRoundStarted { get; } - public ProtoId? LobbyBackground { get; } - public bool YouAreReady { get; } - // UTC. - public TimeSpan StartTime { get; } - public TimeSpan RoundStartTimeSpan { get; } - public bool Paused { get; } - - public TickerLobbyStatusEvent(bool isRoundStarted, ProtoId? lobbyBackground, bool youAreReady, TimeSpan startTime, TimeSpan preloadTime, TimeSpan roundStartTimeSpan, bool paused) - { - IsRoundStarted = isRoundStarted; - LobbyBackground = lobbyBackground; - YouAreReady = youAreReady; - StartTime = startTime; - RoundStartTimeSpan = roundStartTimeSpan; - Paused = paused; - } - } - - [Serializable, NetSerializable] - public sealed class TickerLobbyInfoEvent : EntityEventArgs - { - public string TextBlob { get; } - - public TickerLobbyInfoEvent(string textBlob) - { - TextBlob = textBlob; - } - } - - [Serializable, NetSerializable] - public sealed class TickerLobbyCountdownEvent : EntityEventArgs - { - /// - /// The game time that the game will start at. - /// - public TimeSpan StartTime { get; } - - /// - /// Whether or not the countdown is paused - /// - public bool Paused { get; } - - public TickerLobbyCountdownEvent(TimeSpan startTime, bool paused) - { - StartTime = startTime; - Paused = paused; - } - } - - [Serializable, NetSerializable] - public sealed class TickerJobsAvailableEvent( - Dictionary stationNames, - Dictionary, int?>> jobsAvailableByStation, - Dictionary?> jobWeightsByStation) - : EntityEventArgs - { - /// - /// The Status of the Player in the lobby (ready, observer, ...) - /// - public Dictionary, int?>> JobsAvailableByStation { get; } = jobsAvailableByStation; - - public Dictionary StationNames { get; } = stationNames; - - public Dictionary?> JobWeightsByStation { get; } = jobWeightsByStation; - } - - [Serializable, NetSerializable, DataDefinition] - public sealed partial class RoundEndMessageEvent : EntityEventArgs - { - [Serializable, NetSerializable, DataDefinition] - public partial struct RoundEndPlayerInfo - { - [DataField] - public string PlayerOOCName; - - [DataField] - public string? PlayerICName; - - [DataField, NonSerialized] - public NetUserId? PlayerGuid; - - public string Role; - - [DataField, NonSerialized] - public string[] JobPrototypes; - - [DataField, NonSerialized] - public string[] AntagPrototypes; - - public NetEntity? PlayerNetEntity; - - [DataField] - public bool Antag; - - [DataField] - public bool Observer; - - public bool Connected; - } - - public string GamemodeTitle { get; } - public string RoundEndText { get; } - public TimeSpan RoundDuration { get; } - public int RoundId { get; } - public int PlayerCount { get; } - public RoundEndPlayerInfo[] AllPlayersEndInfo { get; } - - /// - /// Sound gets networked due to how entity lifecycle works between client / server and to avoid clipping. - /// - public ResolvedSoundSpecifier? RestartSound; - - public RoundEndMessageEvent( - string gamemodeTitle, - string roundEndText, - TimeSpan roundDuration, - int roundId, - int playerCount, - RoundEndPlayerInfo[] allPlayersEndInfo, - ResolvedSoundSpecifier? restartSound) - { - GamemodeTitle = gamemodeTitle; - RoundEndText = roundEndText; - RoundDuration = roundDuration; - RoundId = roundId; - PlayerCount = playerCount; - AllPlayersEndInfo = allPlayersEndInfo; - RestartSound = restartSound; - } - } - - [Serializable, NetSerializable] - public enum PlayerGameStatus : sbyte - { - NotReadyToPlay = 0, - ReadyToPlay, - JoinedGame, - } -} diff --git a/Content.Server/Maps/GameMapPoolPrototype.cs b/Content.Shared/Maps/GameMapPoolPrototype.cs similarity index 90% rename from Content.Server/Maps/GameMapPoolPrototype.cs rename to Content.Shared/Maps/GameMapPoolPrototype.cs index 567570c0d5..f828f05703 100644 --- a/Content.Server/Maps/GameMapPoolPrototype.cs +++ b/Content.Shared/Maps/GameMapPoolPrototype.cs @@ -1,8 +1,7 @@ -using Content.Shared.Maps; using JetBrains.Annotations; using Robust.Shared.Prototypes; -namespace Content.Server.Maps; +namespace Content.Shared.Maps; /// /// Prototype that holds a pool of maps that can be indexed based on the map pool CCVar. diff --git a/Content.Shared/Medical/SuitSensors/SharedSuitSensorSystem.cs b/Content.Shared/Medical/SuitSensors/SharedSuitSensorSystem.cs index bfec5e0fdd..7ca15ae590 100644 --- a/Content.Shared/Medical/SuitSensors/SharedSuitSensorSystem.cs +++ b/Content.Shared/Medical/SuitSensors/SharedSuitSensorSystem.cs @@ -13,7 +13,7 @@ using Content.Shared.Mobs; using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; using Content.Shared.Popups; -using Content.Shared.Station; +using Content.Shared.Station.Systems; using Content.Shared.Verbs; using Robust.Shared.Containers; using Robust.Shared.Map; @@ -24,7 +24,7 @@ namespace Content.Shared.Medical.SuitSensors; public abstract partial class SharedSuitSensorSystem : EntitySystem { - [Dependency] private SharedStationSystem _stationSystem = default!; + [Dependency] private StationSystem _stationSystem = default!; [Dependency] private MobStateSystem _mobStateSystem = default!; [Dependency] private SharedPopupSystem _popupSystem = default!; [Dependency] private SharedTransformSystem _transform = default!; @@ -315,7 +315,7 @@ public abstract partial class SharedSuitSensorSystem : EntitySystem /// /// Sets mode of the of the chosen entity. - /// Makes popup when not null + /// Makes popup when not null /// /// Entity and it's component that should be changed /// Selected mode @@ -352,7 +352,7 @@ public abstract partial class SharedSuitSensorSystem : EntitySystem /// /// Attempts to get full from the /// - /// Entity to get status + /// Entity to get status /// Full of the chosen uid public SuitSensorStatus? GetSensorState(Entity ent) { diff --git a/Content.Server/Objectives/Components/TargetOverrideComponent.cs b/Content.Shared/Objectives/Components/TargetOverrideComponent.cs similarity index 90% rename from Content.Server/Objectives/Components/TargetOverrideComponent.cs rename to Content.Shared/Objectives/Components/TargetOverrideComponent.cs index faa402012c..145dc1bbe3 100644 --- a/Content.Server/Objectives/Components/TargetOverrideComponent.cs +++ b/Content.Shared/Objectives/Components/TargetOverrideComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Objectives.Components; +namespace Content.Shared.Objectives.Components; /// /// Sets a target objective to a specific target when receiving it. diff --git a/Content.Shared/PDA/SharedPdaSystem.cs b/Content.Shared/PDA/SharedPdaSystem.cs index 6eb665747d..055acc0653 100644 --- a/Content.Shared/PDA/SharedPdaSystem.cs +++ b/Content.Shared/PDA/SharedPdaSystem.cs @@ -84,5 +84,19 @@ namespace Content.Shared.PDA // This does nothing yet while I finish up PDA prediction // Overriden by the server } + + /// + /// Sets the owner of a PDA to a given entity, with a given name. + /// + /// Pda Entity + /// Pda Component + /// New entity owner of the PDA, this is probably an ID card + /// Name of the new owner, this is probably the name on the ID card + public void SetOwner(EntityUid uid, PdaComponent pda, EntityUid owner, string ownerName) + { + pda.OwnerName = ownerName; + pda.PdaOwner = owner; + UpdatePdaUi(uid, pda); + } } } diff --git a/Content.Shared/Players/ContentPlayerData.cs b/Content.Shared/Players/ContentPlayerData.cs index edf0228df2..90988f5382 100644 --- a/Content.Shared/Players/ContentPlayerData.cs +++ b/Content.Shared/Players/ContentPlayerData.cs @@ -29,7 +29,7 @@ public sealed class ContentPlayerData /// The currently occupied mind of the player owning this data. /// DO NOT DIRECTLY SET THIS UNLESS YOU KNOW WHAT YOU'RE DOING. /// - [ViewVariables, Access(typeof(SharedMindSystem), typeof(SharedGameTicker))] + [ViewVariables, Access(typeof(SharedMindSystem), typeof(GameTicker))] public EntityUid? Mind { get; set; } /// diff --git a/Content.Shared/Preferences/HumanoidCharacterProfile.cs b/Content.Shared/Preferences/HumanoidCharacterProfile.cs index df5bca934e..fba2b41046 100644 --- a/Content.Shared/Preferences/HumanoidCharacterProfile.cs +++ b/Content.Shared/Preferences/HumanoidCharacterProfile.cs @@ -45,7 +45,7 @@ namespace Content.Shared.Preferences private Dictionary, JobPriority> _jobPriorities = new() { { - SharedGameTicker.FallbackOverflowJob, JobPriority.High + GameTicker.FallbackOverflowJob, JobPriority.High } }; diff --git a/Content.Shared/Roles/SharedRoleSystem.cs b/Content.Shared/Roles/SharedRoleSystem.cs index a7d8e18c28..f82257b2d1 100644 --- a/Content.Shared/Roles/SharedRoleSystem.cs +++ b/Content.Shared/Roles/SharedRoleSystem.cs @@ -775,7 +775,45 @@ public abstract partial class SharedRoleSystem : EntitySystem /// Raised on the client to update Role Type on the character window, in case it happened to be open. /// [Serializable, NetSerializable] -public sealed class MindRoleTypeChangedEvent : EntityEventArgs -{ +public sealed class MindRoleTypeChangedEvent : EntityEventArgs; +/// +/// Event raised on the mind to get its briefing. +/// Handlers can either replace or append to the briefing, whichever is more appropriate. +/// +[ByRefEvent] +public record struct GetBriefingEvent +{ + /// + /// The text that will be shown on the Character Screen + /// + public string? Briefing; + + /// + /// The Mind to whose Mind Role Entities the briefing is sent to + /// + public Entity Mind; + + public GetBriefingEvent() { } + + public GetBriefingEvent(string? briefing) + { + Briefing = briefing; + } + + /// + /// If there is no briefing, sets it to the string. + /// If there is a briefing, adds a new line to separate it from the appended string. + /// + public void Append(string text) + { + if (Briefing == null) + { + Briefing = text; + } + else + { + Briefing += "\n" + text; + } + } } diff --git a/Content.Shared/RoundEnd/RoundEndBehavior.cs b/Content.Shared/RoundEnd/RoundEndBehavior.cs new file mode 100644 index 0000000000..449c79fb8a --- /dev/null +++ b/Content.Shared/RoundEnd/RoundEndBehavior.cs @@ -0,0 +1,19 @@ +namespace Content.Shared.RoundEnd; + +public enum RoundEndBehavior : byte +{ + /// + /// Instantly end round + /// + InstantEnd, + + /// + /// Call shuttle with custom announcement + /// + ShuttleCall, + + /// + /// Do nothing + /// + Nothing +} diff --git a/Content.Server/Shuttles/Components/ArrivalsBlacklistComponent.cs b/Content.Shared/Shuttles/Components/ArrivalsBlacklistComponent.cs similarity index 79% rename from Content.Server/Shuttles/Components/ArrivalsBlacklistComponent.cs rename to Content.Shared/Shuttles/Components/ArrivalsBlacklistComponent.cs index 1d5b88d482..d2b298e05e 100644 --- a/Content.Server/Shuttles/Components/ArrivalsBlacklistComponent.cs +++ b/Content.Shared/Shuttles/Components/ArrivalsBlacklistComponent.cs @@ -1,9 +1,7 @@ -namespace Content.Server.Shuttles.Components; +namespace Content.Shared.Shuttles.Components; /// /// This is used for blacklisting entities from being on the arrivals shuttle when it goes FTL. /// [RegisterComponent] -public sealed partial class ArrivalsBlacklistComponent : Component -{ -} +public sealed partial class ArrivalsBlacklistComponent : Component; diff --git a/Content.Server/Shuttles/Components/ArrivalsShuttleComponent.cs b/Content.Shared/Shuttles/Components/ArrivalsShuttleComponent.cs similarity index 89% rename from Content.Server/Shuttles/Components/ArrivalsShuttleComponent.cs rename to Content.Shared/Shuttles/Components/ArrivalsShuttleComponent.cs index b9ff375507..bb9a74e188 100644 --- a/Content.Server/Shuttles/Components/ArrivalsShuttleComponent.cs +++ b/Content.Shared/Shuttles/Components/ArrivalsShuttleComponent.cs @@ -1,7 +1,7 @@ -using Content.Server.Shuttles.Systems; +using Content.Shared.Shuttles.Systems; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; -namespace Content.Server.Shuttles.Components; +namespace Content.Shared.Shuttles.Components; [RegisterComponent, Access(typeof(ArrivalsSystem)), AutoGenerateComponentPause] public sealed partial class ArrivalsShuttleComponent : Component diff --git a/Content.Server/Shuttles/Components/ArrivalsSourceComponent.cs b/Content.Shared/Shuttles/Components/ArrivalsSourceComponent.cs similarity index 51% rename from Content.Server/Shuttles/Components/ArrivalsSourceComponent.cs rename to Content.Shared/Shuttles/Components/ArrivalsSourceComponent.cs index c7ed634b28..ab526db216 100644 --- a/Content.Server/Shuttles/Components/ArrivalsSourceComponent.cs +++ b/Content.Shared/Shuttles/Components/ArrivalsSourceComponent.cs @@ -1,12 +1,9 @@ -using Content.Server.Shuttles.Systems; +using Content.Shared.Shuttles.Systems; -namespace Content.Server.Shuttles.Components; +namespace Content.Shared.Shuttles.Components; /// /// Added to a designated arrivals station for players to spawn at, if enabled. /// [RegisterComponent, Access(typeof(ArrivalsSystem))] -public sealed partial class ArrivalsSourceComponent : Component -{ - -} +public sealed partial class ArrivalsSourceComponent : Component; diff --git a/Content.Server/Shuttles/Components/EmergencyShuttleComponent.cs b/Content.Shared/Shuttles/Components/EmergencyShuttleComponent.cs similarity index 72% rename from Content.Server/Shuttles/Components/EmergencyShuttleComponent.cs rename to Content.Shared/Shuttles/Components/EmergencyShuttleComponent.cs index aa3d2fbb7f..1dc0fe095d 100644 --- a/Content.Server/Shuttles/Components/EmergencyShuttleComponent.cs +++ b/Content.Shared/Shuttles/Components/EmergencyShuttleComponent.cs @@ -1,13 +1,8 @@ -using Content.Server.Shuttles.Systems; - -namespace Content.Server.Shuttles.Components; +namespace Content.Shared.Shuttles.Components; /// /// Added to station emergency shuttles by , /// for FTL event handlers /// [RegisterComponent] -public sealed partial class EmergencyShuttleComponent : Component -{ - -} +public sealed partial class EmergencyShuttleComponent : Component; diff --git a/Content.Server/Shuttles/Components/PendingClockInComponent.cs b/Content.Shared/Shuttles/Components/PendingClockInComponent.cs similarity index 51% rename from Content.Server/Shuttles/Components/PendingClockInComponent.cs rename to Content.Shared/Shuttles/Components/PendingClockInComponent.cs index 62cd1e8548..50dbfa8c2a 100644 --- a/Content.Server/Shuttles/Components/PendingClockInComponent.cs +++ b/Content.Shared/Shuttles/Components/PendingClockInComponent.cs @@ -1,10 +1,7 @@ -namespace Content.Server.Shuttles.Components; +namespace Content.Shared.Shuttles.Components; /// /// Added to arrivals latejoins until they have arrived at the station. /// [RegisterComponent] -public sealed partial class PendingClockInComponent : Component -{ - -} +public sealed partial class PendingClockInComponent : Component; diff --git a/Content.Shared/Shuttles/Components/ShuttleComponent.cs b/Content.Shared/Shuttles/Components/ShuttleComponent.cs new file mode 100644 index 0000000000..3d128bf505 --- /dev/null +++ b/Content.Shared/Shuttles/Components/ShuttleComponent.cs @@ -0,0 +1,81 @@ +using System.Numerics; + +namespace Content.Shared.Shuttles.Components; + +[RegisterComponent] +public sealed partial class ShuttleComponent : Component +{ + [ViewVariables] + public bool Enabled = true; + + [ViewVariables] + public Vector2[] CenterOfThrust = new Vector2[4]; + + /// + /// Thrust gets multiplied by this value if it's for braking. + /// + [DataField] + public const float BrakeCoefficient = 1.5f; + + /// + /// Maximum velocity. + /// + [DataField] + public float BaseMaxLinearVelocity = 60f; + + [DataField] + public const float MaxAngularVelocity = 4f; + + /// + /// The cached thrust available for each cardinal direction + /// + [ViewVariables] + public readonly float[] LinearThrust = new float[4]; + + /// + /// The thrusters contributing to each direction for impulse. + /// + // No touchy + public readonly List[] LinearThrusters = new List[] + { + new(), + new(), + new(), + new(), + }; + + /// + /// The thrusters contributing to the angular impulse of the shuttle. + /// + public readonly List AngularThrusters = new(); + + [ViewVariables] + public float AngularThrust = 0f; + + /// + /// A bitmask of all the directions we are considered thrusting. + /// + [ViewVariables] + public DirectionFlag ThrustDirections = DirectionFlag.None; + + /// + /// Base damping modifier applied to the shuttle's physics component when not in FTL. + /// + [DataField] + public float BodyModifier = 0.25f; + + /// + /// Final Damping Modifier for a shuttle. + /// This value is set to 0 during FTL. And to BodyModifier when not in FTL. + /// + [DataField] + public float DampingModifier; + + /// + /// Optional override for the FTL cooldown for this shuttle. + /// If not null, then the value will be used instead of the shuttle.cooldown CCVar. + /// + [DataField] + public TimeSpan? FTLCooldownOverride = null; +} + diff --git a/Content.Server/Shuttles/Components/StationArrivalsComponent.cs b/Content.Shared/Shuttles/Components/StationArrivalsComponent.cs similarity index 82% rename from Content.Server/Shuttles/Components/StationArrivalsComponent.cs rename to Content.Shared/Shuttles/Components/StationArrivalsComponent.cs index 1d469f9bff..6a5a6e1508 100644 --- a/Content.Server/Shuttles/Components/StationArrivalsComponent.cs +++ b/Content.Shared/Shuttles/Components/StationArrivalsComponent.cs @@ -1,7 +1,7 @@ -using Content.Server.Shuttles.Systems; +using Content.Shared.Shuttles.Systems; using Robust.Shared.Utility; -namespace Content.Server.Shuttles.Components; +namespace Content.Shared.Shuttles.Components; /// /// Added to a station that is available for arrivals shuttles. diff --git a/Content.Shared/Shuttles/Systems/ArrivalsSystem.cs b/Content.Shared/Shuttles/Systems/ArrivalsSystem.cs new file mode 100644 index 0000000000..e1b1750859 --- /dev/null +++ b/Content.Shared/Shuttles/Systems/ArrivalsSystem.cs @@ -0,0 +1,152 @@ +using Content.Shared.CCVar; +using Content.Shared.Damage.Components; +using Content.Shared.GameTicking; +using Content.Shared.Movement.Components; +using Content.Shared.Shuttles.Components; +using Content.Shared.Spawners.Components; +using Content.Shared.Spawners.EntitySystems; +using Content.Shared.Station.Systems; +using JetBrains.Annotations; +using Robust.Shared.Configuration; +using Robust.Shared.Map; +using Robust.Shared.Random; +using Robust.Shared.Timing; +namespace Content.Shared.Shuttles.Systems; + +/// +/// Handles the arrivals shuttle spawning system, and the arrivals shuttle. +/// +public abstract partial class ArrivalsSystem : EntitySystem +{ + [Dependency] protected IConfigurationManager Cfg = default!; + [Dependency] protected IGameTiming Timing = default!; + [Dependency] protected IRobustRandom Random = default!; + [Dependency] protected GameTicker Ticker = default!; + [Dependency] private StationSpawningSystem _stationSpawning = default!; + + /// + /// If enabled then spawns players on an alternate map so they can take a shuttle to the station. + /// + public bool Enabled { get; protected set; } + + /// + /// Flags if all players spawning at the departure terminal have godmode until they leave the terminal. + /// + public bool ArrivalsGodmode { get; private set; } + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnShuttleStartup); + + // Don't invoke immediately as it will get set in the natural course of things. + Enabled = Cfg.GetCVar(CCVars.ArrivalsShuttles); + ArrivalsGodmode = Cfg.GetCVar(CCVars.GodmodeArrivals); + + Cfg.OnValueChanged(CCVars.GodmodeArrivals, b => ArrivalsGodmode = b); + } + + [SubscribeLocalEvent(before: new []{typeof(SpawnPointSystem), typeof(ContainerSpawnPointSystem)})] + public void HandlePlayerSpawning(PlayerSpawningEvent ev) + { + if (ev.SpawnResult != null) + return; + + // We use arrivals as the default spawn so don't check for job prio. + + // Only works on latejoin even if enabled. + if (!Enabled || Ticker.RunLevel != GameRunLevel.InRound) + return; + + if (!HasComp(ev.Station)) + return; + + TryGetArrivals(out var arrivals); + + if (!TryComp(arrivals, out TransformComponent? arrivalsXform)) + return; + + var mapId = arrivalsXform.MapID; + + var points = EntityQueryEnumerator(); + var possiblePositions = new List(); + while (points.MoveNext(out _, out var spawnPoint, out var xform)) + { + if (spawnPoint.SpawnType != SpawnPointType.LateJoin || xform.MapID != mapId) + continue; + + possiblePositions.Add(xform.Coordinates); + } + + if (possiblePositions.Count <= 0) + return; + + var spawnLoc = Random.Pick(possiblePositions); + ev.SpawnResult = _stationSpawning.SpawnPlayerMob( + spawnLoc, + ev.Job, + ev.HumanoidCharacterProfile, + ev.Station); + + EnsureComp(ev.SpawnResult.Value); + EnsureComp(ev.SpawnResult.Value); + + // If you're forced to spawn, you're invincible until you leave wherever you were forced to spawn. + if (ArrivalsGodmode) + EnsureComp(ev.SpawnResult.Value); + } + + private void OnShuttleStartup(EntityUid uid, ArrivalsShuttleComponent component, ComponentStartup args) + { + EnsureComp(uid); + } + + [PublicAPI] + public bool TryGetArrivals(out EntityUid uid) + { + var arrivalsQuery = EntityQueryEnumerator(); + + while (arrivalsQuery.MoveNext(out uid, out _)) + { + return true; + } + + return false; + } + + /// + /// Check if an entity is on the arrivals grid. + /// + /// Entity to check. + /// True if the entity is on the arrivals grid. Returns false if not on arrivals, or there is no arrivals grid. + [PublicAPI] + public bool IsOnArrivals(Entity entity) + { + if (!Resolve(entity, ref entity.Comp)) + return false; + + if (!TryGetArrivals(out var arrivals)) + return false; + + var arrivalsGridUid = Transform(arrivals).GridUid; + if (!arrivalsGridUid.HasValue) + return false; + + return entity.Comp.GridUid == Transform(arrivals).GridUid; + } + + public TimeSpan? NextShuttleArrival() + { + var query = EntityQueryEnumerator(); + var time = TimeSpan.MaxValue; + while (query.MoveNext(out _, out var comp)) + { + if (comp.NextArrivalsTime < time) + time = comp.NextArrivalsTime; + } + + var duration = Timing.CurTime; + return (time < duration) ? null : time - duration; + } +} diff --git a/Content.Shared/Shuttles/Systems/SharedEmergencyShuttleSystem.cs b/Content.Shared/Shuttles/Systems/SharedEmergencyShuttleSystem.cs index 794f4d8ae3..5fbbd30d51 100644 --- a/Content.Shared/Shuttles/Systems/SharedEmergencyShuttleSystem.cs +++ b/Content.Shared/Shuttles/Systems/SharedEmergencyShuttleSystem.cs @@ -13,6 +13,11 @@ public abstract partial class SharedEmergencyShuttleSystem : EntitySystem private bool _emergencyEarlyLaunchAllowed; + /// + /// Has the emergency shuttle arrived? + /// + public bool EmergencyShuttleArrived { get; protected set; } + public override void Initialize() { base.Initialize(); @@ -33,4 +38,13 @@ public abstract partial class SharedEmergencyShuttleSystem : EntitySystem if (!args.Silent) Popup.PopupEntity(Loc.GetString("emergency-shuttle-console-no-early-launches"), ent, args.User); } + + /// + /// Attempts to get the EntityUid of the emergency shuttle + /// + public EntityUid? GetShuttle() + { + AllEntityQuery().MoveNext(out var shuttle, out _); + return shuttle; + } } diff --git a/Content.Server/Spawners/Components/ContainerSpawnPointComponent.cs b/Content.Shared/Spawners/Components/ContainerSpawnPointComponent.cs similarity index 91% rename from Content.Server/Spawners/Components/ContainerSpawnPointComponent.cs rename to Content.Shared/Spawners/Components/ContainerSpawnPointComponent.cs index 210904b567..09d44e2e30 100644 --- a/Content.Server/Spawners/Components/ContainerSpawnPointComponent.cs +++ b/Content.Shared/Spawners/Components/ContainerSpawnPointComponent.cs @@ -1,8 +1,8 @@ -using Content.Server.Spawners.EntitySystems; using Content.Shared.Roles; +using Content.Shared.Spawners.EntitySystems; using Robust.Shared.Prototypes; -namespace Content.Server.Spawners.Components; +namespace Content.Shared.Spawners.Components; /// /// A spawn point that spawns a player into a target container rather than simply spawning them at a position. diff --git a/Content.Server/Spawners/Components/ISpawnPoint.cs b/Content.Shared/Spawners/Components/ISpawnPoint.cs similarity index 62% rename from Content.Server/Spawners/Components/ISpawnPoint.cs rename to Content.Shared/Spawners/Components/ISpawnPoint.cs index e01841ef99..e44a36be3d 100644 --- a/Content.Server/Spawners/Components/ISpawnPoint.cs +++ b/Content.Shared/Spawners/Components/ISpawnPoint.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Spawners.Components; +namespace Content.Shared.Spawners.Components; public interface ISpawnPoint { diff --git a/Content.Server/Spawners/Components/SpawnPointComponent.cs b/Content.Shared/Spawners/Components/SpawnPointComponent.cs similarity index 94% rename from Content.Server/Spawners/Components/SpawnPointComponent.cs rename to Content.Shared/Spawners/Components/SpawnPointComponent.cs index c48b7ec598..0bbebf81d2 100644 --- a/Content.Server/Spawners/Components/SpawnPointComponent.cs +++ b/Content.Shared/Spawners/Components/SpawnPointComponent.cs @@ -1,7 +1,7 @@ using Content.Shared.Roles; using Robust.Shared.Prototypes; -namespace Content.Server.Spawners.Components; +namespace Content.Shared.Spawners.Components; [RegisterComponent] public sealed partial class SpawnPointComponent : Component, ISpawnPoint diff --git a/Content.Server/Spawners/EntitySystems/ContainerSpawnPointSystem.cs b/Content.Shared/Spawners/EntitySystems/ContainerSpawnPointSystem.cs similarity index 88% rename from Content.Server/Spawners/EntitySystems/ContainerSpawnPointSystem.cs rename to Content.Shared/Spawners/EntitySystems/ContainerSpawnPointSystem.cs index 7af415147a..eee357f2c7 100644 --- a/Content.Server/Spawners/EntitySystems/ContainerSpawnPointSystem.cs +++ b/Content.Shared/Spawners/EntitySystems/ContainerSpawnPointSystem.cs @@ -1,27 +1,21 @@ -using Content.Server.GameTicking; -using Content.Server.Spawners.Components; -using Content.Server.Station.Systems; +using Content.Shared.GameTicking; using Content.Shared.Preferences; -using Robust.Server.Containers; +using Content.Shared.Spawners.Components; +using Content.Shared.Station.Systems; using Robust.Shared.Containers; using Robust.Shared.Random; -namespace Content.Server.Spawners.EntitySystems; +namespace Content.Shared.Spawners.EntitySystems; public sealed partial class ContainerSpawnPointSystem : EntitySystem { - [Dependency] private ContainerSystem _container = default!; + [Dependency] private SharedContainerSystem _container = default!; [Dependency] private GameTicker _gameTicker = default!; [Dependency] private IRobustRandom _random = default!; [Dependency] private StationSystem _station = default!; [Dependency] private StationSpawningSystem _stationSpawning = default!; - public override void Initialize() - { - base.Initialize(); - SubscribeLocalEvent(HandlePlayerSpawning, before: new []{ typeof(SpawnPointSystem) }); - } - + [SubscribeLocalEvent(before: new []{typeof(SpawnPointSystem)})] public void HandlePlayerSpawning(PlayerSpawningEvent args) { if (args.SpawnResult != null) diff --git a/Content.Server/Spawners/EntitySystems/SpawnPointSystem.cs b/Content.Shared/Spawners/EntitySystems/SpawnPointSystem.cs similarity index 89% rename from Content.Server/Spawners/EntitySystems/SpawnPointSystem.cs rename to Content.Shared/Spawners/EntitySystems/SpawnPointSystem.cs index bf5327cc5d..ce80e6cec8 100644 --- a/Content.Server/Spawners/EntitySystems/SpawnPointSystem.cs +++ b/Content.Shared/Spawners/EntitySystems/SpawnPointSystem.cs @@ -1,10 +1,10 @@ -using Content.Server.GameTicking; -using Content.Server.Spawners.Components; -using Content.Server.Station.Systems; +using Content.Shared.GameTicking; +using Content.Shared.Spawners.Components; +using Content.Shared.Station.Systems; using Robust.Shared.Map; using Robust.Shared.Random; -namespace Content.Server.Spawners.EntitySystems; +namespace Content.Shared.Spawners.EntitySystems; public sealed partial class SpawnPointSystem : EntitySystem { @@ -13,11 +13,7 @@ public sealed partial class SpawnPointSystem : EntitySystem [Dependency] private StationSystem _stationSystem = default!; [Dependency] private StationSpawningSystem _stationSpawning = default!; - public override void Initialize() - { - SubscribeLocalEvent(OnPlayerSpawning); - } - + [SubscribeLocalEvent] private void OnPlayerSpawning(PlayerSpawningEvent args) { if (args.SpawnResult != null) diff --git a/Content.Shared/Station/Components/BecomesStationComponent.cs b/Content.Shared/Station/Components/BecomesStationComponent.cs index cd6191ef38..dad5a1c197 100644 --- a/Content.Shared/Station/Components/BecomesStationComponent.cs +++ b/Content.Shared/Station/Components/BecomesStationComponent.cs @@ -7,7 +7,7 @@ namespace Content.Shared.Station.Components; /// Added to grids saved in maps to designate that they are the 'main station' grid. /// [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] -[Access(typeof(SharedGameTicker))] +[Access(typeof(GameTicker))] public sealed partial class BecomesStationComponent : Component { /// diff --git a/Content.Shared/Station/Components/StationDataComponent.cs b/Content.Shared/Station/Components/StationDataComponent.cs index 97136f3ba8..296aaa9505 100644 --- a/Content.Shared/Station/Components/StationDataComponent.cs +++ b/Content.Shared/Station/Components/StationDataComponent.cs @@ -1,4 +1,5 @@ using Content.Shared.Roles; +using Content.Shared.Station.Systems; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; @@ -8,7 +9,7 @@ namespace Content.Shared.Station.Components; /// Stores core information about a station, namely its config and associated grids. /// All station entities will have this component. /// -[RegisterComponent, NetworkedComponent, AutoGenerateComponentState, Access(typeof(SharedStationSystem))] +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState, Access(typeof(StationSystem))] public sealed partial class StationDataComponent : Component { /// diff --git a/Content.Server/Station/Components/StationEventEligibleComponent.cs b/Content.Shared/Station/Components/StationEventEligibleComponent.cs similarity index 72% rename from Content.Server/Station/Components/StationEventEligibleComponent.cs rename to Content.Shared/Station/Components/StationEventEligibleComponent.cs index 0a899446a0..22dbc632aa 100644 --- a/Content.Server/Station/Components/StationEventEligibleComponent.cs +++ b/Content.Shared/Station/Components/StationEventEligibleComponent.cs @@ -1,10 +1,7 @@ -namespace Content.Server.Station.Components; +namespace Content.Shared.Station.Components; /// /// This is used for event eligibility. /// [RegisterComponent] -public sealed partial class StationEventEligibleComponent : Component -{ - -} +public sealed partial class StationEventEligibleComponent : Component; diff --git a/Content.Server/Station/Components/StationJobsComponent.cs b/Content.Shared/Station/Components/StationJobsComponent.cs similarity index 96% rename from Content.Server/Station/Components/StationJobsComponent.cs rename to Content.Shared/Station/Components/StationJobsComponent.cs index 9addc8a016..6f2f7831c0 100644 --- a/Content.Server/Station/Components/StationJobsComponent.cs +++ b/Content.Shared/Station/Components/StationJobsComponent.cs @@ -1,11 +1,10 @@ -using System.Linq; -using Content.Server.Station.Systems; using Content.Shared.Roles; +using Content.Shared.Station.Systems; using JetBrains.Annotations; using Robust.Shared.Network; using Robust.Shared.Prototypes; -namespace Content.Server.Station.Components; +namespace Content.Shared.Station.Components; /// /// Stores information about a station's job selection. diff --git a/Content.Server/Station/Components/StationSpawningComponent.cs b/Content.Shared/Station/Components/StationSpawningComponent.cs similarity index 71% rename from Content.Server/Station/Components/StationSpawningComponent.cs rename to Content.Shared/Station/Components/StationSpawningComponent.cs index 81e68d7684..9a925b8dae 100644 --- a/Content.Server/Station/Components/StationSpawningComponent.cs +++ b/Content.Shared/Station/Components/StationSpawningComponent.cs @@ -1,11 +1,9 @@ -using Content.Server.Station.Systems; +using Content.Shared.Station.Systems; -namespace Content.Server.Station.Components; +namespace Content.Shared.Station.Components; /// /// Controls spawning on the given station, tracking spawners present on it. /// [RegisterComponent, Access(typeof(StationSpawningSystem))] -public sealed partial class StationSpawningComponent : Component -{ -} +public sealed partial class StationSpawningComponent : Component; diff --git a/Content.Shared/Station/Components/StationTrackerComponent.cs b/Content.Shared/Station/Components/StationTrackerComponent.cs index 6272b28de4..05bff975c8 100644 --- a/Content.Shared/Station/Components/StationTrackerComponent.cs +++ b/Content.Shared/Station/Components/StationTrackerComponent.cs @@ -1,3 +1,4 @@ +using Content.Shared.Station.Systems; using Robust.Shared.GameStates; namespace Content.Shared.Station.Components; @@ -6,7 +7,7 @@ namespace Content.Shared.Station.Components; /// Component that tracks which station an entity is currently on. /// Mainly used for UI purposes on the client to easily get station-specific data like alert levels. /// -[RegisterComponent, NetworkedComponent, AutoGenerateComponentState, Access(typeof(SharedStationSystem))] +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState, Access(typeof(StationSystem))] public sealed partial class StationTrackerComponent : Component { /// diff --git a/Content.Shared/Station/FlingTowardStationSystem.cs b/Content.Shared/Station/FlingTowardStationSystem.cs index 08863b848f..5ce48ab2b2 100644 --- a/Content.Shared/Station/FlingTowardStationSystem.cs +++ b/Content.Shared/Station/FlingTowardStationSystem.cs @@ -3,6 +3,7 @@ using Robust.Shared.Physics.Systems; using Robust.Shared.Random; using Robust.Shared.Physics.Components; using Content.Shared.Random.Helpers; +using Content.Shared.Station.Systems; using Robust.Shared.Timing; namespace Content.Shared.Station; @@ -10,7 +11,7 @@ namespace Content.Shared.Station; public sealed partial class FlingTowardStationSystem : EntitySystem { [Dependency] private SharedPhysicsSystem _physics = default!; - [Dependency] private SharedStationSystem _station = default!; + [Dependency] private StationSystem _station = default!; [Dependency] private SharedTransformSystem _transform = default!; [Dependency] private IGameTiming _timing = default!; @@ -23,7 +24,7 @@ public sealed partial class FlingTowardStationSystem : EntitySystem // fetch the station's grid var random = SharedRandomExtensions.PredictedRandom(_timing, GetNetEntity(ent.Owner)); var station = random.Pick(_station.GetStations()); - var grid = _station.GetLargestGrid(station); + var grid = _station.GetLargestGrid(station.AsNullable()); if (grid == null) return; diff --git a/Content.Shared/Station/SharedStationSpawningSystem.cs b/Content.Shared/Station/SharedStationSpawningSystem.cs deleted file mode 100644 index fea37ac85f..0000000000 --- a/Content.Shared/Station/SharedStationSpawningSystem.cs +++ /dev/null @@ -1,199 +0,0 @@ -using System.Linq; -using Content.Shared.Hands.Components; -using Content.Shared.Hands.EntitySystems; -using Content.Shared.Inventory; -using Content.Shared.Preferences.Loadouts; -using Content.Shared.Roles; -using Content.Shared.Storage; -using Content.Shared.Storage.EntitySystems; -using Robust.Shared.Prototypes; -using Robust.Shared.Random; - -namespace Content.Shared.Station; - -public abstract partial class SharedStationSpawningSystem : EntitySystem -{ - [Dependency] private IRobustRandom _random = default!; - [Dependency] protected InventorySystem InventorySystem = default!; - [Dependency] private SharedHandsSystem _handsSystem = default!; - [Dependency] private MetaDataSystem _metadata = default!; - [Dependency] private SharedStorageSystem _storage = default!; - [Dependency] private SharedTransformSystem _xformSystem = default!; - - [Dependency] private EntityQuery _handsQuery = default!; - [Dependency] private EntityQuery _inventoryQuery = default!; - [Dependency] private EntityQuery _storageQuery = default!; - [Dependency] private EntityQuery _xformQuery = default!; - - /// - /// Equips the data from a `RoleLoadout` onto an entity. - /// - public void EquipRoleLoadout(EntityUid entity, RoleLoadout loadout, RoleLoadoutPrototype roleProto) - { - // Order loadout selections by the order they appear on the prototype. - foreach (var group in loadout.SelectedLoadouts.OrderBy(x => roleProto.Groups.FindIndex(e => e == x.Key))) - { - foreach (var items in group.Value) - { - if (!ProtoMan.TryIndex(items.Prototype, out var loadoutProto)) - { - Log.Error($"Unable to find loadout prototype for {items.Prototype}"); - continue; - } - - EquipStartingGear(entity, loadoutProto, raiseEvent: false); - } - } - - EquipRoleName(entity, loadout, roleProto); - } - - /// - /// Applies the role's name as applicable to the entity. - /// - public void EquipRoleName(EntityUid entity, RoleLoadout loadout, RoleLoadoutPrototype roleProto) - { - string? name = null; - - if (roleProto.CanCustomizeName) - { - name = loadout.EntityName; - } - - if (string.IsNullOrEmpty(name) && ProtoMan.Resolve(roleProto.NameDataset, out var nameData)) - { - name = Loc.GetString(_random.Pick(nameData.Values)); - } - - if (!string.IsNullOrEmpty(name)) - { - _metadata.SetEntityName(entity, name); - } - } - - public void EquipStartingGear(EntityUid entity, LoadoutPrototype loadout, bool raiseEvent = true) - { - EquipStartingGear(entity, loadout.StartingGear, raiseEvent); - EquipStartingGear(entity, (IEquipmentLoadout) loadout, raiseEvent); - } - - /// - /// - /// - public void EquipStartingGear(EntityUid entity, ProtoId? startingGear, bool raiseEvent = true) - { - ProtoMan.Resolve(startingGear, out var gearProto); - EquipStartingGear(entity, gearProto, raiseEvent); - } - - /// - /// - /// - public void EquipStartingGear(EntityUid entity, StartingGearPrototype? startingGear, bool raiseEvent = true) - { - EquipStartingGear(entity, (IEquipmentLoadout?) startingGear, raiseEvent); - } - - /// - /// Equips starting gear onto the given entity. - /// - /// Entity to load out. - /// Starting gear to use. - /// Should we raise the event for equipped. Set to false if you will call this manually - public void EquipStartingGear(EntityUid entity, IEquipmentLoadout? startingGear, bool raiseEvent = true) - { - if (startingGear == null) - return; - - var xform = _xformQuery.GetComponent(entity); - - if (InventorySystem.TryGetSlots(entity, out var slotDefinitions)) - { - foreach (var slot in slotDefinitions) - { - var equipmentStr = startingGear.GetGear(slot.Name); - if (!string.IsNullOrEmpty(equipmentStr)) - { - var equipmentEntity = Spawn(equipmentStr, xform.Coordinates); - InventorySystem.TryEquip(entity, equipmentEntity, slot.Name, silent: true, force: true); - } - } - } - - if (_handsQuery.TryComp(entity, out var handsComponent)) - { - var inhand = startingGear.Inhand; - var coords = xform.Coordinates; - foreach (var prototype in inhand) - { - var inhandEntity = Spawn(prototype, coords); - - if (_handsSystem.TryGetEmptyHand((entity, handsComponent), out var emptyHand)) - { - _handsSystem.TryPickup(entity, inhandEntity, emptyHand, checkActionBlocker: false, handsComp: handsComponent); - } - } - } - - if (startingGear.Storage.Count > 0) - { - var coords = _xformSystem.GetMapCoordinates(entity); - _inventoryQuery.TryComp(entity, out var inventoryComp); - - foreach (var (slotName, entProtos) in startingGear.Storage) - { - if (entProtos == null || entProtos.Count == 0) - continue; - - if (inventoryComp != null && - InventorySystem.TryGetSlotEntity(entity, slotName, out var slotEnt, inventoryComponent: inventoryComp) && - _storageQuery.TryComp(slotEnt, out var storage)) - { - - foreach (var entProto in entProtos) - { - var spawnedEntity = Spawn(entProto, coords); - - _storage.Insert(slotEnt.Value, spawnedEntity, out _, storageComp: storage, playSound: false); - } - } - } - } - - if (raiseEvent) - { - var ev = new StartingGearEquippedEvent(entity); - RaiseLocalEvent(entity, ref ev); - } - } - - /// - /// Gets all the gear for a given slot when passed a loadout. - /// - /// The loadout to look through. - /// The slot that you want the clothing for. - /// - /// If there is a value for the given slot, it will return the proto id for that slot. - /// If nothing was found, will return null - /// - public string? GetGearForSlot(RoleLoadout? loadout, string slot) - { - if (loadout == null) - return null; - - foreach (var group in loadout.SelectedLoadouts) - { - foreach (var items in group.Value) - { - if (!ProtoMan.Resolve(items.Prototype, out var loadoutPrototype)) - return null; - - var gear = ((IEquipmentLoadout) loadoutPrototype).GetGear(slot); - if (gear != string.Empty) - return gear; - } - } - - return null; - } -} diff --git a/Content.Shared/Station/Systems/StationJobsSystem.cs b/Content.Shared/Station/Systems/StationJobsSystem.cs new file mode 100644 index 0000000000..1beea35576 --- /dev/null +++ b/Content.Shared/Station/Systems/StationJobsSystem.cs @@ -0,0 +1,6 @@ +namespace Content.Shared.Station.Systems; + +/// +/// Handles the assignment and tracking of Station jobs and their associated role entities. +/// +public abstract partial class StationJobsSystem : EntitySystem; diff --git a/Content.Server/Station/Systems/StationSpawningSystem.cs b/Content.Shared/Station/Systems/StationSpawningSystem.cs similarity index 53% rename from Content.Server/Station/Systems/StationSpawningSystem.cs rename to Content.Shared/Station/Systems/StationSpawningSystem.cs index 2e04d6d142..3a1a970fc0 100644 --- a/Content.Server/Station/Systems/StationSpawningSystem.cs +++ b/Content.Shared/Station/Systems/StationSpawningSystem.cs @@ -1,48 +1,234 @@ -using Content.Server.Access.Systems; -using Content.Server.Humanoid; -using Content.Server.Mind; -using Content.Server.PDA; -using Content.Server.Station.Components; +using System.Linq; using Content.Shared.Access.Components; using Content.Shared.Access.Systems; using Content.Shared.Body; using Content.Shared.CCVar; using Content.Shared.Clothing; using Content.Shared.DetailExaminable; +using Content.Shared.Hands.Components; +using Content.Shared.Hands.EntitySystems; using Content.Shared.Humanoid; using Content.Shared.Humanoid.Prototypes; using Content.Shared.IdentityManagement; +using Content.Shared.Inventory; +using Content.Shared.Mind; using Content.Shared.PDA; using Content.Shared.Preferences; using Content.Shared.Preferences.Loadouts; using Content.Shared.Roles; -using Content.Shared.Station; +using Content.Shared.Station.Components; +using Content.Shared.Storage; +using Content.Shared.Storage.EntitySystems; using JetBrains.Annotations; using Robust.Shared.Configuration; using Robust.Shared.Map; using Robust.Shared.Player; using Robust.Shared.Prototypes; +using Robust.Shared.Random; using Robust.Shared.Utility; -namespace Content.Server.Station.Systems; +namespace Content.Shared.Station.Systems; -/// -/// Manages spawning into the game, tracking available spawn points. -/// Also provides helpers for spawning in the player's mob. -/// -[PublicAPI] -public sealed partial class StationSpawningSystem : SharedStationSpawningSystem +public sealed partial class StationSpawningSystem : EntitySystem { - [Dependency] private SharedAccessSystem _accessSystem = default!; - [Dependency] private ActorSystem _actors = default!; - [Dependency] private IdCardSystem _cardSystem = default!; [Dependency] private IConfigurationManager _configurationManager = default!; + [Dependency] private IRobustRandom _random = default!; + [Dependency] private ActorSystem _actors = default!; [Dependency] private HumanoidProfileSystem _humanoidProfile = default!; - [Dependency] private SharedVisualBodySystem _visualBody = default!; [Dependency] private IdentitySystem _identity = default!; - [Dependency] private MetaDataSystem _metaSystem = default!; - [Dependency] private PdaSystem _pdaSystem = default!; - [Dependency] private MindSystem _mindSystem = default!; + [Dependency] private InventorySystem _inventory = default!; + [Dependency] private MetaDataSystem _metadata = default!; + [Dependency] private SharedHandsSystem _handsSystem = default!; + [Dependency] private SharedMindSystem _mindSystem = default!; + [Dependency] private SharedStorageSystem _storage = default!; + [Dependency] private SharedTransformSystem _xformSystem = default!; + [Dependency] private SharedVisualBodySystem _visualBody = default!; + [Dependency] private SharedAccessSystem _accessSystem = default!; + [Dependency] private SharedIdCardSystem _cardSystem = default!; + [Dependency] private SharedPdaSystem _pdaSystem = default!; + + [Dependency] private EntityQuery _handsQuery; + [Dependency] private EntityQuery _inventoryQuery; + [Dependency] private EntityQuery _storageQuery; + [Dependency] private EntityQuery _xformQuery; + + /// + /// Equips the data from a `RoleLoadout` onto an entity. + /// + [PublicAPI] + public void EquipRoleLoadout(EntityUid entity, RoleLoadout loadout, RoleLoadoutPrototype roleProto) + { + // Order loadout selections by the order they appear on the prototype. + foreach (var group in loadout.SelectedLoadouts.OrderBy(x => roleProto.Groups.FindIndex(e => e == x.Key))) + { + foreach (var items in group.Value) + { + if (!ProtoMan.TryIndex(items.Prototype, out var loadoutProto)) + { + Log.Error($"Unable to find loadout prototype for {items.Prototype}"); + continue; + } + + EquipStartingGear(entity, loadoutProto, raiseEvent: false); + } + } + + EquipRoleName(entity, loadout, roleProto); + } + + /// + /// Applies the role's name as applicable to the entity. + /// + [PublicAPI] + public void EquipRoleName(EntityUid entity, RoleLoadout loadout, RoleLoadoutPrototype roleProto) + { + string? name = null; + + if (roleProto.CanCustomizeName) + { + name = loadout.EntityName; + } + + if (string.IsNullOrEmpty(name) && ProtoMan.Resolve(roleProto.NameDataset, out var nameData)) + { + name = Loc.GetString(_random.Pick(nameData.Values)); + } + + if (!string.IsNullOrEmpty(name)) + { + _metadata.SetEntityName(entity, name); + } + } + + public void EquipStartingGear(EntityUid entity, LoadoutPrototype loadout, bool raiseEvent = true) + { + EquipStartingGear(entity, loadout.StartingGear, raiseEvent); + EquipStartingGear(entity, (IEquipmentLoadout) loadout, raiseEvent); + } + + /// + /// + /// + [PublicAPI] + public void EquipStartingGear(EntityUid entity, ProtoId? startingGear, bool raiseEvent = true) + { + ProtoMan.Resolve(startingGear, out var gearProto); + EquipStartingGear(entity, gearProto, raiseEvent); + } + + /// + /// + /// + [PublicAPI] + public void EquipStartingGear(EntityUid entity, StartingGearPrototype? startingGear, bool raiseEvent = true) + { + EquipStartingGear(entity, (IEquipmentLoadout?) startingGear, raiseEvent); + } + + /// + /// Equips starting gear onto the given entity. + /// + /// Entity to load out. + /// Starting gear to use. + /// Should we raise the event for equipped. Set to false if you will call this manually + [PublicAPI] + public void EquipStartingGear(EntityUid entity, IEquipmentLoadout? startingGear, bool raiseEvent = true) + { + if (startingGear == null) + return; + + var xform = _xformQuery.GetComponent(entity); + + if (_inventory.TryGetSlots(entity, out var slotDefinitions)) + { + foreach (var slot in slotDefinitions) + { + var equipmentStr = startingGear.GetGear(slot.Name); + if (!string.IsNullOrEmpty(equipmentStr)) + { + var equipmentEntity = Spawn(equipmentStr, xform.Coordinates); + _inventory.TryEquip(entity, equipmentEntity, slot.Name, silent: true, force: true); + } + } + } + + if (_handsQuery.TryComp(entity, out var handsComponent)) + { + var inhand = startingGear.Inhand; + var coords = xform.Coordinates; + foreach (var prototype in inhand) + { + var inhandEntity = Spawn(prototype, coords); + + if (_handsSystem.TryGetEmptyHand((entity, handsComponent), out var emptyHand)) + { + _handsSystem.TryPickup(entity, inhandEntity, emptyHand, checkActionBlocker: false, handsComp: handsComponent); + } + } + } + + if (startingGear.Storage.Count > 0) + { + var coords = _xformSystem.GetMapCoordinates(entity); + _inventoryQuery.TryComp(entity, out var inventoryComp); + + foreach (var (slotName, entProtos) in startingGear.Storage) + { + if (entProtos.Count == 0) + continue; + + if (inventoryComp != null && + _inventory.TryGetSlotEntity(entity, slotName, out var slotEnt, inventoryComponent: inventoryComp) && + _storageQuery.TryComp(slotEnt, out var storage)) + { + + foreach (var entProto in entProtos) + { + var spawnedEntity = Spawn(entProto, coords); + + _storage.Insert(slotEnt.Value, spawnedEntity, out _, storageComp: storage, playSound: false); + } + } + } + } + + if (raiseEvent) + { + var ev = new StartingGearEquippedEvent(entity); + RaiseLocalEvent(entity, ref ev); + } + } + + /// + /// Gets all the gear for a given slot when passed a loadout. + /// + /// The loadout to look through. + /// The slot that you want the clothing for. + /// + /// If there is a value for the given slot, it will return the proto id for that slot. + /// If nothing was found, will return null + /// + [PublicAPI] + public string? GetGearForSlot(RoleLoadout? loadout, string slot) + { + if (loadout == null) + return null; + + foreach (var group in loadout.SelectedLoadouts) + { + foreach (var items in group.Value) + { + if (!ProtoMan.Resolve(items.Prototype, out var loadoutPrototype)) + return null; + + var gear = ((IEquipmentLoadout) loadoutPrototype).GetGear(slot); + if (gear != string.Empty) + return gear; + } + } + + return null; + } /// /// Attempts to spawn a player character onto the given station. @@ -69,6 +255,48 @@ public sealed partial class StationSpawningSystem : SharedStationSpawningSystem return ev.SpawnResult; } + /// + /// Sets the ID card and PDA name, job, and access data. + /// + /// Entity to load out. + /// Character name to use for the ID. + /// Job prototype to use for the PDA and ID. + /// The station this player is being spawned on. + [PublicAPI] + public void SetPdaAndIdCardData(EntityUid entity, + string characterName, + JobPrototype jobPrototype, + EntityUid? station) + { + if (!_inventory.TryGetSlotEntity(entity, "id", out var idUid)) + return; + + var cardId = idUid.Value; + if (TryComp(idUid, out var pdaComponent) && pdaComponent.ContainedId != null) + cardId = pdaComponent.ContainedId.Value; + + if (!TryComp(cardId, out var card)) + return; + + _cardSystem.TryChangeFullName(cardId, characterName, card); + _cardSystem.TryChangeJobTitle(cardId, jobPrototype.LocalizedName, card); + + if (ProtoMan.Resolve(jobPrototype.Icon, out var jobIcon)) + _cardSystem.TryChangeJobIcon(cardId, jobIcon, card); + + var extendedAccess = false; + if (station != null) + { + var data = Comp(station.Value); + extendedAccess = data.ExtendedAccess; + } + + _accessSystem.SetAccessToJob(cardId, jobPrototype, extendedAccess); + + if (pdaComponent != null) + _pdaSystem.SetOwner(idUid.Value, pdaComponent, entity, characterName); + } + //TODO: Figure out if everything in the player spawning region belongs somewhere else. #region Player spawning helpers @@ -136,7 +364,7 @@ public sealed partial class StationSpawningSystem : SharedStationSpawningSystem { _visualBody.ApplyProfileTo(entity.Value, profile); _humanoidProfile.ApplyProfileTo(entity.Value, profile); - _metaSystem.SetEntityName(entity.Value, profile.Name); + _metadata.SetEntityName(entity.Value, profile.Name); if (profile.FlavorText != "" && _configurationManager.GetCVar(CCVars.FlavorText)) { @@ -178,46 +406,6 @@ public sealed partial class StationSpawningSystem : SharedStationSpawningSystem jobSpecial.AfterEquip(entity); } } - - /// - /// Sets the ID card and PDA name, job, and access data. - /// - /// Entity to load out. - /// Character name to use for the ID. - /// Job prototype to use for the PDA and ID. - /// The station this player is being spawned on. - public void SetPdaAndIdCardData(EntityUid entity, string characterName, JobPrototype jobPrototype, EntityUid? station) - { - if (!InventorySystem.TryGetSlotEntity(entity, "id", out var idUid)) - return; - - var cardId = idUid.Value; - if (TryComp(idUid, out var pdaComponent) && pdaComponent.ContainedId != null) - cardId = pdaComponent.ContainedId.Value; - - if (!TryComp(cardId, out var card)) - return; - - _cardSystem.TryChangeFullName(cardId, characterName, card); - _cardSystem.TryChangeJobTitle(cardId, jobPrototype.LocalizedName, card); - - if (ProtoMan.Resolve(jobPrototype.Icon, out var jobIcon)) - _cardSystem.TryChangeJobIcon(cardId, jobIcon, card); - - var extendedAccess = false; - if (station != null) - { - var data = Comp(station.Value); - extendedAccess = data.ExtendedAccess; - } - - _accessSystem.SetAccessToJob(cardId, jobPrototype, extendedAccess); - - if (pdaComponent != null) - _pdaSystem.SetOwner(idUid.Value, pdaComponent, entity, characterName); - } - - #endregion Player spawning helpers } @@ -227,7 +415,6 @@ public sealed partial class StationSpawningSystem : SharedStationSpawningSystem /// You should not make this event's success rely on random chance. /// This event is designed to use ordered handling. You probably want SpawnPointSystem to be the last handler. /// -[PublicAPI] public sealed class PlayerSpawningEvent : EntityEventArgs { /// diff --git a/Content.Shared/Station/Systems/StationSystem.Event.cs b/Content.Shared/Station/Systems/StationSystem.Event.cs new file mode 100644 index 0000000000..247ce407a5 --- /dev/null +++ b/Content.Shared/Station/Systems/StationSystem.Event.cs @@ -0,0 +1,136 @@ +using System.Diagnostics.CodeAnalysis; +using Content.Shared.Station.Components; +using JetBrains.Annotations; +using Robust.Shared.Collections; +using Robust.Shared.Map; +using Robust.Shared.Map.Components; + +namespace Content.Shared.Station.Systems; + +public abstract partial class StationSystem +{ + /// + /// Utility function for finding a random event-eligible station entity + /// TODO: Make calls of this use the below method with T = StationEventEligibleComponent and make this a lookup for NO T versions of stations!!! + /// + [PublicAPI] + [Obsolete($"Use TryGetRandomStation instead using {nameof(StationEventEligibleComponent)}!")] + public bool TryGetRandomStation([NotNullWhen(true)] out Entity? station, Func? filter = null) + { + var stations = new ValueList>(Count()); + + filter ??= _ => true; + var query = AllEntityQuery(); + + while (query.MoveNext(out var uid, out _, out var data)) + { + if (!filter(uid)) + continue; + + stations.Add((uid, data)); + } + + if (stations.Count == 0) + { + station = null; + return false; + } + + // TODO: Engine PR. + station = stations[Random.Next(stations.Count)]; + return true; + } + + /// + /// Tries to get a random station with a given component. + /// + /// Station we are returning. + /// Optional filter. + /// Component we are querying for. + /// Station Entity if it exists + [PublicAPI] + public bool TryGetRandomStation([NotNullWhen(true)] out Entity? station, Func? filter = null) where T : IComponent + { + var stations = new ValueList>(Count()); + + filter ??= _ => true; + var query = AllEntityQuery(); + + while (query.MoveNext(out var uid, out var comp, out var data)) + { + if (!filter(uid)) + continue; + + stations.Add((uid, data, comp)); + } + + if (stations.Count == 0) + { + station = null; + return false; + } + + // TODO: Engine PR. + station = stations[Random.Next(stations.Count)]; + return true; + } + + [PublicAPI] + public bool TryFindRandomTile(out Vector2i tile, + [NotNullWhen(true)] out Entity? targetStation, + [NotNullWhen(true)] out Entity? targetGrid, + out EntityCoordinates targetCoords) + { + tile = default; + targetStation = null; + targetGrid = null; + targetCoords = EntityCoordinates.Invalid; + if (TryGetRandomStation(out targetStation)) + { + return TryFindRandomTileOnStation(targetStation.Value, + out tile, + out targetGrid, + out targetCoords); + } + + return false; + } + + /// + /// Returns a random tile on a random station with the given T component. + /// + /// Tile returned. + /// Station returned + /// Station grid with the tile. + /// Coordinates of the tile. + /// Component we query for the station! + /// True if all of the above were found + [PublicAPI] + public bool TryFindRandomTile(out Vector2i tile, + [NotNullWhen(true)] out Entity? targetStation, + [NotNullWhen(true)] out Entity? targetGrid, + out EntityCoordinates targetCoords) where T : IComponent + { + tile = default; + targetStation = null; + targetGrid = null; + targetCoords = EntityCoordinates.Invalid; + return TryGetRandomStation(out targetStation) && TryFindRandomTileOnStation(targetStation.Value, + out tile, + out targetGrid, + out targetCoords); + } + + [PublicAPI] + public virtual bool TryFindRandomTileOnStation(Entity station, + out Vector2i tile, + [NotNullWhen(true)] out Entity? targetGrid, + out EntityCoordinates targetCoords, + int numAttempts = 10) + { + tile = default; + targetCoords = EntityCoordinates.Invalid; + targetGrid = null; + return false; + } +} diff --git a/Content.Shared/Station/SharedStationSystem.Tracker.cs b/Content.Shared/Station/Systems/StationSystem.Tracker.cs similarity index 76% rename from Content.Shared/Station/SharedStationSystem.Tracker.cs rename to Content.Shared/Station/Systems/StationSystem.Tracker.cs index 41129da13f..ce8a27013e 100644 --- a/Content.Shared/Station/SharedStationSystem.Tracker.cs +++ b/Content.Shared/Station/Systems/StationSystem.Tracker.cs @@ -2,34 +2,30 @@ using Content.Shared.Station.Components; using JetBrains.Annotations; using Robust.Shared.Map; -namespace Content.Shared.Station; +namespace Content.Shared.Station.Systems; -public abstract partial class SharedStationSystem +public abstract partial class StationSystem { - private void InitializeTracker() - { - SubscribeLocalEvent(OnTrackerMapInit); - SubscribeLocalEvent(OnTrackerRemove); - SubscribeLocalEvent(OnTrackerGridChanged); - SubscribeLocalEvent(OnMetaFlagRemoveAttempt); - } - + [SubscribeLocalEvent] private void OnTrackerMapInit(Entity ent, ref MapInitEvent args) { - _meta.AddFlag(ent, MetaDataFlags.ExtraTransformEvents); + Meta.AddFlag(ent, MetaDataFlags.ExtraTransformEvents); UpdateStationTracker(ent.AsNullable()); } + [SubscribeLocalEvent] private void OnTrackerRemove(Entity ent, ref ComponentRemove args) { - _meta.RemoveFlag(ent, MetaDataFlags.ExtraTransformEvents); + Meta.RemoveFlag(ent, MetaDataFlags.ExtraTransformEvents); } + [SubscribeLocalEvent] private void OnTrackerGridChanged(Entity ent, ref GridUidChangedEvent args) { UpdateStationTracker((ent, ent.Comp, args.Transform)); } + [SubscribeLocalEvent] private void OnMetaFlagRemoveAttempt(Entity ent, ref MetaFlagRemoveAttemptEvent args) { if ((args.ToRemove & MetaDataFlags.ExtraTransformEvents) != 0 && diff --git a/Content.Shared/Station/SharedStationSystem.cs b/Content.Shared/Station/Systems/StationSystem.cs similarity index 83% rename from Content.Shared/Station/SharedStationSystem.cs rename to Content.Shared/Station/Systems/StationSystem.cs index 8de80602ff..c73fa667ed 100644 --- a/Content.Shared/Station/SharedStationSystem.cs +++ b/Content.Shared/Station/Systems/StationSystem.cs @@ -5,30 +5,24 @@ using Robust.Shared.Collections; using Robust.Shared.Map; using Robust.Shared.Map.Components; using Robust.Shared.Player; +using Robust.Shared.Random; -namespace Content.Shared.Station; +namespace Content.Shared.Station.Systems; -public abstract partial class SharedStationSystem : EntitySystem +public abstract partial class StationSystem : EntitySystem { - [Dependency] private SharedMapSystem _map = default!; - [Dependency] private MetaDataSystem _meta = default!; - [Dependency] private SharedTransformSystem _transform = default!; + [Dependency] protected IRobustRandom Random = default!; [Dependency] private ISharedPlayerManager _player = default!; + [Dependency] protected MetaDataSystem Meta = default!; + [Dependency] protected SharedMapSystem Map = default!; + [Dependency] private SharedTransformSystem _transform = default!; [Dependency] private EntityQuery _stationMemberQuery; - [Dependency] private EntityQuery _gridQuery; + [Dependency] protected EntityQuery GridQuery; private ValueList _mapIds; private ValueList<(Box2Rotated Bounds, MapId MapId)> _gridBounds; - /// - public override void Initialize() - { - base.Initialize(); - - InitializeTracker(); - } - /// /// Gets the largest member grid from a station. /// @@ -67,7 +61,7 @@ public abstract partial class SharedStationSystem : EntitySystem if (!TryComp(gridUid, out var grid)) continue; - count += _map.GetAllTiles(gridUid, grid).Count(); + count += Map.GetAllTiles(gridUid, grid).Count(); } return count; @@ -123,13 +117,13 @@ public abstract partial class SharedStationSystem : EntitySystem return CompOrNull(xform.GridUid)?.Station; } - public List GetStations() + public List> GetStations() { - var stations = new List(); + var stations = new List>(); var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out _)) + while (query.MoveNext(out var uid, out var data)) { - stations.Add(uid); + stations.Add((uid, data)); } return stations; @@ -202,6 +196,40 @@ public abstract partial class SharedStationSystem : EntitySystem return Filter.Empty(); } + /// + /// Retrieves a filter for everything on the same map as a given station. + /// + public Filter GetOnMap(StationDataComponent dataComponent) + { + var filter = Filter.Empty(); + _mapIds.Clear(); + + // First collect all valid map IDs where station grids exist + foreach (var gridUid in dataComponent.Grids) + { + if (!TryComp(gridUid, out TransformComponent? xform)) + continue; + + var mapId = xform.MapID; + if (!_mapIds.Contains(mapId)) + _mapIds.Add(mapId); + } + + foreach (var session in Filter.GetAllPlayers(_player)) + { + var entity = session.AttachedEntity; + if (entity == null || !TryComp(entity, out TransformComponent? xform)) + continue; + + if (!_mapIds.Contains(xform.MapID)) + continue; + + filter.AddPlayer(session); + } + + return filter; + } + /// /// Retrieves a filter for everything in a particular station or near its member grids. /// @@ -226,7 +254,7 @@ public abstract partial class SharedStationSystem : EntitySystem foreach (var gridUid in dataComponent.Grids) { - if (!_gridQuery.TryComp(gridUid, out var grid) || + if (!GridQuery.TryComp(gridUid, out var grid) || !TryComp(gridUid, out TransformComponent? gridXform)) { continue; @@ -283,7 +311,8 @@ public abstract partial class SharedStationSystem : EntitySystem return filter; } - /// Returns true if a entity's parent is the station, and false if the entity is not on the station + /// + /// Returns true if an entity's parent is the station, and false if the entity is not on the station /// /// The entity to check if is on a grid /// If true, only the largest grid of each station will count, so if the entity is on diff --git a/Content.Shared/StationRecords/Systems/SharedGeneralStationRecordConsoleSystem.cs b/Content.Shared/StationRecords/Systems/SharedGeneralStationRecordConsoleSystem.cs index 8177045c3f..2ad0fd9665 100644 --- a/Content.Shared/StationRecords/Systems/SharedGeneralStationRecordConsoleSystem.cs +++ b/Content.Shared/StationRecords/Systems/SharedGeneralStationRecordConsoleSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Station; +using Content.Shared.Station.Systems; using Content.Shared.StationRecords.Components; using Content.Shared.StationRecords.Events; @@ -6,7 +6,7 @@ namespace Content.Shared.StationRecords.Systems; public abstract partial class SharedGeneralStationRecordConsoleSystem : EntitySystem { - [Dependency] protected SharedStationSystem StationSys = default!; + [Dependency] protected StationSystem StationSys = default!; [Dependency] protected StationRecordsSystem StationRecordsSys = default!; [Dependency] protected EntityQuery RecordsQuery = default!; diff --git a/Content.Shared/Trigger/Systems/AlertLevelChangeOnTriggerSystem.cs b/Content.Shared/Trigger/Systems/AlertLevelChangeOnTriggerSystem.cs index 55125edde9..1499e679dd 100644 --- a/Content.Shared/Trigger/Systems/AlertLevelChangeOnTriggerSystem.cs +++ b/Content.Shared/Trigger/Systems/AlertLevelChangeOnTriggerSystem.cs @@ -1,13 +1,13 @@ using Content.Shared.AlertLevel; +using Content.Shared.Station.Systems; using Content.Shared.Trigger.Components.Effects; -using Content.Shared.Station; namespace Content.Shared.Trigger.Systems; public sealed partial class AlertLevelChangeOnTriggerSystem : EntitySystem { [Dependency] private AlertLevelSystem _alertLevel = default!; - [Dependency] private SharedStationSystem _station = default!; + [Dependency] private StationSystem _station = default!; public override void Initialize() { diff --git a/Resources/Prototypes/GameRules/roundstart.yml b/Resources/Prototypes/GameRules/roundstart.yml index cd4562e67e..ee0f0f7f5c 100644 --- a/Resources/Prototypes/GameRules/roundstart.yml +++ b/Resources/Prototypes/GameRules/roundstart.yml @@ -4,6 +4,13 @@ components: - type: GameRule +- type: entity + id: BaseSilentGameRule + abstract: true + components: + - type: GameRule + silent: true + - type: entity parent: BaseGameRule id: BaseRoundstartAntagRule @@ -465,7 +472,7 @@ # variation passes - type: entity id: BasicRoundstartVariation - parent: BaseGameRule + parent: BaseSilentGameRule components: - type: RoundstartStationVariationRule rules: diff --git a/Resources/Prototypes/GameRules/variation.yml b/Resources/Prototypes/GameRules/variation.yml index 5e2fe0576b..13b9b18d68 100644 --- a/Resources/Prototypes/GameRules/variation.yml +++ b/Resources/Prototypes/GameRules/variation.yml @@ -1,9 +1,9 @@ # Base - type: entity - id: BaseVariationPass - parent: BaseGameRule abstract: true + parent: BaseSilentGameRule + id: BaseVariationPass components: - type: StationVariationPassRule From a023e5784cde90492c34c547ebbd2913565edd95 Mon Sep 17 00:00:00 2001 From: Whatstone <166147148+whatston3@users.noreply.github.com> Date: Thu, 17 Sep 2026 09:23:54 -0400 Subject: [PATCH 150/197] Cleanup: Remove byte order markers from most files (#45796) --- .github/labeler.yml | 2 +- .github/workflows/build-map-renderer.yml | 2 +- .github/workflows/check-crlf.yml | 2 +- .github/workflows/labeler-needsreview.yml | 2 +- .github/workflows/labeler-pr.yml | 2 +- .github/workflows/labeler-untriaged.yml | 2 +- .github/workflows/test-packaging.yml | 2 +- .vscode/launch.json | 2 +- Content.Benchmarks/ComponentQueryBenchmark.cs | 2 +- Content.Benchmarks/DestructibleBenchmark.cs | 2 +- Content.Benchmarks/DeviceNetworkingBenchmark.cs | 2 +- Content.Benchmarks/HeatCapacityBenchmark.cs | 2 +- Content.Benchmarks/NetSerializerIntBenchmark.cs | 2 +- Content.Benchmarks/Program.cs | 2 +- Content.Benchmarks/PvsBenchmark.cs | 2 +- Content.Benchmarks/RaiseEventBenchmark.cs | 2 +- Content.Benchmarks/SpawnEquipDeleteBenchmark.cs | 2 +- Content.Client/Access/IdCardSystem.cs | 2 +- Content.Client/Access/Systems/JobStatusSystem.cs | 2 +- Content.Client/Administration/AdminOverlayCommand.cs | 2 +- Content.Client/Administration/Managers/IClientAdminManager.cs | 2 +- Content.Client/Administration/Systems/BwoinkSystem.cs | 2 +- Content.Client/Administration/Systems/HeadstandSystem.cs | 2 +- Content.Client/Administration/Systems/KillSignSystem.cs | 2 +- Content.Client/Administration/UI/BanList/BanListEui.cs | 2 +- .../Administration/UI/BanList/BanListIdsPopup.xaml.cs | 2 +- .../Administration/UI/BanList/BanListWindow.xaml.cs | 2 +- .../Administration/UI/BanList/Bans/BanListControl.xaml.cs | 2 +- .../Administration/UI/BanList/Bans/BanListHeader.xaml.cs | 2 +- .../Administration/UI/BanList/Bans/BanListLine.xaml.cs | 2 +- Content.Client/Administration/UI/BanList/IBanListLine.cs | 2 +- .../UI/BanList/RoleBans/RoleBanListControl.xaml.cs | 2 +- .../UI/BanList/RoleBans/RoleBanListHeader.xaml.cs | 2 +- .../UI/BanList/RoleBans/RoleBanListLine.xaml.cs | 2 +- .../Administration/UI/CustomControls/AdminLogImpactButton.cs | 2 +- .../Administration/UI/CustomControls/AdminLogLabel.cs | 2 +- .../Administration/UI/CustomControls/AdminLogPlayerButton.cs | 2 +- .../Administration/UI/CustomControls/AdminLogTypeButton.cs | 2 +- Content.Client/Administration/UI/CustomControls/HSeparator.cs | 2 +- .../Administration/UI/CustomControls/UICommandButton.cs | 2 +- Content.Client/Administration/UI/CustomControls/VSeparator.cs | 2 +- Content.Client/Administration/UI/EventLog/AdminEventLogEui.cs | 2 +- .../Administration/UI/Logs/AdminLogsControl.xaml.cs | 2 +- Content.Client/Administration/UI/Logs/AdminLogsEui.cs | 2 +- Content.Client/Administration/UI/Logs/AdminLogsWindow.xaml.cs | 2 +- .../Administration/UI/Notes/AdminNotesLinePopup.xaml.cs | 2 +- Content.Client/Administration/UI/Notes/NoteEdit.xaml.cs | 2 +- .../Administration/UI/Tabs/AdminTab/AdminTab.xaml.cs | 2 +- .../Administration/UI/Tabs/AdminbusTab/AdminbusTab.xaml.cs | 2 +- .../Administration/UI/Tabs/AtmosTab/AtmosTab.xaml.cs | 2 +- .../UI/Tabs/PanicBunkerTab/PanicBunkerStatusWindow.xaml.cs | 2 +- .../UI/Tabs/PanicBunkerTab/PanicBunkerTab.xaml.cs | 2 +- .../Administration/UI/Tabs/PlayerTab/PlayerTabEntry.xaml.cs | 2 +- .../Administration/UI/Tabs/PlayerTab/PlayerTabHeader.xaml.cs | 2 +- Content.Client/Administration/UI/Tabs/RoundTab.xaml.cs | 2 +- Content.Client/Administration/UI/Tabs/ServerTab.xaml.cs | 2 +- Content.Client/Animations/EntityPickupAnimationComponent.cs | 2 +- Content.Client/Animations/EntityPickupAnimationSystem.cs | 2 +- Content.Client/Anomaly/Effects/GravityAnomalySystem.cs | 2 +- Content.Client/Anomaly/Ui/AnomalyGeneratorWindow.xaml.cs | 2 +- Content.Client/Anomaly/Ui/AnomalyScannerMenu.xaml.cs | 2 +- Content.Client/Arcade/UI/BlockGameBoundUserInterface.cs | 2 +- .../Arcade/UI/SpaceVillainArcadeBoundUserInterface.cs | 2 +- Content.Client/Armor/ArmorSystem.cs | 2 +- .../Atmos/Components/MaxPressureVisualsComponent.cs | 2 +- Content.Client/Atmos/EntitySystems/AtmosphereSystem.cs | 2 +- .../Atmos/EntitySystems/MaxPressureVisualsSystem.cs | 2 +- Content.Client/Atmos/Rotting/RottingSystem.cs | 2 +- Content.Client/Atmos/UI/GasCanisterBoundUserInterface.cs | 2 +- .../Atmos/UI/GasPressureRegulatorBoundUserInterface.cs | 2 +- Content.Client/Atmos/UI/GasPressureRegulatorWindow.xaml.cs | 2 +- Content.Client/Atmos/UI/GasThermomachineBoundUserInterface.cs | 2 +- Content.Client/Atmos/UI/GasVolumePumpBoundUserInterface.cs | 2 +- Content.Client/Audio/ClientGlobalSoundSystem.cs | 2 +- Content.Client/Audio/Midi/MidiFileCollectionManager.cs | 2 +- Content.Client/BarSign/Ui/BarSignMenu.xaml.cs | 2 +- Content.Client/Beam/BeamSystem.cs | 2 +- Content.Client/Bql/ToolshedVisualizeEui.cs | 2 +- Content.Client/Bql/ToolshedVisualizeWindow.xaml.cs | 2 +- Content.Client/Cargo/UI/CargoOrderRow.xaml.cs | 2 +- Content.Client/Cargo/UI/CargoProductRow.xaml.cs | 2 +- Content.Client/CartridgeLoader/Cartridges/CrewManifestUi.cs | 2 +- Content.Client/CartridgeLoader/Cartridges/LogProbeUi.cs | 2 +- .../CartridgeLoader/Cartridges/LogProbeUiEntry.xaml.cs | 2 +- .../CartridgeLoader/Cartridges/LogProbeUiFragment.xaml.cs | 2 +- Content.Client/CartridgeLoader/Cartridges/NetProbeUi.cs | 2 +- .../CartridgeLoader/Cartridges/NetProbeUiFragment.xaml.cs | 2 +- Content.Client/CartridgeLoader/Cartridges/NotekeeperUi.cs | 2 +- .../CartridgeLoader/Cartridges/NotekeeperUiFragment.xaml.cs | 2 +- .../Chat/TypingIndicator/TypingIndicatorVisualizerSystem.cs | 2 +- .../Chemistry/Components/SolutionItemStatusComponent.cs | 2 +- .../Chemistry/EntitySystems/ChemistryGuideDataSystem.cs | 2 +- .../Chemistry/EntitySystems/InjectorStatusControlSystem.cs | 2 +- .../Chemistry/EntitySystems/SolutionItemStatusSystem.cs | 2 +- Content.Client/Chemistry/UI/SolutionStatusControl.cs | 2 +- Content.Client/Chemistry/UI/TransferAmountWindow.xaml.cs | 2 +- Content.Client/Chemistry/Visualizers/SmokeVisualizerSystem.cs | 2 +- Content.Client/Cloning/UI/AcceptCloningEui.cs | 2 +- Content.Client/Clothing/Systems/ChameleonClothingSystem.cs | 2 +- Content.Client/Commands/ActionsCommands.cs | 2 +- .../Configurable/UI/ConfigurationBoundUserInterface.cs | 2 +- Content.Client/Configurable/UI/ConfigurationMenu.cs | 2 +- Content.Client/Cooldown/CooldownGraphic.cs | 2 +- Content.Client/Crayon/UI/CrayonBoundUserInterface.cs | 2 +- Content.Client/CrewManifest/UI/CrewManifestListing.cs | 2 +- Content.Client/CrewManifest/UI/CrewManifestSection.cs | 2 +- Content.Client/Damage/Systems/StaminaSystem.cs | 2 +- Content.Client/DebugMon/DebugMonitorManager.cs | 2 +- Content.Client/Decals/ToggleDecalCommand.cs | 2 +- Content.Client/Decals/UI/PaletteColorPicker.xaml.cs | 2 +- Content.Client/Eui/BaseEui.cs | 2 +- Content.Client/Eui/EuiManager.cs | 2 +- Content.Client/Explosion/ScatteringGrenadeSystem.cs | 2 +- Content.Client/FeedbackPopup/ClientFeedbackManager.cs | 2 +- Content.Client/FeedbackPopup/FeedbackEntry.xaml.cs | 2 +- Content.Client/FeedbackPopup/FeedbackPopupSheetlet.cs | 2 +- Content.Client/FeedbackPopup/FeedbackPopupWindow.xaml.cs | 2 +- Content.Client/FlavorText/FlavorText.xaml.cs | 2 +- Content.Client/Fluids/PuddleDebugOverlaySystem.cs | 2 +- Content.Client/Fluids/UI/AbsorbentItemStatus.xaml.cs | 2 +- Content.Client/GameTicking/Managers/TitleWindowManager.cs | 2 +- Content.Client/Ghost/Commands/ToggleGhostVisibilityCommand.cs | 2 +- Content.Client/Ghost/UI/ReturnToBodyEui.cs | 2 +- Content.Client/GhostKick/GhostKickManager.cs | 2 +- Content.Client/GlobalUsings.cs | 2 +- Content.Client/Graphics/OverlayResourceCache.cs | 2 +- .../Guidebook/Components/GuidebookControlsTestComponent.cs | 2 +- Content.Client/Hands/UI/HandVirtualItemStatus.xaml.cs | 2 +- .../HealthAnalyzer/UI/HealthAnalyzerBoundUserInterface.cs | 2 +- Content.Client/Implants/ChameleonControllerSystem.cs | 2 +- Content.Client/Implants/ImplanterSystem.cs | 2 +- .../Implants/UI/ChameleonControllerBoundUserInterface.cs | 2 +- Content.Client/Info/Info.xaml.cs | 2 +- Content.Client/Info/InfoControlsSection.xaml.cs | 2 +- Content.Client/Info/LinkBanner.cs | 2 +- Content.Client/Info/RulesControl.xaml.cs | 2 +- Content.Client/Instruments/InstrumentSystem.MidiParsing.cs | 2 +- Content.Client/Instruments/MidiParser/MidiInstrument.cs | 2 +- Content.Client/Instruments/MidiParser/MidiParser.cs | 2 +- Content.Client/Instruments/MidiParser/MidiStreamWrapper.cs | 2 +- Content.Client/Instruments/UI/ChannelItem.xaml.cs | 2 +- Content.Client/Instruments/UI/MinVolumeControl.xaml.cs | 2 +- Content.Client/Interaction/DragDropHelper.cs | 2 +- Content.Client/Inventory/VirtualItemSystem.cs | 2 +- Content.Client/Items/ItemStatusMessages.cs | 2 +- Content.Client/Items/Systems/ItemSystem.cs | 2 +- Content.Client/Items/UI/PollingItemStatusControl.cs | 2 +- Content.Client/Kitchen/UI/MicrowaveMenu.xaml.cs | 2 +- Content.Client/Light/Controls/LightReplacerStatusControl.cs | 2 +- .../Light/EntitySystems/LightReplacerStatusControlSystem.cs | 2 +- Content.Client/Lightning/Components/LightningComponent.cs | 2 +- Content.Client/MainMenu/UI/MainMenuControl.xaml.cs | 2 +- Content.Client/MapText/MapTextComponent.cs | 2 +- Content.Client/MapText/MapTextOverlay.cs | 2 +- Content.Client/MapText/MapTextSystem.cs | 2 +- Content.Client/Mapping/MappingActionsButton.xaml.cs | 2 +- Content.Client/Mapping/MappingDoNotMeasure.xaml.cs | 2 +- Content.Client/Mapping/MappingManager.cs | 2 +- Content.Client/Mapping/MappingOverlay.cs | 2 +- Content.Client/Mapping/MappingPrototype.cs | 2 +- Content.Client/Mapping/MappingScreen.xaml.cs | 2 +- Content.Client/Mapping/MappingSpawnButton.xaml.cs | 2 +- Content.Client/MassMedia/Ui/ArticleEditorPanel.xaml.cs | 2 +- Content.Client/Materials/MaterialReclaimerSystem.cs | 2 +- Content.Client/Mech/MechAssemblyVisualizerSystem.cs | 2 +- Content.Client/Mech/MechAssemblyVisualsComponent.cs | 2 +- Content.Client/Mech/MechSystem.cs | 2 +- Content.Client/Mech/Ui/Equipment/MechGrabberUi.cs | 2 +- .../Mech/Ui/Equipment/MechGrabberUiFragment.xaml.cs | 2 +- Content.Client/Medical/Cryogenics/CryoPodSystem.cs | 2 +- Content.Client/MedicalScanner/MedicalScannerComponent.cs | 2 +- Content.Client/Mind/MindSystem.cs | 2 +- Content.Client/Mobs/Systems/DeathgaspSystem.cs | 2 +- Content.Client/MouseRotator/MouseRotatorSystem.cs | 2 +- .../NetworkConfiguratorBoundUserInterface.cs | 2 +- .../NetworkConfiguratorConfigurationMenu.xaml.cs | 2 +- .../NetworkConfigurator/NetworkConfiguratorListMenu.xaml.cs | 2 +- Content.Client/NodeContainer/NodeGroupSystem.cs | 2 +- Content.Client/NodeContainer/NodeVisCommand.cs | 2 +- Content.Client/NukeOps/WarDeclaratorBoundUserInterface.cs | 2 +- Content.Client/NukeOps/WarDeclaratorWindow.xaml.cs | 2 +- Content.Client/Nutrition/EntitySystems/InfantSystem.cs | 2 +- Content.Client/Options/OptionsVisualizerComponent.cs | 2 +- Content.Client/Options/OptionsVisualizerSystem.cs | 2 +- Content.Client/Options/UI/OptionDropDown.xaml.cs | 2 +- Content.Client/Options/UI/Tabs/MiscTab.xaml.cs | 2 +- Content.Client/Orbit/OrbitVisualsSystem.cs | 2 +- Content.Client/PDA/PdaBorderColorComponent.cs | 2 +- Content.Client/PDA/PdaNavigationButton.xaml.cs | 2 +- Content.Client/PDA/PdaProgramItem.xaml.cs | 2 +- Content.Client/PDA/PdaSettingsButton.xaml.cs | 2 +- Content.Client/PDA/PdaWindow.xaml.cs | 2 +- Content.Client/Parallax/Managers/GeneratedParallaxCache.cs | 2 +- Content.Client/Parallax/ParallaxControl.cs | 2 +- .../UI/ParticleAcceleratorBoundUserInterface.cs | 2 +- Content.Client/Physics/Controllers/ConveyorController.cs | 2 +- Content.Client/Players/PlayerSystem.cs | 2 +- Content.Client/Players/RateLimiting/PlayerRateLimitManager.cs | 2 +- Content.Client/PneumaticCannon/PneumaticCannonSystem.cs | 2 +- .../Pointing/Components/RoguePointingArrowComponent.cs | 2 +- Content.Client/Points/PointSystem.cs | 2 +- Content.Client/Power/APC/UI/ApcMenu.xaml.cs | 2 +- Content.Client/Power/Battery/BatteryBoundUserInterface.cs | 2 +- Content.Client/Power/Battery/BatteryMenu.xaml.cs | 2 +- Content.Client/Power/Components/ApcPowerReceiverComponent.cs | 2 +- Content.Client/Power/Generator/GeneratorWindow.xaml.cs | 2 +- .../Power/Generator/PortableGeneratorBoundUserInterface.cs | 2 +- .../Power/PowerCharge/PowerChargeBoundUserInterface.cs | 2 +- Content.Client/Power/PowerCharge/PowerChargeComponent.cs | 2 +- Content.Client/Power/PowerCharge/PowerChargeWindow.xaml.cs | 2 +- Content.Client/Power/SMES/SmesSystem.cs | 2 +- Content.Client/RatKing/RatKingSystem.cs | 2 +- Content.Client/Replay/ReplayToggleScreenshotModeCommand.cs | 2 +- Content.Client/Replay/UI/Loading/ReplayLoadingFailed.cs | 2 +- .../Replay/UI/Loading/ReplayLoadingFailedControl.xaml.cs | 2 +- Content.Client/Research/ResearchSystem.cs | 2 +- Content.Client/Research/UI/TechnologyCardControl.xaml.cs | 2 +- Content.Client/Revenant/CorporealSystem.cs | 2 +- Content.Client/Revenant/RevenantOverloadedLightsSystem.cs | 2 +- Content.Client/Revolutionary/UI/DeconvertedEui.cs | 2 +- Content.Client/RichText/UserFormattableTags.cs | 2 +- Content.Client/Roles/RoleSystem.cs | 2 +- Content.Client/SSDIndicator/SSDIndicatorSystem.cs | 2 +- Content.Client/Security/Ui/GenpopLockerMenu.xaml.cs | 2 +- .../SensorMonitoring/SensorMonitoringWindow.xaml.cs | 2 +- Content.Client/Silicons/Borgs/BorgSelectTypeMenu.xaml.cs | 2 +- Content.Client/Silicons/Borgs/BorgSelectTypeUserInterface.cs | 2 +- Content.Client/Silicons/Borgs/BorgSwitchableTypeSystem.cs | 2 +- Content.Client/Silicons/Borgs/BorgSystem.Battery.cs | 2 +- Content.Client/Silicons/Borgs/BorgSystem.cs | 2 +- Content.Client/Silicons/Bots/HugBotSystem.cs | 2 +- .../Laws/SiliconLawEditUi/SiliconLawContainer.xaml.cs | 2 +- .../Silicons/Laws/SiliconLawEditUi/SiliconLawEui.cs | 2 +- .../Silicons/Laws/SiliconLawEditUi/SiliconLawUi.xaml.cs | 2 +- Content.Client/Silicons/Laws/SiliconLawSystem.cs | 2 +- Content.Client/Singularity/Systems/EmitterSystem.cs | 2 +- Content.Client/Singularity/Systems/SingularitySystem.cs | 2 +- Content.Client/Sound/EmitSoundSystem.cs | 2 +- Content.Client/Sprite/SimpleSpriteOverlaySystem.cs | 2 +- .../StationRecords/GeneralStationRecordConsoleSystem.cs | 2 +- .../Storage/Components/StorageContainerVisualsComponent.cs | 2 +- Content.Client/Storage/Systems/EntityStorageSystem.cs | 2 +- .../Storage/Systems/StorageContainerVisualsSystem.cs | 2 +- Content.Client/Store/StoreSystem.cs | 2 +- Content.Client/Stylesheets/BaseStylesheet.Fonts.cs | 2 +- Content.Client/Stylesheets/BaseStylesheet.Resources.cs | 2 +- Content.Client/Stylesheets/BaseStylesheet.Sheetlets.cs | 2 +- Content.Client/Stylesheets/BaseStylesheet.Textures.cs | 2 +- Content.Client/Stylesheets/BaseStylesheet.cs | 2 +- Content.Client/Stylesheets/Colorspace/ColorExtensions.cs | 2 +- Content.Client/Stylesheets/CommonSheetletAttribute.cs | 2 +- Content.Client/Stylesheets/Fonts/NotoFontFamilyStack.cs | 2 +- Content.Client/Stylesheets/ISheetletConfig.cs | 2 +- Content.Client/Stylesheets/IStyleResources.cs | 2 +- Content.Client/Stylesheets/PalettedStylesheet.Palettes.cs | 2 +- Content.Client/Stylesheets/PalettedStylesheet.cs | 2 +- Content.Client/Stylesheets/Sheetlet.cs | 2 +- Content.Client/Stylesheets/Sheetlets/CheckboxSheetlet.cs | 2 +- Content.Client/Stylesheets/Sheetlets/DividersSheetlet.cs | 2 +- Content.Client/Stylesheets/Sheetlets/FancyTreeSheetlet.cs | 2 +- Content.Client/Stylesheets/Sheetlets/Hud/ChatSheetlet.cs | 2 +- .../Stylesheets/Sheetlets/Hud/ItemStatusSheetlet.cs | 2 +- Content.Client/Stylesheets/Sheetlets/Hud/TooltipSheetlet.cs | 2 +- Content.Client/Stylesheets/Sheetlets/ItemListSheetlet.cs | 2 +- Content.Client/Stylesheets/Sheetlets/LineEditSheetlet.cs | 2 +- Content.Client/Stylesheets/Sheetlets/MenuButtonSheetlet.cs | 2 +- Content.Client/Stylesheets/Sheetlets/PlaceholderSheetlet.cs | 2 +- Content.Client/Stylesheets/Sheetlets/RadialMenuSheetlet.cs | 2 +- Content.Client/Stylesheets/Sheetlets/SliderSheetlet.cs | 2 +- Content.Client/Stylesheets/Sheetlets/StripebackSheetlet.cs | 2 +- Content.Client/Stylesheets/Sheetlets/SwitchButtonSheetlet.cs | 2 +- Content.Client/Stylesheets/Sheetlets/TabContainerSheetlet.cs | 2 +- Content.Client/Stylesheets/Sheetlets/WindowSheetlet.cs | 2 +- Content.Client/Stylesheets/StyleProperties.cs | 2 +- Content.Client/Stylesheets/StyleSpace.cs | 2 +- Content.Client/Stylesheets/StylesheetHelpers.cs | 2 +- .../Stylesheets/Stylesheets/NanotrasenStylesheet.Palettes.cs | 2 +- .../Stylesheets/Stylesheets/NanotrasenStylesheet.cs | 2 +- Content.Client/Tabletop/UI/TabletopWindow.xaml.cs | 2 +- Content.Client/Teleportation/PortalSystem.cs | 2 +- Content.Client/Teleportation/TeleportLocationsSystem.cs | 2 +- .../Teleportation/Ui/TeleportLocationsBoundUserInterface.cs | 2 +- Content.Client/Teleportation/Ui/TeleportMenu.xaml.cs | 2 +- Content.Client/Temperature/Systems/TemperatureSystem.cs | 2 +- Content.Client/Throwing/ThrownItemVisualizerSystem.cs | 2 +- .../Trigger/Systems/LightBehaviorOnTriggerSystem.cs | 2 +- Content.Client/UserInterface/BoundKeyHelpers.cs | 2 +- Content.Client/UserInterface/BuiPreTickUpdateSystem.cs | 2 +- Content.Client/UserInterface/BuiPredictionState.cs | 2 +- Content.Client/UserInterface/Controls/ClipControl.cs | 2 +- Content.Client/UserInterface/Controls/ConfirmButton.cs | 2 +- Content.Client/UserInterface/Controls/FancyWindow.xaml.cs | 2 +- Content.Client/UserInterface/Controls/HLine.cs | 2 +- Content.Client/UserInterface/Controls/HSpacer.cs | 2 +- Content.Client/UserInterface/Controls/MainViewport.cs | 2 +- Content.Client/UserInterface/Controls/OnOffButton.xaml.cs | 2 +- Content.Client/UserInterface/Controls/ProgressTextureRect.cs | 2 +- Content.Client/UserInterface/Controls/SearchListContainer.cs | 2 +- Content.Client/UserInterface/Controls/SlotButton.cs | 2 +- Content.Client/UserInterface/Controls/TextLinkLabel.cs | 2 +- Content.Client/UserInterface/Controls/VSpacer.cs | 2 +- Content.Client/UserInterface/Fragments/UIFragment.cs | 2 +- Content.Client/UserInterface/Fragments/UiFragmentComponent.cs | 2 +- Content.Client/UserInterface/InputCoalescer.cs | 2 +- Content.Client/UserInterface/RichText/TextLinkTag.Entity.cs | 2 +- Content.Client/UserInterface/RichText/TextLinkTag.Plain.cs | 2 +- Content.Client/UserInterface/RichText/TextLinkTag.cs | 2 +- .../UserInterface/Screens/DefaultGameScreen.xaml.cs | 2 +- .../Systems/Actions/Controls/ActionPageButtons.xaml.cs | 2 +- .../UserInterface/Systems/Actions/Widgets/ActionsBar.xaml.cs | 2 +- .../Systems/Actions/Windows/ActionsWindow.xaml.cs | 2 +- .../UserInterface/Systems/Admin/AdminUIController.cs | 2 +- .../Character/Controls/CharacterObjectiveControl.xaml.cs | 2 +- .../Systems/Character/Windows/CharacterWindow.xaml.cs | 2 +- .../Systems/Chat/Controls/ChannelFilterButton.cs | 2 +- .../Systems/Chat/Controls/ChannelFilterCheckbox.cs | 2 +- .../UserInterface/Systems/Chat/Controls/ChatInputBox.xaml.cs | 2 +- .../UserInterface/Systems/Chat/Controls/ChatPopupButton.cs | 2 +- .../Systems/DecalPlacer/DecalPlacerUIController.cs | 2 +- .../Systems/EscapeMenu/EscapeContextUIController.cs | 2 +- .../Ghost/Controls/Roles/GhostRoleEntryButtons.xaml.cs | 2 +- .../Systems/Ghost/Controls/Roles/MakeGhostRoleEui.cs | 2 +- .../Systems/Ghost/Controls/Roles/MakeGhostRoleWindow.xaml.cs | 2 +- .../UserInterface/Systems/Hands/Controls/HandButton.cs | 2 +- .../UserInterface/Systems/Hotbar/HotbarUIController.cs | 2 +- .../UserInterface/Systems/Hotbar/Widgets/HotbarGui.xaml.cs | 2 +- .../Systems/Inventory/Controls/InventoryDisplay.cs | 2 +- .../Systems/Inventory/Controls/ItemSlotButtonContainer.cs | 2 +- .../Systems/Inventory/Controls/ItemSlotUIContainer.cs | 2 +- .../Systems/Inventory/Widgets/InventoryGui.xaml.cs | 2 +- .../Systems/Inventory/Windows/StrippingWindow.xaml.cs | 2 +- .../Systems/MenuBar/Widgets/GameTopMenuBar.xaml.cs | 2 +- .../Objectives/Controls/ObjectiveBriefingControl.xaml.cs | 2 +- .../Objectives/Controls/ObjectiveConditionsControl.xaml.cs | 2 +- .../Systems/Sandbox/Windows/SandboxWindow.xaml.cs | 2 +- .../UserInterface/XamlExtensions/TextureExtension.cs | 2 +- Content.Client/Verbs/UI/ConfirmationMenuElement.cs | 2 +- Content.Client/Viewport/IMainViewport.cs | 2 +- Content.Client/Viewport/ViewportExt.cs | 2 +- Content.Client/Voting/UI/VoteCallMenuButton.cs | 2 +- .../Weapons/Ranged/Systems/GunSystem.BasicEntity.cs | 2 +- .../Weapons/Ranged/Systems/GunSystem.CustomAmmoCounter.cs | 2 +- Content.Docfx/docfx.json | 2 +- Content.Docfx/toc.yml | 2 +- Content.IntegrationTests/AssemblyInfo.cs | 2 +- Content.IntegrationTests/Pair/TestPair.Helpers.cs | 2 +- Content.IntegrationTests/Pair/TestPair.cs | 2 +- Content.IntegrationTests/PoolManagerTestEventHandler.cs | 2 +- Content.IntegrationTests/PoolSettings.cs | 2 +- .../Tests/Administration/Logs/AddTests.cs | 2 +- .../Tests/Administration/Logs/QueryTests.cs | 2 +- Content.IntegrationTests/Tests/Atmos/ConstantsTest.cs | 2 +- Content.IntegrationTests/Tests/Atmos/GasMixtureTest.cs | 2 +- .../Tests/Audio/Midi/MidiFileCollectionManagerTests.cs | 2 +- Content.IntegrationTests/Tests/Buckle/BuckleTest.Interact.cs | 2 +- .../Tests/Chemistry/FixedPoint2SerializationTest.cs | 2 +- Content.IntegrationTests/Tests/Commands/RejuvenateTest.cs | 2 +- Content.IntegrationTests/Tests/ConfigPresetTests.cs | 2 +- .../Tests/Engineering/InflatablesDeflateTest.cs | 2 +- .../Tests/GameRules/AllGamePresetsStartTest.cs | 2 +- .../Tests/GameRules/AntagGhostRoleTest.cs | 2 +- Content.IntegrationTests/Tests/GameRules/AntagTest.cs | 2 +- Content.IntegrationTests/Tests/GameRules/SecretStartsTest.cs | 2 +- Content.IntegrationTests/Tests/Gibbing/GibTest.cs | 2 +- .../Tests/Kitchen/HandheldGrinderInteractionTest.cs | 2 +- Content.IntegrationTests/Tests/MachineBoardTest.cs | 2 +- Content.IntegrationTests/Tests/MappingEditorTest.cs | 2 +- .../Tests/Minds/MindTest.DeleteAllThenGhost.cs | 2 +- Content.IntegrationTests/Tests/Minds/MindTests.cs | 2 +- Content.IntegrationTests/Tests/Minds/RoleTests.cs | 2 +- .../Tests/Puller/InteractingEntitiesTest.cs | 2 +- Content.IntegrationTests/Tests/ResettingEntitySystemTests.cs | 2 +- Content.IntegrationTests/Tests/SalvageTest.cs | 2 +- Content.IntegrationTests/Tests/Strip/StrippableTest.cs | 2 +- Content.IntegrationTests/Tests/Toolshed/AdminTest.cs | 2 +- Content.IntegrationTests/Tests/Toolshed/LocTest.cs | 2 +- .../Tests/Utility/EntitySystemExtensionsTest.cs | 2 +- Content.IntegrationTests/Tests/Weapons/WeaponTests.cs | 2 +- Content.IntegrationTests/Tests/Wires/WireLayoutTest.cs | 2 +- Content.MapRenderer/CommandLineArguments.cs | 2 +- Content.MapRenderer/Extensions/DirectoryExtensions.cs | 2 +- Content.MapRenderer/Extensions/EnvironmentExtensions.cs | 2 +- Content.MapRenderer/MapViewerData.cs | 2 +- Content.MapRenderer/Painters/DecalData.cs | 2 +- Content.MapRenderer/Painters/DecalPainter.cs | 2 +- Content.MapRenderer/Painters/EntityData.cs | 2 +- Content.MapRenderer/Painters/EntityPainter.cs | 2 +- Content.MapRenderer/ParallaxOutput.cs | 2 +- Content.MapRenderer/Program.cs | 2 +- Content.MapRenderer/RenderedGridImage.cs | 2 +- Content.Packaging/ClientPackaging.cs | 2 +- Content.Packaging/DepsHandler.cs | 2 +- Content.Packaging/Program.cs | 2 +- Content.Packaging/SharedPackaging.cs | 2 +- Content.PatreonParser/Attributes.cs | 2 +- Content.PatreonParser/CurrentlyEntitledTiers.cs | 2 +- Content.PatreonParser/Data.cs | 2 +- Content.PatreonParser/Included.cs | 2 +- Content.PatreonParser/Patron.cs | 2 +- Content.PatreonParser/Program.cs | 2 +- Content.PatreonParser/Relationships.cs | 2 +- Content.PatreonParser/Root.cs | 2 +- Content.PatreonParser/Row.cs | 2 +- Content.PatreonParser/TierData.cs | 2 +- Content.Replay/Menu/SelectReplayWindow.xaml.cs | 2 +- Content.Server.Database/DesignTimeContextFactories.cs | 2 +- .../Migrations/Postgres/20200929113117_Init.Designer.cs | 2 +- .../Migrations/Postgres/20200929113117_Init.cs | 2 +- .../Postgres/20201006223000_SelectedCharacterSlotFk.cs | 2 +- .../Migrations/Postgres/20201028210620_Admins.Designer.cs | 2 +- .../Migrations/Postgres/20201028210620_Admins.cs | 2 +- .../Postgres/20201109092921_ExtraIndices.Designer.cs | 2 +- .../Migrations/Postgres/20201109092921_ExtraIndices.cs | 2 +- .../Postgres/20201203093409_ClothingAndPronouns.Designer.cs | 2 +- .../Migrations/Postgres/20201203093409_ClothingAndPronouns.cs | 2 +- .../Postgres/20210103151756_BackpackPreference.Designer.cs | 2 +- .../Migrations/Postgres/20210103151756_BackpackPreference.cs | 2 +- .../Postgres/20210211211033_AdminOOCColor.Designer.cs | 2 +- .../Migrations/Postgres/20210211211033_AdminOOCColor.cs | 2 +- .../Migrations/Postgres/20210321230012_HWID.Designer.cs | 2 +- .../Migrations/Postgres/20210321230012_HWID.cs | 2 +- .../Postgres/20210915093340_UniqueHighPriorityJob.Designer.cs | 2 +- .../Postgres/20210915093340_UniqueHighPriorityJob.cs | 2 +- .../Migrations/Postgres/20211120202701_AdminLogs.Designer.cs | 2 +- .../Migrations/Postgres/20211120202701_AdminLogs.cs | 2 +- .../Postgres/20211121123543_AdminLogsImpact.Designer.cs | 2 +- .../Migrations/Postgres/20211121123543_AdminLogsImpact.cs | 2 +- .../Migrations/Postgres/20220103235647_whitelist.Designer.cs | 2 +- .../Migrations/Postgres/20220103235647_whitelist.cs | 2 +- .../Postgres/20220108185749_add-species.Designer.cs | 2 +- .../Migrations/Postgres/20220108185749_add-species.cs | 2 +- .../Migrations/Postgres/20220127170845_UnifyMore.Designer.cs | 2 +- .../Migrations/Postgres/20220127170845_UnifyMore.cs | 2 +- .../Postgres/20220129005644_ServerBanHit.Designer.cs | 2 +- .../Migrations/Postgres/20220129005644_ServerBanHit.cs | 2 +- .../Migrations/Postgres/20220214061058_RoleBans.Designer.cs | 2 +- .../Migrations/Postgres/20220214061058_RoleBans.cs | 2 +- .../Migrations/Postgres/20220308222742_Cleanup.Designer.cs | 2 +- .../Migrations/Postgres/20220308222742_Cleanup.cs | 2 +- .../Postgres/20220310173734_SpeciesMarkings.Designer.cs | 2 +- .../Migrations/Postgres/20220310173734_SpeciesMarkings.cs | 2 +- .../Postgres/20220313151800_ServerNameFts.Designer.cs | 2 +- .../Migrations/Postgres/20220313151800_ServerNameFts.cs | 2 +- .../Migrations/Postgres/20220324144654_AdminNotes.Designer.cs | 2 +- .../Migrations/Postgres/20220324144654_AdminNotes.cs | 2 +- .../Postgres/20220325170225_PlayerReadRules.Designer.cs | 2 +- .../Migrations/Postgres/20220325170225_PlayerReadRules.cs | 2 +- .../Postgres/20220326104916_UploadedResourcesLog.Designer.cs | 2 +- .../Postgres/20220326104916_UploadedResourcesLog.cs | 2 +- .../Migrations/Postgres/20220503222955_FixIndices.Designer.cs | 2 +- .../Migrations/Postgres/20220503222955_FixIndices.cs | 2 +- .../Postgres/20220505084828_MarkingsJsonb.Designer.cs | 2 +- .../Migrations/Postgres/20220505084828_MarkingsJsonb.cs | 2 +- .../Migrations/Postgres/20220509060724_FlavorText.Designer.cs | 2 +- .../Migrations/Postgres/20220509060724_FlavorText.cs | 2 +- .../Migrations/Postgres/20220724000132_PlayTime.Designer.cs | 2 +- .../Migrations/Postgres/20220724000132_PlayTime.cs | 2 +- .../20230319110655_ProfileTraitIndexUnique.Designer.cs | 2 +- .../Postgres/20230319110655_ProfileTraitIndexUnique.cs | 2 +- .../Postgres/20230402214647_BanAutoDelete.Designer.cs | 2 +- .../Migrations/Postgres/20230402214647_BanAutoDelete.cs | 2 +- ...230725193102_AdminNotesImprovementsForeignKeys.Designer.cs | 2 +- .../20230725193102_AdminNotesImprovementsForeignKeys.cs | 2 +- .../Postgres/20230727190902_AdminLogCompoundKey.Designer.cs | 2 +- .../Migrations/Postgres/20230727190902_AdminLogCompoundKey.cs | 2 +- .../Postgres/20231021071411_RoundStartDate.Designer.cs | 2 +- .../Migrations/Postgres/20231021071411_RoundStartDate.cs | 2 +- .../Postgres/20231024041204_DropAdminLogEntity.Designer.cs | 2 +- .../Migrations/Postgres/20231024041204_DropAdminLogEntity.cs | 2 +- .../Postgres/20231126234054_ConnectionLogServer.Designer.cs | 2 +- .../Migrations/Postgres/20231126234054_ConnectionLogServer.cs | 2 +- .../Migrations/Postgres/20231226154937_AdminLogPk.Designer.cs | 2 +- .../Migrations/Postgres/20231226154937_AdminLogPk.cs | 2 +- .../Migrations/Postgres/20240112194620_Blacklist.Designer.cs | 2 +- .../Migrations/Postgres/20240112194620_Blacklist.cs | 2 +- .../20240201091301_SpawnPriorityPreference.Designer.cs | 2 +- .../Postgres/20240201091301_SpawnPriorityPreference.cs | 2 +- .../Postgres/20240301130641_ClothingRemoval.Designer.cs | 2 +- .../Migrations/Postgres/20240301130641_ClothingRemoval.cs | 2 +- .../Postgres/20240318022005_AdminMessageDismiss.Designer.cs | 2 +- .../Migrations/Postgres/20240318022005_AdminMessageDismiss.cs | 2 +- .../Migrations/Postgres/20240403072242_Loadouts.Designer.cs | 2 +- .../Migrations/Postgres/20240403072242_Loadouts.cs | 2 +- .../20240409013837_FixRoundStartDateNullability.Designer.cs | 2 +- .../Postgres/20240409013837_FixRoundStartDateNullability.cs | 2 +- .../Postgres/20240531011555_RoleWhitelist.Designer.cs | 2 +- .../Migrations/Postgres/20240531011555_RoleWhitelist.cs | 2 +- .../Postgres/20240606065731_RemoveLastReadRules.Designer.cs | 2 +- .../Migrations/Postgres/20240606065731_RemoveLastReadRules.cs | 2 +- .../Postgres/20240606121555_ban_notify_trigger.Designer.cs | 2 +- .../Migrations/Postgres/20240606121555_ban_notify_trigger.cs | 2 +- .../Postgres/20240606175154_ReturnLastReadRules.Designer.cs | 2 +- .../Migrations/Postgres/20240606175154_ReturnLastReadRules.cs | 2 +- .../20240621120713_ConnectionLogTimeIndex.Designer.cs | 2 +- .../Postgres/20240621120713_ConnectionLogTimeIndex.cs | 2 +- .../Postgres/20240623005121_BanTemplate.Designer.cs | 2 +- .../Migrations/Postgres/20240623005121_BanTemplate.cs | 2 +- .../Migrations/Postgres/20241111170112_ModernHwid.Designer.cs | 2 +- .../Migrations/Postgres/20241111170112_ModernHwid.cs | 2 +- .../Postgres/20241111193608_ConnectionTrust.Designer.cs | 2 +- .../Migrations/Postgres/20241111193608_ConnectionTrust.cs | 2 +- .../Migrations/Postgres/20241122174243_IPIntel.Designer.cs | 2 +- .../Migrations/Postgres/20241122174243_IPIntel.cs | 2 +- .../Postgres/20241223235939_AdminStatus.Designer.cs | 2 +- .../Migrations/Postgres/20241223235939_AdminStatus.cs | 2 +- .../Postgres/20250211131539_LoadoutNames.Designer.cs | 2 +- .../Migrations/Postgres/20250211131539_LoadoutNames.cs | 2 +- .../Postgres/20250314222016_ConstructionFavorites.Designer.cs | 2 +- .../Postgres/20250314222016_ConstructionFavorites.cs | 2 +- .../Postgres/20260118084629_OrganMarkings.Designer.cs | 2 +- .../Migrations/Postgres/20260118084629_OrganMarkings.cs | 2 +- .../Postgres/20260120200503_BanRefactor.Designer.cs | 2 +- .../Migrations/Postgres/20260120200503_BanRefactor.cs | 2 +- .../Postgres/20260126003838_CustomVoteLog.Designer.cs | 2 +- .../Migrations/Postgres/20260126003838_CustomVoteLog.cs | 2 +- .../Postgres/20260701024227_VoiceSelector.Designer.cs | 2 +- .../Migrations/Postgres/20260701024227_VoiceSelector.cs | 2 +- .../Postgres/PostgresServerDbContextModelSnapshot.cs | 2 +- .../Migrations/Sqlite/20200929113112_Init.Designer.cs | 2 +- .../Migrations/Sqlite/20200929113112_Init.cs | 2 +- .../Migrations/Sqlite/20201028210616_Admins.Designer.cs | 2 +- .../Migrations/Sqlite/20201028210616_Admins.cs | 2 +- .../Migrations/Sqlite/20201109092917_ExtraIndices.Designer.cs | 2 +- .../Migrations/Sqlite/20201109092917_ExtraIndices.cs | 2 +- .../Sqlite/20201203093351_ClothingAndPronouns.Designer.cs | 2 +- .../Migrations/Sqlite/20201203093351_ClothingAndPronouns.cs | 2 +- .../Sqlite/20210103151752_BackpackPreference.Designer.cs | 2 +- .../Migrations/Sqlite/20210103151752_BackpackPreference.cs | 2 +- .../Sqlite/20210211211028_AdminOOCColor.Designer.cs | 2 +- .../Migrations/Sqlite/20210211211028_AdminOOCColor.cs | 2 +- .../Migrations/Sqlite/20210321225959_HWID.Designer.cs | 2 +- .../Migrations/Sqlite/20210321225959_HWID.cs | 2 +- .../Sqlite/20210915093336_UniqueHighPriorityJob.Designer.cs | 2 +- .../Migrations/Sqlite/20210915093336_UniqueHighPriorityJob.cs | 2 +- .../Migrations/Sqlite/20211120202654_AdminLogs.Designer.cs | 2 +- .../Migrations/Sqlite/20211120202654_AdminLogs.cs | 2 +- .../Sqlite/20211121123536_AdminLogsImpact.Designer.cs | 2 +- .../Migrations/Sqlite/20211121123536_AdminLogsImpact.cs | 2 +- .../Migrations/Sqlite/20220103235637_whitelist.Designer.cs | 2 +- .../Migrations/Sqlite/20220103235637_whitelist.cs | 2 +- .../Migrations/Sqlite/20220108185734_add-species.Designer.cs | 2 +- .../Migrations/Sqlite/20220108185734_add-species.cs | 2 +- .../Migrations/Sqlite/20220127165122_UnifyMore.Designer.cs | 2 +- .../Migrations/Sqlite/20220127165122_UnifyMore.cs | 2 +- .../Migrations/Sqlite/20220129005638_ServerBanHit.Designer.cs | 2 +- .../Migrations/Sqlite/20220129005638_ServerBanHit.cs | 2 +- .../Migrations/Sqlite/20220214060745_RoleBans.Designer.cs | 2 +- .../Migrations/Sqlite/20220214060745_RoleBans.cs | 2 +- .../Migrations/Sqlite/20220308222736_Cleanup.Designer.cs | 2 +- .../Migrations/Sqlite/20220308222736_Cleanup.cs | 2 +- .../Sqlite/20220310173728_SpeciesMarkings.Designer.cs | 2 +- .../Migrations/Sqlite/20220310173728_SpeciesMarkings.cs | 2 +- .../Sqlite/20220313151753_ServerNameFts.Designer.cs | 2 +- .../Migrations/Sqlite/20220313151753_ServerNameFts.cs | 2 +- .../Migrations/Sqlite/20220324144649_AdminNotes.Designer.cs | 2 +- .../Migrations/Sqlite/20220324144649_AdminNotes.cs | 2 +- .../Sqlite/20220325170220_PlayerReadRules.Designer.cs | 2 +- .../Migrations/Sqlite/20220325170220_PlayerReadRules.cs | 2 +- .../Sqlite/20220326104908_UploadedResourcesLog.Designer.cs | 2 +- .../Migrations/Sqlite/20220326104908_UploadedResourcesLog.cs | 2 +- .../Migrations/Sqlite/20220503222949_FixIndices.Designer.cs | 2 +- .../Migrations/Sqlite/20220503222949_FixIndices.cs | 2 +- .../Sqlite/20220505084819_MarkingsJsonb.Designer.cs | 2 +- .../Migrations/Sqlite/20220505084819_MarkingsJsonb.cs | 2 +- .../Migrations/Sqlite/20220509060717_FlavorText.Designer.cs | 2 +- .../Migrations/Sqlite/20220509060717_FlavorText.cs | 2 +- .../Migrations/Sqlite/20220724000127_PlayTime.Designer.cs | 2 +- .../Migrations/Sqlite/20220724000127_PlayTime.cs | 2 +- .../Sqlite/20230319110651_ProfileTraitIndexUnique.Designer.cs | 2 +- .../Sqlite/20230319110651_ProfileTraitIndexUnique.cs | 2 +- .../Sqlite/20230402214642_BanAutoDelete.Designer.cs | 2 +- .../Migrations/Sqlite/20230402214642_BanAutoDelete.cs | 2 +- ...230725193058_AdminNotesImprovementsForeignKeys.Designer.cs | 2 +- .../20230725193058_AdminNotesImprovementsForeignKeys.cs | 2 +- .../Sqlite/20230727190858_AdminLogCompoundKey.Designer.cs | 2 +- .../Migrations/Sqlite/20230727190858_AdminLogCompoundKey.cs | 2 +- .../Sqlite/20231021071407_RoundStartDate.Designer.cs | 2 +- .../Migrations/Sqlite/20231021071407_RoundStartDate.cs | 2 +- .../Sqlite/20231024041159_DropAdminLogEntity.Designer.cs | 2 +- .../Migrations/Sqlite/20231024041159_DropAdminLogEntity.cs | 2 +- .../Sqlite/20231126234049_ConnectionLogServer.Designer.cs | 2 +- .../Migrations/Sqlite/20231126234049_ConnectionLogServer.cs | 2 +- .../Migrations/Sqlite/20231226154929_AdminLogPk.Designer.cs | 2 +- .../Migrations/Sqlite/20231226154929_AdminLogPk.cs | 2 +- .../Migrations/Sqlite/20240112194612_Blacklist.Designer.cs | 2 +- .../Migrations/Sqlite/20240112194612_Blacklist.cs | 2 +- .../Sqlite/20240201091254_SpawnPriorityPreference.Designer.cs | 2 +- .../Sqlite/20240201091254_SpawnPriorityPreference.cs | 2 +- .../Sqlite/20240301130602_ClothingRemoval.Designer.cs | 2 +- .../Migrations/Sqlite/20240301130602_ClothingRemoval.cs | 2 +- .../Sqlite/20240318021959_AdminMessageDismiss.Designer.cs | 2 +- .../Migrations/Sqlite/20240318021959_AdminMessageDismiss.cs | 2 +- .../Migrations/Sqlite/20240403072258_Loadouts.Designer.cs | 2 +- .../Migrations/Sqlite/20240403072258_Loadouts.cs | 2 +- .../20240409013832_FixRoundStartDateNullability.Designer.cs | 2 +- .../Sqlite/20240409013832_FixRoundStartDateNullability.cs | 2 +- .../20240409014937_FixRoundStartDateNullability2.Designer.cs | 2 +- .../Sqlite/20240409014937_FixRoundStartDateNullability2.cs | 2 +- .../Sqlite/20240531011549_RoleWhitelist.Designer.cs | 2 +- .../Migrations/Sqlite/20240531011549_RoleWhitelist.cs | 2 +- .../Sqlite/20240606065717_RemoveLastReadRules.Designer.cs | 2 +- .../Migrations/Sqlite/20240606065717_RemoveLastReadRules.cs | 2 +- .../Sqlite/20240606175141_ReturnLastReadRules.Designer.cs | 2 +- .../Migrations/Sqlite/20240606175141_ReturnLastReadRules.cs | 2 +- .../Sqlite/20240621120705_ConnectionLogTimeIndex.Designer.cs | 2 +- .../Sqlite/20240621120705_ConnectionLogTimeIndex.cs | 2 +- .../Migrations/Sqlite/20240623005113_BanTemplate.Designer.cs | 2 +- .../Migrations/Sqlite/20240623005113_BanTemplate.cs | 2 +- .../Migrations/Sqlite/20241111170107_ModernHwid.Designer.cs | 2 +- .../Migrations/Sqlite/20241111170107_ModernHwid.cs | 2 +- .../Sqlite/20241111193602_ConnectionTrust.Designer.cs | 2 +- .../Migrations/Sqlite/20241111193602_ConnectionTrust.cs | 2 +- .../Migrations/Sqlite/20241122174236_IPIntel.Designer.cs | 2 +- .../Migrations/Sqlite/20241122174236_IPIntel.cs | 2 +- .../Migrations/Sqlite/20241223235932_AdminStatus.Designer.cs | 2 +- .../Migrations/Sqlite/20241223235932_AdminStatus.cs | 2 +- .../Migrations/Sqlite/20250211131517_LoadoutNames.Designer.cs | 2 +- .../Migrations/Sqlite/20250211131517_LoadoutNames.cs | 2 +- .../Sqlite/20250314222717_ConstructionFavorites.Designer.cs | 2 +- .../Migrations/Sqlite/20250314222717_ConstructionFavorites.cs | 2 +- .../Sqlite/20260118084622_OrganMarkings.Designer.cs | 2 +- .../Migrations/Sqlite/20260118084622_OrganMarkings.cs | 2 +- .../Migrations/Sqlite/20260120200455_BanRefactor.Designer.cs | 2 +- .../Migrations/Sqlite/20260120200455_BanRefactor.cs | 2 +- .../Sqlite/20260126003831_CustomVoteLog.Designer.cs | 2 +- .../Migrations/Sqlite/20260126003831_CustomVoteLog.cs | 2 +- .../Sqlite/20260701024222_VoiceSelector.Designer.cs | 2 +- .../Migrations/Sqlite/20260701024222_VoiceSelector.cs | 2 +- .../Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs | 2 +- Content.Server.Database/Model.Ban.cs | 2 +- Content.Server.Database/Model.CustomVoteLog.cs | 2 +- Content.Server.Database/ModelPostgres.cs | 2 +- Content.Server.Database/ModelSqlite.cs | 2 +- Content.Server/Access/Systems/JobStatusSystem.cs | 2 +- Content.Server/Actions/Commands/AddActionCommand.cs | 2 +- Content.Server/Actions/Commands/RemoveActionCommand.cs | 2 +- Content.Server/Acz/ContentMagicAczProvider.cs | 2 +- Content.Server/Administration/AdminCommandAttribute.cs | 2 +- .../Administration/AdminEventLog/AdminEventLogEui.cs | 2 +- Content.Server/Administration/AdminPermsChangedEventArgs.cs | 2 +- Content.Server/Administration/AdminRank.cs | 2 +- Content.Server/Administration/BanList/BanListEui.cs | 2 +- Content.Server/Administration/Commands/AdminLogBulk.cs | 2 +- Content.Server/Administration/Commands/AdminWhoCommand.cs | 2 +- .../Administration/Commands/BanExemptionCommands.cs | 2 +- Content.Server/Administration/Commands/BanListCommand.cs | 2 +- Content.Server/Administration/Commands/CameraCommand.cs | 2 +- Content.Server/Administration/Commands/ChangeCvarCommand.cs | 2 +- .../Administration/Commands/ClearBluespaceLockerLinks.cs | 2 +- .../Administration/Commands/DeleteComponentCommand.cs | 2 +- .../Administration/Commands/JobWhitelistCommands.cs | 2 +- Content.Server/Administration/Commands/LinkBluespaceLocker.cs | 2 +- .../Administration/Commands/OpenAdminEventLogCommand.cs | 2 +- .../Administration/Commands/OpenAdminLogsCommand.cs | 2 +- .../Administration/Commands/OpenAdminNotesCommand.cs | 2 +- Content.Server/Administration/Commands/PanicBunkerCommand.cs | 2 +- Content.Server/Administration/Commands/PardonCommand.cs | 2 +- Content.Server/Administration/Commands/PlayTimeCommands.cs | 2 +- Content.Server/Administration/Commands/PromoteHostCommand.cs | 2 +- Content.Server/Administration/Commands/ReadyAllCommand.cs | 2 +- .../Administration/Commands/RemoveExtraComponents.cs | 2 +- Content.Server/Administration/Commands/RoleBanCommand.cs | 2 +- Content.Server/Administration/Commands/RoleBanListCommand.cs | 2 +- Content.Server/Administration/Commands/ShowGhostsCommand.cs | 2 +- .../Administration/Commands/ThrowScoreboardCommand.cs | 2 +- Content.Server/Administration/Logs/AdminLogManager.Cache.cs | 2 +- Content.Server/Administration/Logs/AdminLogManager.Json.cs | 2 +- Content.Server/Administration/Logs/AdminLogManager.cs | 2 +- Content.Server/Administration/Logs/AdminLogSystem.cs | 2 +- Content.Server/Administration/Logs/AdminLogsEui.cs | 2 +- .../Administration/Logs/Converters/AdminLogConverter.cs | 2 +- .../Logs/Converters/AdminLogConverterAttribute.cs | 2 +- .../Administration/Logs/Converters/FixedPoint2Converter.cs | 2 +- .../Converters/GasMixtureStringRepresentationConverter.cs | 2 +- .../Logs/Converters/MindStringRepresentationConverter.cs | 2 +- .../Administration/Logs/Converters/PlayerSessionConverter.cs | 2 +- Content.Server/Administration/Logs/IAdminLogManager.cs | 2 +- Content.Server/Administration/Logs/LogFilter.cs | 2 +- .../Administration/Managers/AdminManager.Metrics.cs | 2 +- Content.Server/Administration/Managers/CVarControlManager.cs | 2 +- .../Administration/Managers/MultiServerKickManager.cs | 2 +- Content.Server/Administration/ServerApi.Utility.cs | 2 +- Content.Server/Administration/ServerApi.cs | 2 +- Content.Server/Administration/Systems/BufferingSystem.cs | 2 +- Content.Server/Administration/Toolshed/AdminsCommand.cs | 2 +- Content.Server/Administration/Toolshed/MarkedCommand.cs | 2 +- Content.Server/Administration/Toolshed/RejuvenateCommand.cs | 2 +- Content.Server/Administration/Toolshed/SolutionCommand.cs | 2 +- Content.Server/Administration/UI/PermissionsEui.cs | 2 +- Content.Server/Afk/AfkManager.cs | 2 +- Content.Server/Afk/IsAfkCommand.cs | 2 +- Content.Server/AlertLevel/Commands/SetAlertLevelCommand.cs | 2 +- Content.Server/Anomaly/AnomalySystem.Commands.cs | 2 +- Content.Server/Anomaly/AnomalySystem.Vessel.cs | 2 +- Content.Server/Anomaly/Components/AnomalyVesselComponent.cs | 2 +- .../Anomaly/Components/BluespaceAnomalyComponent.cs | 2 +- .../Anomaly/Components/GeneratingAnomalyGeneratorComponent.cs | 2 +- Content.Server/Anomaly/Components/TechAnomalyComponent.cs | 2 +- Content.Server/Antag/Components/AntagImmuneComponent.cs | 2 +- Content.Server/Atmos/Commands/ListGasesCommand.cs | 2 +- Content.Server/Atmos/Components/AirFilterComponent.cs | 2 +- Content.Server/Atmos/Components/AirIntakeComponent.cs | 2 +- Content.Server/Atmos/Components/AtmosExposedComponent.cs | 2 +- Content.Server/Atmos/Components/GasMixtureHolderComponent.cs | 2 +- .../Atmos/Components/PressureProtectionComponent.cs | 2 +- Content.Server/Atmos/GasMixtureStringRepresentation.cs | 2 +- Content.Server/Atmos/Monitor/Payloads/AirAlarmPayloads.cs | 2 +- .../Atmos/Monitor/Payloads/AtmosAlarmablePayloads.cs | 2 +- Content.Server/Atmos/Monitor/Payloads/AtmosMonitorPayloads.cs | 2 +- Content.Server/Atmos/Monitor/Payloads/AtmosSyncPayload.cs | 2 +- Content.Server/Atmos/Reactions/FrezonCoolantReaction.cs | 2 +- Content.Server/Atmos/Reactions/FrezonProductionReaction.cs | 2 +- Content.Server/Atmos/Reactions/GasReactionPrototype.cs | 2 +- Content.Server/Audio/ServerGlobalSoundSystem.cs | 2 +- Content.Server/Beam/BeamSystem.cs | 2 +- Content.Server/CPUJob/JobQueues/Queues/PathfindingJobQueue.cs | 2 +- .../Cargo/Components/CargoSellBlacklistComponent.cs | 2 +- Content.Server/Cargo/Components/MobPriceComponent.cs | 2 +- Content.Server/Cargo/Components/RandomPriceComponent.cs | 2 +- Content.Server/Cargo/Components/StackPriceComponent.cs | 2 +- Content.Server/Cargo/Components/StaticPriceComponent.cs | 2 +- Content.Server/Cargo/Systems/PricingSystem.cs | 2 +- Content.Server/Chat/ChatUser.cs | 2 +- Content.Server/Chat/V2/Commands/DeleteChatMessageCommand.cs | 2 +- Content.Server/Chat/V2/Commands/NukeChatMessagesCommand.cs | 2 +- Content.Server/Chat/V2/Messages.cs | 2 +- Content.Server/Chemistry/Commands/DumpReagentGuideText.cs | 2 +- .../Chemistry/Components/ActiveSolutionHeaterComponent.cs | 2 +- .../Components/BaseSolutionInjectOnEventComponent.cs | 2 +- .../Chemistry/Components/MeleeChemicalInjectorComponent.cs | 2 +- Content.Server/Chemistry/Components/VaporComponent.cs | 2 +- .../Chemistry/EntitySystems/ChemistryGuideDataSystem.cs | 2 +- .../Chemistry/EntitySystems/SolutionContainerSystem.cs | 2 +- Content.Server/Clothing/Systems/OutfitSystem.cs | 2 +- Content.Server/Connection/ConnectionManager.Whitelist.cs | 2 +- Content.Server/Connection/GrantConnectBypassCommand.cs | 2 +- Content.Server/Connection/IPIntel/IPIntel.cs | 2 +- Content.Server/Connection/IPIntel/IPIntelAPI.cs | 2 +- Content.Server/Connection/UserDataExt.cs | 2 +- Content.Server/Connection/Whitelist/BlacklistCommands.cs | 2 +- .../Connection/Whitelist/Conditions/ConditionAlwaysMatch.cs | 2 +- .../Conditions/ConditionManualBlacklistMembership.cs | 2 +- .../Conditions/ConditionManualWhitelistMembership.cs | 2 +- .../Whitelist/Conditions/ConditionNotesDateRange.cs | 2 +- .../Whitelist/Conditions/ConditionNotesPlaytimeRange.cs | 2 +- .../Connection/Whitelist/Conditions/ConditionPlayerCount.cs | 2 +- .../Connection/Whitelist/Conditions/ConditionPlaytime.cs | 2 +- Content.Server/Connection/Whitelist/WhitelistCondition.cs | 2 +- Content.Server/Connection/Whitelist/WhitelistPrototype.cs | 2 +- Content.Server/Construction/AnchorOnlyOnStationSystem.cs | 2 +- Content.Server/Construction/Completions/AddContainer.cs | 2 +- Content.Server/Construction/Completions/AppearanceChange.cs | 2 +- .../Completions/MachineFrameRegenerateProgress.cs | 2 +- Content.Server/Construction/Completions/SetStackCount.cs | 2 +- Content.Server/Construction/Components/MachineComponent.cs | 2 +- .../Construction/Components/MachineFrameComponent.cs | 2 +- Content.Server/Construction/Conditions/AllWiresCut.cs | 2 +- Content.Server/Construction/Conditions/EntityAnchored.cs | 2 +- Content.Server/Damage/Components/ExaminableDamageComponent.cs | 2 +- Content.Server/Damage/Systems/ExaminableDamageSystem.cs | 2 +- Content.Server/Damage/Systems/StaminaSystem.cs | 2 +- Content.Server/Database/BanMatcher.cs | 2 +- Content.Server/Database/EFCoreExtensions.cs | 2 +- Content.Server/Database/ServerDbEntryManager.cs | 2 +- Content.Server/Database/ServerDbManagerExt.cs | 2 +- Content.Server/Database/ServerDbPostgres.Notifications.cs | 2 +- Content.Server/Database/UnbanDef.cs | 2 +- Content.Server/Database/UserDbDataManager.cs | 2 +- Content.Server/Destructible/DamageThresholdsSerializer.cs | 2 +- .../Destructible/DestructibleSystem.BenchmarkHelpers.cs | 2 +- .../Destructible/Thresholds/Behaviors/BurnBodyBehavior.cs | 2 +- .../Thresholds/Behaviors/ChangeConstructionNodeBehavior.cs | 2 +- .../Destructible/Thresholds/Behaviors/DoActsBehavior.cs | 2 +- .../Destructible/Thresholds/Behaviors/IThresholdBehavior.cs | 2 +- .../Destructible/Thresholds/Behaviors/TimerStartBehavior.cs | 2 +- .../Destructible/Thresholds/Behaviors/TriggerBehavior.cs | 2 +- .../Components/Overload/SoundOnOverloadComponent.cs | 2 +- .../DeviceLinking/Systems/DeviceLinkOverloadSystem.cs | 2 +- .../DeviceNetwork/Components/Devices/ApcNetSwitchComponent.cs | 2 +- .../Components/SingletonDeviceNetServerComponent.cs | 2 +- .../DeviceNetwork/Systems/DeviceNetworkSystem.API.cs | 2 +- .../DeviceNetwork/Systems/SingletonDeviceNetServerSystem.cs | 2 +- Content.Server/Discord/DiscordLink/DiscordChatLink.cs | 2 +- Content.Server/Discord/DiscordLink/DiscordLink.cs | 2 +- Content.Server/Discord/DiscordLink/DiscordSawmillLogger.cs | 2 +- Content.Server/Discord/WebhookData.cs | 2 +- Content.Server/Discord/WebhookEmbedFooter.cs | 2 +- Content.Server/Discord/WebhookIdentifier.cs | 2 +- Content.Server/Discord/WebhookMessages/EventWebhook.cs | 2 +- Content.Server/Discord/WebhookUser.cs | 2 +- Content.Server/Drowsiness/DrowsinessSystem.cs | 2 +- Content.Server/Drunk/DrunkSystem.cs | 2 +- .../Electrocution/Components/ElectrocutionComponent.cs | 2 +- .../Conditions/BreathingEntityConditionSystem.cs | 2 +- .../Conditions/ObjectiveTargetEntityConditionSystem.cs | 2 +- .../Effects/Atmos/CreateGasEntityEffectSystem.cs | 2 +- .../Effects/Atmos/FlammableEntityEffectSystem.cs | 2 +- .../EntityEffects/Effects/Atmos/IgniteEntityEffectSystem.cs | 2 +- .../Effects/Body/OxygenateEntityEffectsSystem.cs | 2 +- .../EntityEffects/Effects/ExplodeEntityEffectSystem.cs | 2 +- .../EntityEffects/Effects/MakeSentientEntityEffectSystem.cs | 2 +- .../EntityEffects/Effects/PolymorphEntityEffectSystem.cs | 2 +- .../Effects/Solution/AreaReactionEntityEffectSystem.cs | 2 +- .../Effects/Transform/ExplosionEntityEffectSystem.cs | 2 +- .../Explosion/Components/ExplosionAirtightGridComponent.cs | 2 +- .../Explosion/Components/ProjectileGrenadeComponent.cs | 2 +- .../Explosion/EntitySystems/ProjectileGrenadeSystem.cs | 2 +- .../Explosion/EntitySystems/ScatteringGrenadeSystem.cs | 2 +- Content.Server/FeedbackSystem/FeedbackCommand.cs | 2 +- Content.Server/FeedbackSystem/FeedbackSystem.cs | 2 +- Content.Server/FeedbackSystem/OpenFeedbackPopupCommand.cs | 2 +- Content.Server/FeedbackSystem/ServerFeedbackManager.cs | 2 +- Content.Server/Fluids/ShowFluidsCommand.cs | 2 +- Content.Server/GameTicking/Commands/DynamicRuleCommand.cs | 2 +- Content.Server/GameTicking/Commands/EndRoundCommand.cs | 2 +- Content.Server/GameTicking/Commands/ForcePresetCommand.cs | 2 +- Content.Server/GameTicking/Commands/GoLobbyCommand.cs | 2 +- Content.Server/GameTicking/Commands/SetGamePresetCommand.cs | 2 +- Content.Server/GameTicking/Commands/StartRoundCommand.cs | 2 +- .../GameTicking/Commands/ToggleDisallowLateJoinCommand.cs | 2 +- Content.Server/GameTicking/Events/GetDisallowedJobsEvent.cs | 2 +- Content.Server/GameTicking/Events/IsRoleAllowedEvent.cs | 2 +- .../GameTicking/Events/NoJobsAvailableSpawningEvent.cs | 2 +- .../GameTicking/Rules/Components/DeathMatchRuleComponent.cs | 2 +- .../GameTicking/Rules/Components/InactivityRuleComponent.cs | 2 +- .../GameTicking/Rules/Components/KillCalloutRuleComponent.cs | 2 +- .../Rules/Components/MaxTimeRestartRuleComponent.cs | 2 +- .../GameTicking/Rules/Components/NukeOpsShuttleComponent.cs | 2 +- .../GameTicking/Rules/Components/RespawnDeadRuleComponent.cs | 2 +- .../GameTicking/Rules/Components/RespawnTrackerComponent.cs | 2 +- .../GameTicking/Rules/Components/SandboxRuleComponent.cs | 2 +- .../GameTicking/Rules/Components/SecretRuleComponent.cs | 2 +- Content.Server/GameTicking/Rules/KillCalloutRuleSystem.cs | 2 +- .../GameTicking/Rules/RoundstartStationVariationRuleSystem.cs | 2 +- .../VariationPass/BaseEntityReplaceVariationPassSystem.cs | 2 +- .../Components/EntityReplaceVariationPassComponent.cs | 2 +- .../Components/EntitySpawnVariationPassComponent.cs | 2 +- .../Components/PoweredLightVariationPassComponent.cs | 2 +- .../Components/PuddleMessVariationPassComponent.cs | 2 +- .../Components/ReinforcedWallReplaceVariationPassComponent.cs | 2 +- .../ReinforcedWallReplacementMarkerComponent.cs | 2 +- .../ReplacementMarkers/WallReplacementMarkerComponent.cs | 2 +- .../Components/WallReplaceVariationPassComponent.cs | 2 +- .../Rules/VariationPass/EntitySpawnVariationPassSystem.cs | 2 +- .../Rules/VariationPass/PoweredLightVariationPassSystem.cs | 2 +- .../Rules/VariationPass/PuddleMessVariationPassSystem.cs | 2 +- .../VariationPass/ReinforcedWallReplaceVariationPassSystem.cs | 2 +- .../GameTicking/Rules/VariationPass/VariationPassSystem.cs | 2 +- .../Rules/VariationPass/WallReplaceVariationPassSystem.cs | 2 +- .../Ghost/Roles/Components/GhostRoleRaffleComponent.cs | 2 +- Content.Server/Ghost/Roles/Components/TakeGhostRoleEvent.cs | 2 +- Content.Server/Ghost/Roles/MakeGhostRoleCommand.cs | 2 +- Content.Server/Ghost/Roles/Raffles/GhostRoleRaffleConfig.cs | 2 +- .../Ghost/Roles/Raffles/GhostRoleRaffleDeciderPrototype.cs | 2 +- Content.Server/Ghost/Roles/Raffles/IGhostRoleRaffleDecider.cs | 2 +- .../Ghost/Roles/Raffles/RngGhostRoleRaffleDecider.cs | 2 +- Content.Server/Ghost/Roles/UI/MakeGhostRoleEui.cs | 2 +- Content.Server/Gibbing/Systems/GibOnRoundEndSystem.cs | 2 +- Content.Server/GlobalUsings.cs | 2 +- Content.Server/Holiday/Christmas/LimitedItemGiverSystem.cs | 2 +- Content.Server/Holiday/Christmas/SantaComponent.cs | 2 +- Content.Server/IP/IPAddressExt.cs | 2 +- Content.Server/Implants/RadioImplantSystem.cs | 2 +- Content.Server/Inventory/InventoryCommand.cs | 2 +- Content.Server/Item/ItemSystem.cs | 2 +- Content.Server/Jobs/AddImplantSpecial.cs | 2 +- Content.Server/Jobs/ApplyStatusEffectSpecial.cs | 2 +- Content.Server/KillTracking/KillTrackerComponent.cs | 2 +- Content.Server/Light/Components/LightBehaviourComponent.cs | 2 +- Content.Server/Light/Components/LitOnPoweredComponent.cs | 2 +- Content.Server/MapText/MapTextComponent.cs | 2 +- Content.Server/MapText/MapTextSystem.cs | 2 +- Content.Server/Maps/MapMigrationSystem.cs | 2 +- Content.Server/Maps/TileGridSplitSystem.cs | 2 +- Content.Server/MassMedia/Components/NewsWriterComponent.cs | 2 +- Content.Server/Materials/MaterialStorageSystem.cs | 2 +- Content.Server/Mech/Components/MechAirComponent.cs | 2 +- .../Mech/Equipment/Components/MechGrabberComponent.cs | 2 +- Content.Server/Medical/Components/CryoPodAirComponent.cs | 2 +- .../Medical/CrewMonitoring/CrewMonitoringServerComponent.cs | 2 +- Content.Server/Medical/InsideCryoPodSystem.cs | 2 +- Content.Server/Mind/Commands/MindInfoCommand.cs | 2 +- Content.Server/Mind/Toolshed/MindCommand.cs | 2 +- Content.Server/Mind/TransferMindOnGibSystem.cs | 2 +- Content.Server/Mobs/CritMobActionsSystem.cs | 2 +- Content.Server/MouseRotator/MouseRotatorSystem.cs | 2 +- Content.Server/NPC/Commands/AddNPCCommand.cs | 2 +- Content.Server/NPC/Components/NPCRetaliationComponent.cs | 2 +- .../NPC/HTN/Preconditions/InContainerPrecondition.cs | 2 +- Content.Server/NPC/HTN/Preconditions/IsEmaggedPrecondition.cs | 2 +- .../NPC/HTN/Preconditions/Math/KeyBoolEqualsPrecondition.cs | 2 +- .../NPC/HTN/Preconditions/Math/KeyFloatEqualsPrecondition.cs | 2 +- .../NPC/HTN/Preconditions/Math/KeyFloatGreaterPrecondition.cs | 2 +- .../NPC/HTN/Preconditions/Math/KeyFloatLessPrecondition.cs | 2 +- .../HTN/PrimitiveTasks/Operators/Combat/ContainerOperator.cs | 2 +- .../NPC/HTN/PrimitiveTasks/Operators/Combat/EscapeOperator.cs | 2 +- .../Operators/Combat/Melee/MeleeAttackOperator.cs | 2 +- .../NPC/HTN/PrimitiveTasks/Operators/Math/AddFloatOperator.cs | 2 +- .../PrimitiveTasks/Operators/Math/SetRandomFloatOperator.cs | 2 +- .../NPC/HTN/PrimitiveTasks/Operators/PlaySoundOperator.cs | 2 +- .../NPC/HTN/PrimitiveTasks/Operators/SayKeyOperator.cs | 2 +- .../Operators/Specific/RaiseEventForOwnerOperator.cs | 2 +- Content.Server/NameIdentifier/NameIdentifierSystem.cs | 2 +- Content.Server/Nuke/Commands/SendNukeCodesCommand.cs | 2 +- Content.Server/NukeOps/WarDeclaratorComponent.cs | 2 +- Content.Server/Nutrition/EntitySystems/FatExtractorSystem.cs | 2 +- Content.Server/Objectives/Commands/AddObjectiveCommand.cs | 2 +- Content.Server/Objectives/Commands/RemoveObjectiveCommand.cs | 2 +- .../Objectives/Components/FreeObjectiveComponent.cs | 2 +- .../Objectives/Components/HijackShuttleConditionComponent.cs | 2 +- Content.Server/Objectives/Systems/FreeObjectiveSystem.cs | 2 +- .../Objectives/Systems/HijackShuttleConditionSystem.cs | 2 +- Content.Server/Placement/PlacementLoggerSystem.cs | 2 +- Content.Server/Players/JobWhitelist/JobWhitelistManager.cs | 2 +- Content.Server/Players/JobWhitelist/JobWhitelistSystem.cs | 2 +- Content.Server/Players/PlayerSystem.cs | 2 +- Content.Server/Players/RateLimiting/PlayerRateLimitManager.cs | 2 +- Content.Server/Players/Whitelist/WhitelistManager.cs | 2 +- .../Pointing/Components/PointingArrowAngeringComponent.cs | 2 +- Content.Server/Polymorph/Toolshed/PolymorphCommand.cs | 2 +- Content.Server/Polymorph/Toolshed/UnpolymorphCommand.cs | 2 +- Content.Server/Power/Commands/PowerStatCommand.cs | 2 +- Content.Server/Power/Commands/PowerValidateCommand.cs | 2 +- Content.Server/Power/Components/BaseNetConnectorComponent.cs | 2 +- Content.Server/Power/Components/BatteryChargerComponent.cs | 2 +- Content.Server/Power/Components/BatteryDischargerComponent.cs | 2 +- Content.Server/Power/Components/BatteryInterfaceComponent.cs | 2 +- Content.Server/Power/Components/CableVisComponent.cs | 2 +- .../Power/Components/ExtensionCableProviderComponent.cs | 2 +- .../Power/Components/ExtensionCableReceiverComponent.cs | 2 +- Content.Server/Power/Components/PowerChargeComponent.cs | 2 +- .../Power/Components/PowerConsumerBatteryChargerComponent.cs | 2 +- .../Power/Components/PowerNetworkBatteryComponent.cs | 2 +- .../Power/Components/SpawnOnBatteryFullComponent.cs | 2 +- Content.Server/Power/EntitySystems/BatteryInterfaceSystem.cs | 2 +- Content.Server/Power/EntitySystems/PowerChargeSystem.cs | 2 +- .../Power/EntitySystems/PowerConsumerBatteryChargerSystem.cs | 2 +- .../Power/EntitySystems/SpawnOnBatteryFullSystem.cs | 2 +- Content.Server/Power/Events/PowerPulseEvent.cs | 2 +- Content.Server/Power/Generation/Teg/TegCirculatorComponent.cs | 2 +- Content.Server/Power/Generation/Teg/TegGeneratorComponent.cs | 2 +- Content.Server/Power/Generation/Teg/TegNodeGroup.cs | 2 +- Content.Server/Power/Generation/Teg/TegSystem.cs | 2 +- .../Generator/ChemicalFuelGeneratorDirectSourceComponent.cs | 2 +- Content.Server/Power/Generator/GasPowerReceiverComponent.cs | 2 +- Content.Server/Power/Generator/GasPowerReceiverSystem.cs | 2 +- Content.Server/Power/Generator/GeneratorExhaustGasSystem.cs | 2 +- Content.Server/Power/Generator/GeneratorSystem.cs | 2 +- Content.Server/Power/Generator/PortableGeneratorSystem.cs | 2 +- Content.Server/Power/Generator/PowerSwitchableSystem.cs | 2 +- Content.Server/Power/NodeGroups/BasePowerNet.cs | 2 +- Content.Server/Power/NodeGroups/IBasePowerNet.cs | 2 +- Content.Server/Power/Pow3r/PowerSolverShared.cs | 2 +- Content.Server/PowerSink/PowerSinkComponent.cs | 2 +- Content.Server/RandomAppearance/RandomAppearanceSystem.cs | 2 +- Content.Server/RandomMetadata/RandomMetadataSystem.cs | 2 +- Content.Server/RequiresGrid/RequiresGridComponent.cs | 2 +- Content.Server/RequiresGrid/RequiresGridSystem.cs | 2 +- .../TechnologyDisk/Components/DiskConsoleComponent.cs | 2 +- .../TechnologyDisk/Components/DiskConsolePrintingComponent.cs | 2 +- .../Revenant/EntitySystems/RevenantOverloadedLightsSystem.cs | 2 +- Content.Server/Roles/AddRoleCommand.cs | 2 +- Content.Server/Roles/Jobs/JobSystem.cs | 2 +- Content.Server/Roles/ListRolesCommand.cs | 2 +- Content.Server/Roles/RemoveRoleCommand.cs | 2 +- Content.Server/SensorMonitoring/BatterySensorComponent.cs | 2 +- .../SensorMonitoring/SensorMonitoringConsoleComponent.cs | 2 +- .../SensorMonitoring/SensorMonitoringConsoleSystem.UI.cs | 2 +- .../SensorMonitoring/SensorMonitoringConsoleSystem.cs | 2 +- Content.Server/ServerInfo/ServerInfoManager.cs | 2 +- Content.Server/ServerUpdates/ServerUpdateManager.cs | 2 +- Content.Server/Shuttles/Components/StationAnchorComponent.cs | 2 +- .../Shuttles/Components/StationEmergencyShuttleComponent.cs | 2 +- Content.Server/Shuttles/Events/DockEvent.cs | 2 +- Content.Server/Shuttles/Events/ShuttleConsoleFTLStartEvent.cs | 2 +- Content.Server/Shuttles/Events/UndockEvent.cs | 2 +- Content.Server/Shuttles/Systems/StationAnchorSystem.cs | 2 +- Content.Server/Silicons/Borgs/BorgSwitchableTypeSystem.cs | 2 +- Content.Server/Silicons/Bots/HugBotSystem.cs | 2 +- .../Silicons/Bots/RecentlyHuggedByHugBotComponent.cs | 2 +- Content.Server/Silicons/Laws/IonLawLocalizationSystem.cs | 2 +- Content.Server/Silicons/Laws/IonLawSystem.cs | 2 +- Content.Server/SmartFridge/SmartFridgeSystem.cs | 2 +- .../Spawners/Components/AntagGridSpawnPointComponent.cs | 2 +- Content.Server/Spawners/Components/TimedSpawnerComponent.cs | 2 +- .../Speech/EntitySystems/DamagedSiliconAccentSystem.cs | 2 +- Content.Server/Station/Commands/BankCommand.cs | 2 +- .../Station/Components/StationNameSetupComponent.cs | 2 +- .../Station/Components/StationVariationHasRunComponent.cs | 2 +- .../Station/Events/StationJobsGetCandidatesEvent.cs | 2 +- Content.Server/Station/Systems/StationNameSystem.cs | 2 +- .../Components/AlertLevelInterceptionRuleComponent.cs | 2 +- .../StationEvents/Components/BluespaceLockerRuleComponent.cs | 2 +- .../StationEvents/Components/CargoGiftsRuleComponent.cs | 2 +- .../StationEvents/Components/FalseAlarmRuleComponent.cs | 2 +- .../StationEvents/Components/GasLeakRuleComponent.cs | 2 +- .../StationEvents/Components/KudzuGrowthRuleComponent.cs | 2 +- .../StationEvents/Components/MeteorSwarmComponent.cs | 2 +- .../StationEvents/Components/VentClogRuleComponent.cs | 2 +- .../Components/VentCritterSpawnLocationComponent.cs | 2 +- .../StationEvents/Components/VentCrittersRuleComponent.cs | 2 +- .../StationEvents/Components/VentHordeRuleComponent.cs | 2 +- Content.Server/StationEvents/Events/AnomalySpawnRule.cs | 2 +- Content.Server/StationEvents/Events/FalseAlarmRule.cs | 2 +- .../StationRecords/GeneralStationRecordConsoleSystem.cs | 2 +- Content.Server/Stealth/StealthSystem.cs | 2 +- Content.Server/Storage/Components/BluespaceLockerComponent.cs | 2 +- Content.Server/Storage/EntitySystems/ItemMapperSystem.cs | 2 +- Content.Server/Storage/StorageCommand.cs | 2 +- Content.Server/Store/StoreRefundComponent.cs | 2 +- .../Components/ChangeTemperatureOnCollideComponent.cs | 2 +- .../Temperature/Components/ContainerTemperatureComponent.cs | 2 +- .../Temperature/Components/TemperatureProtectionComponent.cs | 2 +- Content.Server/Toolshed/Commands/AdminDebug/ACmdCommand.cs | 2 +- Content.Server/Toolshed/Commands/Verbs/RunVerbAsCommand.cs | 2 +- Content.Server/Toolshed/Commands/VisualizeCommand.cs | 2 +- Content.Server/Traits/Assorted/BuckleOnMapInitComponent.cs | 2 +- Content.Server/Traits/Assorted/BuckleOnMapInitSystem.cs | 2 +- .../VentHorde/Components/VentHordeSpawnerComponent.cs | 2 +- Content.Server/Voting/VoteFinishedEventArgs.cs | 2 +- Content.Server/Voting/VoteFinishedEventHandler.cs | 2 +- .../Weapons/Hitscan/Components/HitscanIgniteComponent.cs | 2 +- Content.Server/Weapons/Hitscan/Systems/HitscanIgniteSystem.cs | 2 +- Content.Server/Weapons/Melee/Balloon/BalloonPopperSystem.cs | 2 +- .../Artifact/XAE/Components/XAETelepathicComponent.cs | 2 +- Content.Server/Zombies/ZombieAccentOverrideComponent.cs | 2 +- Content.Shared.Database/Bans.cs | 2 +- Content.Shared.Database/LogImpact.cs | 2 +- Content.Shared.Database/TypedHwid.cs | 2 +- Content.Shared/Access/Components/IdExaminableComponent.cs | 2 +- Content.Shared/Actions/Events/ActionDoAfterEvent.cs | 2 +- Content.Shared/Actions/Events/ActionUpgradeEvent.cs | 2 +- Content.Shared/Actions/Events/InvisibleWallActionEvent.cs | 2 +- Content.Shared/Actions/SharedActionsSystem.DoAfter.cs | 2 +- Content.Shared/Administration/AdminCommandPermissions.cs | 2 +- Content.Shared/Administration/AdminCommandSyntax.cs | 2 +- Content.Shared/Administration/AdminData.cs | 2 +- .../Administration/AdminEventLog/AdminEventLogEuiState.cs | 2 +- Content.Shared/Administration/AdminFlags.cs | 2 +- Content.Shared/Administration/AdminFlagsHelper.cs | 2 +- Content.Shared/Administration/AdminFrozenComponent.cs | 2 +- Content.Shared/Administration/AnyCommandAttribute.cs | 2 +- Content.Shared/Administration/BanList/BanListEuiState.cs | 2 +- Content.Shared/Administration/BanList/SharedBan.cs | 2 +- Content.Shared/Administration/BanList/SharedUnban.cs | 2 +- .../Administration/Components/AdminMinigunComponent.cs | 2 +- .../Administration/Components/BufferingComponent.cs | 2 +- .../Administration/Components/DisarmProneComponent.cs | 2 +- .../Administration/Components/HeadstandComponent.cs | 2 +- Content.Shared/Administration/Components/KillSignComponent.cs | 2 +- .../Components/StationInfiniteBatteryTargetComponent.cs | 2 +- .../Administration/Events/PanicBunkerChangedEvent.cs | 2 +- .../Administration/Events/PlayerInfoChangedEvent.cs | 2 +- Content.Shared/Administration/Logs/AdminLogsEuiState.cs | 2 +- Content.Shared/Administration/Logs/DateOrder.cs | 2 +- Content.Shared/Administration/Logs/IAdminLogsPlayerValue.cs | 2 +- Content.Shared/Administration/Logs/ISharedAdminLogManager.cs | 2 +- Content.Shared/Administration/Logs/LogStringHandler.cs | 2 +- Content.Shared/Administration/Logs/SharedAdminLog.cs | 2 +- Content.Shared/Administration/Logs/SharedAdminLogManager.cs | 2 +- Content.Shared/Administration/MsgUpdateAdminStatus.cs | 2 +- Content.Shared/Administration/PermissionsEuiState.cs | 2 +- Content.Shared/Administration/QuickDialogOpenEvent.cs | 2 +- Content.Shared/Administration/SharedBwoinkSystem.cs | 2 +- Content.Shared/Administration/Systems/AdminGunSystem.cs | 2 +- Content.Shared/Administration/Systems/RejuvenateSystem.cs | 2 +- Content.Shared/Alert/AlertKey.cs | 2 +- Content.Shared/Alert/AlertOrderPrototype.cs | 2 +- Content.Shared/Alert/ClickAlertEvent.cs | 2 +- Content.Shared/Anomaly/Components/AnomalyPulsingComponent.cs | 2 +- Content.Shared/Anomaly/Components/AnomalyScannerComponent.cs | 2 +- .../Anomaly/Components/AnomalySupercriticalComponent.cs | 2 +- .../Anomaly/Components/InnerBodyAnomalyComponent.cs | 2 +- .../Anomaly/Components/InnerBodyAnomalyVisualsComponent.cs | 2 +- .../Anomaly/Effects/Components/PyroclasticAnomalyComponent.cs | 2 +- Content.Shared/Anomaly/ScannerDoAfterEvent.cs | 2 +- Content.Shared/Antag/Selectors/AntagCountSelector.cs | 2 +- Content.Shared/Antag/Selectors/FixedAntagCount.cs | 2 +- Content.Shared/Antag/Selectors/LinearAntagCount.cs | 2 +- Content.Shared/Arcade/BlockGameBlock.cs | 2 +- Content.Shared/Arcade/BlockGamePlayerAction.cs | 2 +- Content.Shared/Arcade/BlockGameUiKey.cs | 2 +- Content.Shared/Armable/ArmableComponent.cs | 2 +- Content.Shared/Armable/ArmableSystem.cs | 2 +- Content.Shared/Armor/ArmorComponent.cs | 2 +- Content.Shared/Armor/SharedArmorSystem.cs | 2 +- Content.Shared/Atmos/AtmosDirection.cs | 2 +- Content.Shared/Atmos/AtmosExposedEvents.cs | 2 +- Content.Shared/Atmos/Components/BreathToolComponent.cs | 2 +- .../Components/ExtinguishableSetCollisionWakeComponent.cs | 2 +- .../Atmos/Components/GasMaxPressureHolderComponent.cs | 2 +- Content.Shared/Atmos/Components/IGasMaxPressureHolder.cs | 2 +- Content.Shared/Atmos/Components/SharedGasTankComponent.cs | 2 +- .../EntitySystems/ExtinguishableSetCollisionWakeSystem.cs | 2 +- Content.Shared/Atmos/EntitySystems/GasMaxPressureSystem.cs | 2 +- .../Atmos/EntitySystems/SharedAtmosphereSystem.API.cs | 2 +- .../Atmos/EntitySystems/SharedGasPressureRegulatorSystem.cs | 2 +- Content.Shared/Atmos/ExcitedGroup.cs | 2 +- Content.Shared/Atmos/FireEvents.cs | 2 +- Content.Shared/Atmos/FireVisuals.cs | 2 +- Content.Shared/Atmos/GasMixture.cs | 2 +- Content.Shared/Atmos/GasMixtureStringRepresentation.cs | 2 +- Content.Shared/Atmos/Hotspot.cs | 2 +- Content.Shared/Atmos/IGasMixtureHolder.cs | 2 +- Content.Shared/Atmos/Monitor/BaseAtmosDeviceData.cs | 2 +- Content.Shared/Atmos/Monitor/IAtmosDeviceData.cs | 2 +- Content.Shared/Atmos/MonstermosInfo.cs | 2 +- .../Piping/Binary/Components/GasPressureRegulatorComponent.cs | 2 +- .../Piping/Binary/Components/SharedGasCanisterComponent.cs | 2 +- .../Binary/Components/SharedGasPressurePumpComponent.cs | 2 +- .../Binary/Components/SharedGasPressureRegulatorComponent.cs | 2 +- Content.Shared/Atmos/Reactions/GasReactionEnums.cs | 2 +- Content.Shared/Atmos/Rotting/SharedRottingSystem.cs | 2 +- .../Atmos/Serialization/TileAtmosCollectionSerializer.cs | 2 +- Content.Shared/Atmos/TileFireEvent.cs | 2 +- Content.Shared/Audio/SharedGlobalSoundSystem.cs | 2 +- Content.Shared/Audio/SoundWhileAliveComponent.cs | 2 +- Content.Shared/Beam/Components/BeamComponent.cs | 2 +- Content.Shared/Beam/SharedBeamSystem.cs | 2 +- Content.Shared/Beeper/BeeperEvents.cs | 2 +- Content.Shared/Beeper/Components/BeeperComponent.cs | 2 +- Content.Shared/Beeper/Components/ProximityBeeperComponent.cs | 2 +- Content.Shared/Beeper/Systems/BeeperSystem.cs | 2 +- Content.Shared/Beeper/Systems/ProximityBeeperSystem.cs | 2 +- Content.Shared/Bible/SummonActionEvent.cs | 2 +- Content.Shared/Blocking/BlockingSystem.cs | 2 +- Content.Shared/Blocking/Components/BlockingUserComponent.cs | 2 +- Content.Shared/Body/Components/BrainComponent.cs | 2 +- Content.Shared/Botany/ProduceVisuals.cs | 2 +- Content.Shared/Bql/ToolshedVisualizeEuiState.cs | 2 +- Content.Shared/CCVar/CCVars.Accessibility.cs | 2 +- Content.Shared/CCVar/CCVars.Admin.Logs.cs | 2 +- Content.Shared/CCVar/CCVars.Admin.Rules.cs | 2 +- Content.Shared/CCVar/CCVars.Admin.cs | 2 +- Content.Shared/CCVar/CCVars.Atmos.cs | 2 +- Content.Shared/CCVar/CCVars.Chat.Admin.cs | 2 +- Content.Shared/CCVar/CCVars.Chat.Dead.cs | 2 +- Content.Shared/CCVar/CCVars.Chat.Looc.cs | 2 +- Content.Shared/CCVar/CCVars.Chat.Ooc.cs | 2 +- Content.Shared/CCVar/CCVars.Chat.cs | 2 +- Content.Shared/CCVar/CCVars.Config.cs | 2 +- Content.Shared/CCVar/CCVars.Console.cs | 2 +- Content.Shared/CCVar/CCVars.Crewmanifest.cs | 2 +- Content.Shared/CCVar/CCVars.Database.cs | 2 +- Content.Shared/CCVar/CCVars.Debug.cs | 2 +- Content.Shared/CCVar/CCVars.Discord.cs | 2 +- Content.Shared/CCVar/CCVars.Events.cs | 2 +- Content.Shared/CCVar/CCVars.Explosion.cs | 2 +- Content.Shared/CCVar/CCVars.Game.Infolinks.cs | 2 +- Content.Shared/CCVar/CCVars.Ghost.cs | 2 +- Content.Shared/CCVar/CCVars.Hud.cs | 2 +- Content.Shared/CCVar/CCVars.Ic.cs | 2 +- Content.Shared/CCVar/CCVars.Interactions.cs | 2 +- Content.Shared/CCVar/CCVars.Interface.cs | 2 +- Content.Shared/CCVar/CCVars.Mapping.cs | 2 +- Content.Shared/CCVar/CCVars.Midi.cs | 2 +- Content.Shared/CCVar/CCVars.Misc.cs | 2 +- Content.Shared/CCVar/CCVars.NPC.cs | 2 +- Content.Shared/CCVar/CCVars.Parallax.cs | 2 +- Content.Shared/CCVar/CCVars.Physics.cs | 2 +- Content.Shared/CCVar/CCVars.Playtest.cs | 2 +- Content.Shared/CCVar/CCVars.Radiation.cs | 2 +- Content.Shared/CCVar/CCVars.Replays.cs | 2 +- Content.Shared/CCVar/CCVars.Salvage.cs | 2 +- Content.Shared/CCVar/CCVars.Server.cs | 2 +- Content.Shared/CCVar/CCVars.Shuttle.cs | 2 +- Content.Shared/CCVar/CCVars.Tips.cs | 2 +- Content.Shared/CCVar/CCVars.Viewport.cs | 2 +- Content.Shared/CCVar/CCVars.Vote.cs | 2 +- Content.Shared/CCVar/CCVars.Whitelist.cs | 2 +- Content.Shared/CCVar/CVarAccess/CVarControl.cs | 2 +- Content.Shared/Cabinet/ItemCabinetSystem.cs | 2 +- .../CardboardBox/Components/CardboardBoxComponent.cs | 2 +- Content.Shared/Cargo/Prototypes/CargoBountyPrototype.cs | 2 +- Content.Shared/CartridgeLoader/CartridgeComponent.cs | 2 +- Content.Shared/CartridgeLoader/CartridgeLoaderComponent.cs | 2 +- Content.Shared/CartridgeLoader/CartridgeLoaderUiMessage.cs | 2 +- Content.Shared/CartridgeLoader/CartridgeLoaderUiState.cs | 2 +- Content.Shared/CartridgeLoader/CartridgeLoaderVisuals.cs | 2 +- Content.Shared/CartridgeLoader/CartridgeUiMessage.cs | 2 +- .../Cartridges/CrewManifestCartridgeComponent.cs | 2 +- .../CartridgeLoader/Cartridges/CrewManifestUiState.cs | 2 +- Content.Shared/CartridgeLoader/Cartridges/LogProbeUiState.cs | 2 +- .../CartridgeLoader/Cartridges/NetProbeCartridgeComponent.cs | 2 +- Content.Shared/CartridgeLoader/Cartridges/NetProbeUiState.cs | 2 +- .../CartridgeLoader/Cartridges/NotekeeperUiState.cs | 2 +- Content.Shared/Changeling/ChangelingDevourEvents.cs | 2 +- Content.Shared/Changeling/ChangelingTransformEvents.cs | 2 +- .../Components/ChangelingCloneableStatusEffectComponent.cs | 2 +- Content.Shared/Changeling/Systems/ChangelingAbilitySystem.cs | 2 +- .../Changeling/Systems/ChangelingMetabolismSystem.cs | 2 +- .../Changeling/Systems/ChangelingTransformSystem.UI.cs | 2 +- .../Changeling/Systems/DestructionResistanceSystem.cs | 2 +- Content.Shared/Changeling/Systems/RegenerativeStasisSystem.cs | 2 +- .../Changeling/Systems/SharedChangelingIdentitySystem.cs | 2 +- Content.Shared/Chasm/ChasmComponent.cs | 2 +- Content.Shared/Chasm/ChasmFallingComponent.cs | 2 +- Content.Shared/Chasm/ChasmSystem.cs | 2 +- Content.Shared/Chat/ChatChannelExtensions.cs | 2 +- Content.Shared/Chat/ChatSelectChannel.cs | 2 +- Content.Shared/Chat/MsgDeleteChatMessagesBy.cs | 2 +- .../Chat/TypingIndicator/TypingIndicatorClothingComponent.cs | 2 +- .../Chat/TypingIndicator/TypingIndicatorComponent.cs | 2 +- .../Chat/TypingIndicator/TypingIndicatorPrototype.cs | 2 +- Content.Shared/Chat/TypingIndicator/TypingIndicatorVisuals.cs | 2 +- Content.Shared/Chat/V2/Moderation/ChatCensor.cs | 2 +- Content.Shared/Chat/V2/Moderation/RegexCensor.cs | 2 +- Content.Shared/Chat/V2/Moderation/SimpleCensor.cs | 2 +- Content.Shared/Chat/V2/Repository/Types.cs | 2 +- Content.Shared/Chemistry/Components/ReagentTankComponent.cs | 2 +- .../Components/SolutionManager/DrawableSolutionComponent.cs | 2 +- .../Components/SolutionManager/ExaminableSolutionComponent.cs | 2 +- .../Components/SolutionManager/InjectableSolutionComponent.cs | 2 +- .../SolutionManager/SolutionContainerManagerComponent.cs | 2 +- .../Components/SolutionManager/SolutionManagerComponent.cs | 2 +- .../SharedSolutionContainerSystem.Compatibility.cs | 2 +- Content.Shared/Chemistry/Events/InjectorEvents.cs | 2 +- Content.Shared/Chemistry/Prototypes/InjectorModePrototype.cs | 2 +- Content.Shared/Chemistry/Reaction/ReactiveGroupPrototype.cs | 2 +- Content.Shared/Chemistry/Reagent/ReagentData.cs | 2 +- Content.Shared/Chemistry/Reagent/ReagentQuantity.cs | 2 +- Content.Shared/Chemistry/SharedChemistryGuideDataSystem.cs | 2 +- Content.Shared/Chemistry/SharedTransferAmount.cs | 2 +- Content.Shared/Cloning/AcceptCloningEuiMessage.cs | 2 +- Content.Shared/Cloning/SharedCloningConsole.cs | 2 +- Content.Shared/Clothing/ClothingSpeedModifierComponent.cs | 2 +- Content.Shared/Clothing/Events/ToggleMaskDoAfterEvent.cs | 2 +- Content.Shared/Codewords/CodewordComponent.cs | 2 +- Content.Shared/Codewords/CodewordFactionPrototype.cs | 2 +- Content.Shared/Codewords/CodewordGeneratorPrototype.cs | 2 +- Content.Shared/Codewords/CodewordManagerComponent.cs | 2 +- Content.Shared/Codewords/CodewordSystem.cs | 2 +- .../Pacification/PacifismDangerousAttackComponent.cs | 2 +- Content.Shared/Commands/CommandHelper.cs | 2 +- .../Construction/Components/AnchorOnlyOnStationComponent.cs | 2 +- .../Construction/Components/PartAssemblyComponent.cs | 2 +- .../Construction/Conditions/EmptyOrWindowValidInTile.cs | 2 +- .../Construction/Conditions/IConstructionCondition.cs | 2 +- Content.Shared/Construction/Conditions/NoUnstackableInTile.cs | 2 +- Content.Shared/Construction/Conditions/TileType.cs | 2 +- Content.Shared/Construction/IGraphAction.cs | 2 +- Content.Shared/Construction/IGraphCondition.cs | 2 +- Content.Shared/Construction/MachineDeconstructedEvent.cs | 2 +- Content.Shared/Construction/PartAssemblySystem.cs | 2 +- .../Construction/Prototypes/ConstructionGraphPrototype.cs | 2 +- .../Construction/SharedCanBuildWindowOnTopComponent.cs | 2 +- .../Steps/ArbitraryInsertConstructionGraphStep.cs | 2 +- .../Construction/Steps/ComponentConstructionGraphStep.cs | 2 +- Content.Shared/Construction/Steps/ConstructionGraphStep.cs | 2 +- .../Construction/Steps/ConstructionGraphStepTypeSerializer.cs | 2 +- .../Construction/Steps/EntityInsertConstructionGraphStep.cs | 2 +- Content.Shared/Contraband/ContrabandComponent.cs | 2 +- Content.Shared/Coordinates/EntityCoordinatesExtensions.cs | 2 +- Content.Shared/Crayon/SharedCrayonSystem.cs | 2 +- .../Damage/Components/DamageModifierStatusEffectComponent.cs | 2 +- Content.Shared/Damage/Components/DamagePopupComponent.cs | 2 +- Content.Shared/Damage/Components/SlowOnDamageComponent.cs | 2 +- .../Damage/ForceSay/AllowNextCritSpeechComponent.cs | 2 +- Content.Shared/Damage/ForceSay/DamageForceSayComponent.cs | 2 +- Content.Shared/Damage/ForceSay/DamageForceSayEvent.cs | 2 +- Content.Shared/Damage/Systems/DamageModifierStatusEffect.cs | 2 +- .../Damage/Systems/DamageableSystem.BenchmarkHelpers.cs | 2 +- Content.Shared/Dataset/DatasetPrototype.cs | 2 +- Content.Shared/Decals/ColorPalettePrototype.cs | 2 +- Content.Shared/Destructible/ThresholdActs.cs | 2 +- Content.Shared/DetailExaminable/DetailExaminableComponent.cs | 2 +- .../DeviceLinking/Events/DeviceLinkOverloadedEvent.cs | 2 +- Content.Shared/DeviceLinking/LogicStatePayload.cs | 2 +- Content.Shared/DeviceLinking/SignalPayload.cs | 2 +- Content.Shared/DeviceLinking/TwoWayLeverSignal.cs | 2 +- .../DeviceNetwork/Components/DeviceListComponent.cs | 2 +- .../DeviceNetwork/Components/DeviceNetworkRouterComponent.cs | 2 +- Content.Shared/DeviceNetwork/Device.cs | 2 +- Content.Shared/DeviceNetwork/DeviceNetIdDefaults.cs | 2 +- .../DeviceNetwork/Events/DeviceAddressChangedEvent.cs | 2 +- .../DeviceNetwork/Events/DeviceReceiveAllChangedEvent.cs | 2 +- .../Events/DeviceReceiveFrequencyChangedEvent.cs | 2 +- .../Events/DeviceTransmitFrequencyChangedEvent.cs | 2 +- Content.Shared/DeviceNetwork/NetworkConfiguratorUIMessages.cs | 2 +- Content.Shared/DeviceNetwork/Payloads/ApcNetTogglePayload.cs | 2 +- Content.Shared/DeviceNetwork/Payloads/RoutedNetworkPayload.cs | 2 +- .../DeviceNetwork/Systems/DeviceNetworkRouterSystem.cs | 2 +- Content.Shared/Directions/SharedDirectionExtensions.cs | 2 +- Content.Shared/DisplacementMap/DisplacementDataPrototype.cs | 2 +- Content.Shared/Disposal/Mailing/MailRequestTagPayload.cs | 2 +- Content.Shared/DoAfter/ActiveDoAfterComponent.cs | 2 +- Content.Shared/DoAfter/DoAfterArgsComponent.cs | 2 +- Content.Shared/DragDrop/SharedDragDropSystem.cs | 2 +- Content.Shared/Dragon/DragonEvents.cs | 2 +- Content.Shared/Drunk/DrunkStatusEffectComponent.cs | 2 +- Content.Shared/Emoting/EmoteEvents.cs | 2 +- Content.Shared/Emoting/EmoteSystem.cs | 2 +- .../Components/InflatableSafeDisassemblyComponent.cs | 2 +- .../Engineering/Systems/InflatableSafeDisassemblySystem.cs | 2 +- Content.Shared/Ensnaring/Components/EnsnaringComponent.cs | 2 +- Content.Shared/Ensnaring/EnsnareableVisuals.cs | 2 +- .../Conditions/Body/BreathingEntityCondition.cs | 2 +- .../Conditions/Body/InternalsEntityConditionSystem.cs | 2 +- .../Conditions/Body/MetabolizerTypeEntityConditionSystem.cs | 2 +- .../Conditions/Body/MobStateEntityConditionSystem.cs | 2 +- .../Conditions/Mind/AntagonistEntityConditionSystem.cs | 2 +- .../Conditions/Mind/BodyWhitelistEntityConditionSystem.cs | 2 +- .../Conditions/Mind/JobEntityConditionSystem.cs | 2 +- .../Conditions/Mind/ObjectiveTargetEntityCondition.cs | 2 +- .../Mind/ObjectiveWhitelistEntityConditionSystem.cs | 2 +- .../Conditions/Mind/RoleEntityConditionSystem.cs | 2 +- .../Conditions/ReagentEntityConditionSystem.cs | 2 +- .../Conditions/Tags/HasAllTagsEntityConditionSystem.cs | 2 +- .../Conditions/Tags/HasAnyTagEntityConditionSystem.cs | 2 +- .../Conditions/Tags/HasTagEntityConditionSystem.cs | 2 +- .../Conditions/TemperatureEntityConditionSystem.cs | 2 +- .../Conditions/TemplateEntityConditionSystem.cs | 2 +- .../EntityEffects/Effects/AdjustAlertEntityEffectSystem.cs | 2 +- .../Effects/AdjustTemperatureEntityEffectsSystem.cs | 2 +- .../EntityEffects/Effects/ArtifactEntityEffectsSystem.cs | 2 +- .../EntityEffects/Effects/Atmos/CreateGasEntityEffect.cs | 2 +- .../Effects/Atmos/ExtinguishEntityEffectSystem.cs | 2 +- .../EntityEffects/Effects/Atmos/FlammableEntityEffect.cs | 2 +- .../EntityEffects/Effects/Atmos/IgniteEntityEffect.cs | 2 +- .../Effects/Body/CleanBloodstreamEntityEffectSystem.cs | 2 +- .../EntityEffects/Effects/Body/EyeDamageEntityEffectSystem.cs | 2 +- .../Effects/Body/ModifyBleedEntityEffectSystem.cs | 2 +- .../Effects/Body/ModifyBloodLevelEntityEffectSystem.cs | 2 +- .../Effects/Body/ModifyLungGasEntityEffectSystem.cs | 2 +- .../EntityEffects/Effects/Body/OxygenateEntityEffect.cs | 2 +- .../Effects/Body/ReduceRottingEntityEffectSystem.cs | 2 +- .../EntityEffects/Effects/Body/SatiateEntityEffectSystem.cs | 2 +- .../EntityEffects/Effects/Body/VomitEntityEffectSystem.cs | 2 +- .../Damage/DistributedHealthChangeEntityEffectSystem.cs | 2 +- .../Effects/Damage/EvenHealthChangeEntityEffectSystem.cs | 2 +- .../Effects/Damage/HealthChangeEntityEffectSystem.cs | 2 +- .../Effects/Damage/StaminaDamageEntityEffectSystem.cs | 2 +- .../EntityEffects/Effects/EmoteEntityEffectSystem.cs | 2 +- .../Effects/EntitySpawning/BaseSpawnEntityEntityEffect.cs | 2 +- .../Effects/EntitySpawning/SpawnEntityEntityEffectSystem.cs | 2 +- .../SpawnEntityInContainerEntityEffectSystem.cs | 2 +- .../SpawnEntityInContainerOrDropEntityEffectSystem.cs | 2 +- .../SpawnEntityInInventoryEntityEffectSystem.cs | 2 +- Content.Shared/EntityEffects/Effects/ExplodeEntityEffect.cs | 2 +- .../EntityEffects/Effects/GlowEntityEffectSystem.cs | 2 +- .../EntityEffects/Effects/MakeSentientEntityEffect.cs | 2 +- Content.Shared/EntityEffects/Effects/PolymorphEntityEffect.cs | 2 +- .../Effects/ResetNarcolepsyEntityEffectSystem.cs | 2 +- .../EntityEffects/Effects/SlipifyEntityEffectSystem.cs | 2 +- .../Solution/AddReagentToSolutionEntityEffectSystem.cs | 2 +- .../Effects/Solution/AdjustReagentEntityEffectSystem.cs | 2 +- .../Effects/Solution/AreaReactionEntityEffect.cs | 2 +- .../Solution/SolutionTemperatureEntityEffectsSystem.cs | 2 +- .../Effects/StatusEffects/BaseStatusEffectEntityEffect.cs | 2 +- .../Effects/StatusEffects/DrunkEntityEffectSystem.cs | 2 +- .../Effects/StatusEffects/ElectrocuteEntityEffectSystem.cs | 2 +- .../StatusEffects/GenericStatusEffectEntityEffectSystem.cs | 2 +- .../Effects/StatusEffects/JitterEntityEffectSystem.cs | 2 +- .../StatusEffects/ModifyKnockdownEntityEffectSystem.cs | 2 +- .../StatusEffects/ModifyParalysisEntityEffectSystem.cs | 2 +- .../StatusEffects/ModifyStatusEffectEntityEffectSystem.cs | 2 +- .../StatusEffects/MovementSpeedModifierEntityEffectSystem.cs | 2 +- .../EntityEffects/Effects/TemplateEntityEffectSystem.cs | 2 +- .../EntityEffects/Effects/Transform/EmpEntityEffectSystem.cs | 2 +- .../EntityEffects/Effects/Transform/ExplosionEntityEffect.cs | 2 +- .../Effects/Transform/PopupMessageEntityEffectSystem.cs | 2 +- .../VariationPass/EntitySpawnVariationPassEntityEffect.cs | 2 +- .../EntityEffects/Effects/WashCreamPieEntityEffectSystem.cs | 2 +- .../EntityEffects/Effects/ZombieEntityEffectsSystem.cs | 2 +- .../EntityEffects/EntityEffectOnMapInitComponent.cs | 2 +- .../EntityTable/Conditions/ReoccurrenceDelayCondition.cs | 2 +- Content.Shared/Eui/EuiMessageBase.cs | 2 +- Content.Shared/Eui/EuiStateBase.cs | 2 +- Content.Shared/Eui/MsgEuiCtl.cs | 2 +- .../Explosion/Components/ScatteringGrenadeComponent.cs | 2 +- .../Explosion/EntitySystems/SharedScatteringGrenadeSystem.cs | 2 +- Content.Shared/Fax/FaxPayloads.cs | 2 +- Content.Shared/FeedbackSystem/FeedbackPopupMessage.cs | 2 +- Content.Shared/FeedbackSystem/FeedbackPopupPrototype.cs | 2 +- Content.Shared/FeedbackSystem/SharedFeedbackManager.Events.cs | 2 +- Content.Shared/FeedbackSystem/SharedFeedbackManager.cs | 2 +- Content.Shared/FixedPoint/FixedPoint4.cs | 2 +- Content.Shared/Fluids/Components/EvaporationComponent.cs | 2 +- Content.Shared/Fluids/PuddleVisuals.cs | 2 +- Content.Shared/Fluids/SharedPuddleDebugOverlaySystem.cs | 2 +- Content.Shared/Fluids/SharedSprayComponent.cs | 2 +- Content.Shared/Foldable/DeployFoldableComponent.cs | 2 +- Content.Shared/Follower/Components/OrbitVisualsComponent.cs | 2 +- Content.Shared/Forensics/Components/DnaComponent.cs | 2 +- .../GameTicking/Components/ActiveGameRuleComponent.cs | 2 +- Content.Shared/GameTicking/Events/RoundStartingEvent.cs | 2 +- Content.Shared/GameTicking/PlayerBeforeSpawnEvent.cs | 2 +- Content.Shared/GameTicking/PlayerSpawnCompleteEvent.cs | 2 +- Content.Shared/GameTicking/RoundRestartCleanupEvent.cs | 2 +- .../GameTicking/Rules/Components/ChangelingRuleComponent.cs | 2 +- .../Components/RoundstartStationVariationRuleComponent.cs | 2 +- .../Rules/Components/StationVariationPassRuleComponent.cs | 2 +- .../GameTicking/Rules/Components/SurvivorRuleComponent.cs | 2 +- Content.Shared/GameWindow/RequestWindowAttentionEvent.cs | 2 +- Content.Shared/Ghost/ReturnToBodyEuiMessage.cs | 2 +- Content.Shared/Ghost/Roles/MakeGhostRoleEuiState.cs | 2 +- Content.Shared/Ghost/Roles/Raffles/GhostRoleRaffleSettings.cs | 2 +- .../Ghost/Roles/Raffles/GhostRoleRaffleSettingsPrototype.cs | 2 +- Content.Shared/GhostKick/MsgGhostKick.cs | 2 +- Content.Shared/Gibbing/GibOnRoundEndComponent.cs | 2 +- Content.Shared/GlobalUsings.cs | 2 +- Content.Shared/Gravity/GravityAffectedComponent.cs | 2 +- Content.Shared/Guardian/GuardianToggleActionEvent.cs | 2 +- Content.Shared/HUD/HudThemePrototype.cs | 2 +- .../Hands/Components/PreventForcedThrowComponent.cs | 2 +- .../Hands/EntitySystems/SharedHandsSystem.EventListeners.cs | 2 +- Content.Shared/HijackBeacon/ActiveHijackBeaconComponent.cs | 2 +- Content.Shared/Humanoid/HumanoidCharacterAppearance.cs | 2 +- Content.Shared/Humanoid/HumanoidVisualLayers.cs | 2 +- Content.Shared/Humanoid/Sex.cs | 2 +- Content.Shared/Humanoid/Voice.cs | 2 +- .../IdentityManagement/Components/IdentityComponent.cs | 2 +- Content.Shared/IgnitionSource/IgnitionSourceComponent.cs | 2 +- .../Implants/ChameleonControllerImplantComponent.cs | 2 +- Content.Shared/Implants/Components/RadioImplantComponent.cs | 2 +- Content.Shared/Implants/SharedChameleonControllerSystem.cs | 2 +- Content.Shared/Interaction/BeforeInteract.cs | 2 +- .../Components/BypassInteractionChecksComponent.cs | 2 +- .../Interaction/Components/InteractionRelayComponent.cs | 2 +- .../Interaction/Components/NoRotateOnInteractComponent.cs | 2 +- Content.Shared/Interaction/Events/InteractionAttemptEvent.cs | 2 +- Content.Shared/Interaction/Events/UseAttemptEvent.cs | 2 +- Content.Shared/Interaction/SharedInteractionSystem.Relay.cs | 2 +- Content.Shared/Internals/InternalsDoAfterEvent.cs | 2 +- Content.Shared/Inventory/BlockItemNameInHandComponent.cs | 2 +- Content.Shared/Inventory/Events/BeforeEquipEvents.cs | 2 +- Content.Shared/Inventory/Events/BeforeUnequipEvents.cs | 2 +- Content.Shared/Inventory/Events/EquippedEvents.cs | 2 +- Content.Shared/Inventory/Events/InventoryEquipActEvent.cs | 2 +- Content.Shared/Inventory/Events/UnequippedEvents.cs | 2 +- Content.Shared/Inventory/Events/UseSlotNetworkMessage.cs | 2 +- Content.Shared/Inventory/InventoryComponent.cs | 2 +- Content.Shared/Inventory/RelaySubscriptionHelpers.cs | 2 +- Content.Shared/Inventory/VirtualItem/VirtualItemComponent.cs | 2 +- Content.Shared/IoC/SharedContentIoC.cs | 2 +- Content.Shared/Item/MultiHandedItemComponent.cs | 2 +- Content.Shared/Jaunt/JauntComponent.cs | 2 +- Content.Shared/Jaunt/JauntSystem.cs | 2 +- Content.Shared/Kitchen/Components/ExtractableComponent.cs | 2 +- Content.Shared/Kitchen/RecipeManager.cs | 2 +- .../Light/Components/SharedEmergencyLightComponent.cs | 2 +- .../Light/Components/SharedLightBehaviourComponent.cs | 2 +- Content.Shared/Light/Events/LightReplacerBUIMessages.cs | 2 +- Content.Shared/Light/PoweredLightDoAfterEvent.cs | 2 +- Content.Shared/Lightning/SharedLightningSystem.cs | 2 +- .../Lock/BypassLock/Components/BypassLockComponent.cs | 2 +- .../Components/BypassLockRequiresMobStateComponent.cs | 2 +- .../Lock/BypassLock/Systems/BypassLockSystem.MobState.cs | 2 +- Content.Shared/Lock/BypassLock/Systems/BypassLockSystem.cs | 2 +- Content.Shared/MachineLinking/UIKeys.cs | 2 +- Content.Shared/Magic/Components/MagicComponent.cs | 2 +- Content.Shared/Magic/Components/SpellbookComponent.cs | 2 +- Content.Shared/Magic/Components/WizardClothesComponent.cs | 2 +- Content.Shared/Magic/Events/BeforeCastSpellEvent.cs | 2 +- Content.Shared/Magic/MagicInstantSpawnData.cs | 2 +- Content.Shared/Magic/SpellbookDoAfterEvent.cs | 2 +- Content.Shared/MapText/SharedMapTextComponent.cs | 2 +- Content.Shared/MapText/SharedMapTextSystem.cs | 2 +- Content.Shared/Mapping/MappingMapDataMessage.cs | 2 +- Content.Shared/Mapping/MappingSaveMapErrorMessage.cs | 2 +- Content.Shared/Mapping/MappingSaveMapMessage.cs | 2 +- Content.Shared/MassMedia/Components/StationNewsComponent.cs | 2 +- Content.Shared/Materials/ActiveMaterialReclaimerComponent.cs | 2 +- Content.Shared/Materials/CollideMaterialReclaimerComponent.cs | 2 +- Content.Shared/Materials/InsertingMaterialStorageComponent.cs | 2 +- Content.Shared/Materials/MaterialReclaimerComponent.cs | 2 +- .../Mech/Equipment/Components/MechEquipmentComponent.cs | 2 +- Content.Shared/Mech/SharedMech.cs | 2 +- .../Medical/CrewMonitoring/BroadcastSuitSensorStatePayload.cs | 2 +- Content.Shared/Medical/Cryogenics/ActiveCryoPodComponent.cs | 2 +- Content.Shared/Medical/Cryogenics/CryoPodWireStatus.cs | 2 +- Content.Shared/Medical/Cryogenics/InsideCryoPodComponent.cs | 2 +- .../Medical/Cryogenics/SharedInsideCryoPodSystem.cs | 2 +- Content.Shared/Medical/DefibrillatorComponent.cs | 2 +- Content.Shared/Medical/HealingDoAfterEvent.cs | 2 +- Content.Shared/Medical/ReclaimerDoAfterEvent.cs | 2 +- Content.Shared/Medical/StethoscopeDoAfterEvent.cs | 2 +- Content.Shared/MedicalScanner/HealthAnalyzerDoAfterEvent.cs | 2 +- Content.Shared/MedicalScanner/HealthAnalyzerUiKey.cs | 2 +- Content.Shared/Mind/Components/TransferMindOnGibComponent.cs | 2 +- Content.Shared/Mind/MindVisuals.cs | 2 +- .../Mindshield/Components/FakeMindshieldComponent.cs | 2 +- Content.Shared/Mindshield/FakeMindshieldSystem.cs | 2 +- Content.Shared/Mobs/Components/MobStateActionsComponent.cs | 2 +- Content.Shared/Mobs/CritMobActions.cs | 2 +- Content.Shared/Mobs/MobState.cs | 2 +- Content.Shared/Mobs/Systems/MobStateSystem.StateMachine.cs | 2 +- Content.Shared/Mobs/Systems/SharedDeathgaspSystem.cs | 2 +- Content.Shared/MouseRotator/MouseRotatorComponent.cs | 2 +- Content.Shared/MouseRotator/SharedMouseRotatorSystem.cs | 2 +- Content.Shared/Movement/Components/CanMoveInAirComponent.cs | 2 +- .../Movement/Components/FrictionStatusEffectComponent.cs | 2 +- Content.Shared/Movement/Components/NoRotateOnMoveComponent.cs | 2 +- Content.Shared/Movement/Components/WormComponent.cs | 2 +- Content.Shared/Movement/Pulling/Components/PullerComponent.cs | 2 +- Content.Shared/Movement/Pulling/Events/AttemptPullEvent.cs | 2 +- Content.Shared/Movement/Pulling/Events/PullMessage.cs | 2 +- Content.Shared/Movement/Pulling/Events/PullStartedMessage.cs | 2 +- .../Movement/Systems/MovementIgnoreGravitySystem.cs | 2 +- Content.Shared/Movement/Systems/WormSystem.cs | 2 +- Content.Shared/NameIdentifier/NameIdentifierComponent.cs | 2 +- Content.Shared/NameIdentifier/NameIdentifierGroupPrototype.cs | 2 +- Content.Shared/NodeContainer/NodeGroups/INodeGroup.cs | 2 +- Content.Shared/NodeContainer/NodeGroups/IPipeNet.cs | 2 +- Content.Shared/NodeContainer/NodeVis.cs | 2 +- Content.Shared/NukeOps/WarDeclaratorEvents.cs | 2 +- Content.Shared/Nutrition/AnimalHusbandry/InfantComponent.cs | 2 +- .../Nutrition/AnimalHusbandry/ReproductiveComponent.cs | 2 +- .../Nutrition/AnimalHusbandry/ReproductivePartnerComponent.cs | 2 +- Content.Shared/Nutrition/Components/EdibleComponent.cs | 2 +- Content.Shared/Nutrition/Components/SharedFatExtractor.cs | 2 +- Content.Shared/Nutrition/EntitySystems/IngestionSystem.API.cs | 2 +- Content.Shared/Nutrition/Events.cs | 2 +- Content.Shared/Nutrition/Prototypes/EdiblePrototype.cs | 2 +- Content.Shared/Objectives/Systems/AliveAiTargetSystem.cs | 2 +- .../Objectives/Systems/AliveHumanoidTargetSystem.cs | 2 +- .../Objectives/Systems/GenericTargetSystem.Entity.cs | 2 +- Content.Shared/Objectives/Systems/GenericTargetSystem.Mind.cs | 2 +- Content.Shared/Objectives/Systems/GenericTargetSystem.cs | 2 +- .../Components/ParticleAcceleratorEmitterComponent.cs | 2 +- .../Components/ParticleAcceleratorEndCapComponent.cs | 2 +- .../Components/ParticleAcceleratorFuelChamberComponent.cs | 2 +- .../Components/ParticleAcceleratorPowerBoxComponent.cs | 2 +- Content.Shared/Physics/PreventCollideComponent.cs | 2 +- Content.Shared/Physics/SharedPreventCollideSystem.cs | 2 +- Content.Shared/Placeable/ItemPlacerComponent.cs | 2 +- Content.Shared/Players/ContentPlayerData.cs | 2 +- Content.Shared/Players/JobWhitelist/MsgJobWhitelist.cs | 2 +- Content.Shared/Players/PlayTimeTracking/MsgPlayTime.cs | 2 +- .../Players/PlayTimeTracking/PlayTimeTrackingShared.cs | 2 +- Content.Shared/Players/PlayerDataExt.cs | 2 +- Content.Shared/Players/RateLimiting/RateLimitRegistration.cs | 2 +- .../Players/RateLimiting/SharedPlayerRateLimitManager.cs | 2 +- Content.Shared/Players/SharedPlayerSystem.cs | 2 +- Content.Shared/PneumaticCannon/SharedPneumaticCannonSystem.cs | 2 +- .../Pointing/Components/SharedRoguePointingArrowComponent.cs | 2 +- Content.Shared/Points/SharedPointSystem.cs | 2 +- Content.Shared/Polymorph/PolymorphActions.cs | 2 +- Content.Shared/Power/ApcToolFinishedEvent.cs | 2 +- .../Power/Components/ApcPowerReceiverComponentState.cs | 2 +- .../Power/Components/SharedApcPowerReceiverComponent.cs | 2 +- Content.Shared/Power/Generation/Teg/SharedTeg.cs | 2 +- Content.Shared/Power/Generator/FuelGeneratorComponent.cs | 2 +- .../Power/Generator/GeneratorExhaustGasComponent.cs | 2 +- Content.Shared/Power/Generator/PowerSwitchableComponent.cs | 2 +- Content.Shared/Power/Generator/SharedGeneratorSystem.cs | 2 +- .../Power/Generator/SharedPortableGeneratorComponent.cs | 2 +- .../Power/Generator/SharedPortableGeneratorSystem.cs | 2 +- Content.Shared/Power/Generator/SharedPowerSwitchableSystem.cs | 2 +- Content.Shared/Power/PowerChangedEvent.cs | 2 +- Content.Shared/Power/SharedBattery.cs | 2 +- Content.Shared/Power/SharedPowerCharge.cs | 2 +- Content.Shared/Power/SharedPowerChargeComponent.cs | 2 +- Content.Shared/Preferences/MsgDeleteCharacter.cs | 2 +- Content.Shared/Preferences/MsgSelectCharacter.cs | 2 +- Content.Shared/Prototypes/EntityPrototypeHelpers.cs | 2 +- .../Components/ProximityDetectorComponent.cs | 2 +- Content.Shared/ProximityDetection/ProximityDetectionEvents.cs | 2 +- .../ProximityDetection/Systems/ProximityDetectionSystem.cs | 2 +- Content.Shared/Puppet/VentriloquistPuppetComponent.cs | 2 +- Content.Shared/Radiation/Systems/SharedRadiationSystem.cs | 2 +- Content.Shared/Radio/Components/IntercomComponent.cs | 2 +- Content.Shared/Radio/RadioVisuals.cs | 2 +- Content.Shared/Radio/SharedIntercom.cs | 2 +- Content.Shared/RatKing/Components/RummageableComponent.cs | 2 +- Content.Shared/RatKing/RatKingActions.cs | 2 +- Content.Shared/RatKing/RatKingServantComponent.cs | 2 +- Content.Shared/Repairable/RepairableComponent.cs | 2 +- .../RepulseAttract/Events/RepulseAttractActionEvent.cs | 2 +- Content.Shared/RepulseAttract/RepulseAttractComponent.cs | 2 +- Content.Shared/RepulseAttract/RepulseAttractSystem.cs | 2 +- Content.Shared/Research/Components/ResearchClientComponent.cs | 2 +- Content.Shared/Research/Prototypes/TechDisciplinePrototype.cs | 2 +- Content.Shared/Research/Prototypes/TechnologyPrototype.cs | 2 +- Content.Shared/Research/SharedDiskConsole.cs | 2 +- .../TechnologyDisk/Components/TechnologyDiskComponent.cs | 2 +- Content.Shared/Resist/EscapeInventoryEvent.cs | 2 +- Content.Shared/Resist/ResistLockerDoAfterEvent.cs | 2 +- Content.Shared/Respawn/SharedSpecialRespawnSystem.cs | 2 +- .../EntitySystems/SharedRevenantOverloadedLightsSystem.cs | 2 +- Content.Shared/Roles/Components/ChangelingRoleComponent.cs | 2 +- .../Roles/Components/GhostRoleMarkerRoleComponent.cs | 2 +- Content.Shared/Roles/Components/JobRoleComponent.cs | 2 +- Content.Shared/Roles/Components/ObserverRoleComponent.cs | 2 +- Content.Shared/Roles/Components/RoleBriefingComponent.cs | 2 +- Content.Shared/Roles/Components/SiliconBrainRoleComponent.cs | 2 +- .../Roles/Components/SubvertedSiliconRoleComponent.cs | 2 +- Content.Shared/Roles/Components/SurvivorRoleComponent.cs | 2 +- Content.Shared/Roles/Components/WizardRoleComponent.cs | 2 +- Content.Shared/Roles/MindGetAllRoleInfoEvent.cs | 2 +- Content.Shared/Roles/RoleAddedEvent.cs | 2 +- Content.Shared/Roles/RoleEvent.cs | 2 +- Content.Shared/Roles/RoleRemovedEvent.cs | 2 +- Content.Shared/Rootable/RootableComponent.cs | 2 +- Content.Shared/Rootable/RootableSystem.cs | 2 +- Content.Shared/RoundEnd/ScreenShuttlePayload.cs | 2 +- Content.Shared/Rounding/ContentHelpers.cs | 2 +- Content.Shared/SMES/SharedSmesComponent.cs | 2 +- Content.Shared/Salvage/Expeditions/ExpeditionStage.cs | 2 +- Content.Shared/Salvage/Magnet/ISalvageMagnetOffering.cs | 2 +- Content.Shared/Screens/ScreenTextPayload.cs | 2 +- Content.Shared/Security/SecurityStatus.cs | 2 +- Content.Shared/Security/Systems/DeployableBarrierSystem.cs | 2 +- Content.Shared/SensorMonitoring/BatterySensorPayloads.cs | 2 +- .../SharedSensorMonitoringConsoleComponent.cs | 2 +- Content.Shared/SharedArrayExtension.cs | 2 +- Content.Shared/Silicons/Borgs/BorgTypePrototype.cs | 2 +- Content.Shared/Silicons/Borgs/BorgUI.cs | 2 +- .../Silicons/Borgs/Components/BorgBrainComponent.cs | 2 +- .../Silicons/Borgs/Components/BorgChassisComponent.cs | 2 +- .../Silicons/Borgs/Components/BorgModuleComponent.cs | 2 +- .../Silicons/Borgs/Components/BorgModuleIconComponent.cs | 4 ++-- .../Silicons/Borgs/Components/BorgSwitchableTypeComponent.cs | 2 +- .../Silicons/Borgs/Components/ComponentBorgModuleComponent.cs | 2 +- Content.Shared/Silicons/Borgs/Components/MMIComponent.cs | 2 +- .../Borgs/Components/SelectableBorgModuleComponent.cs | 2 +- Content.Shared/Silicons/Borgs/SharedBorgSystem.Relay.cs | 2 +- Content.Shared/Silicons/Borgs/SharedBorgSystem.Ui.cs | 2 +- Content.Shared/Silicons/Bots/HugBotComponent.cs | 2 +- Content.Shared/Silicons/Bots/SharedHugBotSystem.cs | 2 +- .../Silicons/Laws/Components/SiliconLawProviderComponent.cs | 2 +- Content.Shared/Silicons/Laws/IonLawPrototype.cs | 2 +- Content.Shared/Silicons/Laws/SiliconLawEditEuiState.cs | 2 +- Content.Shared/Silicons/Laws/SiliconLawPrototype.cs | 2 +- Content.Shared/Silicons/Laws/SiliconLawsetPrototype.cs | 2 +- .../Components/SharedParticleAcceleratorComponent.cs | 2 +- .../Singularity/EntitySystems/SharedEmitterSystem.cs | 2 +- Content.Shared/Singularity/SingularityVisualKeys.cs | 2 +- Content.Shared/Smoking/SmokeVisuals.cs | 2 +- Content.Shared/Smoking/SmokingVisuals.cs | 2 +- Content.Shared/Spawners/EntitySystems/SpawnPointSystem.cs | 2 +- Content.Shared/Speech/AccentEvent.cs | 2 +- Content.Shared/Speech/Components/BaseAccentComponent.cs | 2 +- Content.Shared/Speech/EmoteActionEvent.cs | 2 +- Content.Shared/Speech/EntitySystems/EmotesMenuSystem.cs | 2 +- Content.Shared/Speech/EntitySystems/LizardAccentSystem.cs | 2 +- Content.Shared/Speech/EntitySystems/MothAccentSystem.cs | 2 +- .../Speech/EntitySystems/RatvarianLanguageSystem.cs | 2 +- .../Speech/EntitySystems/SharedDamagedSiliconAccentSystem.cs | 2 +- Content.Shared/Speech/EntitySystems/SkeletonAccentSystem.cs | 2 +- Content.Shared/Speech/SpeakAttemptEvent.cs | 2 +- Content.Shared/Speech/SpeechVerbPrototype.cs | 2 +- Content.Shared/Spillable/SpillDoAfterEvent.cs | 2 +- Content.Shared/Sprite/SimpleSpriteOverlayComponent.cs | 2 +- Content.Shared/Stacks/StackEvents.cs | 2 +- Content.Shared/Stacks/StackPrototype.cs | 2 +- Content.Shared/Station/Components/StationDataComponent.cs | 2 +- .../Station/Components/StationEventEligibleComponent.cs | 2 +- Content.Shared/Station/Components/StationSpawningComponent.cs | 2 +- Content.Shared/Station/StationConfig.cs | 2 +- Content.Shared/Station/StationsUpdatedEvent.cs | 2 +- .../StationRecords/Events/GeneralRecordCreatedEvent.cs | 2 +- Content.Shared/StationRecords/Events/IStationRecordEvent.cs | 2 +- Content.Shared/StationRecords/Events/RecordModifiedEvent.cs | 2 +- Content.Shared/StationRecords/Events/RecordRemovedEvent.cs | 2 +- Content.Shared/StationRecords/StationRecord.cs | 2 +- .../StationRecords/Systems/StationRecordsSystem.API.cs | 2 +- .../StationRecords/Systems/StationRecordsSystem.Helpers.cs | 2 +- Content.Shared/StatusEffect/StatusEffectPrototype.cs | 2 +- .../Components/CloneableStatusEffectComponent.cs | 2 +- Content.Shared/StatusIcon/Components/JobStatusComponent.cs | 2 +- Content.Shared/StatusIcon/SharedStatusIconSystem.cs | 2 +- Content.Shared/StepTrigger/Systems/StepTriggerImmuneSystem.cs | 2 +- Content.Shared/Sticky/Components/StickyComponent.cs | 2 +- Content.Shared/Sticky/EntityStuckEvent.cs | 2 +- Content.Shared/Sticky/StickyDoAfterEvent.cs | 2 +- Content.Shared/Storage/Components/BinComponent.cs | 2 +- .../Storage/Components/InsideEntityStorageComponent.cs | 2 +- Content.Shared/Storage/Components/ItemMapperComponent.cs | 2 +- .../Storage/Components/StorageFillVisualizerComponent.cs | 2 +- .../Storage/Components/StoreAfterFailedInteractComponent.cs | 2 +- Content.Shared/Storage/Components/StoreOnCollideComponent.cs | 2 +- .../Storage/EntitySystems/BluespaceLockerDoAfterEvent.cs | 2 +- .../Storage/EntitySystems/SharedItemCounterSystem.cs | 2 +- .../Storage/EntitySystems/StoreAfterFailedInteractSystem.cs | 2 +- Content.Shared/Storage/EntitySystems/StoreOnCollideSystem.cs | 2 +- .../Storage/Events/EntityProviderInsertCheckEvent.cs | 2 +- Content.Shared/Storage/Events/StorageInsertFailedEvent.cs | 2 +- Content.Shared/Store/ListingLocalisationHelpers.cs | 2 +- Content.Shared/Store/SharedStoreSystem.Listings.cs | 2 +- Content.Shared/Store/SharedStoreSystem.UI.cs | 2 +- Content.Shared/Stunnable/CrawlerComponent.cs | 2 +- Content.Shared/Stunnable/KnockdownStatusEffectComponent.cs | 2 +- Content.Shared/Stunnable/SharedStunSystem.Visualizer.cs | 2 +- Content.Shared/Stunnable/StunVisualsComponent.cs | 2 +- Content.Shared/Stunnable/StunnableEvents.cs | 2 +- .../SurveillanceCamera/SurveillanceCameraPayloads.cs | 2 +- Content.Shared/Survivor/Components/SurvivorComponent.cs | 2 +- Content.Shared/Swab/SwabEvents.cs | 2 +- Content.Shared/Tabletop/Events/TabletopMoveEvent.cs | 2 +- Content.Shared/Tabletop/Events/TabletopPlayEvent.cs | 2 +- Content.Shared/Tabletop/Events/TabletopStopPlayingEvent.cs | 2 +- Content.Shared/Tabletop/TabletopItemVisuals.cs | 2 +- Content.Shared/Tabletop/TabletopSession.cs | 2 +- Content.Shared/Tag/TagComponent.cs | 2 +- Content.Shared/Tag/TagPrototype.cs | 2 +- .../Teleportation/Components/LinkedEntityComponent.cs | 2 +- Content.Shared/Teleportation/Components/PortalComponent.cs | 2 +- .../Teleportation/Components/PortalTimeoutComponent.cs | 2 +- Content.Shared/Teleportation/Systems/SharedPortalSystem.cs | 2 +- .../Teleportation/Systems/SharedTeleportLocationsSystem.cs | 2 +- Content.Shared/Teleportation/TeleportLocationsUi.cs | 2 +- Content.Shared/Temperature/IsHotEvent.cs | 2 +- Content.Shared/Temperature/TemperatureHelpers.cs | 2 +- Content.Shared/Throwing/ThrowAttemptEvent.cs | 2 +- Content.Shared/Timing/StartEndTime.cs | 2 +- Content.Shared/Timing/Systems/UseDelaySystem.API.cs | 2 +- Content.Shared/Tools/Systems/WeldFinishedEvent.cs | 2 +- Content.Shared/Tools/Systems/WeldableAttemptEvent.cs | 2 +- Content.Shared/Toolshed/TypeParsers/FixedPoint2TypeParser.cs | 2 +- .../Traits/Assorted/HemophiliaStatusEffectComponent.cs | 2 +- Content.Shared/Traits/Assorted/HemophiliaSystem.cs | 2 +- Content.Shared/Traits/Assorted/LegsParalyzedComponent.cs | 2 +- Content.Shared/Traits/Assorted/LegsParalyzedSystem.cs | 2 +- Content.Shared/Traits/Assorted/NarcolepsyComponent.cs | 2 +- Content.Shared/Traits/Assorted/PermanentBlindnessComponent.cs | 2 +- Content.Shared/Traits/Assorted/PermanentBlindnessSystem.cs | 2 +- .../Trigger/Components/Effects/GhostKickOnTriggerComponent.cs | 2 +- .../Components/Effects/LightBehaviorOnTriggerComponent.cs | 2 +- .../Components/Effects/ReleaseGasOnTriggerComponent.cs | 2 +- .../Triggers/ActiveTriggerOnTimedCollideComponent.cs | 2 +- .../Trigger/Components/Triggers/TriggerOnActivateComponent.cs | 2 +- .../Components/Triggers/TriggerOnDidEquipHandComponent.cs | 2 +- .../Components/Triggers/TriggerOnDidUnequipHandComponent.cs | 2 +- .../Trigger/Components/Triggers/TriggerOnDroppedComponent.cs | 2 +- .../Components/Triggers/TriggerOnGotEquippedHandComponent.cs | 2 +- .../Triggers/TriggerOnGotUnequippedHandComponent.cs | 2 +- .../Components/Triggers/TriggerOnHitscanFiredComponent.cs | 2 +- .../Components/Triggers/TriggerOnHitscanHitComponent.cs | 2 +- .../Trigger/Components/Triggers/TriggerOnIngestedComponent.cs | 2 +- .../Components/Triggers/TriggerOnMobstateChangeComponent.cs | 2 +- .../Components/Triggers/TriggerOnStepTriggerComponent.cs | 2 +- .../Trigger/Components/Triggers/TriggerOnThrowComponent.cs | 2 +- .../Trigger/Components/Triggers/TriggerOnThrownComponent.cs | 2 +- .../Components/Triggers/TriggerOnTimedCollideComponent.cs | 2 +- .../Trigger/Components/Triggers/TriggerOnUseComponent.cs | 2 +- Content.Shared/Trigger/SharedTriggerSystems.cs | 2 +- .../Trigger/Systems/SharedReleaseGasOnTriggerSystem.cs | 2 +- .../Trigger/Systems/TriggerOnMobstateChangeSystem.cs | 2 +- Content.Shared/Trigger/Systems/TriggerSystem.Collide.cs | 2 +- Content.Shared/Trigger/Systems/TriggerSystem.Condition.cs | 2 +- Content.Shared/Trigger/Systems/TriggerSystem.Spawn.cs | 2 +- Content.Shared/Trigger/Systems/TriggerSystem.Timer.cs | 2 +- Content.Shared/Trigger/Systems/TriggerSystem.cs | 2 +- Content.Shared/Trigger/TriggerVisuals.cs | 2 +- Content.Shared/TurretController/TurretControllerPayloads.cs | 2 +- Content.Shared/Turrets/TurretPayloads.cs | 2 +- Content.Shared/UserInterface/ActivatableUIComponent.cs | 2 +- Content.Shared/UserInterface/IntrinsicUIComponent.cs | 2 +- Content.Shared/UserInterface/IntrinsicUISystem.cs | 2 +- Content.Shared/UserInterface/OpenUiActionEvent.cs | 2 +- Content.Shared/UserInterface/ToggleIntrinsicUIEvent.cs | 2 +- Content.Shared/Vapor/SharedVaporComponent.cs | 2 +- .../Vehicle/Components/ContainerVehicleComponent.cs | 2 +- .../Vehicle/Components/GenericKeyedVehicleComponent.cs | 2 +- Content.Shared/Vehicle/Components/StrapVehicleComponent.cs | 2 +- Content.Shared/Vehicle/Components/VehicleComponent.cs | 2 +- Content.Shared/Vehicle/Components/VehicleOperatorComponent.cs | 2 +- Content.Shared/Vehicle/Systems/VehicleSystem.cs | 2 +- Content.Shared/VoiceMask/VoiceMaskSetNameEvent.cs | 2 +- Content.Shared/Voting/MsgVoteCanCall.cs | 2 +- Content.Shared/Voting/MsgVoteMenu.cs | 2 +- Content.Shared/Wagging/WaggingComponent.cs | 2 +- Content.Shared/Wall/ReinforcedWallVisuals.cs | 2 +- .../Weapons/Melee/Components/BonusMeleeAttackRateComponent.cs | 2 +- .../Weapons/Melee/Components/BonusMeleeDamageComponent.cs | 2 +- .../Weapons/Melee/Components/UseDelayOnMeleeHitComponent.cs | 2 +- Content.Shared/Weapons/Melee/UseDelayOnMeleeHitSystem.cs | 2 +- .../Ranged/Components/BallisticAmmoInteractLoaderComponent.cs | 2 +- .../Ranged/Components/BallisticAmmoSelfRefillerComponent.cs | 2 +- .../Ranged/Components/ContainerAmmoProviderComponent.cs | 2 +- .../Ranged/Components/CustomSpriteAmmoCounterComponent.cs | 2 +- Content.Shared/Weapons/Ranged/Events/BeforeAmmoLoadedEvent.cs | 2 +- Content.Shared/Weapons/Ranged/Events/GetAmmoCountEvent.cs | 2 +- Content.Shared/Weapons/Ranged/Events/GunGetAmmoSpreadEvent.cs | 2 +- .../Weapons/Ranged/Events/GunMuzzleFlashAttemptEvent.cs | 2 +- .../Weapons/Ranged/Events/GunRefreshModifiersEvent.cs | 2 +- Content.Shared/Weapons/Ranged/IShootable.cs | 2 +- .../Weapons/Ranged/Systems/SharedGunSystem.BasicEntity.cs | 2 +- .../Weapons/Ranged/Systems/SharedGunSystem.Container.cs | 2 +- .../Ranged/Systems/SharedGunSystem.CustomAmmoCounter.cs | 2 +- .../Weapons/Ranged/Systems/SharedGunSystem.Solution.cs | 2 +- Content.Shared/Wires/ActivatableUIRequiresPanelComponent.cs | 2 +- Content.Shared/Wires/SharedWireVisComponent.cs | 2 +- .../Components/SuppressArtifactContainerComponent.cs | 2 +- .../Equipment/SuppressArtifactContainerSystem.cs | 2 +- Content.Shared/Zombies/IncurableZombieComponent.cs | 2 +- Content.Shared/Zombies/SharedZombieSystem.cs | 2 +- Content.Tests/AssemblyInfo.cs | 2 +- Content.Tests/Server/Connection/IPIntelTest.cs | 2 +- Content.Tests/Server/Utility/IPAddressExtTest.cs | 2 +- Content.Tests/Shared/Administration/AdminFlagsExtTest.cs | 2 +- Content.Tests/Shared/Administration/Logs/LogTypeTests.cs | 2 +- Content.Tests/Shared/Atmos/GasMixtureTest.cs | 2 +- Content.Tests/Shared/Chat/V2/Moderation/SimpleCensor.cs | 2 +- Content.Tests/Shared/Chemistry/ReagentPrototype_Tests.cs | 2 +- Content.Tests/Shared/DirectionRandomizerTest.cs | 2 +- Content.Tests/Shared/Gamestates/ComponentStateNullTest.cs | 2 +- Content.Tests/Shared/Preferences/Job/JobPriorityTest.cs | 2 +- Content.Tests/Shared/Utility/ContentHelpers_Test.cs | 2 +- Content.Tests/Shared/Utility/RandomExtensionsTests.cs | 2 +- Content.Tools/MappingMergeDriver.cs | 2 +- Content.Tools/Merger.cs | 2 +- Content.Tools/TypeTagPreserver.cs | 2 +- Content.Tools/YamlTools.cs | 2 +- Pow3r/LinqHelper.cs | 2 +- Pow3r/Program.OpenGL.cs | 2 +- Pow3r/Program.SaveLoad.cs | 2 +- Pow3r/Program.Veldrid.cs | 2 +- Pow3r/Program.cs | 2 +- Resources/Audio/Ambience/Temporary/attributions.yml | 2 +- Resources/Audio/Effects/Changeling/attributions.yml | 2 +- Resources/Audio/Effects/Shuttle/attributions.yml | 2 +- Resources/Audio/Items/Anomaly/attributions.yml | 2 +- Resources/Audio/Items/Dice/attributions.yml | 2 +- Resources/Audio/Items/Handcuffs/attributions.yml | 2 +- Resources/Audio/Jukebox/attributions.yml | 2 +- Resources/Audio/Lobby/attributions.yml | 2 +- Resources/Audio/Magic/Cults/ClockCult/attributions.yml | 2 +- Resources/Audio/Mecha/attributions.yml | 2 +- Resources/Audio/UserInterface/attributions.yml | 2 +- Resources/Audio/Voice/Arachnid/attributions.yml | 2 +- Resources/Audio/Voice/Diona/attributions.yml | 2 +- Resources/Audio/Voice/Reptilian/attritbutions.yml | 2 +- Resources/Audio/Voice/Zombie/attributions.yml | 2 +- Resources/Audio/Weapons/Guns/Gunshots/Magic/attributions.yml | 2 +- Resources/Audio/Weapons/Guns/Gunshots/attributions.yml | 2 +- Resources/Audio/Weapons/Guns/Misc/attributions.yml | 2 +- Resources/Audio/Weapons/Guns/Miss/attributions.yml | 2 +- Resources/Locale/en-US/accent/mobster.ftl | 2 +- Resources/Locale/en-US/accent/russian.ftl | 2 +- Resources/Locale/en-US/accent/scottish.ftl | 2 +- Resources/Locale/en-US/accent/scrambled.ftl | 2 +- .../Locale/en-US/access/systems/access-reader-system.ftl | 2 +- Resources/Locale/en-US/actions/actions/actions-commands.ftl | 2 +- Resources/Locale/en-US/actions/actions/blocking.ftl | 2 +- Resources/Locale/en-US/actions/actions/crit.ftl | 2 +- Resources/Locale/en-US/actions/actions/diona.ftl | 2 +- Resources/Locale/en-US/actions/actions/egg-lay.ftl | 2 +- Resources/Locale/en-US/actions/actions/entity-producer.ftl | 2 +- Resources/Locale/en-US/administration/admin-alerts.ftl | 2 +- .../en-US/administration/commands/admin-overlay-command.ftl | 2 +- Resources/Locale/en-US/administration/commands/adminnotes.ftl | 2 +- Resources/Locale/en-US/administration/commands/aghost.ftl | 2 +- Resources/Locale/en-US/administration/commands/camera.ftl | 2 +- .../en-US/administration/commands/change-cvar-command.ftl | 2 +- .../en-US/administration/commands/connection-commands.ftl | 2 +- .../en-US/administration/commands/control-mob-command.ftl | 2 +- .../commands/delete-entities-with-component-command.ftl | 2 +- Resources/Locale/en-US/administration/commands/forceghost.ftl | 2 +- .../en-US/administration/commands/rejuvenate-command.ftl | 2 +- .../Locale/en-US/administration/commands/tag-commands.ftl | 2 +- .../en-US/administration/commands/toggle-chat-command.ftl | 2 +- .../en-US/administration/commands/variantize-command.ftl | 2 +- .../en-US/administration/managers/admin-notes-manager.ftl | 2 +- Resources/Locale/en-US/administration/multi-server-kick.ftl | 2 +- .../Locale/en-US/administration/ui/admin-camera-window.ftl | 2 +- Resources/Locale/en-US/administration/ui/admin-erase.ftl | 2 +- Resources/Locale/en-US/administration/ui/admin-logs.ftl | 2 +- Resources/Locale/en-US/administration/ui/admin-notes.ftl | 2 +- Resources/Locale/en-US/administration/ui/ban-list.ftl | 2 +- .../en-US/administration/ui/manage-solutions/add-reagent.ftl | 2 +- Resources/Locale/en-US/administration/ui/quick-info.ftl | 2 +- Resources/Locale/en-US/administration/ui/quick-links.ftl | 2 +- .../en-US/administration/ui/set-outfit/set-outfit-menu.ftl | 2 +- Resources/Locale/en-US/administration/ui/silicon-law-ui.ftl | 2 +- .../Locale/en-US/administration/ui/tabs/babyjail-tab.ftl | 2 +- Resources/Locale/en-US/administration/ui/tabs/object-tab.ftl | 2 +- .../Locale/en-US/administration/ui/tabs/panicbunker-tab.ftl | 2 +- Resources/Locale/en-US/administration/ui/tabs/player-tab.ftl | 2 +- Resources/Locale/en-US/advertisements/other/firebot.ftl | 2 +- Resources/Locale/en-US/advertisements/vending/ammo.ftl | 2 +- Resources/Locale/en-US/advertisements/vending/bardrobe.ftl | 2 +- Resources/Locale/en-US/advertisements/vending/boozeomat.ftl | 2 +- Resources/Locale/en-US/advertisements/vending/bruiseomat.ftl | 2 +- Resources/Locale/en-US/advertisements/vending/chang.ftl | 2 +- Resources/Locale/en-US/advertisements/vending/chefdrobe.ftl | 2 +- Resources/Locale/en-US/advertisements/vending/chefvend.ftl | 2 +- Resources/Locale/en-US/advertisements/vending/cigs.ftl | 2 +- Resources/Locale/en-US/advertisements/vending/clothesmate.ftl | 4 ++-- Resources/Locale/en-US/advertisements/vending/coffee.ftl | 2 +- Resources/Locale/en-US/advertisements/vending/cola.ftl | 2 +- Resources/Locale/en-US/advertisements/vending/condiments.ftl | 2 +- Resources/Locale/en-US/advertisements/vending/dinnerware.ftl | 2 +- Resources/Locale/en-US/advertisements/vending/discount.ftl | 2 +- Resources/Locale/en-US/advertisements/vending/donut.ftl | 2 +- Resources/Locale/en-US/advertisements/vending/gibb.ftl | 2 +- Resources/Locale/en-US/advertisements/vending/happyhonk.ftl | 2 +- Resources/Locale/en-US/advertisements/vending/megaseed.ftl | 2 +- Resources/Locale/en-US/advertisements/vending/nanomed.ftl | 4 ++-- Resources/Locale/en-US/advertisements/vending/nutrimax.ftl | 2 +- Resources/Locale/en-US/advertisements/vending/pride.ftl | 2 +- Resources/Locale/en-US/advertisements/vending/robodrobe.ftl | 2 +- Resources/Locale/en-US/advertisements/vending/sectech.ftl | 2 +- Resources/Locale/en-US/advertisements/vending/smartfridge.ftl | 2 +- Resources/Locale/en-US/advertisements/vending/smite.ftl | 2 +- Resources/Locale/en-US/advertisements/vending/snack.ftl | 2 +- Resources/Locale/en-US/advertisements/vending/sovietsoda.ftl | 4 ++-- Resources/Locale/en-US/advertisements/vending/theater.ftl | 2 +- Resources/Locale/en-US/advertisements/vending/vendomat.ftl | 2 +- Resources/Locale/en-US/ame/components/ame-part-component.ftl | 2 +- Resources/Locale/en-US/anomaly/inner_anomaly.ftl | 2 +- Resources/Locale/en-US/arcade/spacevillain.ftl | 2 +- Resources/Locale/en-US/armable/armable.ftl | 2 +- Resources/Locale/en-US/atmos/atmos-alerts-console.ftl | 2 +- Resources/Locale/en-US/atmos/atmos-pipe-layers.ftl | 2 +- Resources/Locale/en-US/atmos/flammable-component.ftl | 2 +- Resources/Locale/en-US/atmos/gas-miner-component.ftl | 2 +- .../Locale/en-US/atmos/gas-pressure-regulator-system.ftl | 2 +- Resources/Locale/en-US/atmos/gas-tank-component.ftl | 2 +- Resources/Locale/en-US/bed/cryostorage/cryogenic-storage.ftl | 2 +- .../Locale/en-US/body/body-scanner/body-scanner-component.ftl | 2 +- Resources/Locale/en-US/bql/bql-select.ftl | 2 +- Resources/Locale/en-US/burial/burial.ftl | 2 +- Resources/Locale/en-US/burning/bodyburn.ftl | 2 +- .../Locale/en-US/candle/extinguish-on-interact-component.ftl | 2 +- Resources/Locale/en-US/cargo/cargo-bounty-console.ftl | 2 +- .../Locale/en-US/cargo/cargo-order-database-component.ftl | 2 +- Resources/Locale/en-US/cargo/price-gun-component.ftl | 2 +- .../en-US/cartridge-loader/cartridge-loader-component.ftl | 2 +- Resources/Locale/en-US/changeling/stasis.ftl | 2 +- Resources/Locale/en-US/chat/chat-channel.ftl | 2 +- Resources/Locale/en-US/chat/commands/ghost-command.ftl | 2 +- .../en-US/chemistry/components/rehydratable-component.ftl | 2 +- .../en-US/chemistry/components/solution-scanner-component.ftl | 2 +- .../Locale/en-US/chemistry/components/solution-status.ftl | 2 +- Resources/Locale/en-US/climbing/glass-table-component.ftl | 2 +- Resources/Locale/en-US/cloning/accept-cloning-window.ftl | 2 +- Resources/Locale/en-US/clothing/belts.ftl | 2 +- .../Locale/en-US/clothing/components/chameleon-component.ftl | 2 +- Resources/Locale/en-US/commands/actions-command.ftl | 2 +- Resources/Locale/en-US/commands/add-body-part-command.ftl | 2 +- .../Locale/en-US/commands/addpolymorphaction-command.ftl | 2 +- Resources/Locale/en-US/commands/admin-logs-command.ftl | 2 +- Resources/Locale/en-US/commands/admin-who-command.ftl | 2 +- Resources/Locale/en-US/commands/asay-command.ftl | 2 +- Resources/Locale/en-US/commands/colornetwork-command.ftl | 2 +- Resources/Locale/en-US/commands/credits-command.ftl | 2 +- Resources/Locale/en-US/commands/crew-manifest-command.ftl | 2 +- Resources/Locale/en-US/commands/deadmin-command.ftl | 2 +- Resources/Locale/en-US/commands/debug-pathfinding-command.ftl | 2 +- Resources/Locale/en-US/commands/delaystart-command.ftl | 2 +- Resources/Locale/en-US/commands/delete-component-command.ftl | 2 +- Resources/Locale/en-US/commands/destroy-mechanism-command.ftl | 2 +- Resources/Locale/en-US/commands/dirty-command.ftl | 2 +- .../Locale/en-US/commands/dump-reagent-guide-text-command.ftl | 2 +- Resources/Locale/en-US/commands/endround-command.ftl | 2 +- Resources/Locale/en-US/commands/eye-commands.ftl | 2 +- Resources/Locale/en-US/commands/force-map-command.ftl | 2 +- Resources/Locale/en-US/commands/force-preset-command.ftl | 2 +- Resources/Locale/en-US/commands/ghost-kick-command.ftl | 2 +- Resources/Locale/en-US/commands/ghost-visibility-commands.ftl | 2 +- Resources/Locale/en-US/commands/go-lobby-command.ftl | 2 +- Resources/Locale/en-US/commands/grid-drag-command.ftl | 2 +- .../Locale/en-US/commands/grouping-entity-menu-command.ftl | 2 +- Resources/Locale/en-US/commands/is-afk-command.ftl | 2 +- Resources/Locale/en-US/commands/job-whitelist-command.ftl | 2 +- Resources/Locale/en-US/commands/makesentient-command.ftl | 2 +- Resources/Locale/en-US/commands/map-commands.ftl | 2 +- Resources/Locale/en-US/commands/me-command.ftl | 2 +- Resources/Locale/en-US/commands/melee-spread-command.ftl | 2 +- Resources/Locale/en-US/commands/mind-info-command.ftl | 2 +- Resources/Locale/en-US/commands/node-vis-commands.ftl | 2 +- Resources/Locale/en-US/commands/npc-command.ftl | 2 +- Resources/Locale/en-US/commands/nukecodes-command.ftl | 2 +- Resources/Locale/en-US/commands/ooc-command.ftl | 2 +- Resources/Locale/en-US/commands/open-a-help-command.ftl | 2 +- Resources/Locale/en-US/commands/pardon-command.ftl | 2 +- Resources/Locale/en-US/commands/powerstat-command.ftl | 2 +- Resources/Locale/en-US/commands/promote-host-command.ftl | 2 +- Resources/Locale/en-US/commands/readmin-command.ftl | 2 +- Resources/Locale/en-US/commands/readyall-command.ftl | 2 +- .../Locale/en-US/commands/remove-extra-components-command.ftl | 2 +- Resources/Locale/en-US/commands/restartround-command.ftl | 2 +- Resources/Locale/en-US/commands/role-commands.ftl | 2 +- Resources/Locale/en-US/commands/say-command.ftl | 2 +- .../Locale/en-US/commands/set-battery-percent-command.ftl | 2 +- .../Locale/en-US/commands/set-menu-visibility-command.ftl | 2 +- .../Locale/en-US/commands/show-access-readers-command.ftl | 2 +- Resources/Locale/en-US/commands/show-ambient-command.ftl | 2 +- .../Locale/en-US/commands/show-emergency-shuttle-command.ftl | 2 +- Resources/Locale/en-US/commands/show-gun-spread-command.ftl | 2 +- Resources/Locale/en-US/commands/show-htn-command.ftl | 2 +- Resources/Locale/en-US/commands/showrules-command.ftl | 2 +- Resources/Locale/en-US/commands/start-singularity-command.ftl | 2 +- Resources/Locale/en-US/commands/startround-command.ftl | 2 +- Resources/Locale/en-US/commands/tile-pry-command.ftl | 2 +- Resources/Locale/en-US/commands/toggle-decals-command.ftl | 2 +- .../en-US/commands/toggle-disallow-late-join-command.ftl | 2 +- Resources/Locale/en-US/commands/toggle-outline-command.ftl | 2 +- Resources/Locale/en-US/commands/toggleready-command.ftl | 2 +- Resources/Locale/en-US/commands/whisper-command.ftl | 2 +- .../Locale/en-US/components/atmos-monitoring-component.ftl | 2 +- .../en-US/components/gas-pressure-regulator-component.ftl | 2 +- .../Locale/en-US/components/gas-thermomachine-component.ftl | 2 +- Resources/Locale/en-US/components/ghost-component.ftl | 2 +- Resources/Locale/en-US/components/screen-component.ftl | 2 +- Resources/Locale/en-US/components/space-heater-component.ftl | 2 +- .../Locale/en-US/components/station-anchor-component.ftl | 2 +- .../en-US/components/storage-voice-control-component.ftl | 2 +- .../Locale/en-US/configurable/configuration-component.ftl | 4 ++-- Resources/Locale/en-US/connection-messages.ftl | 2 +- .../construction/components/construction-component-verbs.ftl | 2 +- .../en-US/construction/components/machine-board-component.ftl | 2 +- Resources/Locale/en-US/construction/conditions/locked.ftl | 2 +- .../Locale/en-US/construction/construction-categories.ftl | 2 +- .../en-US/construction/construction-ghost-component.ftl | 2 +- .../construction/steps/component-construction-graph-step.ftl | 2 +- .../construction/steps/material-construction-graph-step.ftl | 2 +- .../construction/steps/prototype-construction-graph-step.ftl | 2 +- .../en-US/construction/steps/tool-construction-graph-step.ftl | 2 +- .../en-US/construction/ui/construction-menu-presenter.ftl | 2 +- Resources/Locale/en-US/containers/containers.ftl | 2 +- Resources/Locale/en-US/cvar/cvar-help.ftl | 2 +- Resources/Locale/en-US/damage/damage-command.ftl | 4 ++-- Resources/Locale/en-US/damage/damage-force-say.ftl | 2 +- Resources/Locale/en-US/damage/damage-popup-component.ftl | 2 +- Resources/Locale/en-US/damage/rejuvenate-verb.ftl | 2 +- Resources/Locale/en-US/darts/darts-popup.ftl | 2 +- Resources/Locale/en-US/datasets/names/arachnid_last.ftl | 2 +- Resources/Locale/en-US/datasets/names/wizard_first.ftl | 2 +- Resources/Locale/en-US/decals/decal-window.ftl | 2 +- .../Locale/en-US/detail-examinable/detail-examinable.ftl | 2 +- Resources/Locale/en-US/devices/network-configurator.ftl | 2 +- Resources/Locale/en-US/discord/round-notifications.ftl | 2 +- Resources/Locale/en-US/disease/disease.ftl | 2 +- Resources/Locale/en-US/disposal/tube-connections-command.ftl | 2 +- .../disposal/tube/components/disposal-tube-component.ftl | 2 +- Resources/Locale/en-US/doors/components/airlock-component.ftl | 2 +- Resources/Locale/en-US/doors/door.ftl | 2 +- Resources/Locale/en-US/drag-drop/drag-drop-system.ftl | 2 +- Resources/Locale/en-US/engineering/inflatables.ftl | 2 +- Resources/Locale/en-US/ensnare/ensnare-component.ftl | 2 +- .../Locale/en-US/entity-systems/bin-system/bin-system.ftl | 2 +- Resources/Locale/en-US/fluids/components/drain-component.ftl | 2 +- Resources/Locale/en-US/follower/follow-verb.ftl | 2 +- Resources/Locale/en-US/forensics/residues.ftl | 2 +- .../en-US/game-ticking/game-presets/preset-allatonce.ftl | 2 +- .../en-US/game-ticking/game-presets/preset-survival.ftl | 2 +- .../Locale/en-US/game-ticking/game-presets/preset-zombies.ftl | 2 +- .../Locale/en-US/game-ticking/game-rules/rule-death-match.ftl | 2 +- .../Locale/en-US/game-ticking/game-rules/rule-traitor.ftl | 2 +- Resources/Locale/en-US/gases/gas-tank.ftl | 2 +- .../en-US/ghost/roles/ghostrole-spawner-verb-selectable.ftl | 2 +- Resources/Locale/en-US/ghost/roles/make-ghost-role-verb.ftl | 2 +- Resources/Locale/en-US/guidebook/chemistry/core.ftl | 2 +- .../Locale/en-US/guidebook/entity-effects/healthchange.ftl | 2 +- .../Locale/en-US/guidebook/entity-effects/statuseffects.ftl | 2 +- Resources/Locale/en-US/guidebook/verb.ftl | 2 +- .../Locale/en-US/health-examinable/health-examinable-comp.ftl | 2 +- Resources/Locale/en-US/holiday/gifts.ftl | 2 +- Resources/Locale/en-US/holopad/holopad.ftl | 2 +- Resources/Locale/en-US/identity/identity-system.ftl | 2 +- Resources/Locale/en-US/immovable-rod/immovable-rod.ftl | 2 +- Resources/Locale/en-US/implant/chameleon-controller.ftl | 2 +- Resources/Locale/en-US/info/rules.ftl | 2 +- Resources/Locale/en-US/intellicard/intellicard.ftl | 2 +- .../Locale/en-US/interaction/in-range-unoccluded-verb.ftl | 2 +- Resources/Locale/en-US/interaction/smart-equip-system.ftl | 2 +- .../en-US/inventory/human-inventory-interface-controller.ftl | 2 +- Resources/Locale/en-US/inventory/item-status.ftl | 2 +- Resources/Locale/en-US/job/department-desc.ftl | 2 +- Resources/Locale/en-US/job/job.ftl | 2 +- Resources/Locale/en-US/job/role-ban-command.ftl | 2 +- Resources/Locale/en-US/job/role-requirements.ftl | 2 +- Resources/Locale/en-US/job/role-whitelist.ftl | 2 +- .../en-US/kitchen/components/kitchen-spike-component.ftl | 2 +- Resources/Locale/en-US/land-mines/land-mines.ftl | 2 +- .../Locale/en-US/light/components/powered-ligth-component.ftl | 2 +- .../en-US/light/components/unpowered-flashlight-component.ftl | 2 +- Resources/Locale/en-US/lock/bypass-lock-component.ftl | 2 +- Resources/Locale/en-US/lock/locking-whitelist-component.ftl | 2 +- .../machine-linking/components/signal-linker-component.ftl | 2 +- Resources/Locale/en-US/magic/magic.ftl | 2 +- Resources/Locale/en-US/magic/spells-actions.ftl | 2 +- Resources/Locale/en-US/mapping/editor.ftl | 2 +- Resources/Locale/en-US/markings/scars.ftl | 2 +- Resources/Locale/en-US/markings/undergarment.ftl | 2 +- .../en-US/medical/components/biomass-reclaimer-component.ftl | 2 +- .../en-US/medical/components/crew-monitoring-component.ftl | 2 +- .../Locale/en-US/medical/components/cryo-pod-component.ftl | 2 +- Resources/Locale/en-US/medical/components/defibrillator.ftl | 2 +- .../Locale/en-US/medical/components/healing-component.ftl | 2 +- .../Locale/en-US/medical/components/suit-sensor-component.ftl | 2 +- Resources/Locale/en-US/metabolism/metabolism-component.ftl | 2 +- Resources/Locale/en-US/mind/verbs/control-mob-verb.ftl | 2 +- Resources/Locale/en-US/mind/verbs/make-sentient-verb.ftl | 2 +- .../components/crematorium-entity-storage-component.ftl | 2 +- .../morgue/components/morgue-entity-storage-component.ftl | 2 +- Resources/Locale/en-US/npc/hugbot.ftl | 2 +- .../Locale/en-US/nutrition/components/ingestion-system.ftl | 2 +- .../Locale/en-US/nutrition/components/sealable-component.ftl | 2 +- .../Locale/en-US/nutrition/components/vape-component.ftl | 2 +- Resources/Locale/en-US/paper/envelope.ftl | 2 +- .../components/particle-accelerator-control-box-component.ftl | 2 +- Resources/Locale/en-US/payload/payload-case.ftl | 2 +- Resources/Locale/en-US/pinpointer/pinpointer.ftl | 2 +- .../Locale/en-US/players/play-time/play-time-commands.ftl | 2 +- .../en-US/pneumatic-cannon/pneumatic-cannon-component.ftl | 2 +- Resources/Locale/en-US/pointing/pointing-verb.ftl | 2 +- Resources/Locale/en-US/points/points.ftl | 2 +- Resources/Locale/en-US/popup/popup.ftl | 2 +- Resources/Locale/en-US/portal/portal.ftl | 2 +- Resources/Locale/en-US/power/battery.ftl | 2 +- Resources/Locale/en-US/power/commands.ftl | 2 +- Resources/Locale/en-US/power/components/generator.ftl | 2 +- Resources/Locale/en-US/power/teg.ftl | 2 +- Resources/Locale/en-US/power/verb.ftl | 2 +- Resources/Locale/en-US/prayers/prayers.ftl | 2 +- .../Locale/en-US/preferences/humanoid-character-profile.ftl | 2 +- Resources/Locale/en-US/prototypes/roles/antags.ftl | 2 +- Resources/Locale/en-US/pulling/pullable-component.ftl | 2 +- Resources/Locale/en-US/quick-dialog/quick-dialog.ftl | 2 +- Resources/Locale/en-US/radio/components/intercom.ftl | 2 +- Resources/Locale/en-US/reagents/Capsaicin.ftl | 2 +- Resources/Locale/en-US/reagents/absinthe.ftl | 2 +- Resources/Locale/en-US/reagents/barozine.ftl | 2 +- Resources/Locale/en-US/reagents/carpetium.ftl | 2 +- Resources/Locale/en-US/reagents/clf3.ftl | 2 +- Resources/Locale/en-US/reagents/ephedrine.ftl | 2 +- Resources/Locale/en-US/reagents/frezon.ftl | 2 +- Resources/Locale/en-US/reagents/frostoil.ftl | 4 ++-- Resources/Locale/en-US/reagents/histamine.ftl | 2 +- Resources/Locale/en-US/reagents/laughter.ftl | 2 +- Resources/Locale/en-US/reagents/leporazine.ftl | 2 +- Resources/Locale/en-US/reagents/mannitol.ftl | 2 +- Resources/Locale/en-US/reagents/norepinephricacid.ftl | 4 ++-- Resources/Locale/en-US/reagents/phlogiston.ftl | 2 +- Resources/Locale/en-US/reagents/psicodine.ftl | 2 +- .../Locale/en-US/recycling/components/recycler-component.ftl | 2 +- Resources/Locale/en-US/replays/replays.ftl | 2 +- .../en-US/research/components/research-client-component.ftl | 2 +- Resources/Locale/en-US/revenant/revenant.ftl | 2 +- .../Locale/en-US/rotation/components/flippable-component.ftl | 2 +- .../Locale/en-US/sensor-monitoring/sensor-monitoring.ftl | 2 +- Resources/Locale/en-US/server-info/info-links.ftl | 2 +- Resources/Locale/en-US/server-updates/server-updates.ftl | 2 +- Resources/Locale/en-US/shutter/shutter.ftl | 2 +- Resources/Locale/en-US/shuttles/arrivals.ftl | 2 +- .../en-US/singularity/components/containment-component.ftl | 2 +- .../en-US/singularity/components/generator-component.ftl | 2 +- Resources/Locale/en-US/slur/slurring.ftl | 2 +- Resources/Locale/en-US/species/diona.ftl | 2 +- Resources/Locale/en-US/species/skeleton.ftl | 2 +- Resources/Locale/en-US/species/slime.ftl | 2 +- Resources/Locale/en-US/species/species.ftl | 2 +- .../Locale/en-US/station-events/events/anomaly-spawn.ftl | 2 +- .../Locale/en-US/station-events/events/bluespace-artifact.ftl | 2 +- Resources/Locale/en-US/station-events/events/breaker-flip.ftl | 2 +- .../Locale/en-US/station-events/events/bureaucratic-error.ftl | 2 +- Resources/Locale/en-US/station-events/events/gas-leak.ftl | 2 +- Resources/Locale/en-US/station-events/events/intercept.ftl | 2 +- Resources/Locale/en-US/station-events/events/meteor-swarm.ftl | 2 +- .../Locale/en-US/station-events/events/mouse-migration.ftl | 2 +- .../Locale/en-US/station-events/events/power-grid-check.ftl | 2 +- .../Locale/en-US/station-events/events/unknown-shuttle.ftl | 2 +- Resources/Locale/en-US/station-events/events/vent-clog.ftl | 2 +- .../Locale/en-US/station-events/events/vent-critters.ftl | 2 +- .../Locale/en-US/station-events/events/zombie-outbreak.ftl | 2 +- Resources/Locale/en-US/station-laws/laws.ftl | 2 +- .../Locale/en-US/station-records/general-station-records.ftl | 2 +- Resources/Locale/en-US/step-trigger/shoes-required.ftl | 2 +- Resources/Locale/en-US/sticky/sticky-component.ftl | 2 +- .../en-US/storage/components/entity-provider-component.ftl | 2 +- Resources/Locale/en-US/suicide/suicide.ftl | 2 +- .../Locale/en-US/suspicion/roles/suspicion-role-component.ftl | 2 +- Resources/Locale/en-US/suspicion/suspicion-gui.ftl | 2 +- Resources/Locale/en-US/suspicion/traitor-overlay.ftl | 2 +- Resources/Locale/en-US/tabletop/tabletop.ftl | 2 +- Resources/Locale/en-US/telephone/telephone.ftl | 4 ++-- Resources/Locale/en-US/teleportation/handheld-teleporter.ftl | 2 +- .../Locale/en-US/teleportation/teleportation-menu-gui.ftl | 2 +- Resources/Locale/en-US/tesla/tesla-components.ftl | 2 +- Resources/Locale/en-US/thief/beacon.ftl | 2 +- Resources/Locale/en-US/tiles/placement.ftl | 2 +- Resources/Locale/en-US/tips/tips-system.ftl | 2 +- .../en-US/tools/components/lattice-cutting-component.ftl | 2 +- .../Locale/en-US/traitor/uplink/telecrystal-component.ftl | 2 +- .../en-US/transform/verbs/attach-to-grandparent-verb.ftl | 2 +- .../Locale/en-US/transform/verbs/attach-to-grid-verb.ftl | 2 +- .../Locale/en-US/transform/verbs/attach-to-self-verb.ftl | 2 +- Resources/Locale/en-US/triggers/trigger-on-verb.ftl | 2 +- Resources/Locale/en-US/ui/actionmenu.ftl | 2 +- Resources/Locale/en-US/ui/controls.ftl | 2 +- Resources/Locale/en-US/ui/navmap.ftl | 2 +- Resources/Locale/en-US/ui/spray-painter-window.ftl | 2 +- Resources/Locale/en-US/ui/transfer-amount.ftl | 2 +- Resources/Locale/en-US/vehicle/vehicle.ftl | 2 +- Resources/Locale/en-US/verbs/invoke-verb-command.ftl | 2 +- Resources/Locale/en-US/verbs/list-verbs-command.ftl | 2 +- Resources/Locale/en-US/verbs/verbs.ftl | 2 +- Resources/Locale/en-US/virtual/virtual-item.ftl | 2 +- Resources/Locale/en-US/voting/ui/vote-call-menu-button.ftl | 2 +- Resources/Locale/en-US/voting/vote-options.ftl | 2 +- .../en-US/weapons/ranged/recharge-basic-entity-ammo.ftl | 2 +- Resources/Locale/en-US/weapons/ranged/turrets.ftl | 2 +- Resources/Locale/en-US/xenoarchaeology/artifact-component.ftl | 2 +- Resources/Prototypes/Accents/full_replacements.yml | 2 +- Resources/Prototypes/Access/silicon.yml | 2 +- Resources/Prototypes/Access/wizard.yml | 2 +- Resources/Prototypes/Access/xenoborg.yml | 2 +- Resources/Prototypes/Anomaly/behaviours.yml | 2 +- Resources/Prototypes/Atmospherics/gases.yml | 2 +- Resources/Prototypes/Catalog/Bots/advertisements.yml | 2 +- Resources/Prototypes/Catalog/Bots/hugbot.yml | 2 +- Resources/Prototypes/Catalog/Cargo/cargo_instuments.yml | 2 +- Resources/Prototypes/Catalog/Cargo/cargo_science.yml | 2 +- Resources/Prototypes/Catalog/Fills/Paper/manuals.yml | 2 +- Resources/Prototypes/Chemistry/injector_modes.yml | 2 +- Resources/Prototypes/Chemistry/reactive_groups.yml | 2 +- Resources/Prototypes/Codewords/codeword_factions.yml | 2 +- Resources/Prototypes/Codewords/codeword_generators.yml | 2 +- Resources/Prototypes/Damage/examine_messages.yml | 2 +- Resources/Prototypes/Datasets/Names/ai.yml | 2 +- Resources/Prototypes/Datasets/Names/atv.yml | 2 +- Resources/Prototypes/Datasets/Names/autoborg.yml | 2 +- Resources/Prototypes/Datasets/Names/base.yml | 2 +- Resources/Prototypes/Datasets/Names/base_gendered.yml | 2 +- Resources/Prototypes/Datasets/Names/borer.yml | 2 +- Resources/Prototypes/Datasets/Names/clown.yml | 2 +- Resources/Prototypes/Datasets/Names/death_commando.yml | 2 +- Resources/Prototypes/Datasets/Names/hologram.yml | 2 +- Resources/Prototypes/Datasets/Names/military.yml | 2 +- Resources/Prototypes/Datasets/Names/mushman_first.yml | 2 +- Resources/Prototypes/Datasets/Names/mushman_last.yml | 2 +- Resources/Prototypes/Datasets/Names/ninja.yml | 2 +- Resources/Prototypes/Datasets/Names/scurret.yml | 2 +- Resources/Prototypes/Datasets/Names/wizard.yml | 2 +- Resources/Prototypes/Datasets/adjectives.yml | 2 +- Resources/Prototypes/Datasets/news.yml | 2 +- Resources/Prototypes/Datasets/rat_king_commands.yml | 2 +- Resources/Prototypes/Decals/Overlays/markups.yml | 2 +- Resources/Prototypes/Decals/bricktile_dark.yml | 2 +- Resources/Prototypes/Decals/bricktile_steel.yml | 2 +- Resources/Prototypes/Decals/bricktile_white.yml | 2 +- Resources/Prototypes/Decals/concrete_trim.yml | 2 +- Resources/Prototypes/Decals/dirty.yml | 2 +- Resources/Prototypes/Decals/markings.yml | 2 +- Resources/Prototypes/Decals/minitile_dark.yml | 2 +- Resources/Prototypes/Decals/minitile_steel.yml | 2 +- Resources/Prototypes/Decals/minitile_white.yml | 2 +- Resources/Prototypes/Decals/originsign.yml | 2 +- Resources/Prototypes/Decals/ss14sign.yml | 2 +- Resources/Prototypes/Decals/stairs.yml | 2 +- Resources/Prototypes/Decals/syndlogo.yml | 2 +- Resources/Prototypes/Decals/wood_trim_thin.yml | 2 +- Resources/Prototypes/Entities/Clothing/Ears/headsets_alt.yml | 2 +- Resources/Prototypes/Entities/Clothing/Ears/specific.yml | 2 +- Resources/Prototypes/Entities/Clothing/Head/specific.yml | 2 +- .../Prototypes/Entities/Clothing/OuterClothing/specific.yml | 2 +- Resources/Prototypes/Entities/Clothing/Shoes/color.yml | 2 +- Resources/Prototypes/Entities/Effects/acidifier.yml | 2 +- Resources/Prototypes/Entities/Effects/bluespace_flash.yml | 2 +- .../Prototypes/Entities/Effects/desynchronizer_effecs.yml | 2 +- Resources/Prototypes/Entities/Effects/eldritch.yml | 2 +- Resources/Prototypes/Entities/Effects/exclamation.yml | 2 +- Resources/Prototypes/Entities/Effects/hearts.yml | 2 +- Resources/Prototypes/Entities/Effects/lightning.yml | 2 +- Resources/Prototypes/Entities/Effects/portal.yml | 2 +- Resources/Prototypes/Entities/Effects/rcd.yml | 4 ++-- Resources/Prototypes/Entities/Effects/sparks.yml | 2 +- Resources/Prototypes/Entities/Effects/wallspawn.yml | 2 +- .../Entities/Markers/Spawners/Conditional/timed.yml | 2 +- .../Entities/Markers/Spawners/Conditional/wizard.yml | 2 +- .../Entities/Markers/Spawners/Random/Department/security.yml | 2 +- .../Prototypes/Entities/Markers/Spawners/Random/anomaly.yml | 2 +- .../Prototypes/Entities/Markers/Spawners/Random/artifacts.yml | 2 +- .../Prototypes/Entities/Markers/Spawners/Random/techboard.yml | 2 +- Resources/Prototypes/Entities/Markers/Spawners/human.yml | 2 +- Resources/Prototypes/Entities/Markers/hover_entity.yml | 2 +- Resources/Prototypes/Entities/Markers/map_text.yml | 2 +- Resources/Prototypes/Entities/Markers/pointing.yml | 2 +- .../Mobs/Customization/Markings/Vulpkanin/vulpkanin_chest.yml | 2 +- .../Entities/Mobs/Customization/Markings/tattoos.yml | 2 +- .../Entities/Mobs/Customization/Markings/undergarments.yml | 2 +- Resources/Prototypes/Entities/Mobs/NPCs/argocyte.yml | 2 +- Resources/Prototypes/Entities/Mobs/NPCs/flying_animals.yml | 2 +- Resources/Prototypes/Entities/Mobs/NPCs/lavaland.yml | 2 +- Resources/Prototypes/Entities/Mobs/NPCs/scurret.yml | 2 +- Resources/Prototypes/Entities/Mobs/NPCs/shadows.yml | 2 +- Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml | 2 +- Resources/Prototypes/Entities/Mobs/Player/jaunt_mobs.yml | 2 +- Resources/Prototypes/Entities/Mobs/Player/replay_observer.yml | 2 +- Resources/Prototypes/Entities/Mobs/Player/silicon.yml | 2 +- .../Entities/Objects/Consumable/Food/Containers/box.yml | 2 +- .../Prototypes/Entities/Objects/Consumable/Food/frozen.yml | 2 +- .../Devices/Circuitboards/Machine/particle_accelerator.yml | 2 +- .../Objects/Devices/Circuitboards/Machine/production.yml | 2 +- .../Entities/Objects/Devices/Circuitboards/computer.yml | 2 +- .../Entities/Objects/Devices/Electronics/base_electronics.yml | 2 +- .../Entities/Objects/Devices/Electronics/disposal.yml | 2 +- .../Entities/Objects/Devices/Electronics/firelock.yml | 2 +- .../Objects/Devices/Electronics/power_electronics.yml | 2 +- Resources/Prototypes/Entities/Objects/Devices/cartridges.yml | 2 +- .../Prototypes/Entities/Objects/Devices/hand_teleporter.yml | 2 +- .../Prototypes/Entities/Objects/Devices/teleporters_chips.yml | 2 +- .../Entities/Objects/Fun/Instruments/instruments_brass.yml | 2 +- .../Entities/Objects/Fun/Instruments/instruments_misc.yml | 2 +- .../Objects/Fun/Instruments/instruments_percussion.yml | 2 +- .../Objects/Fun/Instruments/instruments_structures.yml | 2 +- .../Entities/Objects/Fun/Instruments/instruments_wind.yml | 2 +- .../Entities/Objects/Fun/Plushies/plushielizard_jobs.yml | 2 +- Resources/Prototypes/Entities/Objects/Fun/Tabletop/chess.yml | 2 +- Resources/Prototypes/Entities/Objects/Fun/Tabletop/dnd.yml | 2 +- Resources/Prototypes/Entities/Objects/Magic/books.yml | 2 +- Resources/Prototypes/Entities/Objects/Materials/base.yml | 2 +- Resources/Prototypes/Entities/Objects/Misc/buffering.yml | 2 +- Resources/Prototypes/Entities/Objects/Misc/land_mine.yml | 2 +- Resources/Prototypes/Entities/Objects/Misc/machine_parts.yml | 2 +- .../Entities/Objects/Specific/Robotics/endoskeleton.yml | 2 +- .../Prototypes/Entities/Objects/Specific/Service/barber.yml | 2 +- .../Objects/Specific/Xenoarchaeology/node_scanner.yml | 2 +- Resources/Prototypes/Entities/Objects/Specific/atmos.yml | 2 +- Resources/Prototypes/Entities/Objects/Tools/appraisal.yml | 2 +- Resources/Prototypes/Entities/Objects/Tools/flare.yml | 2 +- Resources/Prototypes/Entities/Objects/Tools/flashlights.yml | 2 +- Resources/Prototypes/Entities/Objects/Tools/lantern.yml | 2 +- Resources/Prototypes/Entities/Objects/Vehicles/keys.yml | 2 +- .../Entities/Objects/Weapons/Guns/Basic/base_staff.yml | 2 +- .../Entities/Objects/Weapons/Guns/Basic/base_wand.yml | 2 +- .../Prototypes/Entities/Objects/Weapons/Guns/Basic/wands.yml | 2 +- Resources/Prototypes/Entities/Objects/Weapons/Melee/gohei.yml | 2 +- .../Objects/Weapons/Throwable/projectile_grenades.yml | 2 +- .../Objects/Weapons/Throwable/scattering_grenades.yml | 2 +- Resources/Prototypes/Entities/Objects/base_contraband.yml | 2 +- Resources/Prototypes/Entities/Objects/base_solution.yml | 2 +- Resources/Prototypes/Entities/Stations/test.yml | 2 +- Resources/Prototypes/Entities/StatusEffects/body.yml | 2 +- Resources/Prototypes/Entities/StatusEffects/speech.yml | 2 +- .../Prototypes/Entities/Structures/Decoration/curtains.yml | 2 +- .../Structures/Doors/Airlocks/base_structureairlocks.yml | 2 +- .../Prototypes/Entities/Structures/Doors/Airlocks/shuttle.yml | 2 +- .../Prototypes/Entities/Structures/Doors/Firelocks/frame.yml | 2 +- .../Structures/Doors/MaterialDoors/material_doors.yml | 2 +- .../Entities/Structures/Doors/Shutter/blast_door.yml | 2 +- .../Entities/Structures/Machines/Medical/cryo_pod.yml | 2 +- .../Entities/Structures/Machines/cloning_machine.yml | 2 +- .../Prototypes/Entities/Structures/Machines/fatextractor.yml | 2 +- .../Prototypes/Entities/Structures/Machines/flatpacker.yml | 2 +- Resources/Prototypes/Entities/Structures/Machines/frame.yml | 2 +- .../Entities/Structures/Machines/gravity_generator.yml | 2 +- .../Entities/Structures/Machines/medical_scanner.yml | 2 +- .../Entities/Structures/Machines/seed_extractor.yml | 2 +- .../Prototypes/Entities/Structures/Machines/smartfridge.yml | 2 +- .../Entities/Structures/Machines/vending_machines.yml | 2 +- .../Piping/Disposal/high_pressure_machine_frame.yml | 2 +- Resources/Prototypes/Entities/Structures/Power/cables.yml | 2 +- .../Prototypes/Entities/Structures/Power/debug_power.yml | 2 +- .../Entities/Structures/Shuttles/station_anchor.yml | 2 +- .../Structures/Specific/Anomaly/anomaly_injections.yml | 2 +- .../Entities/Structures/Specific/Atmospherics/freezer.yml | 2 +- .../Entities/Structures/Storage/Closets/big_boxes.yml | 2 +- .../Prototypes/Entities/Structures/Storage/glass_box.yml | 2 +- Resources/Prototypes/Entities/Structures/Storage/ore_box.yml | 2 +- .../Prototypes/Entities/Structures/Wallmounts/Misc/boards.yml | 2 +- .../Prototypes/Entities/Structures/Wallmounts/Misc/mirror.yml | 2 +- .../Entities/Structures/Wallmounts/Signs/atmos_plaque.yml | 2 +- .../Entities/Structures/Wallmounts/Signs/bar_sign.yml | 2 +- .../Wallmounts/Storage/Cabinets/shotgun_cabinet.yml | 2 +- .../Prototypes/Entities/Structures/Walls/fence_metal.yml | 2 +- Resources/Prototypes/Entities/Structures/meat_spike.yml | 2 +- Resources/Prototypes/Entities/Tiles/chasm.yml | 2 +- Resources/Prototypes/Entities/Virtual/beam.yml | 2 +- Resources/Prototypes/Entities/Virtual/electrocution.yml | 2 +- Resources/Prototypes/Entities/Virtual/stripping_hidden.yml | 2 +- Resources/Prototypes/Entities/Virtual/virtual_item.yml | 2 +- Resources/Prototypes/FeedbackPopup/feedbackpopups.yml | 2 +- Resources/Prototypes/GameRules/dynamic_rules.yml | 2 +- Resources/Prototypes/GameRules/random_sentience.yml | 2 +- Resources/Prototypes/GameRules/survivor.yml | 2 +- Resources/Prototypes/GameRules/variation.yml | 2 +- Resources/Prototypes/GhostRoleRaffles/deciders.yml | 2 +- Resources/Prototypes/Guidebook/engineering.yml | 2 +- Resources/Prototypes/Guidebook/rules.yml | 2 +- Resources/Prototypes/Guidebook/security.yml | 2 +- .../InventoryTemplates/corpse_inventory_template.yml | 2 +- .../InventoryTemplates/scurret_inventory_template.yml | 2 +- Resources/Prototypes/IonLaws/IonLaw.yml | 2 +- Resources/Prototypes/Loadouts/Miscellaneous/jobtrinkets.yml | 2 +- Resources/Prototypes/Loadouts/dummy_entities.yml | 2 +- Resources/Prototypes/Magic/Fixtures/runes.yml | 2 +- Resources/Prototypes/Magic/teleport_scroll.yml | 2 +- Resources/Prototypes/Maps/arenas.yml | 2 +- Resources/Prototypes/NPCs/hugbot.yml | 2 +- Resources/Prototypes/Nutrition/edible.yml | 2 +- Resources/Prototypes/Objectives/paradoxClone.yml | 2 +- Resources/Prototypes/Objectives/wizard.yml | 2 +- Resources/Prototypes/Palettes/advanced.yml | 4 ++-- Resources/Prototypes/Palettes/departmental.yml | 2 +- Resources/Prototypes/Palettes/emagged.yml | 2 +- Resources/Prototypes/Palettes/sixteen.yml | 2 +- Resources/Prototypes/Palettes/text.yml | 2 +- Resources/Prototypes/Polymorphs/admin.yml | 2 +- Resources/Prototypes/Procedural/Themes/mineshaft.yml | 2 +- Resources/Prototypes/Reagents/pyrotechnic.yml | 2 +- .../Construction/Graphs/atmospherics/atmos_pipes_special.yml | 2 +- .../Construction/Graphs/atmospherics/gas_pipe_sensor.yml | 2 +- .../Construction/Graphs/atmospherics/thermomachine-board.yml | 2 +- .../Recipes/Construction/Graphs/clothing/medsec_hud.yml | 2 +- .../Recipes/Construction/Graphs/fun/bananium_horn.yml | 2 +- .../Recipes/Construction/Graphs/fun/jack_o_lantern.yml | 2 +- .../Recipes/Construction/Graphs/furniture/altars.yml | 2 +- .../Recipes/Construction/Graphs/furniture/tables.yml | 2 +- .../Recipes/Construction/Graphs/machines/computer.yml | 2 +- .../Recipes/Construction/Graphs/machines/machine.yml | 2 +- .../Recipes/Construction/Graphs/materials/metal_rod.yml | 2 +- .../Recipes/Construction/Graphs/mechs/hamtr_construction.yml | 2 +- .../Recipes/Construction/Graphs/mechs/honker_construction.yml | 2 +- .../Recipes/Construction/Graphs/mechs/ripley_construction.yml | 2 +- .../Recipes/Construction/Graphs/structures/barricades.yml | 2 +- .../Recipes/Construction/Graphs/structures/catwalk.yml | 2 +- .../Recipes/Construction/Graphs/structures/conveyor.yml | 2 +- .../Recipes/Construction/Graphs/structures/cordage.yml | 2 +- .../Recipes/Construction/Graphs/structures/decoration.yml | 2 +- .../Recipes/Construction/Graphs/structures/fence_metal.yml | 2 +- .../Recipes/Construction/Graphs/structures/fence_wood.yml | 2 +- .../Recipes/Construction/Graphs/structures/lighting.yml | 2 +- .../Recipes/Construction/Graphs/structures/shuttle.yml | 2 +- .../Construction/Graphs/structures/station_ai_core.yml | 4 ++-- .../Recipes/Construction/Graphs/structures/station_beacon.yml | 2 +- .../Recipes/Construction/Graphs/tools/logic_gate.yml | 2 +- .../Prototypes/Recipes/Construction/Graphs/tools/torch.yml | 2 +- .../Recipes/Construction/Graphs/utilities/cable_terminal.yml | 2 +- .../Construction/Graphs/utilities/particle_accelerator.yml | 2 +- .../Recipes/Construction/Graphs/utilities/solarpanel.yml | 2 +- .../Construction/Graphs/utilities/wallmount_generator.yml | 2 +- .../Construction/Graphs/utilities/wallmount_substation.yml | 2 +- .../Recipes/Construction/Graphs/weapons/bladed_hats.yml | 2 +- .../Recipes/Construction/Graphs/weapons/card_shield.yml | 2 +- .../Recipes/Construction/Graphs/weapons/card_sword.yml | 2 +- .../Recipes/Construction/Graphs/weapons/improvised_arrow.yml | 2 +- .../Recipes/Construction/Graphs/weapons/improvised_bow.yml | 2 +- .../Recipes/Construction/Graphs/weapons/makeshift_shield.yml | 2 +- .../Recipes/Construction/Graphs/weapons/modular_mine.yml | 2 +- .../Recipes/Construction/Graphs/weapons/shotgunsawn.yml | 2 +- .../Recipes/Construction/Graphs/weapons/upgraded_chimp.yml | 2 +- .../Recipes/Construction/Graphs/weapons/wooden_buckler.yml | 2 +- Resources/Prototypes/Recipes/Construction/atmospherics.yml | 2 +- Resources/Prototypes/Recipes/Construction/lighting.yml | 2 +- Resources/Prototypes/Recipes/Construction/machines.yml | 2 +- Resources/Prototypes/Recipes/Construction/materials.yml | 2 +- Resources/Prototypes/Recipes/Cooking/sequence_metamorph.yml | 2 +- Resources/Prototypes/Recipes/Crafting/Graphs/artifact.yml | 2 +- Resources/Prototypes/Recipes/Crafting/Graphs/bots/hugbot.yml | 2 +- .../Prototypes/Recipes/Crafting/Graphs/goliath_hardsuit.yml | 2 +- .../Prototypes/Recipes/Crafting/Graphs/improvised/gauze.yml | 2 +- .../Prototypes/Recipes/Crafting/Graphs/improvised/rag.yml | 2 +- .../Recipes/Crafting/Graphs/improvised/rifle_stock.yml | 2 +- .../Recipes/Crafting/Graphs/storage/foodboxpizza.yml | 2 +- Resources/Prototypes/Recipes/Crafting/Graphs/toys.yml | 2 +- Resources/Prototypes/Recipes/Crafting/artifact.yml | 2 +- Resources/Prototypes/Recipes/Crafting/toys.yml | 2 +- Resources/Prototypes/Recipes/Reactions/gas.yml | 2 +- Resources/Prototypes/Recipes/Reactions/pyrotechnic.yml | 2 +- Resources/Prototypes/Roles/Antags/base.yml | 2 +- .../Prototypes/Roles/Jobs/Engineering/technical_assistant.yml | 2 +- Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml | 2 +- .../Prototypes/Roles/Jobs/Science/research_assistant.yml | 2 +- Resources/Prototypes/Shaders/displacement.yml | 2 +- Resources/Prototypes/Shaders/greyscale.yml | 2 +- Resources/Prototypes/SoundCollections/NukeMusic.yml | 2 +- Resources/Prototypes/SoundCollections/anomaly.yml | 2 +- Resources/Prototypes/SoundCollections/changeling.yml | 2 +- Resources/Prototypes/SoundCollections/clownrecorder.yml | 2 +- Resources/Prototypes/SoundCollections/fence_rattle.yml | 2 +- Resources/Prototypes/SoundCollections/generator.yml | 2 +- Resources/Prototypes/SoundCollections/hit_impacts.yml | 2 +- Resources/Prototypes/SoundCollections/sadtrombone.yml | 2 +- Resources/Prototypes/SoundCollections/scurret.yml | 2 +- Resources/Prototypes/SoundCollections/storage_rustle.yml | 2 +- Resources/Prototypes/SoundCollections/tray.yml | 2 +- Resources/Prototypes/Stacks/Specific/science.yml | 2 +- Resources/Prototypes/StatusIcon/debug.yml | 2 +- Resources/Prototypes/Tiles/plating.yml | 2 +- Resources/Prototypes/Voice/speech_verbs.yml | 2 +- Resources/Prototypes/name_identifier_groups.yml | 2 +- Resources/Prototypes/silicon-laws.yml | 2 +- Resources/Prototypes/status_effects.yml | 4 ++-- Resources/Prototypes/whitelists.yml | 2 +- .../Clothing/Back/Backpacks/ertchaplain.rsi/meta.json | 2 +- .../Textures/Clothing/Back/Backpacks/ertclown.rsi/meta.json | 2 +- .../Textures/Clothing/Back/Backpacks/erteng.rsi/meta.json | 2 +- .../Textures/Clothing/Back/Backpacks/ertjanitor.rsi/meta.json | 2 +- .../Textures/Clothing/Back/Backpacks/ertleader.rsi/meta.json | 2 +- .../Textures/Clothing/Back/Backpacks/ertmed.rsi/meta.json | 2 +- .../Textures/Clothing/Back/Backpacks/ertsec.rsi/meta.json | 2 +- .../Textures/Clothing/Back/Backpacks/syndicate.rsi/meta.json | 2 +- .../Textures/Clothing/Back/Duffels/genetics.rsi/meta.json | 2 +- .../Textures/Clothing/Back/Duffels/virology.rsi/meta.json | 2 +- .../Textures/Clothing/Back/Satchels/genetics.rsi/meta.json | 2 +- .../Textures/Clothing/Back/Satchels/virology.rsi/meta.json | 2 +- .../Textures/Clothing/Belt/militarywebbingmed.rsi/meta.json | 2 +- Resources/Textures/Clothing/Belt/waistbag.rsi/meta.json | 2 +- .../Textures/Clothing/Belt/waistbag_leather.rsi/meta.json | 2 +- Resources/Textures/Clothing/Belt/wand.rsi/meta.json | 2 +- .../Textures/Clothing/Hands/Gloves/janitor.rsi/meta.json | 2 +- .../Textures/Clothing/Head/Hats/beret_warden.rsi/meta.json | 2 +- Resources/Textures/Clothing/Head/Hats/comcap.rsi/meta.json | 2 +- Resources/Textures/Clothing/Head/Hats/fishcap.rsi/meta.json | 2 +- Resources/Textures/Clothing/Head/Hats/melon.rsi/meta.json | 2 +- Resources/Textures/Clothing/Head/Hats/nursehat.rsi/meta.json | 2 +- Resources/Textures/Clothing/Head/Hats/papersack.rsi/meta.json | 2 +- .../Textures/Clothing/Head/Hats/papersacksmile.rsi/meta.json | 2 +- .../Textures/Clothing/Head/Helmets/card_helmet.rsi/meta.json | 2 +- .../Textures/Clothing/Head/Helmets/linghelmet.rsi/meta.json | 2 +- .../Textures/Clothing/Head/Hoods/voidcloak.rsi/meta.json | 2 +- Resources/Textures/Clothing/Multiple/towel.rsi/meta.json | 2 +- Resources/Textures/Clothing/Neck/Cloaks/void.rsi/meta.json | 2 +- Resources/Textures/Clothing/Neck/Misc/dinkystar.rsi/meta.json | 2 +- .../Textures/Clothing/Neck/mantles/capmantle.rsi/meta.json | 2 +- .../Textures/Clothing/Neck/mantles/cemantle.rsi/meta.json | 2 +- .../Textures/Clothing/Neck/mantles/cmomantle.rsi/meta.json | 2 +- .../Textures/Clothing/Neck/mantles/hopmantle.rsi/meta.json | 2 +- .../Textures/Clothing/Neck/mantles/hosmantle.rsi/meta.json | 2 +- Resources/Textures/Clothing/Neck/mantles/mantle.rsi/meta.json | 2 +- .../Textures/Clothing/Neck/mantles/qmmantle.rsi/meta.json | 2 +- .../Textures/Clothing/Neck/mantles/rdmantle.rsi/meta.json | 2 +- .../Clothing/OuterClothing/Armor/lingarmor.rsi/meta.json | 2 +- .../Textures/Clothing/OuterClothing/Armor/riot.rsi/meta.json | 2 +- .../Clothing/OuterClothing/Misc/nunrobe.rsi/meta.json | 2 +- .../Clothing/OuterClothing/WinterCoats/coat.rsi/meta.json | 2 +- .../OuterClothing/WinterCoats/coatclown.rsi/meta.json | 2 +- .../Clothing/OuterClothing/WinterCoats/coatnomi.rsi/meta.json | 2 +- .../OuterClothing/WinterCoats/coatwardenarmored.rsi/meta.json | 2 +- .../Textures/Clothing/Shoes/Specific/bling.rsi/meta.json | 2 +- .../Uniforms/Jumpskirts/Engineering/atmosf.rsi/meta.json | 2 +- .../Uniforms/Jumpskirts/Science/roboticist.rsi/meta.json | 2 +- .../Uniforms/Jumpskirts/Service/psychologist.rsi/meta.json | 2 +- .../Uniforms/Jumpskirts/Special/operative_s.rsi/meta.json | 2 +- .../Uniforms/Jumpskirts/Special/tacticool_s.rsi/meta.json | 2 +- .../Uniforms/Jumpsuits/Science/roboticist.rsi/meta.json | 2 +- .../Uniforms/Jumpsuits/Service/journalist.rsi/meta.json | 2 +- .../Uniforms/Jumpsuits/Service/psychologist.rsi/meta.json | 2 +- .../Uniforms/Jumpsuits/Service/reporter.rsi/meta.json | 2 +- .../Uniforms/Jumpsuits/Special/mercenary.rsi/meta.json | 2 +- .../Uniforms/Jumpsuits/Special/operative.rsi/meta.json | 2 +- .../Uniforms/Jumpsuits/Special/tacticool.rsi/meta.json | 2 +- Resources/Textures/Decals/basalt.rsi/meta.json | 2 +- Resources/Textures/Decals/syndlogo.rsi/meta.json | 2 +- Resources/Textures/Effects/acidifier.rsi/meta.json | 2 +- Resources/Textures/Effects/chempuff.rsi/meta.json | 2 +- Resources/Textures/Effects/clicktest.rsi/meta.json | 2 +- Resources/Textures/Effects/electricity.rsi/meta.json | 2 +- Resources/Textures/Effects/explosion.rsi/meta.json | 2 +- Resources/Textures/Effects/hearts.rsi/meta.json | 2 +- Resources/Textures/Effects/lightning.rsi/meta.json | 2 +- Resources/Textures/Effects/medi_holo.rsi/meta.json | 2 +- .../Textures/Effects/optionsvisualizertest.rsi/meta.json | 2 +- Resources/Textures/Effects/portal.rsi/meta.json | 2 +- Resources/Textures/Effects/techanom_beam.rsi/meta.json | 2 +- Resources/Textures/Effects/weather.rsi/meta.json | 2 +- Resources/Textures/Fluids/gibblet.rsi/meta.json | 2 +- Resources/Textures/Fluids/puddle.rsi/meta.json | 2 +- Resources/Textures/Fluids/smear.rsi/meta.json | 2 +- Resources/Textures/Fluids/splatter.rsi/meta.json | 2 +- Resources/Textures/Fluids/vomit.rsi/meta.json | 2 +- Resources/Textures/Fluids/vomit_toxin.rsi/meta.json | 2 +- Resources/Textures/Fluids/writing.rsi/meta.json | 2 +- .../Interface/Actions/actions_fakemindshield.rsi/meta.json | 2 +- .../Textures/Interface/Actions/actions_mecha.rsi/meta.json | 2 +- Resources/Textures/Interface/Actions/carp_rift.rsi/meta.json | 2 +- Resources/Textures/Interface/Actions/changeling.rsi/meta.json | 2 +- Resources/Textures/Interface/Actions/devour.rsi/meta.json | 2 +- Resources/Textures/Interface/Actions/pai-map.rsi/meta.json | 2 +- Resources/Textures/Interface/Alerts/changeling.rsi/meta.json | 2 +- Resources/Textures/Interface/Alerts/internals.rsi/meta.json | 2 +- Resources/Textures/Interface/Alerts/pressure.rsi/meta.json | 2 +- Resources/Textures/Interface/Alerts/stamina.rsi/meta.json | 2 +- Resources/Textures/Interface/Alerts/temperature.rsi/meta.json | 2 +- Resources/Textures/Interface/Misc/pointing.rsi/meta.json | 2 +- Resources/Textures/Interface/Misc/progress_bar.rsi/meta.json | 2 +- Resources/Textures/Interface/Nano/Monotone/attributions.yml | 2 +- .../Textures/Interface/Nano/inverted_triangle.svg.png.yml | 2 +- Resources/Textures/Interface/Nano/triangle_right.png.yml | 2 +- .../Textures/Interface/Nano/triangle_right_hollow.svg.png.yml | 2 +- .../Textures/Interface/NavMap/beveled_arrow_east.png.yml | 2 +- .../Textures/Interface/NavMap/beveled_arrow_north.png.yml | 2 +- .../Textures/Interface/NavMap/beveled_arrow_south.png.yml | 2 +- .../Textures/Interface/NavMap/beveled_arrow_west.png.yml | 2 +- Resources/Textures/Interface/NavMap/beveled_circle.png.yml | 2 +- Resources/Textures/Interface/NavMap/beveled_diamond.png.yml | 2 +- .../Interface/NavMap/beveled_diamond_east_west.png.yml | 2 +- .../Interface/NavMap/beveled_diamond_north_south.png.yml | 2 +- Resources/Textures/Interface/NavMap/beveled_hexagon.png.yml | 2 +- .../Interface/NavMap/beveled_rectangle_east_west.png.yml | 2 +- .../Interface/NavMap/beveled_rectangle_north_south.png.yml | 2 +- Resources/Textures/Interface/NavMap/beveled_square.png.yml | 2 +- Resources/Textures/Interface/NavMap/beveled_star.png.yml | 2 +- Resources/Textures/Interface/NavMap/beveled_triangle.png.yml | 2 +- Resources/Textures/Interface/NavMap/ring.yml | 2 +- Resources/Textures/Interface/NavMap/ring_filled.yml | 2 +- Resources/Textures/Interface/VerbIcons/die.svg.192dpi.png.yml | 2 +- Resources/Textures/Interface/character.svg.192dpi.png.yml | 2 +- Resources/Textures/Interface/emotes.svg.192dpi.png.yml | 2 +- Resources/Textures/Interface/examine-star.png.yml | 2 +- Resources/Textures/Interface/fist.svg.192dpi.png.yml | 2 +- Resources/Textures/Interface/gavel.svg.192dpi.png.yml | 2 +- Resources/Textures/Interface/hamburger.svg.192dpi.png.yml | 2 +- Resources/Textures/Interface/hammer.svg.192dpi.png.yml | 2 +- Resources/Textures/Interface/hammer_sca;ed.svg.192dpi.png.yml | 3 --- Resources/Textures/Interface/hammer_scaled.svg.192dpi.png.yml | 3 +++ Resources/Textures/Interface/handsbox.png.yml | 2 +- Resources/Textures/Interface/info.svg.192dpi.png.yml | 2 +- Resources/Textures/Interface/inventory.svg.192dpi.png.yml | 2 +- Resources/Textures/Interface/pray.svg.png.yml | 2 +- Resources/Textures/Interface/sandbox.svg.192dpi.png.yml | 2 +- Resources/Textures/Interface/students-cap.svg.192dpi.png.yml | 2 +- .../Textures/Interface/target-doll-high.svg.192dpi.png.yml | 2 +- .../Textures/Interface/target-doll-high.svg.96dpi.png.yml | 2 +- .../Textures/Interface/target-doll-low.svg.192dpi.png.yml | 2 +- .../Textures/Interface/target-doll-low.svg.96dpi.png.yml | 2 +- .../Textures/Interface/target-doll-middle.svg.192dpi.png.yml | 2 +- .../Textures/Interface/target-doll-middle.svg.96dpi.png.yml | 2 +- Resources/Textures/Interface/target-doll.svg.192dpi.png.yml | 2 +- Resources/Textures/LobbyScreens/doomed.webp.yml | 2 +- Resources/Textures/LobbyScreens/janishootout.webp.yml | 2 +- Resources/Textures/LobbyScreens/reclaimer-nuke.webp.yml | 2 +- Resources/Textures/LobbyScreens/skellyvstherev.webp.yml | 2 +- Resources/Textures/LobbyScreens/ssxiv.webp.yml | 2 +- Resources/Textures/LobbyScreens/susstation.webp.yml | 2 +- Resources/Textures/Logo/logo.png.yml | 2 +- Resources/Textures/Mobs/Aliens/Asteroid/goliath.rsi/meta.json | 2 +- .../Textures/Mobs/Aliens/Asteroid/hivelord.rsi/meta.json | 2 +- Resources/Textures/Mobs/Aliens/Carps/dragon.rsi/meta.json | 2 +- Resources/Textures/Mobs/Aliens/Lavaland/watcher.rsi/meta.json | 2 +- Resources/Textures/Mobs/Aliens/Xenos/drone.rsi/meta.json | 2 +- Resources/Textures/Mobs/Aliens/Xenos/praetorian.rsi/meta.json | 2 +- Resources/Textures/Mobs/Aliens/Xenos/queen.rsi/meta.json | 2 +- Resources/Textures/Mobs/Aliens/Xenos/ravager.rsi/meta.json | 2 +- Resources/Textures/Mobs/Aliens/Xenos/runner.rsi/meta.json | 2 +- Resources/Textures/Mobs/Aliens/Xenos/spitter.rsi/meta.json | 2 +- Resources/Textures/Mobs/Animals/kangaroo.rsi/meta.json | 2 +- Resources/Textures/Mobs/Animals/nymph.rsi/meta.json | 2 +- Resources/Textures/Mobs/Animals/possum_old.rsi/meta.json | 2 +- Resources/Textures/Mobs/Animals/slug.rsi/meta.json | 2 +- Resources/Textures/Mobs/Animals/snail.rsi/meta.json | 2 +- .../Textures/Mobs/Customization/Moth/moth_parts.rsi/meta.json | 2 +- .../Mobs/Customization/human_facial_hair.rsi/meta.json | 2 +- .../Textures/Mobs/Customization/undergarments.rsi/meta.json | 2 +- .../Textures/Mobs/Customization/vox_facial_hair.rsi/meta.json | 2 +- Resources/Textures/Mobs/Customization/vox_scars.rsi/meta.json | 2 +- .../Textures/Mobs/Customization/vox_tattoos.rsi/meta.json | 2 +- Resources/Textures/Mobs/Demons/abomination.rsi/meta.json | 2 +- Resources/Textures/Mobs/Demons/hellspawn.rsi/meta.json | 2 +- .../Textures/Mobs/Pets/Smile/smile_displacement.rsi/meta.json | 2 +- Resources/Textures/Mobs/Pets/breaddog.rsi/meta.json | 2 +- Resources/Textures/Mobs/Silicon/onestar.rsi/meta.json | 2 +- Resources/Textures/Mobs/Silicon/output.rsi/meta.json | 2 +- .../Textures/Mobs/Species/Human/displacement.rsi/meta.json | 2 +- .../Textures/Mobs/Species/Moth/displacement.rsi/meta.json | 2 +- Resources/Textures/Mobs/Species/Moth/parts.rsi/meta.json | 2 +- .../Textures/Mobs/Species/Vox/displacement.rsi/meta.json | 2 +- .../Mobs/Species/Vulpkanin/displacement.rsi/meta.json | 2 +- .../Objects/Consumable/Drinks/(mdr)grapejuice.rsi/meta.json | 2 +- .../Textures/Objects/Consumable/Drinks/banana.rsi/meta.json | 2 +- .../Objects/Consumable/Drinks/bigteacup.rsi/meta.json | 2 +- .../Textures/Objects/Consumable/Drinks/britmug.rsi/meta.json | 2 +- .../Textures/Objects/Consumable/Drinks/broken.rsi/meta.json | 2 +- .../Objects/Consumable/Drinks/brownstar.rsi/meta.json | 2 +- .../Objects/Consumable/Drinks/carrotjuice.rsi/meta.json | 2 +- .../Objects/Consumable/Drinks/chocolateglass.rsi/meta.json | 2 +- .../Textures/Objects/Consumable/Drinks/cup.rsi/meta.json | 2 +- .../Objects/Consumable/Drinks/erikasurprise.rsi/meta.json | 2 +- .../Objects/Consumable/Drinks/glass_brown.rsi/meta.json | 2 +- .../Objects/Consumable/Drinks/glass_brown2.rsi/meta.json | 2 +- .../Objects/Consumable/Drinks/glass_coupe_shape.rsi/meta.json | 2 +- .../Consumable/Drinks/glass_light_yellow.rsi/meta.json | 2 +- .../Objects/Consumable/Drinks/glass_orange.rsi/meta.json | 2 +- .../Objects/Consumable/Drinks/glass_red.rsi/meta.json | 2 +- .../Objects/Consumable/Drinks/glass_white.rsi/meta.json | 2 +- .../Objects/Consumable/Drinks/glass_yellow.rsi/meta.json | 2 +- .../Objects/Consumable/Drinks/grapejuice.rsi/meta.json | 2 +- .../Objects/Consumable/Drinks/grapesoda.rsi/meta.json | 2 +- .../Objects/Consumable/Drinks/grogglass.rsi/meta.json | 2 +- .../Objects/Consumable/Drinks/gsodaglass.rsi/meta.json | 2 +- .../Textures/Objects/Consumable/Drinks/jar_what.rsi/meta.json | 2 +- .../Textures/Objects/Consumable/Drinks/lemonade.rsi/meta.json | 2 +- .../Objects/Consumable/Drinks/lemonglass.rsi/meta.json | 2 +- .../Objects/Consumable/Drinks/lemonlime.rsi/meta.json | 2 +- .../Objects/Consumable/Drinks/meadglass.rsi/meta.json | 2 +- .../Textures/Objects/Consumable/Drinks/nothing.rsi/meta.json | 2 +- .../Objects/Consumable/Drinks/poisonberryjuice.rsi/meta.json | 2 +- .../Objects/Consumable/Drinks/shake-blue.rsi/meta.json | 2 +- .../Objects/Consumable/Drinks/shake-empty.rsi/meta.json | 2 +- .../Objects/Consumable/Drinks/shake-meat.rsi/meta.json | 2 +- .../Objects/Consumable/Drinks/shake-robo.rsi/meta.json | 2 +- .../Objects/Consumable/Drinks/shake-white.rsi/meta.json | 2 +- .../Textures/Objects/Consumable/Drinks/teapot.rsi/meta.json | 2 +- .../Objects/Consumable/Drinks/watermelon.rsi/meta.json | 2 +- .../Objects/Consumable/Drinks/whiskeysodaglass2.rsi/meta.json | 2 +- .../Objects/Consumable/Drinks/zombiecocktail.rsi/meta.json | 2 +- .../Smokeables/Cigarettes/Cartons/black.rsi/meta.json | 2 +- .../Smokeables/Cigarettes/Cartons/blue.rsi/meta.json | 2 +- .../Smokeables/Cigarettes/Cartons/green.rsi/meta.json | 2 +- .../Smokeables/Cigarettes/Cartons/red.rsi/meta.json | 2 +- .../Smokeables/Cigarettes/Packs/black.rsi/meta.json | 2 +- .../Consumable/Smokeables/Cigarettes/Packs/blue.rsi/meta.json | 2 +- .../Smokeables/Cigarettes/Packs/green.rsi/meta.json | 2 +- .../Smokeables/Cigarettes/Packs/mixed.rsi/meta.json | 2 +- .../Consumable/Smokeables/Cigarettes/Packs/red.rsi/meta.json | 2 +- .../Smokeables/Cigarettes/Packs/visualizer.rsi/meta.json | 2 +- .../Consumable/Smokeables/Cigarettes/cigarette.rsi/meta.json | 2 +- .../Consumable/Smokeables/Cigarettes/paper.rsi/meta.json | 2 +- .../Objects/Consumable/Smokeables/Cigars/case.rsi/meta.json | 2 +- .../Consumable/Smokeables/Cigars/cigar-gold.rsi/meta.json | 2 +- .../Objects/Consumable/Smokeables/Cigars/cigar.rsi/meta.json | 2 +- .../Objects/Consumable/Smokeables/Pipes/crack.rsi/meta.json | 2 +- .../Objects/Consumable/Smokeables/Pipes/pipe.rsi/meta.json | 2 +- .../Objects/Decoration/Flora/flora_treeslight.rsi/meta.json | 2 +- Resources/Textures/Objects/Devices/goldwatch.rsi/meta.json | 2 +- Resources/Textures/Objects/Devices/output.rsi/meta.json | 2 +- .../Textures/Objects/Devices/securityhandy.rsi/meta.json | 2 +- .../Textures/Objects/Devices/signaltrigger.rsi/meta.json | 2 +- Resources/Textures/Objects/Devices/timer.rsi/meta.json | 2 +- Resources/Textures/Objects/Devices/voice.rsi/meta.json | 2 +- .../Objects/Fun/Tabletop/Battlemaps/grassbm.rsi/meta.json | 2 +- .../Fun/Tabletop/Battlemaps/grassbm_tabletop.rsi/meta.json | 2 +- .../Objects/Fun/Tabletop/Battlemaps/moonbm.rsi/meta.json | 2 +- .../Fun/Tabletop/Battlemaps/moonbm_tabletop.rsi/meta.json | 2 +- .../Objects/Fun/Tabletop/Battlemaps/sandbm.rsi/meta.json | 2 +- .../Fun/Tabletop/Battlemaps/sandbm_tabletop.rsi/meta.json | 2 +- .../Objects/Fun/Tabletop/Battlemaps/shipbm.rsi/meta.json | 2 +- .../Fun/Tabletop/Battlemaps/shipbm_tabletop.rsi/meta.json | 2 +- .../Objects/Fun/Tabletop/Battlemaps/snowbm.rsi/meta.json | 2 +- .../Fun/Tabletop/Battlemaps/snowbm_tabletop.rsi/meta.json | 2 +- .../Textures/Objects/Fun/Tabletop/chessboard.rsi/meta.json | 2 +- .../Objects/Fun/Tabletop/chessboard_tabletop.rsi/meta.json | 2 +- Resources/Textures/Objects/Misc/broken_bottle.rsi/meta.json | 2 +- Resources/Textures/Objects/Misc/ensnare.rsi/meta.json | 2 +- Resources/Textures/Objects/Misc/ice_crust.rsi/meta.json | 2 +- Resources/Textures/Objects/Misc/kudzu.rsi/meta.json | 2 +- Resources/Textures/Objects/Misc/kudzuflower.rsi/meta.json | 2 +- Resources/Textures/Objects/Misc/sample_tubes.rsi/meta.json | 2 +- Resources/Textures/Objects/Misc/spaceshroom.rsi/meta.json | 2 +- .../Objects/Specific/Chapel/chaplainurn.rsi/meta.json | 2 +- .../Objects/Specific/Medical/Morgue/bodybags.rsi/meta.json | 2 +- .../Textures/Objects/Specific/Security/barrier.rsi/meta.json | 2 +- .../Objects/Specific/Syndicate/telecrystal.rsi/meta.json | 2 +- Resources/Textures/Objects/Storage/medalcase.rsi/meta.json | 2 +- .../Objects/Tools/Toolboxes/toolbox_blue.rsi/meta.json | 2 +- .../Objects/Tools/Toolboxes/toolbox_gold.rsi/meta.json | 2 +- .../Objects/Tools/Toolboxes/toolbox_green.rsi/meta.json | 2 +- .../Objects/Tools/Toolboxes/toolbox_red.rsi/meta.json | 2 +- .../Objects/Tools/Toolboxes/toolbox_thief.rsi/meta.json | 2 +- .../Objects/Tools/Toolboxes/toolbox_yellow.rsi/meta.json | 2 +- Resources/Textures/Objects/Tools/fulton_balloon.rsi/meta.json | 2 +- Resources/Textures/Objects/Vehicles/motorbike.rsi/meta.json | 2 +- Resources/Textures/Objects/Weapons/Effects/meta.json | 2 +- .../Guns/Ammunition/Casings/large_casing.rsi/meta.json | 2 +- .../Guns/Ammunition/Casings/rocket_shell.rsi/meta.json | 2 +- .../Guns/Ammunition/Magazine/LightRifle/pk_box.rsi/meta.json | 2 +- .../Textures/Objects/Weapons/Guns/Basic/staves.rsi/meta.json | 2 +- .../Objects/Weapons/Guns/Battery/disabler.rsi/meta.json | 2 +- .../Weapons/Guns/Battery/practice_disabler.rsi/meta.json | 2 +- .../Objects/Weapons/Guns/Battery/tesla_gun.rsi/meta.json | 2 +- .../Objects/Weapons/Guns/Cannons/syringe_gun.rsi/meta.json | 2 +- .../Objects/Weapons/Guns/Launchers/force_gun.rsi/meta.json | 2 +- .../Objects/Weapons/Guns/Launchers/rocket.rsi/meta.json | 2 +- .../Objects/Weapons/Guns/Launchers/tether_gun.rsi/meta.json | 2 +- .../Objects/Weapons/Guns/Projectiles/magic.rsi/meta.json | 2 +- .../Objects/Weapons/Guns/Projectiles/meteor.rsi/meta.json | 2 +- .../Objects/Weapons/Guns/Projectiles/water_shot.rsi/meta.json | 2 +- .../Objects/Weapons/Guns/Projectiles/xeno_toxic.rsi/meta.json | 2 +- .../Weapons/Guns/Shotguns/improvised_shotgun.rsi/meta.json | 2 +- .../Objects/Weapons/Guns/Shuttles/laser.rsi/meta.json | 2 +- .../Objects/Weapons/Guns/Snipers/flintlock.rsi/meta.json | 2 +- .../Objects/Weapons/Guns/Snipers/musket.rsi/meta.json | 2 +- .../Objects/Weapons/Guns/Turrets/sentry_turret.rsi/meta.json | 2 +- .../Objects/Weapons/Guns/Turrets/turrets.rsi/meta.json | 2 +- .../Objects/Weapons/Guns/Turrets/xenoturret.rsi/meta.json | 2 +- .../Structures/Decoration/decorated_fir_tree.rsi/meta.json | 2 +- .../Textures/Structures/Decoration/showcase.rsi/meta.json | 2 +- .../Textures/Structures/Furniture/Tables/brass.rsi/meta.json | 2 +- .../Textures/Structures/Furniture/furniture.rsi/meta.json | 2 +- Resources/Textures/Structures/Holo/field.rsi/meta.json | 2 +- Resources/Textures/Structures/Holo/holofan.rsi/meta.json | 2 +- Resources/Textures/Structures/Holo/security.rsi/meta.json | 2 +- Resources/Textures/Structures/Holo/wetfloor.rsi/meta.json | 2 +- .../Machines/VendingMachines/centdrobe.rsi/meta.json | 2 +- .../Structures/Machines/VendingMachines/mining.rsi/meta.json | 2 +- .../Textures/Structures/Machines/anomaly_sync.rsi/meta.json | 2 +- .../Structures/Machines/exosuit_fabricator.rsi/meta.json | 2 +- .../Textures/Structures/Machines/fat_sucker.rsi/meta.json | 2 +- .../Textures/Structures/Machines/fax_machine.rsi/meta.json | 2 +- Resources/Textures/Structures/Machines/grinder.rsi/meta.json | 2 +- Resources/Textures/Structures/Machines/holopad.rsi/meta.json | 2 +- Resources/Textures/Structures/Machines/jukebox.rsi/meta.json | 2 +- .../Textures/Structures/Machines/sheetifier.rsi/meta.json | 2 +- Resources/Textures/Structures/Magic/Cult/rune.rsi/meta.json | 2 +- Resources/Textures/Structures/Magic/Cult/trap.rsi/meta.json | 2 +- Resources/Textures/Structures/Magic/forcewall.rsi/meta.json | 2 +- .../Structures/Piping/Atmospherics/miners.rsi/meta.json | 2 +- .../Piping/high_pressure_machine_frame.rsi/meta.json | 2 +- .../Structures/Power/Generation/Tesla/coil.rsi/meta.json | 2 +- .../Power/Generation/Tesla/energy_ball.rsi/meta.json | 2 +- .../Structures/Power/Generation/Tesla/generator.rsi/meta.json | 2 +- .../Textures/Structures/Power/Generation/teg.rsi/meta.json | 2 +- .../Textures/Structures/Power/cable_terminal.rsi/meta.json | 2 +- .../Textures/Structures/Shuttles/gyroscope.rsi/meta.json | 2 +- Resources/Textures/Structures/Shuttles/iff.rsi/meta.json | 2 +- .../Structures/Specific/Anomalies/shadow_anom.rsi/meta.json | 2 +- .../Structures/Specific/Anomalies/tech_anom.rsi/meta.json | 2 +- .../Textures/Structures/Specific/xeno_building.rsi/meta.json | 2 +- .../Textures/Structures/Storage/Crates/artifact.rsi/meta.json | 2 +- .../Structures/Storage/Crates/livestock.rsi/meta.json | 2 +- .../Structures/Storage/Crates/syndicate.rsi/meta.json | 2 +- .../Textures/Structures/Storage/Crates/toybox.rsi/meta.json | 2 +- .../Shelfs/Departments/Medical/chemistry.rsi/meta.json | 2 +- .../Storage/Shelfs/Departments/Service/bar.rsi/meta.json | 2 +- .../Storage/Shelfs/Departments/Service/kitchen.rsi/meta.json | 2 +- .../Textures/Structures/Storage/Shelfs/glass.rsi/meta.json | 2 +- .../Textures/Structures/Storage/Shelfs/metal.rsi/meta.json | 2 +- .../Textures/Structures/Storage/Shelfs/wood.rsi/meta.json | 2 +- Resources/Textures/Structures/Storage/glassbox.rsi/meta.json | 2 +- Resources/Textures/Structures/Storage/orebox.rsi/meta.json | 2 +- .../Structures/Wallmounts/shotgun_cabinet.rsi/meta.json | 2 +- Resources/Textures/Structures/Walls/random.rsi/meta.json | 2 +- Resources/Textures/Structures/barricades.rsi/meta.json | 2 +- Resources/Textures/Structures/cryostorage.rsi/meta.json | 2 +- .../Textures/Tiles/Planet/Chasms/basalt_chasm.rsi/meta.json | 2 +- .../Textures/Tiles/Planet/Chasms/chromite_chasm.rsi/meta.json | 2 +- .../Textures/Tiles/Planet/Chasms/desert_chasm.rsi/meta.json | 2 +- .../Textures/Tiles/Planet/Chasms/snow_chasm.rsi/meta.json | 2 +- Resources/Textures/Tiles/Planet/attributions.yml | 2 +- Resources/Textures/Tiles/Planet/basalt.rsi/meta.json | 2 +- Resources/Textures/Tiles/Planet/lava.rsi/meta.json | 2 +- Resources/Textures/Tiles/Planet/shadowbasalt.rsi/meta.json | 2 +- Resources/Textures/deprecated.rsi/meta.json | 2 +- Resources/keybinds.yml | 2 +- Resources/manifest.yml | 2 +- Resources/toolshedEngineCommandPerms.yml | 2 +- 2831 files changed, 2845 insertions(+), 2845 deletions(-) delete mode 100644 Resources/Textures/Interface/hammer_sca;ed.svg.192dpi.png.yml create mode 100644 Resources/Textures/Interface/hammer_scaled.svg.192dpi.png.yml diff --git a/.github/labeler.yml b/.github/labeler.yml index ca5aeed1f3..24cca935d8 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -1,4 +1,4 @@ -"Changes: Sprites": +"Changes: Sprites": - changed-files: - any-glob-to-any-file: '**/*.rsi/*.png' diff --git a/.github/workflows/build-map-renderer.yml b/.github/workflows/build-map-renderer.yml index a20023a057..851c4339e9 100644 --- a/.github/workflows/build-map-renderer.yml +++ b/.github/workflows/build-map-renderer.yml @@ -1,4 +1,4 @@ -name: Build & Test Map Renderer +name: Build & Test Map Renderer on: push: diff --git a/.github/workflows/check-crlf.yml b/.github/workflows/check-crlf.yml index 5e4b0d0341..3ae3c4121f 100644 --- a/.github/workflows/check-crlf.yml +++ b/.github/workflows/check-crlf.yml @@ -1,4 +1,4 @@ -name: CRLF Check +name: CRLF Check on: pull_request: diff --git a/.github/workflows/labeler-needsreview.yml b/.github/workflows/labeler-needsreview.yml index d3373ce91d..7499d200a0 100644 --- a/.github/workflows/labeler-needsreview.yml +++ b/.github/workflows/labeler-needsreview.yml @@ -1,4 +1,4 @@ -name: "Labels: Review" +name: "Labels: Review" on: pull_request_target: diff --git a/.github/workflows/labeler-pr.yml b/.github/workflows/labeler-pr.yml index 42ed100981..dc3af22907 100644 --- a/.github/workflows/labeler-pr.yml +++ b/.github/workflows/labeler-pr.yml @@ -1,4 +1,4 @@ -name: "Labels: PR" +name: "Labels: PR" on: - pull_request_target diff --git a/.github/workflows/labeler-untriaged.yml b/.github/workflows/labeler-untriaged.yml index ec1d194851..5a7e4a51e7 100644 --- a/.github/workflows/labeler-untriaged.yml +++ b/.github/workflows/labeler-untriaged.yml @@ -1,4 +1,4 @@ -name: "Labels: Untriaged" +name: "Labels: Untriaged" on: issues: diff --git a/.github/workflows/test-packaging.yml b/.github/workflows/test-packaging.yml index 34bdf56bd3..244ed4f0f2 100644 --- a/.github/workflows/test-packaging.yml +++ b/.github/workflows/test-packaging.yml @@ -1,4 +1,4 @@ -name: Test Packaging +name: Test Packaging on: push: diff --git a/.vscode/launch.json b/.vscode/launch.json index 5390b91409..1d339fc7a1 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -52,4 +52,4 @@ "preLaunchTask": "build" } ] -} \ No newline at end of file +} diff --git a/Content.Benchmarks/ComponentQueryBenchmark.cs b/Content.Benchmarks/ComponentQueryBenchmark.cs index 942fb10d71..883ad2891c 100644 --- a/Content.Benchmarks/ComponentQueryBenchmark.cs +++ b/Content.Benchmarks/ComponentQueryBenchmark.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using System.IO; using System.Runtime.CompilerServices; diff --git a/Content.Benchmarks/DestructibleBenchmark.cs b/Content.Benchmarks/DestructibleBenchmark.cs index 58c834c0ae..10f9718d9a 100644 --- a/Content.Benchmarks/DestructibleBenchmark.cs +++ b/Content.Benchmarks/DestructibleBenchmark.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.IO; using System.Threading.Tasks; using BenchmarkDotNet.Attributes; diff --git a/Content.Benchmarks/DeviceNetworkingBenchmark.cs b/Content.Benchmarks/DeviceNetworkingBenchmark.cs index cbfe002757..be68dcefd0 100644 --- a/Content.Benchmarks/DeviceNetworkingBenchmark.cs +++ b/Content.Benchmarks/DeviceNetworkingBenchmark.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.IO; using System.Threading.Tasks; using BenchmarkDotNet.Attributes; diff --git a/Content.Benchmarks/HeatCapacityBenchmark.cs b/Content.Benchmarks/HeatCapacityBenchmark.cs index 18366306d7..1361f23280 100644 --- a/Content.Benchmarks/HeatCapacityBenchmark.cs +++ b/Content.Benchmarks/HeatCapacityBenchmark.cs @@ -1,4 +1,4 @@ -using System.IO; +using System.IO; using System.Threading.Tasks; using BenchmarkDotNet.Attributes; using Content.IntegrationTests; diff --git a/Content.Benchmarks/NetSerializerIntBenchmark.cs b/Content.Benchmarks/NetSerializerIntBenchmark.cs index 42afc80a1b..591e0fa00a 100644 --- a/Content.Benchmarks/NetSerializerIntBenchmark.cs +++ b/Content.Benchmarks/NetSerializerIntBenchmark.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Buffers.Binary; using System.IO; using BenchmarkDotNet.Attributes; diff --git a/Content.Benchmarks/Program.cs b/Content.Benchmarks/Program.cs index 6f1f4e6f19..249c7cb03a 100644 --- a/Content.Benchmarks/Program.cs +++ b/Content.Benchmarks/Program.cs @@ -1,4 +1,4 @@ -using System; +using System; using BenchmarkDotNet.Running; using BenchmarkDotNet.Configs; using Robust.Benchmarks.Configs; diff --git a/Content.Benchmarks/PvsBenchmark.cs b/Content.Benchmarks/PvsBenchmark.cs index ab4e7981d2..44be7ee61e 100644 --- a/Content.Benchmarks/PvsBenchmark.cs +++ b/Content.Benchmarks/PvsBenchmark.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using System.IO; using System.Linq; diff --git a/Content.Benchmarks/RaiseEventBenchmark.cs b/Content.Benchmarks/RaiseEventBenchmark.cs index b8c6bd7d47..c72b287115 100644 --- a/Content.Benchmarks/RaiseEventBenchmark.cs +++ b/Content.Benchmarks/RaiseEventBenchmark.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System.IO; using System.Runtime.CompilerServices; using System.Threading.Tasks; diff --git a/Content.Benchmarks/SpawnEquipDeleteBenchmark.cs b/Content.Benchmarks/SpawnEquipDeleteBenchmark.cs index e0c89bbc8e..17ab72b7b3 100644 --- a/Content.Benchmarks/SpawnEquipDeleteBenchmark.cs +++ b/Content.Benchmarks/SpawnEquipDeleteBenchmark.cs @@ -1,4 +1,4 @@ -using System.IO; +using System.IO; using System.Threading.Tasks; using BenchmarkDotNet.Attributes; using Content.IntegrationTests; diff --git a/Content.Client/Access/IdCardSystem.cs b/Content.Client/Access/IdCardSystem.cs index 24725d980c..80a3f12a54 100644 --- a/Content.Client/Access/IdCardSystem.cs +++ b/Content.Client/Access/IdCardSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Access.Systems; +using Content.Shared.Access.Systems; namespace Content.Client.Access; diff --git a/Content.Client/Access/Systems/JobStatusSystem.cs b/Content.Client/Access/Systems/JobStatusSystem.cs index 0b4ef98720..50968f68ff 100644 --- a/Content.Client/Access/Systems/JobStatusSystem.cs +++ b/Content.Client/Access/Systems/JobStatusSystem.cs @@ -1,4 +1,4 @@ -using Content.Client.Overlays; +using Content.Client.Overlays; using Content.Shared.Access.Systems; using Content.Shared.StatusIcon; using Content.Shared.StatusIcon.Components; diff --git a/Content.Client/Administration/AdminOverlayCommand.cs b/Content.Client/Administration/AdminOverlayCommand.cs index afad7a4aef..67b5a564b6 100644 --- a/Content.Client/Administration/AdminOverlayCommand.cs +++ b/Content.Client/Administration/AdminOverlayCommand.cs @@ -1,4 +1,4 @@ -using Content.Client.Administration.Systems; +using Content.Client.Administration.Systems; using Content.Shared.Commands; using Robust.Shared.Console; diff --git a/Content.Client/Administration/Managers/IClientAdminManager.cs b/Content.Client/Administration/Managers/IClientAdminManager.cs index b4b5b48b81..157cff15ca 100644 --- a/Content.Client/Administration/Managers/IClientAdminManager.cs +++ b/Content.Client/Administration/Managers/IClientAdminManager.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration; +using Content.Shared.Administration; namespace Content.Client.Administration.Managers { diff --git a/Content.Client/Administration/Systems/BwoinkSystem.cs b/Content.Client/Administration/Systems/BwoinkSystem.cs index 70c04f77fb..5de8d8dd0e 100644 --- a/Content.Client/Administration/Systems/BwoinkSystem.cs +++ b/Content.Client/Administration/Systems/BwoinkSystem.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using Content.Shared.Administration; using JetBrains.Annotations; using Robust.Shared.Network; diff --git a/Content.Client/Administration/Systems/HeadstandSystem.cs b/Content.Client/Administration/Systems/HeadstandSystem.cs index 453982c53c..51412f8f1e 100644 --- a/Content.Client/Administration/Systems/HeadstandSystem.cs +++ b/Content.Client/Administration/Systems/HeadstandSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration.Components; +using Content.Shared.Administration.Components; using Robust.Client.GameObjects; namespace Content.Client.Administration.Systems; diff --git a/Content.Client/Administration/Systems/KillSignSystem.cs b/Content.Client/Administration/Systems/KillSignSystem.cs index 8ed2891468..f577142304 100644 --- a/Content.Client/Administration/Systems/KillSignSystem.cs +++ b/Content.Client/Administration/Systems/KillSignSystem.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Content.Shared.Administration.Components; using Robust.Client.GameObjects; using Robust.Client.Player; diff --git a/Content.Client/Administration/UI/BanList/BanListEui.cs b/Content.Client/Administration/UI/BanList/BanListEui.cs index ff20e6fa89..c2fc2a4b74 100644 --- a/Content.Client/Administration/UI/BanList/BanListEui.cs +++ b/Content.Client/Administration/UI/BanList/BanListEui.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using System.Numerics; using Content.Client.Administration.UI.BanList.Bans; using Content.Client.Administration.UI.BanList.RoleBans; diff --git a/Content.Client/Administration/UI/BanList/BanListIdsPopup.xaml.cs b/Content.Client/Administration/UI/BanList/BanListIdsPopup.xaml.cs index 772f644b2e..1f369d4c19 100644 --- a/Content.Client/Administration/UI/BanList/BanListIdsPopup.xaml.cs +++ b/Content.Client/Administration/UI/BanList/BanListIdsPopup.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/Administration/UI/BanList/BanListWindow.xaml.cs b/Content.Client/Administration/UI/BanList/BanListWindow.xaml.cs index fad55f9627..bd64bb6ed8 100644 --- a/Content.Client/Administration/UI/BanList/BanListWindow.xaml.cs +++ b/Content.Client/Administration/UI/BanList/BanListWindow.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/Administration/UI/BanList/Bans/BanListControl.xaml.cs b/Content.Client/Administration/UI/BanList/Bans/BanListControl.xaml.cs index a79fc4a137..9bf85b2dfe 100644 --- a/Content.Client/Administration/UI/BanList/Bans/BanListControl.xaml.cs +++ b/Content.Client/Administration/UI/BanList/Bans/BanListControl.xaml.cs @@ -1,4 +1,4 @@ -using Content.Client.Administration.UI.CustomControls; +using Content.Client.Administration.UI.CustomControls; using Content.Shared.Administration.BanList; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface; diff --git a/Content.Client/Administration/UI/BanList/Bans/BanListHeader.xaml.cs b/Content.Client/Administration/UI/BanList/Bans/BanListHeader.xaml.cs index c7cf73e1b2..d60c197097 100644 --- a/Content.Client/Administration/UI/BanList/Bans/BanListHeader.xaml.cs +++ b/Content.Client/Administration/UI/BanList/Bans/BanListHeader.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/Administration/UI/BanList/Bans/BanListLine.xaml.cs b/Content.Client/Administration/UI/BanList/Bans/BanListLine.xaml.cs index f1320ef7b9..dc42fea217 100644 --- a/Content.Client/Administration/UI/BanList/Bans/BanListLine.xaml.cs +++ b/Content.Client/Administration/UI/BanList/Bans/BanListLine.xaml.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration.BanList; +using Content.Shared.Administration.BanList; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/Administration/UI/BanList/IBanListLine.cs b/Content.Client/Administration/UI/BanList/IBanListLine.cs index 565e707218..492f755cb0 100644 --- a/Content.Client/Administration/UI/BanList/IBanListLine.cs +++ b/Content.Client/Administration/UI/BanList/IBanListLine.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration.BanList; +using Content.Shared.Administration.BanList; using Robust.Client.UserInterface.Controls; namespace Content.Client.Administration.UI.BanList; diff --git a/Content.Client/Administration/UI/BanList/RoleBans/RoleBanListControl.xaml.cs b/Content.Client/Administration/UI/BanList/RoleBans/RoleBanListControl.xaml.cs index f217dec5e6..ef73d116bd 100644 --- a/Content.Client/Administration/UI/BanList/RoleBans/RoleBanListControl.xaml.cs +++ b/Content.Client/Administration/UI/BanList/RoleBans/RoleBanListControl.xaml.cs @@ -1,4 +1,4 @@ -using Content.Client.Administration.UI.CustomControls; +using Content.Client.Administration.UI.CustomControls; using Content.Shared.Administration.BanList; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface; diff --git a/Content.Client/Administration/UI/BanList/RoleBans/RoleBanListHeader.xaml.cs b/Content.Client/Administration/UI/BanList/RoleBans/RoleBanListHeader.xaml.cs index e311e7479f..46b7f65ab7 100644 --- a/Content.Client/Administration/UI/BanList/RoleBans/RoleBanListHeader.xaml.cs +++ b/Content.Client/Administration/UI/BanList/RoleBans/RoleBanListHeader.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/Administration/UI/BanList/RoleBans/RoleBanListLine.xaml.cs b/Content.Client/Administration/UI/BanList/RoleBans/RoleBanListLine.xaml.cs index ca0d214e31..006d27e9d0 100644 --- a/Content.Client/Administration/UI/BanList/RoleBans/RoleBanListLine.xaml.cs +++ b/Content.Client/Administration/UI/BanList/RoleBans/RoleBanListLine.xaml.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration.BanList; +using Content.Shared.Administration.BanList; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/Administration/UI/CustomControls/AdminLogImpactButton.cs b/Content.Client/Administration/UI/CustomControls/AdminLogImpactButton.cs index 879569ce2e..50fc93bca8 100644 --- a/Content.Client/Administration/UI/CustomControls/AdminLogImpactButton.cs +++ b/Content.Client/Administration/UI/CustomControls/AdminLogImpactButton.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration.Logs; +using Content.Shared.Administration.Logs; using Content.Shared.Database; using Robust.Client.UserInterface.Controls; diff --git a/Content.Client/Administration/UI/CustomControls/AdminLogLabel.cs b/Content.Client/Administration/UI/CustomControls/AdminLogLabel.cs index 9be3578eed..69effee31e 100644 --- a/Content.Client/Administration/UI/CustomControls/AdminLogLabel.cs +++ b/Content.Client/Administration/UI/CustomControls/AdminLogLabel.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration.Logs; +using Content.Shared.Administration.Logs; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; diff --git a/Content.Client/Administration/UI/CustomControls/AdminLogPlayerButton.cs b/Content.Client/Administration/UI/CustomControls/AdminLogPlayerButton.cs index a3b0438561..97997550b8 100644 --- a/Content.Client/Administration/UI/CustomControls/AdminLogPlayerButton.cs +++ b/Content.Client/Administration/UI/CustomControls/AdminLogPlayerButton.cs @@ -1,4 +1,4 @@ -using System; +using System; using Robust.Client.UserInterface.Controls; namespace Content.Client.Administration.UI.CustomControls; diff --git a/Content.Client/Administration/UI/CustomControls/AdminLogTypeButton.cs b/Content.Client/Administration/UI/CustomControls/AdminLogTypeButton.cs index e0a8a55e79..1eb47c60ef 100644 --- a/Content.Client/Administration/UI/CustomControls/AdminLogTypeButton.cs +++ b/Content.Client/Administration/UI/CustomControls/AdminLogTypeButton.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration.Logs; +using Content.Shared.Administration.Logs; using Content.Shared.Database; using Robust.Client.UserInterface.Controls; diff --git a/Content.Client/Administration/UI/CustomControls/HSeparator.cs b/Content.Client/Administration/UI/CustomControls/HSeparator.cs index 2dfb0b27fe..81aef7329e 100644 --- a/Content.Client/Administration/UI/CustomControls/HSeparator.cs +++ b/Content.Client/Administration/UI/CustomControls/HSeparator.cs @@ -1,4 +1,4 @@ -using Robust.Client.Graphics; +using Robust.Client.Graphics; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using Robust.Shared.Maths; diff --git a/Content.Client/Administration/UI/CustomControls/UICommandButton.cs b/Content.Client/Administration/UI/CustomControls/UICommandButton.cs index ea10c7637e..be333a1f1d 100644 --- a/Content.Client/Administration/UI/CustomControls/UICommandButton.cs +++ b/Content.Client/Administration/UI/CustomControls/UICommandButton.cs @@ -1,4 +1,4 @@ -using System; +using System; using Robust.Client.UserInterface.CustomControls; using Robust.Shared.IoC; diff --git a/Content.Client/Administration/UI/CustomControls/VSeparator.cs b/Content.Client/Administration/UI/CustomControls/VSeparator.cs index 0ab8a88c7b..4c79ad5e02 100644 --- a/Content.Client/Administration/UI/CustomControls/VSeparator.cs +++ b/Content.Client/Administration/UI/CustomControls/VSeparator.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Robust.Client.Graphics; using Robust.Client.UserInterface.Controls; using Robust.Shared.Maths; diff --git a/Content.Client/Administration/UI/EventLog/AdminEventLogEui.cs b/Content.Client/Administration/UI/EventLog/AdminEventLogEui.cs index 1691519d24..081eb6f91f 100644 --- a/Content.Client/Administration/UI/EventLog/AdminEventLogEui.cs +++ b/Content.Client/Administration/UI/EventLog/AdminEventLogEui.cs @@ -1,4 +1,4 @@ -using Content.Client.Eui; +using Content.Client.Eui; using Content.Shared.Administration.AdminEventLog; using Content.Shared.Eui; using JetBrains.Annotations; diff --git a/Content.Client/Administration/UI/Logs/AdminLogsControl.xaml.cs b/Content.Client/Administration/UI/Logs/AdminLogsControl.xaml.cs index 0a49ab127d..8b5afbeb08 100644 --- a/Content.Client/Administration/UI/Logs/AdminLogsControl.xaml.cs +++ b/Content.Client/Administration/UI/Logs/AdminLogsControl.xaml.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using System.Runtime.InteropServices; using Content.Client.Administration.UI.CustomControls; using Content.Shared.Administration.Logs; diff --git a/Content.Client/Administration/UI/Logs/AdminLogsEui.cs b/Content.Client/Administration/UI/Logs/AdminLogsEui.cs index 5a3976d3f1..71122c72ac 100644 --- a/Content.Client/Administration/UI/Logs/AdminLogsEui.cs +++ b/Content.Client/Administration/UI/Logs/AdminLogsEui.cs @@ -1,4 +1,4 @@ -using System.IO; +using System.IO; using System.Linq; using Content.Client.Administration.UI.CustomControls; using Content.Client.Eui; diff --git a/Content.Client/Administration/UI/Logs/AdminLogsWindow.xaml.cs b/Content.Client/Administration/UI/Logs/AdminLogsWindow.xaml.cs index 23e6e9145e..3a70540685 100644 --- a/Content.Client/Administration/UI/Logs/AdminLogsWindow.xaml.cs +++ b/Content.Client/Administration/UI/Logs/AdminLogsWindow.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/Administration/UI/Notes/AdminNotesLinePopup.xaml.cs b/Content.Client/Administration/UI/Notes/AdminNotesLinePopup.xaml.cs index 4e4027e7d4..5883c76227 100644 --- a/Content.Client/Administration/UI/Notes/AdminNotesLinePopup.xaml.cs +++ b/Content.Client/Administration/UI/Notes/AdminNotesLinePopup.xaml.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration.Notes; +using Content.Shared.Administration.Notes; using Content.Shared.Database; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; diff --git a/Content.Client/Administration/UI/Notes/NoteEdit.xaml.cs b/Content.Client/Administration/UI/Notes/NoteEdit.xaml.cs index 0e7de8acba..4d61937698 100644 --- a/Content.Client/Administration/UI/Notes/NoteEdit.xaml.cs +++ b/Content.Client/Administration/UI/Notes/NoteEdit.xaml.cs @@ -362,4 +362,4 @@ public sealed partial class NoteEdit : FancyWindow SubmitPressed = null; } -} \ No newline at end of file +} diff --git a/Content.Client/Administration/UI/Tabs/AdminTab/AdminTab.xaml.cs b/Content.Client/Administration/UI/Tabs/AdminTab/AdminTab.xaml.cs index 63534659f4..c759a36dfd 100644 --- a/Content.Client/Administration/UI/Tabs/AdminTab/AdminTab.xaml.cs +++ b/Content.Client/Administration/UI/Tabs/AdminTab/AdminTab.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface; namespace Content.Client.Administration.UI.Tabs.AdminTab diff --git a/Content.Client/Administration/UI/Tabs/AdminbusTab/AdminbusTab.xaml.cs b/Content.Client/Administration/UI/Tabs/AdminbusTab/AdminbusTab.xaml.cs index 1d71d5bdf4..8bfb050793 100644 --- a/Content.Client/Administration/UI/Tabs/AdminbusTab/AdminbusTab.xaml.cs +++ b/Content.Client/Administration/UI/Tabs/AdminbusTab/AdminbusTab.xaml.cs @@ -1,4 +1,4 @@ -using Content.Client.Administration.Managers; +using Content.Client.Administration.Managers; using Content.Client.UserInterface.Systems.DecalPlacer; using Content.Shared.Administration; using Robust.Client.AutoGenerated; diff --git a/Content.Client/Administration/UI/Tabs/AtmosTab/AtmosTab.xaml.cs b/Content.Client/Administration/UI/Tabs/AtmosTab/AtmosTab.xaml.cs index b757c1b4f0..21b3be6e06 100644 --- a/Content.Client/Administration/UI/Tabs/AtmosTab/AtmosTab.xaml.cs +++ b/Content.Client/Administration/UI/Tabs/AtmosTab/AtmosTab.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface; namespace Content.Client.Administration.UI.Tabs.AtmosTab diff --git a/Content.Client/Administration/UI/Tabs/PanicBunkerTab/PanicBunkerStatusWindow.xaml.cs b/Content.Client/Administration/UI/Tabs/PanicBunkerTab/PanicBunkerStatusWindow.xaml.cs index ec16bf6aea..63e28a6dd0 100644 --- a/Content.Client/Administration/UI/Tabs/PanicBunkerTab/PanicBunkerStatusWindow.xaml.cs +++ b/Content.Client/Administration/UI/Tabs/PanicBunkerTab/PanicBunkerStatusWindow.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/Administration/UI/Tabs/PanicBunkerTab/PanicBunkerTab.xaml.cs b/Content.Client/Administration/UI/Tabs/PanicBunkerTab/PanicBunkerTab.xaml.cs index 202057519f..53d6d5d623 100644 --- a/Content.Client/Administration/UI/Tabs/PanicBunkerTab/PanicBunkerTab.xaml.cs +++ b/Content.Client/Administration/UI/Tabs/PanicBunkerTab/PanicBunkerTab.xaml.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration.Events; +using Content.Shared.Administration.Events; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTabEntry.xaml.cs b/Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTabEntry.xaml.cs index 68516491d9..3b9f68d2b0 100644 --- a/Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTabEntry.xaml.cs +++ b/Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTabEntry.xaml.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration; +using Content.Shared.Administration; using Content.Shared.Mind; using Content.Shared.Roles; using Robust.Client.AutoGenerated; diff --git a/Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTabHeader.xaml.cs b/Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTabHeader.xaml.cs index ef505d00f0..3875ad4a9a 100644 --- a/Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTabHeader.xaml.cs +++ b/Content.Client/Administration/UI/Tabs/PlayerTab/PlayerTabHeader.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/Administration/UI/Tabs/RoundTab.xaml.cs b/Content.Client/Administration/UI/Tabs/RoundTab.xaml.cs index cce809d35a..a5c4500148 100644 --- a/Content.Client/Administration/UI/Tabs/RoundTab.xaml.cs +++ b/Content.Client/Administration/UI/Tabs/RoundTab.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.Console; using Robust.Client.UserInterface; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/Administration/UI/Tabs/ServerTab.xaml.cs b/Content.Client/Administration/UI/Tabs/ServerTab.xaml.cs index e8ba41a3fe..43854c8f95 100644 --- a/Content.Client/Administration/UI/Tabs/ServerTab.xaml.cs +++ b/Content.Client/Administration/UI/Tabs/ServerTab.xaml.cs @@ -1,4 +1,4 @@ -using System.Globalization; +using System.Globalization; using Content.Shared.CCVar; using Robust.Client.AutoGenerated; using Robust.Client.Console; diff --git a/Content.Client/Animations/EntityPickupAnimationComponent.cs b/Content.Client/Animations/EntityPickupAnimationComponent.cs index 663ce628f6..96d580acb7 100644 --- a/Content.Client/Animations/EntityPickupAnimationComponent.cs +++ b/Content.Client/Animations/EntityPickupAnimationComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Client.Animations; +namespace Content.Client.Animations; /// /// Applied to client-side clone entities to animate them approaching the player that diff --git a/Content.Client/Animations/EntityPickupAnimationSystem.cs b/Content.Client/Animations/EntityPickupAnimationSystem.cs index 7445267ddf..23b659f2bf 100644 --- a/Content.Client/Animations/EntityPickupAnimationSystem.cs +++ b/Content.Client/Animations/EntityPickupAnimationSystem.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Robust.Client.Animations; using Robust.Client.GameObjects; using Robust.Shared.Animations; diff --git a/Content.Client/Anomaly/Effects/GravityAnomalySystem.cs b/Content.Client/Anomaly/Effects/GravityAnomalySystem.cs index 212e207310..767f1c805f 100644 --- a/Content.Client/Anomaly/Effects/GravityAnomalySystem.cs +++ b/Content.Client/Anomaly/Effects/GravityAnomalySystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Anomaly.Effects; +using Content.Shared.Anomaly.Effects; namespace Content.Client.Anomaly.Effects; diff --git a/Content.Client/Anomaly/Ui/AnomalyGeneratorWindow.xaml.cs b/Content.Client/Anomaly/Ui/AnomalyGeneratorWindow.xaml.cs index f26219d532..a4da4239e4 100644 --- a/Content.Client/Anomaly/Ui/AnomalyGeneratorWindow.xaml.cs +++ b/Content.Client/Anomaly/Ui/AnomalyGeneratorWindow.xaml.cs @@ -1,4 +1,4 @@ -using Content.Client.Message; +using Content.Client.Message; using Content.Shared.Anomaly; using Robust.Client.AutoGenerated; using Robust.Client.GameObjects; diff --git a/Content.Client/Anomaly/Ui/AnomalyScannerMenu.xaml.cs b/Content.Client/Anomaly/Ui/AnomalyScannerMenu.xaml.cs index f849ce5d33..38ebc99ea0 100644 --- a/Content.Client/Anomaly/Ui/AnomalyScannerMenu.xaml.cs +++ b/Content.Client/Anomaly/Ui/AnomalyScannerMenu.xaml.cs @@ -1,4 +1,4 @@ -using Content.Client.Message; +using Content.Client.Message; using Content.Client.UserInterface.Controls; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/Arcade/UI/BlockGameBoundUserInterface.cs b/Content.Client/Arcade/UI/BlockGameBoundUserInterface.cs index 4f08e6bd0a..e701bcc83f 100644 --- a/Content.Client/Arcade/UI/BlockGameBoundUserInterface.cs +++ b/Content.Client/Arcade/UI/BlockGameBoundUserInterface.cs @@ -1,4 +1,4 @@ -using Content.Shared.Arcade; +using Content.Shared.Arcade; using Robust.Client.GameObjects; using Robust.Client.UserInterface; diff --git a/Content.Client/Arcade/UI/SpaceVillainArcadeBoundUserInterface.cs b/Content.Client/Arcade/UI/SpaceVillainArcadeBoundUserInterface.cs index 8fff406e86..ffda05c4f0 100644 --- a/Content.Client/Arcade/UI/SpaceVillainArcadeBoundUserInterface.cs +++ b/Content.Client/Arcade/UI/SpaceVillainArcadeBoundUserInterface.cs @@ -1,4 +1,4 @@ -using Robust.Client.GameObjects; +using Robust.Client.GameObjects; using Robust.Client.UserInterface; using Robust.Shared.GameObjects; using Robust.Shared.ViewVariables; diff --git a/Content.Client/Armor/ArmorSystem.cs b/Content.Client/Armor/ArmorSystem.cs index 79a0834f39..67d57ca400 100644 --- a/Content.Client/Armor/ArmorSystem.cs +++ b/Content.Client/Armor/ArmorSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Armor; +using Content.Shared.Armor; namespace Content.Client.Armor; diff --git a/Content.Client/Atmos/Components/MaxPressureVisualsComponent.cs b/Content.Client/Atmos/Components/MaxPressureVisualsComponent.cs index e71f212786..f10cdf0126 100644 --- a/Content.Client/Atmos/Components/MaxPressureVisualsComponent.cs +++ b/Content.Client/Atmos/Components/MaxPressureVisualsComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Atmos.Components; +using Content.Shared.Atmos.Components; using Content.Shared.Atmos.EntitySystems; namespace Content.Client.Atmos.Components; diff --git a/Content.Client/Atmos/EntitySystems/AtmosphereSystem.cs b/Content.Client/Atmos/EntitySystems/AtmosphereSystem.cs index 30567abbf7..709aae5827 100644 --- a/Content.Client/Atmos/EntitySystems/AtmosphereSystem.cs +++ b/Content.Client/Atmos/EntitySystems/AtmosphereSystem.cs @@ -1,4 +1,4 @@ -using Content.Client.Atmos.Components; +using Content.Client.Atmos.Components; using Content.Shared.Atmos.Components; using Content.Shared.Atmos.EntitySystems; using Robust.Shared.GameStates; diff --git a/Content.Client/Atmos/EntitySystems/MaxPressureVisualsSystem.cs b/Content.Client/Atmos/EntitySystems/MaxPressureVisualsSystem.cs index 28081214da..e27ac45dac 100644 --- a/Content.Client/Atmos/EntitySystems/MaxPressureVisualsSystem.cs +++ b/Content.Client/Atmos/EntitySystems/MaxPressureVisualsSystem.cs @@ -1,4 +1,4 @@ -using Content.Client.Atmos.Components; +using Content.Client.Atmos.Components; using Content.Shared.Atmos.Components; using Content.Shared.Atmos.EntitySystems; using Content.Shared.Rounding; diff --git a/Content.Client/Atmos/Rotting/RottingSystem.cs b/Content.Client/Atmos/Rotting/RottingSystem.cs index aeda069789..b68209e78d 100644 --- a/Content.Client/Atmos/Rotting/RottingSystem.cs +++ b/Content.Client/Atmos/Rotting/RottingSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Atmos.Rotting; +using Content.Shared.Atmos.Rotting; namespace Content.Client.Atmos.Rotting; diff --git a/Content.Client/Atmos/UI/GasCanisterBoundUserInterface.cs b/Content.Client/Atmos/UI/GasCanisterBoundUserInterface.cs index 56be898a01..a32dd3d9d7 100644 --- a/Content.Client/Atmos/UI/GasCanisterBoundUserInterface.cs +++ b/Content.Client/Atmos/UI/GasCanisterBoundUserInterface.cs @@ -1,4 +1,4 @@ -using Content.Shared.Atmos.Components; +using Content.Shared.Atmos.Components; using Content.Shared.Atmos.Piping.Binary.Components; using Content.Shared.Atmos.Piping.Unary.Components; using Content.Shared.IdentityManagement; diff --git a/Content.Client/Atmos/UI/GasPressureRegulatorBoundUserInterface.cs b/Content.Client/Atmos/UI/GasPressureRegulatorBoundUserInterface.cs index 9d66a9985f..82785fe689 100644 --- a/Content.Client/Atmos/UI/GasPressureRegulatorBoundUserInterface.cs +++ b/Content.Client/Atmos/UI/GasPressureRegulatorBoundUserInterface.cs @@ -1,4 +1,4 @@ -using Content.Shared.Atmos.Piping.Binary.Components; +using Content.Shared.Atmos.Piping.Binary.Components; using Content.Shared.IdentityManagement; using Content.Shared.Localizations; using Robust.Client.UserInterface; diff --git a/Content.Client/Atmos/UI/GasPressureRegulatorWindow.xaml.cs b/Content.Client/Atmos/UI/GasPressureRegulatorWindow.xaml.cs index a7c0570bac..9d4a029784 100644 --- a/Content.Client/Atmos/UI/GasPressureRegulatorWindow.xaml.cs +++ b/Content.Client/Atmos/UI/GasPressureRegulatorWindow.xaml.cs @@ -1,4 +1,4 @@ -using System.Globalization; +using System.Globalization; using Content.Client.UserInterface.Controls; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/Atmos/UI/GasThermomachineBoundUserInterface.cs b/Content.Client/Atmos/UI/GasThermomachineBoundUserInterface.cs index bd5b3954ee..21ca5b8ff4 100644 --- a/Content.Client/Atmos/UI/GasThermomachineBoundUserInterface.cs +++ b/Content.Client/Atmos/UI/GasThermomachineBoundUserInterface.cs @@ -1,4 +1,4 @@ -using Content.Client.Power.EntitySystems; +using Content.Client.Power.EntitySystems; using Content.Shared.Atmos; using Content.Shared.Atmos.Piping.Unary.Components; using Content.Shared.Atmos.Piping.Unary.Systems; diff --git a/Content.Client/Atmos/UI/GasVolumePumpBoundUserInterface.cs b/Content.Client/Atmos/UI/GasVolumePumpBoundUserInterface.cs index 0ef0d60a28..ae213df580 100644 --- a/Content.Client/Atmos/UI/GasVolumePumpBoundUserInterface.cs +++ b/Content.Client/Atmos/UI/GasVolumePumpBoundUserInterface.cs @@ -1,4 +1,4 @@ -using Content.Shared.Atmos.Piping.Binary.Components; +using Content.Shared.Atmos.Piping.Binary.Components; using Content.Shared.IdentityManagement; using Content.Shared.Localizations; using JetBrains.Annotations; diff --git a/Content.Client/Audio/ClientGlobalSoundSystem.cs b/Content.Client/Audio/ClientGlobalSoundSystem.cs index b077c1c30f..d0f3ca41a8 100644 --- a/Content.Client/Audio/ClientGlobalSoundSystem.cs +++ b/Content.Client/Audio/ClientGlobalSoundSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Audio; +using Content.Shared.Audio; using Content.Shared.CCVar; using Content.Shared.GameTicking; using Robust.Shared.Audio; diff --git a/Content.Client/Audio/Midi/MidiFileCollectionManager.cs b/Content.Client/Audio/Midi/MidiFileCollectionManager.cs index 0f8308ed8b..0c9d08a3a6 100644 --- a/Content.Client/Audio/Midi/MidiFileCollectionManager.cs +++ b/Content.Client/Audio/Midi/MidiFileCollectionManager.cs @@ -1,4 +1,4 @@ -using System.IO; +using System.IO; using System.Threading.Tasks; using JetBrains.Annotations; using Robust.Shared.ContentPack; diff --git a/Content.Client/BarSign/Ui/BarSignMenu.xaml.cs b/Content.Client/BarSign/Ui/BarSignMenu.xaml.cs index 0fbd282da8..6d26e7bff9 100644 --- a/Content.Client/BarSign/Ui/BarSignMenu.xaml.cs +++ b/Content.Client/BarSign/Ui/BarSignMenu.xaml.cs @@ -1,4 +1,4 @@ -using Content.Client.UserInterface.Controls; +using Content.Client.UserInterface.Controls; using Content.Shared.BarSign; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/Beam/BeamSystem.cs b/Content.Client/Beam/BeamSystem.cs index 379bc3af83..cd2a2c820b 100644 --- a/Content.Client/Beam/BeamSystem.cs +++ b/Content.Client/Beam/BeamSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Beam; +using Content.Shared.Beam; using Content.Shared.Beam.Components; using Robust.Client.GameObjects; diff --git a/Content.Client/Bql/ToolshedVisualizeEui.cs b/Content.Client/Bql/ToolshedVisualizeEui.cs index ccefc1228d..7b51fe974c 100644 --- a/Content.Client/Bql/ToolshedVisualizeEui.cs +++ b/Content.Client/Bql/ToolshedVisualizeEui.cs @@ -1,4 +1,4 @@ -using Content.Client.Eui; +using Content.Client.Eui; using Content.Shared.Bql; using Content.Shared.Eui; using JetBrains.Annotations; diff --git a/Content.Client/Bql/ToolshedVisualizeWindow.xaml.cs b/Content.Client/Bql/ToolshedVisualizeWindow.xaml.cs index 35a7524a6f..1c8b341e88 100644 --- a/Content.Client/Bql/ToolshedVisualizeWindow.xaml.cs +++ b/Content.Client/Bql/ToolshedVisualizeWindow.xaml.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Robust.Client.AutoGenerated; using Robust.Client.Console; using Robust.Client.UserInterface.Controls; diff --git a/Content.Client/Cargo/UI/CargoOrderRow.xaml.cs b/Content.Client/Cargo/UI/CargoOrderRow.xaml.cs index d2a23b5a2e..fac2bd16ae 100644 --- a/Content.Client/Cargo/UI/CargoOrderRow.xaml.cs +++ b/Content.Client/Cargo/UI/CargoOrderRow.xaml.cs @@ -1,4 +1,4 @@ -using Content.Shared.Cargo; +using Content.Shared.Cargo; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/Cargo/UI/CargoProductRow.xaml.cs b/Content.Client/Cargo/UI/CargoProductRow.xaml.cs index 1c7f791604..f65af1ea0e 100644 --- a/Content.Client/Cargo/UI/CargoProductRow.xaml.cs +++ b/Content.Client/Cargo/UI/CargoProductRow.xaml.cs @@ -1,4 +1,4 @@ -using Content.Shared.Cargo; +using Content.Shared.Cargo; using Content.Shared.Cargo.Prototypes; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; diff --git a/Content.Client/CartridgeLoader/Cartridges/CrewManifestUi.cs b/Content.Client/CartridgeLoader/Cartridges/CrewManifestUi.cs index ed129dc9f6..7b76dd4db0 100644 --- a/Content.Client/CartridgeLoader/Cartridges/CrewManifestUi.cs +++ b/Content.Client/CartridgeLoader/Cartridges/CrewManifestUi.cs @@ -1,4 +1,4 @@ -using Content.Client.UserInterface.Fragments; +using Content.Client.UserInterface.Fragments; using Content.Shared.CartridgeLoader.Cartridges; using Robust.Client.GameObjects; using Robust.Client.UserInterface; diff --git a/Content.Client/CartridgeLoader/Cartridges/LogProbeUi.cs b/Content.Client/CartridgeLoader/Cartridges/LogProbeUi.cs index 183de499a8..fedd99ee4f 100644 --- a/Content.Client/CartridgeLoader/Cartridges/LogProbeUi.cs +++ b/Content.Client/CartridgeLoader/Cartridges/LogProbeUi.cs @@ -1,4 +1,4 @@ -using Content.Client.UserInterface.Fragments; +using Content.Client.UserInterface.Fragments; using Content.Shared.CartridgeLoader; using Content.Shared.CartridgeLoader.Cartridges; using Robust.Client.UserInterface; diff --git a/Content.Client/CartridgeLoader/Cartridges/LogProbeUiEntry.xaml.cs b/Content.Client/CartridgeLoader/Cartridges/LogProbeUiEntry.xaml.cs index 369042d991..38fbcabdb2 100644 --- a/Content.Client/CartridgeLoader/Cartridges/LogProbeUiEntry.xaml.cs +++ b/Content.Client/CartridgeLoader/Cartridges/LogProbeUiEntry.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/CartridgeLoader/Cartridges/LogProbeUiFragment.xaml.cs b/Content.Client/CartridgeLoader/Cartridges/LogProbeUiFragment.xaml.cs index d9569bd11d..3f44f61f1a 100644 --- a/Content.Client/CartridgeLoader/Cartridges/LogProbeUiFragment.xaml.cs +++ b/Content.Client/CartridgeLoader/Cartridges/LogProbeUiFragment.xaml.cs @@ -1,4 +1,4 @@ -using Content.Shared.CartridgeLoader.Cartridges; +using Content.Shared.CartridgeLoader.Cartridges; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/CartridgeLoader/Cartridges/NetProbeUi.cs b/Content.Client/CartridgeLoader/Cartridges/NetProbeUi.cs index 7ea6f46917..2bc0f2ee09 100644 --- a/Content.Client/CartridgeLoader/Cartridges/NetProbeUi.cs +++ b/Content.Client/CartridgeLoader/Cartridges/NetProbeUi.cs @@ -1,4 +1,4 @@ -using Content.Client.UserInterface.Fragments; +using Content.Client.UserInterface.Fragments; using Content.Shared.CartridgeLoader.Cartridges; using Robust.Client.GameObjects; using Robust.Client.UserInterface; diff --git a/Content.Client/CartridgeLoader/Cartridges/NetProbeUiFragment.xaml.cs b/Content.Client/CartridgeLoader/Cartridges/NetProbeUiFragment.xaml.cs index 5300040314..707bc5b6d9 100644 --- a/Content.Client/CartridgeLoader/Cartridges/NetProbeUiFragment.xaml.cs +++ b/Content.Client/CartridgeLoader/Cartridges/NetProbeUiFragment.xaml.cs @@ -1,4 +1,4 @@ -using Content.Shared.CartridgeLoader.Cartridges; +using Content.Shared.CartridgeLoader.Cartridges; using Robust.Client.AutoGenerated; using Robust.Client.Graphics; using Robust.Client.UserInterface.Controls; diff --git a/Content.Client/CartridgeLoader/Cartridges/NotekeeperUi.cs b/Content.Client/CartridgeLoader/Cartridges/NotekeeperUi.cs index da7041f4dd..a8ebe1f6ef 100644 --- a/Content.Client/CartridgeLoader/Cartridges/NotekeeperUi.cs +++ b/Content.Client/CartridgeLoader/Cartridges/NotekeeperUi.cs @@ -1,4 +1,4 @@ -using Content.Client.UserInterface.Fragments; +using Content.Client.UserInterface.Fragments; using Content.Shared.CartridgeLoader; using Content.Shared.CartridgeLoader.Cartridges; using Robust.Client.UserInterface; diff --git a/Content.Client/CartridgeLoader/Cartridges/NotekeeperUiFragment.xaml.cs b/Content.Client/CartridgeLoader/Cartridges/NotekeeperUiFragment.xaml.cs index 2504407fa9..831f55ebb8 100644 --- a/Content.Client/CartridgeLoader/Cartridges/NotekeeperUiFragment.xaml.cs +++ b/Content.Client/CartridgeLoader/Cartridges/NotekeeperUiFragment.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/Chat/TypingIndicator/TypingIndicatorVisualizerSystem.cs b/Content.Client/Chat/TypingIndicator/TypingIndicatorVisualizerSystem.cs index 4e84ce8c10..8fb0a750bb 100644 --- a/Content.Client/Chat/TypingIndicator/TypingIndicatorVisualizerSystem.cs +++ b/Content.Client/Chat/TypingIndicator/TypingIndicatorVisualizerSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Chat.TypingIndicator; +using Content.Shared.Chat.TypingIndicator; using Robust.Client.GameObjects; using Content.Shared.Inventory; diff --git a/Content.Client/Chemistry/Components/SolutionItemStatusComponent.cs b/Content.Client/Chemistry/Components/SolutionItemStatusComponent.cs index 58c5a05894..874b9c6ac0 100644 --- a/Content.Client/Chemistry/Components/SolutionItemStatusComponent.cs +++ b/Content.Client/Chemistry/Components/SolutionItemStatusComponent.cs @@ -1,4 +1,4 @@ -using Content.Client.Chemistry.EntitySystems; +using Content.Client.Chemistry.EntitySystems; using Content.Client.Chemistry.UI; namespace Content.Client.Chemistry.Components; diff --git a/Content.Client/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs b/Content.Client/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs index 3a305ae2e6..580cd658c6 100644 --- a/Content.Client/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs +++ b/Content.Client/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Atmos.Prototypes; using Content.Shared.Body; diff --git a/Content.Client/Chemistry/EntitySystems/InjectorStatusControlSystem.cs b/Content.Client/Chemistry/EntitySystems/InjectorStatusControlSystem.cs index 6a7bf0ac41..515a2baee2 100644 --- a/Content.Client/Chemistry/EntitySystems/InjectorStatusControlSystem.cs +++ b/Content.Client/Chemistry/EntitySystems/InjectorStatusControlSystem.cs @@ -1,4 +1,4 @@ -using Content.Client.Chemistry.UI; +using Content.Client.Chemistry.UI; using Content.Client.Items; using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.EntitySystems; diff --git a/Content.Client/Chemistry/EntitySystems/SolutionItemStatusSystem.cs b/Content.Client/Chemistry/EntitySystems/SolutionItemStatusSystem.cs index ed65577aa7..2b9d9b8659 100644 --- a/Content.Client/Chemistry/EntitySystems/SolutionItemStatusSystem.cs +++ b/Content.Client/Chemistry/EntitySystems/SolutionItemStatusSystem.cs @@ -1,4 +1,4 @@ -using Content.Client.Chemistry.Components; +using Content.Client.Chemistry.Components; using Content.Client.Chemistry.UI; using Content.Client.Items; using Content.Shared.Chemistry.EntitySystems; diff --git a/Content.Client/Chemistry/UI/SolutionStatusControl.cs b/Content.Client/Chemistry/UI/SolutionStatusControl.cs index 8a551a262c..4f4f03e7a1 100644 --- a/Content.Client/Chemistry/UI/SolutionStatusControl.cs +++ b/Content.Client/Chemistry/UI/SolutionStatusControl.cs @@ -1,4 +1,4 @@ -using Content.Client.Chemistry.Components; +using Content.Client.Chemistry.Components; using Content.Client.Chemistry.EntitySystems; using Content.Client.Items.UI; using Content.Client.Message; diff --git a/Content.Client/Chemistry/UI/TransferAmountWindow.xaml.cs b/Content.Client/Chemistry/UI/TransferAmountWindow.xaml.cs index 2d01098213..04109e91f1 100644 --- a/Content.Client/Chemistry/UI/TransferAmountWindow.xaml.cs +++ b/Content.Client/Chemistry/UI/TransferAmountWindow.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/Chemistry/Visualizers/SmokeVisualizerSystem.cs b/Content.Client/Chemistry/Visualizers/SmokeVisualizerSystem.cs index bf847320ee..bcbc217d3c 100644 --- a/Content.Client/Chemistry/Visualizers/SmokeVisualizerSystem.cs +++ b/Content.Client/Chemistry/Visualizers/SmokeVisualizerSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Smoking; +using Content.Shared.Smoking; using Robust.Client.GameObjects; namespace Content.Client.Chemistry.Visualizers; diff --git a/Content.Client/Cloning/UI/AcceptCloningEui.cs b/Content.Client/Cloning/UI/AcceptCloningEui.cs index 99f4568e96..fd2e494a3c 100644 --- a/Content.Client/Cloning/UI/AcceptCloningEui.cs +++ b/Content.Client/Cloning/UI/AcceptCloningEui.cs @@ -1,4 +1,4 @@ -using Content.Client.Eui; +using Content.Client.Eui; using Content.Shared.Cloning; using JetBrains.Annotations; using Robust.Client.Graphics; diff --git a/Content.Client/Clothing/Systems/ChameleonClothingSystem.cs b/Content.Client/Clothing/Systems/ChameleonClothingSystem.cs index bcdb93e7ea..ccd1ebc99f 100644 --- a/Content.Client/Clothing/Systems/ChameleonClothingSystem.cs +++ b/Content.Client/Clothing/Systems/ChameleonClothingSystem.cs @@ -1,4 +1,4 @@ -using Content.Client.PDA; +using Content.Client.PDA; using Content.Shared.Clothing.Components; using Content.Shared.Clothing.EntitySystems; using Robust.Client.GameObjects; diff --git a/Content.Client/Commands/ActionsCommands.cs b/Content.Client/Commands/ActionsCommands.cs index 56749ab1f5..d75ff17a02 100644 --- a/Content.Client/Commands/ActionsCommands.cs +++ b/Content.Client/Commands/ActionsCommands.cs @@ -1,4 +1,4 @@ -using Content.Client.Actions; +using Content.Client.Actions; using Content.Shared.Administration; using Robust.Shared.Console; diff --git a/Content.Client/Configurable/UI/ConfigurationBoundUserInterface.cs b/Content.Client/Configurable/UI/ConfigurationBoundUserInterface.cs index a3845ba1eb..a02fcffb70 100644 --- a/Content.Client/Configurable/UI/ConfigurationBoundUserInterface.cs +++ b/Content.Client/Configurable/UI/ConfigurationBoundUserInterface.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using System.Text.RegularExpressions; using Content.Shared.Configurable; using Robust.Client.UserInterface; diff --git a/Content.Client/Configurable/UI/ConfigurationMenu.cs b/Content.Client/Configurable/UI/ConfigurationMenu.cs index 845c72f954..d34ab45d63 100644 --- a/Content.Client/Configurable/UI/ConfigurationMenu.cs +++ b/Content.Client/Configurable/UI/ConfigurationMenu.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using System.Text.RegularExpressions; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; diff --git a/Content.Client/Cooldown/CooldownGraphic.cs b/Content.Client/Cooldown/CooldownGraphic.cs index da7df88a95..e3a8d3ae93 100644 --- a/Content.Client/Cooldown/CooldownGraphic.cs +++ b/Content.Client/Cooldown/CooldownGraphic.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Robust.Client.Graphics; using Robust.Client.UserInterface; using Robust.Shared.Prototypes; diff --git a/Content.Client/Crayon/UI/CrayonBoundUserInterface.cs b/Content.Client/Crayon/UI/CrayonBoundUserInterface.cs index 99ddb0c9aa..230d8c1595 100644 --- a/Content.Client/Crayon/UI/CrayonBoundUserInterface.cs +++ b/Content.Client/Crayon/UI/CrayonBoundUserInterface.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Shared.Crayon; using Content.Shared.Decals; using Robust.Client.GameObjects; diff --git a/Content.Client/CrewManifest/UI/CrewManifestListing.cs b/Content.Client/CrewManifest/UI/CrewManifestListing.cs index fb28c20ce3..b983c3d884 100644 --- a/Content.Client/CrewManifest/UI/CrewManifestListing.cs +++ b/Content.Client/CrewManifest/UI/CrewManifestListing.cs @@ -1,4 +1,4 @@ -using Content.Shared.CrewManifest; +using Content.Shared.CrewManifest; using Content.Shared.Roles; using Robust.Client.GameObjects; using Robust.Client.UserInterface.Controls; diff --git a/Content.Client/CrewManifest/UI/CrewManifestSection.cs b/Content.Client/CrewManifest/UI/CrewManifestSection.cs index 1e853bf153..f86b2e6781 100644 --- a/Content.Client/CrewManifest/UI/CrewManifestSection.cs +++ b/Content.Client/CrewManifest/UI/CrewManifestSection.cs @@ -1,4 +1,4 @@ -using Content.Shared.CrewManifest; +using Content.Shared.CrewManifest; using Content.Shared.StatusIcon; using Robust.Client.GameObjects; using Robust.Client.UserInterface.Controls; diff --git a/Content.Client/Damage/Systems/StaminaSystem.cs b/Content.Client/Damage/Systems/StaminaSystem.cs index 6eeff69936..1acb22dec1 100644 --- a/Content.Client/Damage/Systems/StaminaSystem.cs +++ b/Content.Client/Damage/Systems/StaminaSystem.cs @@ -1,4 +1,4 @@ -using Content.Client.Stunnable; +using Content.Client.Stunnable; using Content.Shared.Damage.Components; using Content.Shared.Damage.Systems; using Content.Shared.Mobs; diff --git a/Content.Client/DebugMon/DebugMonitorManager.cs b/Content.Client/DebugMon/DebugMonitorManager.cs index c99d83cd3f..9e2b43e32e 100644 --- a/Content.Client/DebugMon/DebugMonitorManager.cs +++ b/Content.Client/DebugMon/DebugMonitorManager.cs @@ -1,4 +1,4 @@ -using Content.Client.Administration.Managers; +using Content.Client.Administration.Managers; using Content.Shared.CCVar; using Robust.Client; using Robust.Client.UserInterface; diff --git a/Content.Client/Decals/ToggleDecalCommand.cs b/Content.Client/Decals/ToggleDecalCommand.cs index f357fa3159..573cfd4b48 100644 --- a/Content.Client/Decals/ToggleDecalCommand.cs +++ b/Content.Client/Decals/ToggleDecalCommand.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Console; +using Robust.Shared.Console; namespace Content.Client.Decals; diff --git a/Content.Client/Decals/UI/PaletteColorPicker.xaml.cs b/Content.Client/Decals/UI/PaletteColorPicker.xaml.cs index 692726732d..8ae272c1c4 100644 --- a/Content.Client/Decals/UI/PaletteColorPicker.xaml.cs +++ b/Content.Client/Decals/UI/PaletteColorPicker.xaml.cs @@ -1,4 +1,4 @@ -using Content.Shared.Decals; +using Content.Shared.Decals; using Robust.Client.AutoGenerated; using Robust.Client.Graphics; using Robust.Client.ResourceManagement; diff --git a/Content.Client/Eui/BaseEui.cs b/Content.Client/Eui/BaseEui.cs index 73f746698a..5c55b3821b 100644 --- a/Content.Client/Eui/BaseEui.cs +++ b/Content.Client/Eui/BaseEui.cs @@ -1,4 +1,4 @@ -using Content.Shared.Eui; +using Content.Shared.Eui; using Robust.Shared.IoC; using Robust.Shared.Network; diff --git a/Content.Client/Eui/EuiManager.cs b/Content.Client/Eui/EuiManager.cs index 0682d6f879..e203eab33b 100644 --- a/Content.Client/Eui/EuiManager.cs +++ b/Content.Client/Eui/EuiManager.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using Content.Shared.Eui; using Robust.Client.GameStates; diff --git a/Content.Client/Explosion/ScatteringGrenadeSystem.cs b/Content.Client/Explosion/ScatteringGrenadeSystem.cs index 38e99fda51..5f9bb7969f 100644 --- a/Content.Client/Explosion/ScatteringGrenadeSystem.cs +++ b/Content.Client/Explosion/ScatteringGrenadeSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Explosion.EntitySystems; +using Content.Shared.Explosion.EntitySystems; namespace Content.Client.Explosion; diff --git a/Content.Client/FeedbackPopup/ClientFeedbackManager.cs b/Content.Client/FeedbackPopup/ClientFeedbackManager.cs index fecaf80773..9be325319f 100644 --- a/Content.Client/FeedbackPopup/ClientFeedbackManager.cs +++ b/Content.Client/FeedbackPopup/ClientFeedbackManager.cs @@ -1,4 +1,4 @@ -using Content.Shared.FeedbackSystem; +using Content.Shared.FeedbackSystem; using Robust.Shared.Prototypes; namespace Content.Client.FeedbackPopup; diff --git a/Content.Client/FeedbackPopup/FeedbackEntry.xaml.cs b/Content.Client/FeedbackPopup/FeedbackEntry.xaml.cs index a3a6cd9b4d..0f130e20da 100644 --- a/Content.Client/FeedbackPopup/FeedbackEntry.xaml.cs +++ b/Content.Client/FeedbackPopup/FeedbackEntry.xaml.cs @@ -1,4 +1,4 @@ -using Content.Shared.FeedbackSystem; +using Content.Shared.FeedbackSystem; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; diff --git a/Content.Client/FeedbackPopup/FeedbackPopupSheetlet.cs b/Content.Client/FeedbackPopup/FeedbackPopupSheetlet.cs index 7f6d513654..cc60e569da 100644 --- a/Content.Client/FeedbackPopup/FeedbackPopupSheetlet.cs +++ b/Content.Client/FeedbackPopup/FeedbackPopupSheetlet.cs @@ -1,4 +1,4 @@ -using Content.Client.Stylesheets; +using Content.Client.Stylesheets; using Robust.Client.Graphics; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; diff --git a/Content.Client/FeedbackPopup/FeedbackPopupWindow.xaml.cs b/Content.Client/FeedbackPopup/FeedbackPopupWindow.xaml.cs index fba32eb0d8..254038f3c5 100644 --- a/Content.Client/FeedbackPopup/FeedbackPopupWindow.xaml.cs +++ b/Content.Client/FeedbackPopup/FeedbackPopupWindow.xaml.cs @@ -1,4 +1,4 @@ -using Content.Client.UserInterface.Controls; +using Content.Client.UserInterface.Controls; using Content.Shared.FeedbackSystem; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface; diff --git a/Content.Client/FlavorText/FlavorText.xaml.cs b/Content.Client/FlavorText/FlavorText.xaml.cs index 91b59046a4..4fa9c6b79f 100644 --- a/Content.Client/FlavorText/FlavorText.xaml.cs +++ b/Content.Client/FlavorText/FlavorText.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface; using Robust.Client.UserInterface.XAML; using Robust.Shared.Utility; diff --git a/Content.Client/Fluids/PuddleDebugOverlaySystem.cs b/Content.Client/Fluids/PuddleDebugOverlaySystem.cs index d6b1e6cd25..e1905a543e 100644 --- a/Content.Client/Fluids/PuddleDebugOverlaySystem.cs +++ b/Content.Client/Fluids/PuddleDebugOverlaySystem.cs @@ -1,4 +1,4 @@ -using System.Collections; +using System.Collections; using Content.Shared.Fluids; using Robust.Client.Graphics; diff --git a/Content.Client/Fluids/UI/AbsorbentItemStatus.xaml.cs b/Content.Client/Fluids/UI/AbsorbentItemStatus.xaml.cs index fd3171a0d5..4eab4030ba 100644 --- a/Content.Client/Fluids/UI/AbsorbentItemStatus.xaml.cs +++ b/Content.Client/Fluids/UI/AbsorbentItemStatus.xaml.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Shared.Fluids; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface; diff --git a/Content.Client/GameTicking/Managers/TitleWindowManager.cs b/Content.Client/GameTicking/Managers/TitleWindowManager.cs index b223070630..67fd001dfb 100644 --- a/Content.Client/GameTicking/Managers/TitleWindowManager.cs +++ b/Content.Client/GameTicking/Managers/TitleWindowManager.cs @@ -1,4 +1,4 @@ -using Content.Shared.CCVar; +using Content.Shared.CCVar; using Robust.Client; using Robust.Client.Graphics; using Robust.Shared; diff --git a/Content.Client/Ghost/Commands/ToggleGhostVisibilityCommand.cs b/Content.Client/Ghost/Commands/ToggleGhostVisibilityCommand.cs index 0d846bdc9a..69a6679774 100644 --- a/Content.Client/Ghost/Commands/ToggleGhostVisibilityCommand.cs +++ b/Content.Client/Ghost/Commands/ToggleGhostVisibilityCommand.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Console; +using Robust.Shared.Console; namespace Content.Client.Ghost.Commands; diff --git a/Content.Client/Ghost/UI/ReturnToBodyEui.cs b/Content.Client/Ghost/UI/ReturnToBodyEui.cs index be755971ea..c7839d254f 100644 --- a/Content.Client/Ghost/UI/ReturnToBodyEui.cs +++ b/Content.Client/Ghost/UI/ReturnToBodyEui.cs @@ -1,4 +1,4 @@ -using Content.Client.Eui; +using Content.Client.Eui; using Content.Shared.Ghost; using JetBrains.Annotations; using Robust.Client.Graphics; diff --git a/Content.Client/GhostKick/GhostKickManager.cs b/Content.Client/GhostKick/GhostKickManager.cs index 16fe700e79..9004e958f0 100644 --- a/Content.Client/GhostKick/GhostKickManager.cs +++ b/Content.Client/GhostKick/GhostKickManager.cs @@ -1,4 +1,4 @@ -using Content.Shared.GhostKick; +using Content.Shared.GhostKick; using Robust.Client; using Robust.Shared; using Robust.Shared.Configuration; diff --git a/Content.Client/GlobalUsings.cs b/Content.Client/GlobalUsings.cs index 6304445d8a..dde2f3c9b4 100644 --- a/Content.Client/GlobalUsings.cs +++ b/Content.Client/GlobalUsings.cs @@ -1,4 +1,4 @@ -// Global usings for Content.Client +// Global usings for Content.Client global using System; global using System.Collections.Generic; diff --git a/Content.Client/Graphics/OverlayResourceCache.cs b/Content.Client/Graphics/OverlayResourceCache.cs index ef7ebfd2b7..0d818abe79 100644 --- a/Content.Client/Graphics/OverlayResourceCache.cs +++ b/Content.Client/Graphics/OverlayResourceCache.cs @@ -1,4 +1,4 @@ -using Robust.Client.Graphics; +using Robust.Client.Graphics; namespace Content.Client.Graphics; diff --git a/Content.Client/Guidebook/Components/GuidebookControlsTestComponent.cs b/Content.Client/Guidebook/Components/GuidebookControlsTestComponent.cs index 10330b292d..c0c0063745 100644 --- a/Content.Client/Guidebook/Components/GuidebookControlsTestComponent.cs +++ b/Content.Client/Guidebook/Components/GuidebookControlsTestComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Client.Guidebook.Components; +namespace Content.Client.Guidebook.Components; /// /// This is used for the guidebook monkey. diff --git a/Content.Client/Hands/UI/HandVirtualItemStatus.xaml.cs b/Content.Client/Hands/UI/HandVirtualItemStatus.xaml.cs index 2ecdbb070c..ce4cda6639 100644 --- a/Content.Client/Hands/UI/HandVirtualItemStatus.xaml.cs +++ b/Content.Client/Hands/UI/HandVirtualItemStatus.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.UserInterface; +using Robust.Client.UserInterface; using Robust.Client.UserInterface.XAML; namespace Content.Client.Hands.UI diff --git a/Content.Client/HealthAnalyzer/UI/HealthAnalyzerBoundUserInterface.cs b/Content.Client/HealthAnalyzer/UI/HealthAnalyzerBoundUserInterface.cs index baea03c892..dc64fca723 100644 --- a/Content.Client/HealthAnalyzer/UI/HealthAnalyzerBoundUserInterface.cs +++ b/Content.Client/HealthAnalyzer/UI/HealthAnalyzerBoundUserInterface.cs @@ -1,4 +1,4 @@ -using Content.Shared.MedicalScanner; +using Content.Shared.MedicalScanner; using JetBrains.Annotations; using Robust.Client.UserInterface; diff --git a/Content.Client/Implants/ChameleonControllerSystem.cs b/Content.Client/Implants/ChameleonControllerSystem.cs index 7db4b37ef2..4b14a94e76 100644 --- a/Content.Client/Implants/ChameleonControllerSystem.cs +++ b/Content.Client/Implants/ChameleonControllerSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Implants; +using Content.Shared.Implants; namespace Content.Client.Implants; diff --git a/Content.Client/Implants/ImplanterSystem.cs b/Content.Client/Implants/ImplanterSystem.cs index 14af16b352..8c8e8e57c6 100644 --- a/Content.Client/Implants/ImplanterSystem.cs +++ b/Content.Client/Implants/ImplanterSystem.cs @@ -1,4 +1,4 @@ -using Content.Client.Implants.UI; +using Content.Client.Implants.UI; using Content.Client.Items; using Content.Shared.Implants; using Content.Shared.Implants.Components; diff --git a/Content.Client/Implants/UI/ChameleonControllerBoundUserInterface.cs b/Content.Client/Implants/UI/ChameleonControllerBoundUserInterface.cs index b8264d5dd6..796b45da5b 100644 --- a/Content.Client/Implants/UI/ChameleonControllerBoundUserInterface.cs +++ b/Content.Client/Implants/UI/ChameleonControllerBoundUserInterface.cs @@ -1,4 +1,4 @@ -using Content.Shared.Implants; +using Content.Shared.Implants; using Content.Shared.Timing.Components; using Content.Shared.Timing.Systems; using JetBrains.Annotations; diff --git a/Content.Client/Info/Info.xaml.cs b/Content.Client/Info/Info.xaml.cs index 1cd8b401e3..df4d8f548d 100644 --- a/Content.Client/Info/Info.xaml.cs +++ b/Content.Client/Info/Info.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/Info/InfoControlsSection.xaml.cs b/Content.Client/Info/InfoControlsSection.xaml.cs index a999373674..d2cddb27a6 100644 --- a/Content.Client/Info/InfoControlsSection.xaml.cs +++ b/Content.Client/Info/InfoControlsSection.xaml.cs @@ -1,4 +1,4 @@ -using System; +using System; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/Info/LinkBanner.cs b/Content.Client/Info/LinkBanner.cs index 7366a8f856..7ed3a7ce8d 100644 --- a/Content.Client/Info/LinkBanner.cs +++ b/Content.Client/Info/LinkBanner.cs @@ -1,4 +1,4 @@ -using Content.Client.Changelog; +using Content.Client.Changelog; using Content.Client.UserInterface.Systems.EscapeMenu; using Content.Client.UserInterface.Systems.Guidebook; using Content.Shared.CCVar; diff --git a/Content.Client/Info/RulesControl.xaml.cs b/Content.Client/Info/RulesControl.xaml.cs index d1228227a7..8a44dffad2 100644 --- a/Content.Client/Info/RulesControl.xaml.cs +++ b/Content.Client/Info/RulesControl.xaml.cs @@ -1,4 +1,4 @@ -using Content.Client.Guidebook; +using Content.Client.Guidebook; using Content.Client.UserInterface.RichText; using Content.Client.UserInterface.Systems.Info; using Content.Shared.Guidebook; diff --git a/Content.Client/Instruments/InstrumentSystem.MidiParsing.cs b/Content.Client/Instruments/InstrumentSystem.MidiParsing.cs index 16aed930f6..cdc3f7b979 100644 --- a/Content.Client/Instruments/InstrumentSystem.MidiParsing.cs +++ b/Content.Client/Instruments/InstrumentSystem.MidiParsing.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Shared.Instruments; using Robust.Shared.Audio.Midi; diff --git a/Content.Client/Instruments/MidiParser/MidiInstrument.cs b/Content.Client/Instruments/MidiParser/MidiInstrument.cs index 93946496eb..c8fde35af0 100644 --- a/Content.Client/Instruments/MidiParser/MidiInstrument.cs +++ b/Content.Client/Instruments/MidiParser/MidiInstrument.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Utility; +using Robust.Shared.Utility; namespace Content.Client.Instruments.MidiParser; diff --git a/Content.Client/Instruments/MidiParser/MidiParser.cs b/Content.Client/Instruments/MidiParser/MidiParser.cs index 0b65e472fc..514b6aaa72 100644 --- a/Content.Client/Instruments/MidiParser/MidiParser.cs +++ b/Content.Client/Instruments/MidiParser/MidiParser.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using System.Text; using Content.Shared.Instruments; diff --git a/Content.Client/Instruments/MidiParser/MidiStreamWrapper.cs b/Content.Client/Instruments/MidiParser/MidiStreamWrapper.cs index 1886417a56..e4754f6b1b 100644 --- a/Content.Client/Instruments/MidiParser/MidiStreamWrapper.cs +++ b/Content.Client/Instruments/MidiParser/MidiStreamWrapper.cs @@ -1,4 +1,4 @@ -using System.IO; +using System.IO; using System.Text; namespace Content.Client.Instruments.MidiParser; diff --git a/Content.Client/Instruments/UI/ChannelItem.xaml.cs b/Content.Client/Instruments/UI/ChannelItem.xaml.cs index bf297af25f..ca43dc71b4 100644 --- a/Content.Client/Instruments/UI/ChannelItem.xaml.cs +++ b/Content.Client/Instruments/UI/ChannelItem.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/Instruments/UI/MinVolumeControl.xaml.cs b/Content.Client/Instruments/UI/MinVolumeControl.xaml.cs index 41fa7dd11e..ef22e8088e 100644 --- a/Content.Client/Instruments/UI/MinVolumeControl.xaml.cs +++ b/Content.Client/Instruments/UI/MinVolumeControl.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface; using Robust.Client.UserInterface.XAML; using Robust.Shared.Input; diff --git a/Content.Client/Interaction/DragDropHelper.cs b/Content.Client/Interaction/DragDropHelper.cs index 162e84eb5f..3f5ebe9d66 100644 --- a/Content.Client/Interaction/DragDropHelper.cs +++ b/Content.Client/Interaction/DragDropHelper.cs @@ -1,4 +1,4 @@ -using Content.Shared.CCVar; +using Content.Shared.CCVar; using Robust.Client.Input; using Robust.Shared.Configuration; using Robust.Shared.Map; diff --git a/Content.Client/Inventory/VirtualItemSystem.cs b/Content.Client/Inventory/VirtualItemSystem.cs index b5632b8fb5..4e6d7e6676 100644 --- a/Content.Client/Inventory/VirtualItemSystem.cs +++ b/Content.Client/Inventory/VirtualItemSystem.cs @@ -1,4 +1,4 @@ -using Content.Client.Hands.UI; +using Content.Client.Hands.UI; using Content.Client.Items; using Content.Shared.Inventory.VirtualItem; diff --git a/Content.Client/Items/ItemStatusMessages.cs b/Content.Client/Items/ItemStatusMessages.cs index 3af02f0a4f..4ff239fbd8 100644 --- a/Content.Client/Items/ItemStatusMessages.cs +++ b/Content.Client/Items/ItemStatusMessages.cs @@ -1,4 +1,4 @@ -using Robust.Client.UserInterface; +using Robust.Client.UserInterface; namespace Content.Client.Items { diff --git a/Content.Client/Items/Systems/ItemSystem.cs b/Content.Client/Items/Systems/ItemSystem.cs index f827e7340e..7649dcef05 100644 --- a/Content.Client/Items/Systems/ItemSystem.cs +++ b/Content.Client/Items/Systems/ItemSystem.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using System.Linq; using Content.Shared.Hands; using Content.Shared.Inventory.Events; diff --git a/Content.Client/Items/UI/PollingItemStatusControl.cs b/Content.Client/Items/UI/PollingItemStatusControl.cs index 39cffb06f6..c98c9dcfc0 100644 --- a/Content.Client/Items/UI/PollingItemStatusControl.cs +++ b/Content.Client/Items/UI/PollingItemStatusControl.cs @@ -1,4 +1,4 @@ -using Robust.Client.UserInterface; +using Robust.Client.UserInterface; using Robust.Shared.Timing; namespace Content.Client.Items.UI; diff --git a/Content.Client/Kitchen/UI/MicrowaveMenu.xaml.cs b/Content.Client/Kitchen/UI/MicrowaveMenu.xaml.cs index 0716a1f5a8..bcb2332e8f 100644 --- a/Content.Client/Kitchen/UI/MicrowaveMenu.xaml.cs +++ b/Content.Client/Kitchen/UI/MicrowaveMenu.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using FancyWindow = Content.Client.UserInterface.Controls.FancyWindow; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/Light/Controls/LightReplacerStatusControl.cs b/Content.Client/Light/Controls/LightReplacerStatusControl.cs index ebca12dd1e..06edd1543d 100644 --- a/Content.Client/Light/Controls/LightReplacerStatusControl.cs +++ b/Content.Client/Light/Controls/LightReplacerStatusControl.cs @@ -1,4 +1,4 @@ -using Content.Client.Message; +using Content.Client.Message; using Content.Client.Stylesheets; using Content.Shared.Light.Components; using Robust.Client.UserInterface; diff --git a/Content.Client/Light/EntitySystems/LightReplacerStatusControlSystem.cs b/Content.Client/Light/EntitySystems/LightReplacerStatusControlSystem.cs index ea52c92f2b..a0f404162b 100644 --- a/Content.Client/Light/EntitySystems/LightReplacerStatusControlSystem.cs +++ b/Content.Client/Light/EntitySystems/LightReplacerStatusControlSystem.cs @@ -1,4 +1,4 @@ -using Content.Client.Items; +using Content.Client.Items; using Content.Client.Light.Controls; using Content.Shared.Light.Components; diff --git a/Content.Client/Lightning/Components/LightningComponent.cs b/Content.Client/Lightning/Components/LightningComponent.cs index 521641c763..e4b987d357 100644 --- a/Content.Client/Lightning/Components/LightningComponent.cs +++ b/Content.Client/Lightning/Components/LightningComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Lightning.Components; +using Content.Shared.Lightning.Components; namespace Content.Client.Lightning.Components; [RegisterComponent] diff --git a/Content.Client/MainMenu/UI/MainMenuControl.xaml.cs b/Content.Client/MainMenu/UI/MainMenuControl.xaml.cs index 3423b23c6c..2de90acde4 100644 --- a/Content.Client/MainMenu/UI/MainMenuControl.xaml.cs +++ b/Content.Client/MainMenu/UI/MainMenuControl.xaml.cs @@ -1,4 +1,4 @@ -using Content.Client.Parallax.Data; +using Content.Client.Parallax.Data; using Robust.Client.AutoGenerated; using Robust.Client.ResourceManagement; using Robust.Client.UserInterface; diff --git a/Content.Client/MapText/MapTextComponent.cs b/Content.Client/MapText/MapTextComponent.cs index f70b3c8dd4..5b0ce12f71 100644 --- a/Content.Client/MapText/MapTextComponent.cs +++ b/Content.Client/MapText/MapTextComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.MapText; +using Content.Shared.MapText; using Robust.Client.Graphics; namespace Content.Client.MapText; diff --git a/Content.Client/MapText/MapTextOverlay.cs b/Content.Client/MapText/MapTextOverlay.cs index 70e708bba8..719e3b0cbe 100644 --- a/Content.Client/MapText/MapTextOverlay.cs +++ b/Content.Client/MapText/MapTextOverlay.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Content.Shared.MapText; using Robust.Client.Graphics; using Robust.Client.ResourceManagement; diff --git a/Content.Client/MapText/MapTextSystem.cs b/Content.Client/MapText/MapTextSystem.cs index 909b72b46d..82e31ce47d 100644 --- a/Content.Client/MapText/MapTextSystem.cs +++ b/Content.Client/MapText/MapTextSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.MapText; +using Content.Shared.MapText; using Robust.Client.Graphics; using Robust.Client.ResourceManagement; using Robust.Client.UserInterface; diff --git a/Content.Client/Mapping/MappingActionsButton.xaml.cs b/Content.Client/Mapping/MappingActionsButton.xaml.cs index 1a2f2c069f..c8f589f13e 100644 --- a/Content.Client/Mapping/MappingActionsButton.xaml.cs +++ b/Content.Client/Mapping/MappingActionsButton.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/Mapping/MappingDoNotMeasure.xaml.cs b/Content.Client/Mapping/MappingDoNotMeasure.xaml.cs index c4cb560234..a45f20248a 100644 --- a/Content.Client/Mapping/MappingDoNotMeasure.xaml.cs +++ b/Content.Client/Mapping/MappingDoNotMeasure.xaml.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/Mapping/MappingManager.cs b/Content.Client/Mapping/MappingManager.cs index 17cc629c59..13bc7cb77f 100644 --- a/Content.Client/Mapping/MappingManager.cs +++ b/Content.Client/Mapping/MappingManager.cs @@ -1,4 +1,4 @@ -using System.IO; +using System.IO; using System.Text; using System.Threading.Tasks; using Content.Shared.Mapping; diff --git a/Content.Client/Mapping/MappingOverlay.cs b/Content.Client/Mapping/MappingOverlay.cs index 026f50450c..0adda6fcc0 100644 --- a/Content.Client/Mapping/MappingOverlay.cs +++ b/Content.Client/Mapping/MappingOverlay.cs @@ -1,4 +1,4 @@ -using Robust.Client.GameObjects; +using Robust.Client.GameObjects; using Robust.Client.Graphics; using Robust.Client.Input; using Robust.Client.Player; diff --git a/Content.Client/Mapping/MappingPrototype.cs b/Content.Client/Mapping/MappingPrototype.cs index eff2dfab15..417a09776b 100644 --- a/Content.Client/Mapping/MappingPrototype.cs +++ b/Content.Client/Mapping/MappingPrototype.cs @@ -1,4 +1,4 @@ -using Content.Shared.Decals; +using Content.Shared.Decals; using Content.Shared.Maps; using Robust.Shared.Prototypes; diff --git a/Content.Client/Mapping/MappingScreen.xaml.cs b/Content.Client/Mapping/MappingScreen.xaml.cs index 1608a1f54e..b1b4c3b1de 100644 --- a/Content.Client/Mapping/MappingScreen.xaml.cs +++ b/Content.Client/Mapping/MappingScreen.xaml.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using System.Numerics; using Content.Client.Decals; using Content.Client.Decals.UI; diff --git a/Content.Client/Mapping/MappingSpawnButton.xaml.cs b/Content.Client/Mapping/MappingSpawnButton.xaml.cs index 29fb884ed6..18ab6db2af 100644 --- a/Content.Client/Mapping/MappingSpawnButton.xaml.cs +++ b/Content.Client/Mapping/MappingSpawnButton.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/MassMedia/Ui/ArticleEditorPanel.xaml.cs b/Content.Client/MassMedia/Ui/ArticleEditorPanel.xaml.cs index 20e23d2359..18886c19e9 100644 --- a/Content.Client/MassMedia/Ui/ArticleEditorPanel.xaml.cs +++ b/Content.Client/MassMedia/Ui/ArticleEditorPanel.xaml.cs @@ -1,4 +1,4 @@ -using Content.Client.Message; +using Content.Client.Message; using Content.Client.RichText; using Content.Client.Stylesheets; using Content.Client.UserInterface.RichText; diff --git a/Content.Client/Materials/MaterialReclaimerSystem.cs b/Content.Client/Materials/MaterialReclaimerSystem.cs index 9fbfa3b384..9674b7c2f4 100644 --- a/Content.Client/Materials/MaterialReclaimerSystem.cs +++ b/Content.Client/Materials/MaterialReclaimerSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Materials; +using Content.Shared.Materials; namespace Content.Client.Materials; diff --git a/Content.Client/Mech/MechAssemblyVisualizerSystem.cs b/Content.Client/Mech/MechAssemblyVisualizerSystem.cs index 958855a186..d73c1388c5 100644 --- a/Content.Client/Mech/MechAssemblyVisualizerSystem.cs +++ b/Content.Client/Mech/MechAssemblyVisualizerSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Mech; +using Content.Shared.Mech; using Robust.Client.GameObjects; namespace Content.Client.Mech; diff --git a/Content.Client/Mech/MechAssemblyVisualsComponent.cs b/Content.Client/Mech/MechAssemblyVisualsComponent.cs index c4cba0aa0a..5b7335e076 100644 --- a/Content.Client/Mech/MechAssemblyVisualsComponent.cs +++ b/Content.Client/Mech/MechAssemblyVisualsComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Client.Mech; +namespace Content.Client.Mech; /// /// This is used for visualizing mech constructions diff --git a/Content.Client/Mech/MechSystem.cs b/Content.Client/Mech/MechSystem.cs index 5320f29aea..965adea621 100644 --- a/Content.Client/Mech/MechSystem.cs +++ b/Content.Client/Mech/MechSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Mech; +using Content.Shared.Mech; using Content.Shared.Mech.Components; using Content.Shared.Mech.EntitySystems; using Robust.Client.GameObjects; diff --git a/Content.Client/Mech/Ui/Equipment/MechGrabberUi.cs b/Content.Client/Mech/Ui/Equipment/MechGrabberUi.cs index 4bb9961fc4..0aa3c8b16b 100644 --- a/Content.Client/Mech/Ui/Equipment/MechGrabberUi.cs +++ b/Content.Client/Mech/Ui/Equipment/MechGrabberUi.cs @@ -1,4 +1,4 @@ -using Content.Client.UserInterface.Fragments; +using Content.Client.UserInterface.Fragments; using Content.Shared.Mech; using Robust.Client.GameObjects; using Robust.Client.UserInterface; diff --git a/Content.Client/Mech/Ui/Equipment/MechGrabberUiFragment.xaml.cs b/Content.Client/Mech/Ui/Equipment/MechGrabberUiFragment.xaml.cs index ad95bf2fbd..41d6e643ee 100644 --- a/Content.Client/Mech/Ui/Equipment/MechGrabberUiFragment.xaml.cs +++ b/Content.Client/Mech/Ui/Equipment/MechGrabberUiFragment.xaml.cs @@ -1,4 +1,4 @@ -using Content.Shared.Mech; +using Content.Shared.Mech; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/Medical/Cryogenics/CryoPodSystem.cs b/Content.Client/Medical/Cryogenics/CryoPodSystem.cs index d24f59579b..e413458f38 100644 --- a/Content.Client/Medical/Cryogenics/CryoPodSystem.cs +++ b/Content.Client/Medical/Cryogenics/CryoPodSystem.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Content.Shared.Medical.Cryogenics; using Robust.Client.GameObjects; diff --git a/Content.Client/MedicalScanner/MedicalScannerComponent.cs b/Content.Client/MedicalScanner/MedicalScannerComponent.cs index 4b3318b49d..9f4fd922ca 100644 --- a/Content.Client/MedicalScanner/MedicalScannerComponent.cs +++ b/Content.Client/MedicalScanner/MedicalScannerComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.MedicalScanner; +using Content.Shared.MedicalScanner; namespace Content.Client.MedicalScanner; diff --git a/Content.Client/Mind/MindSystem.cs b/Content.Client/Mind/MindSystem.cs index c0a50373eb..33667df87a 100644 --- a/Content.Client/Mind/MindSystem.cs +++ b/Content.Client/Mind/MindSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Mind; +using Content.Shared.Mind; namespace Content.Client.Mind; diff --git a/Content.Client/Mobs/Systems/DeathgaspSystem.cs b/Content.Client/Mobs/Systems/DeathgaspSystem.cs index b8dcd03759..80389037e8 100644 --- a/Content.Client/Mobs/Systems/DeathgaspSystem.cs +++ b/Content.Client/Mobs/Systems/DeathgaspSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Mobs; +using Content.Shared.Mobs; namespace Content.Client.Mobs; diff --git a/Content.Client/MouseRotator/MouseRotatorSystem.cs b/Content.Client/MouseRotator/MouseRotatorSystem.cs index cea4c5b0b8..0fe88ff74b 100644 --- a/Content.Client/MouseRotator/MouseRotatorSystem.cs +++ b/Content.Client/MouseRotator/MouseRotatorSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.MouseRotator; +using Content.Shared.MouseRotator; using Robust.Client.Graphics; using Robust.Client.Input; using Robust.Client.Player; diff --git a/Content.Client/NetworkConfigurator/NetworkConfiguratorBoundUserInterface.cs b/Content.Client/NetworkConfigurator/NetworkConfiguratorBoundUserInterface.cs index f85220a926..5ecd91f3bd 100644 --- a/Content.Client/NetworkConfigurator/NetworkConfiguratorBoundUserInterface.cs +++ b/Content.Client/NetworkConfigurator/NetworkConfiguratorBoundUserInterface.cs @@ -1,4 +1,4 @@ -using Content.Client.NetworkConfigurator.Systems; +using Content.Client.NetworkConfigurator.Systems; using Content.Shared.DeviceNetwork; using Robust.Client.GameObjects; using Robust.Client.UserInterface; diff --git a/Content.Client/NetworkConfigurator/NetworkConfiguratorConfigurationMenu.xaml.cs b/Content.Client/NetworkConfigurator/NetworkConfiguratorConfigurationMenu.xaml.cs index 0afda39b1d..73d1967f28 100644 --- a/Content.Client/NetworkConfigurator/NetworkConfiguratorConfigurationMenu.xaml.cs +++ b/Content.Client/NetworkConfigurator/NetworkConfiguratorConfigurationMenu.xaml.cs @@ -1,4 +1,4 @@ -using Content.Client.Stylesheets; +using Content.Client.Stylesheets; using Content.Client.UserInterface.Controls; using Content.Shared.DeviceNetwork; using Robust.Client.AutoGenerated; diff --git a/Content.Client/NetworkConfigurator/NetworkConfiguratorListMenu.xaml.cs b/Content.Client/NetworkConfigurator/NetworkConfiguratorListMenu.xaml.cs index 6294facaee..34532c516f 100644 --- a/Content.Client/NetworkConfigurator/NetworkConfiguratorListMenu.xaml.cs +++ b/Content.Client/NetworkConfigurator/NetworkConfiguratorListMenu.xaml.cs @@ -1,4 +1,4 @@ -using Content.Client.UserInterface.Controls; +using Content.Client.UserInterface.Controls; using Content.Shared.DeviceNetwork; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; diff --git a/Content.Client/NodeContainer/NodeGroupSystem.cs b/Content.Client/NodeContainer/NodeGroupSystem.cs index 200781a274..84331b9879 100644 --- a/Content.Client/NodeContainer/NodeGroupSystem.cs +++ b/Content.Client/NodeContainer/NodeGroupSystem.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using Content.Shared.NodeContainer; using JetBrains.Annotations; diff --git a/Content.Client/NodeContainer/NodeVisCommand.cs b/Content.Client/NodeContainer/NodeVisCommand.cs index 8a3160f757..ba905de42b 100644 --- a/Content.Client/NodeContainer/NodeVisCommand.cs +++ b/Content.Client/NodeContainer/NodeVisCommand.cs @@ -1,4 +1,4 @@ -using Content.Client.Administration.Managers; +using Content.Client.Administration.Managers; using Content.Shared.Administration; using Robust.Shared.Console; diff --git a/Content.Client/NukeOps/WarDeclaratorBoundUserInterface.cs b/Content.Client/NukeOps/WarDeclaratorBoundUserInterface.cs index af7a11319d..6f6a47ebf3 100644 --- a/Content.Client/NukeOps/WarDeclaratorBoundUserInterface.cs +++ b/Content.Client/NukeOps/WarDeclaratorBoundUserInterface.cs @@ -1,4 +1,4 @@ -using Content.Shared.CCVar; +using Content.Shared.CCVar; using Content.Shared.Chat; using Content.Shared.NukeOps; using JetBrains.Annotations; diff --git a/Content.Client/NukeOps/WarDeclaratorWindow.xaml.cs b/Content.Client/NukeOps/WarDeclaratorWindow.xaml.cs index b030badc67..7ac86a17d5 100644 --- a/Content.Client/NukeOps/WarDeclaratorWindow.xaml.cs +++ b/Content.Client/NukeOps/WarDeclaratorWindow.xaml.cs @@ -1,4 +1,4 @@ -using Content.Client.Stylesheets; +using Content.Client.Stylesheets; using Content.Client.UserInterface.Controls; using Content.Shared.NukeOps; using Robust.Client.AutoGenerated; diff --git a/Content.Client/Nutrition/EntitySystems/InfantSystem.cs b/Content.Client/Nutrition/EntitySystems/InfantSystem.cs index d6fef2ddd8..99ddb2fdc5 100644 --- a/Content.Client/Nutrition/EntitySystems/InfantSystem.cs +++ b/Content.Client/Nutrition/EntitySystems/InfantSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Nutrition.AnimalHusbandry; +using Content.Shared.Nutrition.AnimalHusbandry; using Robust.Client.GameObjects; namespace Content.Client.Nutrition.EntitySystems; diff --git a/Content.Client/Options/OptionsVisualizerComponent.cs b/Content.Client/Options/OptionsVisualizerComponent.cs index 87999f381c..dadece1fa0 100644 --- a/Content.Client/Options/OptionsVisualizerComponent.cs +++ b/Content.Client/Options/OptionsVisualizerComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.CCVar; +using Content.Shared.CCVar; namespace Content.Client.Options; diff --git a/Content.Client/Options/OptionsVisualizerSystem.cs b/Content.Client/Options/OptionsVisualizerSystem.cs index 15af9eb08b..25feffbcf2 100644 --- a/Content.Client/Options/OptionsVisualizerSystem.cs +++ b/Content.Client/Options/OptionsVisualizerSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.CCVar; +using Content.Shared.CCVar; using Robust.Client.GameObjects; using Robust.Shared.Configuration; using Robust.Shared.Reflection; diff --git a/Content.Client/Options/UI/OptionDropDown.xaml.cs b/Content.Client/Options/UI/OptionDropDown.xaml.cs index 506e241a06..e038053503 100644 --- a/Content.Client/Options/UI/OptionDropDown.xaml.cs +++ b/Content.Client/Options/UI/OptionDropDown.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface; namespace Content.Client.Options.UI; diff --git a/Content.Client/Options/UI/Tabs/MiscTab.xaml.cs b/Content.Client/Options/UI/Tabs/MiscTab.xaml.cs index 6b1a559c25..13a542875d 100644 --- a/Content.Client/Options/UI/Tabs/MiscTab.xaml.cs +++ b/Content.Client/Options/UI/Tabs/MiscTab.xaml.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Client.UserInterface.Screens; using Content.Shared.CCVar; using Content.Shared.HUD; diff --git a/Content.Client/Orbit/OrbitVisualsSystem.cs b/Content.Client/Orbit/OrbitVisualsSystem.cs index d793c4297c..9f8ddfdb9f 100644 --- a/Content.Client/Orbit/OrbitVisualsSystem.cs +++ b/Content.Client/Orbit/OrbitVisualsSystem.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Content.Shared.Follower.Components; using Robust.Client.Animations; using Robust.Client.GameObjects; diff --git a/Content.Client/PDA/PdaBorderColorComponent.cs b/Content.Client/PDA/PdaBorderColorComponent.cs index f8e81962e4..2add74e1de 100644 --- a/Content.Client/PDA/PdaBorderColorComponent.cs +++ b/Content.Client/PDA/PdaBorderColorComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Client.PDA; +namespace Content.Client.PDA; /// /// Used for specifying the pda windows border colors diff --git a/Content.Client/PDA/PdaNavigationButton.xaml.cs b/Content.Client/PDA/PdaNavigationButton.xaml.cs index 2ad72a29f0..077c730aef 100644 --- a/Content.Client/PDA/PdaNavigationButton.xaml.cs +++ b/Content.Client/PDA/PdaNavigationButton.xaml.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Robust.Client.AutoGenerated; using Robust.Client.Graphics; using Robust.Client.UserInterface.Controls; diff --git a/Content.Client/PDA/PdaProgramItem.xaml.cs b/Content.Client/PDA/PdaProgramItem.xaml.cs index 64dd300994..7a8737017c 100644 --- a/Content.Client/PDA/PdaProgramItem.xaml.cs +++ b/Content.Client/PDA/PdaProgramItem.xaml.cs @@ -1,4 +1,4 @@ -using Content.Shared.CartridgeLoader; +using Content.Shared.CartridgeLoader; using Robust.Client.AutoGenerated; using Robust.Client.Graphics; using Robust.Client.UserInterface.Controls; diff --git a/Content.Client/PDA/PdaSettingsButton.xaml.cs b/Content.Client/PDA/PdaSettingsButton.xaml.cs index f460f60200..8de2edde3e 100644 --- a/Content.Client/PDA/PdaSettingsButton.xaml.cs +++ b/Content.Client/PDA/PdaSettingsButton.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.Graphics; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/PDA/PdaWindow.xaml.cs b/Content.Client/PDA/PdaWindow.xaml.cs index 1c8a24cdb4..2dfad6f4b7 100644 --- a/Content.Client/PDA/PdaWindow.xaml.cs +++ b/Content.Client/PDA/PdaWindow.xaml.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/Parallax/Managers/GeneratedParallaxCache.cs b/Content.Client/Parallax/Managers/GeneratedParallaxCache.cs index 80e7566af3..6aaa46997c 100644 --- a/Content.Client/Parallax/Managers/GeneratedParallaxCache.cs +++ b/Content.Client/Parallax/Managers/GeneratedParallaxCache.cs @@ -1,4 +1,4 @@ -using System.IO; +using System.IO; using System.Threading; using System.Threading.Tasks; using Content.Client.Parallax.Data; diff --git a/Content.Client/Parallax/ParallaxControl.cs b/Content.Client/Parallax/ParallaxControl.cs index 2b32bc263a..a8fd93cdd3 100644 --- a/Content.Client/Parallax/ParallaxControl.cs +++ b/Content.Client/Parallax/ParallaxControl.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Content.Client.Parallax.Data; using Content.Client.Parallax.Managers; using Robust.Client.Graphics; diff --git a/Content.Client/ParticleAccelerator/UI/ParticleAcceleratorBoundUserInterface.cs b/Content.Client/ParticleAccelerator/UI/ParticleAcceleratorBoundUserInterface.cs index 93306f2fd1..3d48f6192a 100644 --- a/Content.Client/ParticleAccelerator/UI/ParticleAcceleratorBoundUserInterface.cs +++ b/Content.Client/ParticleAccelerator/UI/ParticleAcceleratorBoundUserInterface.cs @@ -1,4 +1,4 @@ -using Content.Shared.Singularity.Components; +using Content.Shared.Singularity.Components; using Robust.Client.UserInterface; namespace Content.Client.ParticleAccelerator.UI diff --git a/Content.Client/Physics/Controllers/ConveyorController.cs b/Content.Client/Physics/Controllers/ConveyorController.cs index 20304923a4..3492b9b615 100644 --- a/Content.Client/Physics/Controllers/ConveyorController.cs +++ b/Content.Client/Physics/Controllers/ConveyorController.cs @@ -1,4 +1,4 @@ -using Content.Shared.Physics.Controllers; +using Content.Shared.Physics.Controllers; namespace Content.Client.Physics.Controllers; diff --git a/Content.Client/Players/PlayerSystem.cs b/Content.Client/Players/PlayerSystem.cs index 0b29b1fbbc..ed63a03486 100644 --- a/Content.Client/Players/PlayerSystem.cs +++ b/Content.Client/Players/PlayerSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Players; +using Content.Shared.Players; using Robust.Shared.Player; namespace Content.Client.Players; diff --git a/Content.Client/Players/RateLimiting/PlayerRateLimitManager.cs b/Content.Client/Players/RateLimiting/PlayerRateLimitManager.cs index e79eadd92b..2f41d5e046 100644 --- a/Content.Client/Players/RateLimiting/PlayerRateLimitManager.cs +++ b/Content.Client/Players/RateLimiting/PlayerRateLimitManager.cs @@ -1,4 +1,4 @@ -using Content.Shared.Players.RateLimiting; +using Content.Shared.Players.RateLimiting; using Robust.Shared.Player; namespace Content.Client.Players.RateLimiting; diff --git a/Content.Client/PneumaticCannon/PneumaticCannonSystem.cs b/Content.Client/PneumaticCannon/PneumaticCannonSystem.cs index 907196b431..afc92172b3 100644 --- a/Content.Client/PneumaticCannon/PneumaticCannonSystem.cs +++ b/Content.Client/PneumaticCannon/PneumaticCannonSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.PneumaticCannon; +using Content.Shared.PneumaticCannon; namespace Content.Client.PneumaticCannon; diff --git a/Content.Client/Pointing/Components/RoguePointingArrowComponent.cs b/Content.Client/Pointing/Components/RoguePointingArrowComponent.cs index 2d1a101d9f..e88e1d83d9 100644 --- a/Content.Client/Pointing/Components/RoguePointingArrowComponent.cs +++ b/Content.Client/Pointing/Components/RoguePointingArrowComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Pointing.Components; +using Content.Shared.Pointing.Components; using Robust.Client.GameObjects; using Robust.Shared.GameObjects; using Robust.Shared.IoC; diff --git a/Content.Client/Points/PointSystem.cs b/Content.Client/Points/PointSystem.cs index 0a59efa29c..8616e6859c 100644 --- a/Content.Client/Points/PointSystem.cs +++ b/Content.Client/Points/PointSystem.cs @@ -1,4 +1,4 @@ -using Content.Client.CharacterInfo; +using Content.Client.CharacterInfo; using Content.Client.Message; using Content.Shared.Points; using Robust.Client.UserInterface; diff --git a/Content.Client/Power/APC/UI/ApcMenu.xaml.cs b/Content.Client/Power/APC/UI/ApcMenu.xaml.cs index df45853bfb..35b51f10c7 100644 --- a/Content.Client/Power/APC/UI/ApcMenu.xaml.cs +++ b/Content.Client/Power/APC/UI/ApcMenu.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.XAML; using Robust.Client.GameObjects; using Robust.Shared.IoC; diff --git a/Content.Client/Power/Battery/BatteryBoundUserInterface.cs b/Content.Client/Power/Battery/BatteryBoundUserInterface.cs index 09b1f2ca16..5f765ae1c5 100644 --- a/Content.Client/Power/Battery/BatteryBoundUserInterface.cs +++ b/Content.Client/Power/Battery/BatteryBoundUserInterface.cs @@ -1,4 +1,4 @@ -using Content.Client.UserInterface; +using Content.Client.UserInterface; using Content.Shared.Power; using JetBrains.Annotations; using Robust.Client.Timing; diff --git a/Content.Client/Power/Battery/BatteryMenu.xaml.cs b/Content.Client/Power/Battery/BatteryMenu.xaml.cs index 523aa901ae..df3f15632f 100644 --- a/Content.Client/Power/Battery/BatteryMenu.xaml.cs +++ b/Content.Client/Power/Battery/BatteryMenu.xaml.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using Content.Client.Stylesheets; using Content.Client.UserInterface.Controls; using Content.Shared.Power; diff --git a/Content.Client/Power/Components/ApcPowerReceiverComponent.cs b/Content.Client/Power/Components/ApcPowerReceiverComponent.cs index 7a02ce7536..a37a0f948e 100644 --- a/Content.Client/Power/Components/ApcPowerReceiverComponent.cs +++ b/Content.Client/Power/Components/ApcPowerReceiverComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Power.Components; +using Content.Shared.Power.Components; namespace Content.Client.Power.Components; diff --git a/Content.Client/Power/Generator/GeneratorWindow.xaml.cs b/Content.Client/Power/Generator/GeneratorWindow.xaml.cs index b33615ee0e..d77f3bf7de 100644 --- a/Content.Client/Power/Generator/GeneratorWindow.xaml.cs +++ b/Content.Client/Power/Generator/GeneratorWindow.xaml.cs @@ -1,4 +1,4 @@ -using Content.Client.DoAfter; +using Content.Client.DoAfter; using Content.Client.UserInterface.Controls; using Content.Shared.Power.Generator; using Robust.Client.AutoGenerated; diff --git a/Content.Client/Power/Generator/PortableGeneratorBoundUserInterface.cs b/Content.Client/Power/Generator/PortableGeneratorBoundUserInterface.cs index 9fa3b0c68f..51404f8f71 100644 --- a/Content.Client/Power/Generator/PortableGeneratorBoundUserInterface.cs +++ b/Content.Client/Power/Generator/PortableGeneratorBoundUserInterface.cs @@ -1,4 +1,4 @@ -using Content.Shared.Power.Generator; +using Content.Shared.Power.Generator; using JetBrains.Annotations; using Robust.Client.GameObjects; using Robust.Client.UserInterface; diff --git a/Content.Client/Power/PowerCharge/PowerChargeBoundUserInterface.cs b/Content.Client/Power/PowerCharge/PowerChargeBoundUserInterface.cs index 7a36b8ddf5..ada6e1a16f 100644 --- a/Content.Client/Power/PowerCharge/PowerChargeBoundUserInterface.cs +++ b/Content.Client/Power/PowerCharge/PowerChargeBoundUserInterface.cs @@ -1,4 +1,4 @@ -using Content.Shared.Power; +using Content.Shared.Power; using Robust.Client.UserInterface; namespace Content.Client.Power.PowerCharge; diff --git a/Content.Client/Power/PowerCharge/PowerChargeComponent.cs b/Content.Client/Power/PowerCharge/PowerChargeComponent.cs index ab5baa4e2f..0b397e8fd7 100644 --- a/Content.Client/Power/PowerCharge/PowerChargeComponent.cs +++ b/Content.Client/Power/PowerCharge/PowerChargeComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Power; +using Content.Shared.Power; namespace Content.Client.Power.PowerCharge; diff --git a/Content.Client/Power/PowerCharge/PowerChargeWindow.xaml.cs b/Content.Client/Power/PowerCharge/PowerChargeWindow.xaml.cs index 5423910b7a..14f23bd8e8 100644 --- a/Content.Client/Power/PowerCharge/PowerChargeWindow.xaml.cs +++ b/Content.Client/Power/PowerCharge/PowerChargeWindow.xaml.cs @@ -1,4 +1,4 @@ -using Content.Client.Stylesheets.Palette; +using Content.Client.Stylesheets.Palette; using Content.Client.UserInterface.Controls; using Content.Shared.Power; using Robust.Client.AutoGenerated; diff --git a/Content.Client/Power/SMES/SmesSystem.cs b/Content.Client/Power/SMES/SmesSystem.cs index 66fcf4e06e..0b28e17007 100644 --- a/Content.Client/Power/SMES/SmesSystem.cs +++ b/Content.Client/Power/SMES/SmesSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Power; +using Content.Shared.Power; using Content.Shared.SMES; using Robust.Client.GameObjects; diff --git a/Content.Client/RatKing/RatKingSystem.cs b/Content.Client/RatKing/RatKingSystem.cs index 31b02fd5c3..1a5e812dfb 100644 --- a/Content.Client/RatKing/RatKingSystem.cs +++ b/Content.Client/RatKing/RatKingSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.RatKing; +using Content.Shared.RatKing; namespace Content.Client.RatKing; diff --git a/Content.Client/Replay/ReplayToggleScreenshotModeCommand.cs b/Content.Client/Replay/ReplayToggleScreenshotModeCommand.cs index 19c591dd62..b6711eae9b 100644 --- a/Content.Client/Replay/ReplayToggleScreenshotModeCommand.cs +++ b/Content.Client/Replay/ReplayToggleScreenshotModeCommand.cs @@ -1,4 +1,4 @@ -using Content.Client.UserInterface.Systems.Chat; +using Content.Client.UserInterface.Systems.Chat; using Content.Shared.Chat; using Robust.Client.Replays.Commands; using Robust.Client.Replays.UI; diff --git a/Content.Client/Replay/UI/Loading/ReplayLoadingFailed.cs b/Content.Client/Replay/UI/Loading/ReplayLoadingFailed.cs index 8180647e3c..e00307036c 100644 --- a/Content.Client/Replay/UI/Loading/ReplayLoadingFailed.cs +++ b/Content.Client/Replay/UI/Loading/ReplayLoadingFailed.cs @@ -1,4 +1,4 @@ -using Content.Client.Stylesheets; +using Content.Client.Stylesheets; using Robust.Client.State; using Robust.Client.UserInterface; using Robust.Shared.Utility; diff --git a/Content.Client/Replay/UI/Loading/ReplayLoadingFailedControl.xaml.cs b/Content.Client/Replay/UI/Loading/ReplayLoadingFailedControl.xaml.cs index 088c9a291a..4f74a7313f 100644 --- a/Content.Client/Replay/UI/Loading/ReplayLoadingFailedControl.xaml.cs +++ b/Content.Client/Replay/UI/Loading/ReplayLoadingFailedControl.xaml.cs @@ -1,4 +1,4 @@ -using Content.Client.Stylesheets; +using Content.Client.Stylesheets; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; diff --git a/Content.Client/Research/ResearchSystem.cs b/Content.Client/Research/ResearchSystem.cs index 46801bf5e0..7a8f31c424 100644 --- a/Content.Client/Research/ResearchSystem.cs +++ b/Content.Client/Research/ResearchSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Research.Systems; +using Content.Shared.Research.Systems; namespace Content.Client.Research; diff --git a/Content.Client/Research/UI/TechnologyCardControl.xaml.cs b/Content.Client/Research/UI/TechnologyCardControl.xaml.cs index 292ed0ebe0..21f03d8ee4 100644 --- a/Content.Client/Research/UI/TechnologyCardControl.xaml.cs +++ b/Content.Client/Research/UI/TechnologyCardControl.xaml.cs @@ -1,4 +1,4 @@ -using Content.Shared.Research.Prototypes; +using Content.Shared.Research.Prototypes; using Robust.Client.AutoGenerated; using Robust.Client.GameObjects; using Robust.Client.UserInterface; diff --git a/Content.Client/Revenant/CorporealSystem.cs b/Content.Client/Revenant/CorporealSystem.cs index f22e1b61d0..b385310a29 100644 --- a/Content.Client/Revenant/CorporealSystem.cs +++ b/Content.Client/Revenant/CorporealSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Revenant.EntitySystems; +using Content.Shared.Revenant.EntitySystems; namespace Content.Client.Revenant; diff --git a/Content.Client/Revenant/RevenantOverloadedLightsSystem.cs b/Content.Client/Revenant/RevenantOverloadedLightsSystem.cs index 4716f3f9e8..7801894d1a 100644 --- a/Content.Client/Revenant/RevenantOverloadedLightsSystem.cs +++ b/Content.Client/Revenant/RevenantOverloadedLightsSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Revenant.Components; +using Content.Shared.Revenant.Components; using Content.Shared.Revenant.EntitySystems; using Robust.Client.GameObjects; diff --git a/Content.Client/Revolutionary/UI/DeconvertedEui.cs b/Content.Client/Revolutionary/UI/DeconvertedEui.cs index 33495f8a97..1cef39607e 100644 --- a/Content.Client/Revolutionary/UI/DeconvertedEui.cs +++ b/Content.Client/Revolutionary/UI/DeconvertedEui.cs @@ -1,4 +1,4 @@ -using Content.Client.Eui; +using Content.Client.Eui; namespace Content.Client.Revolutionary.UI; diff --git a/Content.Client/RichText/UserFormattableTags.cs b/Content.Client/RichText/UserFormattableTags.cs index 302394c384..4e7472e701 100644 --- a/Content.Client/RichText/UserFormattableTags.cs +++ b/Content.Client/RichText/UserFormattableTags.cs @@ -1,4 +1,4 @@ -using Content.Client.UserInterface.RichText; +using Content.Client.UserInterface.RichText; using Robust.Client.UserInterface.RichText; namespace Content.Client.RichText; diff --git a/Content.Client/Roles/RoleSystem.cs b/Content.Client/Roles/RoleSystem.cs index 4417eff4bc..39534a5b21 100644 --- a/Content.Client/Roles/RoleSystem.cs +++ b/Content.Client/Roles/RoleSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Roles; +using Content.Shared.Roles; namespace Content.Client.Roles; diff --git a/Content.Client/SSDIndicator/SSDIndicatorSystem.cs b/Content.Client/SSDIndicator/SSDIndicatorSystem.cs index 7e7c73f43c..bfe4d41361 100644 --- a/Content.Client/SSDIndicator/SSDIndicatorSystem.cs +++ b/Content.Client/SSDIndicator/SSDIndicatorSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.CCVar; +using Content.Shared.CCVar; using Content.Shared.Mind.Components; using Content.Shared.Mobs.Systems; using Content.Shared.NPC; diff --git a/Content.Client/Security/Ui/GenpopLockerMenu.xaml.cs b/Content.Client/Security/Ui/GenpopLockerMenu.xaml.cs index 138c4c822b..db29a0ed5d 100644 --- a/Content.Client/Security/Ui/GenpopLockerMenu.xaml.cs +++ b/Content.Client/Security/Ui/GenpopLockerMenu.xaml.cs @@ -1,4 +1,4 @@ -using Content.Client.Message; +using Content.Client.Message; using Content.Client.UserInterface.Controls; using Content.Shared.Access.Components; using Content.Shared.CCVar; diff --git a/Content.Client/SensorMonitoring/SensorMonitoringWindow.xaml.cs b/Content.Client/SensorMonitoring/SensorMonitoringWindow.xaml.cs index 16115ba507..4356e7615d 100644 --- a/Content.Client/SensorMonitoring/SensorMonitoringWindow.xaml.cs +++ b/Content.Client/SensorMonitoring/SensorMonitoringWindow.xaml.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using System.Numerics; using Content.Client.Computer; using Content.Client.Stylesheets; diff --git a/Content.Client/Silicons/Borgs/BorgSelectTypeMenu.xaml.cs b/Content.Client/Silicons/Borgs/BorgSelectTypeMenu.xaml.cs index 6336321716..e1ff5b9fa5 100644 --- a/Content.Client/Silicons/Borgs/BorgSelectTypeMenu.xaml.cs +++ b/Content.Client/Silicons/Borgs/BorgSelectTypeMenu.xaml.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Client.UserInterface.Controls; using Content.Client.UserInterface.Systems.Guidebook; using Content.Shared.Guidebook; diff --git a/Content.Client/Silicons/Borgs/BorgSelectTypeUserInterface.cs b/Content.Client/Silicons/Borgs/BorgSelectTypeUserInterface.cs index 69a55dd38b..bbccb5460e 100644 --- a/Content.Client/Silicons/Borgs/BorgSelectTypeUserInterface.cs +++ b/Content.Client/Silicons/Borgs/BorgSelectTypeUserInterface.cs @@ -1,4 +1,4 @@ -using Content.Shared.Silicons.Borgs.Components; +using Content.Shared.Silicons.Borgs.Components; using JetBrains.Annotations; using Robust.Client.UserInterface; diff --git a/Content.Client/Silicons/Borgs/BorgSwitchableTypeSystem.cs b/Content.Client/Silicons/Borgs/BorgSwitchableTypeSystem.cs index 00f19bc091..2e071f91ad 100644 --- a/Content.Client/Silicons/Borgs/BorgSwitchableTypeSystem.cs +++ b/Content.Client/Silicons/Borgs/BorgSwitchableTypeSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Movement.Components; +using Content.Shared.Movement.Components; using Content.Shared.Silicons.Borgs; using Content.Shared.Silicons.Borgs.Components; using Robust.Client.GameObjects; diff --git a/Content.Client/Silicons/Borgs/BorgSystem.Battery.cs b/Content.Client/Silicons/Borgs/BorgSystem.Battery.cs index 6b946f9cf8..a50a47a212 100644 --- a/Content.Client/Silicons/Borgs/BorgSystem.Battery.cs +++ b/Content.Client/Silicons/Borgs/BorgSystem.Battery.cs @@ -1,4 +1,4 @@ -using Content.Shared.PowerCell.Components; +using Content.Shared.PowerCell.Components; using Content.Shared.Silicons.Borgs.Components; using Robust.Shared.Player; diff --git a/Content.Client/Silicons/Borgs/BorgSystem.cs b/Content.Client/Silicons/Borgs/BorgSystem.cs index 647e4d3ec7..af14ef7517 100644 --- a/Content.Client/Silicons/Borgs/BorgSystem.cs +++ b/Content.Client/Silicons/Borgs/BorgSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Alert; +using Content.Shared.Alert; using Content.Shared.Mobs; using Content.Shared.Power.EntitySystems; using Content.Shared.PowerCell; diff --git a/Content.Client/Silicons/Bots/HugBotSystem.cs b/Content.Client/Silicons/Bots/HugBotSystem.cs index b40fe51974..6bd4caf9ff 100644 --- a/Content.Client/Silicons/Bots/HugBotSystem.cs +++ b/Content.Client/Silicons/Bots/HugBotSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Silicons.Bots; +using Content.Shared.Silicons.Bots; namespace Content.Client.Silicons.Bots; diff --git a/Content.Client/Silicons/Laws/SiliconLawEditUi/SiliconLawContainer.xaml.cs b/Content.Client/Silicons/Laws/SiliconLawEditUi/SiliconLawContainer.xaml.cs index b07e53d225..12c8a677c5 100644 --- a/Content.Client/Silicons/Laws/SiliconLawEditUi/SiliconLawContainer.xaml.cs +++ b/Content.Client/Silicons/Laws/SiliconLawEditUi/SiliconLawContainer.xaml.cs @@ -1,4 +1,4 @@ -using Content.Shared.Silicons.Laws; +using Content.Shared.Silicons.Laws; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/Silicons/Laws/SiliconLawEditUi/SiliconLawEui.cs b/Content.Client/Silicons/Laws/SiliconLawEditUi/SiliconLawEui.cs index 03c74032f7..5960582e5a 100644 --- a/Content.Client/Silicons/Laws/SiliconLawEditUi/SiliconLawEui.cs +++ b/Content.Client/Silicons/Laws/SiliconLawEditUi/SiliconLawEui.cs @@ -1,4 +1,4 @@ -using Content.Client.Eui; +using Content.Client.Eui; using Content.Shared.Eui; using Content.Shared.Silicons.Laws; diff --git a/Content.Client/Silicons/Laws/SiliconLawEditUi/SiliconLawUi.xaml.cs b/Content.Client/Silicons/Laws/SiliconLawEditUi/SiliconLawUi.xaml.cs index 372961ea9a..27cee84f64 100644 --- a/Content.Client/Silicons/Laws/SiliconLawEditUi/SiliconLawUi.xaml.cs +++ b/Content.Client/Silicons/Laws/SiliconLawEditUi/SiliconLawUi.xaml.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Client.UserInterface.Controls; using Content.Shared.FixedPoint; using Content.Shared.Silicons.Laws; diff --git a/Content.Client/Silicons/Laws/SiliconLawSystem.cs b/Content.Client/Silicons/Laws/SiliconLawSystem.cs index 34ca7b86ff..8735043ee9 100644 --- a/Content.Client/Silicons/Laws/SiliconLawSystem.cs +++ b/Content.Client/Silicons/Laws/SiliconLawSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Silicons.Laws; +using Content.Shared.Silicons.Laws; namespace Content.Client.Silicons.Laws; diff --git a/Content.Client/Singularity/Systems/EmitterSystem.cs b/Content.Client/Singularity/Systems/EmitterSystem.cs index 8516bdb0dc..9f39fe3bc4 100644 --- a/Content.Client/Singularity/Systems/EmitterSystem.cs +++ b/Content.Client/Singularity/Systems/EmitterSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Singularity.Components; +using Content.Shared.Singularity.Components; using Content.Shared.Singularity.EntitySystems; using Robust.Client.GameObjects; diff --git a/Content.Client/Singularity/Systems/SingularitySystem.cs b/Content.Client/Singularity/Systems/SingularitySystem.cs index 366a1de671..3e209c6de9 100644 --- a/Content.Client/Singularity/Systems/SingularitySystem.cs +++ b/Content.Client/Singularity/Systems/SingularitySystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Singularity; +using Content.Shared.Singularity; using Content.Shared.Singularity.Components; using Content.Shared.Singularity.EntitySystems; using Robust.Client.GameObjects; diff --git a/Content.Client/Sound/EmitSoundSystem.cs b/Content.Client/Sound/EmitSoundSystem.cs index 9d7188d0d1..3c0a5cfef9 100644 --- a/Content.Client/Sound/EmitSoundSystem.cs +++ b/Content.Client/Sound/EmitSoundSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Sound; +using Content.Shared.Sound; namespace Content.Client.Sound; diff --git a/Content.Client/Sprite/SimpleSpriteOverlaySystem.cs b/Content.Client/Sprite/SimpleSpriteOverlaySystem.cs index 570a682830..59cffaa1a0 100644 --- a/Content.Client/Sprite/SimpleSpriteOverlaySystem.cs +++ b/Content.Client/Sprite/SimpleSpriteOverlaySystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Sprite; +using Content.Shared.Sprite; using Robust.Client.GameObjects; namespace Content.Client.Sprite; diff --git a/Content.Client/StationRecords/GeneralStationRecordConsoleSystem.cs b/Content.Client/StationRecords/GeneralStationRecordConsoleSystem.cs index 2c769c7ec4..3e2e8dbd3b 100644 --- a/Content.Client/StationRecords/GeneralStationRecordConsoleSystem.cs +++ b/Content.Client/StationRecords/GeneralStationRecordConsoleSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.StationRecords; +using Content.Shared.StationRecords; using Content.Shared.StationRecords.Components; using Content.Shared.StationRecords.Systems; diff --git a/Content.Client/Storage/Components/StorageContainerVisualsComponent.cs b/Content.Client/Storage/Components/StorageContainerVisualsComponent.cs index 9ef6c65e89..08e8139e1f 100644 --- a/Content.Client/Storage/Components/StorageContainerVisualsComponent.cs +++ b/Content.Client/Storage/Components/StorageContainerVisualsComponent.cs @@ -1,4 +1,4 @@ -using Content.Client.Chemistry.Visualizers; +using Content.Client.Chemistry.Visualizers; using Content.Shared.Chemistry.Components; namespace Content.Client.Storage.Components; diff --git a/Content.Client/Storage/Systems/EntityStorageSystem.cs b/Content.Client/Storage/Systems/EntityStorageSystem.cs index e05e370922..c84d7fd8ce 100644 --- a/Content.Client/Storage/Systems/EntityStorageSystem.cs +++ b/Content.Client/Storage/Systems/EntityStorageSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Storage.EntitySystems; +using Content.Shared.Storage.EntitySystems; namespace Content.Client.Storage.Systems; diff --git a/Content.Client/Storage/Systems/StorageContainerVisualsSystem.cs b/Content.Client/Storage/Systems/StorageContainerVisualsSystem.cs index c5b19651da..f1fd359607 100644 --- a/Content.Client/Storage/Systems/StorageContainerVisualsSystem.cs +++ b/Content.Client/Storage/Systems/StorageContainerVisualsSystem.cs @@ -1,4 +1,4 @@ -using Content.Client.Storage.Components; +using Content.Client.Storage.Components; using Content.Shared.Rounding; using Content.Shared.Storage; using Robust.Client.GameObjects; diff --git a/Content.Client/Store/StoreSystem.cs b/Content.Client/Store/StoreSystem.cs index 3ab2f61aca..6789146399 100644 --- a/Content.Client/Store/StoreSystem.cs +++ b/Content.Client/Store/StoreSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Store; +using Content.Shared.Store; namespace Content.Client.Store; diff --git a/Content.Client/Stylesheets/BaseStylesheet.Fonts.cs b/Content.Client/Stylesheets/BaseStylesheet.Fonts.cs index 7ea15fd54e..38f14d1075 100644 --- a/Content.Client/Stylesheets/BaseStylesheet.Fonts.cs +++ b/Content.Client/Stylesheets/BaseStylesheet.Fonts.cs @@ -1,4 +1,4 @@ -using Content.Client.Stylesheets.Fonts; +using Content.Client.Stylesheets.Fonts; using Robust.Client.ResourceManagement; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; diff --git a/Content.Client/Stylesheets/BaseStylesheet.Resources.cs b/Content.Client/Stylesheets/BaseStylesheet.Resources.cs index 96e260a17a..6cf5400c8e 100644 --- a/Content.Client/Stylesheets/BaseStylesheet.Resources.cs +++ b/Content.Client/Stylesheets/BaseStylesheet.Resources.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using Robust.Client.ResourceManagement; using Robust.Shared.Utility; diff --git a/Content.Client/Stylesheets/BaseStylesheet.Sheetlets.cs b/Content.Client/Stylesheets/BaseStylesheet.Sheetlets.cs index 0e219fdbd7..694e26834a 100644 --- a/Content.Client/Stylesheets/BaseStylesheet.Sheetlets.cs +++ b/Content.Client/Stylesheets/BaseStylesheet.Sheetlets.cs @@ -1,4 +1,4 @@ -using Robust.Client.UserInterface; +using Robust.Client.UserInterface; namespace Content.Client.Stylesheets; diff --git a/Content.Client/Stylesheets/BaseStylesheet.Textures.cs b/Content.Client/Stylesheets/BaseStylesheet.Textures.cs index a951d88373..6a70522e1d 100644 --- a/Content.Client/Stylesheets/BaseStylesheet.Textures.cs +++ b/Content.Client/Stylesheets/BaseStylesheet.Textures.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using Robust.Client.Graphics; using Robust.Client.ResourceManagement; using Robust.Shared.Utility; diff --git a/Content.Client/Stylesheets/BaseStylesheet.cs b/Content.Client/Stylesheets/BaseStylesheet.cs index 6c12dfd7e3..a311a79904 100644 --- a/Content.Client/Stylesheets/BaseStylesheet.cs +++ b/Content.Client/Stylesheets/BaseStylesheet.cs @@ -1,4 +1,4 @@ -namespace Content.Client.Stylesheets; +namespace Content.Client.Stylesheets; public abstract partial class BaseStylesheet { diff --git a/Content.Client/Stylesheets/Colorspace/ColorExtensions.cs b/Content.Client/Stylesheets/Colorspace/ColorExtensions.cs index 6af9308bbc..33ec5f5898 100644 --- a/Content.Client/Stylesheets/Colorspace/ColorExtensions.cs +++ b/Content.Client/Stylesheets/Colorspace/ColorExtensions.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using JetBrains.Annotations; using Robust.Shared.Utility; diff --git a/Content.Client/Stylesheets/CommonSheetletAttribute.cs b/Content.Client/Stylesheets/CommonSheetletAttribute.cs index 1fdf78a502..4d7e8318a2 100644 --- a/Content.Client/Stylesheets/CommonSheetletAttribute.cs +++ b/Content.Client/Stylesheets/CommonSheetletAttribute.cs @@ -1,4 +1,4 @@ -using JetBrains.Annotations; +using JetBrains.Annotations; namespace Content.Client.Stylesheets; diff --git a/Content.Client/Stylesheets/Fonts/NotoFontFamilyStack.cs b/Content.Client/Stylesheets/Fonts/NotoFontFamilyStack.cs index 9239e5d1a1..99f2027d6f 100644 --- a/Content.Client/Stylesheets/Fonts/NotoFontFamilyStack.cs +++ b/Content.Client/Stylesheets/Fonts/NotoFontFamilyStack.cs @@ -1,4 +1,4 @@ -using Content.Client.Resources; +using Content.Client.Resources; using JetBrains.Annotations; using Robust.Client.Graphics; using Robust.Client.ResourceManagement; diff --git a/Content.Client/Stylesheets/ISheetletConfig.cs b/Content.Client/Stylesheets/ISheetletConfig.cs index 277006c6f8..7faf7b7723 100644 --- a/Content.Client/Stylesheets/ISheetletConfig.cs +++ b/Content.Client/Stylesheets/ISheetletConfig.cs @@ -1,4 +1,4 @@ -namespace Content.Client.Stylesheets; +namespace Content.Client.Stylesheets; public interface ISheetletConfig : IStyleResources { diff --git a/Content.Client/Stylesheets/IStyleResources.cs b/Content.Client/Stylesheets/IStyleResources.cs index ed842ace81..ce4aa35056 100644 --- a/Content.Client/Stylesheets/IStyleResources.cs +++ b/Content.Client/Stylesheets/IStyleResources.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using Robust.Client.Graphics; using Robust.Client.ResourceManagement; using Robust.Shared.Utility; diff --git a/Content.Client/Stylesheets/PalettedStylesheet.Palettes.cs b/Content.Client/Stylesheets/PalettedStylesheet.Palettes.cs index e8fe7174f4..5b475f4381 100644 --- a/Content.Client/Stylesheets/PalettedStylesheet.Palettes.cs +++ b/Content.Client/Stylesheets/PalettedStylesheet.Palettes.cs @@ -1,4 +1,4 @@ -using Content.Client.Stylesheets.Palette; +using Content.Client.Stylesheets.Palette; namespace Content.Client.Stylesheets; diff --git a/Content.Client/Stylesheets/PalettedStylesheet.cs b/Content.Client/Stylesheets/PalettedStylesheet.cs index 682a50c228..73c966f7e1 100644 --- a/Content.Client/Stylesheets/PalettedStylesheet.cs +++ b/Content.Client/Stylesheets/PalettedStylesheet.cs @@ -1,4 +1,4 @@ -using JetBrains.Annotations; +using JetBrains.Annotations; namespace Content.Client.Stylesheets; diff --git a/Content.Client/Stylesheets/Sheetlet.cs b/Content.Client/Stylesheets/Sheetlet.cs index b5a4cf855f..f46cd7f4a3 100644 --- a/Content.Client/Stylesheets/Sheetlet.cs +++ b/Content.Client/Stylesheets/Sheetlet.cs @@ -1,4 +1,4 @@ -using Robust.Client.ResourceManagement; +using Robust.Client.ResourceManagement; using Robust.Client.UserInterface; namespace Content.Client.Stylesheets; diff --git a/Content.Client/Stylesheets/Sheetlets/CheckboxSheetlet.cs b/Content.Client/Stylesheets/Sheetlets/CheckboxSheetlet.cs index 67ad4b293f..1c053d0166 100644 --- a/Content.Client/Stylesheets/Sheetlets/CheckboxSheetlet.cs +++ b/Content.Client/Stylesheets/Sheetlets/CheckboxSheetlet.cs @@ -1,4 +1,4 @@ -using Content.Client.Stylesheets.SheetletConfigs; +using Content.Client.Stylesheets.SheetletConfigs; using Content.Client.Stylesheets.Stylesheets; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; diff --git a/Content.Client/Stylesheets/Sheetlets/DividersSheetlet.cs b/Content.Client/Stylesheets/Sheetlets/DividersSheetlet.cs index 41226c7100..4f40bcbca5 100644 --- a/Content.Client/Stylesheets/Sheetlets/DividersSheetlet.cs +++ b/Content.Client/Stylesheets/Sheetlets/DividersSheetlet.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Robust.Client.Graphics; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; diff --git a/Content.Client/Stylesheets/Sheetlets/FancyTreeSheetlet.cs b/Content.Client/Stylesheets/Sheetlets/FancyTreeSheetlet.cs index 6912dc1ee0..3ceffbc57c 100644 --- a/Content.Client/Stylesheets/Sheetlets/FancyTreeSheetlet.cs +++ b/Content.Client/Stylesheets/Sheetlets/FancyTreeSheetlet.cs @@ -1,4 +1,4 @@ -using Content.Client.UserInterface.Controls.FancyTree; +using Content.Client.UserInterface.Controls.FancyTree; using Robust.Client.Graphics; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; diff --git a/Content.Client/Stylesheets/Sheetlets/Hud/ChatSheetlet.cs b/Content.Client/Stylesheets/Sheetlets/Hud/ChatSheetlet.cs index ca721c5895..140e58918f 100644 --- a/Content.Client/Stylesheets/Sheetlets/Hud/ChatSheetlet.cs +++ b/Content.Client/Stylesheets/Sheetlets/Hud/ChatSheetlet.cs @@ -1,4 +1,4 @@ -using Content.Client.Stylesheets.SheetletConfigs; +using Content.Client.Stylesheets.SheetletConfigs; using Content.Client.Stylesheets.Stylesheets; using Content.Client.UserInterface.Systems.Chat.Controls; using Robust.Client.Graphics; diff --git a/Content.Client/Stylesheets/Sheetlets/Hud/ItemStatusSheetlet.cs b/Content.Client/Stylesheets/Sheetlets/Hud/ItemStatusSheetlet.cs index cc95d1783a..112c2dff91 100644 --- a/Content.Client/Stylesheets/Sheetlets/Hud/ItemStatusSheetlet.cs +++ b/Content.Client/Stylesheets/Sheetlets/Hud/ItemStatusSheetlet.cs @@ -1,4 +1,4 @@ -using Content.Client.Stylesheets.Fonts; +using Content.Client.Stylesheets.Fonts; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using static Content.Client.Stylesheets.StylesheetHelpers; diff --git a/Content.Client/Stylesheets/Sheetlets/Hud/TooltipSheetlet.cs b/Content.Client/Stylesheets/Sheetlets/Hud/TooltipSheetlet.cs index 16a5cfe62f..39f7a983e4 100644 --- a/Content.Client/Stylesheets/Sheetlets/Hud/TooltipSheetlet.cs +++ b/Content.Client/Stylesheets/Sheetlets/Hud/TooltipSheetlet.cs @@ -1,4 +1,4 @@ -using Content.Client.Examine; +using Content.Client.Examine; using Content.Client.Stylesheets.Fonts; using Content.Client.Stylesheets.SheetletConfigs; using Content.Client.Stylesheets.Stylesheets; diff --git a/Content.Client/Stylesheets/Sheetlets/ItemListSheetlet.cs b/Content.Client/Stylesheets/Sheetlets/ItemListSheetlet.cs index 26a8210c1c..21b567c3aa 100644 --- a/Content.Client/Stylesheets/Sheetlets/ItemListSheetlet.cs +++ b/Content.Client/Stylesheets/Sheetlets/ItemListSheetlet.cs @@ -1,4 +1,4 @@ -using Robust.Client.Graphics; +using Robust.Client.Graphics; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using static Content.Client.Stylesheets.StylesheetHelpers; diff --git a/Content.Client/Stylesheets/Sheetlets/LineEditSheetlet.cs b/Content.Client/Stylesheets/Sheetlets/LineEditSheetlet.cs index b478af5bd0..419f66a282 100644 --- a/Content.Client/Stylesheets/Sheetlets/LineEditSheetlet.cs +++ b/Content.Client/Stylesheets/Sheetlets/LineEditSheetlet.cs @@ -1,4 +1,4 @@ -using Content.Client.Stylesheets.SheetletConfigs; +using Content.Client.Stylesheets.SheetletConfigs; using Content.Client.Stylesheets.Stylesheets; using Robust.Client.Graphics; using Robust.Client.UserInterface; diff --git a/Content.Client/Stylesheets/Sheetlets/MenuButtonSheetlet.cs b/Content.Client/Stylesheets/Sheetlets/MenuButtonSheetlet.cs index 7f08978263..cf8809e2e3 100644 --- a/Content.Client/Stylesheets/Sheetlets/MenuButtonSheetlet.cs +++ b/Content.Client/Stylesheets/Sheetlets/MenuButtonSheetlet.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Content.Client.Stylesheets.Fonts; using Content.Client.Stylesheets.SheetletConfigs; using Content.Client.Stylesheets.Stylesheets; diff --git a/Content.Client/Stylesheets/Sheetlets/PlaceholderSheetlet.cs b/Content.Client/Stylesheets/Sheetlets/PlaceholderSheetlet.cs index eed7062392..afae729819 100644 --- a/Content.Client/Stylesheets/Sheetlets/PlaceholderSheetlet.cs +++ b/Content.Client/Stylesheets/Sheetlets/PlaceholderSheetlet.cs @@ -1,4 +1,4 @@ -using Content.Client.Stylesheets.SheetletConfigs; +using Content.Client.Stylesheets.SheetletConfigs; using Content.Client.Stylesheets.Stylesheets; using Content.Client.UserInterface.Controls; using Robust.Client.Graphics; diff --git a/Content.Client/Stylesheets/Sheetlets/RadialMenuSheetlet.cs b/Content.Client/Stylesheets/Sheetlets/RadialMenuSheetlet.cs index 20f7eab335..785650b375 100644 --- a/Content.Client/Stylesheets/Sheetlets/RadialMenuSheetlet.cs +++ b/Content.Client/Stylesheets/Sheetlets/RadialMenuSheetlet.cs @@ -1,4 +1,4 @@ -using Content.Client.Stylesheets.SheetletConfigs; +using Content.Client.Stylesheets.SheetletConfigs; using Content.Client.Stylesheets.Stylesheets; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; diff --git a/Content.Client/Stylesheets/Sheetlets/SliderSheetlet.cs b/Content.Client/Stylesheets/Sheetlets/SliderSheetlet.cs index 5ef1c0e6c5..5ecbe57010 100644 --- a/Content.Client/Stylesheets/Sheetlets/SliderSheetlet.cs +++ b/Content.Client/Stylesheets/Sheetlets/SliderSheetlet.cs @@ -1,4 +1,4 @@ -using Content.Client.Stylesheets.SheetletConfigs; +using Content.Client.Stylesheets.SheetletConfigs; using Content.Client.Stylesheets.Stylesheets; using Robust.Client.Graphics; using Robust.Client.UserInterface; diff --git a/Content.Client/Stylesheets/Sheetlets/StripebackSheetlet.cs b/Content.Client/Stylesheets/Sheetlets/StripebackSheetlet.cs index dc0c8dc011..ad755edc2c 100644 --- a/Content.Client/Stylesheets/Sheetlets/StripebackSheetlet.cs +++ b/Content.Client/Stylesheets/Sheetlets/StripebackSheetlet.cs @@ -1,4 +1,4 @@ -using Content.Client.Stylesheets.SheetletConfigs; +using Content.Client.Stylesheets.SheetletConfigs; using Content.Client.Stylesheets.Stylesheets; using Content.Client.UserInterface.Controls; using Robust.Client.Graphics; diff --git a/Content.Client/Stylesheets/Sheetlets/SwitchButtonSheetlet.cs b/Content.Client/Stylesheets/Sheetlets/SwitchButtonSheetlet.cs index fea9241950..64201a7336 100644 --- a/Content.Client/Stylesheets/Sheetlets/SwitchButtonSheetlet.cs +++ b/Content.Client/Stylesheets/Sheetlets/SwitchButtonSheetlet.cs @@ -1,4 +1,4 @@ -using Content.Client.Stylesheets.SheetletConfigs; +using Content.Client.Stylesheets.SheetletConfigs; using Content.Client.Stylesheets.Stylesheets; using Content.Client.UserInterface.Controls; using Robust.Client.UserInterface; diff --git a/Content.Client/Stylesheets/Sheetlets/TabContainerSheetlet.cs b/Content.Client/Stylesheets/Sheetlets/TabContainerSheetlet.cs index de6add06d6..681584f397 100644 --- a/Content.Client/Stylesheets/Sheetlets/TabContainerSheetlet.cs +++ b/Content.Client/Stylesheets/Sheetlets/TabContainerSheetlet.cs @@ -1,4 +1,4 @@ -using Content.Client.Stylesheets.SheetletConfigs; +using Content.Client.Stylesheets.SheetletConfigs; using Content.Client.Stylesheets.Stylesheets; using Robust.Client.Graphics; using Robust.Client.UserInterface; diff --git a/Content.Client/Stylesheets/Sheetlets/WindowSheetlet.cs b/Content.Client/Stylesheets/Sheetlets/WindowSheetlet.cs index 143baec992..d8d57ed497 100644 --- a/Content.Client/Stylesheets/Sheetlets/WindowSheetlet.cs +++ b/Content.Client/Stylesheets/Sheetlets/WindowSheetlet.cs @@ -1,4 +1,4 @@ -using Content.Client.Resources; +using Content.Client.Resources; using Content.Client.Stylesheets.Fonts; using Content.Client.Stylesheets.Palette; using Content.Client.Stylesheets.SheetletConfigs; diff --git a/Content.Client/Stylesheets/StyleProperties.cs b/Content.Client/Stylesheets/StyleProperties.cs index cc6ca12688..13a3b33559 100644 --- a/Content.Client/Stylesheets/StyleProperties.cs +++ b/Content.Client/Stylesheets/StyleProperties.cs @@ -1,4 +1,4 @@ -namespace Content.Client.Stylesheets; +namespace Content.Client.Stylesheets; public sealed class StyleProperties { diff --git a/Content.Client/Stylesheets/StyleSpace.cs b/Content.Client/Stylesheets/StyleSpace.cs index 637b4999d0..eac44002be 100644 --- a/Content.Client/Stylesheets/StyleSpace.cs +++ b/Content.Client/Stylesheets/StyleSpace.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Client.Resources; using Robust.Client.Graphics; using Robust.Client.ResourceManagement; diff --git a/Content.Client/Stylesheets/StylesheetHelpers.cs b/Content.Client/Stylesheets/StylesheetHelpers.cs index 2cd2ec4e2b..0531dfe659 100644 --- a/Content.Client/Stylesheets/StylesheetHelpers.cs +++ b/Content.Client/Stylesheets/StylesheetHelpers.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Robust.Client.Graphics; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; diff --git a/Content.Client/Stylesheets/Stylesheets/NanotrasenStylesheet.Palettes.cs b/Content.Client/Stylesheets/Stylesheets/NanotrasenStylesheet.Palettes.cs index 097d54d581..3866535f51 100644 --- a/Content.Client/Stylesheets/Stylesheets/NanotrasenStylesheet.Palettes.cs +++ b/Content.Client/Stylesheets/Stylesheets/NanotrasenStylesheet.Palettes.cs @@ -1,4 +1,4 @@ -using Content.Client.Stylesheets.Palette; +using Content.Client.Stylesheets.Palette; namespace Content.Client.Stylesheets.Stylesheets; diff --git a/Content.Client/Stylesheets/Stylesheets/NanotrasenStylesheet.cs b/Content.Client/Stylesheets/Stylesheets/NanotrasenStylesheet.cs index eb8472d98e..eb88854315 100644 --- a/Content.Client/Stylesheets/Stylesheets/NanotrasenStylesheet.cs +++ b/Content.Client/Stylesheets/Stylesheets/NanotrasenStylesheet.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Client.Stylesheets.Fonts; using Robust.Client.ResourceManagement; using Robust.Client.UserInterface; diff --git a/Content.Client/Tabletop/UI/TabletopWindow.xaml.cs b/Content.Client/Tabletop/UI/TabletopWindow.xaml.cs index 11eb38708c..d7954cd854 100644 --- a/Content.Client/Tabletop/UI/TabletopWindow.xaml.cs +++ b/Content.Client/Tabletop/UI/TabletopWindow.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.Graphics; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; diff --git a/Content.Client/Teleportation/PortalSystem.cs b/Content.Client/Teleportation/PortalSystem.cs index 9ed497f1e9..f958584d76 100644 --- a/Content.Client/Teleportation/PortalSystem.cs +++ b/Content.Client/Teleportation/PortalSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Teleportation.Systems; +using Content.Shared.Teleportation.Systems; namespace Content.Client.Teleportation; diff --git a/Content.Client/Teleportation/TeleportLocationsSystem.cs b/Content.Client/Teleportation/TeleportLocationsSystem.cs index d191b8d385..90326078e4 100644 --- a/Content.Client/Teleportation/TeleportLocationsSystem.cs +++ b/Content.Client/Teleportation/TeleportLocationsSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Teleportation.Systems; +using Content.Shared.Teleportation.Systems; namespace Content.Client.Teleportation; diff --git a/Content.Client/Teleportation/Ui/TeleportLocationsBoundUserInterface.cs b/Content.Client/Teleportation/Ui/TeleportLocationsBoundUserInterface.cs index 80b4f30094..8faa65bfab 100644 --- a/Content.Client/Teleportation/Ui/TeleportLocationsBoundUserInterface.cs +++ b/Content.Client/Teleportation/Ui/TeleportLocationsBoundUserInterface.cs @@ -1,4 +1,4 @@ -using Content.Shared.Teleportation; +using Content.Shared.Teleportation; using Content.Shared.Teleportation.Components; using JetBrains.Annotations; using Robust.Client.UserInterface; diff --git a/Content.Client/Teleportation/Ui/TeleportMenu.xaml.cs b/Content.Client/Teleportation/Ui/TeleportMenu.xaml.cs index 1a730bf747..5c085347a0 100644 --- a/Content.Client/Teleportation/Ui/TeleportMenu.xaml.cs +++ b/Content.Client/Teleportation/Ui/TeleportMenu.xaml.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Content.Shared.Teleportation.Components; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.CustomControls; diff --git a/Content.Client/Temperature/Systems/TemperatureSystem.cs b/Content.Client/Temperature/Systems/TemperatureSystem.cs index 6980591a81..fb6e398041 100644 --- a/Content.Client/Temperature/Systems/TemperatureSystem.cs +++ b/Content.Client/Temperature/Systems/TemperatureSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Temperature.Systems; +using Content.Shared.Temperature.Systems; namespace Content.Client.Temperature.Systems; diff --git a/Content.Client/Throwing/ThrownItemVisualizerSystem.cs b/Content.Client/Throwing/ThrownItemVisualizerSystem.cs index c218257f1d..ba9017efd5 100644 --- a/Content.Client/Throwing/ThrownItemVisualizerSystem.cs +++ b/Content.Client/Throwing/ThrownItemVisualizerSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Throwing; +using Content.Shared.Throwing; using Robust.Client.Animations; using Robust.Client.GameObjects; using Robust.Shared.Animations; diff --git a/Content.Client/Trigger/Systems/LightBehaviorOnTriggerSystem.cs b/Content.Client/Trigger/Systems/LightBehaviorOnTriggerSystem.cs index 0ab3bbf16d..c2c67f8690 100644 --- a/Content.Client/Trigger/Systems/LightBehaviorOnTriggerSystem.cs +++ b/Content.Client/Trigger/Systems/LightBehaviorOnTriggerSystem.cs @@ -1,4 +1,4 @@ -using Content.Client.Light.EntitySystems; +using Content.Client.Light.EntitySystems; using Content.Shared.Trigger; using Content.Shared.Trigger.Components.Effects; using Robust.Shared.Timing; diff --git a/Content.Client/UserInterface/BoundKeyHelpers.cs b/Content.Client/UserInterface/BoundKeyHelpers.cs index ce4e5d1f46..d643774194 100644 --- a/Content.Client/UserInterface/BoundKeyHelpers.cs +++ b/Content.Client/UserInterface/BoundKeyHelpers.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using Robust.Client.Input; using Robust.Shared.Input; using Robust.Shared.Utility; diff --git a/Content.Client/UserInterface/BuiPreTickUpdateSystem.cs b/Content.Client/UserInterface/BuiPreTickUpdateSystem.cs index cee832cbf5..4051e6e2e8 100644 --- a/Content.Client/UserInterface/BuiPreTickUpdateSystem.cs +++ b/Content.Client/UserInterface/BuiPreTickUpdateSystem.cs @@ -1,4 +1,4 @@ -using Robust.Client.GameObjects; +using Robust.Client.GameObjects; using Robust.Client.Player; using Robust.Shared.ContentPack; using Robust.Shared.Timing; diff --git a/Content.Client/UserInterface/BuiPredictionState.cs b/Content.Client/UserInterface/BuiPredictionState.cs index e3299e03f3..bd1342e1e0 100644 --- a/Content.Client/UserInterface/BuiPredictionState.cs +++ b/Content.Client/UserInterface/BuiPredictionState.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Robust.Client.Timing; using Robust.Shared.Timing; diff --git a/Content.Client/UserInterface/Controls/ClipControl.cs b/Content.Client/UserInterface/Controls/ClipControl.cs index 1fca3c0f47..e78891b954 100644 --- a/Content.Client/UserInterface/Controls/ClipControl.cs +++ b/Content.Client/UserInterface/Controls/ClipControl.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; diff --git a/Content.Client/UserInterface/Controls/ConfirmButton.cs b/Content.Client/UserInterface/Controls/ConfirmButton.cs index d50e62b941..0c271a6380 100644 --- a/Content.Client/UserInterface/Controls/ConfirmButton.cs +++ b/Content.Client/UserInterface/Controls/ConfirmButton.cs @@ -1,4 +1,4 @@ -using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.Controls; using Robust.Shared.Timing; namespace Content.Client.UserInterface.Controls; diff --git a/Content.Client/UserInterface/Controls/FancyWindow.xaml.cs b/Content.Client/UserInterface/Controls/FancyWindow.xaml.cs index 91a19a24d8..1ab3b442a9 100644 --- a/Content.Client/UserInterface/Controls/FancyWindow.xaml.cs +++ b/Content.Client/UserInterface/Controls/FancyWindow.xaml.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Content.Client.Guidebook; using Content.Client.Guidebook.Components; using Content.Client.Stylesheets; diff --git a/Content.Client/UserInterface/Controls/HLine.cs b/Content.Client/UserInterface/Controls/HLine.cs index 849f5003d0..223ed50112 100644 --- a/Content.Client/UserInterface/Controls/HLine.cs +++ b/Content.Client/UserInterface/Controls/HLine.cs @@ -1,4 +1,4 @@ -using Content.Client.Stylesheets; +using Content.Client.Stylesheets; using Robust.Client.Graphics; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; diff --git a/Content.Client/UserInterface/Controls/HSpacer.cs b/Content.Client/UserInterface/Controls/HSpacer.cs index 104bf55924..f2d93fedf7 100644 --- a/Content.Client/UserInterface/Controls/HSpacer.cs +++ b/Content.Client/UserInterface/Controls/HSpacer.cs @@ -1,4 +1,4 @@ -using Robust.Client.Graphics; +using Robust.Client.Graphics; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using Robust.Shared.Maths; diff --git a/Content.Client/UserInterface/Controls/MainViewport.cs b/Content.Client/UserInterface/Controls/MainViewport.cs index 6cd3f11e22..2f138bb0bb 100644 --- a/Content.Client/UserInterface/Controls/MainViewport.cs +++ b/Content.Client/UserInterface/Controls/MainViewport.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Content.Client.Viewport; using Content.Shared.CCVar; using Robust.Client.UserInterface; diff --git a/Content.Client/UserInterface/Controls/OnOffButton.xaml.cs b/Content.Client/UserInterface/Controls/OnOffButton.xaml.cs index a1ed8aa7b7..3d6ecfb444 100644 --- a/Content.Client/UserInterface/Controls/OnOffButton.xaml.cs +++ b/Content.Client/UserInterface/Controls/OnOffButton.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/UserInterface/Controls/ProgressTextureRect.cs b/Content.Client/UserInterface/Controls/ProgressTextureRect.cs index 8454ae0892..33e7f823af 100644 --- a/Content.Client/UserInterface/Controls/ProgressTextureRect.cs +++ b/Content.Client/UserInterface/Controls/ProgressTextureRect.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Content.Client.UserInterface.Systems; using Robust.Client.Graphics; using Robust.Client.UserInterface.Controls; diff --git a/Content.Client/UserInterface/Controls/SearchListContainer.cs b/Content.Client/UserInterface/Controls/SearchListContainer.cs index 603d7f184c..1e096f83b6 100644 --- a/Content.Client/UserInterface/Controls/SearchListContainer.cs +++ b/Content.Client/UserInterface/Controls/SearchListContainer.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Robust.Client.UserInterface.Controls; namespace Content.Client.UserInterface.Controls; diff --git a/Content.Client/UserInterface/Controls/SlotButton.cs b/Content.Client/UserInterface/Controls/SlotButton.cs index c33782371f..1c5afdea12 100644 --- a/Content.Client/UserInterface/Controls/SlotButton.cs +++ b/Content.Client/UserInterface/Controls/SlotButton.cs @@ -1,4 +1,4 @@ -using static Content.Client.Inventory.ClientInventorySystem; +using static Content.Client.Inventory.ClientInventorySystem; namespace Content.Client.UserInterface.Controls { diff --git a/Content.Client/UserInterface/Controls/TextLinkLabel.cs b/Content.Client/UserInterface/Controls/TextLinkLabel.cs index 0e5cdde974..1600e979b8 100644 --- a/Content.Client/UserInterface/Controls/TextLinkLabel.cs +++ b/Content.Client/UserInterface/Controls/TextLinkLabel.cs @@ -1,4 +1,4 @@ -using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.Controls; namespace Content.Client.UserInterface.Controls; diff --git a/Content.Client/UserInterface/Controls/VSpacer.cs b/Content.Client/UserInterface/Controls/VSpacer.cs index 346e5e4f16..9933525ea4 100644 --- a/Content.Client/UserInterface/Controls/VSpacer.cs +++ b/Content.Client/UserInterface/Controls/VSpacer.cs @@ -1,4 +1,4 @@ -using Robust.Client.Graphics; +using Robust.Client.Graphics; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using Robust.Shared.Maths; diff --git a/Content.Client/UserInterface/Fragments/UIFragment.cs b/Content.Client/UserInterface/Fragments/UIFragment.cs index cadedb38c9..74f1c9699a 100644 --- a/Content.Client/UserInterface/Fragments/UIFragment.cs +++ b/Content.Client/UserInterface/Fragments/UIFragment.cs @@ -1,4 +1,4 @@ -using Robust.Client.GameObjects; +using Robust.Client.GameObjects; using Robust.Client.UserInterface; namespace Content.Client.UserInterface.Fragments; diff --git a/Content.Client/UserInterface/Fragments/UiFragmentComponent.cs b/Content.Client/UserInterface/Fragments/UiFragmentComponent.cs index ba2f80d98f..3801715091 100644 --- a/Content.Client/UserInterface/Fragments/UiFragmentComponent.cs +++ b/Content.Client/UserInterface/Fragments/UiFragmentComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Client.UserInterface.Fragments; +namespace Content.Client.UserInterface.Fragments; /// /// The component used for defining a ui fragment to attach to an entity diff --git a/Content.Client/UserInterface/InputCoalescer.cs b/Content.Client/UserInterface/InputCoalescer.cs index 613f517166..089d1df0b5 100644 --- a/Content.Client/UserInterface/InputCoalescer.cs +++ b/Content.Client/UserInterface/InputCoalescer.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; namespace Content.Client.UserInterface; diff --git a/Content.Client/UserInterface/RichText/TextLinkTag.Entity.cs b/Content.Client/UserInterface/RichText/TextLinkTag.Entity.cs index 14fe854b7b..c68b375a0e 100644 --- a/Content.Client/UserInterface/RichText/TextLinkTag.Entity.cs +++ b/Content.Client/UserInterface/RichText/TextLinkTag.Entity.cs @@ -1,4 +1,4 @@ -using Content.Shared.Chat; +using Content.Shared.Chat; using Content.Client.UserInterface.Systems.Chat; using Robust.Shared.GameObjects.Components.Localization; using Robust.Shared.Utility; diff --git a/Content.Client/UserInterface/RichText/TextLinkTag.Plain.cs b/Content.Client/UserInterface/RichText/TextLinkTag.Plain.cs index afb62a92ae..d18e21116e 100644 --- a/Content.Client/UserInterface/RichText/TextLinkTag.Plain.cs +++ b/Content.Client/UserInterface/RichText/TextLinkTag.Plain.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Utility; +using Robust.Shared.Utility; namespace Content.Client.UserInterface.RichText; diff --git a/Content.Client/UserInterface/RichText/TextLinkTag.cs b/Content.Client/UserInterface/RichText/TextLinkTag.cs index 57a4c8c944..a9f78f10f5 100644 --- a/Content.Client/UserInterface/RichText/TextLinkTag.cs +++ b/Content.Client/UserInterface/RichText/TextLinkTag.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using Content.Client.Stylesheets.Fonts; using JetBrains.Annotations; using Robust.Client.UserInterface; diff --git a/Content.Client/UserInterface/Screens/DefaultGameScreen.xaml.cs b/Content.Client/UserInterface/Screens/DefaultGameScreen.xaml.cs index 12f8422aeb..d9cd9fb396 100644 --- a/Content.Client/UserInterface/Screens/DefaultGameScreen.xaml.cs +++ b/Content.Client/UserInterface/Screens/DefaultGameScreen.xaml.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Content.Client.UserInterface.Systems.Chat.Widgets; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/UserInterface/Systems/Actions/Controls/ActionPageButtons.xaml.cs b/Content.Client/UserInterface/Systems/Actions/Controls/ActionPageButtons.xaml.cs index 9610ad6ae5..e92717d617 100644 --- a/Content.Client/UserInterface/Systems/Actions/Controls/ActionPageButtons.xaml.cs +++ b/Content.Client/UserInterface/Systems/Actions/Controls/ActionPageButtons.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/UserInterface/Systems/Actions/Widgets/ActionsBar.xaml.cs b/Content.Client/UserInterface/Systems/Actions/Widgets/ActionsBar.xaml.cs index 8e95992ff6..25b670bf6e 100644 --- a/Content.Client/UserInterface/Systems/Actions/Widgets/ActionsBar.xaml.cs +++ b/Content.Client/UserInterface/Systems/Actions/Widgets/ActionsBar.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/UserInterface/Systems/Actions/Windows/ActionsWindow.xaml.cs b/Content.Client/UserInterface/Systems/Actions/Windows/ActionsWindow.xaml.cs index 4aaabb3d05..50bdb0cac5 100644 --- a/Content.Client/UserInterface/Systems/Actions/Windows/ActionsWindow.xaml.cs +++ b/Content.Client/UserInterface/Systems/Actions/Windows/ActionsWindow.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/UserInterface/Systems/Admin/AdminUIController.cs b/Content.Client/UserInterface/Systems/Admin/AdminUIController.cs index df4c6247e8..bfb7e8251f 100644 --- a/Content.Client/UserInterface/Systems/Admin/AdminUIController.cs +++ b/Content.Client/UserInterface/Systems/Admin/AdminUIController.cs @@ -1,4 +1,4 @@ -using Content.Client.Administration.Managers; +using Content.Client.Administration.Managers; using Content.Client.Administration.Systems; using Content.Client.Administration.UI; using Content.Client.Administration.UI.Tabs.ObjectsTab; diff --git a/Content.Client/UserInterface/Systems/Character/Controls/CharacterObjectiveControl.xaml.cs b/Content.Client/UserInterface/Systems/Character/Controls/CharacterObjectiveControl.xaml.cs index e17c8aca2f..4d82ddb869 100644 --- a/Content.Client/UserInterface/Systems/Character/Controls/CharacterObjectiveControl.xaml.cs +++ b/Content.Client/UserInterface/Systems/Character/Controls/CharacterObjectiveControl.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/UserInterface/Systems/Character/Windows/CharacterWindow.xaml.cs b/Content.Client/UserInterface/Systems/Character/Windows/CharacterWindow.xaml.cs index 5876b56aa5..ce4cf6c686 100644 --- a/Content.Client/UserInterface/Systems/Character/Windows/CharacterWindow.xaml.cs +++ b/Content.Client/UserInterface/Systems/Character/Windows/CharacterWindow.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/UserInterface/Systems/Chat/Controls/ChannelFilterButton.cs b/Content.Client/UserInterface/Systems/Chat/Controls/ChannelFilterButton.cs index c5b810ced3..ace95836e3 100644 --- a/Content.Client/UserInterface/Systems/Chat/Controls/ChannelFilterButton.cs +++ b/Content.Client/UserInterface/Systems/Chat/Controls/ChannelFilterButton.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Content.Client.Resources; using Robust.Client.ResourceManagement; using Robust.Client.UserInterface.Controls; diff --git a/Content.Client/UserInterface/Systems/Chat/Controls/ChannelFilterCheckbox.cs b/Content.Client/UserInterface/Systems/Chat/Controls/ChannelFilterCheckbox.cs index 9cf890354d..6e30ca41c3 100644 --- a/Content.Client/UserInterface/Systems/Chat/Controls/ChannelFilterCheckbox.cs +++ b/Content.Client/UserInterface/Systems/Chat/Controls/ChannelFilterCheckbox.cs @@ -1,4 +1,4 @@ -using Content.Shared.Chat; +using Content.Shared.Chat; using Robust.Client.UserInterface.Controls; namespace Content.Client.UserInterface.Systems.Chat.Controls; diff --git a/Content.Client/UserInterface/Systems/Chat/Controls/ChatInputBox.xaml.cs b/Content.Client/UserInterface/Systems/Chat/Controls/ChatInputBox.xaml.cs index e9345d25f9..087c368f7b 100644 --- a/Content.Client/UserInterface/Systems/Chat/Controls/ChatInputBox.xaml.cs +++ b/Content.Client/UserInterface/Systems/Chat/Controls/ChatInputBox.xaml.cs @@ -1,4 +1,4 @@ -using Content.Shared.Chat; +using Content.Shared.Chat; using Content.Shared.Input; using Robust.Client.UserInterface.Controls; diff --git a/Content.Client/UserInterface/Systems/Chat/Controls/ChatPopupButton.cs b/Content.Client/UserInterface/Systems/Chat/Controls/ChatPopupButton.cs index e284eda2b6..639406dcc7 100644 --- a/Content.Client/UserInterface/Systems/Chat/Controls/ChatPopupButton.cs +++ b/Content.Client/UserInterface/Systems/Chat/Controls/ChatPopupButton.cs @@ -1,4 +1,4 @@ -using Robust.Client.UserInterface; +using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using Robust.Shared.Timing; diff --git a/Content.Client/UserInterface/Systems/DecalPlacer/DecalPlacerUIController.cs b/Content.Client/UserInterface/Systems/DecalPlacer/DecalPlacerUIController.cs index 7bfd99ed2f..d384d5ec3a 100644 --- a/Content.Client/UserInterface/Systems/DecalPlacer/DecalPlacerUIController.cs +++ b/Content.Client/UserInterface/Systems/DecalPlacer/DecalPlacerUIController.cs @@ -1,4 +1,4 @@ -using Content.Client.Decals.UI; +using Content.Client.Decals.UI; using Content.Client.Gameplay; using Content.Client.Sandbox; using Content.Shared.Decals; diff --git a/Content.Client/UserInterface/Systems/EscapeMenu/EscapeContextUIController.cs b/Content.Client/UserInterface/Systems/EscapeMenu/EscapeContextUIController.cs index 663a6ea0d5..0f090d553d 100644 --- a/Content.Client/UserInterface/Systems/EscapeMenu/EscapeContextUIController.cs +++ b/Content.Client/UserInterface/Systems/EscapeMenu/EscapeContextUIController.cs @@ -1,4 +1,4 @@ -using Content.Client.UserInterface.Systems.Info; +using Content.Client.UserInterface.Systems.Info; using Content.Shared.Input; using JetBrains.Annotations; using Robust.Client.Input; diff --git a/Content.Client/UserInterface/Systems/Ghost/Controls/Roles/GhostRoleEntryButtons.xaml.cs b/Content.Client/UserInterface/Systems/Ghost/Controls/Roles/GhostRoleEntryButtons.xaml.cs index 31d0e5c68b..fb7395587c 100644 --- a/Content.Client/UserInterface/Systems/Ghost/Controls/Roles/GhostRoleEntryButtons.xaml.cs +++ b/Content.Client/UserInterface/Systems/Ghost/Controls/Roles/GhostRoleEntryButtons.xaml.cs @@ -1,4 +1,4 @@ -using Content.Shared.Ghost.Roles; +using Content.Shared.Ghost.Roles; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/UserInterface/Systems/Ghost/Controls/Roles/MakeGhostRoleEui.cs b/Content.Client/UserInterface/Systems/Ghost/Controls/Roles/MakeGhostRoleEui.cs index fd89488aa4..a0d7c0e9d9 100644 --- a/Content.Client/UserInterface/Systems/Ghost/Controls/Roles/MakeGhostRoleEui.cs +++ b/Content.Client/UserInterface/Systems/Ghost/Controls/Roles/MakeGhostRoleEui.cs @@ -1,4 +1,4 @@ -using Content.Client.Eui; +using Content.Client.Eui; using Content.Shared.Eui; using Content.Shared.Ghost.Roles; using Content.Shared.Ghost.Roles.Raffles; diff --git a/Content.Client/UserInterface/Systems/Ghost/Controls/Roles/MakeGhostRoleWindow.xaml.cs b/Content.Client/UserInterface/Systems/Ghost/Controls/Roles/MakeGhostRoleWindow.xaml.cs index 3dc3bc3e31..6835ca6b7a 100644 --- a/Content.Client/UserInterface/Systems/Ghost/Controls/Roles/MakeGhostRoleWindow.xaml.cs +++ b/Content.Client/UserInterface/Systems/Ghost/Controls/Roles/MakeGhostRoleWindow.xaml.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Content.Shared.Ghost.Roles.Raffles; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; diff --git a/Content.Client/UserInterface/Systems/Hands/Controls/HandButton.cs b/Content.Client/UserInterface/Systems/Hands/Controls/HandButton.cs index d5794f7195..2e8aa62779 100644 --- a/Content.Client/UserInterface/Systems/Hands/Controls/HandButton.cs +++ b/Content.Client/UserInterface/Systems/Hands/Controls/HandButton.cs @@ -1,4 +1,4 @@ -using Content.Client.UserInterface.Controls; +using Content.Client.UserInterface.Controls; using Content.Shared.Hands.Components; namespace Content.Client.UserInterface.Systems.Hands.Controls; diff --git a/Content.Client/UserInterface/Systems/Hotbar/HotbarUIController.cs b/Content.Client/UserInterface/Systems/Hotbar/HotbarUIController.cs index c567fb55fc..c69be00979 100644 --- a/Content.Client/UserInterface/Systems/Hotbar/HotbarUIController.cs +++ b/Content.Client/UserInterface/Systems/Hotbar/HotbarUIController.cs @@ -1,4 +1,4 @@ -using Content.Client.UserInterface.Systems.Gameplay; +using Content.Client.UserInterface.Systems.Gameplay; using Content.Client.UserInterface.Systems.Hands; using Content.Client.UserInterface.Systems.Hands.Controls; using Content.Client.UserInterface.Systems.Hotbar.Widgets; diff --git a/Content.Client/UserInterface/Systems/Hotbar/Widgets/HotbarGui.xaml.cs b/Content.Client/UserInterface/Systems/Hotbar/Widgets/HotbarGui.xaml.cs index 81dfffb062..cc74bec075 100644 --- a/Content.Client/UserInterface/Systems/Hotbar/Widgets/HotbarGui.xaml.cs +++ b/Content.Client/UserInterface/Systems/Hotbar/Widgets/HotbarGui.xaml.cs @@ -1,4 +1,4 @@ -using Content.Shared.Hands.Components; +using Content.Shared.Hands.Components; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/UserInterface/Systems/Inventory/Controls/InventoryDisplay.cs b/Content.Client/UserInterface/Systems/Inventory/Controls/InventoryDisplay.cs index 0d49a5b53c..e3e367bccd 100644 --- a/Content.Client/UserInterface/Systems/Inventory/Controls/InventoryDisplay.cs +++ b/Content.Client/UserInterface/Systems/Inventory/Controls/InventoryDisplay.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Content.Client.UserInterface.Controls; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; diff --git a/Content.Client/UserInterface/Systems/Inventory/Controls/ItemSlotButtonContainer.cs b/Content.Client/UserInterface/Systems/Inventory/Controls/ItemSlotButtonContainer.cs index 7a027fc4f8..322167f089 100644 --- a/Content.Client/UserInterface/Systems/Inventory/Controls/ItemSlotButtonContainer.cs +++ b/Content.Client/UserInterface/Systems/Inventory/Controls/ItemSlotButtonContainer.cs @@ -1,4 +1,4 @@ -using Content.Client.UserInterface.Controls; +using Content.Client.UserInterface.Controls; namespace Content.Client.UserInterface.Systems.Inventory.Controls; diff --git a/Content.Client/UserInterface/Systems/Inventory/Controls/ItemSlotUIContainer.cs b/Content.Client/UserInterface/Systems/Inventory/Controls/ItemSlotUIContainer.cs index cd18c3e696..9fd734378d 100644 --- a/Content.Client/UserInterface/Systems/Inventory/Controls/ItemSlotUIContainer.cs +++ b/Content.Client/UserInterface/Systems/Inventory/Controls/ItemSlotUIContainer.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using Content.Client.UserInterface.Controls; using Robust.Client.UserInterface.Controls; diff --git a/Content.Client/UserInterface/Systems/Inventory/Widgets/InventoryGui.xaml.cs b/Content.Client/UserInterface/Systems/Inventory/Widgets/InventoryGui.xaml.cs index 90154c5a9f..7d0c34debb 100644 --- a/Content.Client/UserInterface/Systems/Inventory/Widgets/InventoryGui.xaml.cs +++ b/Content.Client/UserInterface/Systems/Inventory/Widgets/InventoryGui.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/UserInterface/Systems/Inventory/Windows/StrippingWindow.xaml.cs b/Content.Client/UserInterface/Systems/Inventory/Windows/StrippingWindow.xaml.cs index c2bd69a440..4efac224fa 100644 --- a/Content.Client/UserInterface/Systems/Inventory/Windows/StrippingWindow.xaml.cs +++ b/Content.Client/UserInterface/Systems/Inventory/Windows/StrippingWindow.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/UserInterface/Systems/MenuBar/Widgets/GameTopMenuBar.xaml.cs b/Content.Client/UserInterface/Systems/MenuBar/Widgets/GameTopMenuBar.xaml.cs index e39af3a8fc..0ccfb45382 100644 --- a/Content.Client/UserInterface/Systems/MenuBar/Widgets/GameTopMenuBar.xaml.cs +++ b/Content.Client/UserInterface/Systems/MenuBar/Widgets/GameTopMenuBar.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/UserInterface/Systems/Objectives/Controls/ObjectiveBriefingControl.xaml.cs b/Content.Client/UserInterface/Systems/Objectives/Controls/ObjectiveBriefingControl.xaml.cs index 9ca361a5bf..f5ac96d98b 100644 --- a/Content.Client/UserInterface/Systems/Objectives/Controls/ObjectiveBriefingControl.xaml.cs +++ b/Content.Client/UserInterface/Systems/Objectives/Controls/ObjectiveBriefingControl.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/UserInterface/Systems/Objectives/Controls/ObjectiveConditionsControl.xaml.cs b/Content.Client/UserInterface/Systems/Objectives/Controls/ObjectiveConditionsControl.xaml.cs index a43a5c91aa..465e4f54d5 100644 --- a/Content.Client/UserInterface/Systems/Objectives/Controls/ObjectiveConditionsControl.xaml.cs +++ b/Content.Client/UserInterface/Systems/Objectives/Controls/ObjectiveConditionsControl.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/UserInterface/Systems/Sandbox/Windows/SandboxWindow.xaml.cs b/Content.Client/UserInterface/Systems/Sandbox/Windows/SandboxWindow.xaml.cs index 5c81349a40..f69554bf0b 100644 --- a/Content.Client/UserInterface/Systems/Sandbox/Windows/SandboxWindow.xaml.cs +++ b/Content.Client/UserInterface/Systems/Sandbox/Windows/SandboxWindow.xaml.cs @@ -1,4 +1,4 @@ -using Content.Client.Markers; +using Content.Client.Markers; using Content.Client.SubFloor; using Content.Client.Stylesheets; using Content.Shared.Silicons.StationAi; diff --git a/Content.Client/UserInterface/XamlExtensions/TextureExtension.cs b/Content.Client/UserInterface/XamlExtensions/TextureExtension.cs index 4a64b466c3..8a9e5c00f0 100644 --- a/Content.Client/UserInterface/XamlExtensions/TextureExtension.cs +++ b/Content.Client/UserInterface/XamlExtensions/TextureExtension.cs @@ -1,4 +1,4 @@ -using Content.Client.Resources; +using Content.Client.Resources; using JetBrains.Annotations; using Robust.Client.ResourceManagement; diff --git a/Content.Client/Verbs/UI/ConfirmationMenuElement.cs b/Content.Client/Verbs/UI/ConfirmationMenuElement.cs index 1b9348cb6b..b8881b96c1 100644 --- a/Content.Client/Verbs/UI/ConfirmationMenuElement.cs +++ b/Content.Client/Verbs/UI/ConfirmationMenuElement.cs @@ -1,4 +1,4 @@ -using Content.Client.ContextMenu.UI; +using Content.Client.ContextMenu.UI; using Content.Shared.Verbs; using Robust.Shared.Maths; using Robust.Shared.Utility; diff --git a/Content.Client/Viewport/IMainViewport.cs b/Content.Client/Viewport/IMainViewport.cs index 01abbd4137..9ef720de06 100644 --- a/Content.Client/Viewport/IMainViewport.cs +++ b/Content.Client/Viewport/IMainViewport.cs @@ -1,4 +1,4 @@ -using Content.Client.UserInterface.Controls; +using Content.Client.UserInterface.Controls; namespace Content.Client.Viewport { diff --git a/Content.Client/Viewport/ViewportExt.cs b/Content.Client/Viewport/ViewportExt.cs index 74c2b499dc..61e34c203e 100644 --- a/Content.Client/Viewport/ViewportExt.cs +++ b/Content.Client/Viewport/ViewportExt.cs @@ -1,4 +1,4 @@ -using Robust.Client.UserInterface.CustomControls; +using Robust.Client.UserInterface.CustomControls; namespace Content.Client.Viewport { diff --git a/Content.Client/Voting/UI/VoteCallMenuButton.cs b/Content.Client/Voting/UI/VoteCallMenuButton.cs index 27490eaaa3..466266eb4c 100644 --- a/Content.Client/Voting/UI/VoteCallMenuButton.cs +++ b/Content.Client/Voting/UI/VoteCallMenuButton.cs @@ -1,4 +1,4 @@ -using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.Controls; using Robust.Shared.IoC; using Robust.Shared.Localization; diff --git a/Content.Client/Weapons/Ranged/Systems/GunSystem.BasicEntity.cs b/Content.Client/Weapons/Ranged/Systems/GunSystem.BasicEntity.cs index 669bc3ec40..2ba224a39b 100644 --- a/Content.Client/Weapons/Ranged/Systems/GunSystem.BasicEntity.cs +++ b/Content.Client/Weapons/Ranged/Systems/GunSystem.BasicEntity.cs @@ -1,4 +1,4 @@ -using Content.Shared.Weapons.Ranged.Components; +using Content.Shared.Weapons.Ranged.Components; namespace Content.Client.Weapons.Ranged.Systems; diff --git a/Content.Client/Weapons/Ranged/Systems/GunSystem.CustomAmmoCounter.cs b/Content.Client/Weapons/Ranged/Systems/GunSystem.CustomAmmoCounter.cs index 0213ce1d1e..10e6e38b9b 100644 --- a/Content.Client/Weapons/Ranged/Systems/GunSystem.CustomAmmoCounter.cs +++ b/Content.Client/Weapons/Ranged/Systems/GunSystem.CustomAmmoCounter.cs @@ -1,4 +1,4 @@ -using Content.Shared.Weapons.Ranged.Components; +using Content.Shared.Weapons.Ranged.Components; namespace Content.Client.Weapons.Ranged.Systems; diff --git a/Content.Docfx/docfx.json b/Content.Docfx/docfx.json index b5ca8035ee..3ba4e66708 100644 --- a/Content.Docfx/docfx.json +++ b/Content.Docfx/docfx.json @@ -131,4 +131,4 @@ "cleanupCacheHistory": false, "disableGitFeatures": false } -} \ No newline at end of file +} diff --git a/Content.Docfx/toc.yml b/Content.Docfx/toc.yml index 5009f2f9b0..a64413d90b 100644 --- a/Content.Docfx/toc.yml +++ b/Content.Docfx/toc.yml @@ -15,4 +15,4 @@ # Unit testing - name: Content.Tests - href: api/Content.Tests/ \ No newline at end of file + href: api/Content.Tests/ diff --git a/Content.IntegrationTests/AssemblyInfo.cs b/Content.IntegrationTests/AssemblyInfo.cs index b8a88e2623..4b33754a82 100644 --- a/Content.IntegrationTests/AssemblyInfo.cs +++ b/Content.IntegrationTests/AssemblyInfo.cs @@ -1,4 +1,4 @@ -[assembly: Parallelizable(ParallelScope.Children)] +[assembly: Parallelizable(ParallelScope.Children)] // I don't know why this parallelism limit was originally put here. // I *do* know that I tried removing it, and ran into the following .NET runtime problem: diff --git a/Content.IntegrationTests/Pair/TestPair.Helpers.cs b/Content.IntegrationTests/Pair/TestPair.Helpers.cs index 25cb78ec35..bae6f886f2 100644 --- a/Content.IntegrationTests/Pair/TestPair.Helpers.cs +++ b/Content.IntegrationTests/Pair/TestPair.Helpers.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System.Collections.Generic; using System.Linq; using Content.Server.Preferences.Managers; diff --git a/Content.IntegrationTests/Pair/TestPair.cs b/Content.IntegrationTests/Pair/TestPair.cs index bcf95b33da..6c6c69a778 100644 --- a/Content.IntegrationTests/Pair/TestPair.cs +++ b/Content.IntegrationTests/Pair/TestPair.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System.Collections.Generic; using Content.Client.IoC; using Content.Client.Parallax.Managers; diff --git a/Content.IntegrationTests/PoolManagerTestEventHandler.cs b/Content.IntegrationTests/PoolManagerTestEventHandler.cs index be4c746a60..ffdfa8065a 100644 --- a/Content.IntegrationTests/PoolManagerTestEventHandler.cs +++ b/Content.IntegrationTests/PoolManagerTestEventHandler.cs @@ -1,4 +1,4 @@ -namespace Content.IntegrationTests; +namespace Content.IntegrationTests; [SetUpFixture] public sealed class PoolManagerTestEventHandler diff --git a/Content.IntegrationTests/PoolSettings.cs b/Content.IntegrationTests/PoolSettings.cs index fe37c38fe3..5b445c404f 100644 --- a/Content.IntegrationTests/PoolSettings.cs +++ b/Content.IntegrationTests/PoolSettings.cs @@ -1,4 +1,4 @@ -namespace Content.IntegrationTests; +namespace Content.IntegrationTests; /// public sealed class PoolSettings : PairSettings diff --git a/Content.IntegrationTests/Tests/Administration/Logs/AddTests.cs b/Content.IntegrationTests/Tests/Administration/Logs/AddTests.cs index 3e86667c12..0992111e6c 100644 --- a/Content.IntegrationTests/Tests/Administration/Logs/AddTests.cs +++ b/Content.IntegrationTests/Tests/Administration/Logs/AddTests.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System.Collections.Generic; using System.Linq; using Content.IntegrationTests.Fixtures; diff --git a/Content.IntegrationTests/Tests/Administration/Logs/QueryTests.cs b/Content.IntegrationTests/Tests/Administration/Logs/QueryTests.cs index 20db63e47a..8567c70012 100644 --- a/Content.IntegrationTests/Tests/Administration/Logs/QueryTests.cs +++ b/Content.IntegrationTests/Tests/Administration/Logs/QueryTests.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using Content.IntegrationTests.Fixtures; using Content.Server.Administration.Logs; diff --git a/Content.IntegrationTests/Tests/Atmos/ConstantsTest.cs b/Content.IntegrationTests/Tests/Atmos/ConstantsTest.cs index d3da7f1107..2023867eed 100644 --- a/Content.IntegrationTests/Tests/Atmos/ConstantsTest.cs +++ b/Content.IntegrationTests/Tests/Atmos/ConstantsTest.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.IntegrationTests.Fixtures.Attributes; using Content.Shared.Atmos; using Content.Shared.Atmos.Prototypes; diff --git a/Content.IntegrationTests/Tests/Atmos/GasMixtureTest.cs b/Content.IntegrationTests/Tests/Atmos/GasMixtureTest.cs index f8e165fec2..550e377f22 100644 --- a/Content.IntegrationTests/Tests/Atmos/GasMixtureTest.cs +++ b/Content.IntegrationTests/Tests/Atmos/GasMixtureTest.cs @@ -1,4 +1,4 @@ -using Content.IntegrationTests.Fixtures.Attributes; +using Content.IntegrationTests.Fixtures.Attributes; using Content.Shared.Atmos; namespace Content.IntegrationTests.Tests.Atmos; diff --git a/Content.IntegrationTests/Tests/Audio/Midi/MidiFileCollectionManagerTests.cs b/Content.IntegrationTests/Tests/Audio/Midi/MidiFileCollectionManagerTests.cs index db9c063592..0f6c0d3bbc 100644 --- a/Content.IntegrationTests/Tests/Audio/Midi/MidiFileCollectionManagerTests.cs +++ b/Content.IntegrationTests/Tests/Audio/Midi/MidiFileCollectionManagerTests.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System.IO; using System.Linq; diff --git a/Content.IntegrationTests/Tests/Buckle/BuckleTest.Interact.cs b/Content.IntegrationTests/Tests/Buckle/BuckleTest.Interact.cs index 444bd159f3..be3824be84 100644 --- a/Content.IntegrationTests/Tests/Buckle/BuckleTest.Interact.cs +++ b/Content.IntegrationTests/Tests/Buckle/BuckleTest.Interact.cs @@ -1,4 +1,4 @@ -using Content.Shared.Buckle; +using Content.Shared.Buckle; using Content.Shared.Buckle.Components; using Content.Shared.Interaction; using Robust.Server.GameObjects; diff --git a/Content.IntegrationTests/Tests/Chemistry/FixedPoint2SerializationTest.cs b/Content.IntegrationTests/Tests/Chemistry/FixedPoint2SerializationTest.cs index 0e3f89c282..afa26d2e0e 100644 --- a/Content.IntegrationTests/Tests/Chemistry/FixedPoint2SerializationTest.cs +++ b/Content.IntegrationTests/Tests/Chemistry/FixedPoint2SerializationTest.cs @@ -1,4 +1,4 @@ -using System.Reflection; +using System.Reflection; using Content.Shared.FixedPoint; using Robust.Shared.Serialization.Manager.Attributes; using Robust.Shared.Serialization.Markdown.Mapping; diff --git a/Content.IntegrationTests/Tests/Commands/RejuvenateTest.cs b/Content.IntegrationTests/Tests/Commands/RejuvenateTest.cs index 2b62926dc1..479f225a13 100644 --- a/Content.IntegrationTests/Tests/Commands/RejuvenateTest.cs +++ b/Content.IntegrationTests/Tests/Commands/RejuvenateTest.cs @@ -1,4 +1,4 @@ -using Content.IntegrationTests.Fixtures; +using Content.IntegrationTests.Fixtures; using Content.Shared.Administration.Systems; using Content.Shared.Damage; using Content.Shared.Damage.Components; diff --git a/Content.IntegrationTests/Tests/ConfigPresetTests.cs b/Content.IntegrationTests/Tests/ConfigPresetTests.cs index 224a5677c0..a1135790f4 100644 --- a/Content.IntegrationTests/Tests/ConfigPresetTests.cs +++ b/Content.IntegrationTests/Tests/ConfigPresetTests.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.IO; using Content.IntegrationTests.Fixtures; using Content.Server.Entry; diff --git a/Content.IntegrationTests/Tests/Engineering/InflatablesDeflateTest.cs b/Content.IntegrationTests/Tests/Engineering/InflatablesDeflateTest.cs index a7203d9259..45292b8a4b 100644 --- a/Content.IntegrationTests/Tests/Engineering/InflatablesDeflateTest.cs +++ b/Content.IntegrationTests/Tests/Engineering/InflatablesDeflateTest.cs @@ -1,4 +1,4 @@ -using Content.IntegrationTests.Tests.Interaction; +using Content.IntegrationTests.Tests.Interaction; using Content.Shared.Engineering.Systems; namespace Content.IntegrationTests.Tests.Engineering; diff --git a/Content.IntegrationTests/Tests/GameRules/AllGamePresetsStartTest.cs b/Content.IntegrationTests/Tests/GameRules/AllGamePresetsStartTest.cs index f7669dcfa6..3549d5f26a 100644 --- a/Content.IntegrationTests/Tests/GameRules/AllGamePresetsStartTest.cs +++ b/Content.IntegrationTests/Tests/GameRules/AllGamePresetsStartTest.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using Content.IntegrationTests.Fixtures.Attributes; using Content.IntegrationTests.Utility; diff --git a/Content.IntegrationTests/Tests/GameRules/AntagGhostRoleTest.cs b/Content.IntegrationTests/Tests/GameRules/AntagGhostRoleTest.cs index f507b539a5..b0119c8ec7 100644 --- a/Content.IntegrationTests/Tests/GameRules/AntagGhostRoleTest.cs +++ b/Content.IntegrationTests/Tests/GameRules/AntagGhostRoleTest.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System.Collections.Generic; using Content.IntegrationTests.Fixtures.Attributes; using Content.IntegrationTests.Utility; diff --git a/Content.IntegrationTests/Tests/GameRules/AntagTest.cs b/Content.IntegrationTests/Tests/GameRules/AntagTest.cs index f6d7a9a23b..453e5e26ab 100644 --- a/Content.IntegrationTests/Tests/GameRules/AntagTest.cs +++ b/Content.IntegrationTests/Tests/GameRules/AntagTest.cs @@ -1,4 +1,4 @@ -using Content.IntegrationTests.Fixtures; +using Content.IntegrationTests.Fixtures; using Content.IntegrationTests.Fixtures.Attributes; using Content.Server.GameTicking; using Content.Server.Mind; diff --git a/Content.IntegrationTests/Tests/GameRules/SecretStartsTest.cs b/Content.IntegrationTests/Tests/GameRules/SecretStartsTest.cs index 444660f737..07c0010185 100644 --- a/Content.IntegrationTests/Tests/GameRules/SecretStartsTest.cs +++ b/Content.IntegrationTests/Tests/GameRules/SecretStartsTest.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.IntegrationTests.Fixtures; using Content.Server.GameTicking; using Robust.Shared.GameObjects; diff --git a/Content.IntegrationTests/Tests/Gibbing/GibTest.cs b/Content.IntegrationTests/Tests/Gibbing/GibTest.cs index 23be8f028a..594e0a41c6 100644 --- a/Content.IntegrationTests/Tests/Gibbing/GibTest.cs +++ b/Content.IntegrationTests/Tests/Gibbing/GibTest.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using Content.IntegrationTests.Fixtures; using Content.Shared.Gibbing; using Robust.Shared.GameObjects; diff --git a/Content.IntegrationTests/Tests/Kitchen/HandheldGrinderInteractionTest.cs b/Content.IntegrationTests/Tests/Kitchen/HandheldGrinderInteractionTest.cs index 1b693d2802..304ee09d0f 100644 --- a/Content.IntegrationTests/Tests/Kitchen/HandheldGrinderInteractionTest.cs +++ b/Content.IntegrationTests/Tests/Kitchen/HandheldGrinderInteractionTest.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.IntegrationTests.Tests.Interaction; using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Kitchen; diff --git a/Content.IntegrationTests/Tests/MachineBoardTest.cs b/Content.IntegrationTests/Tests/MachineBoardTest.cs index 5d3bc29b66..71cdcb7cc7 100644 --- a/Content.IntegrationTests/Tests/MachineBoardTest.cs +++ b/Content.IntegrationTests/Tests/MachineBoardTest.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using Content.IntegrationTests.Fixtures; using Content.Server.Construction.Components; diff --git a/Content.IntegrationTests/Tests/MappingEditorTest.cs b/Content.IntegrationTests/Tests/MappingEditorTest.cs index 987fe7ad73..09da993936 100644 --- a/Content.IntegrationTests/Tests/MappingEditorTest.cs +++ b/Content.IntegrationTests/Tests/MappingEditorTest.cs @@ -1,4 +1,4 @@ -using Content.Client.Gameplay; +using Content.Client.Gameplay; using Content.Client.Mapping; using Content.IntegrationTests.Fixtures; using Robust.Client.State; diff --git a/Content.IntegrationTests/Tests/Minds/MindTest.DeleteAllThenGhost.cs b/Content.IntegrationTests/Tests/Minds/MindTest.DeleteAllThenGhost.cs index c207e7b489..5ebced5bd6 100644 --- a/Content.IntegrationTests/Tests/Minds/MindTest.DeleteAllThenGhost.cs +++ b/Content.IntegrationTests/Tests/Minds/MindTest.DeleteAllThenGhost.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using Robust.Shared.Console; using Robust.Shared.GameObjects; using Robust.Shared.Map; diff --git a/Content.IntegrationTests/Tests/Minds/MindTests.cs b/Content.IntegrationTests/Tests/Minds/MindTests.cs index 7abc0ce9da..173408c105 100644 --- a/Content.IntegrationTests/Tests/Minds/MindTests.cs +++ b/Content.IntegrationTests/Tests/Minds/MindTests.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System.Linq; using Content.IntegrationTests.Fixtures; using Content.Server.Ghost.Roles; diff --git a/Content.IntegrationTests/Tests/Minds/RoleTests.cs b/Content.IntegrationTests/Tests/Minds/RoleTests.cs index 3204dc1c2f..b8f1599661 100644 --- a/Content.IntegrationTests/Tests/Minds/RoleTests.cs +++ b/Content.IntegrationTests/Tests/Minds/RoleTests.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.IntegrationTests.Fixtures; using Content.Shared.Roles.Components; using Robust.Shared.GameObjects; diff --git a/Content.IntegrationTests/Tests/Puller/InteractingEntitiesTest.cs b/Content.IntegrationTests/Tests/Puller/InteractingEntitiesTest.cs index b53a9a1aad..623302dcbb 100644 --- a/Content.IntegrationTests/Tests/Puller/InteractingEntitiesTest.cs +++ b/Content.IntegrationTests/Tests/Puller/InteractingEntitiesTest.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using Content.IntegrationTests.Tests.Interaction; using Content.Shared.Interaction; using Content.Shared.Movement.Pulling.Systems; diff --git a/Content.IntegrationTests/Tests/ResettingEntitySystemTests.cs b/Content.IntegrationTests/Tests/ResettingEntitySystemTests.cs index bf646dd331..2d38f2d354 100644 --- a/Content.IntegrationTests/Tests/ResettingEntitySystemTests.cs +++ b/Content.IntegrationTests/Tests/ResettingEntitySystemTests.cs @@ -1,4 +1,4 @@ -using Content.IntegrationTests.Fixtures; +using Content.IntegrationTests.Fixtures; using Content.Server.GameTicking; using Content.Shared.GameTicking; using Robust.Shared.GameObjects; diff --git a/Content.IntegrationTests/Tests/SalvageTest.cs b/Content.IntegrationTests/Tests/SalvageTest.cs index 68bdf4726c..705b4baf7f 100644 --- a/Content.IntegrationTests/Tests/SalvageTest.cs +++ b/Content.IntegrationTests/Tests/SalvageTest.cs @@ -1,4 +1,4 @@ -using Content.IntegrationTests.Fixtures; +using Content.IntegrationTests.Fixtures; using Content.IntegrationTests.Fixtures.Attributes; using Content.Shared.CCVar; using Content.Shared.Salvage; diff --git a/Content.IntegrationTests/Tests/Strip/StrippableTest.cs b/Content.IntegrationTests/Tests/Strip/StrippableTest.cs index d2ae3bd7ec..4d8f7227af 100644 --- a/Content.IntegrationTests/Tests/Strip/StrippableTest.cs +++ b/Content.IntegrationTests/Tests/Strip/StrippableTest.cs @@ -1,4 +1,4 @@ -using Content.IntegrationTests.Tests.Interaction; +using Content.IntegrationTests.Tests.Interaction; using Content.Shared.Strip.Components; using Robust.Shared.GameObjects; diff --git a/Content.IntegrationTests/Tests/Toolshed/AdminTest.cs b/Content.IntegrationTests/Tests/Toolshed/AdminTest.cs index cc440d0ccb..e8e27518c2 100644 --- a/Content.IntegrationTests/Tests/Toolshed/AdminTest.cs +++ b/Content.IntegrationTests/Tests/Toolshed/AdminTest.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Reflection; using Content.Server.Administration.Managers; using Robust.Shared.Toolshed; diff --git a/Content.IntegrationTests/Tests/Toolshed/LocTest.cs b/Content.IntegrationTests/Tests/Toolshed/LocTest.cs index 849f9e55d3..6d936878d6 100644 --- a/Content.IntegrationTests/Tests/Toolshed/LocTest.cs +++ b/Content.IntegrationTests/Tests/Toolshed/LocTest.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Globalization; using System.Reflection; using Robust.Shared.Localization; diff --git a/Content.IntegrationTests/Tests/Utility/EntitySystemExtensionsTest.cs b/Content.IntegrationTests/Tests/Utility/EntitySystemExtensionsTest.cs index 6ab5ca1691..bfe8db778e 100644 --- a/Content.IntegrationTests/Tests/Utility/EntitySystemExtensionsTest.cs +++ b/Content.IntegrationTests/Tests/Utility/EntitySystemExtensionsTest.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using Content.IntegrationTests.Fixtures; using Content.Shared.Physics; using Content.Shared.Spawning; diff --git a/Content.IntegrationTests/Tests/Weapons/WeaponTests.cs b/Content.IntegrationTests/Tests/Weapons/WeaponTests.cs index 8ddbe0ed08..2d3f5be2be 100644 --- a/Content.IntegrationTests/Tests/Weapons/WeaponTests.cs +++ b/Content.IntegrationTests/Tests/Weapons/WeaponTests.cs @@ -1,4 +1,4 @@ -using Content.IntegrationTests.Tests.Interaction; +using Content.IntegrationTests.Tests.Interaction; using Content.Shared.Damage.Components; using Content.Shared.Damage.Systems; using Content.Shared.FixedPoint; diff --git a/Content.IntegrationTests/Tests/Wires/WireLayoutTest.cs b/Content.IntegrationTests/Tests/Wires/WireLayoutTest.cs index d9801275b9..47801946a3 100644 --- a/Content.IntegrationTests/Tests/Wires/WireLayoutTest.cs +++ b/Content.IntegrationTests/Tests/Wires/WireLayoutTest.cs @@ -1,4 +1,4 @@ -using Content.IntegrationTests.Fixtures; +using Content.IntegrationTests.Fixtures; using Content.Server.Doors; using Content.Server.Power; using Content.Server.Wires; diff --git a/Content.MapRenderer/CommandLineArguments.cs b/Content.MapRenderer/CommandLineArguments.cs index a4f3c83bf2..e028995dea 100644 --- a/Content.MapRenderer/CommandLineArguments.cs +++ b/Content.MapRenderer/CommandLineArguments.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using Content.MapRenderer.Extensions; diff --git a/Content.MapRenderer/Extensions/DirectoryExtensions.cs b/Content.MapRenderer/Extensions/DirectoryExtensions.cs index 55d4611a7e..216fda065a 100644 --- a/Content.MapRenderer/Extensions/DirectoryExtensions.cs +++ b/Content.MapRenderer/Extensions/DirectoryExtensions.cs @@ -1,4 +1,4 @@ -using System.IO; +using System.IO; using System.Reflection; namespace Content.MapRenderer.Extensions diff --git a/Content.MapRenderer/Extensions/EnvironmentExtensions.cs b/Content.MapRenderer/Extensions/EnvironmentExtensions.cs index 34a379096f..58d0d49a52 100644 --- a/Content.MapRenderer/Extensions/EnvironmentExtensions.cs +++ b/Content.MapRenderer/Extensions/EnvironmentExtensions.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using System.Diagnostics.CodeAnalysis; diff --git a/Content.MapRenderer/MapViewerData.cs b/Content.MapRenderer/MapViewerData.cs index b58d0c664b..9d3ce08d69 100644 --- a/Content.MapRenderer/MapViewerData.cs +++ b/Content.MapRenderer/MapViewerData.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Numerics; using System.Text.Json.Serialization; using Robust.Shared.ContentPack; diff --git a/Content.MapRenderer/Painters/DecalData.cs b/Content.MapRenderer/Painters/DecalData.cs index c64d4ff6ff..b76113d670 100644 --- a/Content.MapRenderer/Painters/DecalData.cs +++ b/Content.MapRenderer/Painters/DecalData.cs @@ -1,4 +1,4 @@ -using Content.Shared.Decals; +using Content.Shared.Decals; namespace Content.MapRenderer.Painters; diff --git a/Content.MapRenderer/Painters/DecalPainter.cs b/Content.MapRenderer/Painters/DecalPainter.cs index acc9e5615a..9e68fe4548 100644 --- a/Content.MapRenderer/Painters/DecalPainter.cs +++ b/Content.MapRenderer/Painters/DecalPainter.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.IO; using System.Numerics; diff --git a/Content.MapRenderer/Painters/EntityData.cs b/Content.MapRenderer/Painters/EntityData.cs index 8aad0c7e93..0219a97f8e 100644 --- a/Content.MapRenderer/Painters/EntityData.cs +++ b/Content.MapRenderer/Painters/EntityData.cs @@ -1,4 +1,4 @@ -using Robust.Client.GameObjects; +using Robust.Client.GameObjects; using Robust.Shared.GameObjects; namespace Content.MapRenderer.Painters; diff --git a/Content.MapRenderer/Painters/EntityPainter.cs b/Content.MapRenderer/Painters/EntityPainter.cs index 0c751b8583..a2abc2bbf3 100644 --- a/Content.MapRenderer/Painters/EntityPainter.cs +++ b/Content.MapRenderer/Painters/EntityPainter.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Numerics; using Robust.Client.GameObjects; diff --git a/Content.MapRenderer/ParallaxOutput.cs b/Content.MapRenderer/ParallaxOutput.cs index bedbb1dc53..f8f656fca9 100644 --- a/Content.MapRenderer/ParallaxOutput.cs +++ b/Content.MapRenderer/ParallaxOutput.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.IO; using Robust.Shared.ContentPack; using Robust.Shared.Utility; diff --git a/Content.MapRenderer/Program.cs b/Content.MapRenderer/Program.cs index 668e04f63d..dc2f07b6fa 100644 --- a/Content.MapRenderer/Program.cs +++ b/Content.MapRenderer/Program.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using System.Collections.Generic; using System.IO; diff --git a/Content.MapRenderer/RenderedGridImage.cs b/Content.MapRenderer/RenderedGridImage.cs index c460853c37..9a3e232147 100644 --- a/Content.MapRenderer/RenderedGridImage.cs +++ b/Content.MapRenderer/RenderedGridImage.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Robust.Shared.GameObjects; using Robust.Shared.Maths; using SixLabors.ImageSharp; diff --git a/Content.Packaging/ClientPackaging.cs b/Content.Packaging/ClientPackaging.cs index f17ebf5d20..7d27e03858 100644 --- a/Content.Packaging/ClientPackaging.cs +++ b/Content.Packaging/ClientPackaging.cs @@ -1,4 +1,4 @@ -using System.Diagnostics; +using System.Diagnostics; using System.IO.Compression; using Robust.Packaging; using Robust.Packaging.AssetProcessing; diff --git a/Content.Packaging/DepsHandler.cs b/Content.Packaging/DepsHandler.cs index 9907b97ba9..eddb0b8911 100644 --- a/Content.Packaging/DepsHandler.cs +++ b/Content.Packaging/DepsHandler.cs @@ -1,4 +1,4 @@ -using System.Text.Json; +using System.Text.Json; using System.Text.Json.Serialization; namespace Content.Packaging; diff --git a/Content.Packaging/Program.cs b/Content.Packaging/Program.cs index 25fc550a2f..19e6bc0466 100644 --- a/Content.Packaging/Program.cs +++ b/Content.Packaging/Program.cs @@ -1,4 +1,4 @@ -using Content.Packaging; +using Content.Packaging; using Robust.Packaging; IPackageLogger logger = new PackageLoggerConsole(); diff --git a/Content.Packaging/SharedPackaging.cs b/Content.Packaging/SharedPackaging.cs index 5888845588..dbc5ccab39 100644 --- a/Content.Packaging/SharedPackaging.cs +++ b/Content.Packaging/SharedPackaging.cs @@ -1,4 +1,4 @@ -namespace Content.Packaging; +namespace Content.Packaging; public sealed class SharedPackaging { diff --git a/Content.PatreonParser/Attributes.cs b/Content.PatreonParser/Attributes.cs index d3ebeb5f7c..f9307a2450 100644 --- a/Content.PatreonParser/Attributes.cs +++ b/Content.PatreonParser/Attributes.cs @@ -1,4 +1,4 @@ -using System.Text.Json.Serialization; +using System.Text.Json.Serialization; namespace Content.PatreonParser; diff --git a/Content.PatreonParser/CurrentlyEntitledTiers.cs b/Content.PatreonParser/CurrentlyEntitledTiers.cs index fd1747efda..a49f1efc71 100644 --- a/Content.PatreonParser/CurrentlyEntitledTiers.cs +++ b/Content.PatreonParser/CurrentlyEntitledTiers.cs @@ -1,4 +1,4 @@ -using System.Text.Json.Serialization; +using System.Text.Json.Serialization; namespace Content.PatreonParser; diff --git a/Content.PatreonParser/Data.cs b/Content.PatreonParser/Data.cs index cdc7d79bff..f3315435c6 100644 --- a/Content.PatreonParser/Data.cs +++ b/Content.PatreonParser/Data.cs @@ -1,4 +1,4 @@ -using System.Text.Json.Serialization; +using System.Text.Json.Serialization; namespace Content.PatreonParser; diff --git a/Content.PatreonParser/Included.cs b/Content.PatreonParser/Included.cs index ec3363579b..8c46ebe62a 100644 --- a/Content.PatreonParser/Included.cs +++ b/Content.PatreonParser/Included.cs @@ -1,4 +1,4 @@ -using System.Text.Json.Serialization; +using System.Text.Json.Serialization; namespace Content.PatreonParser; diff --git a/Content.PatreonParser/Patron.cs b/Content.PatreonParser/Patron.cs index d9943a6a26..fe54b4663d 100644 --- a/Content.PatreonParser/Patron.cs +++ b/Content.PatreonParser/Patron.cs @@ -1,3 +1,3 @@ -namespace Content.PatreonParser; +namespace Content.PatreonParser; public readonly record struct Patron(string FullName, string TierName, DateTime Start); diff --git a/Content.PatreonParser/Program.cs b/Content.PatreonParser/Program.cs index ff6646eda3..fd1108fb76 100644 --- a/Content.PatreonParser/Program.cs +++ b/Content.PatreonParser/Program.cs @@ -1,4 +1,4 @@ -using System.Globalization; +using System.Globalization; using System.Text.Json; using System.Text.Json.Serialization; using Content.PatreonParser; diff --git a/Content.PatreonParser/Relationships.cs b/Content.PatreonParser/Relationships.cs index f919f812f6..6b6da799e3 100644 --- a/Content.PatreonParser/Relationships.cs +++ b/Content.PatreonParser/Relationships.cs @@ -1,4 +1,4 @@ -using System.Text.Json.Serialization; +using System.Text.Json.Serialization; namespace Content.PatreonParser; diff --git a/Content.PatreonParser/Root.cs b/Content.PatreonParser/Root.cs index 2a772a1214..b2cfffe714 100644 --- a/Content.PatreonParser/Root.cs +++ b/Content.PatreonParser/Root.cs @@ -1,4 +1,4 @@ -using System.Text.Json.Serialization; +using System.Text.Json.Serialization; namespace Content.PatreonParser; diff --git a/Content.PatreonParser/Row.cs b/Content.PatreonParser/Row.cs index f4d2504616..62d700e5c5 100644 --- a/Content.PatreonParser/Row.cs +++ b/Content.PatreonParser/Row.cs @@ -1,4 +1,4 @@ -using CsvHelper.Configuration.Attributes; +using CsvHelper.Configuration.Attributes; namespace Content.PatreonParser; diff --git a/Content.PatreonParser/TierData.cs b/Content.PatreonParser/TierData.cs index a840b21d35..a8b342a399 100644 --- a/Content.PatreonParser/TierData.cs +++ b/Content.PatreonParser/TierData.cs @@ -1,4 +1,4 @@ -using System.Text.Json.Serialization; +using System.Text.Json.Serialization; namespace Content.PatreonParser; diff --git a/Content.Replay/Menu/SelectReplayWindow.xaml.cs b/Content.Replay/Menu/SelectReplayWindow.xaml.cs index 5e765bb04c..c567860b2a 100644 --- a/Content.Replay/Menu/SelectReplayWindow.xaml.cs +++ b/Content.Replay/Menu/SelectReplayWindow.xaml.cs @@ -1,4 +1,4 @@ -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Server.Database/DesignTimeContextFactories.cs b/Content.Server.Database/DesignTimeContextFactories.cs index 8699b25824..aa9b78b437 100644 --- a/Content.Server.Database/DesignTimeContextFactories.cs +++ b/Content.Server.Database/DesignTimeContextFactories.cs @@ -1,4 +1,4 @@ -#if TOOLS +#if TOOLS using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Design; diff --git a/Content.Server.Database/Migrations/Postgres/20200929113117_Init.Designer.cs b/Content.Server.Database/Migrations/Postgres/20200929113117_Init.Designer.cs index 24f55b1f95..b98e9909a6 100644 --- a/Content.Server.Database/Migrations/Postgres/20200929113117_Init.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20200929113117_Init.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using Content.Server.Database; diff --git a/Content.Server.Database/Migrations/Postgres/20200929113117_Init.cs b/Content.Server.Database/Migrations/Postgres/20200929113117_Init.cs index eea30ffa1c..5c6e2e8bf9 100644 --- a/Content.Server.Database/Migrations/Postgres/20200929113117_Init.cs +++ b/Content.Server.Database/Migrations/Postgres/20200929113117_Init.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Net; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; diff --git a/Content.Server.Database/Migrations/Postgres/20201006223000_SelectedCharacterSlotFk.cs b/Content.Server.Database/Migrations/Postgres/20201006223000_SelectedCharacterSlotFk.cs index 0aecbee273..11e2bc1528 100644 --- a/Content.Server.Database/Migrations/Postgres/20201006223000_SelectedCharacterSlotFk.cs +++ b/Content.Server.Database/Migrations/Postgres/20201006223000_SelectedCharacterSlotFk.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; namespace Content.Server.Database.Migrations.Postgres diff --git a/Content.Server.Database/Migrations/Postgres/20201028210620_Admins.Designer.cs b/Content.Server.Database/Migrations/Postgres/20201028210620_Admins.Designer.cs index ae0daea2ad..62bb943b87 100644 --- a/Content.Server.Database/Migrations/Postgres/20201028210620_Admins.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20201028210620_Admins.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using Content.Server.Database; diff --git a/Content.Server.Database/Migrations/Postgres/20201028210620_Admins.cs b/Content.Server.Database/Migrations/Postgres/20201028210620_Admins.cs index 02514652da..c29338c1dd 100644 --- a/Content.Server.Database/Migrations/Postgres/20201028210620_Admins.cs +++ b/Content.Server.Database/Migrations/Postgres/20201028210620_Admins.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; diff --git a/Content.Server.Database/Migrations/Postgres/20201109092921_ExtraIndices.Designer.cs b/Content.Server.Database/Migrations/Postgres/20201109092921_ExtraIndices.Designer.cs index ce41855793..056d4db9f6 100644 --- a/Content.Server.Database/Migrations/Postgres/20201109092921_ExtraIndices.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20201109092921_ExtraIndices.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using Content.Server.Database; diff --git a/Content.Server.Database/Migrations/Postgres/20201109092921_ExtraIndices.cs b/Content.Server.Database/Migrations/Postgres/20201109092921_ExtraIndices.cs index 5521f82d27..3e41c998e4 100644 --- a/Content.Server.Database/Migrations/Postgres/20201109092921_ExtraIndices.cs +++ b/Content.Server.Database/Migrations/Postgres/20201109092921_ExtraIndices.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; namespace Content.Server.Database.Migrations.Postgres { diff --git a/Content.Server.Database/Migrations/Postgres/20201203093409_ClothingAndPronouns.Designer.cs b/Content.Server.Database/Migrations/Postgres/20201203093409_ClothingAndPronouns.Designer.cs index 9fd3c7c83d..3565b41f6a 100644 --- a/Content.Server.Database/Migrations/Postgres/20201203093409_ClothingAndPronouns.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20201203093409_ClothingAndPronouns.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using Content.Server.Database; diff --git a/Content.Server.Database/Migrations/Postgres/20201203093409_ClothingAndPronouns.cs b/Content.Server.Database/Migrations/Postgres/20201203093409_ClothingAndPronouns.cs index ec7318fc4b..b9ae827785 100644 --- a/Content.Server.Database/Migrations/Postgres/20201203093409_ClothingAndPronouns.cs +++ b/Content.Server.Database/Migrations/Postgres/20201203093409_ClothingAndPronouns.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; namespace Content.Server.Database.Migrations.Postgres { diff --git a/Content.Server.Database/Migrations/Postgres/20210103151756_BackpackPreference.Designer.cs b/Content.Server.Database/Migrations/Postgres/20210103151756_BackpackPreference.Designer.cs index 1a66e59863..1491a10574 100644 --- a/Content.Server.Database/Migrations/Postgres/20210103151756_BackpackPreference.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20210103151756_BackpackPreference.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using Content.Server.Database; diff --git a/Content.Server.Database/Migrations/Postgres/20210103151756_BackpackPreference.cs b/Content.Server.Database/Migrations/Postgres/20210103151756_BackpackPreference.cs index 0c5a7356bb..2fd3dc33bb 100644 --- a/Content.Server.Database/Migrations/Postgres/20210103151756_BackpackPreference.cs +++ b/Content.Server.Database/Migrations/Postgres/20210103151756_BackpackPreference.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; namespace Content.Server.Database.Migrations.Postgres { diff --git a/Content.Server.Database/Migrations/Postgres/20210211211033_AdminOOCColor.Designer.cs b/Content.Server.Database/Migrations/Postgres/20210211211033_AdminOOCColor.Designer.cs index e5341a532d..a9cc5c4d34 100644 --- a/Content.Server.Database/Migrations/Postgres/20210211211033_AdminOOCColor.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20210211211033_AdminOOCColor.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using Content.Server.Database; diff --git a/Content.Server.Database/Migrations/Postgres/20210211211033_AdminOOCColor.cs b/Content.Server.Database/Migrations/Postgres/20210211211033_AdminOOCColor.cs index 5c3235d354..55f7ca115b 100644 --- a/Content.Server.Database/Migrations/Postgres/20210211211033_AdminOOCColor.cs +++ b/Content.Server.Database/Migrations/Postgres/20210211211033_AdminOOCColor.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; namespace Content.Server.Database.Migrations.Postgres { diff --git a/Content.Server.Database/Migrations/Postgres/20210321230012_HWID.Designer.cs b/Content.Server.Database/Migrations/Postgres/20210321230012_HWID.Designer.cs index ce4962fb34..879536733c 100644 --- a/Content.Server.Database/Migrations/Postgres/20210321230012_HWID.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20210321230012_HWID.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using Content.Server.Database; diff --git a/Content.Server.Database/Migrations/Postgres/20210321230012_HWID.cs b/Content.Server.Database/Migrations/Postgres/20210321230012_HWID.cs index e44d741394..24835ba436 100644 --- a/Content.Server.Database/Migrations/Postgres/20210321230012_HWID.cs +++ b/Content.Server.Database/Migrations/Postgres/20210321230012_HWID.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; namespace Content.Server.Database.Migrations.Postgres { diff --git a/Content.Server.Database/Migrations/Postgres/20210915093340_UniqueHighPriorityJob.Designer.cs b/Content.Server.Database/Migrations/Postgres/20210915093340_UniqueHighPriorityJob.Designer.cs index 633c92b6a2..6822ebcfbc 100644 --- a/Content.Server.Database/Migrations/Postgres/20210915093340_UniqueHighPriorityJob.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20210915093340_UniqueHighPriorityJob.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using Content.Server.Database; diff --git a/Content.Server.Database/Migrations/Postgres/20210915093340_UniqueHighPriorityJob.cs b/Content.Server.Database/Migrations/Postgres/20210915093340_UniqueHighPriorityJob.cs index ae09e9a9a5..a21cc42124 100644 --- a/Content.Server.Database/Migrations/Postgres/20210915093340_UniqueHighPriorityJob.cs +++ b/Content.Server.Database/Migrations/Postgres/20210915093340_UniqueHighPriorityJob.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; namespace Content.Server.Database.Migrations.Postgres { diff --git a/Content.Server.Database/Migrations/Postgres/20211120202701_AdminLogs.Designer.cs b/Content.Server.Database/Migrations/Postgres/20211120202701_AdminLogs.Designer.cs index 9a55ce493c..391b208d09 100644 --- a/Content.Server.Database/Migrations/Postgres/20211120202701_AdminLogs.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20211120202701_AdminLogs.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20211120202701_AdminLogs.cs b/Content.Server.Database/Migrations/Postgres/20211120202701_AdminLogs.cs index f024165d0a..888cc367a3 100644 --- a/Content.Server.Database/Migrations/Postgres/20211120202701_AdminLogs.cs +++ b/Content.Server.Database/Migrations/Postgres/20211120202701_AdminLogs.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Text.Json; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; diff --git a/Content.Server.Database/Migrations/Postgres/20211121123543_AdminLogsImpact.Designer.cs b/Content.Server.Database/Migrations/Postgres/20211121123543_AdminLogsImpact.Designer.cs index fc54389ec2..8a1deff05b 100644 --- a/Content.Server.Database/Migrations/Postgres/20211121123543_AdminLogsImpact.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20211121123543_AdminLogsImpact.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20211121123543_AdminLogsImpact.cs b/Content.Server.Database/Migrations/Postgres/20211121123543_AdminLogsImpact.cs index 736a63a187..6d16de98d2 100644 --- a/Content.Server.Database/Migrations/Postgres/20211121123543_AdminLogsImpact.cs +++ b/Content.Server.Database/Migrations/Postgres/20211121123543_AdminLogsImpact.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/20220103235647_whitelist.Designer.cs b/Content.Server.Database/Migrations/Postgres/20220103235647_whitelist.Designer.cs index d0b203f14e..27e5df8476 100644 --- a/Content.Server.Database/Migrations/Postgres/20220103235647_whitelist.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20220103235647_whitelist.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20220103235647_whitelist.cs b/Content.Server.Database/Migrations/Postgres/20220103235647_whitelist.cs index 5a0632feb1..a4e92b0779 100644 --- a/Content.Server.Database/Migrations/Postgres/20220103235647_whitelist.cs +++ b/Content.Server.Database/Migrations/Postgres/20220103235647_whitelist.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/20220108185749_add-species.Designer.cs b/Content.Server.Database/Migrations/Postgres/20220108185749_add-species.Designer.cs index 0d3ad481aa..c7d3d8befd 100644 --- a/Content.Server.Database/Migrations/Postgres/20220108185749_add-species.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20220108185749_add-species.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20220108185749_add-species.cs b/Content.Server.Database/Migrations/Postgres/20220108185749_add-species.cs index a5abc2d4dd..69bff2ffa8 100644 --- a/Content.Server.Database/Migrations/Postgres/20220108185749_add-species.cs +++ b/Content.Server.Database/Migrations/Postgres/20220108185749_add-species.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/20220127170845_UnifyMore.Designer.cs b/Content.Server.Database/Migrations/Postgres/20220127170845_UnifyMore.Designer.cs index 4f3669b3a0..2382ee0c25 100644 --- a/Content.Server.Database/Migrations/Postgres/20220127170845_UnifyMore.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20220127170845_UnifyMore.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20220127170845_UnifyMore.cs b/Content.Server.Database/Migrations/Postgres/20220127170845_UnifyMore.cs index 0f8f07dba7..a65ed0c895 100644 --- a/Content.Server.Database/Migrations/Postgres/20220127170845_UnifyMore.cs +++ b/Content.Server.Database/Migrations/Postgres/20220127170845_UnifyMore.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/20220129005644_ServerBanHit.Designer.cs b/Content.Server.Database/Migrations/Postgres/20220129005644_ServerBanHit.Designer.cs index deebafcc26..43ecd35deb 100644 --- a/Content.Server.Database/Migrations/Postgres/20220129005644_ServerBanHit.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20220129005644_ServerBanHit.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20220129005644_ServerBanHit.cs b/Content.Server.Database/Migrations/Postgres/20220129005644_ServerBanHit.cs index 4c830eccde..c45fc5893c 100644 --- a/Content.Server.Database/Migrations/Postgres/20220129005644_ServerBanHit.cs +++ b/Content.Server.Database/Migrations/Postgres/20220129005644_ServerBanHit.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/20220214061058_RoleBans.Designer.cs b/Content.Server.Database/Migrations/Postgres/20220214061058_RoleBans.Designer.cs index 14621dd08a..877b12f42f 100644 --- a/Content.Server.Database/Migrations/Postgres/20220214061058_RoleBans.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20220214061058_RoleBans.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20220214061058_RoleBans.cs b/Content.Server.Database/Migrations/Postgres/20220214061058_RoleBans.cs index 477356abe1..3825ebc637 100644 --- a/Content.Server.Database/Migrations/Postgres/20220214061058_RoleBans.cs +++ b/Content.Server.Database/Migrations/Postgres/20220214061058_RoleBans.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Net; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; diff --git a/Content.Server.Database/Migrations/Postgres/20220308222742_Cleanup.Designer.cs b/Content.Server.Database/Migrations/Postgres/20220308222742_Cleanup.Designer.cs index f0fa212cbf..71dfb9b86f 100644 --- a/Content.Server.Database/Migrations/Postgres/20220308222742_Cleanup.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20220308222742_Cleanup.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20220308222742_Cleanup.cs b/Content.Server.Database/Migrations/Postgres/20220308222742_Cleanup.cs index 54e9eb9b9b..8fb0e2b500 100644 --- a/Content.Server.Database/Migrations/Postgres/20220308222742_Cleanup.cs +++ b/Content.Server.Database/Migrations/Postgres/20220308222742_Cleanup.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/20220310173734_SpeciesMarkings.Designer.cs b/Content.Server.Database/Migrations/Postgres/20220310173734_SpeciesMarkings.Designer.cs index 98c555da7a..a14624442e 100644 --- a/Content.Server.Database/Migrations/Postgres/20220310173734_SpeciesMarkings.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20220310173734_SpeciesMarkings.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20220310173734_SpeciesMarkings.cs b/Content.Server.Database/Migrations/Postgres/20220310173734_SpeciesMarkings.cs index ce5dcc6156..1214c59a72 100644 --- a/Content.Server.Database/Migrations/Postgres/20220310173734_SpeciesMarkings.cs +++ b/Content.Server.Database/Migrations/Postgres/20220310173734_SpeciesMarkings.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/20220313151800_ServerNameFts.Designer.cs b/Content.Server.Database/Migrations/Postgres/20220313151800_ServerNameFts.Designer.cs index 2406a71c75..98cec35ec3 100644 --- a/Content.Server.Database/Migrations/Postgres/20220313151800_ServerNameFts.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20220313151800_ServerNameFts.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20220313151800_ServerNameFts.cs b/Content.Server.Database/Migrations/Postgres/20220313151800_ServerNameFts.cs index 35eb96ad8f..90ac35c9a0 100644 --- a/Content.Server.Database/Migrations/Postgres/20220313151800_ServerNameFts.cs +++ b/Content.Server.Database/Migrations/Postgres/20220313151800_ServerNameFts.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/20220324144654_AdminNotes.Designer.cs b/Content.Server.Database/Migrations/Postgres/20220324144654_AdminNotes.Designer.cs index f18d160011..98ebf17568 100644 --- a/Content.Server.Database/Migrations/Postgres/20220324144654_AdminNotes.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20220324144654_AdminNotes.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20220324144654_AdminNotes.cs b/Content.Server.Database/Migrations/Postgres/20220324144654_AdminNotes.cs index 41d2408f50..e4ef0d86a6 100644 --- a/Content.Server.Database/Migrations/Postgres/20220324144654_AdminNotes.cs +++ b/Content.Server.Database/Migrations/Postgres/20220324144654_AdminNotes.cs @@ -1,4 +1,4 @@ -#nullable disable +#nullable disable using System; using Microsoft.EntityFrameworkCore.Migrations; diff --git a/Content.Server.Database/Migrations/Postgres/20220325170225_PlayerReadRules.Designer.cs b/Content.Server.Database/Migrations/Postgres/20220325170225_PlayerReadRules.Designer.cs index a31dddd26f..cf1835ab34 100644 --- a/Content.Server.Database/Migrations/Postgres/20220325170225_PlayerReadRules.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20220325170225_PlayerReadRules.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20220325170225_PlayerReadRules.cs b/Content.Server.Database/Migrations/Postgres/20220325170225_PlayerReadRules.cs index f58b2ec842..c43ef00a82 100644 --- a/Content.Server.Database/Migrations/Postgres/20220325170225_PlayerReadRules.cs +++ b/Content.Server.Database/Migrations/Postgres/20220325170225_PlayerReadRules.cs @@ -1,4 +1,4 @@ -#nullable disable +#nullable disable using System; using Microsoft.EntityFrameworkCore.Migrations; diff --git a/Content.Server.Database/Migrations/Postgres/20220326104916_UploadedResourcesLog.Designer.cs b/Content.Server.Database/Migrations/Postgres/20220326104916_UploadedResourcesLog.Designer.cs index b2d90fcae3..a5c1ffbd6f 100644 --- a/Content.Server.Database/Migrations/Postgres/20220326104916_UploadedResourcesLog.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20220326104916_UploadedResourcesLog.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20220326104916_UploadedResourcesLog.cs b/Content.Server.Database/Migrations/Postgres/20220326104916_UploadedResourcesLog.cs index 3ad9c7cc4d..62be2f0843 100644 --- a/Content.Server.Database/Migrations/Postgres/20220326104916_UploadedResourcesLog.cs +++ b/Content.Server.Database/Migrations/Postgres/20220326104916_UploadedResourcesLog.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; diff --git a/Content.Server.Database/Migrations/Postgres/20220503222955_FixIndices.Designer.cs b/Content.Server.Database/Migrations/Postgres/20220503222955_FixIndices.Designer.cs index 7ef408fb47..fdc7e91f17 100644 --- a/Content.Server.Database/Migrations/Postgres/20220503222955_FixIndices.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20220503222955_FixIndices.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20220503222955_FixIndices.cs b/Content.Server.Database/Migrations/Postgres/20220503222955_FixIndices.cs index 3420a0ebc1..ad79cc49b5 100644 --- a/Content.Server.Database/Migrations/Postgres/20220503222955_FixIndices.cs +++ b/Content.Server.Database/Migrations/Postgres/20220503222955_FixIndices.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/20220505084828_MarkingsJsonb.Designer.cs b/Content.Server.Database/Migrations/Postgres/20220505084828_MarkingsJsonb.Designer.cs index 5290735212..aec2c627a8 100644 --- a/Content.Server.Database/Migrations/Postgres/20220505084828_MarkingsJsonb.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20220505084828_MarkingsJsonb.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20220505084828_MarkingsJsonb.cs b/Content.Server.Database/Migrations/Postgres/20220505084828_MarkingsJsonb.cs index 0f6cb09159..d15a63038b 100644 --- a/Content.Server.Database/Migrations/Postgres/20220505084828_MarkingsJsonb.cs +++ b/Content.Server.Database/Migrations/Postgres/20220505084828_MarkingsJsonb.cs @@ -1,4 +1,4 @@ -#nullable disable +#nullable disable using System.Text.Json; using Microsoft.EntityFrameworkCore.Migrations; diff --git a/Content.Server.Database/Migrations/Postgres/20220509060724_FlavorText.Designer.cs b/Content.Server.Database/Migrations/Postgres/20220509060724_FlavorText.Designer.cs index 03ccbc04a7..a52aa4bab2 100644 --- a/Content.Server.Database/Migrations/Postgres/20220509060724_FlavorText.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20220509060724_FlavorText.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20220509060724_FlavorText.cs b/Content.Server.Database/Migrations/Postgres/20220509060724_FlavorText.cs index 64bfc8a84b..34f29cfea0 100644 --- a/Content.Server.Database/Migrations/Postgres/20220509060724_FlavorText.cs +++ b/Content.Server.Database/Migrations/Postgres/20220509060724_FlavorText.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/20220724000132_PlayTime.Designer.cs b/Content.Server.Database/Migrations/Postgres/20220724000132_PlayTime.Designer.cs index 9fe51c0af6..68068157f6 100644 --- a/Content.Server.Database/Migrations/Postgres/20220724000132_PlayTime.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20220724000132_PlayTime.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20220724000132_PlayTime.cs b/Content.Server.Database/Migrations/Postgres/20220724000132_PlayTime.cs index 811bee45cc..0d3338062b 100644 --- a/Content.Server.Database/Migrations/Postgres/20220724000132_PlayTime.cs +++ b/Content.Server.Database/Migrations/Postgres/20220724000132_PlayTime.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; diff --git a/Content.Server.Database/Migrations/Postgres/20230319110655_ProfileTraitIndexUnique.Designer.cs b/Content.Server.Database/Migrations/Postgres/20230319110655_ProfileTraitIndexUnique.Designer.cs index 727891533e..d1666e5147 100644 --- a/Content.Server.Database/Migrations/Postgres/20230319110655_ProfileTraitIndexUnique.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20230319110655_ProfileTraitIndexUnique.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20230319110655_ProfileTraitIndexUnique.cs b/Content.Server.Database/Migrations/Postgres/20230319110655_ProfileTraitIndexUnique.cs index 4453b6070e..efdf7365dc 100644 --- a/Content.Server.Database/Migrations/Postgres/20230319110655_ProfileTraitIndexUnique.cs +++ b/Content.Server.Database/Migrations/Postgres/20230319110655_ProfileTraitIndexUnique.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/20230402214647_BanAutoDelete.Designer.cs b/Content.Server.Database/Migrations/Postgres/20230402214647_BanAutoDelete.Designer.cs index 9786a0c413..4f2591baec 100644 --- a/Content.Server.Database/Migrations/Postgres/20230402214647_BanAutoDelete.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20230402214647_BanAutoDelete.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20230402214647_BanAutoDelete.cs b/Content.Server.Database/Migrations/Postgres/20230402214647_BanAutoDelete.cs index 65960b93b1..d1a78a5e10 100644 --- a/Content.Server.Database/Migrations/Postgres/20230402214647_BanAutoDelete.cs +++ b/Content.Server.Database/Migrations/Postgres/20230402214647_BanAutoDelete.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/20230725193102_AdminNotesImprovementsForeignKeys.Designer.cs b/Content.Server.Database/Migrations/Postgres/20230725193102_AdminNotesImprovementsForeignKeys.Designer.cs index f3ccf61d6d..68a8472de2 100644 --- a/Content.Server.Database/Migrations/Postgres/20230725193102_AdminNotesImprovementsForeignKeys.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20230725193102_AdminNotesImprovementsForeignKeys.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20230725193102_AdminNotesImprovementsForeignKeys.cs b/Content.Server.Database/Migrations/Postgres/20230725193102_AdminNotesImprovementsForeignKeys.cs index e3e407ac10..fbd266b382 100644 --- a/Content.Server.Database/Migrations/Postgres/20230725193102_AdminNotesImprovementsForeignKeys.cs +++ b/Content.Server.Database/Migrations/Postgres/20230725193102_AdminNotesImprovementsForeignKeys.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/20230727190902_AdminLogCompoundKey.Designer.cs b/Content.Server.Database/Migrations/Postgres/20230727190902_AdminLogCompoundKey.Designer.cs index 0a25569f5d..599692706a 100644 --- a/Content.Server.Database/Migrations/Postgres/20230727190902_AdminLogCompoundKey.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20230727190902_AdminLogCompoundKey.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20230727190902_AdminLogCompoundKey.cs b/Content.Server.Database/Migrations/Postgres/20230727190902_AdminLogCompoundKey.cs index 048c6195de..12d2679017 100644 --- a/Content.Server.Database/Migrations/Postgres/20230727190902_AdminLogCompoundKey.cs +++ b/Content.Server.Database/Migrations/Postgres/20230727190902_AdminLogCompoundKey.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/20231021071411_RoundStartDate.Designer.cs b/Content.Server.Database/Migrations/Postgres/20231021071411_RoundStartDate.Designer.cs index bf3600ba39..3fa6c9cf52 100644 --- a/Content.Server.Database/Migrations/Postgres/20231021071411_RoundStartDate.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20231021071411_RoundStartDate.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20231021071411_RoundStartDate.cs b/Content.Server.Database/Migrations/Postgres/20231021071411_RoundStartDate.cs index d98b4e45a8..8d9c5dd5e4 100644 --- a/Content.Server.Database/Migrations/Postgres/20231021071411_RoundStartDate.cs +++ b/Content.Server.Database/Migrations/Postgres/20231021071411_RoundStartDate.cs @@ -1,4 +1,4 @@ -#nullable disable +#nullable disable using System; using Microsoft.EntityFrameworkCore.Migrations; diff --git a/Content.Server.Database/Migrations/Postgres/20231024041204_DropAdminLogEntity.Designer.cs b/Content.Server.Database/Migrations/Postgres/20231024041204_DropAdminLogEntity.Designer.cs index 5c81f0468d..1137d9c756 100644 --- a/Content.Server.Database/Migrations/Postgres/20231024041204_DropAdminLogEntity.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20231024041204_DropAdminLogEntity.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20231024041204_DropAdminLogEntity.cs b/Content.Server.Database/Migrations/Postgres/20231024041204_DropAdminLogEntity.cs index ec9c2e9a6c..e8cb832ffa 100644 --- a/Content.Server.Database/Migrations/Postgres/20231024041204_DropAdminLogEntity.cs +++ b/Content.Server.Database/Migrations/Postgres/20231024041204_DropAdminLogEntity.cs @@ -1,4 +1,4 @@ -#nullable disable +#nullable disable using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; diff --git a/Content.Server.Database/Migrations/Postgres/20231126234054_ConnectionLogServer.Designer.cs b/Content.Server.Database/Migrations/Postgres/20231126234054_ConnectionLogServer.Designer.cs index 71440b79cb..2153f9b2ef 100644 --- a/Content.Server.Database/Migrations/Postgres/20231126234054_ConnectionLogServer.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20231126234054_ConnectionLogServer.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20231126234054_ConnectionLogServer.cs b/Content.Server.Database/Migrations/Postgres/20231126234054_ConnectionLogServer.cs index 1102ae3eb7..b2fa51f449 100644 --- a/Content.Server.Database/Migrations/Postgres/20231126234054_ConnectionLogServer.cs +++ b/Content.Server.Database/Migrations/Postgres/20231126234054_ConnectionLogServer.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/20231226154937_AdminLogPk.Designer.cs b/Content.Server.Database/Migrations/Postgres/20231226154937_AdminLogPk.Designer.cs index 350a00dfaf..a70bf3390a 100644 --- a/Content.Server.Database/Migrations/Postgres/20231226154937_AdminLogPk.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20231226154937_AdminLogPk.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20231226154937_AdminLogPk.cs b/Content.Server.Database/Migrations/Postgres/20231226154937_AdminLogPk.cs index b8ad5e3394..7d85c0feea 100644 --- a/Content.Server.Database/Migrations/Postgres/20231226154937_AdminLogPk.cs +++ b/Content.Server.Database/Migrations/Postgres/20231226154937_AdminLogPk.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/20240112194620_Blacklist.Designer.cs b/Content.Server.Database/Migrations/Postgres/20240112194620_Blacklist.Designer.cs index 61aa1a8c73..cf289c94a7 100644 --- a/Content.Server.Database/Migrations/Postgres/20240112194620_Blacklist.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20240112194620_Blacklist.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20240112194620_Blacklist.cs b/Content.Server.Database/Migrations/Postgres/20240112194620_Blacklist.cs index a6a34626ed..cd03c31073 100644 --- a/Content.Server.Database/Migrations/Postgres/20240112194620_Blacklist.cs +++ b/Content.Server.Database/Migrations/Postgres/20240112194620_Blacklist.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/20240201091301_SpawnPriorityPreference.Designer.cs b/Content.Server.Database/Migrations/Postgres/20240201091301_SpawnPriorityPreference.Designer.cs index 0c6c43e180..49c5bf30a5 100644 --- a/Content.Server.Database/Migrations/Postgres/20240201091301_SpawnPriorityPreference.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20240201091301_SpawnPriorityPreference.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20240201091301_SpawnPriorityPreference.cs b/Content.Server.Database/Migrations/Postgres/20240201091301_SpawnPriorityPreference.cs index 6fa95717a0..f041b3e8de 100644 --- a/Content.Server.Database/Migrations/Postgres/20240201091301_SpawnPriorityPreference.cs +++ b/Content.Server.Database/Migrations/Postgres/20240201091301_SpawnPriorityPreference.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/20240301130641_ClothingRemoval.Designer.cs b/Content.Server.Database/Migrations/Postgres/20240301130641_ClothingRemoval.Designer.cs index 6a45e7ac20..06b7fecf5f 100644 --- a/Content.Server.Database/Migrations/Postgres/20240301130641_ClothingRemoval.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20240301130641_ClothingRemoval.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20240301130641_ClothingRemoval.cs b/Content.Server.Database/Migrations/Postgres/20240301130641_ClothingRemoval.cs index 1ac30e4407..c279c17ca0 100644 --- a/Content.Server.Database/Migrations/Postgres/20240301130641_ClothingRemoval.cs +++ b/Content.Server.Database/Migrations/Postgres/20240301130641_ClothingRemoval.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/20240318022005_AdminMessageDismiss.Designer.cs b/Content.Server.Database/Migrations/Postgres/20240318022005_AdminMessageDismiss.Designer.cs index 1a47a51b94..9871741ed8 100644 --- a/Content.Server.Database/Migrations/Postgres/20240318022005_AdminMessageDismiss.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20240318022005_AdminMessageDismiss.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20240318022005_AdminMessageDismiss.cs b/Content.Server.Database/Migrations/Postgres/20240318022005_AdminMessageDismiss.cs index 372eecc585..9081050b8d 100644 --- a/Content.Server.Database/Migrations/Postgres/20240318022005_AdminMessageDismiss.cs +++ b/Content.Server.Database/Migrations/Postgres/20240318022005_AdminMessageDismiss.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/20240403072242_Loadouts.Designer.cs b/Content.Server.Database/Migrations/Postgres/20240403072242_Loadouts.Designer.cs index 905d6b021c..651a6ac795 100644 --- a/Content.Server.Database/Migrations/Postgres/20240403072242_Loadouts.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20240403072242_Loadouts.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20240403072242_Loadouts.cs b/Content.Server.Database/Migrations/Postgres/20240403072242_Loadouts.cs index bc512b6e81..4ee0f8da03 100644 --- a/Content.Server.Database/Migrations/Postgres/20240403072242_Loadouts.cs +++ b/Content.Server.Database/Migrations/Postgres/20240403072242_Loadouts.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/20240409013837_FixRoundStartDateNullability.Designer.cs b/Content.Server.Database/Migrations/Postgres/20240409013837_FixRoundStartDateNullability.Designer.cs index bb165c37e8..f94092d05a 100644 --- a/Content.Server.Database/Migrations/Postgres/20240409013837_FixRoundStartDateNullability.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20240409013837_FixRoundStartDateNullability.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20240409013837_FixRoundStartDateNullability.cs b/Content.Server.Database/Migrations/Postgres/20240409013837_FixRoundStartDateNullability.cs index 84b296d4fe..303b530033 100644 --- a/Content.Server.Database/Migrations/Postgres/20240409013837_FixRoundStartDateNullability.cs +++ b/Content.Server.Database/Migrations/Postgres/20240409013837_FixRoundStartDateNullability.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/20240531011555_RoleWhitelist.Designer.cs b/Content.Server.Database/Migrations/Postgres/20240531011555_RoleWhitelist.Designer.cs index 5032281dfe..e9cdb45940 100644 --- a/Content.Server.Database/Migrations/Postgres/20240531011555_RoleWhitelist.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20240531011555_RoleWhitelist.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20240531011555_RoleWhitelist.cs b/Content.Server.Database/Migrations/Postgres/20240531011555_RoleWhitelist.cs index 1cd0d8df17..9bc0c144ec 100644 --- a/Content.Server.Database/Migrations/Postgres/20240531011555_RoleWhitelist.cs +++ b/Content.Server.Database/Migrations/Postgres/20240531011555_RoleWhitelist.cs @@ -1,4 +1,4 @@ -#nullable disable +#nullable disable using System; using Microsoft.EntityFrameworkCore.Migrations; diff --git a/Content.Server.Database/Migrations/Postgres/20240606065731_RemoveLastReadRules.Designer.cs b/Content.Server.Database/Migrations/Postgres/20240606065731_RemoveLastReadRules.Designer.cs index 222fe126d9..db295008c5 100644 --- a/Content.Server.Database/Migrations/Postgres/20240606065731_RemoveLastReadRules.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20240606065731_RemoveLastReadRules.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20240606065731_RemoveLastReadRules.cs b/Content.Server.Database/Migrations/Postgres/20240606065731_RemoveLastReadRules.cs index 1982197f62..31d1328636 100644 --- a/Content.Server.Database/Migrations/Postgres/20240606065731_RemoveLastReadRules.cs +++ b/Content.Server.Database/Migrations/Postgres/20240606065731_RemoveLastReadRules.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/20240606121555_ban_notify_trigger.Designer.cs b/Content.Server.Database/Migrations/Postgres/20240606121555_ban_notify_trigger.Designer.cs index 2f06e5ff98..8a460e7be0 100644 --- a/Content.Server.Database/Migrations/Postgres/20240606121555_ban_notify_trigger.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20240606121555_ban_notify_trigger.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20240606121555_ban_notify_trigger.cs b/Content.Server.Database/Migrations/Postgres/20240606121555_ban_notify_trigger.cs index b84d230b45..e449840e79 100644 --- a/Content.Server.Database/Migrations/Postgres/20240606121555_ban_notify_trigger.cs +++ b/Content.Server.Database/Migrations/Postgres/20240606121555_ban_notify_trigger.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/20240606175154_ReturnLastReadRules.Designer.cs b/Content.Server.Database/Migrations/Postgres/20240606175154_ReturnLastReadRules.Designer.cs index e82e58bf5c..48463ff1fd 100644 --- a/Content.Server.Database/Migrations/Postgres/20240606175154_ReturnLastReadRules.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20240606175154_ReturnLastReadRules.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20240606175154_ReturnLastReadRules.cs b/Content.Server.Database/Migrations/Postgres/20240606175154_ReturnLastReadRules.cs index af4e5ad4c4..a5b5b9ba84 100644 --- a/Content.Server.Database/Migrations/Postgres/20240606175154_ReturnLastReadRules.cs +++ b/Content.Server.Database/Migrations/Postgres/20240606175154_ReturnLastReadRules.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/20240621120713_ConnectionLogTimeIndex.Designer.cs b/Content.Server.Database/Migrations/Postgres/20240621120713_ConnectionLogTimeIndex.Designer.cs index 8bd837236a..f9a6895f58 100644 --- a/Content.Server.Database/Migrations/Postgres/20240621120713_ConnectionLogTimeIndex.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20240621120713_ConnectionLogTimeIndex.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20240621120713_ConnectionLogTimeIndex.cs b/Content.Server.Database/Migrations/Postgres/20240621120713_ConnectionLogTimeIndex.cs index 736e9e37a2..41683f9e9c 100644 --- a/Content.Server.Database/Migrations/Postgres/20240621120713_ConnectionLogTimeIndex.cs +++ b/Content.Server.Database/Migrations/Postgres/20240621120713_ConnectionLogTimeIndex.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/20240623005121_BanTemplate.Designer.cs b/Content.Server.Database/Migrations/Postgres/20240623005121_BanTemplate.Designer.cs index 5d89f3dd29..662b845147 100644 --- a/Content.Server.Database/Migrations/Postgres/20240623005121_BanTemplate.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20240623005121_BanTemplate.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20240623005121_BanTemplate.cs b/Content.Server.Database/Migrations/Postgres/20240623005121_BanTemplate.cs index 192e87ac96..0e2c9bbfe2 100644 --- a/Content.Server.Database/Migrations/Postgres/20240623005121_BanTemplate.cs +++ b/Content.Server.Database/Migrations/Postgres/20240623005121_BanTemplate.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; diff --git a/Content.Server.Database/Migrations/Postgres/20241111170112_ModernHwid.Designer.cs b/Content.Server.Database/Migrations/Postgres/20241111170112_ModernHwid.Designer.cs index 155d6a163f..2c25d69157 100644 --- a/Content.Server.Database/Migrations/Postgres/20241111170112_ModernHwid.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20241111170112_ModernHwid.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20241111170112_ModernHwid.cs b/Content.Server.Database/Migrations/Postgres/20241111170112_ModernHwid.cs index c70a5ffaa5..1a9b4da7b6 100644 --- a/Content.Server.Database/Migrations/Postgres/20241111170112_ModernHwid.cs +++ b/Content.Server.Database/Migrations/Postgres/20241111170112_ModernHwid.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/20241111193608_ConnectionTrust.Designer.cs b/Content.Server.Database/Migrations/Postgres/20241111193608_ConnectionTrust.Designer.cs index dc1b4a0eeb..d1ae2bed37 100644 --- a/Content.Server.Database/Migrations/Postgres/20241111193608_ConnectionTrust.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20241111193608_ConnectionTrust.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20241111193608_ConnectionTrust.cs b/Content.Server.Database/Migrations/Postgres/20241111193608_ConnectionTrust.cs index debb36aacc..bbbf0ed143 100644 --- a/Content.Server.Database/Migrations/Postgres/20241111193608_ConnectionTrust.cs +++ b/Content.Server.Database/Migrations/Postgres/20241111193608_ConnectionTrust.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/20241122174243_IPIntel.Designer.cs b/Content.Server.Database/Migrations/Postgres/20241122174243_IPIntel.Designer.cs index 2e284f0810..2ca26ef3c7 100644 --- a/Content.Server.Database/Migrations/Postgres/20241122174243_IPIntel.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20241122174243_IPIntel.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20241122174243_IPIntel.cs b/Content.Server.Database/Migrations/Postgres/20241122174243_IPIntel.cs index 138690949e..b22baf727a 100644 --- a/Content.Server.Database/Migrations/Postgres/20241122174243_IPIntel.cs +++ b/Content.Server.Database/Migrations/Postgres/20241122174243_IPIntel.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Net; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; diff --git a/Content.Server.Database/Migrations/Postgres/20241223235939_AdminStatus.Designer.cs b/Content.Server.Database/Migrations/Postgres/20241223235939_AdminStatus.Designer.cs index 364ded06d0..d618859c16 100644 --- a/Content.Server.Database/Migrations/Postgres/20241223235939_AdminStatus.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20241223235939_AdminStatus.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20241223235939_AdminStatus.cs b/Content.Server.Database/Migrations/Postgres/20241223235939_AdminStatus.cs index 8444cead4e..bbc0587e20 100644 --- a/Content.Server.Database/Migrations/Postgres/20241223235939_AdminStatus.cs +++ b/Content.Server.Database/Migrations/Postgres/20241223235939_AdminStatus.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/20250211131539_LoadoutNames.Designer.cs b/Content.Server.Database/Migrations/Postgres/20250211131539_LoadoutNames.Designer.cs index b6bd8e24ed..ab127a6c04 100644 --- a/Content.Server.Database/Migrations/Postgres/20250211131539_LoadoutNames.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20250211131539_LoadoutNames.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20250211131539_LoadoutNames.cs b/Content.Server.Database/Migrations/Postgres/20250211131539_LoadoutNames.cs index 3b331f33df..8c0ebd8b99 100644 --- a/Content.Server.Database/Migrations/Postgres/20250211131539_LoadoutNames.cs +++ b/Content.Server.Database/Migrations/Postgres/20250211131539_LoadoutNames.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/20250314222016_ConstructionFavorites.Designer.cs b/Content.Server.Database/Migrations/Postgres/20250314222016_ConstructionFavorites.Designer.cs index 736a84d93a..a48311da47 100644 --- a/Content.Server.Database/Migrations/Postgres/20250314222016_ConstructionFavorites.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20250314222016_ConstructionFavorites.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Net; using System.Text.Json; diff --git a/Content.Server.Database/Migrations/Postgres/20250314222016_ConstructionFavorites.cs b/Content.Server.Database/Migrations/Postgres/20250314222016_ConstructionFavorites.cs index e64914dced..4ef531835d 100644 --- a/Content.Server.Database/Migrations/Postgres/20250314222016_ConstructionFavorites.cs +++ b/Content.Server.Database/Migrations/Postgres/20250314222016_ConstructionFavorites.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/20260118084629_OrganMarkings.Designer.cs b/Content.Server.Database/Migrations/Postgres/20260118084629_OrganMarkings.Designer.cs index a8d031faa0..6c1f7ce183 100644 --- a/Content.Server.Database/Migrations/Postgres/20260118084629_OrganMarkings.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20260118084629_OrganMarkings.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Collections.Generic; using System.Net; diff --git a/Content.Server.Database/Migrations/Postgres/20260118084629_OrganMarkings.cs b/Content.Server.Database/Migrations/Postgres/20260118084629_OrganMarkings.cs index ec2b926f16..e6a4950dc4 100644 --- a/Content.Server.Database/Migrations/Postgres/20260118084629_OrganMarkings.cs +++ b/Content.Server.Database/Migrations/Postgres/20260118084629_OrganMarkings.cs @@ -1,4 +1,4 @@ -using System.Text.Json; +using System.Text.Json; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/20260120200503_BanRefactor.Designer.cs b/Content.Server.Database/Migrations/Postgres/20260120200503_BanRefactor.Designer.cs index 62dde10b99..91b6cb5cc2 100644 --- a/Content.Server.Database/Migrations/Postgres/20260120200503_BanRefactor.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20260120200503_BanRefactor.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Collections.Generic; using System.Net; diff --git a/Content.Server.Database/Migrations/Postgres/20260120200503_BanRefactor.cs b/Content.Server.Database/Migrations/Postgres/20260120200503_BanRefactor.cs index 6e6a9dfbe5..5247ef59d8 100644 --- a/Content.Server.Database/Migrations/Postgres/20260120200503_BanRefactor.cs +++ b/Content.Server.Database/Migrations/Postgres/20260120200503_BanRefactor.cs @@ -1,4 +1,4 @@ -using System; +using System; using Content.Shared.Database; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; diff --git a/Content.Server.Database/Migrations/Postgres/20260126003838_CustomVoteLog.Designer.cs b/Content.Server.Database/Migrations/Postgres/20260126003838_CustomVoteLog.Designer.cs index 9bcfcafad0..5e178b2ff5 100644 --- a/Content.Server.Database/Migrations/Postgres/20260126003838_CustomVoteLog.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20260126003838_CustomVoteLog.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Collections.Generic; using System.Net; diff --git a/Content.Server.Database/Migrations/Postgres/20260126003838_CustomVoteLog.cs b/Content.Server.Database/Migrations/Postgres/20260126003838_CustomVoteLog.cs index 0545c55a05..1ac041a0d5 100644 --- a/Content.Server.Database/Migrations/Postgres/20260126003838_CustomVoteLog.cs +++ b/Content.Server.Database/Migrations/Postgres/20260126003838_CustomVoteLog.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; diff --git a/Content.Server.Database/Migrations/Postgres/20260701024227_VoiceSelector.Designer.cs b/Content.Server.Database/Migrations/Postgres/20260701024227_VoiceSelector.Designer.cs index ad5edf096b..96a97cf5e5 100644 --- a/Content.Server.Database/Migrations/Postgres/20260701024227_VoiceSelector.Designer.cs +++ b/Content.Server.Database/Migrations/Postgres/20260701024227_VoiceSelector.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Collections.Generic; using System.Net; diff --git a/Content.Server.Database/Migrations/Postgres/20260701024227_VoiceSelector.cs b/Content.Server.Database/Migrations/Postgres/20260701024227_VoiceSelector.cs index 14a29db632..d5d282fa79 100644 --- a/Content.Server.Database/Migrations/Postgres/20260701024227_VoiceSelector.cs +++ b/Content.Server.Database/Migrations/Postgres/20260701024227_VoiceSelector.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs b/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs index cfffa9ea66..781eda97c6 100644 --- a/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs +++ b/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Collections.Generic; using System.Net; diff --git a/Content.Server.Database/Migrations/Sqlite/20200929113112_Init.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20200929113112_Init.Designer.cs index e1b403291b..127ed13914 100644 --- a/Content.Server.Database/Migrations/Sqlite/20200929113112_Init.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20200929113112_Init.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20200929113112_Init.cs b/Content.Server.Database/Migrations/Sqlite/20200929113112_Init.cs index 2c9dc8ebd1..c600aeeca3 100644 --- a/Content.Server.Database/Migrations/Sqlite/20200929113112_Init.cs +++ b/Content.Server.Database/Migrations/Sqlite/20200929113112_Init.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; namespace Content.Server.Database.Migrations.Sqlite diff --git a/Content.Server.Database/Migrations/Sqlite/20201028210616_Admins.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20201028210616_Admins.Designer.cs index 23ebe0d41b..79bb8f1350 100644 --- a/Content.Server.Database/Migrations/Sqlite/20201028210616_Admins.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20201028210616_Admins.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20201028210616_Admins.cs b/Content.Server.Database/Migrations/Sqlite/20201028210616_Admins.cs index c9c65034d4..d017f0830e 100644 --- a/Content.Server.Database/Migrations/Sqlite/20201028210616_Admins.cs +++ b/Content.Server.Database/Migrations/Sqlite/20201028210616_Admins.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; namespace Content.Server.Database.Migrations.Sqlite diff --git a/Content.Server.Database/Migrations/Sqlite/20201109092917_ExtraIndices.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20201109092917_ExtraIndices.Designer.cs index ca7d412b93..c4223452b0 100644 --- a/Content.Server.Database/Migrations/Sqlite/20201109092917_ExtraIndices.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20201109092917_ExtraIndices.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20201109092917_ExtraIndices.cs b/Content.Server.Database/Migrations/Sqlite/20201109092917_ExtraIndices.cs index 0c7368a51a..57f7d6e051 100644 --- a/Content.Server.Database/Migrations/Sqlite/20201109092917_ExtraIndices.cs +++ b/Content.Server.Database/Migrations/Sqlite/20201109092917_ExtraIndices.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; namespace Content.Server.Database.Migrations.Sqlite { diff --git a/Content.Server.Database/Migrations/Sqlite/20201203093351_ClothingAndPronouns.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20201203093351_ClothingAndPronouns.Designer.cs index 01243e826a..379b752ce0 100644 --- a/Content.Server.Database/Migrations/Sqlite/20201203093351_ClothingAndPronouns.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20201203093351_ClothingAndPronouns.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20201203093351_ClothingAndPronouns.cs b/Content.Server.Database/Migrations/Sqlite/20201203093351_ClothingAndPronouns.cs index 763b9623a8..58c22d470f 100644 --- a/Content.Server.Database/Migrations/Sqlite/20201203093351_ClothingAndPronouns.cs +++ b/Content.Server.Database/Migrations/Sqlite/20201203093351_ClothingAndPronouns.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; namespace Content.Server.Database.Migrations.Sqlite { diff --git a/Content.Server.Database/Migrations/Sqlite/20210103151752_BackpackPreference.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20210103151752_BackpackPreference.Designer.cs index 661cfbc318..8f8d7acb3a 100644 --- a/Content.Server.Database/Migrations/Sqlite/20210103151752_BackpackPreference.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20210103151752_BackpackPreference.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20210103151752_BackpackPreference.cs b/Content.Server.Database/Migrations/Sqlite/20210103151752_BackpackPreference.cs index ff907ca1f2..31d0f40baf 100644 --- a/Content.Server.Database/Migrations/Sqlite/20210103151752_BackpackPreference.cs +++ b/Content.Server.Database/Migrations/Sqlite/20210103151752_BackpackPreference.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; namespace Content.Server.Database.Migrations.Sqlite { diff --git a/Content.Server.Database/Migrations/Sqlite/20210211211028_AdminOOCColor.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20210211211028_AdminOOCColor.Designer.cs index f11e1c7ab5..0aba8e4989 100644 --- a/Content.Server.Database/Migrations/Sqlite/20210211211028_AdminOOCColor.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20210211211028_AdminOOCColor.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20210211211028_AdminOOCColor.cs b/Content.Server.Database/Migrations/Sqlite/20210211211028_AdminOOCColor.cs index cf9015f796..117398449e 100644 --- a/Content.Server.Database/Migrations/Sqlite/20210211211028_AdminOOCColor.cs +++ b/Content.Server.Database/Migrations/Sqlite/20210211211028_AdminOOCColor.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; namespace Content.Server.Database.Migrations.Sqlite { diff --git a/Content.Server.Database/Migrations/Sqlite/20210321225959_HWID.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20210321225959_HWID.Designer.cs index 6c18ec1405..ce940623f5 100644 --- a/Content.Server.Database/Migrations/Sqlite/20210321225959_HWID.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20210321225959_HWID.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20210321225959_HWID.cs b/Content.Server.Database/Migrations/Sqlite/20210321225959_HWID.cs index ea1a653aad..7d9f7206f2 100644 --- a/Content.Server.Database/Migrations/Sqlite/20210321225959_HWID.cs +++ b/Content.Server.Database/Migrations/Sqlite/20210321225959_HWID.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; namespace Content.Server.Database.Migrations.Sqlite { diff --git a/Content.Server.Database/Migrations/Sqlite/20210915093336_UniqueHighPriorityJob.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20210915093336_UniqueHighPriorityJob.Designer.cs index b8b69e3c4f..b91bf9a358 100644 --- a/Content.Server.Database/Migrations/Sqlite/20210915093336_UniqueHighPriorityJob.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20210915093336_UniqueHighPriorityJob.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20210915093336_UniqueHighPriorityJob.cs b/Content.Server.Database/Migrations/Sqlite/20210915093336_UniqueHighPriorityJob.cs index db20f46571..c7bd58f9bb 100644 --- a/Content.Server.Database/Migrations/Sqlite/20210915093336_UniqueHighPriorityJob.cs +++ b/Content.Server.Database/Migrations/Sqlite/20210915093336_UniqueHighPriorityJob.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; namespace Content.Server.Database.Migrations.Sqlite { diff --git a/Content.Server.Database/Migrations/Sqlite/20211120202654_AdminLogs.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20211120202654_AdminLogs.Designer.cs index 3d286369de..86ae3c824c 100644 --- a/Content.Server.Database/Migrations/Sqlite/20211120202654_AdminLogs.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20211120202654_AdminLogs.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20211120202654_AdminLogs.cs b/Content.Server.Database/Migrations/Sqlite/20211120202654_AdminLogs.cs index 5750509d5c..e790c7f016 100644 --- a/Content.Server.Database/Migrations/Sqlite/20211120202654_AdminLogs.cs +++ b/Content.Server.Database/Migrations/Sqlite/20211120202654_AdminLogs.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20211121123536_AdminLogsImpact.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20211121123536_AdminLogsImpact.Designer.cs index 8db35773f4..9f5d34cc5e 100644 --- a/Content.Server.Database/Migrations/Sqlite/20211121123536_AdminLogsImpact.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20211121123536_AdminLogsImpact.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20211121123536_AdminLogsImpact.cs b/Content.Server.Database/Migrations/Sqlite/20211121123536_AdminLogsImpact.cs index 4072e60e95..bef1d6a927 100644 --- a/Content.Server.Database/Migrations/Sqlite/20211121123536_AdminLogsImpact.cs +++ b/Content.Server.Database/Migrations/Sqlite/20211121123536_AdminLogsImpact.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20220103235637_whitelist.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20220103235637_whitelist.Designer.cs index a1fb607c45..b85365bff2 100644 --- a/Content.Server.Database/Migrations/Sqlite/20220103235637_whitelist.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20220103235637_whitelist.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20220103235637_whitelist.cs b/Content.Server.Database/Migrations/Sqlite/20220103235637_whitelist.cs index 77eb7b79c6..c76fc9104b 100644 --- a/Content.Server.Database/Migrations/Sqlite/20220103235637_whitelist.cs +++ b/Content.Server.Database/Migrations/Sqlite/20220103235637_whitelist.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20220108185734_add-species.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20220108185734_add-species.Designer.cs index a5655aa531..e40f1b28ee 100644 --- a/Content.Server.Database/Migrations/Sqlite/20220108185734_add-species.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20220108185734_add-species.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20220108185734_add-species.cs b/Content.Server.Database/Migrations/Sqlite/20220108185734_add-species.cs index 9e4bd56fa9..b7760df305 100644 --- a/Content.Server.Database/Migrations/Sqlite/20220108185734_add-species.cs +++ b/Content.Server.Database/Migrations/Sqlite/20220108185734_add-species.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20220127165122_UnifyMore.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20220127165122_UnifyMore.Designer.cs index e76f7f4471..77949ec20e 100644 --- a/Content.Server.Database/Migrations/Sqlite/20220127165122_UnifyMore.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20220127165122_UnifyMore.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20220127165122_UnifyMore.cs b/Content.Server.Database/Migrations/Sqlite/20220127165122_UnifyMore.cs index f1558e0cd2..73827eb33c 100644 --- a/Content.Server.Database/Migrations/Sqlite/20220127165122_UnifyMore.cs +++ b/Content.Server.Database/Migrations/Sqlite/20220127165122_UnifyMore.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20220129005638_ServerBanHit.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20220129005638_ServerBanHit.Designer.cs index cd1eaaf16c..2f7af2451f 100644 --- a/Content.Server.Database/Migrations/Sqlite/20220129005638_ServerBanHit.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20220129005638_ServerBanHit.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20220129005638_ServerBanHit.cs b/Content.Server.Database/Migrations/Sqlite/20220129005638_ServerBanHit.cs index 3c7ad8e75c..0946f07790 100644 --- a/Content.Server.Database/Migrations/Sqlite/20220129005638_ServerBanHit.cs +++ b/Content.Server.Database/Migrations/Sqlite/20220129005638_ServerBanHit.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20220214060745_RoleBans.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20220214060745_RoleBans.Designer.cs index 1c810a3fb7..52db654346 100644 --- a/Content.Server.Database/Migrations/Sqlite/20220214060745_RoleBans.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20220214060745_RoleBans.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20220214060745_RoleBans.cs b/Content.Server.Database/Migrations/Sqlite/20220214060745_RoleBans.cs index ab32fa7145..fc280e1fb0 100644 --- a/Content.Server.Database/Migrations/Sqlite/20220214060745_RoleBans.cs +++ b/Content.Server.Database/Migrations/Sqlite/20220214060745_RoleBans.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20220308222736_Cleanup.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20220308222736_Cleanup.Designer.cs index 2245e1ad0a..493dcfac4f 100644 --- a/Content.Server.Database/Migrations/Sqlite/20220308222736_Cleanup.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20220308222736_Cleanup.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20220308222736_Cleanup.cs b/Content.Server.Database/Migrations/Sqlite/20220308222736_Cleanup.cs index 38aea02b40..e49b1a6665 100644 --- a/Content.Server.Database/Migrations/Sqlite/20220308222736_Cleanup.cs +++ b/Content.Server.Database/Migrations/Sqlite/20220308222736_Cleanup.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20220310173728_SpeciesMarkings.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20220310173728_SpeciesMarkings.Designer.cs index 85d6918eaf..41e49b0717 100644 --- a/Content.Server.Database/Migrations/Sqlite/20220310173728_SpeciesMarkings.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20220310173728_SpeciesMarkings.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20220310173728_SpeciesMarkings.cs b/Content.Server.Database/Migrations/Sqlite/20220310173728_SpeciesMarkings.cs index e65290a535..d70d39eb85 100644 --- a/Content.Server.Database/Migrations/Sqlite/20220310173728_SpeciesMarkings.cs +++ b/Content.Server.Database/Migrations/Sqlite/20220310173728_SpeciesMarkings.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20220313151753_ServerNameFts.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20220313151753_ServerNameFts.Designer.cs index ea9fc43f64..16698d917e 100644 --- a/Content.Server.Database/Migrations/Sqlite/20220313151753_ServerNameFts.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20220313151753_ServerNameFts.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20220313151753_ServerNameFts.cs b/Content.Server.Database/Migrations/Sqlite/20220313151753_ServerNameFts.cs index df0461bfab..766847888e 100644 --- a/Content.Server.Database/Migrations/Sqlite/20220313151753_ServerNameFts.cs +++ b/Content.Server.Database/Migrations/Sqlite/20220313151753_ServerNameFts.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20220324144649_AdminNotes.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20220324144649_AdminNotes.Designer.cs index 657eef99f3..878b13cca4 100644 --- a/Content.Server.Database/Migrations/Sqlite/20220324144649_AdminNotes.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20220324144649_AdminNotes.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20220324144649_AdminNotes.cs b/Content.Server.Database/Migrations/Sqlite/20220324144649_AdminNotes.cs index ba8f9057af..d71492ad94 100644 --- a/Content.Server.Database/Migrations/Sqlite/20220324144649_AdminNotes.cs +++ b/Content.Server.Database/Migrations/Sqlite/20220324144649_AdminNotes.cs @@ -1,4 +1,4 @@ -#nullable disable +#nullable disable using System; using Microsoft.EntityFrameworkCore.Migrations; diff --git a/Content.Server.Database/Migrations/Sqlite/20220325170220_PlayerReadRules.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20220325170220_PlayerReadRules.Designer.cs index 74616d57b5..3125219c71 100644 --- a/Content.Server.Database/Migrations/Sqlite/20220325170220_PlayerReadRules.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20220325170220_PlayerReadRules.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20220325170220_PlayerReadRules.cs b/Content.Server.Database/Migrations/Sqlite/20220325170220_PlayerReadRules.cs index 0b93e1a181..fb6d3ac1bb 100644 --- a/Content.Server.Database/Migrations/Sqlite/20220325170220_PlayerReadRules.cs +++ b/Content.Server.Database/Migrations/Sqlite/20220325170220_PlayerReadRules.cs @@ -1,4 +1,4 @@ -#nullable disable +#nullable disable using System; using Microsoft.EntityFrameworkCore.Migrations; diff --git a/Content.Server.Database/Migrations/Sqlite/20220326104908_UploadedResourcesLog.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20220326104908_UploadedResourcesLog.Designer.cs index e70ff62d12..e42abf02a0 100644 --- a/Content.Server.Database/Migrations/Sqlite/20220326104908_UploadedResourcesLog.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20220326104908_UploadedResourcesLog.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20220326104908_UploadedResourcesLog.cs b/Content.Server.Database/Migrations/Sqlite/20220326104908_UploadedResourcesLog.cs index 94006bd21b..6ea88f3caf 100644 --- a/Content.Server.Database/Migrations/Sqlite/20220326104908_UploadedResourcesLog.cs +++ b/Content.Server.Database/Migrations/Sqlite/20220326104908_UploadedResourcesLog.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20220503222949_FixIndices.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20220503222949_FixIndices.Designer.cs index c01801588a..511c97bb04 100644 --- a/Content.Server.Database/Migrations/Sqlite/20220503222949_FixIndices.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20220503222949_FixIndices.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20220503222949_FixIndices.cs b/Content.Server.Database/Migrations/Sqlite/20220503222949_FixIndices.cs index dcfe31ff83..cde8d3d0e8 100644 --- a/Content.Server.Database/Migrations/Sqlite/20220503222949_FixIndices.cs +++ b/Content.Server.Database/Migrations/Sqlite/20220503222949_FixIndices.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20220505084819_MarkingsJsonb.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20220505084819_MarkingsJsonb.Designer.cs index 2f724139a9..d90652ff95 100644 --- a/Content.Server.Database/Migrations/Sqlite/20220505084819_MarkingsJsonb.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20220505084819_MarkingsJsonb.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using System.Text.Json; using Content.Server.Database; diff --git a/Content.Server.Database/Migrations/Sqlite/20220505084819_MarkingsJsonb.cs b/Content.Server.Database/Migrations/Sqlite/20220505084819_MarkingsJsonb.cs index fa5f82e129..d44bbccb39 100644 --- a/Content.Server.Database/Migrations/Sqlite/20220505084819_MarkingsJsonb.cs +++ b/Content.Server.Database/Migrations/Sqlite/20220505084819_MarkingsJsonb.cs @@ -1,4 +1,4 @@ -#nullable disable +#nullable disable using Microsoft.EntityFrameworkCore.Migrations; diff --git a/Content.Server.Database/Migrations/Sqlite/20220509060717_FlavorText.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20220509060717_FlavorText.Designer.cs index 6a4a9106a5..01ba771b1c 100644 --- a/Content.Server.Database/Migrations/Sqlite/20220509060717_FlavorText.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20220509060717_FlavorText.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20220509060717_FlavorText.cs b/Content.Server.Database/Migrations/Sqlite/20220509060717_FlavorText.cs index 7fce7bc7cf..378c895703 100644 --- a/Content.Server.Database/Migrations/Sqlite/20220509060717_FlavorText.cs +++ b/Content.Server.Database/Migrations/Sqlite/20220509060717_FlavorText.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20220724000127_PlayTime.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20220724000127_PlayTime.Designer.cs index 0278a01762..d49bbe0c17 100644 --- a/Content.Server.Database/Migrations/Sqlite/20220724000127_PlayTime.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20220724000127_PlayTime.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20220724000127_PlayTime.cs b/Content.Server.Database/Migrations/Sqlite/20220724000127_PlayTime.cs index 1005ce866f..b8337b3632 100644 --- a/Content.Server.Database/Migrations/Sqlite/20220724000127_PlayTime.cs +++ b/Content.Server.Database/Migrations/Sqlite/20220724000127_PlayTime.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20230319110651_ProfileTraitIndexUnique.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20230319110651_ProfileTraitIndexUnique.Designer.cs index 95003e66ae..df9cac41e2 100644 --- a/Content.Server.Database/Migrations/Sqlite/20230319110651_ProfileTraitIndexUnique.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20230319110651_ProfileTraitIndexUnique.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20230319110651_ProfileTraitIndexUnique.cs b/Content.Server.Database/Migrations/Sqlite/20230319110651_ProfileTraitIndexUnique.cs index 67ad85fc34..6938fdc107 100644 --- a/Content.Server.Database/Migrations/Sqlite/20230319110651_ProfileTraitIndexUnique.cs +++ b/Content.Server.Database/Migrations/Sqlite/20230319110651_ProfileTraitIndexUnique.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20230402214642_BanAutoDelete.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20230402214642_BanAutoDelete.Designer.cs index 0c77074045..b2f237510d 100644 --- a/Content.Server.Database/Migrations/Sqlite/20230402214642_BanAutoDelete.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20230402214642_BanAutoDelete.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20230402214642_BanAutoDelete.cs b/Content.Server.Database/Migrations/Sqlite/20230402214642_BanAutoDelete.cs index ab50c89f94..f06a0904a6 100644 --- a/Content.Server.Database/Migrations/Sqlite/20230402214642_BanAutoDelete.cs +++ b/Content.Server.Database/Migrations/Sqlite/20230402214642_BanAutoDelete.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20230725193058_AdminNotesImprovementsForeignKeys.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20230725193058_AdminNotesImprovementsForeignKeys.Designer.cs index 66dba4594a..e0befba3eb 100644 --- a/Content.Server.Database/Migrations/Sqlite/20230725193058_AdminNotesImprovementsForeignKeys.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20230725193058_AdminNotesImprovementsForeignKeys.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20230725193058_AdminNotesImprovementsForeignKeys.cs b/Content.Server.Database/Migrations/Sqlite/20230725193058_AdminNotesImprovementsForeignKeys.cs index 4169a728c0..04189da743 100644 --- a/Content.Server.Database/Migrations/Sqlite/20230725193058_AdminNotesImprovementsForeignKeys.cs +++ b/Content.Server.Database/Migrations/Sqlite/20230725193058_AdminNotesImprovementsForeignKeys.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20230727190858_AdminLogCompoundKey.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20230727190858_AdminLogCompoundKey.Designer.cs index a568850a9c..815f63c75d 100644 --- a/Content.Server.Database/Migrations/Sqlite/20230727190858_AdminLogCompoundKey.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20230727190858_AdminLogCompoundKey.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20230727190858_AdminLogCompoundKey.cs b/Content.Server.Database/Migrations/Sqlite/20230727190858_AdminLogCompoundKey.cs index 529766f712..2d9b6fcca6 100644 --- a/Content.Server.Database/Migrations/Sqlite/20230727190858_AdminLogCompoundKey.cs +++ b/Content.Server.Database/Migrations/Sqlite/20230727190858_AdminLogCompoundKey.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20231021071407_RoundStartDate.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20231021071407_RoundStartDate.Designer.cs index cf8294e5e8..9aa28503ff 100644 --- a/Content.Server.Database/Migrations/Sqlite/20231021071407_RoundStartDate.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20231021071407_RoundStartDate.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20231021071407_RoundStartDate.cs b/Content.Server.Database/Migrations/Sqlite/20231021071407_RoundStartDate.cs index 0948bd99f1..572f898fd0 100644 --- a/Content.Server.Database/Migrations/Sqlite/20231021071407_RoundStartDate.cs +++ b/Content.Server.Database/Migrations/Sqlite/20231021071407_RoundStartDate.cs @@ -1,4 +1,4 @@ -#nullable disable +#nullable disable using System; using Microsoft.EntityFrameworkCore.Migrations; diff --git a/Content.Server.Database/Migrations/Sqlite/20231024041159_DropAdminLogEntity.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20231024041159_DropAdminLogEntity.Designer.cs index 887e157ec3..4d200ee5b4 100644 --- a/Content.Server.Database/Migrations/Sqlite/20231024041159_DropAdminLogEntity.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20231024041159_DropAdminLogEntity.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20231024041159_DropAdminLogEntity.cs b/Content.Server.Database/Migrations/Sqlite/20231024041159_DropAdminLogEntity.cs index 59e9efce4e..0ec6e80009 100644 --- a/Content.Server.Database/Migrations/Sqlite/20231024041159_DropAdminLogEntity.cs +++ b/Content.Server.Database/Migrations/Sqlite/20231024041159_DropAdminLogEntity.cs @@ -1,4 +1,4 @@ -#nullable disable +#nullable disable using Microsoft.EntityFrameworkCore.Migrations; diff --git a/Content.Server.Database/Migrations/Sqlite/20231126234049_ConnectionLogServer.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20231126234049_ConnectionLogServer.Designer.cs index c2a135d581..3fbf2d085e 100644 --- a/Content.Server.Database/Migrations/Sqlite/20231126234049_ConnectionLogServer.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20231126234049_ConnectionLogServer.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20231126234049_ConnectionLogServer.cs b/Content.Server.Database/Migrations/Sqlite/20231126234049_ConnectionLogServer.cs index e9378e4465..b06e2977c1 100644 --- a/Content.Server.Database/Migrations/Sqlite/20231126234049_ConnectionLogServer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20231126234049_ConnectionLogServer.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20231226154929_AdminLogPk.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20231226154929_AdminLogPk.Designer.cs index 7d27b19017..e56d950a23 100644 --- a/Content.Server.Database/Migrations/Sqlite/20231226154929_AdminLogPk.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20231226154929_AdminLogPk.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20231226154929_AdminLogPk.cs b/Content.Server.Database/Migrations/Sqlite/20231226154929_AdminLogPk.cs index 4028ad10d5..505b077bef 100644 --- a/Content.Server.Database/Migrations/Sqlite/20231226154929_AdminLogPk.cs +++ b/Content.Server.Database/Migrations/Sqlite/20231226154929_AdminLogPk.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20240112194612_Blacklist.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20240112194612_Blacklist.Designer.cs index 049901bc7d..0997af8a37 100644 --- a/Content.Server.Database/Migrations/Sqlite/20240112194612_Blacklist.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20240112194612_Blacklist.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20240112194612_Blacklist.cs b/Content.Server.Database/Migrations/Sqlite/20240112194612_Blacklist.cs index 4988a3c336..7913a42b7c 100644 --- a/Content.Server.Database/Migrations/Sqlite/20240112194612_Blacklist.cs +++ b/Content.Server.Database/Migrations/Sqlite/20240112194612_Blacklist.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20240201091254_SpawnPriorityPreference.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20240201091254_SpawnPriorityPreference.Designer.cs index f32f3c398b..167d9dedd5 100644 --- a/Content.Server.Database/Migrations/Sqlite/20240201091254_SpawnPriorityPreference.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20240201091254_SpawnPriorityPreference.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20240201091254_SpawnPriorityPreference.cs b/Content.Server.Database/Migrations/Sqlite/20240201091254_SpawnPriorityPreference.cs index cf2528f290..7eb152273a 100644 --- a/Content.Server.Database/Migrations/Sqlite/20240201091254_SpawnPriorityPreference.cs +++ b/Content.Server.Database/Migrations/Sqlite/20240201091254_SpawnPriorityPreference.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20240301130602_ClothingRemoval.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20240301130602_ClothingRemoval.Designer.cs index 1d933d0cee..9ef75f16cb 100644 --- a/Content.Server.Database/Migrations/Sqlite/20240301130602_ClothingRemoval.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20240301130602_ClothingRemoval.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20240301130602_ClothingRemoval.cs b/Content.Server.Database/Migrations/Sqlite/20240301130602_ClothingRemoval.cs index dd69ef2c3a..d9a66cba3b 100644 --- a/Content.Server.Database/Migrations/Sqlite/20240301130602_ClothingRemoval.cs +++ b/Content.Server.Database/Migrations/Sqlite/20240301130602_ClothingRemoval.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20240318021959_AdminMessageDismiss.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20240318021959_AdminMessageDismiss.Designer.cs index f4d6990356..f3cb46abdb 100644 --- a/Content.Server.Database/Migrations/Sqlite/20240318021959_AdminMessageDismiss.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20240318021959_AdminMessageDismiss.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20240318021959_AdminMessageDismiss.cs b/Content.Server.Database/Migrations/Sqlite/20240318021959_AdminMessageDismiss.cs index e0f7d0e0c7..6c40a16b4d 100644 --- a/Content.Server.Database/Migrations/Sqlite/20240318021959_AdminMessageDismiss.cs +++ b/Content.Server.Database/Migrations/Sqlite/20240318021959_AdminMessageDismiss.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20240403072258_Loadouts.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20240403072258_Loadouts.Designer.cs index 06698bda8b..5da528cf9e 100644 --- a/Content.Server.Database/Migrations/Sqlite/20240403072258_Loadouts.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20240403072258_Loadouts.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20240403072258_Loadouts.cs b/Content.Server.Database/Migrations/Sqlite/20240403072258_Loadouts.cs index c262ed1b6b..0e481a3f3e 100644 --- a/Content.Server.Database/Migrations/Sqlite/20240403072258_Loadouts.cs +++ b/Content.Server.Database/Migrations/Sqlite/20240403072258_Loadouts.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20240409013832_FixRoundStartDateNullability.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20240409013832_FixRoundStartDateNullability.Designer.cs index e3ca0e78bd..563daaea88 100644 --- a/Content.Server.Database/Migrations/Sqlite/20240409013832_FixRoundStartDateNullability.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20240409013832_FixRoundStartDateNullability.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20240409013832_FixRoundStartDateNullability.cs b/Content.Server.Database/Migrations/Sqlite/20240409013832_FixRoundStartDateNullability.cs index dbfd7776ba..529bb55967 100644 --- a/Content.Server.Database/Migrations/Sqlite/20240409013832_FixRoundStartDateNullability.cs +++ b/Content.Server.Database/Migrations/Sqlite/20240409013832_FixRoundStartDateNullability.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20240409014937_FixRoundStartDateNullability2.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20240409014937_FixRoundStartDateNullability2.Designer.cs index 2ec05cdd45..8c0b673112 100644 --- a/Content.Server.Database/Migrations/Sqlite/20240409014937_FixRoundStartDateNullability2.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20240409014937_FixRoundStartDateNullability2.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20240409014937_FixRoundStartDateNullability2.cs b/Content.Server.Database/Migrations/Sqlite/20240409014937_FixRoundStartDateNullability2.cs index 01b90f8333..7c25a8daae 100644 --- a/Content.Server.Database/Migrations/Sqlite/20240409014937_FixRoundStartDateNullability2.cs +++ b/Content.Server.Database/Migrations/Sqlite/20240409014937_FixRoundStartDateNullability2.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20240531011549_RoleWhitelist.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20240531011549_RoleWhitelist.Designer.cs index 531f013604..225025a94f 100644 --- a/Content.Server.Database/Migrations/Sqlite/20240531011549_RoleWhitelist.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20240531011549_RoleWhitelist.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20240531011549_RoleWhitelist.cs b/Content.Server.Database/Migrations/Sqlite/20240531011549_RoleWhitelist.cs index 9d192fc685..69c7ac6c2e 100644 --- a/Content.Server.Database/Migrations/Sqlite/20240531011549_RoleWhitelist.cs +++ b/Content.Server.Database/Migrations/Sqlite/20240531011549_RoleWhitelist.cs @@ -1,4 +1,4 @@ -#nullable disable +#nullable disable using System; using Microsoft.EntityFrameworkCore.Migrations; diff --git a/Content.Server.Database/Migrations/Sqlite/20240606065717_RemoveLastReadRules.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20240606065717_RemoveLastReadRules.Designer.cs index fceb831f00..cca7424713 100644 --- a/Content.Server.Database/Migrations/Sqlite/20240606065717_RemoveLastReadRules.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20240606065717_RemoveLastReadRules.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20240606065717_RemoveLastReadRules.cs b/Content.Server.Database/Migrations/Sqlite/20240606065717_RemoveLastReadRules.cs index 7f98fc2410..c9d55eb00c 100644 --- a/Content.Server.Database/Migrations/Sqlite/20240606065717_RemoveLastReadRules.cs +++ b/Content.Server.Database/Migrations/Sqlite/20240606065717_RemoveLastReadRules.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20240606175141_ReturnLastReadRules.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20240606175141_ReturnLastReadRules.Designer.cs index 043230b02b..a58388ce97 100644 --- a/Content.Server.Database/Migrations/Sqlite/20240606175141_ReturnLastReadRules.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20240606175141_ReturnLastReadRules.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20240606175141_ReturnLastReadRules.cs b/Content.Server.Database/Migrations/Sqlite/20240606175141_ReturnLastReadRules.cs index 0b0fd8725c..758696cc8e 100644 --- a/Content.Server.Database/Migrations/Sqlite/20240606175141_ReturnLastReadRules.cs +++ b/Content.Server.Database/Migrations/Sqlite/20240606175141_ReturnLastReadRules.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20240621120705_ConnectionLogTimeIndex.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20240621120705_ConnectionLogTimeIndex.Designer.cs index b3e512548a..cf4a425088 100644 --- a/Content.Server.Database/Migrations/Sqlite/20240621120705_ConnectionLogTimeIndex.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20240621120705_ConnectionLogTimeIndex.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20240621120705_ConnectionLogTimeIndex.cs b/Content.Server.Database/Migrations/Sqlite/20240621120705_ConnectionLogTimeIndex.cs index f97c62f6cc..4f5ae17e05 100644 --- a/Content.Server.Database/Migrations/Sqlite/20240621120705_ConnectionLogTimeIndex.cs +++ b/Content.Server.Database/Migrations/Sqlite/20240621120705_ConnectionLogTimeIndex.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20240623005113_BanTemplate.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20240623005113_BanTemplate.Designer.cs index acce21c2bd..48a4901019 100644 --- a/Content.Server.Database/Migrations/Sqlite/20240623005113_BanTemplate.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20240623005113_BanTemplate.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20240623005113_BanTemplate.cs b/Content.Server.Database/Migrations/Sqlite/20240623005113_BanTemplate.cs index ffe5a47550..f7c87caa04 100644 --- a/Content.Server.Database/Migrations/Sqlite/20240623005113_BanTemplate.cs +++ b/Content.Server.Database/Migrations/Sqlite/20240623005113_BanTemplate.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20241111170107_ModernHwid.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20241111170107_ModernHwid.Designer.cs index 56a9fe0a05..a431a0126d 100644 --- a/Content.Server.Database/Migrations/Sqlite/20241111170107_ModernHwid.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20241111170107_ModernHwid.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20241111170107_ModernHwid.cs b/Content.Server.Database/Migrations/Sqlite/20241111170107_ModernHwid.cs index 97b5dafd03..c255fbe84d 100644 --- a/Content.Server.Database/Migrations/Sqlite/20241111170107_ModernHwid.cs +++ b/Content.Server.Database/Migrations/Sqlite/20241111170107_ModernHwid.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20241111193602_ConnectionTrust.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20241111193602_ConnectionTrust.Designer.cs index bd4e20a464..eae61a02f0 100644 --- a/Content.Server.Database/Migrations/Sqlite/20241111193602_ConnectionTrust.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20241111193602_ConnectionTrust.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20241111193602_ConnectionTrust.cs b/Content.Server.Database/Migrations/Sqlite/20241111193602_ConnectionTrust.cs index 3a7fd784e1..b3b18b0bfd 100644 --- a/Content.Server.Database/Migrations/Sqlite/20241111193602_ConnectionTrust.cs +++ b/Content.Server.Database/Migrations/Sqlite/20241111193602_ConnectionTrust.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20241122174236_IPIntel.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20241122174236_IPIntel.Designer.cs index 35bee6ecba..c777a13d1a 100644 --- a/Content.Server.Database/Migrations/Sqlite/20241122174236_IPIntel.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20241122174236_IPIntel.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20241122174236_IPIntel.cs b/Content.Server.Database/Migrations/Sqlite/20241122174236_IPIntel.cs index 559b69d26f..50d7981af0 100644 --- a/Content.Server.Database/Migrations/Sqlite/20241122174236_IPIntel.cs +++ b/Content.Server.Database/Migrations/Sqlite/20241122174236_IPIntel.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20241223235932_AdminStatus.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20241223235932_AdminStatus.Designer.cs index 3f5f556ca1..4935d3ccc3 100644 --- a/Content.Server.Database/Migrations/Sqlite/20241223235932_AdminStatus.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20241223235932_AdminStatus.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20241223235932_AdminStatus.cs b/Content.Server.Database/Migrations/Sqlite/20241223235932_AdminStatus.cs index ac08aa246e..e3c20b30bd 100644 --- a/Content.Server.Database/Migrations/Sqlite/20241223235932_AdminStatus.cs +++ b/Content.Server.Database/Migrations/Sqlite/20241223235932_AdminStatus.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20250211131517_LoadoutNames.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20250211131517_LoadoutNames.Designer.cs index 5e54eec94b..1c6b873660 100644 --- a/Content.Server.Database/Migrations/Sqlite/20250211131517_LoadoutNames.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20250211131517_LoadoutNames.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20250211131517_LoadoutNames.cs b/Content.Server.Database/Migrations/Sqlite/20250211131517_LoadoutNames.cs index bc13e9e59f..fbcde814b6 100644 --- a/Content.Server.Database/Migrations/Sqlite/20250211131517_LoadoutNames.cs +++ b/Content.Server.Database/Migrations/Sqlite/20250211131517_LoadoutNames.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20250314222717_ConstructionFavorites.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20250314222717_ConstructionFavorites.Designer.cs index e05cd32edd..4b15b36255 100644 --- a/Content.Server.Database/Migrations/Sqlite/20250314222717_ConstructionFavorites.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20250314222717_ConstructionFavorites.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20250314222717_ConstructionFavorites.cs b/Content.Server.Database/Migrations/Sqlite/20250314222717_ConstructionFavorites.cs index 055e0b7ae4..3eb046b793 100644 --- a/Content.Server.Database/Migrations/Sqlite/20250314222717_ConstructionFavorites.cs +++ b/Content.Server.Database/Migrations/Sqlite/20250314222717_ConstructionFavorites.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20260118084622_OrganMarkings.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20260118084622_OrganMarkings.Designer.cs index 7536236a96..f32886f5f0 100644 --- a/Content.Server.Database/Migrations/Sqlite/20260118084622_OrganMarkings.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20260118084622_OrganMarkings.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20260118084622_OrganMarkings.cs b/Content.Server.Database/Migrations/Sqlite/20260118084622_OrganMarkings.cs index 8b1f79f72f..d5a2197407 100644 --- a/Content.Server.Database/Migrations/Sqlite/20260118084622_OrganMarkings.cs +++ b/Content.Server.Database/Migrations/Sqlite/20260118084622_OrganMarkings.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20260120200455_BanRefactor.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20260120200455_BanRefactor.Designer.cs index 804e3aae27..0fdae77f9f 100644 --- a/Content.Server.Database/Migrations/Sqlite/20260120200455_BanRefactor.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20260120200455_BanRefactor.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20260120200455_BanRefactor.cs b/Content.Server.Database/Migrations/Sqlite/20260120200455_BanRefactor.cs index f813d10945..54760ff445 100644 --- a/Content.Server.Database/Migrations/Sqlite/20260120200455_BanRefactor.cs +++ b/Content.Server.Database/Migrations/Sqlite/20260120200455_BanRefactor.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20260126003831_CustomVoteLog.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20260126003831_CustomVoteLog.Designer.cs index d5ea038894..0230775896 100644 --- a/Content.Server.Database/Migrations/Sqlite/20260126003831_CustomVoteLog.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20260126003831_CustomVoteLog.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20260126003831_CustomVoteLog.cs b/Content.Server.Database/Migrations/Sqlite/20260126003831_CustomVoteLog.cs index 2d34b3017f..e2ecf7f3b3 100644 --- a/Content.Server.Database/Migrations/Sqlite/20260126003831_CustomVoteLog.cs +++ b/Content.Server.Database/Migrations/Sqlite/20260126003831_CustomVoteLog.cs @@ -1,4 +1,4 @@ -using System; +using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/20260701024222_VoiceSelector.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20260701024222_VoiceSelector.Designer.cs index 779717fafc..bcb994a3d4 100644 --- a/Content.Server.Database/Migrations/Sqlite/20260701024222_VoiceSelector.Designer.cs +++ b/Content.Server.Database/Migrations/Sqlite/20260701024222_VoiceSelector.Designer.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Migrations/Sqlite/20260701024222_VoiceSelector.cs b/Content.Server.Database/Migrations/Sqlite/20260701024222_VoiceSelector.cs index cb09b3f574..592f5bd70d 100644 --- a/Content.Server.Database/Migrations/Sqlite/20260701024222_VoiceSelector.cs +++ b/Content.Server.Database/Migrations/Sqlite/20260701024222_VoiceSelector.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable diff --git a/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs b/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs index 62732107a6..19a76a64f1 100644 --- a/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs +++ b/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs @@ -1,4 +1,4 @@ -// +// using System; using Content.Server.Database; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/Model.Ban.cs b/Content.Server.Database/Model.Ban.cs index 7d1ee2ab1a..b2669a7cf2 100644 --- a/Content.Server.Database/Model.Ban.cs +++ b/Content.Server.Database/Model.Ban.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; using Content.Shared.Database; diff --git a/Content.Server.Database/Model.CustomVoteLog.cs b/Content.Server.Database/Model.CustomVoteLog.cs index 69fe14b590..291524b43f 100644 --- a/Content.Server.Database/Model.CustomVoteLog.cs +++ b/Content.Server.Database/Model.CustomVoteLog.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server.Database/ModelPostgres.cs b/Content.Server.Database/ModelPostgres.cs index c3f41b7058..754dd8b1f4 100644 --- a/Content.Server.Database/ModelPostgres.cs +++ b/Content.Server.Database/ModelPostgres.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Linq; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Diagnostics; diff --git a/Content.Server.Database/ModelSqlite.cs b/Content.Server.Database/ModelSqlite.cs index a64a2af8d9..cc9ea13b14 100644 --- a/Content.Server.Database/ModelSqlite.cs +++ b/Content.Server.Database/ModelSqlite.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Globalization; using System.IO; using System.Linq; diff --git a/Content.Server/Access/Systems/JobStatusSystem.cs b/Content.Server/Access/Systems/JobStatusSystem.cs index d78528bd2f..3b46a2f3c2 100644 --- a/Content.Server/Access/Systems/JobStatusSystem.cs +++ b/Content.Server/Access/Systems/JobStatusSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Access.Systems; +using Content.Shared.Access.Systems; namespace Content.Server.Access.Systems; diff --git a/Content.Server/Actions/Commands/AddActionCommand.cs b/Content.Server/Actions/Commands/AddActionCommand.cs index 747bf2ee80..f5fa7c8e1f 100644 --- a/Content.Server/Actions/Commands/AddActionCommand.cs +++ b/Content.Server/Actions/Commands/AddActionCommand.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Server.Administration; using Content.Shared.Actions; using Content.Shared.Actions.Components; diff --git a/Content.Server/Actions/Commands/RemoveActionCommand.cs b/Content.Server/Actions/Commands/RemoveActionCommand.cs index 3e7a4d6804..4745655de0 100644 --- a/Content.Server/Actions/Commands/RemoveActionCommand.cs +++ b/Content.Server/Actions/Commands/RemoveActionCommand.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration; +using Content.Server.Administration; using Content.Shared.Actions; using Content.Shared.Actions.Components; using Content.Shared.Administration; diff --git a/Content.Server/Acz/ContentMagicAczProvider.cs b/Content.Server/Acz/ContentMagicAczProvider.cs index 57b5c1ec56..12720eb11d 100644 --- a/Content.Server/Acz/ContentMagicAczProvider.cs +++ b/Content.Server/Acz/ContentMagicAczProvider.cs @@ -1,4 +1,4 @@ -using System.Threading; +using System.Threading; using System.Threading.Tasks; using Content.Packaging; using Robust.Packaging; diff --git a/Content.Server/Administration/AdminCommandAttribute.cs b/Content.Server/Administration/AdminCommandAttribute.cs index 409d9fe984..98b34bb3b2 100644 --- a/Content.Server/Administration/AdminCommandAttribute.cs +++ b/Content.Server/Administration/AdminCommandAttribute.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration; +using Content.Shared.Administration; using JetBrains.Annotations; using Robust.Shared.Console; diff --git a/Content.Server/Administration/AdminEventLog/AdminEventLogEui.cs b/Content.Server/Administration/AdminEventLog/AdminEventLogEui.cs index 5e668c7bc1..9a03a84a41 100644 --- a/Content.Server/Administration/AdminEventLog/AdminEventLogEui.cs +++ b/Content.Server/Administration/AdminEventLog/AdminEventLogEui.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration.Managers; +using Content.Server.Administration.Managers; using Content.Server.Discord.WebhookMessages; using Content.Server.EUI; using Content.Server.GameTicking; diff --git a/Content.Server/Administration/AdminPermsChangedEventArgs.cs b/Content.Server/Administration/AdminPermsChangedEventArgs.cs index 07eb416be6..17d0041e7a 100644 --- a/Content.Server/Administration/AdminPermsChangedEventArgs.cs +++ b/Content.Server/Administration/AdminPermsChangedEventArgs.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration; +using Content.Shared.Administration; using Robust.Shared.Player; namespace Content.Server.Administration diff --git a/Content.Server/Administration/AdminRank.cs b/Content.Server/Administration/AdminRank.cs index 2f27891ea7..53153e05ff 100644 --- a/Content.Server/Administration/AdminRank.cs +++ b/Content.Server/Administration/AdminRank.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration; +using Content.Shared.Administration; namespace Content.Server.Administration diff --git a/Content.Server/Administration/BanList/BanListEui.cs b/Content.Server/Administration/BanList/BanListEui.cs index fa130976db..f186ef3a80 100644 --- a/Content.Server/Administration/BanList/BanListEui.cs +++ b/Content.Server/Administration/BanList/BanListEui.cs @@ -1,4 +1,4 @@ -using System.Collections.Immutable; +using System.Collections.Immutable; using System.Linq; using System.Threading.Tasks; using Content.Server.Administration.Managers; diff --git a/Content.Server/Administration/Commands/AdminLogBulk.cs b/Content.Server/Administration/Commands/AdminLogBulk.cs index 78aad21a4e..c4f3e95dd4 100644 --- a/Content.Server/Administration/Commands/AdminLogBulk.cs +++ b/Content.Server/Administration/Commands/AdminLogBulk.cs @@ -1,4 +1,4 @@ -using System.Threading.Tasks; +using System.Threading.Tasks; using Content.Server.Administration.Logs; using Content.Shared.Administration; using Content.Shared.Database; diff --git a/Content.Server/Administration/Commands/AdminWhoCommand.cs b/Content.Server/Administration/Commands/AdminWhoCommand.cs index 7b11e7248b..c68d02696f 100644 --- a/Content.Server/Administration/Commands/AdminWhoCommand.cs +++ b/Content.Server/Administration/Commands/AdminWhoCommand.cs @@ -1,4 +1,4 @@ -using System.Text; +using System.Text; using Content.Server.Administration.Managers; using Content.Server.Afk; using Content.Shared.Administration; diff --git a/Content.Server/Administration/Commands/BanExemptionCommands.cs b/Content.Server/Administration/Commands/BanExemptionCommands.cs index a0389d080f..718f26db4c 100644 --- a/Content.Server/Administration/Commands/BanExemptionCommands.cs +++ b/Content.Server/Administration/Commands/BanExemptionCommands.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using System.Text; using Content.Server.Database; using Content.Shared.Administration; diff --git a/Content.Server/Administration/Commands/BanListCommand.cs b/Content.Server/Administration/Commands/BanListCommand.cs index 92c187db18..564b6fd4d3 100644 --- a/Content.Server/Administration/Commands/BanListCommand.cs +++ b/Content.Server/Administration/Commands/BanListCommand.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Server.Administration.BanList; using Content.Server.Database; using Content.Server.EUI; diff --git a/Content.Server/Administration/Commands/CameraCommand.cs b/Content.Server/Administration/Commands/CameraCommand.cs index 6dd5903a2e..52d4777566 100644 --- a/Content.Server/Administration/Commands/CameraCommand.cs +++ b/Content.Server/Administration/Commands/CameraCommand.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration.UI; +using Content.Server.Administration.UI; using Content.Server.EUI; using Content.Shared.Administration; using Robust.Server.Player; diff --git a/Content.Server/Administration/Commands/ChangeCvarCommand.cs b/Content.Server/Administration/Commands/ChangeCvarCommand.cs index 119a1b8241..a4312b18ee 100644 --- a/Content.Server/Administration/Commands/ChangeCvarCommand.cs +++ b/Content.Server/Administration/Commands/ChangeCvarCommand.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Server.Administration.Logs; using Content.Server.Administration.Managers; using Content.Shared.Administration; diff --git a/Content.Server/Administration/Commands/ClearBluespaceLockerLinks.cs b/Content.Server/Administration/Commands/ClearBluespaceLockerLinks.cs index 3db43b72e2..e99832bf60 100644 --- a/Content.Server/Administration/Commands/ClearBluespaceLockerLinks.cs +++ b/Content.Server/Administration/Commands/ClearBluespaceLockerLinks.cs @@ -1,4 +1,4 @@ -using Content.Server.Storage.Components; +using Content.Server.Storage.Components; using Content.Shared.Administration; using Robust.Shared.Console; diff --git a/Content.Server/Administration/Commands/DeleteComponentCommand.cs b/Content.Server/Administration/Commands/DeleteComponentCommand.cs index 5cec3768e0..b5609c8e90 100644 --- a/Content.Server/Administration/Commands/DeleteComponentCommand.cs +++ b/Content.Server/Administration/Commands/DeleteComponentCommand.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration; +using Content.Shared.Administration; using Robust.Shared.Console; namespace Content.Server.Administration.Commands; diff --git a/Content.Server/Administration/Commands/JobWhitelistCommands.cs b/Content.Server/Administration/Commands/JobWhitelistCommands.cs index e266c19ecf..2753dd2508 100644 --- a/Content.Server/Administration/Commands/JobWhitelistCommands.cs +++ b/Content.Server/Administration/Commands/JobWhitelistCommands.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Server.Database; using Content.Server.Players.JobWhitelist; using Content.Shared.Administration; diff --git a/Content.Server/Administration/Commands/LinkBluespaceLocker.cs b/Content.Server/Administration/Commands/LinkBluespaceLocker.cs index 36dcb41206..fe57a36f43 100644 --- a/Content.Server/Administration/Commands/LinkBluespaceLocker.cs +++ b/Content.Server/Administration/Commands/LinkBluespaceLocker.cs @@ -1,4 +1,4 @@ -using Content.Server.Storage.Components; +using Content.Server.Storage.Components; using Content.Shared.Administration; using Content.Shared.Storage.Components; using Robust.Shared.Console; diff --git a/Content.Server/Administration/Commands/OpenAdminEventLogCommand.cs b/Content.Server/Administration/Commands/OpenAdminEventLogCommand.cs index ec5e353ce1..1d610af57f 100644 --- a/Content.Server/Administration/Commands/OpenAdminEventLogCommand.cs +++ b/Content.Server/Administration/Commands/OpenAdminEventLogCommand.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration.AdminEventLog; +using Content.Server.Administration.AdminEventLog; using Content.Server.EUI; using Content.Shared.Administration; using Robust.Shared.Console; diff --git a/Content.Server/Administration/Commands/OpenAdminLogsCommand.cs b/Content.Server/Administration/Commands/OpenAdminLogsCommand.cs index 98d6e510ad..e842e1e9f9 100644 --- a/Content.Server/Administration/Commands/OpenAdminLogsCommand.cs +++ b/Content.Server/Administration/Commands/OpenAdminLogsCommand.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Server.Administration.Logs; using Content.Shared.Administration; using Robust.Server.Player; diff --git a/Content.Server/Administration/Commands/OpenAdminNotesCommand.cs b/Content.Server/Administration/Commands/OpenAdminNotesCommand.cs index 60158dd03a..897cc35707 100644 --- a/Content.Server/Administration/Commands/OpenAdminNotesCommand.cs +++ b/Content.Server/Administration/Commands/OpenAdminNotesCommand.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Server.Administration.Notes; using Content.Shared.Administration; using Robust.Server.Player; diff --git a/Content.Server/Administration/Commands/PanicBunkerCommand.cs b/Content.Server/Administration/Commands/PanicBunkerCommand.cs index 7e675a6f22..c2198832e7 100644 --- a/Content.Server/Administration/Commands/PanicBunkerCommand.cs +++ b/Content.Server/Administration/Commands/PanicBunkerCommand.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration; +using Content.Shared.Administration; using Content.Shared.CCVar; using Robust.Shared.Configuration; using Robust.Shared.Console; diff --git a/Content.Server/Administration/Commands/PardonCommand.cs b/Content.Server/Administration/Commands/PardonCommand.cs index 47f1831e6a..b1c3cfdd83 100644 --- a/Content.Server/Administration/Commands/PardonCommand.cs +++ b/Content.Server/Administration/Commands/PardonCommand.cs @@ -1,4 +1,4 @@ -using Content.Server.Database; +using Content.Server.Database; using Content.Shared.Administration; using Robust.Shared.Console; diff --git a/Content.Server/Administration/Commands/PlayTimeCommands.cs b/Content.Server/Administration/Commands/PlayTimeCommands.cs index 0cc9b416e3..8c1145d979 100644 --- a/Content.Server/Administration/Commands/PlayTimeCommands.cs +++ b/Content.Server/Administration/Commands/PlayTimeCommands.cs @@ -1,4 +1,4 @@ -using Content.Server.Players.PlayTimeTracking; +using Content.Server.Players.PlayTimeTracking; using Content.Shared.Administration; using Content.Shared.Players.PlayTimeTracking; using Robust.Server.Player; diff --git a/Content.Server/Administration/Commands/PromoteHostCommand.cs b/Content.Server/Administration/Commands/PromoteHostCommand.cs index 054d9191b4..c724b7652a 100644 --- a/Content.Server/Administration/Commands/PromoteHostCommand.cs +++ b/Content.Server/Administration/Commands/PromoteHostCommand.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration.Managers; +using Content.Server.Administration.Managers; using JetBrains.Annotations; using Robust.Server.Player; using Robust.Shared.Console; diff --git a/Content.Server/Administration/Commands/ReadyAllCommand.cs b/Content.Server/Administration/Commands/ReadyAllCommand.cs index e173c12dd0..f98353883b 100644 --- a/Content.Server/Administration/Commands/ReadyAllCommand.cs +++ b/Content.Server/Administration/Commands/ReadyAllCommand.cs @@ -1,4 +1,4 @@ -using Content.Server.GameTicking; +using Content.Server.GameTicking; using Content.Shared.Administration; using Content.Shared.GameTicking; using Robust.Shared.Console; diff --git a/Content.Server/Administration/Commands/RemoveExtraComponents.cs b/Content.Server/Administration/Commands/RemoveExtraComponents.cs index 5f0ef3a225..97b03a5223 100644 --- a/Content.Server/Administration/Commands/RemoveExtraComponents.cs +++ b/Content.Server/Administration/Commands/RemoveExtraComponents.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration; +using Content.Shared.Administration; using Robust.Shared.Console; using Robust.Shared.Prototypes; diff --git a/Content.Server/Administration/Commands/RoleBanCommand.cs b/Content.Server/Administration/Commands/RoleBanCommand.cs index 266e941e32..b59f2f8714 100644 --- a/Content.Server/Administration/Commands/RoleBanCommand.cs +++ b/Content.Server/Administration/Commands/RoleBanCommand.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration.Managers; +using Content.Server.Administration.Managers; using Content.Shared.Administration; using Content.Shared.CCVar; using Content.Shared.Database; diff --git a/Content.Server/Administration/Commands/RoleBanListCommand.cs b/Content.Server/Administration/Commands/RoleBanListCommand.cs index 387ed4c92d..ac428d52ca 100644 --- a/Content.Server/Administration/Commands/RoleBanListCommand.cs +++ b/Content.Server/Administration/Commands/RoleBanListCommand.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration.BanList; +using Content.Server.Administration.BanList; using Content.Server.EUI; using Content.Server.Database; using Content.Shared.Administration; diff --git a/Content.Server/Administration/Commands/ShowGhostsCommand.cs b/Content.Server/Administration/Commands/ShowGhostsCommand.cs index 2180e11c78..a20e7bc469 100644 --- a/Content.Server/Administration/Commands/ShowGhostsCommand.cs +++ b/Content.Server/Administration/Commands/ShowGhostsCommand.cs @@ -1,4 +1,4 @@ -using Content.Server.Ghost; +using Content.Server.Ghost; using Content.Server.Revenant.EntitySystems; using Content.Shared.Administration; using Robust.Shared.Console; diff --git a/Content.Server/Administration/Commands/ThrowScoreboardCommand.cs b/Content.Server/Administration/Commands/ThrowScoreboardCommand.cs index 1a9cabb558..d48bdbaedd 100644 --- a/Content.Server/Administration/Commands/ThrowScoreboardCommand.cs +++ b/Content.Server/Administration/Commands/ThrowScoreboardCommand.cs @@ -1,4 +1,4 @@ -using Content.Server.GameTicking; +using Content.Server.GameTicking; using Content.Shared.Administration; using Robust.Shared.Console; diff --git a/Content.Server/Administration/Logs/AdminLogManager.Cache.cs b/Content.Server/Administration/Logs/AdminLogManager.Cache.cs index 250d0f7aa3..4bb555e5f3 100644 --- a/Content.Server/Administration/Logs/AdminLogManager.Cache.cs +++ b/Content.Server/Administration/Logs/AdminLogManager.Cache.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using System.Linq; using Content.Server.Database; using Content.Shared.Administration.Logs; diff --git a/Content.Server/Administration/Logs/AdminLogManager.Json.cs b/Content.Server/Administration/Logs/AdminLogManager.Json.cs index a0a3b920bd..12b56a14a5 100644 --- a/Content.Server/Administration/Logs/AdminLogManager.Json.cs +++ b/Content.Server/Administration/Logs/AdminLogManager.Json.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using System.Text.Json; using System.Text.Json.Serialization; using Content.Server.Administration.Logs.Converters; diff --git a/Content.Server/Administration/Logs/AdminLogManager.cs b/Content.Server/Administration/Logs/AdminLogManager.cs index a4b16d2d93..4514568062 100644 --- a/Content.Server/Administration/Logs/AdminLogManager.cs +++ b/Content.Server/Administration/Logs/AdminLogManager.cs @@ -1,4 +1,4 @@ -using System.Collections.Concurrent; +using System.Collections.Concurrent; using System.Text.Json; using System.Threading; using System.Threading.Tasks; diff --git a/Content.Server/Administration/Logs/AdminLogSystem.cs b/Content.Server/Administration/Logs/AdminLogSystem.cs index e376750b5c..a507ec5f6f 100644 --- a/Content.Server/Administration/Logs/AdminLogSystem.cs +++ b/Content.Server/Administration/Logs/AdminLogSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.GameTicking; +using Content.Shared.GameTicking; using Content.Shared.GameTicking.Events; namespace Content.Server.Administration.Logs; diff --git a/Content.Server/Administration/Logs/AdminLogsEui.cs b/Content.Server/Administration/Logs/AdminLogsEui.cs index 84ac91d247..2165ea903d 100644 --- a/Content.Server/Administration/Logs/AdminLogsEui.cs +++ b/Content.Server/Administration/Logs/AdminLogsEui.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using System.Threading; using System.Threading.Tasks; using Content.Server.Administration.Managers; diff --git a/Content.Server/Administration/Logs/Converters/AdminLogConverter.cs b/Content.Server/Administration/Logs/Converters/AdminLogConverter.cs index 778f84c1ac..2f129ff2bc 100644 --- a/Content.Server/Administration/Logs/Converters/AdminLogConverter.cs +++ b/Content.Server/Administration/Logs/Converters/AdminLogConverter.cs @@ -1,4 +1,4 @@ -using System.Text.Json; +using System.Text.Json; using System.Text.Json.Serialization; namespace Content.Server.Administration.Logs.Converters; diff --git a/Content.Server/Administration/Logs/Converters/AdminLogConverterAttribute.cs b/Content.Server/Administration/Logs/Converters/AdminLogConverterAttribute.cs index ac1be307a5..a28dc30235 100644 --- a/Content.Server/Administration/Logs/Converters/AdminLogConverterAttribute.cs +++ b/Content.Server/Administration/Logs/Converters/AdminLogConverterAttribute.cs @@ -1,4 +1,4 @@ -using JetBrains.Annotations; +using JetBrains.Annotations; namespace Content.Server.Administration.Logs.Converters; diff --git a/Content.Server/Administration/Logs/Converters/FixedPoint2Converter.cs b/Content.Server/Administration/Logs/Converters/FixedPoint2Converter.cs index 9f6dcfa2e5..2d79ca4450 100644 --- a/Content.Server/Administration/Logs/Converters/FixedPoint2Converter.cs +++ b/Content.Server/Administration/Logs/Converters/FixedPoint2Converter.cs @@ -1,4 +1,4 @@ -using System.Text.Json; +using System.Text.Json; using Content.Shared.FixedPoint; namespace Content.Server.Administration.Logs.Converters; diff --git a/Content.Server/Administration/Logs/Converters/GasMixtureStringRepresentationConverter.cs b/Content.Server/Administration/Logs/Converters/GasMixtureStringRepresentationConverter.cs index 7fe05022be..91954bcab5 100644 --- a/Content.Server/Administration/Logs/Converters/GasMixtureStringRepresentationConverter.cs +++ b/Content.Server/Administration/Logs/Converters/GasMixtureStringRepresentationConverter.cs @@ -1,4 +1,4 @@ -using System.Text.Json; +using System.Text.Json; using Content.Server.Atmos; namespace Content.Server.Administration.Logs.Converters; diff --git a/Content.Server/Administration/Logs/Converters/MindStringRepresentationConverter.cs b/Content.Server/Administration/Logs/Converters/MindStringRepresentationConverter.cs index b43d2a90e7..3161d8a20c 100644 --- a/Content.Server/Administration/Logs/Converters/MindStringRepresentationConverter.cs +++ b/Content.Server/Administration/Logs/Converters/MindStringRepresentationConverter.cs @@ -1,4 +1,4 @@ -using System.Text.Json; +using System.Text.Json; using System.Text.Json.Serialization; using Content.Shared.Mind; diff --git a/Content.Server/Administration/Logs/Converters/PlayerSessionConverter.cs b/Content.Server/Administration/Logs/Converters/PlayerSessionConverter.cs index d1a009b8cd..b74d9502bb 100644 --- a/Content.Server/Administration/Logs/Converters/PlayerSessionConverter.cs +++ b/Content.Server/Administration/Logs/Converters/PlayerSessionConverter.cs @@ -1,4 +1,4 @@ -using System.Text.Json; +using System.Text.Json; using Content.Shared.Administration.Logs; namespace Content.Server.Administration.Logs.Converters; diff --git a/Content.Server/Administration/Logs/IAdminLogManager.cs b/Content.Server/Administration/Logs/IAdminLogManager.cs index cbd2eaca51..dc4adc92e0 100644 --- a/Content.Server/Administration/Logs/IAdminLogManager.cs +++ b/Content.Server/Administration/Logs/IAdminLogManager.cs @@ -1,4 +1,4 @@ -using System.Text.Json; +using System.Text.Json; using System.Threading.Tasks; using Content.Server.Database; using Content.Shared.Administration.Logs; diff --git a/Content.Server/Administration/Logs/LogFilter.cs b/Content.Server/Administration/Logs/LogFilter.cs index a1ab74c315..68f2fea8e1 100644 --- a/Content.Server/Administration/Logs/LogFilter.cs +++ b/Content.Server/Administration/Logs/LogFilter.cs @@ -1,4 +1,4 @@ -using System.Threading; +using System.Threading; using Content.Shared.Administration.Logs; using Content.Shared.Database; diff --git a/Content.Server/Administration/Managers/AdminManager.Metrics.cs b/Content.Server/Administration/Managers/AdminManager.Metrics.cs index bb838762ba..c6dc3b8334 100644 --- a/Content.Server/Administration/Managers/AdminManager.Metrics.cs +++ b/Content.Server/Administration/Managers/AdminManager.Metrics.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.Metrics; +using System.Diagnostics.Metrics; using System.Runtime.InteropServices; using Content.Server.Afk; using Robust.Server.DataMetrics; diff --git a/Content.Server/Administration/Managers/CVarControlManager.cs b/Content.Server/Administration/Managers/CVarControlManager.cs index ac4e7f9a84..5a6c63944f 100644 --- a/Content.Server/Administration/Managers/CVarControlManager.cs +++ b/Content.Server/Administration/Managers/CVarControlManager.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using System.Reflection; using Content.Shared.CCVar.CVarAccess; using Robust.Shared.Configuration; diff --git a/Content.Server/Administration/Managers/MultiServerKickManager.cs b/Content.Server/Administration/Managers/MultiServerKickManager.cs index b7ed0a9946..c842e02149 100644 --- a/Content.Server/Administration/Managers/MultiServerKickManager.cs +++ b/Content.Server/Administration/Managers/MultiServerKickManager.cs @@ -1,4 +1,4 @@ -using System.Text.Json; +using System.Text.Json; using System.Text.Json.Serialization; using Content.Server.Database; using Content.Shared.CCVar; diff --git a/Content.Server/Administration/ServerApi.Utility.cs b/Content.Server/Administration/ServerApi.Utility.cs index 951e0039d6..96489a4881 100644 --- a/Content.Server/Administration/ServerApi.Utility.cs +++ b/Content.Server/Administration/ServerApi.Utility.cs @@ -1,4 +1,4 @@ -using System.Net; +using System.Net; using System.Net.Http; using System.Threading.Tasks; using Robust.Server.ServerStatus; diff --git a/Content.Server/Administration/ServerApi.cs b/Content.Server/Administration/ServerApi.cs index f2da1fbebb..4554dba2fb 100644 --- a/Content.Server/Administration/ServerApi.cs +++ b/Content.Server/Administration/ServerApi.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using System.Net; using System.Net.Http; using System.Security.Cryptography; diff --git a/Content.Server/Administration/Systems/BufferingSystem.cs b/Content.Server/Administration/Systems/BufferingSystem.cs index b840823f27..180a7eca04 100644 --- a/Content.Server/Administration/Systems/BufferingSystem.cs +++ b/Content.Server/Administration/Systems/BufferingSystem.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Content.Shared.Administration; using Content.Shared.Administration.Components; using Content.Shared.Administration.Systems; diff --git a/Content.Server/Administration/Toolshed/AdminsCommand.cs b/Content.Server/Administration/Toolshed/AdminsCommand.cs index 4dfab6373d..740b022ab4 100644 --- a/Content.Server/Administration/Toolshed/AdminsCommand.cs +++ b/Content.Server/Administration/Toolshed/AdminsCommand.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration.Managers; +using Content.Server.Administration.Managers; using Content.Shared.Administration; using Robust.Shared.Player; using Robust.Shared.Toolshed; diff --git a/Content.Server/Administration/Toolshed/MarkedCommand.cs b/Content.Server/Administration/Toolshed/MarkedCommand.cs index c2b9ecf79a..1227233a23 100644 --- a/Content.Server/Administration/Toolshed/MarkedCommand.cs +++ b/Content.Server/Administration/Toolshed/MarkedCommand.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration; +using Content.Shared.Administration; using Robust.Shared.Toolshed; namespace Content.Server.Administration.Toolshed; diff --git a/Content.Server/Administration/Toolshed/RejuvenateCommand.cs b/Content.Server/Administration/Toolshed/RejuvenateCommand.cs index b503e9cb96..9ac9079bc4 100644 --- a/Content.Server/Administration/Toolshed/RejuvenateCommand.cs +++ b/Content.Server/Administration/Toolshed/RejuvenateCommand.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration; +using Content.Shared.Administration; using Content.Shared.Administration.Systems; using Robust.Shared.Toolshed; using Robust.Shared.Toolshed.Errors; diff --git a/Content.Server/Administration/Toolshed/SolutionCommand.cs b/Content.Server/Administration/Toolshed/SolutionCommand.cs index 079deb62c5..60fe9a553d 100644 --- a/Content.Server/Administration/Toolshed/SolutionCommand.cs +++ b/Content.Server/Administration/Toolshed/SolutionCommand.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration; +using Content.Shared.Administration; using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Reagent; using Content.Shared.FixedPoint; diff --git a/Content.Server/Administration/UI/PermissionsEui.cs b/Content.Server/Administration/UI/PermissionsEui.cs index 028662902d..82ce538a8d 100644 --- a/Content.Server/Administration/UI/PermissionsEui.cs +++ b/Content.Server/Administration/UI/PermissionsEui.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using System.Threading.Tasks; using Content.Server.Administration.Managers; using Content.Server.Database; diff --git a/Content.Server/Afk/AfkManager.cs b/Content.Server/Afk/AfkManager.cs index 54bc4d7fd5..c30b61f62f 100644 --- a/Content.Server/Afk/AfkManager.cs +++ b/Content.Server/Afk/AfkManager.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration.Managers; +using Content.Server.Administration.Managers; using Content.Shared.CCVar; using JetBrains.Annotations; using Robust.Server.Player; diff --git a/Content.Server/Afk/IsAfkCommand.cs b/Content.Server/Afk/IsAfkCommand.cs index a6968ec210..2359e9fdf8 100644 --- a/Content.Server/Afk/IsAfkCommand.cs +++ b/Content.Server/Afk/IsAfkCommand.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration; +using Content.Server.Administration; using Content.Shared.Administration; using Robust.Server.Player; using Robust.Shared.Console; diff --git a/Content.Server/AlertLevel/Commands/SetAlertLevelCommand.cs b/Content.Server/AlertLevel/Commands/SetAlertLevelCommand.cs index c09e67d5dd..6807c34d58 100644 --- a/Content.Server/AlertLevel/Commands/SetAlertLevelCommand.cs +++ b/Content.Server/AlertLevel/Commands/SetAlertLevelCommand.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration; +using Content.Server.Administration; using Content.Shared.Administration; using Content.Shared.AlertLevel; using Content.Shared.Station; diff --git a/Content.Server/Anomaly/AnomalySystem.Commands.cs b/Content.Server/Anomaly/AnomalySystem.Commands.cs index 177f4c7b4a..4e9d8863d6 100644 --- a/Content.Server/Anomaly/AnomalySystem.Commands.cs +++ b/Content.Server/Anomaly/AnomalySystem.Commands.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration; +using Content.Server.Administration; using Content.Shared.Administration; using Content.Shared.Anomaly.Components; using Robust.Shared.Console; diff --git a/Content.Server/Anomaly/AnomalySystem.Vessel.cs b/Content.Server/Anomaly/AnomalySystem.Vessel.cs index 0900f3e96f..5a9917d22e 100644 --- a/Content.Server/Anomaly/AnomalySystem.Vessel.cs +++ b/Content.Server/Anomaly/AnomalySystem.Vessel.cs @@ -1,4 +1,4 @@ -using Content.Server.Anomaly.Components; +using Content.Server.Anomaly.Components; using Content.Server.Power.EntitySystems; using Content.Shared.Anomaly; using Content.Shared.Anomaly.Components; diff --git a/Content.Server/Anomaly/Components/AnomalyVesselComponent.cs b/Content.Server/Anomaly/Components/AnomalyVesselComponent.cs index 1225cbf116..47c1d57f0c 100644 --- a/Content.Server/Anomaly/Components/AnomalyVesselComponent.cs +++ b/Content.Server/Anomaly/Components/AnomalyVesselComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Anomaly; +using Content.Shared.Anomaly; using Robust.Shared.Audio; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; diff --git a/Content.Server/Anomaly/Components/BluespaceAnomalyComponent.cs b/Content.Server/Anomaly/Components/BluespaceAnomalyComponent.cs index 6c6692cfff..ede774eaef 100644 --- a/Content.Server/Anomaly/Components/BluespaceAnomalyComponent.cs +++ b/Content.Server/Anomaly/Components/BluespaceAnomalyComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.Anomaly.Effects; +using Content.Server.Anomaly.Effects; using Robust.Shared.Audio; namespace Content.Server.Anomaly.Components; diff --git a/Content.Server/Anomaly/Components/GeneratingAnomalyGeneratorComponent.cs b/Content.Server/Anomaly/Components/GeneratingAnomalyGeneratorComponent.cs index ef93e8c699..b22bebeaea 100644 --- a/Content.Server/Anomaly/Components/GeneratingAnomalyGeneratorComponent.cs +++ b/Content.Server/Anomaly/Components/GeneratingAnomalyGeneratorComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Anomaly; +using Content.Shared.Anomaly; using Robust.Shared.Audio; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; diff --git a/Content.Server/Anomaly/Components/TechAnomalyComponent.cs b/Content.Server/Anomaly/Components/TechAnomalyComponent.cs index c15fa4fcf4..0600fd3963 100644 --- a/Content.Server/Anomaly/Components/TechAnomalyComponent.cs +++ b/Content.Server/Anomaly/Components/TechAnomalyComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.Anomaly.Effects; +using Content.Server.Anomaly.Effects; using Content.Shared.Destructible.Thresholds; using Content.Shared.DeviceLinking; using Robust.Shared.Prototypes; diff --git a/Content.Server/Antag/Components/AntagImmuneComponent.cs b/Content.Server/Antag/Components/AntagImmuneComponent.cs index beec7960f0..4de6c93286 100644 --- a/Content.Server/Antag/Components/AntagImmuneComponent.cs +++ b/Content.Server/Antag/Components/AntagImmuneComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Antag.Components; +namespace Content.Server.Antag.Components; [RegisterComponent] public sealed partial class AntagImmuneComponent : Component diff --git a/Content.Server/Atmos/Commands/ListGasesCommand.cs b/Content.Server/Atmos/Commands/ListGasesCommand.cs index f794f33011..33429e7b70 100644 --- a/Content.Server/Atmos/Commands/ListGasesCommand.cs +++ b/Content.Server/Atmos/Commands/ListGasesCommand.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration; +using Content.Server.Administration; using Content.Server.Atmos.EntitySystems; using Content.Shared.Administration; using Robust.Shared.Console; diff --git a/Content.Server/Atmos/Components/AirFilterComponent.cs b/Content.Server/Atmos/Components/AirFilterComponent.cs index a66df65557..4e26ef1f52 100644 --- a/Content.Server/Atmos/Components/AirFilterComponent.cs +++ b/Content.Server/Atmos/Components/AirFilterComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.Atmos.EntitySystems; +using Content.Server.Atmos.EntitySystems; using Content.Shared.Atmos; namespace Content.Server.Atmos.Components; diff --git a/Content.Server/Atmos/Components/AirIntakeComponent.cs b/Content.Server/Atmos/Components/AirIntakeComponent.cs index 9aca3e126f..453153ba87 100644 --- a/Content.Server/Atmos/Components/AirIntakeComponent.cs +++ b/Content.Server/Atmos/Components/AirIntakeComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.Atmos.EntitySystems; +using Content.Server.Atmos.EntitySystems; using Content.Shared.Atmos; namespace Content.Server.Atmos.Components; diff --git a/Content.Server/Atmos/Components/AtmosExposedComponent.cs b/Content.Server/Atmos/Components/AtmosExposedComponent.cs index 0f40e998ea..ee4c8d93d3 100644 --- a/Content.Server/Atmos/Components/AtmosExposedComponent.cs +++ b/Content.Server/Atmos/Components/AtmosExposedComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Temperature.Components; +using Content.Shared.Temperature.Components; namespace Content.Server.Atmos.Components; diff --git a/Content.Server/Atmos/Components/GasMixtureHolderComponent.cs b/Content.Server/Atmos/Components/GasMixtureHolderComponent.cs index 98feb43346..1b25ab771d 100644 --- a/Content.Server/Atmos/Components/GasMixtureHolderComponent.cs +++ b/Content.Server/Atmos/Components/GasMixtureHolderComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Atmos; +using Content.Shared.Atmos; namespace Content.Server.Atmos.Components { diff --git a/Content.Server/Atmos/Components/PressureProtectionComponent.cs b/Content.Server/Atmos/Components/PressureProtectionComponent.cs index e1f13bca79..839bfd3e15 100644 --- a/Content.Server/Atmos/Components/PressureProtectionComponent.cs +++ b/Content.Server/Atmos/Components/PressureProtectionComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.Atmos.EntitySystems; +using Content.Server.Atmos.EntitySystems; namespace Content.Server.Atmos.Components; diff --git a/Content.Server/Atmos/GasMixtureStringRepresentation.cs b/Content.Server/Atmos/GasMixtureStringRepresentation.cs index de87e6e295..50c526e27c 100644 --- a/Content.Server/Atmos/GasMixtureStringRepresentation.cs +++ b/Content.Server/Atmos/GasMixtureStringRepresentation.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; namespace Content.Server.Atmos; diff --git a/Content.Server/Atmos/Monitor/Payloads/AirAlarmPayloads.cs b/Content.Server/Atmos/Monitor/Payloads/AirAlarmPayloads.cs index ed8d159c30..963c3af009 100644 --- a/Content.Server/Atmos/Monitor/Payloads/AirAlarmPayloads.cs +++ b/Content.Server/Atmos/Monitor/Payloads/AirAlarmPayloads.cs @@ -1,4 +1,4 @@ -using Content.Shared.Atmos.Monitor; +using Content.Shared.Atmos.Monitor; using Content.Shared.Atmos.Monitor.Components; using Content.Shared.DeviceNetwork; diff --git a/Content.Server/Atmos/Monitor/Payloads/AtmosAlarmablePayloads.cs b/Content.Server/Atmos/Monitor/Payloads/AtmosAlarmablePayloads.cs index e2c99bb8cd..9a9e1d8726 100644 --- a/Content.Server/Atmos/Monitor/Payloads/AtmosAlarmablePayloads.cs +++ b/Content.Server/Atmos/Monitor/Payloads/AtmosAlarmablePayloads.cs @@ -1,4 +1,4 @@ -using Content.Shared.Atmos.Monitor; +using Content.Shared.Atmos.Monitor; using Content.Shared.DeviceNetwork; using Content.Shared.Tag; using Robust.Shared.Prototypes; diff --git a/Content.Server/Atmos/Monitor/Payloads/AtmosMonitorPayloads.cs b/Content.Server/Atmos/Monitor/Payloads/AtmosMonitorPayloads.cs index 5a54eac918..804873932d 100644 --- a/Content.Server/Atmos/Monitor/Payloads/AtmosMonitorPayloads.cs +++ b/Content.Server/Atmos/Monitor/Payloads/AtmosMonitorPayloads.cs @@ -1,4 +1,4 @@ -using Content.Server.Atmos.Monitor.Components; +using Content.Server.Atmos.Monitor.Components; using Content.Shared.Atmos; using Content.Shared.Atmos.Monitor; using Content.Shared.DeviceNetwork; diff --git a/Content.Server/Atmos/Monitor/Payloads/AtmosSyncPayload.cs b/Content.Server/Atmos/Monitor/Payloads/AtmosSyncPayload.cs index 885b5602f5..d6cd2d3e16 100644 --- a/Content.Server/Atmos/Monitor/Payloads/AtmosSyncPayload.cs +++ b/Content.Server/Atmos/Monitor/Payloads/AtmosSyncPayload.cs @@ -1,4 +1,4 @@ -using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork; namespace Content.Server.Atmos.Monitor.Payloads; diff --git a/Content.Server/Atmos/Reactions/FrezonCoolantReaction.cs b/Content.Server/Atmos/Reactions/FrezonCoolantReaction.cs index 475c149cf3..db768667f9 100644 --- a/Content.Server/Atmos/Reactions/FrezonCoolantReaction.cs +++ b/Content.Server/Atmos/Reactions/FrezonCoolantReaction.cs @@ -1,4 +1,4 @@ -using Content.Server.Atmos.EntitySystems; +using Content.Server.Atmos.EntitySystems; using Content.Shared.Atmos; using Content.Shared.Atmos.Reactions; using JetBrains.Annotations; diff --git a/Content.Server/Atmos/Reactions/FrezonProductionReaction.cs b/Content.Server/Atmos/Reactions/FrezonProductionReaction.cs index e3d3ece6b6..604a5112bc 100644 --- a/Content.Server/Atmos/Reactions/FrezonProductionReaction.cs +++ b/Content.Server/Atmos/Reactions/FrezonProductionReaction.cs @@ -1,4 +1,4 @@ -using Content.Server.Atmos.EntitySystems; +using Content.Server.Atmos.EntitySystems; using Content.Shared.Atmos; using Content.Shared.Atmos.Reactions; using JetBrains.Annotations; diff --git a/Content.Server/Atmos/Reactions/GasReactionPrototype.cs b/Content.Server/Atmos/Reactions/GasReactionPrototype.cs index dc7ba85dcc..9e00d38ede 100644 --- a/Content.Server/Atmos/Reactions/GasReactionPrototype.cs +++ b/Content.Server/Atmos/Reactions/GasReactionPrototype.cs @@ -1,4 +1,4 @@ -using Content.Server.Atmos.EntitySystems; +using Content.Server.Atmos.EntitySystems; using Content.Shared.Atmos; using Content.Shared.Atmos.Reactions; using Robust.Shared.Prototypes; diff --git a/Content.Server/Audio/ServerGlobalSoundSystem.cs b/Content.Server/Audio/ServerGlobalSoundSystem.cs index 3974b7b4ed..a96509711e 100644 --- a/Content.Server/Audio/ServerGlobalSoundSystem.cs +++ b/Content.Server/Audio/ServerGlobalSoundSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Station.Systems; +using Content.Server.Station.Systems; using Content.Shared.Audio; using Robust.Shared.Audio; using Robust.Shared.Audio.Systems; diff --git a/Content.Server/Beam/BeamSystem.cs b/Content.Server/Beam/BeamSystem.cs index 81e31f9ae1..0235cbdd92 100644 --- a/Content.Server/Beam/BeamSystem.cs +++ b/Content.Server/Beam/BeamSystem.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Content.Shared.Beam; using Content.Shared.Beam.Components; using Content.Shared.Physics; diff --git a/Content.Server/CPUJob/JobQueues/Queues/PathfindingJobQueue.cs b/Content.Server/CPUJob/JobQueues/Queues/PathfindingJobQueue.cs index a3c1084e40..c54a39fda4 100644 --- a/Content.Server/CPUJob/JobQueues/Queues/PathfindingJobQueue.cs +++ b/Content.Server/CPUJob/JobQueues/Queues/PathfindingJobQueue.cs @@ -1,4 +1,4 @@ -using Robust.Shared.CPUJob.JobQueues.Queues; +using Robust.Shared.CPUJob.JobQueues.Queues; namespace Content.Server.CPUJob.JobQueues.Queues { diff --git a/Content.Server/Cargo/Components/CargoSellBlacklistComponent.cs b/Content.Server/Cargo/Components/CargoSellBlacklistComponent.cs index 9cbaa4a15b..652644d2ac 100644 --- a/Content.Server/Cargo/Components/CargoSellBlacklistComponent.cs +++ b/Content.Server/Cargo/Components/CargoSellBlacklistComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Cargo.Components; +namespace Content.Server.Cargo.Components; /// /// Marks an entity as unable to be sold through the cargo shuttle. diff --git a/Content.Server/Cargo/Components/MobPriceComponent.cs b/Content.Server/Cargo/Components/MobPriceComponent.cs index ec4bb51487..6db5f3188e 100644 --- a/Content.Server/Cargo/Components/MobPriceComponent.cs +++ b/Content.Server/Cargo/Components/MobPriceComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Cargo.Components; +namespace Content.Server.Cargo.Components; /// /// This is used for calculating the price of mobs. diff --git a/Content.Server/Cargo/Components/RandomPriceComponent.cs b/Content.Server/Cargo/Components/RandomPriceComponent.cs index 3ece8334e6..dc0d9aa891 100644 --- a/Content.Server/Cargo/Components/RandomPriceComponent.cs +++ b/Content.Server/Cargo/Components/RandomPriceComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.Cargo.Systems; +using Content.Server.Cargo.Systems; namespace Content.Server.Cargo.Components; diff --git a/Content.Server/Cargo/Components/StackPriceComponent.cs b/Content.Server/Cargo/Components/StackPriceComponent.cs index 52675792f1..64efcf7c66 100644 --- a/Content.Server/Cargo/Components/StackPriceComponent.cs +++ b/Content.Server/Cargo/Components/StackPriceComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Cargo.Components; +namespace Content.Server.Cargo.Components; /// /// This is used for pricing stacks of items. diff --git a/Content.Server/Cargo/Components/StaticPriceComponent.cs b/Content.Server/Cargo/Components/StaticPriceComponent.cs index 5fa50b00a3..5e9dd2c9ea 100644 --- a/Content.Server/Cargo/Components/StaticPriceComponent.cs +++ b/Content.Server/Cargo/Components/StaticPriceComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Cargo.Components; +namespace Content.Server.Cargo.Components; /// /// This is used for setting a static, unchanging price for an object. diff --git a/Content.Server/Cargo/Systems/PricingSystem.cs b/Content.Server/Cargo/Systems/PricingSystem.cs index 4ee27bb546..367de77ca8 100644 --- a/Content.Server/Cargo/Systems/PricingSystem.cs +++ b/Content.Server/Cargo/Systems/PricingSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration; +using Content.Server.Administration; using Content.Server.Cargo.Components; using Content.Shared.Administration; using Content.Shared.Cargo; diff --git a/Content.Server/Chat/ChatUser.cs b/Content.Server/Chat/ChatUser.cs index 9b63dbc42c..648e275479 100644 --- a/Content.Server/Chat/ChatUser.cs +++ b/Content.Server/Chat/ChatUser.cs @@ -1,4 +1,4 @@ -using Content.Shared.Chat; +using Content.Shared.Chat; namespace Content.Server.Chat; diff --git a/Content.Server/Chat/V2/Commands/DeleteChatMessageCommand.cs b/Content.Server/Chat/V2/Commands/DeleteChatMessageCommand.cs index d2dcee704a..98210f7a6b 100644 --- a/Content.Server/Chat/V2/Commands/DeleteChatMessageCommand.cs +++ b/Content.Server/Chat/V2/Commands/DeleteChatMessageCommand.cs @@ -1,4 +1,4 @@ -using System.Diagnostics; +using System.Diagnostics; using Content.Server.Administration; using Content.Server.Chat.V2.Repository; using Content.Shared.Administration; diff --git a/Content.Server/Chat/V2/Commands/NukeChatMessagesCommand.cs b/Content.Server/Chat/V2/Commands/NukeChatMessagesCommand.cs index 04da1de9d5..09ebd6fa49 100644 --- a/Content.Server/Chat/V2/Commands/NukeChatMessagesCommand.cs +++ b/Content.Server/Chat/V2/Commands/NukeChatMessagesCommand.cs @@ -1,4 +1,4 @@ -using System.Diagnostics; +using System.Diagnostics; using Content.Server.Administration; using Content.Server.Chat.V2.Repository; using Content.Shared.Administration; diff --git a/Content.Server/Chat/V2/Messages.cs b/Content.Server/Chat/V2/Messages.cs index 31a563cbeb..5ab03bf260 100644 --- a/Content.Server/Chat/V2/Messages.cs +++ b/Content.Server/Chat/V2/Messages.cs @@ -1,4 +1,4 @@ -using Content.Shared.Chat.Prototypes; +using Content.Shared.Chat.Prototypes; using Content.Shared.Chat.V2; using Content.Shared.Radio; diff --git a/Content.Server/Chemistry/Commands/DumpReagentGuideText.cs b/Content.Server/Chemistry/Commands/DumpReagentGuideText.cs index 678a45fb53..9a21eab3d7 100644 --- a/Content.Server/Chemistry/Commands/DumpReagentGuideText.cs +++ b/Content.Server/Chemistry/Commands/DumpReagentGuideText.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration; +using Content.Server.Administration; using Content.Shared.Administration; using Content.Shared.Chemistry.Reagent; using Robust.Shared.Console; diff --git a/Content.Server/Chemistry/Components/ActiveSolutionHeaterComponent.cs b/Content.Server/Chemistry/Components/ActiveSolutionHeaterComponent.cs index 3159250869..1612bf653b 100644 --- a/Content.Server/Chemistry/Components/ActiveSolutionHeaterComponent.cs +++ b/Content.Server/Chemistry/Components/ActiveSolutionHeaterComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Chemistry.Components; +namespace Content.Server.Chemistry.Components; [RegisterComponent] public sealed partial class ActiveSolutionHeaterComponent : Component diff --git a/Content.Server/Chemistry/Components/BaseSolutionInjectOnEventComponent.cs b/Content.Server/Chemistry/Components/BaseSolutionInjectOnEventComponent.cs index 708c1ef005..3cf3cca94c 100644 --- a/Content.Server/Chemistry/Components/BaseSolutionInjectOnEventComponent.cs +++ b/Content.Server/Chemistry/Components/BaseSolutionInjectOnEventComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.FixedPoint; +using Content.Shared.FixedPoint; using Content.Shared.Inventory; namespace Content.Server.Chemistry.Components; diff --git a/Content.Server/Chemistry/Components/MeleeChemicalInjectorComponent.cs b/Content.Server/Chemistry/Components/MeleeChemicalInjectorComponent.cs index 6b64b82f78..7c121ac495 100644 --- a/Content.Server/Chemistry/Components/MeleeChemicalInjectorComponent.cs +++ b/Content.Server/Chemistry/Components/MeleeChemicalInjectorComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Chemistry.Components; +namespace Content.Server.Chemistry.Components; /// /// Used for melee weapon entities that should try to inject a diff --git a/Content.Server/Chemistry/Components/VaporComponent.cs b/Content.Server/Chemistry/Components/VaporComponent.cs index e07283b09c..45b16e2602 100644 --- a/Content.Server/Chemistry/Components/VaporComponent.cs +++ b/Content.Server/Chemistry/Components/VaporComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Map; +using Robust.Shared.Map; namespace Content.Server.Chemistry.Components { diff --git a/Content.Server/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs b/Content.Server/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs index 739e5504ae..32da54e8be 100644 --- a/Content.Server/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Chemistry; +using Content.Shared.Chemistry; using Content.Shared.Chemistry.Reagent; using Robust.Server.Player; using Robust.Shared.Enums; diff --git a/Content.Server/Chemistry/EntitySystems/SolutionContainerSystem.cs b/Content.Server/Chemistry/EntitySystems/SolutionContainerSystem.cs index cc76a11174..f3c542a7c6 100644 --- a/Content.Server/Chemistry/EntitySystems/SolutionContainerSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/SolutionContainerSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Chemistry.EntitySystems; +using Content.Shared.Chemistry.EntitySystems; namespace Content.Server.Chemistry.EntitySystems; diff --git a/Content.Server/Clothing/Systems/OutfitSystem.cs b/Content.Server/Clothing/Systems/OutfitSystem.cs index 1395a87db8..d17b01fc14 100644 --- a/Content.Server/Clothing/Systems/OutfitSystem.cs +++ b/Content.Server/Clothing/Systems/OutfitSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Hands.Systems; +using Content.Server.Hands.Systems; using Content.Server.Preferences.Managers; using Content.Server.Storage.EntitySystems; using Content.Shared.Access.Components; diff --git a/Content.Server/Connection/ConnectionManager.Whitelist.cs b/Content.Server/Connection/ConnectionManager.Whitelist.cs index ec639f7463..b1cf5edc6c 100644 --- a/Content.Server/Connection/ConnectionManager.Whitelist.cs +++ b/Content.Server/Connection/ConnectionManager.Whitelist.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using System.Threading.Tasks; using Content.Server.Connection.Whitelist; using Content.Server.Connection.Whitelist.Conditions; diff --git a/Content.Server/Connection/GrantConnectBypassCommand.cs b/Content.Server/Connection/GrantConnectBypassCommand.cs index 4e80f5fcfb..94e55e250a 100644 --- a/Content.Server/Connection/GrantConnectBypassCommand.cs +++ b/Content.Server/Connection/GrantConnectBypassCommand.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration; +using Content.Server.Administration; using Content.Shared.Administration; using Robust.Shared.Console; diff --git a/Content.Server/Connection/IPIntel/IPIntel.cs b/Content.Server/Connection/IPIntel/IPIntel.cs index a2e7bc580c..ef77e0793b 100644 --- a/Content.Server/Connection/IPIntel/IPIntel.cs +++ b/Content.Server/Connection/IPIntel/IPIntel.cs @@ -1,4 +1,4 @@ -using System.Buffers.Binary; +using System.Buffers.Binary; using System.Net; using System.Net.Sockets; using System.Threading.Tasks; diff --git a/Content.Server/Connection/IPIntel/IPIntelAPI.cs b/Content.Server/Connection/IPIntel/IPIntelAPI.cs index 42cbbf9f93..1e5dc4188e 100644 --- a/Content.Server/Connection/IPIntel/IPIntelAPI.cs +++ b/Content.Server/Connection/IPIntel/IPIntelAPI.cs @@ -1,4 +1,4 @@ -using System.Net; +using System.Net; using System.Net.Http; using System.Threading.Tasks; using Content.Shared.CCVar; diff --git a/Content.Server/Connection/UserDataExt.cs b/Content.Server/Connection/UserDataExt.cs index a409f79a75..11b8e11e48 100644 --- a/Content.Server/Connection/UserDataExt.cs +++ b/Content.Server/Connection/UserDataExt.cs @@ -1,4 +1,4 @@ -using Content.Shared.Database; +using Content.Shared.Database; using Robust.Shared.Network; namespace Content.Server.Connection; diff --git a/Content.Server/Connection/Whitelist/BlacklistCommands.cs b/Content.Server/Connection/Whitelist/BlacklistCommands.cs index da4de80d88..00fbbba210 100644 --- a/Content.Server/Connection/Whitelist/BlacklistCommands.cs +++ b/Content.Server/Connection/Whitelist/BlacklistCommands.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration; +using Content.Server.Administration; using Content.Server.Database; using Content.Shared.Administration; using Robust.Shared.Console; diff --git a/Content.Server/Connection/Whitelist/Conditions/ConditionAlwaysMatch.cs b/Content.Server/Connection/Whitelist/Conditions/ConditionAlwaysMatch.cs index 9fe5db4012..fb4d8d2e92 100644 --- a/Content.Server/Connection/Whitelist/Conditions/ConditionAlwaysMatch.cs +++ b/Content.Server/Connection/Whitelist/Conditions/ConditionAlwaysMatch.cs @@ -1,4 +1,4 @@ -using System.Threading.Tasks; +using System.Threading.Tasks; using Robust.Shared.Network; namespace Content.Server.Connection.Whitelist.Conditions; diff --git a/Content.Server/Connection/Whitelist/Conditions/ConditionManualBlacklistMembership.cs b/Content.Server/Connection/Whitelist/Conditions/ConditionManualBlacklistMembership.cs index 9d67129e71..50d07f0351 100644 --- a/Content.Server/Connection/Whitelist/Conditions/ConditionManualBlacklistMembership.cs +++ b/Content.Server/Connection/Whitelist/Conditions/ConditionManualBlacklistMembership.cs @@ -1,4 +1,4 @@ -using System.Threading.Tasks; +using System.Threading.Tasks; using Content.Server.Database; using Robust.Shared.Network; diff --git a/Content.Server/Connection/Whitelist/Conditions/ConditionManualWhitelistMembership.cs b/Content.Server/Connection/Whitelist/Conditions/ConditionManualWhitelistMembership.cs index a31835f9c2..ba188d6e53 100644 --- a/Content.Server/Connection/Whitelist/Conditions/ConditionManualWhitelistMembership.cs +++ b/Content.Server/Connection/Whitelist/Conditions/ConditionManualWhitelistMembership.cs @@ -1,4 +1,4 @@ -using System.Threading.Tasks; +using System.Threading.Tasks; using Content.Server.Database; using Robust.Shared.Network; diff --git a/Content.Server/Connection/Whitelist/Conditions/ConditionNotesDateRange.cs b/Content.Server/Connection/Whitelist/Conditions/ConditionNotesDateRange.cs index 1e34bc6373..8479d16e84 100644 --- a/Content.Server/Connection/Whitelist/Conditions/ConditionNotesDateRange.cs +++ b/Content.Server/Connection/Whitelist/Conditions/ConditionNotesDateRange.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using System.Threading.Tasks; using Content.Server.Database; using Content.Shared.Database; diff --git a/Content.Server/Connection/Whitelist/Conditions/ConditionNotesPlaytimeRange.cs b/Content.Server/Connection/Whitelist/Conditions/ConditionNotesPlaytimeRange.cs index d2d22a8cd0..1d8b97df9d 100644 --- a/Content.Server/Connection/Whitelist/Conditions/ConditionNotesPlaytimeRange.cs +++ b/Content.Server/Connection/Whitelist/Conditions/ConditionNotesPlaytimeRange.cs @@ -1,4 +1,4 @@ -using Content.Shared.Database; +using Content.Shared.Database; namespace Content.Server.Connection.Whitelist.Conditions; diff --git a/Content.Server/Connection/Whitelist/Conditions/ConditionPlayerCount.cs b/Content.Server/Connection/Whitelist/Conditions/ConditionPlayerCount.cs index 432ad32c4a..ed9aaeaf6d 100644 --- a/Content.Server/Connection/Whitelist/Conditions/ConditionPlayerCount.cs +++ b/Content.Server/Connection/Whitelist/Conditions/ConditionPlayerCount.cs @@ -1,4 +1,4 @@ -using System.Threading.Tasks; +using System.Threading.Tasks; using Robust.Server.Player; using Robust.Shared.Network; diff --git a/Content.Server/Connection/Whitelist/Conditions/ConditionPlaytime.cs b/Content.Server/Connection/Whitelist/Conditions/ConditionPlaytime.cs index 7b45181e12..7140d578d4 100644 --- a/Content.Server/Connection/Whitelist/Conditions/ConditionPlaytime.cs +++ b/Content.Server/Connection/Whitelist/Conditions/ConditionPlaytime.cs @@ -1,4 +1,4 @@ -using System.Threading.Tasks; +using System.Threading.Tasks; using Content.Server.Database; using Content.Shared.Players.PlayTimeTracking; using Robust.Shared.Network; diff --git a/Content.Server/Connection/Whitelist/WhitelistCondition.cs b/Content.Server/Connection/Whitelist/WhitelistCondition.cs index b68fd52996..cfee913184 100644 --- a/Content.Server/Connection/Whitelist/WhitelistCondition.cs +++ b/Content.Server/Connection/Whitelist/WhitelistCondition.cs @@ -1,4 +1,4 @@ -using System.Text.Json.Serialization; +using System.Text.Json.Serialization; using System.Threading.Tasks; using JetBrains.Annotations; using Robust.Shared.Network; diff --git a/Content.Server/Connection/Whitelist/WhitelistPrototype.cs b/Content.Server/Connection/Whitelist/WhitelistPrototype.cs index af119c7b1d..5521235654 100644 --- a/Content.Server/Connection/Whitelist/WhitelistPrototype.cs +++ b/Content.Server/Connection/Whitelist/WhitelistPrototype.cs @@ -1,4 +1,4 @@ -using System.Threading.Tasks; +using System.Threading.Tasks; using Robust.Shared.Network; using Robust.Shared.Prototypes; diff --git a/Content.Server/Construction/AnchorOnlyOnStationSystem.cs b/Content.Server/Construction/AnchorOnlyOnStationSystem.cs index dd731c3efb..9b787db52d 100644 --- a/Content.Server/Construction/AnchorOnlyOnStationSystem.cs +++ b/Content.Server/Construction/AnchorOnlyOnStationSystem.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Shared.Construction.Components; using Content.Shared.Station.Systems; using Robust.Server.GameObjects; diff --git a/Content.Server/Construction/Completions/AddContainer.cs b/Content.Server/Construction/Completions/AddContainer.cs index 5885cd8248..732847da2c 100644 --- a/Content.Server/Construction/Completions/AddContainer.cs +++ b/Content.Server/Construction/Completions/AddContainer.cs @@ -1,4 +1,4 @@ -using Content.Shared.Construction; +using Content.Shared.Construction; using JetBrains.Annotations; namespace Content.Server.Construction.Completions diff --git a/Content.Server/Construction/Completions/AppearanceChange.cs b/Content.Server/Construction/Completions/AppearanceChange.cs index 15b3816722..ead60f254b 100644 --- a/Content.Server/Construction/Completions/AppearanceChange.cs +++ b/Content.Server/Construction/Completions/AppearanceChange.cs @@ -1,4 +1,4 @@ -using Content.Server.Construction.Components; +using Content.Server.Construction.Components; using Content.Shared.Construction; using JetBrains.Annotations; using Robust.Server.GameObjects; diff --git a/Content.Server/Construction/Completions/MachineFrameRegenerateProgress.cs b/Content.Server/Construction/Completions/MachineFrameRegenerateProgress.cs index a47dec6742..1d867491b0 100644 --- a/Content.Server/Construction/Completions/MachineFrameRegenerateProgress.cs +++ b/Content.Server/Construction/Completions/MachineFrameRegenerateProgress.cs @@ -1,4 +1,4 @@ -using Content.Server.Construction.Components; +using Content.Server.Construction.Components; using Content.Shared.Construction; using JetBrains.Annotations; diff --git a/Content.Server/Construction/Completions/SetStackCount.cs b/Content.Server/Construction/Completions/SetStackCount.cs index 409d6abf95..102eb97e08 100644 --- a/Content.Server/Construction/Completions/SetStackCount.cs +++ b/Content.Server/Construction/Completions/SetStackCount.cs @@ -1,4 +1,4 @@ -using Content.Server.Stack; +using Content.Server.Stack; using Content.Shared.Construction; using JetBrains.Annotations; diff --git a/Content.Server/Construction/Components/MachineComponent.cs b/Content.Server/Construction/Components/MachineComponent.cs index 8a0f117712..2869949fda 100644 --- a/Content.Server/Construction/Components/MachineComponent.cs +++ b/Content.Server/Construction/Components/MachineComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Construction.Components; +using Content.Shared.Construction.Components; using Robust.Shared.Containers; using Robust.Shared.Prototypes; diff --git a/Content.Server/Construction/Components/MachineFrameComponent.cs b/Content.Server/Construction/Components/MachineFrameComponent.cs index 14e81e8dd3..c51f88bdd7 100644 --- a/Content.Server/Construction/Components/MachineFrameComponent.cs +++ b/Content.Server/Construction/Components/MachineFrameComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Construction.Components; +using Content.Shared.Construction.Components; using Content.Shared.Stacks; using Content.Shared.Tag; using Robust.Shared.Containers; diff --git a/Content.Server/Construction/Conditions/AllWiresCut.cs b/Content.Server/Construction/Conditions/AllWiresCut.cs index 10cb2e5cf0..31fc4441b0 100644 --- a/Content.Server/Construction/Conditions/AllWiresCut.cs +++ b/Content.Server/Construction/Conditions/AllWiresCut.cs @@ -1,4 +1,4 @@ -using Content.Server.Wires; +using Content.Server.Wires; using Content.Shared.Construction; using Content.Shared.Examine; using JetBrains.Annotations; diff --git a/Content.Server/Construction/Conditions/EntityAnchored.cs b/Content.Server/Construction/Conditions/EntityAnchored.cs index 6bcfe0b772..6f6df89e04 100644 --- a/Content.Server/Construction/Conditions/EntityAnchored.cs +++ b/Content.Server/Construction/Conditions/EntityAnchored.cs @@ -1,4 +1,4 @@ -using Content.Shared.Construction; +using Content.Shared.Construction; using Content.Shared.Examine; using JetBrains.Annotations; using Robust.Shared.Utility; diff --git a/Content.Server/Damage/Components/ExaminableDamageComponent.cs b/Content.Server/Damage/Components/ExaminableDamageComponent.cs index 26e9e40692..0a02c41d75 100644 --- a/Content.Server/Damage/Components/ExaminableDamageComponent.cs +++ b/Content.Server/Damage/Components/ExaminableDamageComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Dataset; +using Content.Shared.Dataset; using Robust.Shared.Prototypes; namespace Content.Server.Damage.Components; diff --git a/Content.Server/Damage/Systems/ExaminableDamageSystem.cs b/Content.Server/Damage/Systems/ExaminableDamageSystem.cs index 6225ced3dc..89eeadaf7b 100644 --- a/Content.Server/Damage/Systems/ExaminableDamageSystem.cs +++ b/Content.Server/Damage/Systems/ExaminableDamageSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Damage.Components; +using Content.Server.Damage.Components; using Content.Server.Destructible; using Content.Shared.Damage.Components; using Content.Shared.Damage.Systems; diff --git a/Content.Server/Damage/Systems/StaminaSystem.cs b/Content.Server/Damage/Systems/StaminaSystem.cs index 71f40b310d..95f4662e32 100644 --- a/Content.Server/Damage/Systems/StaminaSystem.cs +++ b/Content.Server/Damage/Systems/StaminaSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Damage.Systems; +using Content.Shared.Damage.Systems; namespace Content.Server.Damage.Systems; diff --git a/Content.Server/Database/BanMatcher.cs b/Content.Server/Database/BanMatcher.cs index 0302c0dc13..fe933a2c1a 100644 --- a/Content.Server/Database/BanMatcher.cs +++ b/Content.Server/Database/BanMatcher.cs @@ -1,4 +1,4 @@ -using System.Collections.Immutable; +using System.Collections.Immutable; using System.Linq; using System.Net; using Content.Server.IP; diff --git a/Content.Server/Database/EFCoreExtensions.cs b/Content.Server/Database/EFCoreExtensions.cs index 58dbc4639b..3fe4b84cf2 100644 --- a/Content.Server/Database/EFCoreExtensions.cs +++ b/Content.Server/Database/EFCoreExtensions.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using System.Linq.Expressions; using Microsoft.EntityFrameworkCore; diff --git a/Content.Server/Database/ServerDbEntryManager.cs b/Content.Server/Database/ServerDbEntryManager.cs index 95c3444df2..b89fae52ec 100644 --- a/Content.Server/Database/ServerDbEntryManager.cs +++ b/Content.Server/Database/ServerDbEntryManager.cs @@ -1,4 +1,4 @@ -using System.Threading.Tasks; +using System.Threading.Tasks; using Content.Shared.CCVar; using Robust.Shared.Configuration; diff --git a/Content.Server/Database/ServerDbManagerExt.cs b/Content.Server/Database/ServerDbManagerExt.cs index fad7a7234e..cfacc9c313 100644 --- a/Content.Server/Database/ServerDbManagerExt.cs +++ b/Content.Server/Database/ServerDbManagerExt.cs @@ -1,4 +1,4 @@ -using System.Text.Json; +using System.Text.Json; using Robust.Shared.Asynchronous; namespace Content.Server.Database; diff --git a/Content.Server/Database/ServerDbPostgres.Notifications.cs b/Content.Server/Database/ServerDbPostgres.Notifications.cs index 91db2d100f..1a286fc4a7 100644 --- a/Content.Server/Database/ServerDbPostgres.Notifications.cs +++ b/Content.Server/Database/ServerDbPostgres.Notifications.cs @@ -1,4 +1,4 @@ -using System.Data; +using System.Data; using System.Threading; using System.Threading.Tasks; using Content.Server.Administration.Managers; diff --git a/Content.Server/Database/UnbanDef.cs b/Content.Server/Database/UnbanDef.cs index 1fa4fc2a6a..f329069e28 100644 --- a/Content.Server/Database/UnbanDef.cs +++ b/Content.Server/Database/UnbanDef.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Network; +using Robust.Shared.Network; namespace Content.Server.Database { diff --git a/Content.Server/Database/UserDbDataManager.cs b/Content.Server/Database/UserDbDataManager.cs index 8707017043..cce80d0abc 100644 --- a/Content.Server/Database/UserDbDataManager.cs +++ b/Content.Server/Database/UserDbDataManager.cs @@ -1,4 +1,4 @@ -using System.Threading; +using System.Threading; using System.Threading.Tasks; using Content.Server.Preferences.Managers; using Robust.Shared.Network; diff --git a/Content.Server/Destructible/DamageThresholdsSerializer.cs b/Content.Server/Destructible/DamageThresholdsSerializer.cs index 92c4c83ea3..5f6593db5c 100644 --- a/Content.Server/Destructible/DamageThresholdsSerializer.cs +++ b/Content.Server/Destructible/DamageThresholdsSerializer.cs @@ -1,4 +1,4 @@ -#nullable disable +#nullable disable using System.Linq; using Content.Server.Destructible.Thresholds; using Content.Shared.Destructible.Thresholds.Triggers; diff --git a/Content.Server/Destructible/DestructibleSystem.BenchmarkHelpers.cs b/Content.Server/Destructible/DestructibleSystem.BenchmarkHelpers.cs index a00194c911..1ea852c191 100644 --- a/Content.Server/Destructible/DestructibleSystem.BenchmarkHelpers.cs +++ b/Content.Server/Destructible/DestructibleSystem.BenchmarkHelpers.cs @@ -1,4 +1,4 @@ -using Content.Shared.Damage; +using Content.Shared.Damage; namespace Content.Server.Destructible; diff --git a/Content.Server/Destructible/Thresholds/Behaviors/BurnBodyBehavior.cs b/Content.Server/Destructible/Thresholds/Behaviors/BurnBodyBehavior.cs index 5bc83702c7..8ffc9ffc37 100644 --- a/Content.Server/Destructible/Thresholds/Behaviors/BurnBodyBehavior.cs +++ b/Content.Server/Destructible/Thresholds/Behaviors/BurnBodyBehavior.cs @@ -1,4 +1,4 @@ -using Content.Shared.Body.Components; +using Content.Shared.Body.Components; using Content.Shared.IdentityManagement; using Content.Shared.Inventory; using Content.Shared.Popups; diff --git a/Content.Server/Destructible/Thresholds/Behaviors/ChangeConstructionNodeBehavior.cs b/Content.Server/Destructible/Thresholds/Behaviors/ChangeConstructionNodeBehavior.cs index add8ce335f..85fe48a576 100644 --- a/Content.Server/Destructible/Thresholds/Behaviors/ChangeConstructionNodeBehavior.cs +++ b/Content.Server/Destructible/Thresholds/Behaviors/ChangeConstructionNodeBehavior.cs @@ -1,4 +1,4 @@ -using Content.Server.Construction.Components; +using Content.Server.Construction.Components; namespace Content.Server.Destructible.Thresholds.Behaviors { diff --git a/Content.Server/Destructible/Thresholds/Behaviors/DoActsBehavior.cs b/Content.Server/Destructible/Thresholds/Behaviors/DoActsBehavior.cs index 1086be4958..878c22e343 100644 --- a/Content.Server/Destructible/Thresholds/Behaviors/DoActsBehavior.cs +++ b/Content.Server/Destructible/Thresholds/Behaviors/DoActsBehavior.cs @@ -1,4 +1,4 @@ -using Content.Shared.Destructible; +using Content.Shared.Destructible; namespace Content.Server.Destructible.Thresholds.Behaviors { diff --git a/Content.Server/Destructible/Thresholds/Behaviors/IThresholdBehavior.cs b/Content.Server/Destructible/Thresholds/Behaviors/IThresholdBehavior.cs index 0cf0cc032c..09d0a33224 100644 --- a/Content.Server/Destructible/Thresholds/Behaviors/IThresholdBehavior.cs +++ b/Content.Server/Destructible/Thresholds/Behaviors/IThresholdBehavior.cs @@ -1,4 +1,4 @@ -using Content.Shared.Database; +using Content.Shared.Database; namespace Content.Server.Destructible.Thresholds.Behaviors { diff --git a/Content.Server/Destructible/Thresholds/Behaviors/TimerStartBehavior.cs b/Content.Server/Destructible/Thresholds/Behaviors/TimerStartBehavior.cs index cf337ac76a..22a824abfd 100644 --- a/Content.Server/Destructible/Thresholds/Behaviors/TimerStartBehavior.cs +++ b/Content.Server/Destructible/Thresholds/Behaviors/TimerStartBehavior.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Destructible.Thresholds.Behaviors; +namespace Content.Server.Destructible.Thresholds.Behaviors; [DataDefinition] public sealed partial class TimerStartBehavior : IThresholdBehavior diff --git a/Content.Server/Destructible/Thresholds/Behaviors/TriggerBehavior.cs b/Content.Server/Destructible/Thresholds/Behaviors/TriggerBehavior.cs index 66da79063c..e11923e1e5 100644 --- a/Content.Server/Destructible/Thresholds/Behaviors/TriggerBehavior.cs +++ b/Content.Server/Destructible/Thresholds/Behaviors/TriggerBehavior.cs @@ -1,4 +1,4 @@ -using Content.Shared.Trigger.Systems; +using Content.Shared.Trigger.Systems; namespace Content.Server.Destructible.Thresholds.Behaviors; diff --git a/Content.Server/DeviceLinking/Components/Overload/SoundOnOverloadComponent.cs b/Content.Server/DeviceLinking/Components/Overload/SoundOnOverloadComponent.cs index 2474f2500d..d52374088e 100644 --- a/Content.Server/DeviceLinking/Components/Overload/SoundOnOverloadComponent.cs +++ b/Content.Server/DeviceLinking/Components/Overload/SoundOnOverloadComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.DeviceLinking.Systems; +using Content.Server.DeviceLinking.Systems; using Robust.Shared.Audio; namespace Content.Server.DeviceLinking.Components.Overload; diff --git a/Content.Server/DeviceLinking/Systems/DeviceLinkOverloadSystem.cs b/Content.Server/DeviceLinking/Systems/DeviceLinkOverloadSystem.cs index 18e0aa4b07..0ef540f86e 100644 --- a/Content.Server/DeviceLinking/Systems/DeviceLinkOverloadSystem.cs +++ b/Content.Server/DeviceLinking/Systems/DeviceLinkOverloadSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.DeviceLinking.Components.Overload; +using Content.Server.DeviceLinking.Components.Overload; using Robust.Server.Audio; using Robust.Shared.Audio; using Content.Shared.DeviceLinking.Events; diff --git a/Content.Server/DeviceNetwork/Components/Devices/ApcNetSwitchComponent.cs b/Content.Server/DeviceNetwork/Components/Devices/ApcNetSwitchComponent.cs index 7f298e3cf4..1e706c4520 100644 --- a/Content.Server/DeviceNetwork/Components/Devices/ApcNetSwitchComponent.cs +++ b/Content.Server/DeviceNetwork/Components/Devices/ApcNetSwitchComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.DeviceNetwork.Systems.Devices; +using Content.Server.DeviceNetwork.Systems.Devices; namespace Content.Server.DeviceNetwork.Components.Devices { diff --git a/Content.Server/DeviceNetwork/Components/SingletonDeviceNetServerComponent.cs b/Content.Server/DeviceNetwork/Components/SingletonDeviceNetServerComponent.cs index 48272ff041..50ea6e7bee 100644 --- a/Content.Server/DeviceNetwork/Components/SingletonDeviceNetServerComponent.cs +++ b/Content.Server/DeviceNetwork/Components/SingletonDeviceNetServerComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.DeviceNetwork.Systems; +using Content.Server.DeviceNetwork.Systems; namespace Content.Server.DeviceNetwork.Components; diff --git a/Content.Server/DeviceNetwork/Systems/DeviceNetworkSystem.API.cs b/Content.Server/DeviceNetwork/Systems/DeviceNetworkSystem.API.cs index 214987a6a0..ef71af4a4f 100644 --- a/Content.Server/DeviceNetwork/Systems/DeviceNetworkSystem.API.cs +++ b/Content.Server/DeviceNetwork/Systems/DeviceNetworkSystem.API.cs @@ -1,4 +1,4 @@ -using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork; using Content.Shared.DeviceNetwork.Components; using Content.Shared.DeviceNetwork.Events; using JetBrains.Annotations; diff --git a/Content.Server/DeviceNetwork/Systems/SingletonDeviceNetServerSystem.cs b/Content.Server/DeviceNetwork/Systems/SingletonDeviceNetServerSystem.cs index a303833f38..3b8e43d0dd 100644 --- a/Content.Server/DeviceNetwork/Systems/SingletonDeviceNetServerSystem.cs +++ b/Content.Server/DeviceNetwork/Systems/SingletonDeviceNetServerSystem.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using Content.Server.DeviceNetwork.Components; using Content.Server.Medical.CrewMonitoring; using Content.Server.Station.Systems; diff --git a/Content.Server/Discord/DiscordLink/DiscordChatLink.cs b/Content.Server/Discord/DiscordLink/DiscordChatLink.cs index 90db4a44d9..36db08f0e2 100644 --- a/Content.Server/Discord/DiscordLink/DiscordChatLink.cs +++ b/Content.Server/Discord/DiscordLink/DiscordChatLink.cs @@ -1,4 +1,4 @@ -using Content.Server.Chat.Managers; +using Content.Server.Chat.Managers; using Content.Shared.CCVar; using Content.Shared.Chat; using NetCord; diff --git a/Content.Server/Discord/DiscordLink/DiscordLink.cs b/Content.Server/Discord/DiscordLink/DiscordLink.cs index 8e2781322c..4e87e4fed1 100644 --- a/Content.Server/Discord/DiscordLink/DiscordLink.cs +++ b/Content.Server/Discord/DiscordLink/DiscordLink.cs @@ -1,4 +1,4 @@ -using System.Collections.ObjectModel; +using System.Collections.ObjectModel; using System.Threading.Tasks; using Content.Shared.CCVar; using NetCord; diff --git a/Content.Server/Discord/DiscordLink/DiscordSawmillLogger.cs b/Content.Server/Discord/DiscordLink/DiscordSawmillLogger.cs index c6ca6acd0e..8df52af23d 100644 --- a/Content.Server/Discord/DiscordLink/DiscordSawmillLogger.cs +++ b/Content.Server/Discord/DiscordLink/DiscordSawmillLogger.cs @@ -1,4 +1,4 @@ -using NetCord.Logging; +using NetCord.Logging; using NLogLevel = NetCord.Logging.LogLevel; using LogLevel = Robust.Shared.Log.LogLevel; diff --git a/Content.Server/Discord/WebhookData.cs b/Content.Server/Discord/WebhookData.cs index 1a669237e1..f433c00c45 100644 --- a/Content.Server/Discord/WebhookData.cs +++ b/Content.Server/Discord/WebhookData.cs @@ -1,4 +1,4 @@ -using System.Text.Json.Serialization; +using System.Text.Json.Serialization; namespace Content.Server.Discord; diff --git a/Content.Server/Discord/WebhookEmbedFooter.cs b/Content.Server/Discord/WebhookEmbedFooter.cs index 9eda006ed2..3bfc75736a 100644 --- a/Content.Server/Discord/WebhookEmbedFooter.cs +++ b/Content.Server/Discord/WebhookEmbedFooter.cs @@ -1,4 +1,4 @@ -using System.Text.Json.Serialization; +using System.Text.Json.Serialization; namespace Content.Server.Discord; diff --git a/Content.Server/Discord/WebhookIdentifier.cs b/Content.Server/Discord/WebhookIdentifier.cs index 71706fe766..8e351398b2 100644 --- a/Content.Server/Discord/WebhookIdentifier.cs +++ b/Content.Server/Discord/WebhookIdentifier.cs @@ -1,3 +1,3 @@ -namespace Content.Server.Discord; +namespace Content.Server.Discord; public record struct WebhookIdentifier(string Id, string Token); diff --git a/Content.Server/Discord/WebhookMessages/EventWebhook.cs b/Content.Server/Discord/WebhookMessages/EventWebhook.cs index 8812afaabf..661555a825 100644 --- a/Content.Server/Discord/WebhookMessages/EventWebhook.cs +++ b/Content.Server/Discord/WebhookMessages/EventWebhook.cs @@ -1,4 +1,4 @@ -using Robust.Server; +using Robust.Server; namespace Content.Server.Discord.WebhookMessages; diff --git a/Content.Server/Discord/WebhookUser.cs b/Content.Server/Discord/WebhookUser.cs index 103f41800c..369aee832e 100644 --- a/Content.Server/Discord/WebhookUser.cs +++ b/Content.Server/Discord/WebhookUser.cs @@ -1,4 +1,4 @@ -using System.Text.Json.Serialization; +using System.Text.Json.Serialization; namespace Content.Server.Discord; diff --git a/Content.Server/Drowsiness/DrowsinessSystem.cs b/Content.Server/Drowsiness/DrowsinessSystem.cs index 2ffb9cf65e..3f0ef82323 100644 --- a/Content.Server/Drowsiness/DrowsinessSystem.cs +++ b/Content.Server/Drowsiness/DrowsinessSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Bed.Sleep; +using Content.Shared.Bed.Sleep; using Content.Shared.Drowsiness; using Content.Shared.StatusEffectNew; using Content.Shared.StatusEffectNew.Components; diff --git a/Content.Server/Drunk/DrunkSystem.cs b/Content.Server/Drunk/DrunkSystem.cs index 9b51a076ae..050fa3dfb2 100644 --- a/Content.Server/Drunk/DrunkSystem.cs +++ b/Content.Server/Drunk/DrunkSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Drunk; +using Content.Shared.Drunk; namespace Content.Server.Drunk; diff --git a/Content.Server/Electrocution/Components/ElectrocutionComponent.cs b/Content.Server/Electrocution/Components/ElectrocutionComponent.cs index 30cd869d50..851a678688 100644 --- a/Content.Server/Electrocution/Components/ElectrocutionComponent.cs +++ b/Content.Server/Electrocution/Components/ElectrocutionComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Electrocution; +namespace Content.Server.Electrocution; /// /// Component for virtual electrocution entities (representing an in-progress shock). diff --git a/Content.Server/EntityConditions/Conditions/BreathingEntityConditionSystem.cs b/Content.Server/EntityConditions/Conditions/BreathingEntityConditionSystem.cs index 6a30b10716..d2ac8cc5df 100644 --- a/Content.Server/EntityConditions/Conditions/BreathingEntityConditionSystem.cs +++ b/Content.Server/EntityConditions/Conditions/BreathingEntityConditionSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Body.Components; +using Content.Server.Body.Components; using Content.Server.Body.Systems; using Content.Shared.EntityConditions; using Content.Shared.EntityConditions.Conditions.Body; diff --git a/Content.Server/EntityConditions/Conditions/ObjectiveTargetEntityConditionSystem.cs b/Content.Server/EntityConditions/Conditions/ObjectiveTargetEntityConditionSystem.cs index 101e929634..c87057b8ad 100644 --- a/Content.Server/EntityConditions/Conditions/ObjectiveTargetEntityConditionSystem.cs +++ b/Content.Server/EntityConditions/Conditions/ObjectiveTargetEntityConditionSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Objectives.Components; +using Content.Server.Objectives.Components; using Content.Shared.EntityConditions; using Content.Shared.EntityConditions.Conditions.Mind; using Content.Shared.Mind; diff --git a/Content.Server/EntityEffects/Effects/Atmos/CreateGasEntityEffectSystem.cs b/Content.Server/EntityEffects/Effects/Atmos/CreateGasEntityEffectSystem.cs index 7d24a0b68c..2dae14d289 100644 --- a/Content.Server/EntityEffects/Effects/Atmos/CreateGasEntityEffectSystem.cs +++ b/Content.Server/EntityEffects/Effects/Atmos/CreateGasEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Atmos.EntitySystems; +using Content.Server.Atmos.EntitySystems; using Content.Shared.EntityEffects; using Content.Shared.EntityEffects.Effects.Atmos; diff --git a/Content.Server/EntityEffects/Effects/Atmos/FlammableEntityEffectSystem.cs b/Content.Server/EntityEffects/Effects/Atmos/FlammableEntityEffectSystem.cs index 688b50f858..c5664a4d01 100644 --- a/Content.Server/EntityEffects/Effects/Atmos/FlammableEntityEffectSystem.cs +++ b/Content.Server/EntityEffects/Effects/Atmos/FlammableEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Atmos.EntitySystems; +using Content.Server.Atmos.EntitySystems; using Content.Shared.Atmos.Components; using Content.Shared.EntityEffects; using Content.Shared.EntityEffects.Effects.Atmos; diff --git a/Content.Server/EntityEffects/Effects/Atmos/IgniteEntityEffectSystem.cs b/Content.Server/EntityEffects/Effects/Atmos/IgniteEntityEffectSystem.cs index e5ec6737d8..d2d5ad819d 100644 --- a/Content.Server/EntityEffects/Effects/Atmos/IgniteEntityEffectSystem.cs +++ b/Content.Server/EntityEffects/Effects/Atmos/IgniteEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Atmos.EntitySystems; +using Content.Server.Atmos.EntitySystems; using Content.Shared.Atmos.Components; using Content.Shared.EntityEffects; using Content.Shared.EntityEffects.Effects.Atmos; diff --git a/Content.Server/EntityEffects/Effects/Body/OxygenateEntityEffectsSystem.cs b/Content.Server/EntityEffects/Effects/Body/OxygenateEntityEffectsSystem.cs index 4c65ab95a8..5483217350 100644 --- a/Content.Server/EntityEffects/Effects/Body/OxygenateEntityEffectsSystem.cs +++ b/Content.Server/EntityEffects/Effects/Body/OxygenateEntityEffectsSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Body.Components; +using Content.Server.Body.Components; using Content.Server.Body.Systems; using Content.Shared.EntityEffects; using Content.Shared.EntityEffects.Effects.Body; diff --git a/Content.Server/EntityEffects/Effects/ExplodeEntityEffectSystem.cs b/Content.Server/EntityEffects/Effects/ExplodeEntityEffectSystem.cs index 7af72f5d0e..6057d30c04 100644 --- a/Content.Server/EntityEffects/Effects/ExplodeEntityEffectSystem.cs +++ b/Content.Server/EntityEffects/Effects/ExplodeEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Explosion.EntitySystems; +using Content.Server.Explosion.EntitySystems; using Content.Shared.EntityEffects; using Content.Shared.EntityEffects.Effects; using Content.Shared.Explosion.Components; diff --git a/Content.Server/EntityEffects/Effects/MakeSentientEntityEffectSystem.cs b/Content.Server/EntityEffects/Effects/MakeSentientEntityEffectSystem.cs index c19f62742c..1adba0216d 100644 --- a/Content.Server/EntityEffects/Effects/MakeSentientEntityEffectSystem.cs +++ b/Content.Server/EntityEffects/Effects/MakeSentientEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Ghost.Roles.Components; +using Content.Server.Ghost.Roles.Components; using Content.Server.RuntimeFun; using Content.Shared.EntityEffects; using Content.Shared.EntityEffects.Effects; diff --git a/Content.Server/EntityEffects/Effects/PolymorphEntityEffectSystem.cs b/Content.Server/EntityEffects/Effects/PolymorphEntityEffectSystem.cs index 5889dc26b5..2fa3be093e 100644 --- a/Content.Server/EntityEffects/Effects/PolymorphEntityEffectSystem.cs +++ b/Content.Server/EntityEffects/Effects/PolymorphEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Polymorph.Components; +using Content.Server.Polymorph.Components; using Content.Server.Polymorph.Systems; using Content.Shared.EntityEffects; diff --git a/Content.Server/EntityEffects/Effects/Solution/AreaReactionEntityEffectSystem.cs b/Content.Server/EntityEffects/Effects/Solution/AreaReactionEntityEffectSystem.cs index 7294d9933e..178ac243d9 100644 --- a/Content.Server/EntityEffects/Effects/Solution/AreaReactionEntityEffectSystem.cs +++ b/Content.Server/EntityEffects/Effects/Solution/AreaReactionEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Fluids.EntitySystems; +using Content.Server.Fluids.EntitySystems; using Content.Server.Spreader; using Content.Shared.Chemistry.Components; using Content.Shared.Coordinates.Helpers; diff --git a/Content.Server/EntityEffects/Effects/Transform/ExplosionEntityEffectSystem.cs b/Content.Server/EntityEffects/Effects/Transform/ExplosionEntityEffectSystem.cs index abcc54fdda..9525bff88b 100644 --- a/Content.Server/EntityEffects/Effects/Transform/ExplosionEntityEffectSystem.cs +++ b/Content.Server/EntityEffects/Effects/Transform/ExplosionEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Explosion.EntitySystems; +using Content.Server.Explosion.EntitySystems; using Content.Shared.EntityEffects; using ExplosionEffect = Content.Shared.EntityEffects.Effects.Transform.Explosion; diff --git a/Content.Server/Explosion/Components/ExplosionAirtightGridComponent.cs b/Content.Server/Explosion/Components/ExplosionAirtightGridComponent.cs index 68f576dcb9..6b3d944f4b 100644 --- a/Content.Server/Explosion/Components/ExplosionAirtightGridComponent.cs +++ b/Content.Server/Explosion/Components/ExplosionAirtightGridComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.Explosion.EntitySystems; +using Content.Server.Explosion.EntitySystems; using Content.Shared.Atmos; using Content.Shared.FixedPoint; using Robust.Shared.Map.Components; diff --git a/Content.Server/Explosion/Components/ProjectileGrenadeComponent.cs b/Content.Server/Explosion/Components/ProjectileGrenadeComponent.cs index f39cc808f1..fd61247305 100644 --- a/Content.Server/Explosion/Components/ProjectileGrenadeComponent.cs +++ b/Content.Server/Explosion/Components/ProjectileGrenadeComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.Explosion.EntitySystems; +using Content.Server.Explosion.EntitySystems; using Content.Shared.Weapons.Ranged.Systems; using Robust.Shared.Containers; using Robust.Shared.Prototypes; diff --git a/Content.Server/Explosion/EntitySystems/ProjectileGrenadeSystem.cs b/Content.Server/Explosion/EntitySystems/ProjectileGrenadeSystem.cs index ee0a8ec22c..b23a809f98 100644 --- a/Content.Server/Explosion/EntitySystems/ProjectileGrenadeSystem.cs +++ b/Content.Server/Explosion/EntitySystems/ProjectileGrenadeSystem.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Content.Server.Explosion.Components; using Content.Server.Weapons.Ranged.Systems; using Content.Shared.Trigger; diff --git a/Content.Server/Explosion/EntitySystems/ScatteringGrenadeSystem.cs b/Content.Server/Explosion/EntitySystems/ScatteringGrenadeSystem.cs index 6e2f284f7c..0564f67958 100644 --- a/Content.Server/Explosion/EntitySystems/ScatteringGrenadeSystem.cs +++ b/Content.Server/Explosion/EntitySystems/ScatteringGrenadeSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Explosion.Components; +using Content.Shared.Explosion.Components; using Content.Shared.Throwing; using Content.Shared.Trigger; using Content.Shared.Trigger.Systems; diff --git a/Content.Server/FeedbackSystem/FeedbackCommand.cs b/Content.Server/FeedbackSystem/FeedbackCommand.cs index 7b0412cbd7..ca73ad8312 100644 --- a/Content.Server/FeedbackSystem/FeedbackCommand.cs +++ b/Content.Server/FeedbackSystem/FeedbackCommand.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration; +using Content.Server.Administration; using Content.Shared.Administration; using Content.Shared.FeedbackSystem; using Robust.Shared.Player; diff --git a/Content.Server/FeedbackSystem/FeedbackSystem.cs b/Content.Server/FeedbackSystem/FeedbackSystem.cs index 5bb7648c76..35d866746a 100644 --- a/Content.Server/FeedbackSystem/FeedbackSystem.cs +++ b/Content.Server/FeedbackSystem/FeedbackSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.GameTicking; +using Content.Server.GameTicking; using Content.Shared.FeedbackSystem; using Content.Shared.GameTicking; using Robust.Shared.Prototypes; diff --git a/Content.Server/FeedbackSystem/OpenFeedbackPopupCommand.cs b/Content.Server/FeedbackSystem/OpenFeedbackPopupCommand.cs index bf7e7520a8..30084b2219 100644 --- a/Content.Server/FeedbackSystem/OpenFeedbackPopupCommand.cs +++ b/Content.Server/FeedbackSystem/OpenFeedbackPopupCommand.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration; +using Content.Shared.Administration; using Content.Shared.FeedbackSystem; using Robust.Shared.Toolshed; diff --git a/Content.Server/FeedbackSystem/ServerFeedbackManager.cs b/Content.Server/FeedbackSystem/ServerFeedbackManager.cs index 98e6c382ce..d4bfb0748c 100644 --- a/Content.Server/FeedbackSystem/ServerFeedbackManager.cs +++ b/Content.Server/FeedbackSystem/ServerFeedbackManager.cs @@ -1,4 +1,4 @@ -using Content.Shared.FeedbackSystem; +using Content.Shared.FeedbackSystem; using Robust.Shared.Player; using Robust.Shared.Prototypes; diff --git a/Content.Server/Fluids/ShowFluidsCommand.cs b/Content.Server/Fluids/ShowFluidsCommand.cs index 2bf0f562eb..e981321dc2 100644 --- a/Content.Server/Fluids/ShowFluidsCommand.cs +++ b/Content.Server/Fluids/ShowFluidsCommand.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration; +using Content.Server.Administration; using Content.Server.Fluids.EntitySystems; using Content.Shared.Administration; using Robust.Shared.Console; diff --git a/Content.Server/GameTicking/Commands/DynamicRuleCommand.cs b/Content.Server/GameTicking/Commands/DynamicRuleCommand.cs index 798e7d0d3a..c908889f8c 100644 --- a/Content.Server/GameTicking/Commands/DynamicRuleCommand.cs +++ b/Content.Server/GameTicking/Commands/DynamicRuleCommand.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Server.Administration; using Content.Server.GameTicking.Rules; using Content.Shared.Administration; diff --git a/Content.Server/GameTicking/Commands/EndRoundCommand.cs b/Content.Server/GameTicking/Commands/EndRoundCommand.cs index 19f8fb6fa9..13e104bca7 100644 --- a/Content.Server/GameTicking/Commands/EndRoundCommand.cs +++ b/Content.Server/GameTicking/Commands/EndRoundCommand.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration; +using Content.Server.Administration; using Content.Shared.Administration; using Content.Shared.GameTicking; using Robust.Shared.Console; diff --git a/Content.Server/GameTicking/Commands/ForcePresetCommand.cs b/Content.Server/GameTicking/Commands/ForcePresetCommand.cs index 5bcfcba67a..43bec7b175 100644 --- a/Content.Server/GameTicking/Commands/ForcePresetCommand.cs +++ b/Content.Server/GameTicking/Commands/ForcePresetCommand.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Server.Administration; using Content.Shared.Administration; using Content.Shared.GameTicking; diff --git a/Content.Server/GameTicking/Commands/GoLobbyCommand.cs b/Content.Server/GameTicking/Commands/GoLobbyCommand.cs index 58e180e7ad..094cb93902 100644 --- a/Content.Server/GameTicking/Commands/GoLobbyCommand.cs +++ b/Content.Server/GameTicking/Commands/GoLobbyCommand.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration; +using Content.Server.Administration; using Content.Shared.Administration; using Content.Shared.CCVar; using Content.Shared.GameTicking.Prototypes; diff --git a/Content.Server/GameTicking/Commands/SetGamePresetCommand.cs b/Content.Server/GameTicking/Commands/SetGamePresetCommand.cs index 93d885699b..a8c208904a 100644 --- a/Content.Server/GameTicking/Commands/SetGamePresetCommand.cs +++ b/Content.Server/GameTicking/Commands/SetGamePresetCommand.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration; +using Content.Server.Administration; using Content.Shared.Administration; using Content.Shared.GameTicking.Prototypes; using Robust.Shared.Console; diff --git a/Content.Server/GameTicking/Commands/StartRoundCommand.cs b/Content.Server/GameTicking/Commands/StartRoundCommand.cs index 52b888df84..3e5e9652d8 100644 --- a/Content.Server/GameTicking/Commands/StartRoundCommand.cs +++ b/Content.Server/GameTicking/Commands/StartRoundCommand.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration; +using Content.Server.Administration; using Content.Shared.Administration; using Content.Shared.GameTicking; using Robust.Shared.Console; diff --git a/Content.Server/GameTicking/Commands/ToggleDisallowLateJoinCommand.cs b/Content.Server/GameTicking/Commands/ToggleDisallowLateJoinCommand.cs index bd62c509c4..1a8291882f 100644 --- a/Content.Server/GameTicking/Commands/ToggleDisallowLateJoinCommand.cs +++ b/Content.Server/GameTicking/Commands/ToggleDisallowLateJoinCommand.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration; +using Content.Server.Administration; using Content.Shared.Administration; using Content.Shared.CCVar; using Robust.Shared.Configuration; diff --git a/Content.Server/GameTicking/Events/GetDisallowedJobsEvent.cs b/Content.Server/GameTicking/Events/GetDisallowedJobsEvent.cs index cd15cfb8f8..95c273f9ed 100644 --- a/Content.Server/GameTicking/Events/GetDisallowedJobsEvent.cs +++ b/Content.Server/GameTicking/Events/GetDisallowedJobsEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Roles; +using Content.Shared.Roles; using Robust.Shared.Player; using Robust.Shared.Prototypes; diff --git a/Content.Server/GameTicking/Events/IsRoleAllowedEvent.cs b/Content.Server/GameTicking/Events/IsRoleAllowedEvent.cs index 76d2805d1c..cc79b2e043 100644 --- a/Content.Server/GameTicking/Events/IsRoleAllowedEvent.cs +++ b/Content.Server/GameTicking/Events/IsRoleAllowedEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Roles; +using Content.Shared.Roles; using Robust.Shared.Player; using Robust.Shared.Prototypes; diff --git a/Content.Server/GameTicking/Events/NoJobsAvailableSpawningEvent.cs b/Content.Server/GameTicking/Events/NoJobsAvailableSpawningEvent.cs index c1e2d99dc4..47fd1bfca9 100644 --- a/Content.Server/GameTicking/Events/NoJobsAvailableSpawningEvent.cs +++ b/Content.Server/GameTicking/Events/NoJobsAvailableSpawningEvent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Player; +using Robust.Shared.Player; namespace Content.Server.GameTicking.Events; diff --git a/Content.Server/GameTicking/Rules/Components/DeathMatchRuleComponent.cs b/Content.Server/GameTicking/Rules/Components/DeathMatchRuleComponent.cs index b2479d8a39..3690237571 100644 --- a/Content.Server/GameTicking/Rules/Components/DeathMatchRuleComponent.cs +++ b/Content.Server/GameTicking/Rules/Components/DeathMatchRuleComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.EntityTable.EntitySelectors; +using Content.Shared.EntityTable.EntitySelectors; using Content.Shared.FixedPoint; using Content.Shared.Roles; using Robust.Shared.Network; diff --git a/Content.Server/GameTicking/Rules/Components/InactivityRuleComponent.cs b/Content.Server/GameTicking/Rules/Components/InactivityRuleComponent.cs index 5d1bd5f073..2850cd8865 100644 --- a/Content.Server/GameTicking/Rules/Components/InactivityRuleComponent.cs +++ b/Content.Server/GameTicking/Rules/Components/InactivityRuleComponent.cs @@ -1,4 +1,4 @@ -using System.Threading; +using System.Threading; namespace Content.Server.GameTicking.Rules.Components; diff --git a/Content.Server/GameTicking/Rules/Components/KillCalloutRuleComponent.cs b/Content.Server/GameTicking/Rules/Components/KillCalloutRuleComponent.cs index e82a952290..4d49e7ee08 100644 --- a/Content.Server/GameTicking/Rules/Components/KillCalloutRuleComponent.cs +++ b/Content.Server/GameTicking/Rules/Components/KillCalloutRuleComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.GameTicking.Rules.Components; +namespace Content.Server.GameTicking.Rules.Components; /// /// This is used for a rule that announces kills globally. diff --git a/Content.Server/GameTicking/Rules/Components/MaxTimeRestartRuleComponent.cs b/Content.Server/GameTicking/Rules/Components/MaxTimeRestartRuleComponent.cs index 4706f6216b..cdc5f4f5ba 100644 --- a/Content.Server/GameTicking/Rules/Components/MaxTimeRestartRuleComponent.cs +++ b/Content.Server/GameTicking/Rules/Components/MaxTimeRestartRuleComponent.cs @@ -1,4 +1,4 @@ -using System.Threading; +using System.Threading; namespace Content.Server.GameTicking.Rules.Components; diff --git a/Content.Server/GameTicking/Rules/Components/NukeOpsShuttleComponent.cs b/Content.Server/GameTicking/Rules/Components/NukeOpsShuttleComponent.cs index 3d097cd7c7..9b0c2035b1 100644 --- a/Content.Server/GameTicking/Rules/Components/NukeOpsShuttleComponent.cs +++ b/Content.Server/GameTicking/Rules/Components/NukeOpsShuttleComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.GameTicking.Rules.Components; +namespace Content.Server.GameTicking.Rules.Components; /// /// Tags grid as nuke ops shuttle diff --git a/Content.Server/GameTicking/Rules/Components/RespawnDeadRuleComponent.cs b/Content.Server/GameTicking/Rules/Components/RespawnDeadRuleComponent.cs index f6e4a3b129..209076049f 100644 --- a/Content.Server/GameTicking/Rules/Components/RespawnDeadRuleComponent.cs +++ b/Content.Server/GameTicking/Rules/Components/RespawnDeadRuleComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.GameTicking.Rules.Components; +namespace Content.Server.GameTicking.Rules.Components; /// /// This is used for gamemodes that automatically respawn players when they're no longer alive. diff --git a/Content.Server/GameTicking/Rules/Components/RespawnTrackerComponent.cs b/Content.Server/GameTicking/Rules/Components/RespawnTrackerComponent.cs index b9c8fe1096..6587d12d39 100644 --- a/Content.Server/GameTicking/Rules/Components/RespawnTrackerComponent.cs +++ b/Content.Server/GameTicking/Rules/Components/RespawnTrackerComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Network; +using Robust.Shared.Network; namespace Content.Server.GameTicking.Rules.Components; diff --git a/Content.Server/GameTicking/Rules/Components/SandboxRuleComponent.cs b/Content.Server/GameTicking/Rules/Components/SandboxRuleComponent.cs index 9ed7b4e529..f1fc5b162a 100644 --- a/Content.Server/GameTicking/Rules/Components/SandboxRuleComponent.cs +++ b/Content.Server/GameTicking/Rules/Components/SandboxRuleComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.GameTicking.Rules.Components; +namespace Content.Server.GameTicking.Rules.Components; [RegisterComponent, Access(typeof(SandboxRuleSystem))] public sealed partial class SandboxRuleComponent : Component diff --git a/Content.Server/GameTicking/Rules/Components/SecretRuleComponent.cs b/Content.Server/GameTicking/Rules/Components/SecretRuleComponent.cs index f2d21ee93c..6bf40a2ed2 100644 --- a/Content.Server/GameTicking/Rules/Components/SecretRuleComponent.cs +++ b/Content.Server/GameTicking/Rules/Components/SecretRuleComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.GameTicking.Rules.Components; +namespace Content.Server.GameTicking.Rules.Components; [RegisterComponent, Access(typeof(SecretRuleSystem))] public sealed partial class SecretRuleComponent : Component diff --git a/Content.Server/GameTicking/Rules/KillCalloutRuleSystem.cs b/Content.Server/GameTicking/Rules/KillCalloutRuleSystem.cs index e8f7fc2dd6..8be4de428d 100644 --- a/Content.Server/GameTicking/Rules/KillCalloutRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/KillCalloutRuleSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Chat.Managers; +using Content.Server.Chat.Managers; using Content.Server.GameTicking.Rules.Components; using Content.Server.KillTracking; using Content.Shared.Chat; diff --git a/Content.Server/GameTicking/Rules/RoundstartStationVariationRuleSystem.cs b/Content.Server/GameTicking/Rules/RoundstartStationVariationRuleSystem.cs index 0e1db1d84a..03fb6aa4b0 100644 --- a/Content.Server/GameTicking/Rules/RoundstartStationVariationRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/RoundstartStationVariationRuleSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Shuttles.Systems; +using Content.Server.Shuttles.Systems; using Content.Server.Station.Components; using Content.Server.Station.Events; using Content.Shared.GameTicking.Components; diff --git a/Content.Server/GameTicking/Rules/VariationPass/BaseEntityReplaceVariationPassSystem.cs b/Content.Server/GameTicking/Rules/VariationPass/BaseEntityReplaceVariationPassSystem.cs index f264272cb9..9b81a622c2 100644 --- a/Content.Server/GameTicking/Rules/VariationPass/BaseEntityReplaceVariationPassSystem.cs +++ b/Content.Server/GameTicking/Rules/VariationPass/BaseEntityReplaceVariationPassSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.GameTicking.Rules.VariationPass.Components; +using Content.Server.GameTicking.Rules.VariationPass.Components; using Content.Shared.Storage; using Robust.Shared.Map; using Robust.Shared.Random; diff --git a/Content.Server/GameTicking/Rules/VariationPass/Components/EntityReplaceVariationPassComponent.cs b/Content.Server/GameTicking/Rules/VariationPass/Components/EntityReplaceVariationPassComponent.cs index 6603251754..08bd5a9b5b 100644 --- a/Content.Server/GameTicking/Rules/VariationPass/Components/EntityReplaceVariationPassComponent.cs +++ b/Content.Server/GameTicking/Rules/VariationPass/Components/EntityReplaceVariationPassComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Storage; +using Content.Shared.Storage; using Content.Shared.Whitelist; using Robust.Shared.Prototypes; diff --git a/Content.Server/GameTicking/Rules/VariationPass/Components/EntitySpawnVariationPassComponent.cs b/Content.Server/GameTicking/Rules/VariationPass/Components/EntitySpawnVariationPassComponent.cs index f7ddd7ce9d..87ac90918e 100644 --- a/Content.Server/GameTicking/Rules/VariationPass/Components/EntitySpawnVariationPassComponent.cs +++ b/Content.Server/GameTicking/Rules/VariationPass/Components/EntitySpawnVariationPassComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Random; +using Content.Shared.Random; using Content.Shared.Storage; using Robust.Shared.Prototypes; diff --git a/Content.Server/GameTicking/Rules/VariationPass/Components/PoweredLightVariationPassComponent.cs b/Content.Server/GameTicking/Rules/VariationPass/Components/PoweredLightVariationPassComponent.cs index 98c58e0a04..f5637c0b8e 100644 --- a/Content.Server/GameTicking/Rules/VariationPass/Components/PoweredLightVariationPassComponent.cs +++ b/Content.Server/GameTicking/Rules/VariationPass/Components/PoweredLightVariationPassComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Light.Components; +using Content.Shared.Light.Components; using Robust.Shared.Prototypes; namespace Content.Server.GameTicking.Rules.VariationPass.Components; diff --git a/Content.Server/GameTicking/Rules/VariationPass/Components/PuddleMessVariationPassComponent.cs b/Content.Server/GameTicking/Rules/VariationPass/Components/PuddleMessVariationPassComponent.cs index 787d338652..bf9e670004 100644 --- a/Content.Server/GameTicking/Rules/VariationPass/Components/PuddleMessVariationPassComponent.cs +++ b/Content.Server/GameTicking/Rules/VariationPass/Components/PuddleMessVariationPassComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Random; +using Content.Shared.Random; using Robust.Shared.Prototypes; namespace Content.Server.GameTicking.Rules.VariationPass.Components; diff --git a/Content.Server/GameTicking/Rules/VariationPass/Components/ReinforcedWallReplaceVariationPassComponent.cs b/Content.Server/GameTicking/Rules/VariationPass/Components/ReinforcedWallReplaceVariationPassComponent.cs index 82095fe224..2b857418e4 100644 --- a/Content.Server/GameTicking/Rules/VariationPass/Components/ReinforcedWallReplaceVariationPassComponent.cs +++ b/Content.Server/GameTicking/Rules/VariationPass/Components/ReinforcedWallReplaceVariationPassComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.GameTicking.Rules.VariationPass.Components; +namespace Content.Server.GameTicking.Rules.VariationPass.Components; [RegisterComponent] diff --git a/Content.Server/GameTicking/Rules/VariationPass/Components/ReplacementMarkers/ReinforcedWallReplacementMarkerComponent.cs b/Content.Server/GameTicking/Rules/VariationPass/Components/ReplacementMarkers/ReinforcedWallReplacementMarkerComponent.cs index 00f55b7e25..c50ed877c4 100644 --- a/Content.Server/GameTicking/Rules/VariationPass/Components/ReplacementMarkers/ReinforcedWallReplacementMarkerComponent.cs +++ b/Content.Server/GameTicking/Rules/VariationPass/Components/ReplacementMarkers/ReinforcedWallReplacementMarkerComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.GameTicking.Rules.VariationPass.Components.ReplacementMarkers; +namespace Content.Server.GameTicking.Rules.VariationPass.Components.ReplacementMarkers; /// /// This component marks replaceable reinforced walls for use with fast queries in variation passes. diff --git a/Content.Server/GameTicking/Rules/VariationPass/Components/ReplacementMarkers/WallReplacementMarkerComponent.cs b/Content.Server/GameTicking/Rules/VariationPass/Components/ReplacementMarkers/WallReplacementMarkerComponent.cs index 6df0432198..9f8d46d8d5 100644 --- a/Content.Server/GameTicking/Rules/VariationPass/Components/ReplacementMarkers/WallReplacementMarkerComponent.cs +++ b/Content.Server/GameTicking/Rules/VariationPass/Components/ReplacementMarkers/WallReplacementMarkerComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.GameTicking.Rules.VariationPass.Components.ReplacementMarkers; +namespace Content.Server.GameTicking.Rules.VariationPass.Components.ReplacementMarkers; /// /// This component marks replaceable walls for use with fast queries in variation passes. diff --git a/Content.Server/GameTicking/Rules/VariationPass/Components/WallReplaceVariationPassComponent.cs b/Content.Server/GameTicking/Rules/VariationPass/Components/WallReplaceVariationPassComponent.cs index 3598deeb26..8a4c949efb 100644 --- a/Content.Server/GameTicking/Rules/VariationPass/Components/WallReplaceVariationPassComponent.cs +++ b/Content.Server/GameTicking/Rules/VariationPass/Components/WallReplaceVariationPassComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.GameTicking.Rules.VariationPass.Components; +namespace Content.Server.GameTicking.Rules.VariationPass.Components; [RegisterComponent] diff --git a/Content.Server/GameTicking/Rules/VariationPass/EntitySpawnVariationPassSystem.cs b/Content.Server/GameTicking/Rules/VariationPass/EntitySpawnVariationPassSystem.cs index 1e9653de35..50d998c6c6 100644 --- a/Content.Server/GameTicking/Rules/VariationPass/EntitySpawnVariationPassSystem.cs +++ b/Content.Server/GameTicking/Rules/VariationPass/EntitySpawnVariationPassSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.GameTicking.Rules.VariationPass.Components; +using Content.Server.GameTicking.Rules.VariationPass.Components; using Content.Shared.Storage; using Robust.Shared.Random; diff --git a/Content.Server/GameTicking/Rules/VariationPass/PoweredLightVariationPassSystem.cs b/Content.Server/GameTicking/Rules/VariationPass/PoweredLightVariationPassSystem.cs index 385ddd69c9..185b8204c6 100644 --- a/Content.Server/GameTicking/Rules/VariationPass/PoweredLightVariationPassSystem.cs +++ b/Content.Server/GameTicking/Rules/VariationPass/PoweredLightVariationPassSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.GameTicking.Rules.VariationPass.Components; +using Content.Server.GameTicking.Rules.VariationPass.Components; using Content.Server.Light.Components; using Content.Server.Light.EntitySystems; using Content.Shared.Light.Components; diff --git a/Content.Server/GameTicking/Rules/VariationPass/PuddleMessVariationPassSystem.cs b/Content.Server/GameTicking/Rules/VariationPass/PuddleMessVariationPassSystem.cs index 28d880eca2..67f31b5a15 100644 --- a/Content.Server/GameTicking/Rules/VariationPass/PuddleMessVariationPassSystem.cs +++ b/Content.Server/GameTicking/Rules/VariationPass/PuddleMessVariationPassSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Fluids.EntitySystems; +using Content.Server.Fluids.EntitySystems; using Content.Server.GameTicking.Rules.VariationPass.Components; using Content.Shared.Chemistry.Components; using Content.Shared.Random.Helpers; diff --git a/Content.Server/GameTicking/Rules/VariationPass/ReinforcedWallReplaceVariationPassSystem.cs b/Content.Server/GameTicking/Rules/VariationPass/ReinforcedWallReplaceVariationPassSystem.cs index 84fd05713d..a831ec464f 100644 --- a/Content.Server/GameTicking/Rules/VariationPass/ReinforcedWallReplaceVariationPassSystem.cs +++ b/Content.Server/GameTicking/Rules/VariationPass/ReinforcedWallReplaceVariationPassSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.GameTicking.Rules.VariationPass.Components; +using Content.Server.GameTicking.Rules.VariationPass.Components; using Content.Server.GameTicking.Rules.VariationPass.Components.ReplacementMarkers; namespace Content.Server.GameTicking.Rules.VariationPass; diff --git a/Content.Server/GameTicking/Rules/VariationPass/VariationPassSystem.cs b/Content.Server/GameTicking/Rules/VariationPass/VariationPassSystem.cs index 41df08a449..a3edaff886 100644 --- a/Content.Server/GameTicking/Rules/VariationPass/VariationPassSystem.cs +++ b/Content.Server/GameTicking/Rules/VariationPass/VariationPassSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Station.Systems; +using Content.Server.Station.Systems; using Content.Shared.GameTicking.Rules; using Robust.Shared.Random; diff --git a/Content.Server/GameTicking/Rules/VariationPass/WallReplaceVariationPassSystem.cs b/Content.Server/GameTicking/Rules/VariationPass/WallReplaceVariationPassSystem.cs index 54bec8efbe..9d093a7a0d 100644 --- a/Content.Server/GameTicking/Rules/VariationPass/WallReplaceVariationPassSystem.cs +++ b/Content.Server/GameTicking/Rules/VariationPass/WallReplaceVariationPassSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.GameTicking.Rules.VariationPass.Components; +using Content.Server.GameTicking.Rules.VariationPass.Components; using Content.Server.GameTicking.Rules.VariationPass.Components.ReplacementMarkers; namespace Content.Server.GameTicking.Rules.VariationPass; diff --git a/Content.Server/Ghost/Roles/Components/GhostRoleRaffleComponent.cs b/Content.Server/Ghost/Roles/Components/GhostRoleRaffleComponent.cs index ac518685e9..e894f28fa8 100644 --- a/Content.Server/Ghost/Roles/Components/GhostRoleRaffleComponent.cs +++ b/Content.Server/Ghost/Roles/Components/GhostRoleRaffleComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.Ghost.Roles.Raffles; +using Content.Server.Ghost.Roles.Raffles; using Robust.Shared.Player; namespace Content.Server.Ghost.Roles.Components; diff --git a/Content.Server/Ghost/Roles/Components/TakeGhostRoleEvent.cs b/Content.Server/Ghost/Roles/Components/TakeGhostRoleEvent.cs index 16d46871fe..971a083724 100644 --- a/Content.Server/Ghost/Roles/Components/TakeGhostRoleEvent.cs +++ b/Content.Server/Ghost/Roles/Components/TakeGhostRoleEvent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Player; +using Robust.Shared.Player; namespace Content.Server.Ghost.Roles.Components; diff --git a/Content.Server/Ghost/Roles/MakeGhostRoleCommand.cs b/Content.Server/Ghost/Roles/MakeGhostRoleCommand.cs index 944c4f81b4..0138f211e5 100644 --- a/Content.Server/Ghost/Roles/MakeGhostRoleCommand.cs +++ b/Content.Server/Ghost/Roles/MakeGhostRoleCommand.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration; +using Content.Server.Administration; using Content.Server.Ghost.Roles.Components; using Content.Shared.Administration; using Content.Shared.Mind.Components; diff --git a/Content.Server/Ghost/Roles/Raffles/GhostRoleRaffleConfig.cs b/Content.Server/Ghost/Roles/Raffles/GhostRoleRaffleConfig.cs index 052704df25..6e8feac144 100644 --- a/Content.Server/Ghost/Roles/Raffles/GhostRoleRaffleConfig.cs +++ b/Content.Server/Ghost/Roles/Raffles/GhostRoleRaffleConfig.cs @@ -1,4 +1,4 @@ -using Content.Shared.Ghost.Roles.Raffles; +using Content.Shared.Ghost.Roles.Raffles; using Robust.Shared.Prototypes; namespace Content.Server.Ghost.Roles.Raffles; diff --git a/Content.Server/Ghost/Roles/Raffles/GhostRoleRaffleDeciderPrototype.cs b/Content.Server/Ghost/Roles/Raffles/GhostRoleRaffleDeciderPrototype.cs index 73edb6dd85..31a96bac31 100644 --- a/Content.Server/Ghost/Roles/Raffles/GhostRoleRaffleDeciderPrototype.cs +++ b/Content.Server/Ghost/Roles/Raffles/GhostRoleRaffleDeciderPrototype.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; namespace Content.Server.Ghost.Roles.Raffles; diff --git a/Content.Server/Ghost/Roles/Raffles/IGhostRoleRaffleDecider.cs b/Content.Server/Ghost/Roles/Raffles/IGhostRoleRaffleDecider.cs index bdd2bf046d..4fd98b5fd9 100644 --- a/Content.Server/Ghost/Roles/Raffles/IGhostRoleRaffleDecider.cs +++ b/Content.Server/Ghost/Roles/Raffles/IGhostRoleRaffleDecider.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Player; +using Robust.Shared.Player; namespace Content.Server.Ghost.Roles.Raffles; diff --git a/Content.Server/Ghost/Roles/Raffles/RngGhostRoleRaffleDecider.cs b/Content.Server/Ghost/Roles/Raffles/RngGhostRoleRaffleDecider.cs index b91d359935..59993c668a 100644 --- a/Content.Server/Ghost/Roles/Raffles/RngGhostRoleRaffleDecider.cs +++ b/Content.Server/Ghost/Roles/Raffles/RngGhostRoleRaffleDecider.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using JetBrains.Annotations; using Robust.Shared.Player; using Robust.Shared.Random; diff --git a/Content.Server/Ghost/Roles/UI/MakeGhostRoleEui.cs b/Content.Server/Ghost/Roles/UI/MakeGhostRoleEui.cs index c2dce9c563..22ed603129 100644 --- a/Content.Server/Ghost/Roles/UI/MakeGhostRoleEui.cs +++ b/Content.Server/Ghost/Roles/UI/MakeGhostRoleEui.cs @@ -1,4 +1,4 @@ -using Content.Server.EUI; +using Content.Server.EUI; using Content.Shared.Eui; using Content.Shared.Ghost.Roles; diff --git a/Content.Server/Gibbing/Systems/GibOnRoundEndSystem.cs b/Content.Server/Gibbing/Systems/GibOnRoundEndSystem.cs index 34d32ad269..747af842c6 100644 --- a/Content.Server/Gibbing/Systems/GibOnRoundEndSystem.cs +++ b/Content.Server/Gibbing/Systems/GibOnRoundEndSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.GameTicking; +using Content.Shared.GameTicking; using Content.Shared.Gibbing.Components; using Content.Shared.Mind; using Content.Shared.Objectives.Systems; diff --git a/Content.Server/GlobalUsings.cs b/Content.Server/GlobalUsings.cs index b2869444f4..02ea460537 100644 --- a/Content.Server/GlobalUsings.cs +++ b/Content.Server/GlobalUsings.cs @@ -1,4 +1,4 @@ -// Global usings for Content.Server +// Global usings for Content.Server global using System; global using System.Collections.Generic; diff --git a/Content.Server/Holiday/Christmas/LimitedItemGiverSystem.cs b/Content.Server/Holiday/Christmas/LimitedItemGiverSystem.cs index d4db504290..82b1f4fdfe 100644 --- a/Content.Server/Holiday/Christmas/LimitedItemGiverSystem.cs +++ b/Content.Server/Holiday/Christmas/LimitedItemGiverSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Hands.Systems; +using Content.Server.Hands.Systems; using Content.Server.Popups; using Content.Shared.Interaction; using Content.Shared.Storage; diff --git a/Content.Server/Holiday/Christmas/SantaComponent.cs b/Content.Server/Holiday/Christmas/SantaComponent.cs index a0ce54b66d..e8c28d38b2 100644 --- a/Content.Server/Holiday/Christmas/SantaComponent.cs +++ b/Content.Server/Holiday/Christmas/SantaComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Holiday.Christmas; +namespace Content.Server.Holiday.Christmas; /// /// This is used as a marker component, allows them to see gift contents. diff --git a/Content.Server/IP/IPAddressExt.cs b/Content.Server/IP/IPAddressExt.cs index 8c514e96b9..86f004e01f 100644 --- a/Content.Server/IP/IPAddressExt.cs +++ b/Content.Server/IP/IPAddressExt.cs @@ -1,4 +1,4 @@ -using System.Collections; +using System.Collections; using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Net; diff --git a/Content.Server/Implants/RadioImplantSystem.cs b/Content.Server/Implants/RadioImplantSystem.cs index 2a4f31fb9d..a7b176fe59 100644 --- a/Content.Server/Implants/RadioImplantSystem.cs +++ b/Content.Server/Implants/RadioImplantSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Implants; +using Content.Shared.Implants; using Content.Shared.Implants.Components; using Content.Shared.Radio.Components; diff --git a/Content.Server/Inventory/InventoryCommand.cs b/Content.Server/Inventory/InventoryCommand.cs index 2a7bcab909..ccc74ae695 100644 --- a/Content.Server/Inventory/InventoryCommand.cs +++ b/Content.Server/Inventory/InventoryCommand.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Server.Administration; using Content.Shared.Administration; using Content.Shared.Inventory; diff --git a/Content.Server/Item/ItemSystem.cs b/Content.Server/Item/ItemSystem.cs index aa0240e93f..86f6f98fb1 100644 --- a/Content.Server/Item/ItemSystem.cs +++ b/Content.Server/Item/ItemSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Item; +using Content.Shared.Item; namespace Content.Server.Item; diff --git a/Content.Server/Jobs/AddImplantSpecial.cs b/Content.Server/Jobs/AddImplantSpecial.cs index 3967a08d9e..e71009bddb 100644 --- a/Content.Server/Jobs/AddImplantSpecial.cs +++ b/Content.Server/Jobs/AddImplantSpecial.cs @@ -1,4 +1,4 @@ -using Content.Shared.Implants; +using Content.Shared.Implants; using Content.Shared.Roles; using JetBrains.Annotations; using Robust.Shared.Prototypes; diff --git a/Content.Server/Jobs/ApplyStatusEffectSpecial.cs b/Content.Server/Jobs/ApplyStatusEffectSpecial.cs index b06ce114ba..e6b9fc0b85 100644 --- a/Content.Server/Jobs/ApplyStatusEffectSpecial.cs +++ b/Content.Server/Jobs/ApplyStatusEffectSpecial.cs @@ -1,4 +1,4 @@ -using Content.Shared.Roles; +using Content.Shared.Roles; using Content.Shared.StatusEffectNew; using JetBrains.Annotations; using Robust.Shared.Prototypes; diff --git a/Content.Server/KillTracking/KillTrackerComponent.cs b/Content.Server/KillTracking/KillTrackerComponent.cs index a81a4bdf9b..48cd7fe89d 100644 --- a/Content.Server/KillTracking/KillTrackerComponent.cs +++ b/Content.Server/KillTracking/KillTrackerComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.FixedPoint; +using Content.Shared.FixedPoint; using Content.Shared.Mobs; using Robust.Shared.Network; diff --git a/Content.Server/Light/Components/LightBehaviourComponent.cs b/Content.Server/Light/Components/LightBehaviourComponent.cs index 430c692c3a..b556ac038e 100644 --- a/Content.Server/Light/Components/LightBehaviourComponent.cs +++ b/Content.Server/Light/Components/LightBehaviourComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Light.Components; +using Content.Shared.Light.Components; namespace Content.Server.Light.Components { diff --git a/Content.Server/Light/Components/LitOnPoweredComponent.cs b/Content.Server/Light/Components/LitOnPoweredComponent.cs index c744b0b91f..8d11a06b0f 100644 --- a/Content.Server/Light/Components/LitOnPoweredComponent.cs +++ b/Content.Server/Light/Components/LitOnPoweredComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.Light.EntitySystems; +using Content.Server.Light.EntitySystems; namespace Content.Server.Light.Components { diff --git a/Content.Server/MapText/MapTextComponent.cs b/Content.Server/MapText/MapTextComponent.cs index 2af9583484..acad3dc85b 100644 --- a/Content.Server/MapText/MapTextComponent.cs +++ b/Content.Server/MapText/MapTextComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.MapText; +using Content.Shared.MapText; namespace Content.Server.MapText; diff --git a/Content.Server/MapText/MapTextSystem.cs b/Content.Server/MapText/MapTextSystem.cs index da55fa36e5..eb87e66efa 100644 --- a/Content.Server/MapText/MapTextSystem.cs +++ b/Content.Server/MapText/MapTextSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.MapText; +using Content.Shared.MapText; using Robust.Shared.GameStates; namespace Content.Server.MapText; diff --git a/Content.Server/Maps/MapMigrationSystem.cs b/Content.Server/Maps/MapMigrationSystem.cs index fdaa58709f..eebf2b391f 100644 --- a/Content.Server/Maps/MapMigrationSystem.cs +++ b/Content.Server/Maps/MapMigrationSystem.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using System.IO; using System.Linq; using Robust.Shared.ContentPack; diff --git a/Content.Server/Maps/TileGridSplitSystem.cs b/Content.Server/Maps/TileGridSplitSystem.cs index 82c1b815c2..ad9eb31c0d 100644 --- a/Content.Server/Maps/TileGridSplitSystem.cs +++ b/Content.Server/Maps/TileGridSplitSystem.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Content.Shared.Maps; using Robust.Shared.Map; using Robust.Shared.Map.Components; diff --git a/Content.Server/MassMedia/Components/NewsWriterComponent.cs b/Content.Server/MassMedia/Components/NewsWriterComponent.cs index fcd1250e8b..d65ca9939b 100644 --- a/Content.Server/MassMedia/Components/NewsWriterComponent.cs +++ b/Content.Server/MassMedia/Components/NewsWriterComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.MassMedia.Systems; +using Content.Server.MassMedia.Systems; using Robust.Shared.Audio; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; diff --git a/Content.Server/Materials/MaterialStorageSystem.cs b/Content.Server/Materials/MaterialStorageSystem.cs index 8160b8277a..86df5a6e28 100644 --- a/Content.Server/Materials/MaterialStorageSystem.cs +++ b/Content.Server/Materials/MaterialStorageSystem.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Server.Administration.Logs; using Content.Shared.IdentityManagement; using Content.Shared.Materials; diff --git a/Content.Server/Mech/Components/MechAirComponent.cs b/Content.Server/Mech/Components/MechAirComponent.cs index d312e1b739..1792820468 100644 --- a/Content.Server/Mech/Components/MechAirComponent.cs +++ b/Content.Server/Mech/Components/MechAirComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.Atmos; +using Content.Server.Atmos; using Content.Shared.Atmos; namespace Content.Server.Mech.Components; diff --git a/Content.Server/Mech/Equipment/Components/MechGrabberComponent.cs b/Content.Server/Mech/Equipment/Components/MechGrabberComponent.cs index f4b3a985bf..a47953a87d 100644 --- a/Content.Server/Mech/Equipment/Components/MechGrabberComponent.cs +++ b/Content.Server/Mech/Equipment/Components/MechGrabberComponent.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using System.Threading; using Content.Shared.DoAfter; using Robust.Shared.Audio; diff --git a/Content.Server/Medical/Components/CryoPodAirComponent.cs b/Content.Server/Medical/Components/CryoPodAirComponent.cs index 72a10b391e..bc26dce6bb 100644 --- a/Content.Server/Medical/Components/CryoPodAirComponent.cs +++ b/Content.Server/Medical/Components/CryoPodAirComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.Atmos; +using Content.Server.Atmos; using Content.Shared.Atmos; namespace Content.Server.Medical.Components; diff --git a/Content.Server/Medical/CrewMonitoring/CrewMonitoringServerComponent.cs b/Content.Server/Medical/CrewMonitoring/CrewMonitoringServerComponent.cs index 26b5387412..67fc01dd8f 100644 --- a/Content.Server/Medical/CrewMonitoring/CrewMonitoringServerComponent.cs +++ b/Content.Server/Medical/CrewMonitoring/CrewMonitoringServerComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Medical.SuitSensors; +using Content.Shared.Medical.SuitSensors; namespace Content.Server.Medical.CrewMonitoring; diff --git a/Content.Server/Medical/InsideCryoPodSystem.cs b/Content.Server/Medical/InsideCryoPodSystem.cs index f04bb3cc40..651ce6b1d1 100644 --- a/Content.Server/Medical/InsideCryoPodSystem.cs +++ b/Content.Server/Medical/InsideCryoPodSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Body.Systems; +using Content.Server.Body.Systems; using Content.Server.Medical.Components; using Content.Shared.Atmos; using Content.Shared.Medical.Cryogenics; diff --git a/Content.Server/Mind/Commands/MindInfoCommand.cs b/Content.Server/Mind/Commands/MindInfoCommand.cs index d0c8b3cc9c..86e03e31bc 100644 --- a/Content.Server/Mind/Commands/MindInfoCommand.cs +++ b/Content.Server/Mind/Commands/MindInfoCommand.cs @@ -1,4 +1,4 @@ -using System.Text; +using System.Text; using Content.Server.Administration; using Content.Shared.Administration; using Content.Shared.Mind; diff --git a/Content.Server/Mind/Toolshed/MindCommand.cs b/Content.Server/Mind/Toolshed/MindCommand.cs index 5f82029dc0..1ee68e5cb1 100644 --- a/Content.Server/Mind/Toolshed/MindCommand.cs +++ b/Content.Server/Mind/Toolshed/MindCommand.cs @@ -1,4 +1,4 @@ -using Content.Shared.Mind; +using Content.Shared.Mind; using Robust.Shared.Player; using Robust.Shared.Toolshed; using Robust.Shared.Toolshed.Errors; diff --git a/Content.Server/Mind/TransferMindOnGibSystem.cs b/Content.Server/Mind/TransferMindOnGibSystem.cs index 8eb3eb9274..7b62624dec 100644 --- a/Content.Server/Mind/TransferMindOnGibSystem.cs +++ b/Content.Server/Mind/TransferMindOnGibSystem.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Shared.Gibbing; using Content.Shared.Mind; using Content.Shared.Mind.Components; diff --git a/Content.Server/Mobs/CritMobActionsSystem.cs b/Content.Server/Mobs/CritMobActionsSystem.cs index e07ba82f66..23aed314fe 100644 --- a/Content.Server/Mobs/CritMobActionsSystem.cs +++ b/Content.Server/Mobs/CritMobActionsSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration; +using Content.Server.Administration; using Content.Server.Chat.Systems; using Content.Server.Popups; using Content.Shared.Chat; diff --git a/Content.Server/MouseRotator/MouseRotatorSystem.cs b/Content.Server/MouseRotator/MouseRotatorSystem.cs index c73b677494..5ad335c8a1 100644 --- a/Content.Server/MouseRotator/MouseRotatorSystem.cs +++ b/Content.Server/MouseRotator/MouseRotatorSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.MouseRotator; +using Content.Shared.MouseRotator; namespace Content.Server.MouseRotator; diff --git a/Content.Server/NPC/Commands/AddNPCCommand.cs b/Content.Server/NPC/Commands/AddNPCCommand.cs index 9e53153832..f208aef7f3 100644 --- a/Content.Server/NPC/Commands/AddNPCCommand.cs +++ b/Content.Server/NPC/Commands/AddNPCCommand.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration; +using Content.Server.Administration; using Content.Server.NPC.HTN; using Content.Shared.Administration; using Robust.Shared.Console; diff --git a/Content.Server/NPC/Components/NPCRetaliationComponent.cs b/Content.Server/NPC/Components/NPCRetaliationComponent.cs index c0bf54d76e..15155d0e4d 100644 --- a/Content.Server/NPC/Components/NPCRetaliationComponent.cs +++ b/Content.Server/NPC/Components/NPCRetaliationComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.NPC.Systems; +using Content.Server.NPC.Systems; namespace Content.Server.NPC.Components; diff --git a/Content.Server/NPC/HTN/Preconditions/InContainerPrecondition.cs b/Content.Server/NPC/HTN/Preconditions/InContainerPrecondition.cs index aa0ad98ede..f9c6edab56 100644 --- a/Content.Server/NPC/HTN/Preconditions/InContainerPrecondition.cs +++ b/Content.Server/NPC/HTN/Preconditions/InContainerPrecondition.cs @@ -1,4 +1,4 @@ -using Robust.Server.Containers; +using Robust.Server.Containers; namespace Content.Server.NPC.HTN.Preconditions; diff --git a/Content.Server/NPC/HTN/Preconditions/IsEmaggedPrecondition.cs b/Content.Server/NPC/HTN/Preconditions/IsEmaggedPrecondition.cs index fe76968f34..3bc97deb07 100644 --- a/Content.Server/NPC/HTN/Preconditions/IsEmaggedPrecondition.cs +++ b/Content.Server/NPC/HTN/Preconditions/IsEmaggedPrecondition.cs @@ -1,4 +1,4 @@ -using Content.Shared.Emag.Systems; +using Content.Shared.Emag.Systems; namespace Content.Server.NPC.HTN.Preconditions; diff --git a/Content.Server/NPC/HTN/Preconditions/Math/KeyBoolEqualsPrecondition.cs b/Content.Server/NPC/HTN/Preconditions/Math/KeyBoolEqualsPrecondition.cs index 8a0733a08e..b367c0acf0 100644 --- a/Content.Server/NPC/HTN/Preconditions/Math/KeyBoolEqualsPrecondition.cs +++ b/Content.Server/NPC/HTN/Preconditions/Math/KeyBoolEqualsPrecondition.cs @@ -1,4 +1,4 @@ -namespace Content.Server.NPC.HTN.Preconditions.Math; +namespace Content.Server.NPC.HTN.Preconditions.Math; /// /// Checks if there is a bool value for the specified diff --git a/Content.Server/NPC/HTN/Preconditions/Math/KeyFloatEqualsPrecondition.cs b/Content.Server/NPC/HTN/Preconditions/Math/KeyFloatEqualsPrecondition.cs index 91ad9d78a4..d8e363bc7f 100644 --- a/Content.Server/NPC/HTN/Preconditions/Math/KeyFloatEqualsPrecondition.cs +++ b/Content.Server/NPC/HTN/Preconditions/Math/KeyFloatEqualsPrecondition.cs @@ -1,4 +1,4 @@ -namespace Content.Server.NPC.HTN.Preconditions.Math; +namespace Content.Server.NPC.HTN.Preconditions.Math; /// /// Checks if there is a float value for the specified diff --git a/Content.Server/NPC/HTN/Preconditions/Math/KeyFloatGreaterPrecondition.cs b/Content.Server/NPC/HTN/Preconditions/Math/KeyFloatGreaterPrecondition.cs index 368a0a9ad7..02af5a151a 100644 --- a/Content.Server/NPC/HTN/Preconditions/Math/KeyFloatGreaterPrecondition.cs +++ b/Content.Server/NPC/HTN/Preconditions/Math/KeyFloatGreaterPrecondition.cs @@ -1,4 +1,4 @@ -namespace Content.Server.NPC.HTN.Preconditions.Math; +namespace Content.Server.NPC.HTN.Preconditions.Math; /// /// Checks if there is a float value for the specified diff --git a/Content.Server/NPC/HTN/Preconditions/Math/KeyFloatLessPrecondition.cs b/Content.Server/NPC/HTN/Preconditions/Math/KeyFloatLessPrecondition.cs index a4a6d705c9..a22209fa8a 100644 --- a/Content.Server/NPC/HTN/Preconditions/Math/KeyFloatLessPrecondition.cs +++ b/Content.Server/NPC/HTN/Preconditions/Math/KeyFloatLessPrecondition.cs @@ -1,4 +1,4 @@ -namespace Content.Server.NPC.HTN.Preconditions.Math; +namespace Content.Server.NPC.HTN.Preconditions.Math; /// /// Checks if there is a float value for the specified diff --git a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Combat/ContainerOperator.cs b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Combat/ContainerOperator.cs index f47da75808..3ad0e4108f 100644 --- a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Combat/ContainerOperator.cs +++ b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Combat/ContainerOperator.cs @@ -1,4 +1,4 @@ -using Robust.Server.Containers; +using Robust.Server.Containers; namespace Content.Server.NPC.HTN.PrimitiveTasks.Operators.Combat; diff --git a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Combat/EscapeOperator.cs b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Combat/EscapeOperator.cs index ed1d0c5975..b20541a158 100644 --- a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Combat/EscapeOperator.cs +++ b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Combat/EscapeOperator.cs @@ -1,4 +1,4 @@ -using System.Threading; +using System.Threading; using System.Threading.Tasks; using Content.Server.NPC.Components; using Content.Server.Storage.EntitySystems; diff --git a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Combat/Melee/MeleeAttackOperator.cs b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Combat/Melee/MeleeAttackOperator.cs index 8e815c6487..84cf8f0470 100644 --- a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Combat/Melee/MeleeAttackOperator.cs +++ b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Combat/Melee/MeleeAttackOperator.cs @@ -1,4 +1,4 @@ -using Content.Server.NPC.HTN.PrimitiveTasks.Operators.Interactions; +using Content.Server.NPC.HTN.PrimitiveTasks.Operators.Interactions; using Content.Shared.CombatMode; using Content.Shared.Weapons.Melee; diff --git a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Math/AddFloatOperator.cs b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Math/AddFloatOperator.cs index d97b050554..c83936d127 100644 --- a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Math/AddFloatOperator.cs +++ b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Math/AddFloatOperator.cs @@ -1,4 +1,4 @@ -using System.Threading; +using System.Threading; using System.Threading.Tasks; namespace Content.Server.NPC.HTN.PrimitiveTasks.Operators.Math; diff --git a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Math/SetRandomFloatOperator.cs b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Math/SetRandomFloatOperator.cs index 2de42bf7f8..5e7c80c7d2 100644 --- a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Math/SetRandomFloatOperator.cs +++ b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Math/SetRandomFloatOperator.cs @@ -1,4 +1,4 @@ -using System.Threading; +using System.Threading; using System.Threading.Tasks; using Robust.Shared.Random; diff --git a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/PlaySoundOperator.cs b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/PlaySoundOperator.cs index 57cc2e91e4..22db408f6e 100644 --- a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/PlaySoundOperator.cs +++ b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/PlaySoundOperator.cs @@ -1,4 +1,4 @@ -using Robust.Server.Audio; +using Robust.Server.Audio; using Robust.Shared.Audio; namespace Content.Server.NPC.HTN.PrimitiveTasks.Operators; diff --git a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/SayKeyOperator.cs b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/SayKeyOperator.cs index 58fae7ea03..9f398969b6 100644 --- a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/SayKeyOperator.cs +++ b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/SayKeyOperator.cs @@ -1,4 +1,4 @@ -using Content.Server.Chat.Systems; +using Content.Server.Chat.Systems; using Content.Shared.Chat; namespace Content.Server.NPC.HTN.PrimitiveTasks.Operators; diff --git a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Specific/RaiseEventForOwnerOperator.cs b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Specific/RaiseEventForOwnerOperator.cs index 06ea0f4e66..a634778cd2 100644 --- a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Specific/RaiseEventForOwnerOperator.cs +++ b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Specific/RaiseEventForOwnerOperator.cs @@ -1,4 +1,4 @@ -namespace Content.Server.NPC.HTN.PrimitiveTasks.Operators.Specific; +namespace Content.Server.NPC.HTN.PrimitiveTasks.Operators.Specific; /// /// Raises an on the owner. The event will contain diff --git a/Content.Server/NameIdentifier/NameIdentifierSystem.cs b/Content.Server/NameIdentifier/NameIdentifierSystem.cs index a9a6dfed7e..a2fd5060f0 100644 --- a/Content.Server/NameIdentifier/NameIdentifierSystem.cs +++ b/Content.Server/NameIdentifier/NameIdentifierSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.GameTicking; +using Content.Shared.GameTicking; using Content.Shared.NameIdentifier; using Content.Shared.NameModifier.EntitySystems; using Robust.Shared.Collections; diff --git a/Content.Server/Nuke/Commands/SendNukeCodesCommand.cs b/Content.Server/Nuke/Commands/SendNukeCodesCommand.cs index b4cbf3519b..8d08e03138 100644 --- a/Content.Server/Nuke/Commands/SendNukeCodesCommand.cs +++ b/Content.Server/Nuke/Commands/SendNukeCodesCommand.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration; +using Content.Server.Administration; using Content.Shared.Administration; using Content.Shared.Station.Components; using Robust.Shared.Console; diff --git a/Content.Server/NukeOps/WarDeclaratorComponent.cs b/Content.Server/NukeOps/WarDeclaratorComponent.cs index d3b058d6c3..3ffb2af91b 100644 --- a/Content.Server/NukeOps/WarDeclaratorComponent.cs +++ b/Content.Server/NukeOps/WarDeclaratorComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.GameTicking.Rules; +using Content.Server.GameTicking.Rules; using Content.Shared.NukeOps; using Robust.Shared.Audio; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; diff --git a/Content.Server/Nutrition/EntitySystems/FatExtractorSystem.cs b/Content.Server/Nutrition/EntitySystems/FatExtractorSystem.cs index b3988cfa8f..9340fa169a 100644 --- a/Content.Server/Nutrition/EntitySystems/FatExtractorSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/FatExtractorSystem.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using System.Linq; using Content.Server.Nutrition.Components; using Content.Server.Power.EntitySystems; diff --git a/Content.Server/Objectives/Commands/AddObjectiveCommand.cs b/Content.Server/Objectives/Commands/AddObjectiveCommand.cs index 859e5cd638..4679555100 100644 --- a/Content.Server/Objectives/Commands/AddObjectiveCommand.cs +++ b/Content.Server/Objectives/Commands/AddObjectiveCommand.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Server.Administration; using Content.Shared.Administration; using Content.Shared.Mind; diff --git a/Content.Server/Objectives/Commands/RemoveObjectiveCommand.cs b/Content.Server/Objectives/Commands/RemoveObjectiveCommand.cs index 4033134e21..5dd1dc58ab 100644 --- a/Content.Server/Objectives/Commands/RemoveObjectiveCommand.cs +++ b/Content.Server/Objectives/Commands/RemoveObjectiveCommand.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration; +using Content.Server.Administration; using Content.Shared.Administration; using Content.Shared.Mind; using Content.Shared.Objectives.Systems; diff --git a/Content.Server/Objectives/Components/FreeObjectiveComponent.cs b/Content.Server/Objectives/Components/FreeObjectiveComponent.cs index ae5070ddf7..22aec314ce 100644 --- a/Content.Server/Objectives/Components/FreeObjectiveComponent.cs +++ b/Content.Server/Objectives/Components/FreeObjectiveComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Objectives.Components; +namespace Content.Server.Objectives.Components; /// /// A free greentext, that's it. diff --git a/Content.Server/Objectives/Components/HijackShuttleConditionComponent.cs b/Content.Server/Objectives/Components/HijackShuttleConditionComponent.cs index 2f07086af6..733a4ddbf2 100644 --- a/Content.Server/Objectives/Components/HijackShuttleConditionComponent.cs +++ b/Content.Server/Objectives/Components/HijackShuttleConditionComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.Objectives.Systems; +using Content.Server.Objectives.Systems; namespace Content.Server.Objectives.Components; diff --git a/Content.Server/Objectives/Systems/FreeObjectiveSystem.cs b/Content.Server/Objectives/Systems/FreeObjectiveSystem.cs index 41172b8c50..bb7a567064 100644 --- a/Content.Server/Objectives/Systems/FreeObjectiveSystem.cs +++ b/Content.Server/Objectives/Systems/FreeObjectiveSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Objectives.Components; +using Content.Server.Objectives.Components; using Content.Shared.Objectives.Components; namespace Content.Server.Objectives.Systems; diff --git a/Content.Server/Objectives/Systems/HijackShuttleConditionSystem.cs b/Content.Server/Objectives/Systems/HijackShuttleConditionSystem.cs index 753c064446..1a3914bb0f 100644 --- a/Content.Server/Objectives/Systems/HijackShuttleConditionSystem.cs +++ b/Content.Server/Objectives/Systems/HijackShuttleConditionSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Objectives.Components; +using Content.Server.Objectives.Components; using Content.Server.Shuttles.Components; using Content.Server.Shuttles.Systems; using Content.Shared.Cuffs.Components; diff --git a/Content.Server/Placement/PlacementLoggerSystem.cs b/Content.Server/Placement/PlacementLoggerSystem.cs index dc094f1ed3..635c70763a 100644 --- a/Content.Server/Placement/PlacementLoggerSystem.cs +++ b/Content.Server/Placement/PlacementLoggerSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration.Logs; +using Content.Server.Administration.Logs; using Content.Shared.Database; using Robust.Shared.Map; using Robust.Shared.Placement; diff --git a/Content.Server/Players/JobWhitelist/JobWhitelistManager.cs b/Content.Server/Players/JobWhitelist/JobWhitelistManager.cs index 54a6a901fe..3673211d19 100644 --- a/Content.Server/Players/JobWhitelist/JobWhitelistManager.cs +++ b/Content.Server/Players/JobWhitelist/JobWhitelistManager.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using System.Threading; using System.Threading.Tasks; using Content.Server.Database; diff --git a/Content.Server/Players/JobWhitelist/JobWhitelistSystem.cs b/Content.Server/Players/JobWhitelist/JobWhitelistSystem.cs index 4910b17a16..301172b41f 100644 --- a/Content.Server/Players/JobWhitelist/JobWhitelistSystem.cs +++ b/Content.Server/Players/JobWhitelist/JobWhitelistSystem.cs @@ -1,4 +1,4 @@ -using System.Collections.Immutable; +using System.Collections.Immutable; using Content.Server.GameTicking.Events; using Content.Server.Station.Events; using Content.Shared.CCVar; diff --git a/Content.Server/Players/PlayerSystem.cs b/Content.Server/Players/PlayerSystem.cs index 9b7f63a688..fdf08ff82d 100644 --- a/Content.Server/Players/PlayerSystem.cs +++ b/Content.Server/Players/PlayerSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Players; +using Content.Shared.Players; using Robust.Shared.Player; namespace Content.Server.Players; diff --git a/Content.Server/Players/RateLimiting/PlayerRateLimitManager.cs b/Content.Server/Players/RateLimiting/PlayerRateLimitManager.cs index 53d347cc5b..c4c80b0edd 100644 --- a/Content.Server/Players/RateLimiting/PlayerRateLimitManager.cs +++ b/Content.Server/Players/RateLimiting/PlayerRateLimitManager.cs @@ -1,4 +1,4 @@ -using System.Runtime.InteropServices; +using System.Runtime.InteropServices; using Content.Server.Administration.Logs; using Content.Shared.Database; using Content.Shared.Players.RateLimiting; diff --git a/Content.Server/Players/Whitelist/WhitelistManager.cs b/Content.Server/Players/Whitelist/WhitelistManager.cs index e7618d114a..b299e04c6f 100644 --- a/Content.Server/Players/Whitelist/WhitelistManager.cs +++ b/Content.Server/Players/Whitelist/WhitelistManager.cs @@ -1,4 +1,4 @@ -using System.Threading; +using System.Threading; using System.Threading.Tasks; using Content.Server.Database; using Robust.Shared.Network; diff --git a/Content.Server/Pointing/Components/PointingArrowAngeringComponent.cs b/Content.Server/Pointing/Components/PointingArrowAngeringComponent.cs index 446be1b119..c88ffb905c 100644 --- a/Content.Server/Pointing/Components/PointingArrowAngeringComponent.cs +++ b/Content.Server/Pointing/Components/PointingArrowAngeringComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Pointing.Components; +namespace Content.Server.Pointing.Components; /// /// Causes pointing arrows to go mode and murder this entity. diff --git a/Content.Server/Polymorph/Toolshed/PolymorphCommand.cs b/Content.Server/Polymorph/Toolshed/PolymorphCommand.cs index fd5f96e263..35295c6be4 100644 --- a/Content.Server/Polymorph/Toolshed/PolymorphCommand.cs +++ b/Content.Server/Polymorph/Toolshed/PolymorphCommand.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Server.Administration; using Content.Server.Polymorph.Systems; using Content.Shared.Administration; diff --git a/Content.Server/Polymorph/Toolshed/UnpolymorphCommand.cs b/Content.Server/Polymorph/Toolshed/UnpolymorphCommand.cs index 54ebf1b577..9e28bc0648 100644 --- a/Content.Server/Polymorph/Toolshed/UnpolymorphCommand.cs +++ b/Content.Server/Polymorph/Toolshed/UnpolymorphCommand.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Server.Administration; using Content.Server.Polymorph.Systems; using Content.Shared.Administration; diff --git a/Content.Server/Power/Commands/PowerStatCommand.cs b/Content.Server/Power/Commands/PowerStatCommand.cs index dd14557a63..8843bbcc71 100644 --- a/Content.Server/Power/Commands/PowerStatCommand.cs +++ b/Content.Server/Power/Commands/PowerStatCommand.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration; +using Content.Server.Administration; using Content.Server.Power.EntitySystems; using Content.Shared.Administration; using Robust.Shared.Console; diff --git a/Content.Server/Power/Commands/PowerValidateCommand.cs b/Content.Server/Power/Commands/PowerValidateCommand.cs index e01dd3e65f..e449b93607 100644 --- a/Content.Server/Power/Commands/PowerValidateCommand.cs +++ b/Content.Server/Power/Commands/PowerValidateCommand.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration; +using Content.Server.Administration; using Content.Server.Power.EntitySystems; using Content.Shared.Administration; using Robust.Shared.Console; diff --git a/Content.Server/Power/Components/BaseNetConnectorComponent.cs b/Content.Server/Power/Components/BaseNetConnectorComponent.cs index bf8e3d7704..2c5e4a66fa 100644 --- a/Content.Server/Power/Components/BaseNetConnectorComponent.cs +++ b/Content.Server/Power/Components/BaseNetConnectorComponent.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using System.Linq; using Content.Server.NodeContainer; using Content.Server.NodeContainer.NodeGroups; diff --git a/Content.Server/Power/Components/BatteryChargerComponent.cs b/Content.Server/Power/Components/BatteryChargerComponent.cs index 7f3dd39524..906830b9c2 100644 --- a/Content.Server/Power/Components/BatteryChargerComponent.cs +++ b/Content.Server/Power/Components/BatteryChargerComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.Power.NodeGroups; +using Content.Server.Power.NodeGroups; using Content.Shared.Power.Components; namespace Content.Server.Power.Components diff --git a/Content.Server/Power/Components/BatteryDischargerComponent.cs b/Content.Server/Power/Components/BatteryDischargerComponent.cs index c716338546..c287fcaacd 100644 --- a/Content.Server/Power/Components/BatteryDischargerComponent.cs +++ b/Content.Server/Power/Components/BatteryDischargerComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.Power.NodeGroups; +using Content.Server.Power.NodeGroups; namespace Content.Server.Power.Components { diff --git a/Content.Server/Power/Components/BatteryInterfaceComponent.cs b/Content.Server/Power/Components/BatteryInterfaceComponent.cs index b97b09eda0..467326b3b3 100644 --- a/Content.Server/Power/Components/BatteryInterfaceComponent.cs +++ b/Content.Server/Power/Components/BatteryInterfaceComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.Power.EntitySystems; +using Content.Server.Power.EntitySystems; using Content.Shared.Power; namespace Content.Server.Power.Components; diff --git a/Content.Server/Power/Components/CableVisComponent.cs b/Content.Server/Power/Components/CableVisComponent.cs index 51d68b99fd..abdf37699b 100644 --- a/Content.Server/Power/Components/CableVisComponent.cs +++ b/Content.Server/Power/Components/CableVisComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Power.Components +namespace Content.Server.Power.Components { [RegisterComponent] public sealed partial class CableVisComponent : Component diff --git a/Content.Server/Power/Components/ExtensionCableProviderComponent.cs b/Content.Server/Power/Components/ExtensionCableProviderComponent.cs index a0bfc75f80..0ec531c8a1 100644 --- a/Content.Server/Power/Components/ExtensionCableProviderComponent.cs +++ b/Content.Server/Power/Components/ExtensionCableProviderComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.Power.EntitySystems; +using Content.Server.Power.EntitySystems; namespace Content.Server.Power.Components { diff --git a/Content.Server/Power/Components/ExtensionCableReceiverComponent.cs b/Content.Server/Power/Components/ExtensionCableReceiverComponent.cs index a4fbdaceac..9229f1fe22 100644 --- a/Content.Server/Power/Components/ExtensionCableReceiverComponent.cs +++ b/Content.Server/Power/Components/ExtensionCableReceiverComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.Power.EntitySystems; +using Content.Server.Power.EntitySystems; namespace Content.Server.Power.Components { diff --git a/Content.Server/Power/Components/PowerChargeComponent.cs b/Content.Server/Power/Components/PowerChargeComponent.cs index 03c6e8e2bc..b729c48c18 100644 --- a/Content.Server/Power/Components/PowerChargeComponent.cs +++ b/Content.Server/Power/Components/PowerChargeComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.Power.EntitySystems; +using Content.Server.Power.EntitySystems; using Content.Shared.Power; namespace Content.Server.Power.Components; diff --git a/Content.Server/Power/Components/PowerConsumerBatteryChargerComponent.cs b/Content.Server/Power/Components/PowerConsumerBatteryChargerComponent.cs index 13a295809e..58f09ae980 100644 --- a/Content.Server/Power/Components/PowerConsumerBatteryChargerComponent.cs +++ b/Content.Server/Power/Components/PowerConsumerBatteryChargerComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Power.Components; +namespace Content.Server.Power.Components; /// /// Used to charge a battery with diff --git a/Content.Server/Power/Components/PowerNetworkBatteryComponent.cs b/Content.Server/Power/Components/PowerNetworkBatteryComponent.cs index fcef03903b..840538589f 100644 --- a/Content.Server/Power/Components/PowerNetworkBatteryComponent.cs +++ b/Content.Server/Power/Components/PowerNetworkBatteryComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.Power.Pow3r; +using Content.Server.Power.Pow3r; using Content.Shared.Guidebook; namespace Content.Server.Power.Components diff --git a/Content.Server/Power/Components/SpawnOnBatteryFullComponent.cs b/Content.Server/Power/Components/SpawnOnBatteryFullComponent.cs index f21eaec82e..d23d68e8bc 100644 --- a/Content.Server/Power/Components/SpawnOnBatteryFullComponent.cs +++ b/Content.Server/Power/Components/SpawnOnBatteryFullComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.EntityTable.EntitySelectors; +using Content.Shared.EntityTable.EntitySelectors; using Robust.Shared.Prototypes; namespace Content.Server.Power.Components; diff --git a/Content.Server/Power/EntitySystems/BatteryInterfaceSystem.cs b/Content.Server/Power/EntitySystems/BatteryInterfaceSystem.cs index 5c9cac3749..5d7560fd47 100644 --- a/Content.Server/Power/EntitySystems/BatteryInterfaceSystem.cs +++ b/Content.Server/Power/EntitySystems/BatteryInterfaceSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration.Logs; +using Content.Server.Administration.Logs; using Content.Server.Power.Components; using Content.Shared.Database; using Content.Shared.Power; diff --git a/Content.Server/Power/EntitySystems/PowerChargeSystem.cs b/Content.Server/Power/EntitySystems/PowerChargeSystem.cs index 0ba03c41cf..3b05d2ca90 100644 --- a/Content.Server/Power/EntitySystems/PowerChargeSystem.cs +++ b/Content.Server/Power/EntitySystems/PowerChargeSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration.Logs; +using Content.Server.Administration.Logs; using Content.Server.Audio; using Content.Server.Power.Components; using Content.Shared.Database; diff --git a/Content.Server/Power/EntitySystems/PowerConsumerBatteryChargerSystem.cs b/Content.Server/Power/EntitySystems/PowerConsumerBatteryChargerSystem.cs index ee46772f11..e7b6d17bdd 100644 --- a/Content.Server/Power/EntitySystems/PowerConsumerBatteryChargerSystem.cs +++ b/Content.Server/Power/EntitySystems/PowerConsumerBatteryChargerSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Power.Components; +using Content.Server.Power.Components; using Content.Shared.Power.Components; namespace Content.Server.Power.EntitySystems; diff --git a/Content.Server/Power/EntitySystems/SpawnOnBatteryFullSystem.cs b/Content.Server/Power/EntitySystems/SpawnOnBatteryFullSystem.cs index aba63298aa..98e4404af5 100644 --- a/Content.Server/Power/EntitySystems/SpawnOnBatteryFullSystem.cs +++ b/Content.Server/Power/EntitySystems/SpawnOnBatteryFullSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Power.Components; +using Content.Server.Power.Components; using Content.Shared.EntityTable; using Content.Shared.EntityTable.EntitySelectors; using Content.Shared.Power; diff --git a/Content.Server/Power/Events/PowerPulseEvent.cs b/Content.Server/Power/Events/PowerPulseEvent.cs index 23afc52dd1..f5025401e3 100644 --- a/Content.Server/Power/Events/PowerPulseEvent.cs +++ b/Content.Server/Power/Events/PowerPulseEvent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Power.Events; +namespace Content.Server.Power.Events; /// /// Invoked on a target entity, when it was pulsed with an energy. diff --git a/Content.Server/Power/Generation/Teg/TegCirculatorComponent.cs b/Content.Server/Power/Generation/Teg/TegCirculatorComponent.cs index 95f3b919f2..9d646a929a 100644 --- a/Content.Server/Power/Generation/Teg/TegCirculatorComponent.cs +++ b/Content.Server/Power/Generation/Teg/TegCirculatorComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Atmos; +using Content.Shared.Atmos; namespace Content.Server.Power.Generation.Teg; diff --git a/Content.Server/Power/Generation/Teg/TegGeneratorComponent.cs b/Content.Server/Power/Generation/Teg/TegGeneratorComponent.cs index 1551078a88..6713316fea 100644 --- a/Content.Server/Power/Generation/Teg/TegGeneratorComponent.cs +++ b/Content.Server/Power/Generation/Teg/TegGeneratorComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Power.Generation.Teg; +namespace Content.Server.Power.Generation.Teg; /// /// The centerpiece for the thermo-electric generator (TEG). diff --git a/Content.Server/Power/Generation/Teg/TegNodeGroup.cs b/Content.Server/Power/Generation/Teg/TegNodeGroup.cs index d105663553..67061fc3de 100644 --- a/Content.Server/Power/Generation/Teg/TegNodeGroup.cs +++ b/Content.Server/Power/Generation/Teg/TegNodeGroup.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Server.NodeContainer; using Content.Server.NodeContainer.NodeGroups; using Content.Server.NodeContainer.Nodes; diff --git a/Content.Server/Power/Generation/Teg/TegSystem.cs b/Content.Server/Power/Generation/Teg/TegSystem.cs index 42feb1f991..3367ac70e8 100644 --- a/Content.Server/Power/Generation/Teg/TegSystem.cs +++ b/Content.Server/Power/Generation/Teg/TegSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Atmos.EntitySystems; +using Content.Server.Atmos.EntitySystems; using Content.Server.Audio; using Content.Server.DeviceNetwork.Systems; using Content.Server.NodeContainer.Nodes; diff --git a/Content.Server/Power/Generator/ChemicalFuelGeneratorDirectSourceComponent.cs b/Content.Server/Power/Generator/ChemicalFuelGeneratorDirectSourceComponent.cs index 2e8be84822..ef7a7dafcd 100644 --- a/Content.Server/Power/Generator/ChemicalFuelGeneratorDirectSourceComponent.cs +++ b/Content.Server/Power/Generator/ChemicalFuelGeneratorDirectSourceComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Power.Generator; +namespace Content.Server.Power.Generator; /// /// This is used for stuff that can directly be shoved into a generator. diff --git a/Content.Server/Power/Generator/GasPowerReceiverComponent.cs b/Content.Server/Power/Generator/GasPowerReceiverComponent.cs index 4d26f28185..3792e632a6 100644 --- a/Content.Server/Power/Generator/GasPowerReceiverComponent.cs +++ b/Content.Server/Power/Generator/GasPowerReceiverComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Atmos; +using Content.Shared.Atmos; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; namespace Content.Server.Power.Generator; diff --git a/Content.Server/Power/Generator/GasPowerReceiverSystem.cs b/Content.Server/Power/Generator/GasPowerReceiverSystem.cs index 4251e6f991..48a7bc8c35 100644 --- a/Content.Server/Power/Generator/GasPowerReceiverSystem.cs +++ b/Content.Server/Power/Generator/GasPowerReceiverSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Atmos.EntitySystems; +using Content.Server.Atmos.EntitySystems; using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Content.Shared.Atmos; diff --git a/Content.Server/Power/Generator/GeneratorExhaustGasSystem.cs b/Content.Server/Power/Generator/GeneratorExhaustGasSystem.cs index 6c2ce2f09e..94baa20ab3 100644 --- a/Content.Server/Power/Generator/GeneratorExhaustGasSystem.cs +++ b/Content.Server/Power/Generator/GeneratorExhaustGasSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Atmos; +using Content.Server.Atmos; using Content.Server.Atmos.EntitySystems; using Content.Shared.Atmos; using Content.Shared.Power.Generator; diff --git a/Content.Server/Power/Generator/GeneratorSystem.cs b/Content.Server/Power/Generator/GeneratorSystem.cs index bc152cf683..bd216b1a6f 100644 --- a/Content.Server/Power/Generator/GeneratorSystem.cs +++ b/Content.Server/Power/Generator/GeneratorSystem.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Server.Audio; using Content.Server.Fluids.EntitySystems; using Content.Server.Materials; diff --git a/Content.Server/Power/Generator/PortableGeneratorSystem.cs b/Content.Server/Power/Generator/PortableGeneratorSystem.cs index 5cfa884000..3532e08fda 100644 --- a/Content.Server/Power/Generator/PortableGeneratorSystem.cs +++ b/Content.Server/Power/Generator/PortableGeneratorSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.DoAfter; +using Content.Server.DoAfter; using Content.Server.Popups; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; diff --git a/Content.Server/Power/Generator/PowerSwitchableSystem.cs b/Content.Server/Power/Generator/PowerSwitchableSystem.cs index bf9c7eb694..50e1ade71d 100644 --- a/Content.Server/Power/Generator/PowerSwitchableSystem.cs +++ b/Content.Server/Power/Generator/PowerSwitchableSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.NodeContainer.EntitySystems; +using Content.Server.NodeContainer.EntitySystems; using Content.Server.Popups; using Content.Server.Power.Components; using Content.Server.Power.Nodes; diff --git a/Content.Server/Power/NodeGroups/BasePowerNet.cs b/Content.Server/Power/NodeGroups/BasePowerNet.cs index 15ed2630d4..180e46ed27 100644 --- a/Content.Server/Power/NodeGroups/BasePowerNet.cs +++ b/Content.Server/Power/NodeGroups/BasePowerNet.cs @@ -1,4 +1,4 @@ -using Content.Server.NodeContainer.Nodes; +using Content.Server.NodeContainer.Nodes; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; using Content.Server.Power.Pow3r; diff --git a/Content.Server/Power/NodeGroups/IBasePowerNet.cs b/Content.Server/Power/NodeGroups/IBasePowerNet.cs index 98f19a693e..a770a1a2ba 100644 --- a/Content.Server/Power/NodeGroups/IBasePowerNet.cs +++ b/Content.Server/Power/NodeGroups/IBasePowerNet.cs @@ -1,4 +1,4 @@ -using Content.Server.Power.Components; +using Content.Server.Power.Components; using Content.Server.Power.Pow3r; namespace Content.Server.Power.NodeGroups diff --git a/Content.Server/Power/Pow3r/PowerSolverShared.cs b/Content.Server/Power/Pow3r/PowerSolverShared.cs index 2e48e484d1..53355bce5c 100644 --- a/Content.Server/Power/Pow3r/PowerSolverShared.cs +++ b/Content.Server/Power/Pow3r/PowerSolverShared.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Power.Pow3r +namespace Content.Server.Power.Pow3r { public static class PowerSolverShared { diff --git a/Content.Server/PowerSink/PowerSinkComponent.cs b/Content.Server/PowerSink/PowerSinkComponent.cs index d600875e4a..b27d21a71c 100644 --- a/Content.Server/PowerSink/PowerSinkComponent.cs +++ b/Content.Server/PowerSink/PowerSinkComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Audio; +using Robust.Shared.Audio; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; namespace Content.Server.PowerSink diff --git a/Content.Server/RandomAppearance/RandomAppearanceSystem.cs b/Content.Server/RandomAppearance/RandomAppearanceSystem.cs index 467befe2c6..e8ff4718fc 100644 --- a/Content.Server/RandomAppearance/RandomAppearanceSystem.cs +++ b/Content.Server/RandomAppearance/RandomAppearanceSystem.cs @@ -1,4 +1,4 @@ -using Robust.Server.GameObjects; +using Robust.Server.GameObjects; using Robust.Shared.Random; namespace Content.Server.RandomAppearance; diff --git a/Content.Server/RandomMetadata/RandomMetadataSystem.cs b/Content.Server/RandomMetadata/RandomMetadataSystem.cs index 40e61cd668..b70d7316b8 100644 --- a/Content.Server/RandomMetadata/RandomMetadataSystem.cs +++ b/Content.Server/RandomMetadata/RandomMetadataSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Dataset; +using Content.Shared.Dataset; using Content.Shared.Random.Helpers; using JetBrains.Annotations; using Robust.Shared.Prototypes; diff --git a/Content.Server/RequiresGrid/RequiresGridComponent.cs b/Content.Server/RequiresGrid/RequiresGridComponent.cs index 0e956c9ad9..de7dedc21e 100644 --- a/Content.Server/RequiresGrid/RequiresGridComponent.cs +++ b/Content.Server/RequiresGrid/RequiresGridComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.RequiresGrid; +namespace Content.Server.RequiresGrid; /// /// Destroys an entity when they no longer are part of a Grid diff --git a/Content.Server/RequiresGrid/RequiresGridSystem.cs b/Content.Server/RequiresGrid/RequiresGridSystem.cs index f612a4b19a..c07924509d 100644 --- a/Content.Server/RequiresGrid/RequiresGridSystem.cs +++ b/Content.Server/RequiresGrid/RequiresGridSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Destructible; +using Content.Server.Destructible; namespace Content.Server.RequiresGrid; diff --git a/Content.Server/Research/TechnologyDisk/Components/DiskConsoleComponent.cs b/Content.Server/Research/TechnologyDisk/Components/DiskConsoleComponent.cs index e474f77c7a..ec27f2e6c9 100644 --- a/Content.Server/Research/TechnologyDisk/Components/DiskConsoleComponent.cs +++ b/Content.Server/Research/TechnologyDisk/Components/DiskConsoleComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Audio; +using Robust.Shared.Audio; using Robust.Shared.Prototypes; namespace Content.Server.Research.TechnologyDisk.Components; diff --git a/Content.Server/Research/TechnologyDisk/Components/DiskConsolePrintingComponent.cs b/Content.Server/Research/TechnologyDisk/Components/DiskConsolePrintingComponent.cs index ab3b7ef9bb..ed9e96ba5e 100644 --- a/Content.Server/Research/TechnologyDisk/Components/DiskConsolePrintingComponent.cs +++ b/Content.Server/Research/TechnologyDisk/Components/DiskConsolePrintingComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Research.TechnologyDisk.Components; +namespace Content.Server.Research.TechnologyDisk.Components; [RegisterComponent] public sealed partial class DiskConsolePrintingComponent : Component diff --git a/Content.Server/Revenant/EntitySystems/RevenantOverloadedLightsSystem.cs b/Content.Server/Revenant/EntitySystems/RevenantOverloadedLightsSystem.cs index ec3bdb2a3a..1930c059ba 100644 --- a/Content.Server/Revenant/EntitySystems/RevenantOverloadedLightsSystem.cs +++ b/Content.Server/Revenant/EntitySystems/RevenantOverloadedLightsSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Beam; +using Content.Server.Beam; using Content.Shared.Revenant.Components; using Content.Shared.Revenant.EntitySystems; diff --git a/Content.Server/Roles/AddRoleCommand.cs b/Content.Server/Roles/AddRoleCommand.cs index 3a1b214007..506ad0b9c8 100644 --- a/Content.Server/Roles/AddRoleCommand.cs +++ b/Content.Server/Roles/AddRoleCommand.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration; +using Content.Server.Administration; using Content.Server.Roles.Jobs; using Content.Shared.Administration; using Content.Shared.Players; diff --git a/Content.Server/Roles/Jobs/JobSystem.cs b/Content.Server/Roles/Jobs/JobSystem.cs index 3d8c6d3447..03c65db65b 100644 --- a/Content.Server/Roles/Jobs/JobSystem.cs +++ b/Content.Server/Roles/Jobs/JobSystem.cs @@ -1,4 +1,4 @@ -using System.Globalization; +using System.Globalization; using Content.Server.Chat.Managers; using Content.Shared.Mind; using Content.Shared.Roles; diff --git a/Content.Server/Roles/ListRolesCommand.cs b/Content.Server/Roles/ListRolesCommand.cs index 4e5cf15b13..c5b446e4e1 100644 --- a/Content.Server/Roles/ListRolesCommand.cs +++ b/Content.Server/Roles/ListRolesCommand.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration; +using Content.Server.Administration; using Content.Shared.Administration; using Content.Shared.Roles; using Robust.Shared.Console; diff --git a/Content.Server/Roles/RemoveRoleCommand.cs b/Content.Server/Roles/RemoveRoleCommand.cs index 91914e2fca..bfab3ba9fd 100644 --- a/Content.Server/Roles/RemoveRoleCommand.cs +++ b/Content.Server/Roles/RemoveRoleCommand.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration; +using Content.Server.Administration; using Content.Shared.Administration; using Content.Shared.Players; using Content.Shared.Roles; diff --git a/Content.Server/SensorMonitoring/BatterySensorComponent.cs b/Content.Server/SensorMonitoring/BatterySensorComponent.cs index 41755f7a82..6825f0cb0b 100644 --- a/Content.Server/SensorMonitoring/BatterySensorComponent.cs +++ b/Content.Server/SensorMonitoring/BatterySensorComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.Power.Components; +using Content.Server.Power.Components; using Content.Shared.Power.Components; namespace Content.Server.SensorMonitoring; diff --git a/Content.Server/SensorMonitoring/SensorMonitoringConsoleComponent.cs b/Content.Server/SensorMonitoring/SensorMonitoringConsoleComponent.cs index b5a954f166..3bf7c065ab 100644 --- a/Content.Server/SensorMonitoring/SensorMonitoringConsoleComponent.cs +++ b/Content.Server/SensorMonitoring/SensorMonitoringConsoleComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.SensorMonitoring; +using Content.Shared.SensorMonitoring; using Robust.Server.Player; using Robust.Shared.Collections; using Robust.Shared.Player; diff --git a/Content.Server/SensorMonitoring/SensorMonitoringConsoleSystem.UI.cs b/Content.Server/SensorMonitoring/SensorMonitoringConsoleSystem.UI.cs index a562abd926..b6de5d3846 100644 --- a/Content.Server/SensorMonitoring/SensorMonitoringConsoleSystem.UI.cs +++ b/Content.Server/SensorMonitoring/SensorMonitoringConsoleSystem.UI.cs @@ -1,4 +1,4 @@ -using Content.Shared.SensorMonitoring; +using Content.Shared.SensorMonitoring; using Robust.Shared.Collections; using ConsoleUIState = Content.Shared.SensorMonitoring.SensorMonitoringConsoleBoundInterfaceState; using Content.Shared.DeviceNetwork.Components; diff --git a/Content.Server/SensorMonitoring/SensorMonitoringConsoleSystem.cs b/Content.Server/SensorMonitoring/SensorMonitoringConsoleSystem.cs index 3f01f599f8..eac6d62e89 100644 --- a/Content.Server/SensorMonitoring/SensorMonitoringConsoleSystem.cs +++ b/Content.Server/SensorMonitoring/SensorMonitoringConsoleSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Atmos.Monitor.Components; +using Content.Server.Atmos.Monitor.Components; using Content.Server.Atmos.Monitor.Payloads; using Content.Server.DeviceNetwork.Systems; using Content.Server.Power.Generation.Teg; diff --git a/Content.Server/ServerInfo/ServerInfoManager.cs b/Content.Server/ServerInfo/ServerInfoManager.cs index 6cd839c97e..38c79821e1 100644 --- a/Content.Server/ServerInfo/ServerInfoManager.cs +++ b/Content.Server/ServerInfo/ServerInfoManager.cs @@ -1,4 +1,4 @@ -using System.Text.Json.Nodes; +using System.Text.Json.Nodes; using Content.Shared.CCVar; using Robust.Server.ServerStatus; using Robust.Shared.Configuration; diff --git a/Content.Server/ServerUpdates/ServerUpdateManager.cs b/Content.Server/ServerUpdates/ServerUpdateManager.cs index cd6f1dfa0f..ed3e270712 100644 --- a/Content.Server/ServerUpdates/ServerUpdateManager.cs +++ b/Content.Server/ServerUpdates/ServerUpdateManager.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Server.Chat.Managers; using Content.Shared.CCVar; using Robust.Server; diff --git a/Content.Server/Shuttles/Components/StationAnchorComponent.cs b/Content.Server/Shuttles/Components/StationAnchorComponent.cs index c971ed921c..673b36ba99 100644 --- a/Content.Server/Shuttles/Components/StationAnchorComponent.cs +++ b/Content.Server/Shuttles/Components/StationAnchorComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.Shuttles.Systems; +using Content.Server.Shuttles.Systems; namespace Content.Server.Shuttles.Components; diff --git a/Content.Server/Shuttles/Components/StationEmergencyShuttleComponent.cs b/Content.Server/Shuttles/Components/StationEmergencyShuttleComponent.cs index cfb667e1f0..11ff43f8fe 100644 --- a/Content.Server/Shuttles/Components/StationEmergencyShuttleComponent.cs +++ b/Content.Server/Shuttles/Components/StationEmergencyShuttleComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.Shuttles.Systems; +using Content.Server.Shuttles.Systems; using Robust.Shared.Audio; using Robust.Shared.Serialization.TypeSerializers.Implementations; using Robust.Shared.Utility; diff --git a/Content.Server/Shuttles/Events/DockEvent.cs b/Content.Server/Shuttles/Events/DockEvent.cs index 3b9ed46741..9de6c70ad5 100644 --- a/Content.Server/Shuttles/Events/DockEvent.cs +++ b/Content.Server/Shuttles/Events/DockEvent.cs @@ -12,4 +12,4 @@ public sealed class DockEvent : EntityEventArgs public EntityUid GridAUid = default!; public EntityUid GridBUid = default!; -} \ No newline at end of file +} diff --git a/Content.Server/Shuttles/Events/ShuttleConsoleFTLStartEvent.cs b/Content.Server/Shuttles/Events/ShuttleConsoleFTLStartEvent.cs index cfa6d4157d..87ed8df9b1 100644 --- a/Content.Server/Shuttles/Events/ShuttleConsoleFTLStartEvent.cs +++ b/Content.Server/Shuttles/Events/ShuttleConsoleFTLStartEvent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Shuttles.Events; +namespace Content.Server.Shuttles.Events; /// /// Raised when shuttle console approved FTL diff --git a/Content.Server/Shuttles/Events/UndockEvent.cs b/Content.Server/Shuttles/Events/UndockEvent.cs index 41df647aab..b16df1db1d 100644 --- a/Content.Server/Shuttles/Events/UndockEvent.cs +++ b/Content.Server/Shuttles/Events/UndockEvent.cs @@ -12,4 +12,4 @@ public sealed class UndockEvent : EntityEventArgs public EntityUid GridAUid = default!; public EntityUid GridBUid = default!; -} \ No newline at end of file +} diff --git a/Content.Server/Shuttles/Systems/StationAnchorSystem.cs b/Content.Server/Shuttles/Systems/StationAnchorSystem.cs index 2b0d138b74..6253423910 100644 --- a/Content.Server/Shuttles/Systems/StationAnchorSystem.cs +++ b/Content.Server/Shuttles/Systems/StationAnchorSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Popups; +using Content.Server.Popups; using Content.Server.Power.EntitySystems; using Content.Server.Shuttles.Components; using Content.Shared.Construction.Components; diff --git a/Content.Server/Silicons/Borgs/BorgSwitchableTypeSystem.cs b/Content.Server/Silicons/Borgs/BorgSwitchableTypeSystem.cs index 3e74a8fb9d..ae12da6be5 100644 --- a/Content.Server/Silicons/Borgs/BorgSwitchableTypeSystem.cs +++ b/Content.Server/Silicons/Borgs/BorgSwitchableTypeSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Inventory; +using Content.Server.Inventory; using Content.Shared.Inventory; using Content.Shared.Radio.Components; using Content.Shared.Silicons.Borgs; diff --git a/Content.Server/Silicons/Bots/HugBotSystem.cs b/Content.Server/Silicons/Bots/HugBotSystem.cs index e69412c0b9..3ed05df8fc 100644 --- a/Content.Server/Silicons/Bots/HugBotSystem.cs +++ b/Content.Server/Silicons/Bots/HugBotSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.NPC.HTN.PrimitiveTasks.Operators.Specific; +using Content.Server.NPC.HTN.PrimitiveTasks.Operators.Specific; using Content.Shared.Silicons.Bots; using Robust.Shared.Timing; diff --git a/Content.Server/Silicons/Bots/RecentlyHuggedByHugBotComponent.cs b/Content.Server/Silicons/Bots/RecentlyHuggedByHugBotComponent.cs index c6c7d47e8d..2cc6c4d4be 100644 --- a/Content.Server/Silicons/Bots/RecentlyHuggedByHugBotComponent.cs +++ b/Content.Server/Silicons/Bots/RecentlyHuggedByHugBotComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Silicons.Bots; +using Content.Shared.Silicons.Bots; namespace Content.Server.Silicons.Bots; diff --git a/Content.Server/Silicons/Laws/IonLawLocalizationSystem.cs b/Content.Server/Silicons/Laws/IonLawLocalizationSystem.cs index 5ea3468a3c..c4ae2152ca 100644 --- a/Content.Server/Silicons/Laws/IonLawLocalizationSystem.cs +++ b/Content.Server/Silicons/Laws/IonLawLocalizationSystem.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Silicons.Laws; +namespace Content.Server.Silicons.Laws; public sealed partial class IonLawLocalizationSystem : EntitySystem { diff --git a/Content.Server/Silicons/Laws/IonLawSystem.cs b/Content.Server/Silicons/Laws/IonLawSystem.cs index 7726814658..0b5e3944e1 100644 --- a/Content.Server/Silicons/Laws/IonLawSystem.cs +++ b/Content.Server/Silicons/Laws/IonLawSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Dataset; +using Content.Shared.Dataset; using Content.Shared.Silicons.Laws; using Content.Shared.StationRecords; using Robust.Shared.Prototypes; diff --git a/Content.Server/SmartFridge/SmartFridgeSystem.cs b/Content.Server/SmartFridge/SmartFridgeSystem.cs index 0112e4607d..bef675586f 100644 --- a/Content.Server/SmartFridge/SmartFridgeSystem.cs +++ b/Content.Server/SmartFridge/SmartFridgeSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.SmartFridge; +using Content.Shared.SmartFridge; namespace Content.Server.SmartFridge; diff --git a/Content.Server/Spawners/Components/AntagGridSpawnPointComponent.cs b/Content.Server/Spawners/Components/AntagGridSpawnPointComponent.cs index 2f817fb023..fccefd7a8c 100644 --- a/Content.Server/Spawners/Components/AntagGridSpawnPointComponent.cs +++ b/Content.Server/Spawners/Components/AntagGridSpawnPointComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.GameTicking.Rules; +using Content.Server.GameTicking.Rules; using Content.Shared.Antag; using Robust.Shared.Prototypes; diff --git a/Content.Server/Spawners/Components/TimedSpawnerComponent.cs b/Content.Server/Spawners/Components/TimedSpawnerComponent.cs index 8494a1a2fb..a96060f74b 100644 --- a/Content.Server/Spawners/Components/TimedSpawnerComponent.cs +++ b/Content.Server/Spawners/Components/TimedSpawnerComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; using Robust.Shared.Serialization; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; diff --git a/Content.Server/Speech/EntitySystems/DamagedSiliconAccentSystem.cs b/Content.Server/Speech/EntitySystems/DamagedSiliconAccentSystem.cs index 3ab654746a..fa1dedd152 100644 --- a/Content.Server/Speech/EntitySystems/DamagedSiliconAccentSystem.cs +++ b/Content.Server/Speech/EntitySystems/DamagedSiliconAccentSystem.cs @@ -1,4 +1,4 @@ -using System.Text; +using System.Text; using Content.Server.Destructible; using Content.Shared.FixedPoint; using Content.Shared.Speech.Components; diff --git a/Content.Server/Station/Commands/BankCommand.cs b/Content.Server/Station/Commands/BankCommand.cs index c24cacdffb..c9a0988ae6 100644 --- a/Content.Server/Station/Commands/BankCommand.cs +++ b/Content.Server/Station/Commands/BankCommand.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Server.Administration; using Content.Server.Cargo.Systems; using Content.Shared.Administration; diff --git a/Content.Server/Station/Components/StationNameSetupComponent.cs b/Content.Server/Station/Components/StationNameSetupComponent.cs index 7af44eee62..d75e459cd9 100644 --- a/Content.Server/Station/Components/StationNameSetupComponent.cs +++ b/Content.Server/Station/Components/StationNameSetupComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.Maps.NameGenerators; +using Content.Server.Maps.NameGenerators; namespace Content.Server.Station.Components; diff --git a/Content.Server/Station/Components/StationVariationHasRunComponent.cs b/Content.Server/Station/Components/StationVariationHasRunComponent.cs index 65c794f3fc..f1bdabe5b9 100644 --- a/Content.Server/Station/Components/StationVariationHasRunComponent.cs +++ b/Content.Server/Station/Components/StationVariationHasRunComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.GameTicking.Rules; +using Content.Server.GameTicking.Rules; namespace Content.Server.Station.Components; diff --git a/Content.Server/Station/Events/StationJobsGetCandidatesEvent.cs b/Content.Server/Station/Events/StationJobsGetCandidatesEvent.cs index 58d860b1e1..34200d8f31 100644 --- a/Content.Server/Station/Events/StationJobsGetCandidatesEvent.cs +++ b/Content.Server/Station/Events/StationJobsGetCandidatesEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Roles; +using Content.Shared.Roles; using Robust.Shared.Network; using Robust.Shared.Prototypes; diff --git a/Content.Server/Station/Systems/StationNameSystem.cs b/Content.Server/Station/Systems/StationNameSystem.cs index 0bca57bdcc..0ee7bbd969 100644 --- a/Content.Server/Station/Systems/StationNameSystem.cs +++ b/Content.Server/Station/Systems/StationNameSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Station.Components; +using Content.Server.Station.Components; using Content.Shared.Station.Components; namespace Content.Server.Station.Systems; diff --git a/Content.Server/StationEvents/Components/AlertLevelInterceptionRuleComponent.cs b/Content.Server/StationEvents/Components/AlertLevelInterceptionRuleComponent.cs index 92066ac4bf..b8cefb8e73 100644 --- a/Content.Server/StationEvents/Components/AlertLevelInterceptionRuleComponent.cs +++ b/Content.Server/StationEvents/Components/AlertLevelInterceptionRuleComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.StationEvents.Events; +using Content.Server.StationEvents.Events; using Content.Shared.AlertLevel; using Robust.Shared.Prototypes; diff --git a/Content.Server/StationEvents/Components/BluespaceLockerRuleComponent.cs b/Content.Server/StationEvents/Components/BluespaceLockerRuleComponent.cs index 1ea59e3b9d..403be453e4 100644 --- a/Content.Server/StationEvents/Components/BluespaceLockerRuleComponent.cs +++ b/Content.Server/StationEvents/Components/BluespaceLockerRuleComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.StationEvents.Events; +using Content.Server.StationEvents.Events; namespace Content.Server.StationEvents.Components; diff --git a/Content.Server/StationEvents/Components/CargoGiftsRuleComponent.cs b/Content.Server/StationEvents/Components/CargoGiftsRuleComponent.cs index 01d67f61cf..71d6d4281c 100644 --- a/Content.Server/StationEvents/Components/CargoGiftsRuleComponent.cs +++ b/Content.Server/StationEvents/Components/CargoGiftsRuleComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.StationEvents.Events; +using Content.Server.StationEvents.Events; using Content.Shared.Cargo.Prototypes; using Robust.Shared.Prototypes; diff --git a/Content.Server/StationEvents/Components/FalseAlarmRuleComponent.cs b/Content.Server/StationEvents/Components/FalseAlarmRuleComponent.cs index b58884b750..92ae6a1ec6 100644 --- a/Content.Server/StationEvents/Components/FalseAlarmRuleComponent.cs +++ b/Content.Server/StationEvents/Components/FalseAlarmRuleComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.StationEvents.Events; +using Content.Server.StationEvents.Events; namespace Content.Server.StationEvents.Components; diff --git a/Content.Server/StationEvents/Components/GasLeakRuleComponent.cs b/Content.Server/StationEvents/Components/GasLeakRuleComponent.cs index 22164b9c9c..61ced84812 100644 --- a/Content.Server/StationEvents/Components/GasLeakRuleComponent.cs +++ b/Content.Server/StationEvents/Components/GasLeakRuleComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.StationEvents.Events; +using Content.Server.StationEvents.Events; using Content.Shared.Atmos; using Robust.Shared.Map; diff --git a/Content.Server/StationEvents/Components/KudzuGrowthRuleComponent.cs b/Content.Server/StationEvents/Components/KudzuGrowthRuleComponent.cs index a075598863..fec6418480 100644 --- a/Content.Server/StationEvents/Components/KudzuGrowthRuleComponent.cs +++ b/Content.Server/StationEvents/Components/KudzuGrowthRuleComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.StationEvents.Events; +using Content.Server.StationEvents.Events; namespace Content.Server.StationEvents.Components; diff --git a/Content.Server/StationEvents/Components/MeteorSwarmComponent.cs b/Content.Server/StationEvents/Components/MeteorSwarmComponent.cs index c5c95468fd..f3d5d79cba 100644 --- a/Content.Server/StationEvents/Components/MeteorSwarmComponent.cs +++ b/Content.Server/StationEvents/Components/MeteorSwarmComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.StationEvents.Events; +using Content.Server.StationEvents.Events; using Content.Shared.Destructible.Thresholds; using Robust.Shared.Audio; using Robust.Shared.Prototypes; diff --git a/Content.Server/StationEvents/Components/VentClogRuleComponent.cs b/Content.Server/StationEvents/Components/VentClogRuleComponent.cs index d51c48b4ae..db353342b6 100644 --- a/Content.Server/StationEvents/Components/VentClogRuleComponent.cs +++ b/Content.Server/StationEvents/Components/VentClogRuleComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.StationEvents.Events; +using Content.Server.StationEvents.Events; using Content.Shared.Chemistry.Reagent; using Robust.Shared.Audio; using Robust.Shared.Prototypes; diff --git a/Content.Server/StationEvents/Components/VentCritterSpawnLocationComponent.cs b/Content.Server/StationEvents/Components/VentCritterSpawnLocationComponent.cs index 7fed97cbcf..900cae73bc 100644 --- a/Content.Server/StationEvents/Components/VentCritterSpawnLocationComponent.cs +++ b/Content.Server/StationEvents/Components/VentCritterSpawnLocationComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.StationEvents.Events; +using Content.Server.StationEvents.Events; namespace Content.Server.StationEvents.Components; diff --git a/Content.Server/StationEvents/Components/VentCrittersRuleComponent.cs b/Content.Server/StationEvents/Components/VentCrittersRuleComponent.cs index f280468fc3..4c4ab5bf97 100644 --- a/Content.Server/StationEvents/Components/VentCrittersRuleComponent.cs +++ b/Content.Server/StationEvents/Components/VentCrittersRuleComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.StationEvents.Events; +using Content.Server.StationEvents.Events; using Content.Shared.Storage; namespace Content.Server.StationEvents.Components; diff --git a/Content.Server/StationEvents/Components/VentHordeRuleComponent.cs b/Content.Server/StationEvents/Components/VentHordeRuleComponent.cs index b4a7b49e6c..d983ecd226 100644 --- a/Content.Server/StationEvents/Components/VentHordeRuleComponent.cs +++ b/Content.Server/StationEvents/Components/VentHordeRuleComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.StationEvents.Events; +using Content.Server.StationEvents.Events; using Content.Shared.EntityTable.EntitySelectors; namespace Content.Server.StationEvents.Components; diff --git a/Content.Server/StationEvents/Events/AnomalySpawnRule.cs b/Content.Server/StationEvents/Events/AnomalySpawnRule.cs index 790569ec7d..5e4d32f64a 100644 --- a/Content.Server/StationEvents/Events/AnomalySpawnRule.cs +++ b/Content.Server/StationEvents/Events/AnomalySpawnRule.cs @@ -1,4 +1,4 @@ -using Content.Server.Anomaly; +using Content.Server.Anomaly; using Content.Server.StationEvents.Components; using Content.Shared.GameTicking.Components; using Content.Shared.Station.Components; diff --git a/Content.Server/StationEvents/Events/FalseAlarmRule.cs b/Content.Server/StationEvents/Events/FalseAlarmRule.cs index 1730ceecd9..fcd86c6b92 100644 --- a/Content.Server/StationEvents/Events/FalseAlarmRule.cs +++ b/Content.Server/StationEvents/Events/FalseAlarmRule.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Server.StationEvents.Components; using Content.Shared.GameTicking.Components; using JetBrains.Annotations; diff --git a/Content.Server/StationRecords/GeneralStationRecordConsoleSystem.cs b/Content.Server/StationRecords/GeneralStationRecordConsoleSystem.cs index b35c106222..bed1ca65b7 100644 --- a/Content.Server/StationRecords/GeneralStationRecordConsoleSystem.cs +++ b/Content.Server/StationRecords/GeneralStationRecordConsoleSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.StationRecords.Systems; +using Content.Shared.StationRecords.Systems; namespace Content.Server.StationRecords; diff --git a/Content.Server/Stealth/StealthSystem.cs b/Content.Server/Stealth/StealthSystem.cs index 639be77187..b8b1f9b4ec 100644 --- a/Content.Server/Stealth/StealthSystem.cs +++ b/Content.Server/Stealth/StealthSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Stealth; +using Content.Shared.Stealth; namespace Content.Server.Stealth; diff --git a/Content.Server/Storage/Components/BluespaceLockerComponent.cs b/Content.Server/Storage/Components/BluespaceLockerComponent.cs index 7064c0e857..03b4775193 100644 --- a/Content.Server/Storage/Components/BluespaceLockerComponent.cs +++ b/Content.Server/Storage/Components/BluespaceLockerComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Storage.Components; +namespace Content.Server.Storage.Components; [RegisterComponent] public sealed partial class BluespaceLockerComponent : Component diff --git a/Content.Server/Storage/EntitySystems/ItemMapperSystem.cs b/Content.Server/Storage/EntitySystems/ItemMapperSystem.cs index 9120e8ae1c..7e740852b1 100644 --- a/Content.Server/Storage/EntitySystems/ItemMapperSystem.cs +++ b/Content.Server/Storage/EntitySystems/ItemMapperSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Storage.EntitySystems; +using Content.Shared.Storage.EntitySystems; using JetBrains.Annotations; namespace Content.Server.Storage.EntitySystems diff --git a/Content.Server/Storage/StorageCommand.cs b/Content.Server/Storage/StorageCommand.cs index d5855388fa..ea734b4a8a 100644 --- a/Content.Server/Storage/StorageCommand.cs +++ b/Content.Server/Storage/StorageCommand.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Server.Administration; using Content.Shared.Administration; using Content.Shared.Item; diff --git a/Content.Server/Store/StoreRefundComponent.cs b/Content.Server/Store/StoreRefundComponent.cs index df35afdf53..911cab7e9b 100644 --- a/Content.Server/Store/StoreRefundComponent.cs +++ b/Content.Server/Store/StoreRefundComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.Store.Systems; +using Content.Server.Store.Systems; namespace Content.Server.Store.Components; diff --git a/Content.Server/Temperature/Components/ChangeTemperatureOnCollideComponent.cs b/Content.Server/Temperature/Components/ChangeTemperatureOnCollideComponent.cs index 1f57237624..08974ffca4 100644 --- a/Content.Server/Temperature/Components/ChangeTemperatureOnCollideComponent.cs +++ b/Content.Server/Temperature/Components/ChangeTemperatureOnCollideComponent.cs @@ -21,4 +21,4 @@ public sealed partial class ChangeTemperatureOnCollideComponent : Component /// [DataField] public bool IgnoreHeatResistance = true; -} \ No newline at end of file +} diff --git a/Content.Server/Temperature/Components/ContainerTemperatureComponent.cs b/Content.Server/Temperature/Components/ContainerTemperatureComponent.cs index 7cbd398b79..708772c229 100644 --- a/Content.Server/Temperature/Components/ContainerTemperatureComponent.cs +++ b/Content.Server/Temperature/Components/ContainerTemperatureComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Temperature.Components; +using Content.Shared.Temperature.Components; namespace Content.Server.Temperature.Components; diff --git a/Content.Server/Temperature/Components/TemperatureProtectionComponent.cs b/Content.Server/Temperature/Components/TemperatureProtectionComponent.cs index 8c40e35fa0..f6c477c397 100644 --- a/Content.Server/Temperature/Components/TemperatureProtectionComponent.cs +++ b/Content.Server/Temperature/Components/TemperatureProtectionComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.Temperature.Systems; +using Content.Server.Temperature.Systems; namespace Content.Server.Temperature.Components; diff --git a/Content.Server/Toolshed/Commands/AdminDebug/ACmdCommand.cs b/Content.Server/Toolshed/Commands/AdminDebug/ACmdCommand.cs index 53c6a4f7ad..9e9dc56188 100644 --- a/Content.Server/Toolshed/Commands/AdminDebug/ACmdCommand.cs +++ b/Content.Server/Toolshed/Commands/AdminDebug/ACmdCommand.cs @@ -1,4 +1,4 @@ -using Content.Server.Administration; +using Content.Server.Administration; using Content.Server.Administration.Managers; using Content.Shared.Administration; using Robust.Shared.Player; diff --git a/Content.Server/Toolshed/Commands/Verbs/RunVerbAsCommand.cs b/Content.Server/Toolshed/Commands/Verbs/RunVerbAsCommand.cs index 5204aa01be..2ef0bd916a 100644 --- a/Content.Server/Toolshed/Commands/Verbs/RunVerbAsCommand.cs +++ b/Content.Server/Toolshed/Commands/Verbs/RunVerbAsCommand.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Server.Administration; using Content.Shared.Administration; using Content.Shared.Verbs; diff --git a/Content.Server/Toolshed/Commands/VisualizeCommand.cs b/Content.Server/Toolshed/Commands/VisualizeCommand.cs index 7e208e69f0..49b806af46 100644 --- a/Content.Server/Toolshed/Commands/VisualizeCommand.cs +++ b/Content.Server/Toolshed/Commands/VisualizeCommand.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Server.Administration; using Content.Server.EUI; using Content.Shared.Administration; diff --git a/Content.Server/Traits/Assorted/BuckleOnMapInitComponent.cs b/Content.Server/Traits/Assorted/BuckleOnMapInitComponent.cs index 3e540391cb..58ebb6c9d7 100644 --- a/Content.Server/Traits/Assorted/BuckleOnMapInitComponent.cs +++ b/Content.Server/Traits/Assorted/BuckleOnMapInitComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; namespace Content.Server.Traits.Assorted; diff --git a/Content.Server/Traits/Assorted/BuckleOnMapInitSystem.cs b/Content.Server/Traits/Assorted/BuckleOnMapInitSystem.cs index 8d9b57e311..e0a07a67f1 100644 --- a/Content.Server/Traits/Assorted/BuckleOnMapInitSystem.cs +++ b/Content.Server/Traits/Assorted/BuckleOnMapInitSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Buckle; +using Content.Shared.Buckle; namespace Content.Server.Traits.Assorted; diff --git a/Content.Server/VentHorde/Components/VentHordeSpawnerComponent.cs b/Content.Server/VentHorde/Components/VentHordeSpawnerComponent.cs index ab1d68031c..233576e72f 100644 --- a/Content.Server/VentHorde/Components/VentHordeSpawnerComponent.cs +++ b/Content.Server/VentHorde/Components/VentHordeSpawnerComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.VentHorde.Systems; +using Content.Server.VentHorde.Systems; using Robust.Shared.Audio; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; diff --git a/Content.Server/Voting/VoteFinishedEventArgs.cs b/Content.Server/Voting/VoteFinishedEventArgs.cs index 2a641272b0..46190d462e 100644 --- a/Content.Server/Voting/VoteFinishedEventArgs.cs +++ b/Content.Server/Voting/VoteFinishedEventArgs.cs @@ -1,4 +1,4 @@ -using System.Collections.Immutable; +using System.Collections.Immutable; namespace Content.Server.Voting diff --git a/Content.Server/Voting/VoteFinishedEventHandler.cs b/Content.Server/Voting/VoteFinishedEventHandler.cs index 9debafd5c1..c75c76a554 100644 --- a/Content.Server/Voting/VoteFinishedEventHandler.cs +++ b/Content.Server/Voting/VoteFinishedEventHandler.cs @@ -1,4 +1,4 @@ - + namespace Content.Server.Voting { public delegate void VoteFinishedEventHandler(IVoteHandle sender, VoteFinishedEventArgs args); diff --git a/Content.Server/Weapons/Hitscan/Components/HitscanIgniteComponent.cs b/Content.Server/Weapons/Hitscan/Components/HitscanIgniteComponent.cs index 96b70ce89c..411e478bdb 100644 --- a/Content.Server/Weapons/Hitscan/Components/HitscanIgniteComponent.cs +++ b/Content.Server/Weapons/Hitscan/Components/HitscanIgniteComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Server.Weapons.Hitscan.Components; diff --git a/Content.Server/Weapons/Hitscan/Systems/HitscanIgniteSystem.cs b/Content.Server/Weapons/Hitscan/Systems/HitscanIgniteSystem.cs index eae2409e6f..5e72dc081e 100644 --- a/Content.Server/Weapons/Hitscan/Systems/HitscanIgniteSystem.cs +++ b/Content.Server/Weapons/Hitscan/Systems/HitscanIgniteSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Atmos.Components; +using Content.Shared.Atmos.Components; using Content.Server.Atmos.EntitySystems; using Content.Server.Weapons.Hitscan.Components; using Content.Shared.Weapons.Hitscan.Events; diff --git a/Content.Server/Weapons/Melee/Balloon/BalloonPopperSystem.cs b/Content.Server/Weapons/Melee/Balloon/BalloonPopperSystem.cs index 69284864b5..f6cf335355 100644 --- a/Content.Server/Weapons/Melee/Balloon/BalloonPopperSystem.cs +++ b/Content.Server/Weapons/Melee/Balloon/BalloonPopperSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Hands.Systems; +using Content.Server.Hands.Systems; using Content.Server.Popups; using Content.Shared.IdentityManagement; using Content.Shared.Popups; diff --git a/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAETelepathicComponent.cs b/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAETelepathicComponent.cs index 2354d2f16b..3a89e61e4e 100644 --- a/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAETelepathicComponent.cs +++ b/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAETelepathicComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Xenoarchaeology.Artifact.XAE.Components; +namespace Content.Server.Xenoarchaeology.Artifact.XAE.Components; /// /// Harmless artifact that broadcast "thoughts" to players nearby. diff --git a/Content.Server/Zombies/ZombieAccentOverrideComponent.cs b/Content.Server/Zombies/ZombieAccentOverrideComponent.cs index f86711426c..eb5bb9d0f2 100644 --- a/Content.Server/Zombies/ZombieAccentOverrideComponent.cs +++ b/Content.Server/Zombies/ZombieAccentOverrideComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Zombies; +namespace Content.Server.Zombies; /// /// Overrides the applied accent for zombies. diff --git a/Content.Shared.Database/Bans.cs b/Content.Shared.Database/Bans.cs index 9fb100f5db..18cc96c721 100644 --- a/Content.Shared.Database/Bans.cs +++ b/Content.Shared.Database/Bans.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Database; +namespace Content.Shared.Database; /// /// Types of bans that can be stored in the database. diff --git a/Content.Shared.Database/LogImpact.cs b/Content.Shared.Database/LogImpact.cs index 9f0d6a86f5..fd08bf2117 100644 --- a/Content.Shared.Database/LogImpact.cs +++ b/Content.Shared.Database/LogImpact.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Database; +namespace Content.Shared.Database; // DO NOT CHANGE THE NUMERIC VALUES OF THESE [Serializable] diff --git a/Content.Shared.Database/TypedHwid.cs b/Content.Shared.Database/TypedHwid.cs index 253375e9db..bc77b88bb2 100644 --- a/Content.Shared.Database/TypedHwid.cs +++ b/Content.Shared.Database/TypedHwid.cs @@ -1,4 +1,4 @@ -using System.Collections.Immutable; +using System.Collections.Immutable; using System.Diagnostics.CodeAnalysis; namespace Content.Shared.Database; diff --git a/Content.Shared/Access/Components/IdExaminableComponent.cs b/Content.Shared/Access/Components/IdExaminableComponent.cs index 87d3e03a14..f08b8047cc 100644 --- a/Content.Shared/Access/Components/IdExaminableComponent.cs +++ b/Content.Shared/Access/Components/IdExaminableComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Access.Systems; +using Content.Shared.Access.Systems; namespace Content.Shared.Access.Components; diff --git a/Content.Shared/Actions/Events/ActionDoAfterEvent.cs b/Content.Shared/Actions/Events/ActionDoAfterEvent.cs index 3ce2e364f4..3602b023bb 100644 --- a/Content.Shared/Actions/Events/ActionDoAfterEvent.cs +++ b/Content.Shared/Actions/Events/ActionDoAfterEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.DoAfter; +using Content.Shared.DoAfter; using Robust.Shared.Serialization; namespace Content.Shared.Actions.Events; diff --git a/Content.Shared/Actions/Events/ActionUpgradeEvent.cs b/Content.Shared/Actions/Events/ActionUpgradeEvent.cs index 40ff716b29..623590c916 100644 --- a/Content.Shared/Actions/Events/ActionUpgradeEvent.cs +++ b/Content.Shared/Actions/Events/ActionUpgradeEvent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Actions.Events; +namespace Content.Shared.Actions.Events; public sealed class ActionUpgradeEvent : EntityEventArgs { diff --git a/Content.Shared/Actions/Events/InvisibleWallActionEvent.cs b/Content.Shared/Actions/Events/InvisibleWallActionEvent.cs index d84b9910e0..357690f3e2 100644 --- a/Content.Shared/Actions/Events/InvisibleWallActionEvent.cs +++ b/Content.Shared/Actions/Events/InvisibleWallActionEvent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Actions.Events; +namespace Content.Shared.Actions.Events; public sealed partial class InvisibleWallActionEvent : InstantActionEvent { diff --git a/Content.Shared/Actions/SharedActionsSystem.DoAfter.cs b/Content.Shared/Actions/SharedActionsSystem.DoAfter.cs index 51e4b6e560..6a11f022fa 100644 --- a/Content.Shared/Actions/SharedActionsSystem.DoAfter.cs +++ b/Content.Shared/Actions/SharedActionsSystem.DoAfter.cs @@ -1,4 +1,4 @@ -using Content.Shared.Actions.Events; +using Content.Shared.Actions.Events; using Content.Shared.DoAfter; namespace Content.Shared.Actions; diff --git a/Content.Shared/Administration/AdminCommandPermissions.cs b/Content.Shared/Administration/AdminCommandPermissions.cs index 130409352f..5916c787de 100644 --- a/Content.Shared/Administration/AdminCommandPermissions.cs +++ b/Content.Shared/Administration/AdminCommandPermissions.cs @@ -1,4 +1,4 @@ -using System.IO; +using System.IO; using System.Linq; using Robust.Shared.Utility; using YamlDotNet.RepresentationModel; diff --git a/Content.Shared/Administration/AdminCommandSyntax.cs b/Content.Shared/Administration/AdminCommandSyntax.cs index a1de5af7b6..2dbeeabaed 100644 --- a/Content.Shared/Administration/AdminCommandSyntax.cs +++ b/Content.Shared/Administration/AdminCommandSyntax.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Administration; +namespace Content.Shared.Administration; /// /// Command names that may be used programmatically (e.g. in cmdlinks). In their own class to ensure consistency. diff --git a/Content.Shared/Administration/AdminData.cs b/Content.Shared/Administration/AdminData.cs index bad36f78c5..597d951f31 100644 --- a/Content.Shared/Administration/AdminData.cs +++ b/Content.Shared/Administration/AdminData.cs @@ -1,4 +1,4 @@ - + namespace Content.Shared.Administration { /// diff --git a/Content.Shared/Administration/AdminEventLog/AdminEventLogEuiState.cs b/Content.Shared/Administration/AdminEventLog/AdminEventLogEuiState.cs index a0119425f2..afc2f47ffe 100644 --- a/Content.Shared/Administration/AdminEventLog/AdminEventLogEuiState.cs +++ b/Content.Shared/Administration/AdminEventLog/AdminEventLogEuiState.cs @@ -1,4 +1,4 @@ -using Content.Shared.Eui; +using Content.Shared.Eui; using Robust.Shared.Player; using Robust.Shared.Serialization; diff --git a/Content.Shared/Administration/AdminFlags.cs b/Content.Shared/Administration/AdminFlags.cs index 02db1cf394..239685787e 100644 --- a/Content.Shared/Administration/AdminFlags.cs +++ b/Content.Shared/Administration/AdminFlags.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Administration +namespace Content.Shared.Administration { /// /// Permissions that admins can have. diff --git a/Content.Shared/Administration/AdminFlagsHelper.cs b/Content.Shared/Administration/AdminFlagsHelper.cs index d22ce33b62..d7e7c0476f 100644 --- a/Content.Shared/Administration/AdminFlagsHelper.cs +++ b/Content.Shared/Administration/AdminFlagsHelper.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using System.Numerics; namespace Content.Shared.Administration diff --git a/Content.Shared/Administration/AdminFrozenComponent.cs b/Content.Shared/Administration/AdminFrozenComponent.cs index 28df7c5fd0..3cff7c31af 100644 --- a/Content.Shared/Administration/AdminFrozenComponent.cs +++ b/Content.Shared/Administration/AdminFrozenComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Administration; diff --git a/Content.Shared/Administration/AnyCommandAttribute.cs b/Content.Shared/Administration/AnyCommandAttribute.cs index 66a1bd0bad..6c0e261cb1 100644 --- a/Content.Shared/Administration/AnyCommandAttribute.cs +++ b/Content.Shared/Administration/AnyCommandAttribute.cs @@ -1,4 +1,4 @@ -using JetBrains.Annotations; +using JetBrains.Annotations; using Robust.Shared.Console; using Robust.Shared.Toolshed; diff --git a/Content.Shared/Administration/BanList/BanListEuiState.cs b/Content.Shared/Administration/BanList/BanListEuiState.cs index c885ff1f70..f7ebd55806 100644 --- a/Content.Shared/Administration/BanList/BanListEuiState.cs +++ b/Content.Shared/Administration/BanList/BanListEuiState.cs @@ -1,4 +1,4 @@ -using Content.Shared.Eui; +using Content.Shared.Eui; using Robust.Shared.Serialization; namespace Content.Shared.Administration.BanList; diff --git a/Content.Shared/Administration/BanList/SharedBan.cs b/Content.Shared/Administration/BanList/SharedBan.cs index 68ccc02c58..aeab777ce7 100644 --- a/Content.Shared/Administration/BanList/SharedBan.cs +++ b/Content.Shared/Administration/BanList/SharedBan.cs @@ -1,4 +1,4 @@ -using System.Collections.Immutable; +using System.Collections.Immutable; using Content.Shared.Database; using Robust.Shared.Network; using Robust.Shared.Serialization; diff --git a/Content.Shared/Administration/BanList/SharedUnban.cs b/Content.Shared/Administration/BanList/SharedUnban.cs index d60bb9184e..e406df2ae4 100644 --- a/Content.Shared/Administration/BanList/SharedUnban.cs +++ b/Content.Shared/Administration/BanList/SharedUnban.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Administration.BanList; diff --git a/Content.Shared/Administration/Components/AdminMinigunComponent.cs b/Content.Shared/Administration/Components/AdminMinigunComponent.cs index 04a7aacd69..1f550368bd 100644 --- a/Content.Shared/Administration/Components/AdminMinigunComponent.cs +++ b/Content.Shared/Administration/Components/AdminMinigunComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Administration.Components; diff --git a/Content.Shared/Administration/Components/BufferingComponent.cs b/Content.Shared/Administration/Components/BufferingComponent.cs index 3d365d00aa..4037a6e532 100644 --- a/Content.Shared/Administration/Components/BufferingComponent.cs +++ b/Content.Shared/Administration/Components/BufferingComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration.Systems; +using Content.Shared.Administration.Systems; namespace Content.Shared.Administration.Components; diff --git a/Content.Shared/Administration/Components/DisarmProneComponent.cs b/Content.Shared/Administration/Components/DisarmProneComponent.cs index 86addab4f6..b5b82c0190 100644 --- a/Content.Shared/Administration/Components/DisarmProneComponent.cs +++ b/Content.Shared/Administration/Components/DisarmProneComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Weapons.Melee; +using Content.Shared.Weapons.Melee; using Robust.Shared.GameStates; namespace Content.Shared.Administration.Components; diff --git a/Content.Shared/Administration/Components/HeadstandComponent.cs b/Content.Shared/Administration/Components/HeadstandComponent.cs index 25576fc466..ace2081b54 100644 --- a/Content.Shared/Administration/Components/HeadstandComponent.cs +++ b/Content.Shared/Administration/Components/HeadstandComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Administration.Components; diff --git a/Content.Shared/Administration/Components/KillSignComponent.cs b/Content.Shared/Administration/Components/KillSignComponent.cs index 796a98a71d..a04f68b518 100644 --- a/Content.Shared/Administration/Components/KillSignComponent.cs +++ b/Content.Shared/Administration/Components/KillSignComponent.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Robust.Shared.GameStates; using Robust.Shared.Utility; diff --git a/Content.Shared/Administration/Components/StationInfiniteBatteryTargetComponent.cs b/Content.Shared/Administration/Components/StationInfiniteBatteryTargetComponent.cs index d26527a472..063d487a57 100644 --- a/Content.Shared/Administration/Components/StationInfiniteBatteryTargetComponent.cs +++ b/Content.Shared/Administration/Components/StationInfiniteBatteryTargetComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Administration.Components; diff --git a/Content.Shared/Administration/Events/PanicBunkerChangedEvent.cs b/Content.Shared/Administration/Events/PanicBunkerChangedEvent.cs index 786f645a7f..7fa474210e 100644 --- a/Content.Shared/Administration/Events/PanicBunkerChangedEvent.cs +++ b/Content.Shared/Administration/Events/PanicBunkerChangedEvent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Administration.Events; diff --git a/Content.Shared/Administration/Events/PlayerInfoChangedEvent.cs b/Content.Shared/Administration/Events/PlayerInfoChangedEvent.cs index e22ebc0b28..1e5e28ab99 100644 --- a/Content.Shared/Administration/Events/PlayerInfoChangedEvent.cs +++ b/Content.Shared/Administration/Events/PlayerInfoChangedEvent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Administration.Events; diff --git a/Content.Shared/Administration/Logs/AdminLogsEuiState.cs b/Content.Shared/Administration/Logs/AdminLogsEuiState.cs index bb112525a3..349ad8bf8e 100644 --- a/Content.Shared/Administration/Logs/AdminLogsEuiState.cs +++ b/Content.Shared/Administration/Logs/AdminLogsEuiState.cs @@ -1,4 +1,4 @@ -using Content.Shared.Database; +using Content.Shared.Database; using Content.Shared.Eui; using Robust.Shared.Serialization; diff --git a/Content.Shared/Administration/Logs/DateOrder.cs b/Content.Shared/Administration/Logs/DateOrder.cs index a8b023c801..70d35934b6 100644 --- a/Content.Shared/Administration/Logs/DateOrder.cs +++ b/Content.Shared/Administration/Logs/DateOrder.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Administration.Logs; +namespace Content.Shared.Administration.Logs; public enum DateOrder { diff --git a/Content.Shared/Administration/Logs/IAdminLogsPlayerValue.cs b/Content.Shared/Administration/Logs/IAdminLogsPlayerValue.cs index e99b6b6034..81e758feac 100644 --- a/Content.Shared/Administration/Logs/IAdminLogsPlayerValue.cs +++ b/Content.Shared/Administration/Logs/IAdminLogsPlayerValue.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Network; +using Robust.Shared.Network; namespace Content.Shared.Administration.Logs; diff --git a/Content.Shared/Administration/Logs/ISharedAdminLogManager.cs b/Content.Shared/Administration/Logs/ISharedAdminLogManager.cs index 5e528fe1cd..b32c0b668e 100644 --- a/Content.Shared/Administration/Logs/ISharedAdminLogManager.cs +++ b/Content.Shared/Administration/Logs/ISharedAdminLogManager.cs @@ -1,4 +1,4 @@ -using System.Runtime.CompilerServices; +using System.Runtime.CompilerServices; using Content.Shared.Database; namespace Content.Shared.Administration.Logs; diff --git a/Content.Shared/Administration/Logs/LogStringHandler.cs b/Content.Shared/Administration/Logs/LogStringHandler.cs index 2fab949d58..ac53c02e7a 100644 --- a/Content.Shared/Administration/Logs/LogStringHandler.cs +++ b/Content.Shared/Administration/Logs/LogStringHandler.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using System.Runtime.CompilerServices; using Robust.Shared.Player; using Robust.Shared.Toolshed.TypeParsers; diff --git a/Content.Shared/Administration/Logs/SharedAdminLog.cs b/Content.Shared/Administration/Logs/SharedAdminLog.cs index de4d1c8e2d..a2e7f3a868 100644 --- a/Content.Shared/Administration/Logs/SharedAdminLog.cs +++ b/Content.Shared/Administration/Logs/SharedAdminLog.cs @@ -1,4 +1,4 @@ -using Content.Shared.Database; +using Content.Shared.Database; using Robust.Shared.Serialization; namespace Content.Shared.Administration.Logs; diff --git a/Content.Shared/Administration/Logs/SharedAdminLogManager.cs b/Content.Shared/Administration/Logs/SharedAdminLogManager.cs index cea3eba69f..cf8f3acf22 100644 --- a/Content.Shared/Administration/Logs/SharedAdminLogManager.cs +++ b/Content.Shared/Administration/Logs/SharedAdminLogManager.cs @@ -1,4 +1,4 @@ -using Content.Shared.Database; +using Content.Shared.Database; namespace Content.Shared.Administration.Logs; diff --git a/Content.Shared/Administration/MsgUpdateAdminStatus.cs b/Content.Shared/Administration/MsgUpdateAdminStatus.cs index 20da91fe10..5a865ef32f 100644 --- a/Content.Shared/Administration/MsgUpdateAdminStatus.cs +++ b/Content.Shared/Administration/MsgUpdateAdminStatus.cs @@ -1,4 +1,4 @@ -using Lidgren.Network; +using Lidgren.Network; using Robust.Shared.Network; using Robust.Shared.Serialization; diff --git a/Content.Shared/Administration/PermissionsEuiState.cs b/Content.Shared/Administration/PermissionsEuiState.cs index 77fdad5fa7..2ecf4e1141 100644 --- a/Content.Shared/Administration/PermissionsEuiState.cs +++ b/Content.Shared/Administration/PermissionsEuiState.cs @@ -1,4 +1,4 @@ -using Content.Shared.Eui; +using Content.Shared.Eui; using Robust.Shared.Network; using Robust.Shared.Serialization; diff --git a/Content.Shared/Administration/QuickDialogOpenEvent.cs b/Content.Shared/Administration/QuickDialogOpenEvent.cs index f4e77ab999..36b7359487 100644 --- a/Content.Shared/Administration/QuickDialogOpenEvent.cs +++ b/Content.Shared/Administration/QuickDialogOpenEvent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Administration; diff --git a/Content.Shared/Administration/SharedBwoinkSystem.cs b/Content.Shared/Administration/SharedBwoinkSystem.cs index b0caefacaf..410df6d089 100644 --- a/Content.Shared/Administration/SharedBwoinkSystem.cs +++ b/Content.Shared/Administration/SharedBwoinkSystem.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using Robust.Shared.Network; using Robust.Shared.Serialization; diff --git a/Content.Shared/Administration/Systems/AdminGunSystem.cs b/Content.Shared/Administration/Systems/AdminGunSystem.cs index fd2acd2829..084fe55d0a 100644 --- a/Content.Shared/Administration/Systems/AdminGunSystem.cs +++ b/Content.Shared/Administration/Systems/AdminGunSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration.Components; +using Content.Shared.Administration.Components; using Content.Shared.Weapons.Ranged.Events; namespace Content.Shared.Administration.Systems; diff --git a/Content.Shared/Administration/Systems/RejuvenateSystem.cs b/Content.Shared/Administration/Systems/RejuvenateSystem.cs index 17cd24bc4b..0096c0d393 100644 --- a/Content.Shared/Administration/Systems/RejuvenateSystem.cs +++ b/Content.Shared/Administration/Systems/RejuvenateSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Rejuvenate; +using Content.Shared.Rejuvenate; namespace Content.Shared.Administration.Systems; diff --git a/Content.Shared/Alert/AlertKey.cs b/Content.Shared/Alert/AlertKey.cs index c5c3a7643e..91524cbaa1 100644 --- a/Content.Shared/Alert/AlertKey.cs +++ b/Content.Shared/Alert/AlertKey.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; using Robust.Shared.Serialization; namespace Content.Shared.Alert; diff --git a/Content.Shared/Alert/AlertOrderPrototype.cs b/Content.Shared/Alert/AlertOrderPrototype.cs index af4241a27e..8b4a5a2f99 100644 --- a/Content.Shared/Alert/AlertOrderPrototype.cs +++ b/Content.Shared/Alert/AlertOrderPrototype.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Robust.Shared.Prototypes; using Robust.Shared.Utility; diff --git a/Content.Shared/Alert/ClickAlertEvent.cs b/Content.Shared/Alert/ClickAlertEvent.cs index 43dd086b56..7a85f796ba 100644 --- a/Content.Shared/Alert/ClickAlertEvent.cs +++ b/Content.Shared/Alert/ClickAlertEvent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; using Robust.Shared.Serialization; namespace Content.Shared.Alert; diff --git a/Content.Shared/Anomaly/Components/AnomalyPulsingComponent.cs b/Content.Shared/Anomaly/Components/AnomalyPulsingComponent.cs index a7fedb821b..4dd1a877e1 100644 --- a/Content.Shared/Anomaly/Components/AnomalyPulsingComponent.cs +++ b/Content.Shared/Anomaly/Components/AnomalyPulsingComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; namespace Content.Shared.Anomaly.Components; diff --git a/Content.Shared/Anomaly/Components/AnomalyScannerComponent.cs b/Content.Shared/Anomaly/Components/AnomalyScannerComponent.cs index 9109835289..8aa346d44d 100644 --- a/Content.Shared/Anomaly/Components/AnomalyScannerComponent.cs +++ b/Content.Shared/Anomaly/Components/AnomalyScannerComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Anomaly; +using Content.Shared.Anomaly; using Robust.Shared.Audio; using Robust.Shared.GameStates; diff --git a/Content.Shared/Anomaly/Components/AnomalySupercriticalComponent.cs b/Content.Shared/Anomaly/Components/AnomalySupercriticalComponent.cs index d72bc174be..375e99e9c1 100644 --- a/Content.Shared/Anomaly/Components/AnomalySupercriticalComponent.cs +++ b/Content.Shared/Anomaly/Components/AnomalySupercriticalComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; namespace Content.Shared.Anomaly.Components; diff --git a/Content.Shared/Anomaly/Components/InnerBodyAnomalyComponent.cs b/Content.Shared/Anomaly/Components/InnerBodyAnomalyComponent.cs index c672c52dcf..8ba1b889be 100644 --- a/Content.Shared/Anomaly/Components/InnerBodyAnomalyComponent.cs +++ b/Content.Shared/Anomaly/Components/InnerBodyAnomalyComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Anomaly.Effects; +using Content.Shared.Anomaly.Effects; using Content.Shared.Humanoid.Prototypes; using Robust.Shared.Audio; using Robust.Shared.GameStates; diff --git a/Content.Shared/Anomaly/Components/InnerBodyAnomalyVisualsComponent.cs b/Content.Shared/Anomaly/Components/InnerBodyAnomalyVisualsComponent.cs index 425324b46a..986899b720 100644 --- a/Content.Shared/Anomaly/Components/InnerBodyAnomalyVisualsComponent.cs +++ b/Content.Shared/Anomaly/Components/InnerBodyAnomalyVisualsComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.DisplacementMap; +using Content.Shared.DisplacementMap; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; diff --git a/Content.Shared/Anomaly/Effects/Components/PyroclasticAnomalyComponent.cs b/Content.Shared/Anomaly/Effects/Components/PyroclasticAnomalyComponent.cs index 16c422f1ab..228a3cbee8 100644 --- a/Content.Shared/Anomaly/Effects/Components/PyroclasticAnomalyComponent.cs +++ b/Content.Shared/Anomaly/Effects/Components/PyroclasticAnomalyComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Anomaly.Effects.Components; +namespace Content.Shared.Anomaly.Effects.Components; [RegisterComponent] public sealed partial class PyroclasticAnomalyComponent : Component diff --git a/Content.Shared/Anomaly/ScannerDoAfterEvent.cs b/Content.Shared/Anomaly/ScannerDoAfterEvent.cs index e9c234d28f..37f287e7c0 100644 --- a/Content.Shared/Anomaly/ScannerDoAfterEvent.cs +++ b/Content.Shared/Anomaly/ScannerDoAfterEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.DoAfter; +using Content.Shared.DoAfter; using Robust.Shared.Serialization; namespace Content.Shared.Anomaly; diff --git a/Content.Shared/Antag/Selectors/AntagCountSelector.cs b/Content.Shared/Antag/Selectors/AntagCountSelector.cs index 351e4f06ba..b20c464fc1 100644 --- a/Content.Shared/Antag/Selectors/AntagCountSelector.cs +++ b/Content.Shared/Antag/Selectors/AntagCountSelector.cs @@ -1,4 +1,4 @@ -using Content.Shared.Destructible.Thresholds; +using Content.Shared.Destructible.Thresholds; using Robust.Shared.Prototypes; using Robust.Shared.Random; diff --git a/Content.Shared/Antag/Selectors/FixedAntagCount.cs b/Content.Shared/Antag/Selectors/FixedAntagCount.cs index 03c7612bbc..39da2789a8 100644 --- a/Content.Shared/Antag/Selectors/FixedAntagCount.cs +++ b/Content.Shared/Antag/Selectors/FixedAntagCount.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Random; +using Robust.Shared.Random; namespace Content.Shared.Antag.Selectors; diff --git a/Content.Shared/Antag/Selectors/LinearAntagCount.cs b/Content.Shared/Antag/Selectors/LinearAntagCount.cs index 54e5e75fec..0a38a92c4c 100644 --- a/Content.Shared/Antag/Selectors/LinearAntagCount.cs +++ b/Content.Shared/Antag/Selectors/LinearAntagCount.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Random; +using Robust.Shared.Random; namespace Content.Shared.Antag.Selectors; diff --git a/Content.Shared/Arcade/BlockGameBlock.cs b/Content.Shared/Arcade/BlockGameBlock.cs index 012950cda7..009f1c0a5e 100644 --- a/Content.Shared/Arcade/BlockGameBlock.cs +++ b/Content.Shared/Arcade/BlockGameBlock.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Arcade { diff --git a/Content.Shared/Arcade/BlockGamePlayerAction.cs b/Content.Shared/Arcade/BlockGamePlayerAction.cs index 9334fd5812..d7e30a17b7 100644 --- a/Content.Shared/Arcade/BlockGamePlayerAction.cs +++ b/Content.Shared/Arcade/BlockGamePlayerAction.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Arcade { diff --git a/Content.Shared/Arcade/BlockGameUiKey.cs b/Content.Shared/Arcade/BlockGameUiKey.cs index 8ab4359091..b14308916c 100644 --- a/Content.Shared/Arcade/BlockGameUiKey.cs +++ b/Content.Shared/Arcade/BlockGameUiKey.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Arcade { diff --git a/Content.Shared/Armable/ArmableComponent.cs b/Content.Shared/Armable/ArmableComponent.cs index 11809c156c..1c016eb168 100644 --- a/Content.Shared/Armable/ArmableComponent.cs +++ b/Content.Shared/Armable/ArmableComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Armable; diff --git a/Content.Shared/Armable/ArmableSystem.cs b/Content.Shared/Armable/ArmableSystem.cs index 391498d77a..4a991097c7 100644 --- a/Content.Shared/Armable/ArmableSystem.cs +++ b/Content.Shared/Armable/ArmableSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Examine; +using Content.Shared.Examine; using Content.Shared.Item.ItemToggle; using Content.Shared.Item.ItemToggle.Components; diff --git a/Content.Shared/Armor/ArmorComponent.cs b/Content.Shared/Armor/ArmorComponent.cs index 38f5f2cb1b..143d92400e 100644 --- a/Content.Shared/Armor/ArmorComponent.cs +++ b/Content.Shared/Armor/ArmorComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Damage; +using Content.Shared.Damage; using Content.Shared.Inventory; using Robust.Shared.GameStates; using Robust.Shared.Utility; diff --git a/Content.Shared/Armor/SharedArmorSystem.cs b/Content.Shared/Armor/SharedArmorSystem.cs index b65007aec5..6438262c29 100644 --- a/Content.Shared/Armor/SharedArmorSystem.cs +++ b/Content.Shared/Armor/SharedArmorSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Clothing.Components; +using Content.Shared.Clothing.Components; using Content.Shared.Damage; using Content.Shared.Damage.Systems; using Content.Shared.Examine; diff --git a/Content.Shared/Atmos/AtmosDirection.cs b/Content.Shared/Atmos/AtmosDirection.cs index 4872a52236..f6e40ac812 100644 --- a/Content.Shared/Atmos/AtmosDirection.cs +++ b/Content.Shared/Atmos/AtmosDirection.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using System.Runtime.CompilerServices; using JetBrains.Annotations; using Robust.Shared.Serialization; diff --git a/Content.Shared/Atmos/AtmosExposedEvents.cs b/Content.Shared/Atmos/AtmosExposedEvents.cs index b64ebb49cd..81e28edd98 100644 --- a/Content.Shared/Atmos/AtmosExposedEvents.cs +++ b/Content.Shared/Atmos/AtmosExposedEvents.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Map; +using Robust.Shared.Map; namespace Content.Shared.Atmos; diff --git a/Content.Shared/Atmos/Components/BreathToolComponent.cs b/Content.Shared/Atmos/Components/BreathToolComponent.cs index b511258ff8..5b88d81b96 100644 --- a/Content.Shared/Atmos/Components/BreathToolComponent.cs +++ b/Content.Shared/Atmos/Components/BreathToolComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Body.Components; +using Content.Shared.Body.Components; using Content.Shared.Inventory; using Robust.Shared.GameStates; diff --git a/Content.Shared/Atmos/Components/ExtinguishableSetCollisionWakeComponent.cs b/Content.Shared/Atmos/Components/ExtinguishableSetCollisionWakeComponent.cs index 19e471f0e5..14ad065030 100644 --- a/Content.Shared/Atmos/Components/ExtinguishableSetCollisionWakeComponent.cs +++ b/Content.Shared/Atmos/Components/ExtinguishableSetCollisionWakeComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Atmos.Components; diff --git a/Content.Shared/Atmos/Components/GasMaxPressureHolderComponent.cs b/Content.Shared/Atmos/Components/GasMaxPressureHolderComponent.cs index 0f028fa7b8..7e76939858 100644 --- a/Content.Shared/Atmos/Components/GasMaxPressureHolderComponent.cs +++ b/Content.Shared/Atmos/Components/GasMaxPressureHolderComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Audio; +using Robust.Shared.Audio; namespace Content.Shared.Atmos.Components; diff --git a/Content.Shared/Atmos/Components/IGasMaxPressureHolder.cs b/Content.Shared/Atmos/Components/IGasMaxPressureHolder.cs index e05d80c96c..1eddc479ba 100644 --- a/Content.Shared/Atmos/Components/IGasMaxPressureHolder.cs +++ b/Content.Shared/Atmos/Components/IGasMaxPressureHolder.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Audio; +using Robust.Shared.Audio; namespace Content.Shared.Atmos.Components; diff --git a/Content.Shared/Atmos/Components/SharedGasTankComponent.cs b/Content.Shared/Atmos/Components/SharedGasTankComponent.cs index 536d040766..1b353c2b20 100644 --- a/Content.Shared/Atmos/Components/SharedGasTankComponent.cs +++ b/Content.Shared/Atmos/Components/SharedGasTankComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Atmos.Components; diff --git a/Content.Shared/Atmos/EntitySystems/ExtinguishableSetCollisionWakeSystem.cs b/Content.Shared/Atmos/EntitySystems/ExtinguishableSetCollisionWakeSystem.cs index 010229311f..b629feabd3 100644 --- a/Content.Shared/Atmos/EntitySystems/ExtinguishableSetCollisionWakeSystem.cs +++ b/Content.Shared/Atmos/EntitySystems/ExtinguishableSetCollisionWakeSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Atmos.Components; +using Content.Shared.Atmos.Components; namespace Content.Shared.Atmos.EntitySystems; diff --git a/Content.Shared/Atmos/EntitySystems/GasMaxPressureSystem.cs b/Content.Shared/Atmos/EntitySystems/GasMaxPressureSystem.cs index 27a3433bd6..9153998070 100644 --- a/Content.Shared/Atmos/EntitySystems/GasMaxPressureSystem.cs +++ b/Content.Shared/Atmos/EntitySystems/GasMaxPressureSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Atmos.Components; +using Content.Shared.Atmos.Components; using Content.Shared.CCVar; using Content.Shared.Destructible; using Content.Shared.Explosion.EntitySystems; diff --git a/Content.Shared/Atmos/EntitySystems/SharedAtmosphereSystem.API.cs b/Content.Shared/Atmos/EntitySystems/SharedAtmosphereSystem.API.cs index 5b953e6df4..4dca3627c6 100644 --- a/Content.Shared/Atmos/EntitySystems/SharedAtmosphereSystem.API.cs +++ b/Content.Shared/Atmos/EntitySystems/SharedAtmosphereSystem.API.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using JetBrains.Annotations; namespace Content.Shared.Atmos.EntitySystems; diff --git a/Content.Shared/Atmos/EntitySystems/SharedGasPressureRegulatorSystem.cs b/Content.Shared/Atmos/EntitySystems/SharedGasPressureRegulatorSystem.cs index 8a1b1eb867..9022e6a522 100644 --- a/Content.Shared/Atmos/EntitySystems/SharedGasPressureRegulatorSystem.cs +++ b/Content.Shared/Atmos/EntitySystems/SharedGasPressureRegulatorSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration.Logs; +using Content.Shared.Administration.Logs; using Content.Shared.Atmos.Components; using Content.Shared.Atmos.Piping.Binary.Components; using Content.Shared.Database; diff --git a/Content.Shared/Atmos/ExcitedGroup.cs b/Content.Shared/Atmos/ExcitedGroup.cs index 837763f9ba..b5ec330bad 100644 --- a/Content.Shared/Atmos/ExcitedGroup.cs +++ b/Content.Shared/Atmos/ExcitedGroup.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Atmos; +namespace Content.Shared.Atmos; /// /// Internal Atmospherics class that stores data about a group of s diff --git a/Content.Shared/Atmos/FireEvents.cs b/Content.Shared/Atmos/FireEvents.cs index 4e19ef6147..69ae680a1e 100644 --- a/Content.Shared/Atmos/FireEvents.cs +++ b/Content.Shared/Atmos/FireEvents.cs @@ -1,4 +1,4 @@ -using Content.Shared.Inventory; +using Content.Shared.Inventory; using Content.Shared.Nutrition.Components; namespace Content.Shared.Atmos; diff --git a/Content.Shared/Atmos/FireVisuals.cs b/Content.Shared/Atmos/FireVisuals.cs index 6758a95fd8..1d9dcbaea9 100644 --- a/Content.Shared/Atmos/FireVisuals.cs +++ b/Content.Shared/Atmos/FireVisuals.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Atmos { diff --git a/Content.Shared/Atmos/GasMixture.cs b/Content.Shared/Atmos/GasMixture.cs index a5fc04e611..bbd6fbf26d 100644 --- a/Content.Shared/Atmos/GasMixture.cs +++ b/Content.Shared/Atmos/GasMixture.cs @@ -1,4 +1,4 @@ -using System.Collections; +using System.Collections; using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Numerics.Tensors; diff --git a/Content.Shared/Atmos/GasMixtureStringRepresentation.cs b/Content.Shared/Atmos/GasMixtureStringRepresentation.cs index 33b9d9e181..0df0da3bc6 100644 --- a/Content.Shared/Atmos/GasMixtureStringRepresentation.cs +++ b/Content.Shared/Atmos/GasMixtureStringRepresentation.cs @@ -1,4 +1,4 @@ -using System.Text; +using System.Text; namespace Content.Shared.Atmos; diff --git a/Content.Shared/Atmos/Hotspot.cs b/Content.Shared/Atmos/Hotspot.cs index 5dad064df4..20fd7fc190 100644 --- a/Content.Shared/Atmos/Hotspot.cs +++ b/Content.Shared/Atmos/Hotspot.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Atmos; +namespace Content.Shared.Atmos; /// /// Internal Atmospherics struct that stores data about a hotspot in a tile. diff --git a/Content.Shared/Atmos/IGasMixtureHolder.cs b/Content.Shared/Atmos/IGasMixtureHolder.cs index 5ad100319d..42c6607882 100644 --- a/Content.Shared/Atmos/IGasMixtureHolder.cs +++ b/Content.Shared/Atmos/IGasMixtureHolder.cs @@ -3,4 +3,4 @@ namespace Content.Shared.Atmos; public interface IGasMixtureHolder { public GasMixture Air { get; set; } -} \ No newline at end of file +} diff --git a/Content.Shared/Atmos/Monitor/BaseAtmosDeviceData.cs b/Content.Shared/Atmos/Monitor/BaseAtmosDeviceData.cs index 2b5ef56b86..1a35387ee8 100644 --- a/Content.Shared/Atmos/Monitor/BaseAtmosDeviceData.cs +++ b/Content.Shared/Atmos/Monitor/BaseAtmosDeviceData.cs @@ -1,4 +1,4 @@ -using Content.Shared.DeviceNetwork.Systems; +using Content.Shared.DeviceNetwork.Systems; using Robust.Shared.Serialization; namespace Content.Shared.Atmos.Monitor; diff --git a/Content.Shared/Atmos/Monitor/IAtmosDeviceData.cs b/Content.Shared/Atmos/Monitor/IAtmosDeviceData.cs index d62288a736..48e98d34af 100644 --- a/Content.Shared/Atmos/Monitor/IAtmosDeviceData.cs +++ b/Content.Shared/Atmos/Monitor/IAtmosDeviceData.cs @@ -1,4 +1,4 @@ -using Content.Shared.DeviceNetwork.Systems; +using Content.Shared.DeviceNetwork.Systems; namespace Content.Shared.Atmos.Monitor; diff --git a/Content.Shared/Atmos/MonstermosInfo.cs b/Content.Shared/Atmos/MonstermosInfo.cs index 7b4b8b1347..565f5006e9 100644 --- a/Content.Shared/Atmos/MonstermosInfo.cs +++ b/Content.Shared/Atmos/MonstermosInfo.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Atmos; +namespace Content.Shared.Atmos; /// /// Atmospherics class that stores data on tiles for Monstermos calculations and operations. diff --git a/Content.Shared/Atmos/Piping/Binary/Components/GasPressureRegulatorComponent.cs b/Content.Shared/Atmos/Piping/Binary/Components/GasPressureRegulatorComponent.cs index 2e893d28fc..8a10bf2a67 100644 --- a/Content.Shared/Atmos/Piping/Binary/Components/GasPressureRegulatorComponent.cs +++ b/Content.Shared/Atmos/Piping/Binary/Components/GasPressureRegulatorComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Guidebook; +using Content.Shared.Guidebook; using Robust.Shared.GameStates; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; diff --git a/Content.Shared/Atmos/Piping/Binary/Components/SharedGasCanisterComponent.cs b/Content.Shared/Atmos/Piping/Binary/Components/SharedGasCanisterComponent.cs index 6ad576fd8c..3144842770 100644 --- a/Content.Shared/Atmos/Piping/Binary/Components/SharedGasCanisterComponent.cs +++ b/Content.Shared/Atmos/Piping/Binary/Components/SharedGasCanisterComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Atmos.Piping.Binary.Components { diff --git a/Content.Shared/Atmos/Piping/Binary/Components/SharedGasPressurePumpComponent.cs b/Content.Shared/Atmos/Piping/Binary/Components/SharedGasPressurePumpComponent.cs index 041708dde0..bcdb221b02 100644 --- a/Content.Shared/Atmos/Piping/Binary/Components/SharedGasPressurePumpComponent.cs +++ b/Content.Shared/Atmos/Piping/Binary/Components/SharedGasPressurePumpComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Atmos.Piping.Binary.Components; diff --git a/Content.Shared/Atmos/Piping/Binary/Components/SharedGasPressureRegulatorComponent.cs b/Content.Shared/Atmos/Piping/Binary/Components/SharedGasPressureRegulatorComponent.cs index 74ca041d10..d5a208159e 100644 --- a/Content.Shared/Atmos/Piping/Binary/Components/SharedGasPressureRegulatorComponent.cs +++ b/Content.Shared/Atmos/Piping/Binary/Components/SharedGasPressureRegulatorComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Atmos.Piping.Binary.Components; diff --git a/Content.Shared/Atmos/Reactions/GasReactionEnums.cs b/Content.Shared/Atmos/Reactions/GasReactionEnums.cs index 73b8998d40..492a7dbc70 100644 --- a/Content.Shared/Atmos/Reactions/GasReactionEnums.cs +++ b/Content.Shared/Atmos/Reactions/GasReactionEnums.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Atmos.Reactions; +namespace Content.Shared.Atmos.Reactions; [Flags] public enum ReactionResult : byte diff --git a/Content.Shared/Atmos/Rotting/SharedRottingSystem.cs b/Content.Shared/Atmos/Rotting/SharedRottingSystem.cs index 230593d906..2645065557 100644 --- a/Content.Shared/Atmos/Rotting/SharedRottingSystem.cs +++ b/Content.Shared/Atmos/Rotting/SharedRottingSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Examine; +using Content.Shared.Examine; using Content.Shared.IdentityManagement; using Content.Shared.Mobs; using Content.Shared.Mobs.Components; diff --git a/Content.Shared/Atmos/Serialization/TileAtmosCollectionSerializer.cs b/Content.Shared/Atmos/Serialization/TileAtmosCollectionSerializer.cs index d99cb3d210..9e6823057c 100644 --- a/Content.Shared/Atmos/Serialization/TileAtmosCollectionSerializer.cs +++ b/Content.Shared/Atmos/Serialization/TileAtmosCollectionSerializer.cs @@ -1,4 +1,4 @@ -using System.Globalization; +using System.Globalization; using Robust.Shared.Serialization; using Robust.Shared.Serialization.Manager; using Robust.Shared.Serialization.Markdown; diff --git a/Content.Shared/Atmos/TileFireEvent.cs b/Content.Shared/Atmos/TileFireEvent.cs index f0045f58fd..bef7fb8bc8 100644 --- a/Content.Shared/Atmos/TileFireEvent.cs +++ b/Content.Shared/Atmos/TileFireEvent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Atmos; +namespace Content.Shared.Atmos; /// /// Event raised on an entity when it is standing on a tile that's on fire. diff --git a/Content.Shared/Audio/SharedGlobalSoundSystem.cs b/Content.Shared/Audio/SharedGlobalSoundSystem.cs index b2ed5dc90d..0f0331535e 100644 --- a/Content.Shared/Audio/SharedGlobalSoundSystem.cs +++ b/Content.Shared/Audio/SharedGlobalSoundSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.CCVar; +using Content.Shared.CCVar; using Robust.Shared.Audio; using Robust.Shared.Serialization; namespace Content.Shared.Audio; diff --git a/Content.Shared/Audio/SoundWhileAliveComponent.cs b/Content.Shared/Audio/SoundWhileAliveComponent.cs index 977d9372ce..1bd3ee2c71 100644 --- a/Content.Shared/Audio/SoundWhileAliveComponent.cs +++ b/Content.Shared/Audio/SoundWhileAliveComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Sound.Components; +using Content.Shared.Sound.Components; using Robust.Shared.GameStates; namespace Content.Shared.Audio; diff --git a/Content.Shared/Beam/Components/BeamComponent.cs b/Content.Shared/Beam/Components/BeamComponent.cs index 4916d4db30..74554c4b89 100644 --- a/Content.Shared/Beam/Components/BeamComponent.cs +++ b/Content.Shared/Beam/Components/BeamComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Audio; +using Robust.Shared.Audio; using Robust.Shared.GameStates; using Robust.Shared.Serialization; diff --git a/Content.Shared/Beam/SharedBeamSystem.cs b/Content.Shared/Beam/SharedBeamSystem.cs index 1127982cbb..5d6471bb4d 100644 --- a/Content.Shared/Beam/SharedBeamSystem.cs +++ b/Content.Shared/Beam/SharedBeamSystem.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Beam; +namespace Content.Shared.Beam; public abstract class SharedBeamSystem : EntitySystem { diff --git a/Content.Shared/Beeper/BeeperEvents.cs b/Content.Shared/Beeper/BeeperEvents.cs index 7f08902cdb..dc8a6e4026 100644 --- a/Content.Shared/Beeper/BeeperEvents.cs +++ b/Content.Shared/Beeper/BeeperEvents.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Beeper; +namespace Content.Shared.Beeper; [ByRefEvent] public record struct BeepPlayedEvent(bool Muted); diff --git a/Content.Shared/Beeper/Components/BeeperComponent.cs b/Content.Shared/Beeper/Components/BeeperComponent.cs index f6efbb10f3..9cfb10a2db 100644 --- a/Content.Shared/Beeper/Components/BeeperComponent.cs +++ b/Content.Shared/Beeper/Components/BeeperComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Beeper.Systems; +using Content.Shared.Beeper.Systems; using Content.Shared.FixedPoint; using Content.Shared.ProximityDetection.Systems; using Robust.Shared.Audio; diff --git a/Content.Shared/Beeper/Components/ProximityBeeperComponent.cs b/Content.Shared/Beeper/Components/ProximityBeeperComponent.cs index f439d6c9c2..49efa6b6cf 100644 --- a/Content.Shared/Beeper/Components/ProximityBeeperComponent.cs +++ b/Content.Shared/Beeper/Components/ProximityBeeperComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Beeper.Components; diff --git a/Content.Shared/Beeper/Systems/BeeperSystem.cs b/Content.Shared/Beeper/Systems/BeeperSystem.cs index f97e097196..ec8e151081 100644 --- a/Content.Shared/Beeper/Systems/BeeperSystem.cs +++ b/Content.Shared/Beeper/Systems/BeeperSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Beeper.Components; +using Content.Shared.Beeper.Components; using Content.Shared.FixedPoint; using Content.Shared.Item.ItemToggle; using Content.Shared.Item.ItemToggle.Components; diff --git a/Content.Shared/Beeper/Systems/ProximityBeeperSystem.cs b/Content.Shared/Beeper/Systems/ProximityBeeperSystem.cs index db04accd21..dbae3949c0 100644 --- a/Content.Shared/Beeper/Systems/ProximityBeeperSystem.cs +++ b/Content.Shared/Beeper/Systems/ProximityBeeperSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Beeper.Components; +using Content.Shared.Beeper.Components; using Content.Shared.Item.ItemToggle; using Content.Shared.Pinpointer; using Content.Shared.ProximityDetection; diff --git a/Content.Shared/Bible/SummonActionEvent.cs b/Content.Shared/Bible/SummonActionEvent.cs index d20fe7040c..5fc878306c 100644 --- a/Content.Shared/Bible/SummonActionEvent.cs +++ b/Content.Shared/Bible/SummonActionEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Actions; +using Content.Shared.Actions; namespace Content.Shared.Bible; diff --git a/Content.Shared/Blocking/BlockingSystem.cs b/Content.Shared/Blocking/BlockingSystem.cs index 4b3b9946da..25e603d720 100644 --- a/Content.Shared/Blocking/BlockingSystem.cs +++ b/Content.Shared/Blocking/BlockingSystem.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Shared.Actions; using Content.Shared.Blocking.Components; using Content.Shared.Damage; diff --git a/Content.Shared/Blocking/Components/BlockingUserComponent.cs b/Content.Shared/Blocking/Components/BlockingUserComponent.cs index ed26f685aa..3301dffffa 100644 --- a/Content.Shared/Blocking/Components/BlockingUserComponent.cs +++ b/Content.Shared/Blocking/Components/BlockingUserComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; using Robust.Shared.Physics; namespace Content.Shared.Blocking.Components; diff --git a/Content.Shared/Body/Components/BrainComponent.cs b/Content.Shared/Body/Components/BrainComponent.cs index be3c3ecbe5..1f8b23e7dc 100644 --- a/Content.Shared/Body/Components/BrainComponent.cs +++ b/Content.Shared/Body/Components/BrainComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Body.Systems; +using Content.Shared.Body.Systems; namespace Content.Shared.Body.Components; diff --git a/Content.Shared/Botany/ProduceVisuals.cs b/Content.Shared/Botany/ProduceVisuals.cs index dd3bd2e746..a20adc99f1 100644 --- a/Content.Shared/Botany/ProduceVisuals.cs +++ b/Content.Shared/Botany/ProduceVisuals.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Botany; diff --git a/Content.Shared/Bql/ToolshedVisualizeEuiState.cs b/Content.Shared/Bql/ToolshedVisualizeEuiState.cs index 64595f6ecf..2003d1c3f9 100644 --- a/Content.Shared/Bql/ToolshedVisualizeEuiState.cs +++ b/Content.Shared/Bql/ToolshedVisualizeEuiState.cs @@ -1,4 +1,4 @@ -using Content.Shared.Eui; +using Content.Shared.Eui; using Robust.Shared.Serialization; namespace Content.Shared.Bql; diff --git a/Content.Shared/CCVar/CCVars.Accessibility.cs b/Content.Shared/CCVar/CCVars.Accessibility.cs index 5d53d265c3..bb528e5028 100644 --- a/Content.Shared/CCVar/CCVars.Accessibility.cs +++ b/Content.Shared/CCVar/CCVars.Accessibility.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Admin.Logs.cs b/Content.Shared/CCVar/CCVars.Admin.Logs.cs index f760f3418f..84f1a77e58 100644 --- a/Content.Shared/CCVar/CCVars.Admin.Logs.cs +++ b/Content.Shared/CCVar/CCVars.Admin.Logs.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Admin.Rules.cs b/Content.Shared/CCVar/CCVars.Admin.Rules.cs index 7385104364..492a78de5b 100644 --- a/Content.Shared/CCVar/CCVars.Admin.Rules.cs +++ b/Content.Shared/CCVar/CCVars.Admin.Rules.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Admin.cs b/Content.Shared/CCVar/CCVars.Admin.cs index e0f7fe9cc5..69c7eec5ca 100644 --- a/Content.Shared/CCVar/CCVars.Admin.cs +++ b/Content.Shared/CCVar/CCVars.Admin.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; using Content.Shared.Administration; using Content.Shared.CCVar.CVarAccess; diff --git a/Content.Shared/CCVar/CCVars.Atmos.cs b/Content.Shared/CCVar/CCVars.Atmos.cs index eccee01151..1a3b067664 100644 --- a/Content.Shared/CCVar/CCVars.Atmos.cs +++ b/Content.Shared/CCVar/CCVars.Atmos.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Chat.Admin.cs b/Content.Shared/CCVar/CCVars.Chat.Admin.cs index 808d2c91d8..854cff2cb8 100644 --- a/Content.Shared/CCVar/CCVars.Chat.Admin.cs +++ b/Content.Shared/CCVar/CCVars.Chat.Admin.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Chat.Dead.cs b/Content.Shared/CCVar/CCVars.Chat.Dead.cs index f9618d793b..92db804dc9 100644 --- a/Content.Shared/CCVar/CCVars.Chat.Dead.cs +++ b/Content.Shared/CCVar/CCVars.Chat.Dead.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Chat.Looc.cs b/Content.Shared/CCVar/CCVars.Chat.Looc.cs index 84ee2c2807..d924dd6d7c 100644 --- a/Content.Shared/CCVar/CCVars.Chat.Looc.cs +++ b/Content.Shared/CCVar/CCVars.Chat.Looc.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Chat.Ooc.cs b/Content.Shared/CCVar/CCVars.Chat.Ooc.cs index e4617fc470..e53fcc3921 100644 --- a/Content.Shared/CCVar/CCVars.Chat.Ooc.cs +++ b/Content.Shared/CCVar/CCVars.Chat.Ooc.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Chat.cs b/Content.Shared/CCVar/CCVars.Chat.cs index b88e829d4d..ef4589f9b3 100644 --- a/Content.Shared/CCVar/CCVars.Chat.cs +++ b/Content.Shared/CCVar/CCVars.Chat.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Config.cs b/Content.Shared/CCVar/CCVars.Config.cs index 4e11f09ee7..3e8157dd0c 100644 --- a/Content.Shared/CCVar/CCVars.Config.cs +++ b/Content.Shared/CCVar/CCVars.Config.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Console.cs b/Content.Shared/CCVar/CCVars.Console.cs index e670b9f836..d909d1ae25 100644 --- a/Content.Shared/CCVar/CCVars.Console.cs +++ b/Content.Shared/CCVar/CCVars.Console.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Crewmanifest.cs b/Content.Shared/CCVar/CCVars.Crewmanifest.cs index d6251886b9..43289cc426 100644 --- a/Content.Shared/CCVar/CCVars.Crewmanifest.cs +++ b/Content.Shared/CCVar/CCVars.Crewmanifest.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Database.cs b/Content.Shared/CCVar/CCVars.Database.cs index c6deb73339..65cdc7dd9c 100644 --- a/Content.Shared/CCVar/CCVars.Database.cs +++ b/Content.Shared/CCVar/CCVars.Database.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Debug.cs b/Content.Shared/CCVar/CCVars.Debug.cs index a95acc4dac..b7c47f1950 100644 --- a/Content.Shared/CCVar/CCVars.Debug.cs +++ b/Content.Shared/CCVar/CCVars.Debug.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Discord.cs b/Content.Shared/CCVar/CCVars.Discord.cs index 324503887d..b77604557a 100644 --- a/Content.Shared/CCVar/CCVars.Discord.cs +++ b/Content.Shared/CCVar/CCVars.Discord.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Events.cs b/Content.Shared/CCVar/CCVars.Events.cs index c1be29a023..9f7ebeca58 100644 --- a/Content.Shared/CCVar/CCVars.Events.cs +++ b/Content.Shared/CCVar/CCVars.Events.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration; +using Content.Shared.Administration; using Content.Shared.CCVar.CVarAccess; using Robust.Shared.Configuration; diff --git a/Content.Shared/CCVar/CCVars.Explosion.cs b/Content.Shared/CCVar/CCVars.Explosion.cs index 51d93456b7..8582765383 100644 --- a/Content.Shared/CCVar/CCVars.Explosion.cs +++ b/Content.Shared/CCVar/CCVars.Explosion.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Game.Infolinks.cs b/Content.Shared/CCVar/CCVars.Game.Infolinks.cs index 5544953a0d..74c930cda8 100644 --- a/Content.Shared/CCVar/CCVars.Game.Infolinks.cs +++ b/Content.Shared/CCVar/CCVars.Game.Infolinks.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Ghost.cs b/Content.Shared/CCVar/CCVars.Ghost.cs index 39e7a3c491..1b645f5766 100644 --- a/Content.Shared/CCVar/CCVars.Ghost.cs +++ b/Content.Shared/CCVar/CCVars.Ghost.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Hud.cs b/Content.Shared/CCVar/CCVars.Hud.cs index c435f07cbe..08202d1c1b 100644 --- a/Content.Shared/CCVar/CCVars.Hud.cs +++ b/Content.Shared/CCVar/CCVars.Hud.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Ic.cs b/Content.Shared/CCVar/CCVars.Ic.cs index a075bb0144..422cb9878e 100644 --- a/Content.Shared/CCVar/CCVars.Ic.cs +++ b/Content.Shared/CCVar/CCVars.Ic.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Interactions.cs b/Content.Shared/CCVar/CCVars.Interactions.cs index 401fabfa29..452a7a02aa 100644 --- a/Content.Shared/CCVar/CCVars.Interactions.cs +++ b/Content.Shared/CCVar/CCVars.Interactions.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Interface.cs b/Content.Shared/CCVar/CCVars.Interface.cs index 7c7e3e3cd3..1deb3cf43c 100644 --- a/Content.Shared/CCVar/CCVars.Interface.cs +++ b/Content.Shared/CCVar/CCVars.Interface.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Mapping.cs b/Content.Shared/CCVar/CCVars.Mapping.cs index 06cd2870ba..369e48fac0 100644 --- a/Content.Shared/CCVar/CCVars.Mapping.cs +++ b/Content.Shared/CCVar/CCVars.Mapping.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Midi.cs b/Content.Shared/CCVar/CCVars.Midi.cs index 806bcc2b52..d9cb18dc35 100644 --- a/Content.Shared/CCVar/CCVars.Midi.cs +++ b/Content.Shared/CCVar/CCVars.Midi.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Misc.cs b/Content.Shared/CCVar/CCVars.Misc.cs index fe45b3eb29..1d9ed6b885 100644 --- a/Content.Shared/CCVar/CCVars.Misc.cs +++ b/Content.Shared/CCVar/CCVars.Misc.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; using Content.Shared.Administration; using Content.Shared.CCVar.CVarAccess; diff --git a/Content.Shared/CCVar/CCVars.NPC.cs b/Content.Shared/CCVar/CCVars.NPC.cs index f0d5520195..6df32900d8 100644 --- a/Content.Shared/CCVar/CCVars.NPC.cs +++ b/Content.Shared/CCVar/CCVars.NPC.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Parallax.cs b/Content.Shared/CCVar/CCVars.Parallax.cs index 9b19c8f494..1850ba627f 100644 --- a/Content.Shared/CCVar/CCVars.Parallax.cs +++ b/Content.Shared/CCVar/CCVars.Parallax.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Physics.cs b/Content.Shared/CCVar/CCVars.Physics.cs index 88aa479ec1..8575d44669 100644 --- a/Content.Shared/CCVar/CCVars.Physics.cs +++ b/Content.Shared/CCVar/CCVars.Physics.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Playtest.cs b/Content.Shared/CCVar/CCVars.Playtest.cs index ea403ca75e..03796a495c 100644 --- a/Content.Shared/CCVar/CCVars.Playtest.cs +++ b/Content.Shared/CCVar/CCVars.Playtest.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration; +using Content.Shared.Administration; using Content.Shared.CCVar.CVarAccess; using Content.Shared.Roles; using Robust.Shared.Configuration; diff --git a/Content.Shared/CCVar/CCVars.Radiation.cs b/Content.Shared/CCVar/CCVars.Radiation.cs index dfcce15b2f..cabc8fd409 100644 --- a/Content.Shared/CCVar/CCVars.Radiation.cs +++ b/Content.Shared/CCVar/CCVars.Radiation.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Replays.cs b/Content.Shared/CCVar/CCVars.Replays.cs index 64f47e8ad8..d7b5b9ee9d 100644 --- a/Content.Shared/CCVar/CCVars.Replays.cs +++ b/Content.Shared/CCVar/CCVars.Replays.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Salvage.cs b/Content.Shared/CCVar/CCVars.Salvage.cs index ddc332786b..cd9b971e6b 100644 --- a/Content.Shared/CCVar/CCVars.Salvage.cs +++ b/Content.Shared/CCVar/CCVars.Salvage.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Server.cs b/Content.Shared/CCVar/CCVars.Server.cs index aad6d0a808..f8b47cdfe0 100644 --- a/Content.Shared/CCVar/CCVars.Server.cs +++ b/Content.Shared/CCVar/CCVars.Server.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Shuttle.cs b/Content.Shared/CCVar/CCVars.Shuttle.cs index e975a9484f..309572bb6c 100644 --- a/Content.Shared/CCVar/CCVars.Shuttle.cs +++ b/Content.Shared/CCVar/CCVars.Shuttle.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration; +using Content.Shared.Administration; using Content.Shared.CCVar.CVarAccess; using Robust.Shared.Configuration; diff --git a/Content.Shared/CCVar/CCVars.Tips.cs b/Content.Shared/CCVar/CCVars.Tips.cs index 61e6342061..deb7f64610 100644 --- a/Content.Shared/CCVar/CCVars.Tips.cs +++ b/Content.Shared/CCVar/CCVars.Tips.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Viewport.cs b/Content.Shared/CCVar/CCVars.Viewport.cs index 9b8057be51..f8fd328fa2 100644 --- a/Content.Shared/CCVar/CCVars.Viewport.cs +++ b/Content.Shared/CCVar/CCVars.Viewport.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Vote.cs b/Content.Shared/CCVar/CCVars.Vote.cs index deb860e03c..92ed7d7a01 100644 --- a/Content.Shared/CCVar/CCVars.Vote.cs +++ b/Content.Shared/CCVar/CCVars.Vote.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CCVars.Whitelist.cs b/Content.Shared/CCVar/CCVars.Whitelist.cs index 7a7a5206a1..28d9f270a3 100644 --- a/Content.Shared/CCVar/CCVars.Whitelist.cs +++ b/Content.Shared/CCVar/CCVars.Whitelist.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/CCVar/CVarAccess/CVarControl.cs b/Content.Shared/CCVar/CVarAccess/CVarControl.cs index 799738cf3d..c03773bc5b 100644 --- a/Content.Shared/CCVar/CVarAccess/CVarControl.cs +++ b/Content.Shared/CCVar/CVarAccess/CVarControl.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration; +using Content.Shared.Administration; using Robust.Shared.Reflection; namespace Content.Shared.CCVar.CVarAccess; diff --git a/Content.Shared/Cabinet/ItemCabinetSystem.cs b/Content.Shared/Cabinet/ItemCabinetSystem.cs index 02766427d8..1c40956005 100644 --- a/Content.Shared/Cabinet/ItemCabinetSystem.cs +++ b/Content.Shared/Cabinet/ItemCabinetSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Containers.ItemSlots; +using Content.Shared.Containers.ItemSlots; using Content.Shared.Interaction; using Content.Shared.Nutrition.Components; using Content.Shared.Nutrition.EntitySystems; diff --git a/Content.Shared/CardboardBox/Components/CardboardBoxComponent.cs b/Content.Shared/CardboardBox/Components/CardboardBoxComponent.cs index 79e65473a1..a26df53722 100644 --- a/Content.Shared/CardboardBox/Components/CardboardBoxComponent.cs +++ b/Content.Shared/CardboardBox/Components/CardboardBoxComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Audio; +using Robust.Shared.Audio; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; diff --git a/Content.Shared/Cargo/Prototypes/CargoBountyPrototype.cs b/Content.Shared/Cargo/Prototypes/CargoBountyPrototype.cs index 495ad14a9d..62253f7795 100644 --- a/Content.Shared/Cargo/Prototypes/CargoBountyPrototype.cs +++ b/Content.Shared/Cargo/Prototypes/CargoBountyPrototype.cs @@ -1,4 +1,4 @@ -using Content.Shared.Whitelist; +using Content.Shared.Whitelist; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; using Robust.Shared.Utility; diff --git a/Content.Shared/CartridgeLoader/CartridgeComponent.cs b/Content.Shared/CartridgeLoader/CartridgeComponent.cs index cd699f742e..be41528707 100644 --- a/Content.Shared/CartridgeLoader/CartridgeComponent.cs +++ b/Content.Shared/CartridgeLoader/CartridgeComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; using Robust.Shared.Serialization; using Robust.Shared.Utility; diff --git a/Content.Shared/CartridgeLoader/CartridgeLoaderComponent.cs b/Content.Shared/CartridgeLoader/CartridgeLoaderComponent.cs index 47f3b5bafc..39bf6c745b 100644 --- a/Content.Shared/CartridgeLoader/CartridgeLoaderComponent.cs +++ b/Content.Shared/CartridgeLoader/CartridgeLoaderComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Containers.ItemSlots; +using Content.Shared.Containers.ItemSlots; using Robust.Shared.GameStates; namespace Content.Shared.CartridgeLoader; diff --git a/Content.Shared/CartridgeLoader/CartridgeLoaderUiMessage.cs b/Content.Shared/CartridgeLoader/CartridgeLoaderUiMessage.cs index 18c5cf9f91..f618b87896 100644 --- a/Content.Shared/CartridgeLoader/CartridgeLoaderUiMessage.cs +++ b/Content.Shared/CartridgeLoader/CartridgeLoaderUiMessage.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.CartridgeLoader; diff --git a/Content.Shared/CartridgeLoader/CartridgeLoaderUiState.cs b/Content.Shared/CartridgeLoader/CartridgeLoaderUiState.cs index 0bc3f66a57..3a613c7be0 100644 --- a/Content.Shared/CartridgeLoader/CartridgeLoaderUiState.cs +++ b/Content.Shared/CartridgeLoader/CartridgeLoaderUiState.cs @@ -1,4 +1,4 @@ -using System.Collections.Immutable; +using System.Collections.Immutable; using Robust.Shared.Serialization; namespace Content.Shared.CartridgeLoader; diff --git a/Content.Shared/CartridgeLoader/CartridgeLoaderVisuals.cs b/Content.Shared/CartridgeLoader/CartridgeLoaderVisuals.cs index c973fb2994..bf06bce01a 100644 --- a/Content.Shared/CartridgeLoader/CartridgeLoaderVisuals.cs +++ b/Content.Shared/CartridgeLoader/CartridgeLoaderVisuals.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.CartridgeLoader; diff --git a/Content.Shared/CartridgeLoader/CartridgeUiMessage.cs b/Content.Shared/CartridgeLoader/CartridgeUiMessage.cs index 7d02a4944e..0d086fa4d4 100644 --- a/Content.Shared/CartridgeLoader/CartridgeUiMessage.cs +++ b/Content.Shared/CartridgeLoader/CartridgeUiMessage.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.CartridgeLoader; diff --git a/Content.Shared/CartridgeLoader/Cartridges/CrewManifestCartridgeComponent.cs b/Content.Shared/CartridgeLoader/Cartridges/CrewManifestCartridgeComponent.cs index ce3b4cf482..71de48ea1e 100644 --- a/Content.Shared/CartridgeLoader/Cartridges/CrewManifestCartridgeComponent.cs +++ b/Content.Shared/CartridgeLoader/Cartridges/CrewManifestCartridgeComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Server.CartridgeLoader.Cartridges; diff --git a/Content.Shared/CartridgeLoader/Cartridges/CrewManifestUiState.cs b/Content.Shared/CartridgeLoader/Cartridges/CrewManifestUiState.cs index 9eaca5a2d3..8feedc4ddb 100644 --- a/Content.Shared/CartridgeLoader/Cartridges/CrewManifestUiState.cs +++ b/Content.Shared/CartridgeLoader/Cartridges/CrewManifestUiState.cs @@ -1,4 +1,4 @@ -using Content.Shared.CrewManifest; +using Content.Shared.CrewManifest; using Robust.Shared.Serialization; namespace Content.Shared.CartridgeLoader.Cartridges; diff --git a/Content.Shared/CartridgeLoader/Cartridges/LogProbeUiState.cs b/Content.Shared/CartridgeLoader/Cartridges/LogProbeUiState.cs index b83967ec32..cb134146e3 100644 --- a/Content.Shared/CartridgeLoader/Cartridges/LogProbeUiState.cs +++ b/Content.Shared/CartridgeLoader/Cartridges/LogProbeUiState.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.CartridgeLoader.Cartridges; diff --git a/Content.Shared/CartridgeLoader/Cartridges/NetProbeCartridgeComponent.cs b/Content.Shared/CartridgeLoader/Cartridges/NetProbeCartridgeComponent.cs index a690309165..aa93b10a93 100644 --- a/Content.Shared/CartridgeLoader/Cartridges/NetProbeCartridgeComponent.cs +++ b/Content.Shared/CartridgeLoader/Cartridges/NetProbeCartridgeComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Audio; +using Robust.Shared.Audio; using Robust.Shared.GameStates; namespace Content.Shared.CartridgeLoader.Cartridges; diff --git a/Content.Shared/CartridgeLoader/Cartridges/NetProbeUiState.cs b/Content.Shared/CartridgeLoader/Cartridges/NetProbeUiState.cs index 04594a2139..041cc895be 100644 --- a/Content.Shared/CartridgeLoader/Cartridges/NetProbeUiState.cs +++ b/Content.Shared/CartridgeLoader/Cartridges/NetProbeUiState.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.CartridgeLoader.Cartridges; diff --git a/Content.Shared/CartridgeLoader/Cartridges/NotekeeperUiState.cs b/Content.Shared/CartridgeLoader/Cartridges/NotekeeperUiState.cs index 52c86936ec..8aaf022b7f 100644 --- a/Content.Shared/CartridgeLoader/Cartridges/NotekeeperUiState.cs +++ b/Content.Shared/CartridgeLoader/Cartridges/NotekeeperUiState.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.CartridgeLoader.Cartridges; diff --git a/Content.Shared/Changeling/ChangelingDevourEvents.cs b/Content.Shared/Changeling/ChangelingDevourEvents.cs index ba8d25f30c..9453a7111b 100644 --- a/Content.Shared/Changeling/ChangelingDevourEvents.cs +++ b/Content.Shared/Changeling/ChangelingDevourEvents.cs @@ -1,4 +1,4 @@ -using Content.Shared.Actions; +using Content.Shared.Actions; using Content.Shared.DoAfter; using Robust.Shared.Serialization; diff --git a/Content.Shared/Changeling/ChangelingTransformEvents.cs b/Content.Shared/Changeling/ChangelingTransformEvents.cs index 9a4ff4454e..feee82adeb 100644 --- a/Content.Shared/Changeling/ChangelingTransformEvents.cs +++ b/Content.Shared/Changeling/ChangelingTransformEvents.cs @@ -1,4 +1,4 @@ -using Content.Shared.Actions; +using Content.Shared.Actions; using Content.Shared.DoAfter; using Robust.Shared.Serialization; diff --git a/Content.Shared/Changeling/Components/ChangelingCloneableStatusEffectComponent.cs b/Content.Shared/Changeling/Components/ChangelingCloneableStatusEffectComponent.cs index f7b633cfe5..3d98940a55 100644 --- a/Content.Shared/Changeling/Components/ChangelingCloneableStatusEffectComponent.cs +++ b/Content.Shared/Changeling/Components/ChangelingCloneableStatusEffectComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Changeling.Components; diff --git a/Content.Shared/Changeling/Systems/ChangelingAbilitySystem.cs b/Content.Shared/Changeling/Systems/ChangelingAbilitySystem.cs index 3cdf1f3a34..f8c2251a13 100644 --- a/Content.Shared/Changeling/Systems/ChangelingAbilitySystem.cs +++ b/Content.Shared/Changeling/Systems/ChangelingAbilitySystem.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Shared.Actions; using Content.Shared.Atmos.Rotting; using Content.Shared.Changeling.Components; diff --git a/Content.Shared/Changeling/Systems/ChangelingMetabolismSystem.cs b/Content.Shared/Changeling/Systems/ChangelingMetabolismSystem.cs index 58bae88093..daddf34d95 100644 --- a/Content.Shared/Changeling/Systems/ChangelingMetabolismSystem.cs +++ b/Content.Shared/Changeling/Systems/ChangelingMetabolismSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Changeling.Components; +using Content.Shared.Changeling.Components; using Content.Shared.Metabolism; namespace Content.Shared.Changeling.Systems; diff --git a/Content.Shared/Changeling/Systems/ChangelingTransformSystem.UI.cs b/Content.Shared/Changeling/Systems/ChangelingTransformSystem.UI.cs index 50f5ceb547..752acad059 100644 --- a/Content.Shared/Changeling/Systems/ChangelingTransformSystem.UI.cs +++ b/Content.Shared/Changeling/Systems/ChangelingTransformSystem.UI.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Changeling.Systems; diff --git a/Content.Shared/Changeling/Systems/DestructionResistanceSystem.cs b/Content.Shared/Changeling/Systems/DestructionResistanceSystem.cs index f39fcb2dd0..1eafd99fd7 100644 --- a/Content.Shared/Changeling/Systems/DestructionResistanceSystem.cs +++ b/Content.Shared/Changeling/Systems/DestructionResistanceSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Changeling.Components; +using Content.Shared.Changeling.Components; using Content.Shared.Destructible; namespace Content.Shared.Changeling.Systems; diff --git a/Content.Shared/Changeling/Systems/RegenerativeStasisSystem.cs b/Content.Shared/Changeling/Systems/RegenerativeStasisSystem.cs index 5463b8b35c..fbe0ac7168 100644 --- a/Content.Shared/Changeling/Systems/RegenerativeStasisSystem.cs +++ b/Content.Shared/Changeling/Systems/RegenerativeStasisSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Actions; +using Content.Shared.Actions; using Content.Shared.Body.Components; using Content.Shared.Body.Systems; using Content.Shared.Changeling.Components; diff --git a/Content.Shared/Changeling/Systems/SharedChangelingIdentitySystem.cs b/Content.Shared/Changeling/Systems/SharedChangelingIdentitySystem.cs index 11662c8ac2..fbaf6da3f5 100644 --- a/Content.Shared/Changeling/Systems/SharedChangelingIdentitySystem.cs +++ b/Content.Shared/Changeling/Systems/SharedChangelingIdentitySystem.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using System.Linq; using Content.Shared.Changeling.Components; using Content.Shared.Cloning; diff --git a/Content.Shared/Chasm/ChasmComponent.cs b/Content.Shared/Chasm/ChasmComponent.cs index db8d73d7e2..2db7405817 100644 --- a/Content.Shared/Chasm/ChasmComponent.cs +++ b/Content.Shared/Chasm/ChasmComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Chat.Prototypes; +using Content.Shared.Chat.Prototypes; using Content.Shared.Whitelist; using Robust.Shared.Audio; using Robust.Shared.GameStates; diff --git a/Content.Shared/Chasm/ChasmFallingComponent.cs b/Content.Shared/Chasm/ChasmFallingComponent.cs index eaa8ab7129..5df398c224 100644 --- a/Content.Shared/Chasm/ChasmFallingComponent.cs +++ b/Content.Shared/Chasm/ChasmFallingComponent.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Robust.Shared.GameStates; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; diff --git a/Content.Shared/Chasm/ChasmSystem.cs b/Content.Shared/Chasm/ChasmSystem.cs index 03c8e8c0e9..a7eab7d975 100644 --- a/Content.Shared/Chasm/ChasmSystem.cs +++ b/Content.Shared/Chasm/ChasmSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.ActionBlocker; +using Content.Shared.ActionBlocker; using Content.Shared.Chat; using Content.Shared.Movement.Events; using Content.Shared.StepTrigger.Systems; diff --git a/Content.Shared/Chat/ChatChannelExtensions.cs b/Content.Shared/Chat/ChatChannelExtensions.cs index 9b707a53a0..bc20351870 100644 --- a/Content.Shared/Chat/ChatChannelExtensions.cs +++ b/Content.Shared/Chat/ChatChannelExtensions.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Chat; +namespace Content.Shared.Chat; public static class ChatChannelExtensions { diff --git a/Content.Shared/Chat/ChatSelectChannel.cs b/Content.Shared/Chat/ChatSelectChannel.cs index c18bb9b8ee..59e82ed9de 100644 --- a/Content.Shared/Chat/ChatSelectChannel.cs +++ b/Content.Shared/Chat/ChatSelectChannel.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Chat +namespace Content.Shared.Chat { /// /// Chat channels that the player can select in the chat box. diff --git a/Content.Shared/Chat/MsgDeleteChatMessagesBy.cs b/Content.Shared/Chat/MsgDeleteChatMessagesBy.cs index 55d27518d8..1f73c65f6c 100644 --- a/Content.Shared/Chat/MsgDeleteChatMessagesBy.cs +++ b/Content.Shared/Chat/MsgDeleteChatMessagesBy.cs @@ -1,4 +1,4 @@ -using Lidgren.Network; +using Lidgren.Network; using Robust.Shared.Network; using Robust.Shared.Serialization; diff --git a/Content.Shared/Chat/TypingIndicator/TypingIndicatorClothingComponent.cs b/Content.Shared/Chat/TypingIndicator/TypingIndicatorClothingComponent.cs index 4993e912e9..d3889a2efa 100644 --- a/Content.Shared/Chat/TypingIndicator/TypingIndicatorClothingComponent.cs +++ b/Content.Shared/Chat/TypingIndicator/TypingIndicatorClothingComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; diff --git a/Content.Shared/Chat/TypingIndicator/TypingIndicatorComponent.cs b/Content.Shared/Chat/TypingIndicator/TypingIndicatorComponent.cs index 7861da4546..0239d85082 100644 --- a/Content.Shared/Chat/TypingIndicator/TypingIndicatorComponent.cs +++ b/Content.Shared/Chat/TypingIndicator/TypingIndicatorComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; using Robust.Shared.Prototypes; namespace Content.Shared.Chat.TypingIndicator; diff --git a/Content.Shared/Chat/TypingIndicator/TypingIndicatorPrototype.cs b/Content.Shared/Chat/TypingIndicator/TypingIndicatorPrototype.cs index 970fed969a..8de84b9684 100644 --- a/Content.Shared/Chat/TypingIndicator/TypingIndicatorPrototype.cs +++ b/Content.Shared/Chat/TypingIndicator/TypingIndicatorPrototype.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Robust.Shared.Prototypes; using Robust.Shared.Utility; diff --git a/Content.Shared/Chat/TypingIndicator/TypingIndicatorVisuals.cs b/Content.Shared/Chat/TypingIndicator/TypingIndicatorVisuals.cs index b9ed15fe9a..f4c8848235 100644 --- a/Content.Shared/Chat/TypingIndicator/TypingIndicatorVisuals.cs +++ b/Content.Shared/Chat/TypingIndicator/TypingIndicatorVisuals.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Chat.TypingIndicator; diff --git a/Content.Shared/Chat/V2/Moderation/ChatCensor.cs b/Content.Shared/Chat/V2/Moderation/ChatCensor.cs index b5d6aa0344..e1fdc20a26 100644 --- a/Content.Shared/Chat/V2/Moderation/ChatCensor.cs +++ b/Content.Shared/Chat/V2/Moderation/ChatCensor.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; namespace Content.Shared.Chat.V2.Moderation; diff --git a/Content.Shared/Chat/V2/Moderation/RegexCensor.cs b/Content.Shared/Chat/V2/Moderation/RegexCensor.cs index cd47bf0c33..08ce8592f0 100644 --- a/Content.Shared/Chat/V2/Moderation/RegexCensor.cs +++ b/Content.Shared/Chat/V2/Moderation/RegexCensor.cs @@ -1,4 +1,4 @@ -using System.Text.RegularExpressions; +using System.Text.RegularExpressions; namespace Content.Shared.Chat.V2.Moderation; diff --git a/Content.Shared/Chat/V2/Moderation/SimpleCensor.cs b/Content.Shared/Chat/V2/Moderation/SimpleCensor.cs index a6bb70dd9f..79a113a404 100644 --- a/Content.Shared/Chat/V2/Moderation/SimpleCensor.cs +++ b/Content.Shared/Chat/V2/Moderation/SimpleCensor.cs @@ -1,4 +1,4 @@ -using System.Collections.Frozen; +using System.Collections.Frozen; using System.Linq; using System.Text; using System.Text.Unicode; diff --git a/Content.Shared/Chat/V2/Repository/Types.cs b/Content.Shared/Chat/V2/Repository/Types.cs index 59acb849d4..541e767bc3 100644 --- a/Content.Shared/Chat/V2/Repository/Types.cs +++ b/Content.Shared/Chat/V2/Repository/Types.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using System.Runtime.InteropServices; using Robust.Shared.Network; using Robust.Shared.Serialization; diff --git a/Content.Shared/Chemistry/Components/ReagentTankComponent.cs b/Content.Shared/Chemistry/Components/ReagentTankComponent.cs index 3aa1756cf9..618cd4e6a2 100644 --- a/Content.Shared/Chemistry/Components/ReagentTankComponent.cs +++ b/Content.Shared/Chemistry/Components/ReagentTankComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.FixedPoint; +using Content.Shared.FixedPoint; using Robust.Shared.GameStates; using Robust.Shared.Serialization; diff --git a/Content.Shared/Chemistry/Components/SolutionManager/DrawableSolutionComponent.cs b/Content.Shared/Chemistry/Components/SolutionManager/DrawableSolutionComponent.cs index a949ae72e2..d1c85a509a 100644 --- a/Content.Shared/Chemistry/Components/SolutionManager/DrawableSolutionComponent.cs +++ b/Content.Shared/Chemistry/Components/SolutionManager/DrawableSolutionComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Chemistry.Components.SolutionManager; +namespace Content.Shared.Chemistry.Components.SolutionManager; /// /// Denotes the solution that can removed be with syringes. diff --git a/Content.Shared/Chemistry/Components/SolutionManager/ExaminableSolutionComponent.cs b/Content.Shared/Chemistry/Components/SolutionManager/ExaminableSolutionComponent.cs index 913622e19d..8738314794 100644 --- a/Content.Shared/Chemistry/Components/SolutionManager/ExaminableSolutionComponent.cs +++ b/Content.Shared/Chemistry/Components/SolutionManager/ExaminableSolutionComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Nutrition.Components; +using Content.Shared.Nutrition.Components; using Robust.Shared.Serialization; namespace Content.Shared.Chemistry.Components.SolutionManager; diff --git a/Content.Shared/Chemistry/Components/SolutionManager/InjectableSolutionComponent.cs b/Content.Shared/Chemistry/Components/SolutionManager/InjectableSolutionComponent.cs index 97266764dc..2e2dea0dfb 100644 --- a/Content.Shared/Chemistry/Components/SolutionManager/InjectableSolutionComponent.cs +++ b/Content.Shared/Chemistry/Components/SolutionManager/InjectableSolutionComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Chemistry.Components.SolutionManager; +namespace Content.Shared.Chemistry.Components.SolutionManager; /// /// Denotes a solution which can be added with syringes. diff --git a/Content.Shared/Chemistry/Components/SolutionManager/SolutionContainerManagerComponent.cs b/Content.Shared/Chemistry/Components/SolutionManager/SolutionContainerManagerComponent.cs index 26e6346c8a..2b75c5bf9b 100644 --- a/Content.Shared/Chemistry/Components/SolutionManager/SolutionContainerManagerComponent.cs +++ b/Content.Shared/Chemistry/Components/SolutionManager/SolutionContainerManagerComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Chemistry.EntitySystems; +using Content.Shared.Chemistry.EntitySystems; using Robust.Shared.Containers; using Robust.Shared.GameStates; diff --git a/Content.Shared/Chemistry/Components/SolutionManager/SolutionManagerComponent.cs b/Content.Shared/Chemistry/Components/SolutionManager/SolutionManagerComponent.cs index 176bd9e2db..7dffddecef 100644 --- a/Content.Shared/Chemistry/Components/SolutionManager/SolutionManagerComponent.cs +++ b/Content.Shared/Chemistry/Components/SolutionManager/SolutionManagerComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Chemistry.EntitySystems; +using Content.Shared.Chemistry.EntitySystems; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; diff --git a/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerSystem.Compatibility.cs b/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerSystem.Compatibility.cs index 4ae9aba173..b23ef95919 100644 --- a/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerSystem.Compatibility.cs +++ b/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerSystem.Compatibility.cs @@ -1,4 +1,4 @@ -using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.Components.SolutionManager; using Robust.Shared.Containers; namespace Content.Shared.Chemistry.EntitySystems; diff --git a/Content.Shared/Chemistry/Events/InjectorEvents.cs b/Content.Shared/Chemistry/Events/InjectorEvents.cs index ce4ccb88f1..78694b5ba6 100644 --- a/Content.Shared/Chemistry/Events/InjectorEvents.cs +++ b/Content.Shared/Chemistry/Events/InjectorEvents.cs @@ -1,4 +1,4 @@ -using Content.Shared.DoAfter; +using Content.Shared.DoAfter; using Content.Shared.Inventory; using Robust.Shared.Serialization; diff --git a/Content.Shared/Chemistry/Prototypes/InjectorModePrototype.cs b/Content.Shared/Chemistry/Prototypes/InjectorModePrototype.cs index 0255d8798f..63176643e2 100644 --- a/Content.Shared/Chemistry/Prototypes/InjectorModePrototype.cs +++ b/Content.Shared/Chemistry/Prototypes/InjectorModePrototype.cs @@ -1,4 +1,4 @@ -using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.Components; using Content.Shared.FixedPoint; using Robust.Shared.Audio; using Robust.Shared.Prototypes; diff --git a/Content.Shared/Chemistry/Reaction/ReactiveGroupPrototype.cs b/Content.Shared/Chemistry/Reaction/ReactiveGroupPrototype.cs index 37d9b0decd..bdfe7b43b4 100644 --- a/Content.Shared/Chemistry/Reaction/ReactiveGroupPrototype.cs +++ b/Content.Shared/Chemistry/Reaction/ReactiveGroupPrototype.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; namespace Content.Shared.Chemistry.Reaction; diff --git a/Content.Shared/Chemistry/Reagent/ReagentData.cs b/Content.Shared/Chemistry/Reagent/ReagentData.cs index a4a77f552e..2953ba3bd7 100644 --- a/Content.Shared/Chemistry/Reagent/ReagentData.cs +++ b/Content.Shared/Chemistry/Reagent/ReagentData.cs @@ -1,4 +1,4 @@ -using Content.Shared.FixedPoint; +using Content.Shared.FixedPoint; using Robust.Shared.Serialization; namespace Content.Shared.Chemistry.Reagent; diff --git a/Content.Shared/Chemistry/Reagent/ReagentQuantity.cs b/Content.Shared/Chemistry/Reagent/ReagentQuantity.cs index 22c1a3e0e5..f0f78e17b8 100644 --- a/Content.Shared/Chemistry/Reagent/ReagentQuantity.cs +++ b/Content.Shared/Chemistry/Reagent/ReagentQuantity.cs @@ -1,4 +1,4 @@ -using Content.Shared.FixedPoint; +using Content.Shared.FixedPoint; using Robust.Shared.Serialization; namespace Content.Shared.Chemistry.Reagent; diff --git a/Content.Shared/Chemistry/SharedChemistryGuideDataSystem.cs b/Content.Shared/Chemistry/SharedChemistryGuideDataSystem.cs index c92aa3552d..20326e34e4 100644 --- a/Content.Shared/Chemistry/SharedChemistryGuideDataSystem.cs +++ b/Content.Shared/Chemistry/SharedChemistryGuideDataSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Chemistry.Reagent; +using Content.Shared.Chemistry.Reagent; using Robust.Shared.Serialization; namespace Content.Shared.Chemistry; diff --git a/Content.Shared/Chemistry/SharedTransferAmount.cs b/Content.Shared/Chemistry/SharedTransferAmount.cs index 9b47e2f0e6..0c24ec61f7 100644 --- a/Content.Shared/Chemistry/SharedTransferAmount.cs +++ b/Content.Shared/Chemistry/SharedTransferAmount.cs @@ -1,4 +1,4 @@ -using Content.Shared.FixedPoint; +using Content.Shared.FixedPoint; using Robust.Shared.Serialization; namespace Content.Shared.Chemistry diff --git a/Content.Shared/Cloning/AcceptCloningEuiMessage.cs b/Content.Shared/Cloning/AcceptCloningEuiMessage.cs index cbd82cc91f..9b73735979 100644 --- a/Content.Shared/Cloning/AcceptCloningEuiMessage.cs +++ b/Content.Shared/Cloning/AcceptCloningEuiMessage.cs @@ -1,4 +1,4 @@ -using Content.Shared.Eui; +using Content.Shared.Eui; using Robust.Shared.Serialization; namespace Content.Shared.Cloning diff --git a/Content.Shared/Cloning/SharedCloningConsole.cs b/Content.Shared/Cloning/SharedCloningConsole.cs index 55a41f97d3..35d45e703f 100644 --- a/Content.Shared/Cloning/SharedCloningConsole.cs +++ b/Content.Shared/Cloning/SharedCloningConsole.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Cloning.CloningConsole { diff --git a/Content.Shared/Clothing/ClothingSpeedModifierComponent.cs b/Content.Shared/Clothing/ClothingSpeedModifierComponent.cs index 37f0a83eaa..b44e2ba70b 100644 --- a/Content.Shared/Clothing/ClothingSpeedModifierComponent.cs +++ b/Content.Shared/Clothing/ClothingSpeedModifierComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; using Robust.Shared.Serialization; namespace Content.Shared.Clothing; diff --git a/Content.Shared/Clothing/Events/ToggleMaskDoAfterEvent.cs b/Content.Shared/Clothing/Events/ToggleMaskDoAfterEvent.cs index 6657dc3122..3fa4c0993c 100644 --- a/Content.Shared/Clothing/Events/ToggleMaskDoAfterEvent.cs +++ b/Content.Shared/Clothing/Events/ToggleMaskDoAfterEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.DoAfter; +using Content.Shared.DoAfter; using Robust.Shared.Serialization; namespace Content.Shared.Clothing.Events; diff --git a/Content.Shared/Codewords/CodewordComponent.cs b/Content.Shared/Codewords/CodewordComponent.cs index 1116a79622..e9e8104e77 100644 --- a/Content.Shared/Codewords/CodewordComponent.cs +++ b/Content.Shared/Codewords/CodewordComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Codewords; +namespace Content.Shared.Codewords; /// /// Container for generated codewords. diff --git a/Content.Shared/Codewords/CodewordFactionPrototype.cs b/Content.Shared/Codewords/CodewordFactionPrototype.cs index af5841890b..710625be4c 100644 --- a/Content.Shared/Codewords/CodewordFactionPrototype.cs +++ b/Content.Shared/Codewords/CodewordFactionPrototype.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; namespace Content.Shared.Codewords; diff --git a/Content.Shared/Codewords/CodewordGeneratorPrototype.cs b/Content.Shared/Codewords/CodewordGeneratorPrototype.cs index 82a8a09cf2..268dafac7e 100644 --- a/Content.Shared/Codewords/CodewordGeneratorPrototype.cs +++ b/Content.Shared/Codewords/CodewordGeneratorPrototype.cs @@ -1,4 +1,4 @@ -using Content.Shared.Dataset; +using Content.Shared.Dataset; using Robust.Shared.Prototypes; namespace Content.Shared.Codewords; diff --git a/Content.Shared/Codewords/CodewordManagerComponent.cs b/Content.Shared/Codewords/CodewordManagerComponent.cs index 089065f598..bc4fbc87f6 100644 --- a/Content.Shared/Codewords/CodewordManagerComponent.cs +++ b/Content.Shared/Codewords/CodewordManagerComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; namespace Content.Shared.Codewords; diff --git a/Content.Shared/Codewords/CodewordSystem.cs b/Content.Shared/Codewords/CodewordSystem.cs index 6a33dff522..5cdfa17963 100644 --- a/Content.Shared/Codewords/CodewordSystem.cs +++ b/Content.Shared/Codewords/CodewordSystem.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Shared.Administration.Logs; using Content.Shared.Database; using Content.Shared.GameTicking.Events; diff --git a/Content.Shared/CombatMode/Pacification/PacifismDangerousAttackComponent.cs b/Content.Shared/CombatMode/Pacification/PacifismDangerousAttackComponent.cs index df79d46d76..4079ec6e07 100644 --- a/Content.Shared/CombatMode/Pacification/PacifismDangerousAttackComponent.cs +++ b/Content.Shared/CombatMode/Pacification/PacifismDangerousAttackComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.CombatMode.Pacification; diff --git a/Content.Shared/Commands/CommandHelper.cs b/Content.Shared/Commands/CommandHelper.cs index 443efb7d1e..3a77e86a01 100644 --- a/Content.Shared/Commands/CommandHelper.cs +++ b/Content.Shared/Commands/CommandHelper.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Console; +using Robust.Shared.Console; namespace Content.Shared.Commands; diff --git a/Content.Shared/Construction/Components/AnchorOnlyOnStationComponent.cs b/Content.Shared/Construction/Components/AnchorOnlyOnStationComponent.cs index 38fcaa636e..86129787d3 100644 --- a/Content.Shared/Construction/Components/AnchorOnlyOnStationComponent.cs +++ b/Content.Shared/Construction/Components/AnchorOnlyOnStationComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Construction.Components; diff --git a/Content.Shared/Construction/Components/PartAssemblyComponent.cs b/Content.Shared/Construction/Components/PartAssemblyComponent.cs index 2e0667bbdb..338ad29802 100644 --- a/Content.Shared/Construction/Components/PartAssemblyComponent.cs +++ b/Content.Shared/Construction/Components/PartAssemblyComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Containers; +using Robust.Shared.Containers; namespace Content.Shared.Construction.Components; diff --git a/Content.Shared/Construction/Conditions/EmptyOrWindowValidInTile.cs b/Content.Shared/Construction/Conditions/EmptyOrWindowValidInTile.cs index 73b23d11ae..9bfc3d1e21 100644 --- a/Content.Shared/Construction/Conditions/EmptyOrWindowValidInTile.cs +++ b/Content.Shared/Construction/Conditions/EmptyOrWindowValidInTile.cs @@ -1,4 +1,4 @@ -using Content.Shared.Maps; +using Content.Shared.Maps; using JetBrains.Annotations; using Robust.Shared.Map; diff --git a/Content.Shared/Construction/Conditions/IConstructionCondition.cs b/Content.Shared/Construction/Conditions/IConstructionCondition.cs index 5c5ece5c0b..726a5dc8c6 100644 --- a/Content.Shared/Construction/Conditions/IConstructionCondition.cs +++ b/Content.Shared/Construction/Conditions/IConstructionCondition.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Map; +using Robust.Shared.Map; namespace Content.Shared.Construction.Conditions { diff --git a/Content.Shared/Construction/Conditions/NoUnstackableInTile.cs b/Content.Shared/Construction/Conditions/NoUnstackableInTile.cs index 78518187d6..b20081862a 100644 --- a/Content.Shared/Construction/Conditions/NoUnstackableInTile.cs +++ b/Content.Shared/Construction/Conditions/NoUnstackableInTile.cs @@ -1,4 +1,4 @@ -using Content.Shared.Construction.EntitySystems; +using Content.Shared.Construction.EntitySystems; using JetBrains.Annotations; using Robust.Shared.Map; diff --git a/Content.Shared/Construction/Conditions/TileType.cs b/Content.Shared/Construction/Conditions/TileType.cs index e066e6af2e..a613b5bda7 100644 --- a/Content.Shared/Construction/Conditions/TileType.cs +++ b/Content.Shared/Construction/Conditions/TileType.cs @@ -1,4 +1,4 @@ -using Content.Shared.Maps; +using Content.Shared.Maps; using JetBrains.Annotations; using Robust.Shared.Map; using Robust.Shared.Utility; diff --git a/Content.Shared/Construction/IGraphAction.cs b/Content.Shared/Construction/IGraphAction.cs index 0c2a867859..bba2c1b777 100644 --- a/Content.Shared/Construction/IGraphAction.cs +++ b/Content.Shared/Construction/IGraphAction.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Construction +namespace Content.Shared.Construction { [ImplicitDataDefinitionForInheritors] public partial interface IGraphAction diff --git a/Content.Shared/Construction/IGraphCondition.cs b/Content.Shared/Construction/IGraphCondition.cs index f8da8594f7..115d0763bf 100644 --- a/Content.Shared/Construction/IGraphCondition.cs +++ b/Content.Shared/Construction/IGraphCondition.cs @@ -1,4 +1,4 @@ -using Content.Shared.Examine; +using Content.Shared.Examine; namespace Content.Shared.Construction { diff --git a/Content.Shared/Construction/MachineDeconstructedEvent.cs b/Content.Shared/Construction/MachineDeconstructedEvent.cs index 1f65e7941f..ab58466cc1 100644 --- a/Content.Shared/Construction/MachineDeconstructedEvent.cs +++ b/Content.Shared/Construction/MachineDeconstructedEvent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Construction; +namespace Content.Shared.Construction; [DataDefinition] public sealed partial class MachineDeconstructedEvent : EntityEventArgs diff --git a/Content.Shared/Construction/PartAssemblySystem.cs b/Content.Shared/Construction/PartAssemblySystem.cs index 15a169e42c..4fbc2f4692 100644 --- a/Content.Shared/Construction/PartAssemblySystem.cs +++ b/Content.Shared/Construction/PartAssemblySystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Construction.Components; +using Content.Shared.Construction.Components; using Content.Shared.Interaction; using Content.Shared.Tag; using Robust.Shared.Containers; diff --git a/Content.Shared/Construction/Prototypes/ConstructionGraphPrototype.cs b/Content.Shared/Construction/Prototypes/ConstructionGraphPrototype.cs index 26d1c3d0a6..93b3243dba 100644 --- a/Content.Shared/Construction/Prototypes/ConstructionGraphPrototype.cs +++ b/Content.Shared/Construction/Prototypes/ConstructionGraphPrototype.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using System.IO; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; diff --git a/Content.Shared/Construction/SharedCanBuildWindowOnTopComponent.cs b/Content.Shared/Construction/SharedCanBuildWindowOnTopComponent.cs index b7a586aafe..d578048411 100644 --- a/Content.Shared/Construction/SharedCanBuildWindowOnTopComponent.cs +++ b/Content.Shared/Construction/SharedCanBuildWindowOnTopComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Construction +namespace Content.Shared.Construction { [RegisterComponent] public sealed partial class SharedCanBuildWindowOnTopComponent : Component diff --git a/Content.Shared/Construction/Steps/ArbitraryInsertConstructionGraphStep.cs b/Content.Shared/Construction/Steps/ArbitraryInsertConstructionGraphStep.cs index 7615460001..27a5473a87 100644 --- a/Content.Shared/Construction/Steps/ArbitraryInsertConstructionGraphStep.cs +++ b/Content.Shared/Construction/Steps/ArbitraryInsertConstructionGraphStep.cs @@ -1,4 +1,4 @@ -using Content.Shared.Examine; +using Content.Shared.Examine; using Robust.Shared.Utility; namespace Content.Shared.Construction.Steps diff --git a/Content.Shared/Construction/Steps/ComponentConstructionGraphStep.cs b/Content.Shared/Construction/Steps/ComponentConstructionGraphStep.cs index 95f0eefb8a..c9a93e3fd6 100644 --- a/Content.Shared/Construction/Steps/ComponentConstructionGraphStep.cs +++ b/Content.Shared/Construction/Steps/ComponentConstructionGraphStep.cs @@ -1,4 +1,4 @@ -using Content.Shared.Examine; +using Content.Shared.Examine; namespace Content.Shared.Construction.Steps { diff --git a/Content.Shared/Construction/Steps/ConstructionGraphStep.cs b/Content.Shared/Construction/Steps/ConstructionGraphStep.cs index 82248fa105..dcfe2c400c 100644 --- a/Content.Shared/Construction/Steps/ConstructionGraphStep.cs +++ b/Content.Shared/Construction/Steps/ConstructionGraphStep.cs @@ -1,4 +1,4 @@ -using Content.Shared.Examine; +using Content.Shared.Examine; namespace Content.Shared.Construction.Steps { diff --git a/Content.Shared/Construction/Steps/ConstructionGraphStepTypeSerializer.cs b/Content.Shared/Construction/Steps/ConstructionGraphStepTypeSerializer.cs index 3b1093bd48..719ea908be 100644 --- a/Content.Shared/Construction/Steps/ConstructionGraphStepTypeSerializer.cs +++ b/Content.Shared/Construction/Steps/ConstructionGraphStepTypeSerializer.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; using Robust.Shared.Serialization.Manager; using Robust.Shared.Serialization.Markdown.Mapping; using Robust.Shared.Serialization.Markdown.Validation; diff --git a/Content.Shared/Construction/Steps/EntityInsertConstructionGraphStep.cs b/Content.Shared/Construction/Steps/EntityInsertConstructionGraphStep.cs index 28684dead3..b609223c29 100644 --- a/Content.Shared/Construction/Steps/EntityInsertConstructionGraphStep.cs +++ b/Content.Shared/Construction/Steps/EntityInsertConstructionGraphStep.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Construction.Steps +namespace Content.Shared.Construction.Steps { [ImplicitDataDefinitionForInheritors] public abstract partial class EntityInsertConstructionGraphStep : ConstructionGraphStep diff --git a/Content.Shared/Contraband/ContrabandComponent.cs b/Content.Shared/Contraband/ContrabandComponent.cs index f758d91f0c..f2db80aa5f 100644 --- a/Content.Shared/Contraband/ContrabandComponent.cs +++ b/Content.Shared/Contraband/ContrabandComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Roles; +using Content.Shared.Roles; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; diff --git a/Content.Shared/Coordinates/EntityCoordinatesExtensions.cs b/Content.Shared/Coordinates/EntityCoordinatesExtensions.cs index 47d359d387..99e9631d5d 100644 --- a/Content.Shared/Coordinates/EntityCoordinatesExtensions.cs +++ b/Content.Shared/Coordinates/EntityCoordinatesExtensions.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Robust.Shared.Map; namespace Content.Shared.Coordinates diff --git a/Content.Shared/Crayon/SharedCrayonSystem.cs b/Content.Shared/Crayon/SharedCrayonSystem.cs index 42da01904a..c60ae35ea7 100644 --- a/Content.Shared/Crayon/SharedCrayonSystem.cs +++ b/Content.Shared/Crayon/SharedCrayonSystem.cs @@ -1,3 +1,3 @@ -namespace Content.Shared.Crayon; +namespace Content.Shared.Crayon; public abstract class SharedCrayonSystem : EntitySystem { } diff --git a/Content.Shared/Damage/Components/DamageModifierStatusEffectComponent.cs b/Content.Shared/Damage/Components/DamageModifierStatusEffectComponent.cs index 51a80a12fe..139c5cd959 100644 --- a/Content.Shared/Damage/Components/DamageModifierStatusEffectComponent.cs +++ b/Content.Shared/Damage/Components/DamageModifierStatusEffectComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Damage.Components; diff --git a/Content.Shared/Damage/Components/DamagePopupComponent.cs b/Content.Shared/Damage/Components/DamagePopupComponent.cs index 917763fb7d..73049481af 100644 --- a/Content.Shared/Damage/Components/DamagePopupComponent.cs +++ b/Content.Shared/Damage/Components/DamagePopupComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Damage.Systems; +using Content.Shared.Damage.Systems; using Robust.Shared.GameStates; using Robust.Shared.Serialization; diff --git a/Content.Shared/Damage/Components/SlowOnDamageComponent.cs b/Content.Shared/Damage/Components/SlowOnDamageComponent.cs index aa0cafa057..0bec1a25f9 100644 --- a/Content.Shared/Damage/Components/SlowOnDamageComponent.cs +++ b/Content.Shared/Damage/Components/SlowOnDamageComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.FixedPoint; +using Content.Shared.FixedPoint; using Robust.Shared.GameStates; namespace Content.Shared.Damage.Components diff --git a/Content.Shared/Damage/ForceSay/AllowNextCritSpeechComponent.cs b/Content.Shared/Damage/ForceSay/AllowNextCritSpeechComponent.cs index 66a57860b2..dfa757d1e7 100644 --- a/Content.Shared/Damage/ForceSay/AllowNextCritSpeechComponent.cs +++ b/Content.Shared/Damage/ForceSay/AllowNextCritSpeechComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Mobs.Components; +using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; using Robust.Shared.GameStates; diff --git a/Content.Shared/Damage/ForceSay/DamageForceSayComponent.cs b/Content.Shared/Damage/ForceSay/DamageForceSayComponent.cs index e184f4beb9..42e7e02ecf 100644 --- a/Content.Shared/Damage/ForceSay/DamageForceSayComponent.cs +++ b/Content.Shared/Damage/ForceSay/DamageForceSayComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Damage.Prototypes; +using Content.Shared.Damage.Prototypes; using Content.Shared.Dataset; using Content.Shared.FixedPoint; using Robust.Shared.GameStates; diff --git a/Content.Shared/Damage/ForceSay/DamageForceSayEvent.cs b/Content.Shared/Damage/ForceSay/DamageForceSayEvent.cs index a8ed9288a6..ebcfa4d727 100644 --- a/Content.Shared/Damage/ForceSay/DamageForceSayEvent.cs +++ b/Content.Shared/Damage/ForceSay/DamageForceSayEvent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Damage.ForceSay; diff --git a/Content.Shared/Damage/Systems/DamageModifierStatusEffect.cs b/Content.Shared/Damage/Systems/DamageModifierStatusEffect.cs index 9deff6efb0..c6da34ceea 100644 --- a/Content.Shared/Damage/Systems/DamageModifierStatusEffect.cs +++ b/Content.Shared/Damage/Systems/DamageModifierStatusEffect.cs @@ -1,4 +1,4 @@ -using Content.Shared.Damage.Components; +using Content.Shared.Damage.Components; using Content.Shared.StatusEffectNew; namespace Content.Shared.Damage.Systems; diff --git a/Content.Shared/Damage/Systems/DamageableSystem.BenchmarkHelpers.cs b/Content.Shared/Damage/Systems/DamageableSystem.BenchmarkHelpers.cs index 0175b5fb5e..214792333b 100644 --- a/Content.Shared/Damage/Systems/DamageableSystem.BenchmarkHelpers.cs +++ b/Content.Shared/Damage/Systems/DamageableSystem.BenchmarkHelpers.cs @@ -1,4 +1,4 @@ -using Content.Shared.Damage.Components; +using Content.Shared.Damage.Components; namespace Content.Shared.Damage.Systems; diff --git a/Content.Shared/Dataset/DatasetPrototype.cs b/Content.Shared/Dataset/DatasetPrototype.cs index b022be2be4..c69c3bc0c1 100644 --- a/Content.Shared/Dataset/DatasetPrototype.cs +++ b/Content.Shared/Dataset/DatasetPrototype.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; namespace Content.Shared.Dataset { diff --git a/Content.Shared/Decals/ColorPalettePrototype.cs b/Content.Shared/Decals/ColorPalettePrototype.cs index 9c31201950..a07f75b2a6 100644 --- a/Content.Shared/Decals/ColorPalettePrototype.cs +++ b/Content.Shared/Decals/ColorPalettePrototype.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; namespace Content.Shared.Decals; diff --git a/Content.Shared/Destructible/ThresholdActs.cs b/Content.Shared/Destructible/ThresholdActs.cs index 281d58092f..4c78e46809 100644 --- a/Content.Shared/Destructible/ThresholdActs.cs +++ b/Content.Shared/Destructible/ThresholdActs.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Destructible; diff --git a/Content.Shared/DetailExaminable/DetailExaminableComponent.cs b/Content.Shared/DetailExaminable/DetailExaminableComponent.cs index 616906de45..b8b7eef6d8 100644 --- a/Content.Shared/DetailExaminable/DetailExaminableComponent.cs +++ b/Content.Shared/DetailExaminable/DetailExaminableComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.DetailExaminable; diff --git a/Content.Shared/DeviceLinking/Events/DeviceLinkOverloadedEvent.cs b/Content.Shared/DeviceLinking/Events/DeviceLinkOverloadedEvent.cs index 0a1e4e046a..b2ac19a87d 100644 --- a/Content.Shared/DeviceLinking/Events/DeviceLinkOverloadedEvent.cs +++ b/Content.Shared/DeviceLinking/Events/DeviceLinkOverloadedEvent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.DeviceLinking.Events; +namespace Content.Shared.DeviceLinking.Events; [ByRefEvent] public readonly record struct DeviceLinkOverloadedEvent; diff --git a/Content.Shared/DeviceLinking/LogicStatePayload.cs b/Content.Shared/DeviceLinking/LogicStatePayload.cs index 5266b0f840..82fff01787 100644 --- a/Content.Shared/DeviceLinking/LogicStatePayload.cs +++ b/Content.Shared/DeviceLinking/LogicStatePayload.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.DeviceLinking; +namespace Content.Shared.DeviceLinking; /// /// Contains a logic state of a . diff --git a/Content.Shared/DeviceLinking/SignalPayload.cs b/Content.Shared/DeviceLinking/SignalPayload.cs index bcd5f679b5..41b7613b44 100644 --- a/Content.Shared/DeviceLinking/SignalPayload.cs +++ b/Content.Shared/DeviceLinking/SignalPayload.cs @@ -1,4 +1,4 @@ -using Content.Shared.DeviceLinking.Events; +using Content.Shared.DeviceLinking.Events; using Content.Shared.DeviceNetwork; namespace Content.Shared.DeviceLinking; diff --git a/Content.Shared/DeviceLinking/TwoWayLeverSignal.cs b/Content.Shared/DeviceLinking/TwoWayLeverSignal.cs index a41e48556b..115294d6df 100644 --- a/Content.Shared/DeviceLinking/TwoWayLeverSignal.cs +++ b/Content.Shared/DeviceLinking/TwoWayLeverSignal.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.DeviceLinking { diff --git a/Content.Shared/DeviceNetwork/Components/DeviceListComponent.cs b/Content.Shared/DeviceNetwork/Components/DeviceListComponent.cs index 98f177c0f3..7b83552097 100644 --- a/Content.Shared/DeviceNetwork/Components/DeviceListComponent.cs +++ b/Content.Shared/DeviceNetwork/Components/DeviceListComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.DeviceNetwork.Systems; +using Content.Shared.DeviceNetwork.Systems; using Robust.Shared.GameStates; namespace Content.Shared.DeviceNetwork.Components; diff --git a/Content.Shared/DeviceNetwork/Components/DeviceNetworkRouterComponent.cs b/Content.Shared/DeviceNetwork/Components/DeviceNetworkRouterComponent.cs index 6ca7b0f644..745688774d 100644 --- a/Content.Shared/DeviceNetwork/Components/DeviceNetworkRouterComponent.cs +++ b/Content.Shared/DeviceNetwork/Components/DeviceNetworkRouterComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.DeviceNetwork.Payloads; +using Content.Shared.DeviceNetwork.Payloads; using Robust.Shared.GameStates; namespace Content.Shared.DeviceNetwork.Components; diff --git a/Content.Shared/DeviceNetwork/Device.cs b/Content.Shared/DeviceNetwork/Device.cs index 85bcaf309b..41ee3891e7 100644 --- a/Content.Shared/DeviceNetwork/Device.cs +++ b/Content.Shared/DeviceNetwork/Device.cs @@ -1,4 +1,4 @@ -using Content.Shared.DeviceNetwork.Components; +using Content.Shared.DeviceNetwork.Components; using Content.Shared.DeviceNetwork.Systems; namespace Content.Shared.DeviceNetwork; diff --git a/Content.Shared/DeviceNetwork/DeviceNetIdDefaults.cs b/Content.Shared/DeviceNetwork/DeviceNetIdDefaults.cs index 8446ee0e5d..21498e89ff 100644 --- a/Content.Shared/DeviceNetwork/DeviceNetIdDefaults.cs +++ b/Content.Shared/DeviceNetwork/DeviceNetIdDefaults.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.DeviceNetwork; diff --git a/Content.Shared/DeviceNetwork/Events/DeviceAddressChangedEvent.cs b/Content.Shared/DeviceNetwork/Events/DeviceAddressChangedEvent.cs index 37ac5ea261..10bafa8d52 100644 --- a/Content.Shared/DeviceNetwork/Events/DeviceAddressChangedEvent.cs +++ b/Content.Shared/DeviceNetwork/Events/DeviceAddressChangedEvent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.DeviceNetwork.Events; +namespace Content.Shared.DeviceNetwork.Events; /// /// Raised when the was changed. diff --git a/Content.Shared/DeviceNetwork/Events/DeviceReceiveAllChangedEvent.cs b/Content.Shared/DeviceNetwork/Events/DeviceReceiveAllChangedEvent.cs index de65523fec..aa9a23d4dc 100644 --- a/Content.Shared/DeviceNetwork/Events/DeviceReceiveAllChangedEvent.cs +++ b/Content.Shared/DeviceNetwork/Events/DeviceReceiveAllChangedEvent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.DeviceNetwork.Events; +namespace Content.Shared.DeviceNetwork.Events; /// /// Raised when the was changed. diff --git a/Content.Shared/DeviceNetwork/Events/DeviceReceiveFrequencyChangedEvent.cs b/Content.Shared/DeviceNetwork/Events/DeviceReceiveFrequencyChangedEvent.cs index 42935ce34e..2690da7729 100644 --- a/Content.Shared/DeviceNetwork/Events/DeviceReceiveFrequencyChangedEvent.cs +++ b/Content.Shared/DeviceNetwork/Events/DeviceReceiveFrequencyChangedEvent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.DeviceNetwork.Events; +namespace Content.Shared.DeviceNetwork.Events; /// /// Raised when the was changed. diff --git a/Content.Shared/DeviceNetwork/Events/DeviceTransmitFrequencyChangedEvent.cs b/Content.Shared/DeviceNetwork/Events/DeviceTransmitFrequencyChangedEvent.cs index 86c04f38a6..618d5dc0d0 100644 --- a/Content.Shared/DeviceNetwork/Events/DeviceTransmitFrequencyChangedEvent.cs +++ b/Content.Shared/DeviceNetwork/Events/DeviceTransmitFrequencyChangedEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.DeviceNetwork.Components; +using Content.Shared.DeviceNetwork.Components; namespace Content.Shared.DeviceNetwork.Events; diff --git a/Content.Shared/DeviceNetwork/NetworkConfiguratorUIMessages.cs b/Content.Shared/DeviceNetwork/NetworkConfiguratorUIMessages.cs index e6e273b1fa..8ffbb42b05 100644 --- a/Content.Shared/DeviceNetwork/NetworkConfiguratorUIMessages.cs +++ b/Content.Shared/DeviceNetwork/NetworkConfiguratorUIMessages.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.DeviceNetwork; diff --git a/Content.Shared/DeviceNetwork/Payloads/ApcNetTogglePayload.cs b/Content.Shared/DeviceNetwork/Payloads/ApcNetTogglePayload.cs index 5830610036..de24e6b18a 100644 --- a/Content.Shared/DeviceNetwork/Payloads/ApcNetTogglePayload.cs +++ b/Content.Shared/DeviceNetwork/Payloads/ApcNetTogglePayload.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.DeviceNetwork.Payloads; +namespace Content.Shared.DeviceNetwork.Payloads; /// /// A payload for the Apc net switch. diff --git a/Content.Shared/DeviceNetwork/Payloads/RoutedNetworkPayload.cs b/Content.Shared/DeviceNetwork/Payloads/RoutedNetworkPayload.cs index 34f252af5e..424901dfb7 100644 --- a/Content.Shared/DeviceNetwork/Payloads/RoutedNetworkPayload.cs +++ b/Content.Shared/DeviceNetwork/Payloads/RoutedNetworkPayload.cs @@ -1,4 +1,4 @@ -using Content.Shared.DeviceNetwork.Components; +using Content.Shared.DeviceNetwork.Components; using Content.Shared.DeviceNetwork.Systems; namespace Content.Shared.DeviceNetwork.Payloads; diff --git a/Content.Shared/DeviceNetwork/Systems/DeviceNetworkRouterSystem.cs b/Content.Shared/DeviceNetwork/Systems/DeviceNetworkRouterSystem.cs index b89afa7efe..ae9e9f1b92 100644 --- a/Content.Shared/DeviceNetwork/Systems/DeviceNetworkRouterSystem.cs +++ b/Content.Shared/DeviceNetwork/Systems/DeviceNetworkRouterSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.DeviceNetwork.Components; +using Content.Shared.DeviceNetwork.Components; using Content.Shared.DeviceNetwork.Events; using Content.Shared.DeviceNetwork.Payloads; using Content.Shared.SurveillanceCamera; diff --git a/Content.Shared/Directions/SharedDirectionExtensions.cs b/Content.Shared/Directions/SharedDirectionExtensions.cs index 65d4ed0ea9..0aa8174cf2 100644 --- a/Content.Shared/Directions/SharedDirectionExtensions.cs +++ b/Content.Shared/Directions/SharedDirectionExtensions.cs @@ -1,4 +1,4 @@ -using System.Collections; +using System.Collections; using System.Linq; using Robust.Shared.Map; using Robust.Shared.Random; diff --git a/Content.Shared/DisplacementMap/DisplacementDataPrototype.cs b/Content.Shared/DisplacementMap/DisplacementDataPrototype.cs index 46d1b10433..b22906c8fe 100644 --- a/Content.Shared/DisplacementMap/DisplacementDataPrototype.cs +++ b/Content.Shared/DisplacementMap/DisplacementDataPrototype.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; namespace Content.Shared.DisplacementMap; diff --git a/Content.Shared/Disposal/Mailing/MailRequestTagPayload.cs b/Content.Shared/Disposal/Mailing/MailRequestTagPayload.cs index b48c3d8337..1cfbbe8efe 100644 --- a/Content.Shared/Disposal/Mailing/MailRequestTagPayload.cs +++ b/Content.Shared/Disposal/Mailing/MailRequestTagPayload.cs @@ -1,4 +1,4 @@ -using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork; namespace Content.Shared.Disposal.Mailing; diff --git a/Content.Shared/DoAfter/ActiveDoAfterComponent.cs b/Content.Shared/DoAfter/ActiveDoAfterComponent.cs index 9554f9e5cf..66a3b30a3c 100644 --- a/Content.Shared/DoAfter/ActiveDoAfterComponent.cs +++ b/Content.Shared/DoAfter/ActiveDoAfterComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.DoAfter; diff --git a/Content.Shared/DoAfter/DoAfterArgsComponent.cs b/Content.Shared/DoAfter/DoAfterArgsComponent.cs index bae1d37983..de4e9cd763 100644 --- a/Content.Shared/DoAfter/DoAfterArgsComponent.cs +++ b/Content.Shared/DoAfter/DoAfterArgsComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.FixedPoint; +using Content.Shared.FixedPoint; using Robust.Shared.GameStates; namespace Content.Shared.DoAfter; diff --git a/Content.Shared/DragDrop/SharedDragDropSystem.cs b/Content.Shared/DragDrop/SharedDragDropSystem.cs index 8a4584a0ff..af5215b564 100644 --- a/Content.Shared/DragDrop/SharedDragDropSystem.cs +++ b/Content.Shared/DragDrop/SharedDragDropSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.ActionBlocker; +using Content.Shared.ActionBlocker; using Content.Shared.Interaction; namespace Content.Shared.DragDrop; diff --git a/Content.Shared/Dragon/DragonEvents.cs b/Content.Shared/Dragon/DragonEvents.cs index e3db9c32da..255bd9ad71 100644 --- a/Content.Shared/Dragon/DragonEvents.cs +++ b/Content.Shared/Dragon/DragonEvents.cs @@ -1,4 +1,4 @@ -using Content.Shared.Actions; +using Content.Shared.Actions; namespace Content.Shared.Dragon; diff --git a/Content.Shared/Drunk/DrunkStatusEffectComponent.cs b/Content.Shared/Drunk/DrunkStatusEffectComponent.cs index 69ad7c3ad9..c91421d1d0 100644 --- a/Content.Shared/Drunk/DrunkStatusEffectComponent.cs +++ b/Content.Shared/Drunk/DrunkStatusEffectComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Drunk; diff --git a/Content.Shared/Emoting/EmoteEvents.cs b/Content.Shared/Emoting/EmoteEvents.cs index 931395ee7e..5d60475fd1 100644 --- a/Content.Shared/Emoting/EmoteEvents.cs +++ b/Content.Shared/Emoting/EmoteEvents.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Emoting; +namespace Content.Shared.Emoting; public sealed class EmoteAttemptEvent(EntityUid uid) : CancellableEntityEventArgs { diff --git a/Content.Shared/Emoting/EmoteSystem.cs b/Content.Shared/Emoting/EmoteSystem.cs index 11db796fa9..a9b8da1fd6 100644 --- a/Content.Shared/Emoting/EmoteSystem.cs +++ b/Content.Shared/Emoting/EmoteSystem.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Emoting; +namespace Content.Shared.Emoting; public sealed partial class EmoteSystem : EntitySystem { diff --git a/Content.Shared/Engineering/Components/InflatableSafeDisassemblyComponent.cs b/Content.Shared/Engineering/Components/InflatableSafeDisassemblyComponent.cs index 47591b6eb9..e0cf0a2e97 100644 --- a/Content.Shared/Engineering/Components/InflatableSafeDisassemblyComponent.cs +++ b/Content.Shared/Engineering/Components/InflatableSafeDisassemblyComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Engineering.Systems; +using Content.Shared.Engineering.Systems; using Content.Shared.Weapons.Melee.Balloon; namespace Content.Shared.Engineering.Components; diff --git a/Content.Shared/Engineering/Systems/InflatableSafeDisassemblySystem.cs b/Content.Shared/Engineering/Systems/InflatableSafeDisassemblySystem.cs index 95114cb406..dfde98873f 100644 --- a/Content.Shared/Engineering/Systems/InflatableSafeDisassemblySystem.cs +++ b/Content.Shared/Engineering/Systems/InflatableSafeDisassemblySystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Engineering.Components; +using Content.Shared.Engineering.Components; using Content.Shared.Interaction; using Content.Shared.Popups; using Content.Shared.Weapons.Melee.Balloon; diff --git a/Content.Shared/Ensnaring/Components/EnsnaringComponent.cs b/Content.Shared/Ensnaring/Components/EnsnaringComponent.cs index 0a4f69e80e..72886bdb84 100644 --- a/Content.Shared/Ensnaring/Components/EnsnaringComponent.cs +++ b/Content.Shared/Ensnaring/Components/EnsnaringComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Audio; +using Robust.Shared.Audio; using Robust.Shared.GameStates; namespace Content.Shared.Ensnaring.Components; diff --git a/Content.Shared/Ensnaring/EnsnareableVisuals.cs b/Content.Shared/Ensnaring/EnsnareableVisuals.cs index ff9def0428..8c6c36b488 100644 --- a/Content.Shared/Ensnaring/EnsnareableVisuals.cs +++ b/Content.Shared/Ensnaring/EnsnareableVisuals.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Ensnaring; diff --git a/Content.Shared/EntityConditions/Conditions/Body/BreathingEntityCondition.cs b/Content.Shared/EntityConditions/Conditions/Body/BreathingEntityCondition.cs index ece979a6a8..48f5c4f80f 100644 --- a/Content.Shared/EntityConditions/Conditions/Body/BreathingEntityCondition.cs +++ b/Content.Shared/EntityConditions/Conditions/Body/BreathingEntityCondition.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; namespace Content.Shared.EntityConditions.Conditions.Body; diff --git a/Content.Shared/EntityConditions/Conditions/Body/InternalsEntityConditionSystem.cs b/Content.Shared/EntityConditions/Conditions/Body/InternalsEntityConditionSystem.cs index cabf731939..1a1588b3fb 100644 --- a/Content.Shared/EntityConditions/Conditions/Body/InternalsEntityConditionSystem.cs +++ b/Content.Shared/EntityConditions/Conditions/Body/InternalsEntityConditionSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Body.Components; +using Content.Shared.Body.Components; using Robust.Shared.Prototypes; namespace Content.Shared.EntityConditions.Conditions.Body; diff --git a/Content.Shared/EntityConditions/Conditions/Body/MetabolizerTypeEntityConditionSystem.cs b/Content.Shared/EntityConditions/Conditions/Body/MetabolizerTypeEntityConditionSystem.cs index ad294fc5d6..955c8901c6 100644 --- a/Content.Shared/EntityConditions/Conditions/Body/MetabolizerTypeEntityConditionSystem.cs +++ b/Content.Shared/EntityConditions/Conditions/Body/MetabolizerTypeEntityConditionSystem.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Shared.Localizations; using Content.Shared.Metabolism; using Robust.Shared.Prototypes; diff --git a/Content.Shared/EntityConditions/Conditions/Body/MobStateEntityConditionSystem.cs b/Content.Shared/EntityConditions/Conditions/Body/MobStateEntityConditionSystem.cs index 19debb024a..025cbcbd0a 100644 --- a/Content.Shared/EntityConditions/Conditions/Body/MobStateEntityConditionSystem.cs +++ b/Content.Shared/EntityConditions/Conditions/Body/MobStateEntityConditionSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Mobs; +using Content.Shared.Mobs; using Content.Shared.Mobs.Components; using Robust.Shared.Prototypes; diff --git a/Content.Shared/EntityConditions/Conditions/Mind/AntagonistEntityConditionSystem.cs b/Content.Shared/EntityConditions/Conditions/Mind/AntagonistEntityConditionSystem.cs index 796c4498af..e49e1b2f5b 100644 --- a/Content.Shared/EntityConditions/Conditions/Mind/AntagonistEntityConditionSystem.cs +++ b/Content.Shared/EntityConditions/Conditions/Mind/AntagonistEntityConditionSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Mind; +using Content.Shared.Mind; using Content.Shared.Roles; using Robust.Shared.Prototypes; diff --git a/Content.Shared/EntityConditions/Conditions/Mind/BodyWhitelistEntityConditionSystem.cs b/Content.Shared/EntityConditions/Conditions/Mind/BodyWhitelistEntityConditionSystem.cs index d8ebcdd15d..8367e36343 100644 --- a/Content.Shared/EntityConditions/Conditions/Mind/BodyWhitelistEntityConditionSystem.cs +++ b/Content.Shared/EntityConditions/Conditions/Mind/BodyWhitelistEntityConditionSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Mind; +using Content.Shared.Mind; using Content.Shared.Whitelist; using Robust.Shared.Prototypes; diff --git a/Content.Shared/EntityConditions/Conditions/Mind/JobEntityConditionSystem.cs b/Content.Shared/EntityConditions/Conditions/Mind/JobEntityConditionSystem.cs index ccdbd53d7e..6724842865 100644 --- a/Content.Shared/EntityConditions/Conditions/Mind/JobEntityConditionSystem.cs +++ b/Content.Shared/EntityConditions/Conditions/Mind/JobEntityConditionSystem.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Shared.Localizations; using Content.Shared.Mind; using Content.Shared.Mind.Components; diff --git a/Content.Shared/EntityConditions/Conditions/Mind/ObjectiveTargetEntityCondition.cs b/Content.Shared/EntityConditions/Conditions/Mind/ObjectiveTargetEntityCondition.cs index 053d645577..6c87c64847 100644 --- a/Content.Shared/EntityConditions/Conditions/Mind/ObjectiveTargetEntityCondition.cs +++ b/Content.Shared/EntityConditions/Conditions/Mind/ObjectiveTargetEntityCondition.cs @@ -1,4 +1,4 @@ -using Content.Shared.Whitelist; +using Content.Shared.Whitelist; using Robust.Shared.Prototypes; namespace Content.Shared.EntityConditions.Conditions.Mind; diff --git a/Content.Shared/EntityConditions/Conditions/Mind/ObjectiveWhitelistEntityConditionSystem.cs b/Content.Shared/EntityConditions/Conditions/Mind/ObjectiveWhitelistEntityConditionSystem.cs index 3c42196bbd..5402f4d254 100644 --- a/Content.Shared/EntityConditions/Conditions/Mind/ObjectiveWhitelistEntityConditionSystem.cs +++ b/Content.Shared/EntityConditions/Conditions/Mind/ObjectiveWhitelistEntityConditionSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Mind; +using Content.Shared.Mind; using Content.Shared.Whitelist; using Robust.Shared.Prototypes; diff --git a/Content.Shared/EntityConditions/Conditions/Mind/RoleEntityConditionSystem.cs b/Content.Shared/EntityConditions/Conditions/Mind/RoleEntityConditionSystem.cs index 59633031e9..a60b93321b 100644 --- a/Content.Shared/EntityConditions/Conditions/Mind/RoleEntityConditionSystem.cs +++ b/Content.Shared/EntityConditions/Conditions/Mind/RoleEntityConditionSystem.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Shared.Localizations; using Content.Shared.Mind; using Content.Shared.Mind.Components; diff --git a/Content.Shared/EntityConditions/Conditions/ReagentEntityConditionSystem.cs b/Content.Shared/EntityConditions/Conditions/ReagentEntityConditionSystem.cs index c721c2fc9d..c46a2a9867 100644 --- a/Content.Shared/EntityConditions/Conditions/ReagentEntityConditionSystem.cs +++ b/Content.Shared/EntityConditions/Conditions/ReagentEntityConditionSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Reagent; using Content.Shared.FixedPoint; using Robust.Shared.Prototypes; diff --git a/Content.Shared/EntityConditions/Conditions/Tags/HasAllTagsEntityConditionSystem.cs b/Content.Shared/EntityConditions/Conditions/Tags/HasAllTagsEntityConditionSystem.cs index e873990544..3b23a98438 100644 --- a/Content.Shared/EntityConditions/Conditions/Tags/HasAllTagsEntityConditionSystem.cs +++ b/Content.Shared/EntityConditions/Conditions/Tags/HasAllTagsEntityConditionSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Localizations; +using Content.Shared.Localizations; using Content.Shared.Tag; using Robust.Shared.Prototypes; diff --git a/Content.Shared/EntityConditions/Conditions/Tags/HasAnyTagEntityConditionSystem.cs b/Content.Shared/EntityConditions/Conditions/Tags/HasAnyTagEntityConditionSystem.cs index 2e2bccb35c..ecf6f98fc6 100644 --- a/Content.Shared/EntityConditions/Conditions/Tags/HasAnyTagEntityConditionSystem.cs +++ b/Content.Shared/EntityConditions/Conditions/Tags/HasAnyTagEntityConditionSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Localizations; +using Content.Shared.Localizations; using Content.Shared.Tag; using Robust.Shared.Prototypes; diff --git a/Content.Shared/EntityConditions/Conditions/Tags/HasTagEntityConditionSystem.cs b/Content.Shared/EntityConditions/Conditions/Tags/HasTagEntityConditionSystem.cs index 8f2d553d32..3c13089d3b 100644 --- a/Content.Shared/EntityConditions/Conditions/Tags/HasTagEntityConditionSystem.cs +++ b/Content.Shared/EntityConditions/Conditions/Tags/HasTagEntityConditionSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Tag; +using Content.Shared.Tag; using Robust.Shared.Prototypes; namespace Content.Shared.EntityConditions.Conditions.Tags; diff --git a/Content.Shared/EntityConditions/Conditions/TemperatureEntityConditionSystem.cs b/Content.Shared/EntityConditions/Conditions/TemperatureEntityConditionSystem.cs index 6a818a1d33..64bd8dbab9 100644 --- a/Content.Shared/EntityConditions/Conditions/TemperatureEntityConditionSystem.cs +++ b/Content.Shared/EntityConditions/Conditions/TemperatureEntityConditionSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.Components; using Content.Shared.Temperature.Components; using Robust.Shared.Prototypes; diff --git a/Content.Shared/EntityConditions/Conditions/TemplateEntityConditionSystem.cs b/Content.Shared/EntityConditions/Conditions/TemplateEntityConditionSystem.cs index fbb659b54f..f044b3564e 100644 --- a/Content.Shared/EntityConditions/Conditions/TemplateEntityConditionSystem.cs +++ b/Content.Shared/EntityConditions/Conditions/TemplateEntityConditionSystem.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; namespace Content.Shared.EntityConditions.Conditions; /// diff --git a/Content.Shared/EntityEffects/Effects/AdjustAlertEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/AdjustAlertEntityEffectSystem.cs index f2b16e21eb..8d07810f07 100644 --- a/Content.Shared/EntityEffects/Effects/AdjustAlertEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/AdjustAlertEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Alert; +using Content.Shared.Alert; using Robust.Shared.Prototypes; using Robust.Shared.Timing; diff --git a/Content.Shared/EntityEffects/Effects/AdjustTemperatureEntityEffectsSystem.cs b/Content.Shared/EntityEffects/Effects/AdjustTemperatureEntityEffectsSystem.cs index 418730e33a..065546d7e9 100644 --- a/Content.Shared/EntityEffects/Effects/AdjustTemperatureEntityEffectsSystem.cs +++ b/Content.Shared/EntityEffects/Effects/AdjustTemperatureEntityEffectsSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Temperature.Components; +using Content.Shared.Temperature.Components; using Content.Shared.Temperature.Systems; using Robust.Shared.Prototypes; diff --git a/Content.Shared/EntityEffects/Effects/ArtifactEntityEffectsSystem.cs b/Content.Shared/EntityEffects/Effects/ArtifactEntityEffectsSystem.cs index 50228b963f..11d4ead82f 100644 --- a/Content.Shared/EntityEffects/Effects/ArtifactEntityEffectsSystem.cs +++ b/Content.Shared/EntityEffects/Effects/ArtifactEntityEffectsSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Popups; +using Content.Shared.Popups; using Content.Shared.Xenoarchaeology.Artifact; using Content.Shared.Xenoarchaeology.Artifact.Components; using Robust.Shared.Prototypes; diff --git a/Content.Shared/EntityEffects/Effects/Atmos/CreateGasEntityEffect.cs b/Content.Shared/EntityEffects/Effects/Atmos/CreateGasEntityEffect.cs index 9614933247..ecd3b306d1 100644 --- a/Content.Shared/EntityEffects/Effects/Atmos/CreateGasEntityEffect.cs +++ b/Content.Shared/EntityEffects/Effects/Atmos/CreateGasEntityEffect.cs @@ -1,4 +1,4 @@ -using Content.Shared.Atmos; +using Content.Shared.Atmos; using Content.Shared.Atmos.EntitySystems; using Robust.Shared.Prototypes; diff --git a/Content.Shared/EntityEffects/Effects/Atmos/ExtinguishEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/Atmos/ExtinguishEntityEffectSystem.cs index b4b475ec59..7a52ea7914 100644 --- a/Content.Shared/EntityEffects/Effects/Atmos/ExtinguishEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/Atmos/ExtinguishEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Atmos; +using Content.Shared.Atmos; using Content.Shared.Atmos.Components; using Robust.Shared.Prototypes; diff --git a/Content.Shared/EntityEffects/Effects/Atmos/FlammableEntityEffect.cs b/Content.Shared/EntityEffects/Effects/Atmos/FlammableEntityEffect.cs index 563201a40f..ff151f3324 100644 --- a/Content.Shared/EntityEffects/Effects/Atmos/FlammableEntityEffect.cs +++ b/Content.Shared/EntityEffects/Effects/Atmos/FlammableEntityEffect.cs @@ -1,4 +1,4 @@ -using Content.Shared.Database; +using Content.Shared.Database; using Robust.Shared.Prototypes; namespace Content.Shared.EntityEffects.Effects.Atmos; diff --git a/Content.Shared/EntityEffects/Effects/Atmos/IgniteEntityEffect.cs b/Content.Shared/EntityEffects/Effects/Atmos/IgniteEntityEffect.cs index 7ca93e7c18..159f917e6f 100644 --- a/Content.Shared/EntityEffects/Effects/Atmos/IgniteEntityEffect.cs +++ b/Content.Shared/EntityEffects/Effects/Atmos/IgniteEntityEffect.cs @@ -1,4 +1,4 @@ -using Content.Shared.Database; +using Content.Shared.Database; using Robust.Shared.Prototypes; namespace Content.Shared.EntityEffects.Effects.Atmos; diff --git a/Content.Shared/EntityEffects/Effects/Body/CleanBloodstreamEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/Body/CleanBloodstreamEntityEffectSystem.cs index db8cdf2a37..ed456f89f6 100644 --- a/Content.Shared/EntityEffects/Effects/Body/CleanBloodstreamEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/Body/CleanBloodstreamEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Body.Components; +using Content.Shared.Body.Components; using Content.Shared.Body.Systems; using Content.Shared.Chemistry.Reagent; using Content.Shared.FixedPoint; diff --git a/Content.Shared/EntityEffects/Effects/Body/EyeDamageEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/Body/EyeDamageEntityEffectSystem.cs index e0e9d33a87..4dcf0edd74 100644 --- a/Content.Shared/EntityEffects/Effects/Body/EyeDamageEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/Body/EyeDamageEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Eye.Blinding.Systems; +using Content.Shared.Eye.Blinding.Systems; using Robust.Shared.Prototypes; namespace Content.Shared.EntityEffects.Effects.Body; diff --git a/Content.Shared/EntityEffects/Effects/Body/ModifyBleedEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/Body/ModifyBleedEntityEffectSystem.cs index 79b2e3ce49..6f311b2790 100644 --- a/Content.Shared/EntityEffects/Effects/Body/ModifyBleedEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/Body/ModifyBleedEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Body.Components; +using Content.Shared.Body.Components; using Content.Shared.Body.Systems; using Robust.Shared.Prototypes; diff --git a/Content.Shared/EntityEffects/Effects/Body/ModifyBloodLevelEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/Body/ModifyBloodLevelEntityEffectSystem.cs index cd864fd964..3f4cb75403 100644 --- a/Content.Shared/EntityEffects/Effects/Body/ModifyBloodLevelEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/Body/ModifyBloodLevelEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Body.Components; +using Content.Shared.Body.Components; using Content.Shared.Body.Systems; using Content.Shared.FixedPoint; using Robust.Shared.Prototypes; diff --git a/Content.Shared/EntityEffects/Effects/Body/ModifyLungGasEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/Body/ModifyLungGasEntityEffectSystem.cs index 9bfa772b0f..fa4600763e 100644 --- a/Content.Shared/EntityEffects/Effects/Body/ModifyLungGasEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/Body/ModifyLungGasEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Atmos; +using Content.Shared.Atmos; using Content.Shared.Body.Components; namespace Content.Shared.EntityEffects.Effects.Body; diff --git a/Content.Shared/EntityEffects/Effects/Body/OxygenateEntityEffect.cs b/Content.Shared/EntityEffects/Effects/Body/OxygenateEntityEffect.cs index 9790fced4e..88f8cb73da 100644 --- a/Content.Shared/EntityEffects/Effects/Body/OxygenateEntityEffect.cs +++ b/Content.Shared/EntityEffects/Effects/Body/OxygenateEntityEffect.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.EntityEffects.Effects.Body; +namespace Content.Shared.EntityEffects.Effects.Body; /// /// See serverside system. diff --git a/Content.Shared/EntityEffects/Effects/Body/ReduceRottingEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/Body/ReduceRottingEntityEffectSystem.cs index ee25c76488..87f47a0a89 100644 --- a/Content.Shared/EntityEffects/Effects/Body/ReduceRottingEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/Body/ReduceRottingEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Atmos.Rotting; +using Content.Shared.Atmos.Rotting; using Robust.Shared.Prototypes; namespace Content.Shared.EntityEffects.Effects.Body; diff --git a/Content.Shared/EntityEffects/Effects/Body/SatiateEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/Body/SatiateEntityEffectSystem.cs index c0d57abb68..17ed57c8e4 100644 --- a/Content.Shared/EntityEffects/Effects/Body/SatiateEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/Body/SatiateEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Nutrition.Components; +using Content.Shared.Nutrition.Components; using Content.Shared.Nutrition.EntitySystems; using Content.Shared.Nutrition.Prototypes; using Robust.Shared.Prototypes; diff --git a/Content.Shared/EntityEffects/Effects/Body/VomitEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/Body/VomitEntityEffectSystem.cs index db4805db54..0d83edc190 100644 --- a/Content.Shared/EntityEffects/Effects/Body/VomitEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/Body/VomitEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Medical; +using Content.Shared.Medical; using Robust.Shared.Prototypes; namespace Content.Shared.EntityEffects.Effects.Body; diff --git a/Content.Shared/EntityEffects/Effects/Damage/DistributedHealthChangeEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/Damage/DistributedHealthChangeEntityEffectSystem.cs index 71a0431b79..4672dc6748 100644 --- a/Content.Shared/EntityEffects/Effects/Damage/DistributedHealthChangeEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/Damage/DistributedHealthChangeEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Damage.Components; +using Content.Shared.Damage.Components; using Content.Shared.Damage.Prototypes; using Content.Shared.Damage.Systems; using Content.Shared.FixedPoint; diff --git a/Content.Shared/EntityEffects/Effects/Damage/EvenHealthChangeEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/Damage/EvenHealthChangeEntityEffectSystem.cs index a24f74b9c9..8dab5a2f54 100644 --- a/Content.Shared/EntityEffects/Effects/Damage/EvenHealthChangeEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/Damage/EvenHealthChangeEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Damage.Components; +using Content.Shared.Damage.Components; using Content.Shared.Damage.Prototypes; using Content.Shared.Damage.Systems; using Content.Shared.FixedPoint; diff --git a/Content.Shared/EntityEffects/Effects/Damage/HealthChangeEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/Damage/HealthChangeEntityEffectSystem.cs index 6b70604c55..b1d5797bee 100644 --- a/Content.Shared/EntityEffects/Effects/Damage/HealthChangeEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/Damage/HealthChangeEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Damage; +using Content.Shared.Damage; using Content.Shared.Damage.Components; using Content.Shared.Damage.Prototypes; using Content.Shared.Damage.Systems; diff --git a/Content.Shared/EntityEffects/Effects/Damage/StaminaDamageEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/Damage/StaminaDamageEntityEffectSystem.cs index 4bccf33610..cb355c4999 100644 --- a/Content.Shared/EntityEffects/Effects/Damage/StaminaDamageEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/Damage/StaminaDamageEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Damage.Components; +using Content.Shared.Damage.Components; using Content.Shared.Damage.Systems; namespace Content.Shared.EntityEffects.Effects.Damage; diff --git a/Content.Shared/EntityEffects/Effects/EmoteEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/EmoteEntityEffectSystem.cs index 97bb965827..4379fc49e7 100644 --- a/Content.Shared/EntityEffects/Effects/EmoteEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/EmoteEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Chat; +using Content.Shared.Chat; using Content.Shared.Chat.Prototypes; using Robust.Shared.Prototypes; diff --git a/Content.Shared/EntityEffects/Effects/EntitySpawning/BaseSpawnEntityEntityEffect.cs b/Content.Shared/EntityEffects/Effects/EntitySpawning/BaseSpawnEntityEntityEffect.cs index 3f5d5b3b57..c86a313d1c 100644 --- a/Content.Shared/EntityEffects/Effects/EntitySpawning/BaseSpawnEntityEntityEffect.cs +++ b/Content.Shared/EntityEffects/Effects/EntitySpawning/BaseSpawnEntityEntityEffect.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; namespace Content.Shared.EntityEffects.Effects.EntitySpawning; diff --git a/Content.Shared/EntityEffects/Effects/EntitySpawning/SpawnEntityEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/EntitySpawning/SpawnEntityEntityEffectSystem.cs index 25e828495d..cde6a8266b 100644 --- a/Content.Shared/EntityEffects/Effects/EntitySpawning/SpawnEntityEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/EntitySpawning/SpawnEntityEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Network; +using Robust.Shared.Network; namespace Content.Shared.EntityEffects.Effects.EntitySpawning; diff --git a/Content.Shared/EntityEffects/Effects/EntitySpawning/SpawnEntityInContainerEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/EntitySpawning/SpawnEntityInContainerEntityEffectSystem.cs index 2d6b851f51..a0eed98c55 100644 --- a/Content.Shared/EntityEffects/Effects/EntitySpawning/SpawnEntityInContainerEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/EntitySpawning/SpawnEntityInContainerEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Containers; +using Robust.Shared.Containers; using Robust.Shared.Network; namespace Content.Shared.EntityEffects.Effects.EntitySpawning; diff --git a/Content.Shared/EntityEffects/Effects/EntitySpawning/SpawnEntityInContainerOrDropEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/EntitySpawning/SpawnEntityInContainerOrDropEntityEffectSystem.cs index b59eebf23a..9c22c8c7df 100644 --- a/Content.Shared/EntityEffects/Effects/EntitySpawning/SpawnEntityInContainerOrDropEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/EntitySpawning/SpawnEntityInContainerOrDropEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Containers; +using Robust.Shared.Containers; using Robust.Shared.Network; namespace Content.Shared.EntityEffects.Effects.EntitySpawning; diff --git a/Content.Shared/EntityEffects/Effects/EntitySpawning/SpawnEntityInInventoryEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/EntitySpawning/SpawnEntityInInventoryEntityEffectSystem.cs index 818560427b..158cffe4fb 100644 --- a/Content.Shared/EntityEffects/Effects/EntitySpawning/SpawnEntityInInventoryEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/EntitySpawning/SpawnEntityInInventoryEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Inventory; +using Content.Shared.Inventory; using Robust.Shared.Prototypes; namespace Content.Shared.EntityEffects.Effects.EntitySpawning; diff --git a/Content.Shared/EntityEffects/Effects/ExplodeEntityEffect.cs b/Content.Shared/EntityEffects/Effects/ExplodeEntityEffect.cs index ecad4e47ad..a2f3b065bf 100644 --- a/Content.Shared/EntityEffects/Effects/ExplodeEntityEffect.cs +++ b/Content.Shared/EntityEffects/Effects/ExplodeEntityEffect.cs @@ -1,4 +1,4 @@ -using Content.Shared.Database; +using Content.Shared.Database; using Content.Shared.EntityEffects.Effects.Transform; using Robust.Shared.Prototypes; diff --git a/Content.Shared/EntityEffects/Effects/GlowEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/GlowEntityEffectSystem.cs index 424d6ea284..775fdb5378 100644 --- a/Content.Shared/EntityEffects/Effects/GlowEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/GlowEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Network; +using Robust.Shared.Network; using Robust.Shared.Random; namespace Content.Shared.EntityEffects.Effects; diff --git a/Content.Shared/EntityEffects/Effects/MakeSentientEntityEffect.cs b/Content.Shared/EntityEffects/Effects/MakeSentientEntityEffect.cs index 4beb21454c..aa9b1b3eba 100644 --- a/Content.Shared/EntityEffects/Effects/MakeSentientEntityEffect.cs +++ b/Content.Shared/EntityEffects/Effects/MakeSentientEntityEffect.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; namespace Content.Shared.EntityEffects.Effects; diff --git a/Content.Shared/EntityEffects/Effects/PolymorphEntityEffect.cs b/Content.Shared/EntityEffects/Effects/PolymorphEntityEffect.cs index c0d80dffaa..b0343cdb05 100644 --- a/Content.Shared/EntityEffects/Effects/PolymorphEntityEffect.cs +++ b/Content.Shared/EntityEffects/Effects/PolymorphEntityEffect.cs @@ -1,4 +1,4 @@ -using Content.Shared.Polymorph; +using Content.Shared.Polymorph; using Robust.Shared.Prototypes; namespace Content.Shared.EntityEffects.Effects; diff --git a/Content.Shared/EntityEffects/Effects/ResetNarcolepsyEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/ResetNarcolepsyEntityEffectSystem.cs index 19d6fde731..a491737faf 100644 --- a/Content.Shared/EntityEffects/Effects/ResetNarcolepsyEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/ResetNarcolepsyEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Traits.Assorted; +using Content.Shared.Traits.Assorted; using Robust.Shared.Prototypes; namespace Content.Shared.EntityEffects.Effects; diff --git a/Content.Shared/EntityEffects/Effects/SlipifyEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/SlipifyEntityEffectSystem.cs index 9632a08b09..c6c28753b5 100644 --- a/Content.Shared/EntityEffects/Effects/SlipifyEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/SlipifyEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Shared.Physics; using Content.Shared.Slippery; using Content.Shared.StepTrigger.Components; diff --git a/Content.Shared/EntityEffects/Effects/Solution/AddReagentToSolutionEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/Solution/AddReagentToSolutionEntityEffectSystem.cs index 28ceb59138..c97f81f555 100644 --- a/Content.Shared/EntityEffects/Effects/Solution/AddReagentToSolutionEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/Solution/AddReagentToSolutionEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Components.SolutionManager; using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reagent; diff --git a/Content.Shared/EntityEffects/Effects/Solution/AdjustReagentEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/Solution/AdjustReagentEntityEffectSystem.cs index 9fad33348c..78459db2ff 100644 --- a/Content.Shared/EntityEffects/Effects/Solution/AdjustReagentEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/Solution/AdjustReagentEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reagent; using Content.Shared.FixedPoint; diff --git a/Content.Shared/EntityEffects/Effects/Solution/AreaReactionEntityEffect.cs b/Content.Shared/EntityEffects/Effects/Solution/AreaReactionEntityEffect.cs index 13175cfed1..a49abc1641 100644 --- a/Content.Shared/EntityEffects/Effects/Solution/AreaReactionEntityEffect.cs +++ b/Content.Shared/EntityEffects/Effects/Solution/AreaReactionEntityEffect.cs @@ -1,4 +1,4 @@ -using Content.Shared.Database; +using Content.Shared.Database; using Robust.Shared.Audio; using Robust.Shared.Prototypes; diff --git a/Content.Shared/EntityEffects/Effects/Solution/SolutionTemperatureEntityEffectsSystem.cs b/Content.Shared/EntityEffects/Effects/Solution/SolutionTemperatureEntityEffectsSystem.cs index 918f857985..6f222f4a22 100644 --- a/Content.Shared/EntityEffects/Effects/Solution/SolutionTemperatureEntityEffectsSystem.cs +++ b/Content.Shared/EntityEffects/Effects/Solution/SolutionTemperatureEntityEffectsSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.EntitySystems; using Robust.Shared.Prototypes; diff --git a/Content.Shared/EntityEffects/Effects/StatusEffects/BaseStatusEffectEntityEffect.cs b/Content.Shared/EntityEffects/Effects/StatusEffects/BaseStatusEffectEntityEffect.cs index b028da1595..091192ec7c 100644 --- a/Content.Shared/EntityEffects/Effects/StatusEffects/BaseStatusEffectEntityEffect.cs +++ b/Content.Shared/EntityEffects/Effects/StatusEffects/BaseStatusEffectEntityEffect.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.EntityEffects.Effects.StatusEffects; +namespace Content.Shared.EntityEffects.Effects.StatusEffects; /// /// Entity effect that specifically deals with new status effects. diff --git a/Content.Shared/EntityEffects/Effects/StatusEffects/DrunkEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/StatusEffects/DrunkEntityEffectSystem.cs index 9a4716196b..9808c3bba3 100644 --- a/Content.Shared/EntityEffects/Effects/StatusEffects/DrunkEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/StatusEffects/DrunkEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Drunk; +using Content.Shared.Drunk; using Robust.Shared.Prototypes; namespace Content.Shared.EntityEffects.Effects.StatusEffects; diff --git a/Content.Shared/EntityEffects/Effects/StatusEffects/ElectrocuteEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/StatusEffects/ElectrocuteEntityEffectSystem.cs index 950f38e18b..07e49c3b40 100644 --- a/Content.Shared/EntityEffects/Effects/StatusEffects/ElectrocuteEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/StatusEffects/ElectrocuteEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Electrocution; +using Content.Shared.Electrocution; using Content.Shared.StatusEffect; using Robust.Shared.Prototypes; diff --git a/Content.Shared/EntityEffects/Effects/StatusEffects/GenericStatusEffectEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/StatusEffects/GenericStatusEffectEntityEffectSystem.cs index 73bb5d8f96..c78808524f 100644 --- a/Content.Shared/EntityEffects/Effects/StatusEffects/GenericStatusEffectEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/StatusEffects/GenericStatusEffectEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.StatusEffect; +using Content.Shared.StatusEffect; using Robust.Shared.Prototypes; namespace Content.Shared.EntityEffects.Effects.StatusEffects; diff --git a/Content.Shared/EntityEffects/Effects/StatusEffects/JitterEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/StatusEffects/JitterEntityEffectSystem.cs index 8cc1fd84bc..4e31c869c9 100644 --- a/Content.Shared/EntityEffects/Effects/StatusEffects/JitterEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/StatusEffects/JitterEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Jittering; +using Content.Shared.Jittering; using Content.Shared.StatusEffect; using Robust.Shared.Prototypes; diff --git a/Content.Shared/EntityEffects/Effects/StatusEffects/ModifyKnockdownEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/StatusEffects/ModifyKnockdownEntityEffectSystem.cs index d89f21427e..d208592d16 100644 --- a/Content.Shared/EntityEffects/Effects/StatusEffects/ModifyKnockdownEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/StatusEffects/ModifyKnockdownEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Standing; +using Content.Shared.Standing; using Content.Shared.Stunnable; using Robust.Shared.Prototypes; diff --git a/Content.Shared/EntityEffects/Effects/StatusEffects/ModifyParalysisEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/StatusEffects/ModifyParalysisEntityEffectSystem.cs index efd37bb258..316e0c6552 100644 --- a/Content.Shared/EntityEffects/Effects/StatusEffects/ModifyParalysisEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/StatusEffects/ModifyParalysisEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.StatusEffectNew; +using Content.Shared.StatusEffectNew; using Content.Shared.Stunnable; using Robust.Shared.Prototypes; diff --git a/Content.Shared/EntityEffects/Effects/StatusEffects/ModifyStatusEffectEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/StatusEffects/ModifyStatusEffectEntityEffectSystem.cs index ca784fc4e0..f7f20f5ccd 100644 --- a/Content.Shared/EntityEffects/Effects/StatusEffects/ModifyStatusEffectEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/StatusEffects/ModifyStatusEffectEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.StatusEffectNew; +using Content.Shared.StatusEffectNew; using Robust.Shared.Prototypes; namespace Content.Shared.EntityEffects.Effects.StatusEffects; diff --git a/Content.Shared/EntityEffects/Effects/StatusEffects/MovementSpeedModifierEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/StatusEffects/MovementSpeedModifierEntityEffectSystem.cs index 36c461c68a..87be19692c 100644 --- a/Content.Shared/EntityEffects/Effects/StatusEffects/MovementSpeedModifierEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/StatusEffects/MovementSpeedModifierEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Movement.Components; +using Content.Shared.Movement.Components; using Content.Shared.Movement.Systems; using Content.Shared.StatusEffectNew; using Robust.Shared.Prototypes; diff --git a/Content.Shared/EntityEffects/Effects/TemplateEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/TemplateEntityEffectSystem.cs index ea7c2dc8d4..2ab85795d4 100644 --- a/Content.Shared/EntityEffects/Effects/TemplateEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/TemplateEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; namespace Content.Shared.EntityEffects.Effects; diff --git a/Content.Shared/EntityEffects/Effects/Transform/EmpEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/Transform/EmpEntityEffectSystem.cs index b5c516899e..b3b006a140 100644 --- a/Content.Shared/EntityEffects/Effects/Transform/EmpEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/Transform/EmpEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Database; +using Content.Shared.Database; using Content.Shared.Emp; using Robust.Shared.Prototypes; diff --git a/Content.Shared/EntityEffects/Effects/Transform/ExplosionEntityEffect.cs b/Content.Shared/EntityEffects/Effects/Transform/ExplosionEntityEffect.cs index 907c4e321f..3bf77361f1 100644 --- a/Content.Shared/EntityEffects/Effects/Transform/ExplosionEntityEffect.cs +++ b/Content.Shared/EntityEffects/Effects/Transform/ExplosionEntityEffect.cs @@ -1,4 +1,4 @@ -using Content.Shared.Database; +using Content.Shared.Database; using Content.Shared.Explosion; using Robust.Shared.Prototypes; diff --git a/Content.Shared/EntityEffects/Effects/Transform/PopupMessageEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/Transform/PopupMessageEntityEffectSystem.cs index 917e3000a8..c5c3e9a0b1 100644 --- a/Content.Shared/EntityEffects/Effects/Transform/PopupMessageEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/Transform/PopupMessageEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Popups; +using Content.Shared.Popups; using Robust.Shared.Network; using Robust.Shared.Random; using Robust.Shared.Serialization; diff --git a/Content.Shared/EntityEffects/Effects/VariationPass/EntitySpawnVariationPassEntityEffect.cs b/Content.Shared/EntityEffects/Effects/VariationPass/EntitySpawnVariationPassEntityEffect.cs index cdfad8e848..2a9ac1f231 100644 --- a/Content.Shared/EntityEffects/Effects/VariationPass/EntitySpawnVariationPassEntityEffect.cs +++ b/Content.Shared/EntityEffects/Effects/VariationPass/EntitySpawnVariationPassEntityEffect.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Shared.EntityTable; using Content.Shared.EntityTable.EntitySelectors; using Content.Shared.Physics; diff --git a/Content.Shared/EntityEffects/Effects/WashCreamPieEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/WashCreamPieEntityEffectSystem.cs index 32a9863c1b..e53f808580 100644 --- a/Content.Shared/EntityEffects/Effects/WashCreamPieEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/WashCreamPieEntityEffectSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Nutrition.Components; +using Content.Shared.Nutrition.Components; using Content.Shared.Nutrition.EntitySystems; using Robust.Shared.Prototypes; diff --git a/Content.Shared/EntityEffects/Effects/ZombieEntityEffectsSystem.cs b/Content.Shared/EntityEffects/Effects/ZombieEntityEffectsSystem.cs index ea0e6f0e34..7dae4afd86 100644 --- a/Content.Shared/EntityEffects/Effects/ZombieEntityEffectsSystem.cs +++ b/Content.Shared/EntityEffects/Effects/ZombieEntityEffectsSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Mobs.Components; +using Content.Shared.Mobs.Components; using Content.Shared.Zombies; using Robust.Shared.Prototypes; diff --git a/Content.Shared/EntityEffects/EntityEffectOnMapInitComponent.cs b/Content.Shared/EntityEffects/EntityEffectOnMapInitComponent.cs index 64d51dfdb4..4339237165 100644 --- a/Content.Shared/EntityEffects/EntityEffectOnMapInitComponent.cs +++ b/Content.Shared/EntityEffects/EntityEffectOnMapInitComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.EntityEffects; +namespace Content.Shared.EntityEffects; /// /// Applies a set of EntityEffects to the entity upon map initialization. diff --git a/Content.Shared/EntityTable/Conditions/ReoccurrenceDelayCondition.cs b/Content.Shared/EntityTable/Conditions/ReoccurrenceDelayCondition.cs index 3edfdca35f..d4362bf039 100644 --- a/Content.Shared/EntityTable/Conditions/ReoccurrenceDelayCondition.cs +++ b/Content.Shared/EntityTable/Conditions/ReoccurrenceDelayCondition.cs @@ -1,4 +1,4 @@ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; using System.Linq; using Content.Shared.EntityTable.EntitySelectors; using Content.Shared.GameTicking; diff --git a/Content.Shared/Eui/EuiMessageBase.cs b/Content.Shared/Eui/EuiMessageBase.cs index 6ed2b7c49b..12086a8279 100644 --- a/Content.Shared/Eui/EuiMessageBase.cs +++ b/Content.Shared/Eui/EuiMessageBase.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Eui { diff --git a/Content.Shared/Eui/EuiStateBase.cs b/Content.Shared/Eui/EuiStateBase.cs index 4c67795581..80ba33c181 100644 --- a/Content.Shared/Eui/EuiStateBase.cs +++ b/Content.Shared/Eui/EuiStateBase.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Eui { diff --git a/Content.Shared/Eui/MsgEuiCtl.cs b/Content.Shared/Eui/MsgEuiCtl.cs index d1bac580cd..3f81085055 100644 --- a/Content.Shared/Eui/MsgEuiCtl.cs +++ b/Content.Shared/Eui/MsgEuiCtl.cs @@ -1,4 +1,4 @@ -using Lidgren.Network; +using Lidgren.Network; using Robust.Shared.Network; using Robust.Shared.Serialization; diff --git a/Content.Shared/Explosion/Components/ScatteringGrenadeComponent.cs b/Content.Shared/Explosion/Components/ScatteringGrenadeComponent.cs index 83be128d07..bdfd42fc02 100644 --- a/Content.Shared/Explosion/Components/ScatteringGrenadeComponent.cs +++ b/Content.Shared/Explosion/Components/ScatteringGrenadeComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Explosion.EntitySystems; +using Content.Shared.Explosion.EntitySystems; using Content.Shared.Whitelist; using Robust.Shared.Containers; using Robust.Shared.GameStates; diff --git a/Content.Shared/Explosion/EntitySystems/SharedScatteringGrenadeSystem.cs b/Content.Shared/Explosion/EntitySystems/SharedScatteringGrenadeSystem.cs index 4f05602746..39f4ab9fa0 100644 --- a/Content.Shared/Explosion/EntitySystems/SharedScatteringGrenadeSystem.cs +++ b/Content.Shared/Explosion/EntitySystems/SharedScatteringGrenadeSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Explosion.Components; +using Content.Shared.Explosion.Components; using Content.Shared.Interaction; using Content.Shared.Whitelist; using Robust.Shared.Containers; diff --git a/Content.Shared/Fax/FaxPayloads.cs b/Content.Shared/Fax/FaxPayloads.cs index 177e158bfa..7eb1b4264a 100644 --- a/Content.Shared/Fax/FaxPayloads.cs +++ b/Content.Shared/Fax/FaxPayloads.cs @@ -1,4 +1,4 @@ -using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork; using Content.Shared.Fax.Components; namespace Content.Shared.Fax; diff --git a/Content.Shared/FeedbackSystem/FeedbackPopupMessage.cs b/Content.Shared/FeedbackSystem/FeedbackPopupMessage.cs index 9b5d7898e1..bcd37cf930 100644 --- a/Content.Shared/FeedbackSystem/FeedbackPopupMessage.cs +++ b/Content.Shared/FeedbackSystem/FeedbackPopupMessage.cs @@ -1,4 +1,4 @@ -using Lidgren.Network; +using Lidgren.Network; using Robust.Shared.Network; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; diff --git a/Content.Shared/FeedbackSystem/FeedbackPopupPrototype.cs b/Content.Shared/FeedbackSystem/FeedbackPopupPrototype.cs index 3bd1a5b5ac..e36c6d9a8b 100644 --- a/Content.Shared/FeedbackSystem/FeedbackPopupPrototype.cs +++ b/Content.Shared/FeedbackSystem/FeedbackPopupPrototype.cs @@ -1,4 +1,4 @@ -using Content.Shared.Whitelist; +using Content.Shared.Whitelist; using Robust.Shared.Prototypes; namespace Content.Shared.FeedbackSystem; diff --git a/Content.Shared/FeedbackSystem/SharedFeedbackManager.Events.cs b/Content.Shared/FeedbackSystem/SharedFeedbackManager.Events.cs index 995c1e7e5e..49192a1101 100644 --- a/Content.Shared/FeedbackSystem/SharedFeedbackManager.Events.cs +++ b/Content.Shared/FeedbackSystem/SharedFeedbackManager.Events.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Shared.CCVar; using Content.Shared.GameTicking; using Robust.Shared.Configuration; diff --git a/Content.Shared/FeedbackSystem/SharedFeedbackManager.cs b/Content.Shared/FeedbackSystem/SharedFeedbackManager.cs index e0b9038106..779e9af284 100644 --- a/Content.Shared/FeedbackSystem/SharedFeedbackManager.cs +++ b/Content.Shared/FeedbackSystem/SharedFeedbackManager.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Robust.Shared.Network; using Robust.Shared.Player; using Robust.Shared.Prototypes; diff --git a/Content.Shared/FixedPoint/FixedPoint4.cs b/Content.Shared/FixedPoint/FixedPoint4.cs index b17587f684..528c6a55ab 100644 --- a/Content.Shared/FixedPoint/FixedPoint4.cs +++ b/Content.Shared/FixedPoint/FixedPoint4.cs @@ -1,4 +1,4 @@ -using System.Globalization; +using System.Globalization; using System.Linq; using Robust.Shared.Serialization; using Robust.Shared.Utility; diff --git a/Content.Shared/Fluids/Components/EvaporationComponent.cs b/Content.Shared/Fluids/Components/EvaporationComponent.cs index b3b3ac12d4..b96ff69efc 100644 --- a/Content.Shared/Fluids/Components/EvaporationComponent.cs +++ b/Content.Shared/Fluids/Components/EvaporationComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.FixedPoint; +using Content.Shared.FixedPoint; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; diff --git a/Content.Shared/Fluids/PuddleVisuals.cs b/Content.Shared/Fluids/PuddleVisuals.cs index b50f084ba8..60d8aec3cb 100644 --- a/Content.Shared/Fluids/PuddleVisuals.cs +++ b/Content.Shared/Fluids/PuddleVisuals.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Fluids { diff --git a/Content.Shared/Fluids/SharedPuddleDebugOverlaySystem.cs b/Content.Shared/Fluids/SharedPuddleDebugOverlaySystem.cs index 6f6d56cf60..556be15500 100644 --- a/Content.Shared/Fluids/SharedPuddleDebugOverlaySystem.cs +++ b/Content.Shared/Fluids/SharedPuddleDebugOverlaySystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.FixedPoint; +using Content.Shared.FixedPoint; using Robust.Shared.Serialization; namespace Content.Shared.Fluids; diff --git a/Content.Shared/Fluids/SharedSprayComponent.cs b/Content.Shared/Fluids/SharedSprayComponent.cs index f00d4e0c00..074662bd6b 100644 --- a/Content.Shared/Fluids/SharedSprayComponent.cs +++ b/Content.Shared/Fluids/SharedSprayComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Fluids { diff --git a/Content.Shared/Foldable/DeployFoldableComponent.cs b/Content.Shared/Foldable/DeployFoldableComponent.cs index 4ccca6b742..b1fae4baa3 100644 --- a/Content.Shared/Foldable/DeployFoldableComponent.cs +++ b/Content.Shared/Foldable/DeployFoldableComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Foldable; diff --git a/Content.Shared/Follower/Components/OrbitVisualsComponent.cs b/Content.Shared/Follower/Components/OrbitVisualsComponent.cs index 47ea0a523f..17259a7cb5 100644 --- a/Content.Shared/Follower/Components/OrbitVisualsComponent.cs +++ b/Content.Shared/Follower/Components/OrbitVisualsComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Animations; +using Robust.Shared.Animations; using Robust.Shared.GameStates; namespace Content.Shared.Follower.Components; diff --git a/Content.Shared/Forensics/Components/DnaComponent.cs b/Content.Shared/Forensics/Components/DnaComponent.cs index a9d2f7ea8b..611f96ff58 100644 --- a/Content.Shared/Forensics/Components/DnaComponent.cs +++ b/Content.Shared/Forensics/Components/DnaComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Forensics.Components; diff --git a/Content.Shared/GameTicking/Components/ActiveGameRuleComponent.cs b/Content.Shared/GameTicking/Components/ActiveGameRuleComponent.cs index 6b535465d0..c9b5da2bb2 100644 --- a/Content.Shared/GameTicking/Components/ActiveGameRuleComponent.cs +++ b/Content.Shared/GameTicking/Components/ActiveGameRuleComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.GameTicking.Components; +namespace Content.Shared.GameTicking.Components; /// /// Added to game rules before and removed before . diff --git a/Content.Shared/GameTicking/Events/RoundStartingEvent.cs b/Content.Shared/GameTicking/Events/RoundStartingEvent.cs index a3a81bd263..541745adcc 100644 --- a/Content.Shared/GameTicking/Events/RoundStartingEvent.cs +++ b/Content.Shared/GameTicking/Events/RoundStartingEvent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.GameTicking.Events; +namespace Content.Shared.GameTicking.Events; /// /// Raised at the start of , after round id has been incremented diff --git a/Content.Shared/GameTicking/PlayerBeforeSpawnEvent.cs b/Content.Shared/GameTicking/PlayerBeforeSpawnEvent.cs index 48623ecf8e..efcaba389d 100644 --- a/Content.Shared/GameTicking/PlayerBeforeSpawnEvent.cs +++ b/Content.Shared/GameTicking/PlayerBeforeSpawnEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Preferences; +using Content.Shared.Preferences; using JetBrains.Annotations; using Robust.Shared.Player; diff --git a/Content.Shared/GameTicking/PlayerSpawnCompleteEvent.cs b/Content.Shared/GameTicking/PlayerSpawnCompleteEvent.cs index 034b76beeb..2b19194331 100644 --- a/Content.Shared/GameTicking/PlayerSpawnCompleteEvent.cs +++ b/Content.Shared/GameTicking/PlayerSpawnCompleteEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Preferences; +using Content.Shared.Preferences; using JetBrains.Annotations; using Robust.Shared.Player; diff --git a/Content.Shared/GameTicking/RoundRestartCleanupEvent.cs b/Content.Shared/GameTicking/RoundRestartCleanupEvent.cs index 8dae533129..d754704a93 100644 --- a/Content.Shared/GameTicking/RoundRestartCleanupEvent.cs +++ b/Content.Shared/GameTicking/RoundRestartCleanupEvent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.GameTicking diff --git a/Content.Shared/GameTicking/Rules/Components/ChangelingRuleComponent.cs b/Content.Shared/GameTicking/Rules/Components/ChangelingRuleComponent.cs index dc60f0b534..b1f339fa2e 100644 --- a/Content.Shared/GameTicking/Rules/Components/ChangelingRuleComponent.cs +++ b/Content.Shared/GameTicking/Rules/Components/ChangelingRuleComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.GameTicking.Rules.Components; +namespace Content.Shared.GameTicking.Rules.Components; /// /// Gamerule component for handling a changeling antagonist. diff --git a/Content.Shared/GameTicking/Rules/Components/RoundstartStationVariationRuleComponent.cs b/Content.Shared/GameTicking/Rules/Components/RoundstartStationVariationRuleComponent.cs index 77e4c5e82b..7cc4f163ff 100644 --- a/Content.Shared/GameTicking/Rules/Components/RoundstartStationVariationRuleComponent.cs +++ b/Content.Shared/GameTicking/Rules/Components/RoundstartStationVariationRuleComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Storage; +using Content.Shared.Storage; namespace Content.Shared.GameTicking.Rules.Components; diff --git a/Content.Shared/GameTicking/Rules/Components/StationVariationPassRuleComponent.cs b/Content.Shared/GameTicking/Rules/Components/StationVariationPassRuleComponent.cs index abfbb65116..c35e7f4c81 100644 --- a/Content.Shared/GameTicking/Rules/Components/StationVariationPassRuleComponent.cs +++ b/Content.Shared/GameTicking/Rules/Components/StationVariationPassRuleComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.GameTicking.Rules.Components; +namespace Content.Shared.GameTicking.Rules.Components; /// /// This is a marker component placed on rule entities which are a single "pass" of station variation. diff --git a/Content.Shared/GameTicking/Rules/Components/SurvivorRuleComponent.cs b/Content.Shared/GameTicking/Rules/Components/SurvivorRuleComponent.cs index 08d1ccedc2..f3572ce4bc 100644 --- a/Content.Shared/GameTicking/Rules/Components/SurvivorRuleComponent.cs +++ b/Content.Shared/GameTicking/Rules/Components/SurvivorRuleComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.GameTicking.Rules.Components; +namespace Content.Shared.GameTicking.Rules.Components; /// /// Component for the SurvivorRuleSystem. Game rule that turns everyone into a survivor and gives them the objective to escape centcom alive. diff --git a/Content.Shared/GameWindow/RequestWindowAttentionEvent.cs b/Content.Shared/GameWindow/RequestWindowAttentionEvent.cs index a587d7dda9..de6cf1d1b5 100644 --- a/Content.Shared/GameWindow/RequestWindowAttentionEvent.cs +++ b/Content.Shared/GameWindow/RequestWindowAttentionEvent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.GameWindow { diff --git a/Content.Shared/Ghost/ReturnToBodyEuiMessage.cs b/Content.Shared/Ghost/ReturnToBodyEuiMessage.cs index 3e2c99cde5..38404acc13 100644 --- a/Content.Shared/Ghost/ReturnToBodyEuiMessage.cs +++ b/Content.Shared/Ghost/ReturnToBodyEuiMessage.cs @@ -1,4 +1,4 @@ -using Content.Shared.Eui; +using Content.Shared.Eui; using Robust.Shared.Serialization; namespace Content.Shared.Ghost; diff --git a/Content.Shared/Ghost/Roles/MakeGhostRoleEuiState.cs b/Content.Shared/Ghost/Roles/MakeGhostRoleEuiState.cs index e17ab4aab3..e260201dea 100644 --- a/Content.Shared/Ghost/Roles/MakeGhostRoleEuiState.cs +++ b/Content.Shared/Ghost/Roles/MakeGhostRoleEuiState.cs @@ -1,4 +1,4 @@ -using Content.Shared.Eui; +using Content.Shared.Eui; using Robust.Shared.Serialization; namespace Content.Shared.Ghost.Roles diff --git a/Content.Shared/Ghost/Roles/Raffles/GhostRoleRaffleSettings.cs b/Content.Shared/Ghost/Roles/Raffles/GhostRoleRaffleSettings.cs index 4f31bb7182..69bfa82588 100644 --- a/Content.Shared/Ghost/Roles/Raffles/GhostRoleRaffleSettings.cs +++ b/Content.Shared/Ghost/Roles/Raffles/GhostRoleRaffleSettings.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Ghost.Roles.Raffles; +namespace Content.Shared.Ghost.Roles.Raffles; /// /// Defines settings for a ghost role raffle. diff --git a/Content.Shared/Ghost/Roles/Raffles/GhostRoleRaffleSettingsPrototype.cs b/Content.Shared/Ghost/Roles/Raffles/GhostRoleRaffleSettingsPrototype.cs index 18ebff556a..6f381a36dd 100644 --- a/Content.Shared/Ghost/Roles/Raffles/GhostRoleRaffleSettingsPrototype.cs +++ b/Content.Shared/Ghost/Roles/Raffles/GhostRoleRaffleSettingsPrototype.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; namespace Content.Shared.Ghost.Roles.Raffles; diff --git a/Content.Shared/GhostKick/MsgGhostKick.cs b/Content.Shared/GhostKick/MsgGhostKick.cs index 1beab4e7d8..f47aa9473c 100644 --- a/Content.Shared/GhostKick/MsgGhostKick.cs +++ b/Content.Shared/GhostKick/MsgGhostKick.cs @@ -1,4 +1,4 @@ -using Lidgren.Network; +using Lidgren.Network; using Robust.Shared.Network; using Robust.Shared.Serialization; diff --git a/Content.Shared/Gibbing/GibOnRoundEndComponent.cs b/Content.Shared/Gibbing/GibOnRoundEndComponent.cs index 5ce8edbd25..787c91f800 100644 --- a/Content.Shared/Gibbing/GibOnRoundEndComponent.cs +++ b/Content.Shared/Gibbing/GibOnRoundEndComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; namespace Content.Shared.Gibbing.Components; diff --git a/Content.Shared/GlobalUsings.cs b/Content.Shared/GlobalUsings.cs index d380dda30f..3755778476 100644 --- a/Content.Shared/GlobalUsings.cs +++ b/Content.Shared/GlobalUsings.cs @@ -1,4 +1,4 @@ -// There isn't really a 'default place' to put these, +// There isn't really a 'default place' to put these, // so a file in the project top level directory it is global using System; diff --git a/Content.Shared/Gravity/GravityAffectedComponent.cs b/Content.Shared/Gravity/GravityAffectedComponent.cs index 31651002da..87913a03e9 100644 --- a/Content.Shared/Gravity/GravityAffectedComponent.cs +++ b/Content.Shared/Gravity/GravityAffectedComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Gravity; diff --git a/Content.Shared/Guardian/GuardianToggleActionEvent.cs b/Content.Shared/Guardian/GuardianToggleActionEvent.cs index 15328984fe..2d8c21e316 100644 --- a/Content.Shared/Guardian/GuardianToggleActionEvent.cs +++ b/Content.Shared/Guardian/GuardianToggleActionEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Actions; +using Content.Shared.Actions; namespace Content.Shared.Guardian; diff --git a/Content.Shared/HUD/HudThemePrototype.cs b/Content.Shared/HUD/HudThemePrototype.cs index 17898eb756..446725cd3d 100644 --- a/Content.Shared/HUD/HudThemePrototype.cs +++ b/Content.Shared/HUD/HudThemePrototype.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; namespace Content.Shared.HUD { diff --git a/Content.Shared/Hands/Components/PreventForcedThrowComponent.cs b/Content.Shared/Hands/Components/PreventForcedThrowComponent.cs index 830eee7e7a..1b15086e44 100644 --- a/Content.Shared/Hands/Components/PreventForcedThrowComponent.cs +++ b/Content.Shared/Hands/Components/PreventForcedThrowComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Hands.Components; diff --git a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.EventListeners.cs b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.EventListeners.cs index 77898fcd75..3e21cae7e2 100644 --- a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.EventListeners.cs +++ b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.EventListeners.cs @@ -1,4 +1,4 @@ -using Content.Shared.Hands.Components; +using Content.Shared.Hands.Components; using Content.Shared.Standing; using Content.Shared.Stunnable; diff --git a/Content.Shared/HijackBeacon/ActiveHijackBeaconComponent.cs b/Content.Shared/HijackBeacon/ActiveHijackBeaconComponent.cs index b6f1d60c79..9c7d50f641 100644 --- a/Content.Shared/HijackBeacon/ActiveHijackBeaconComponent.cs +++ b/Content.Shared/HijackBeacon/ActiveHijackBeaconComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.HijackBeacon; diff --git a/Content.Shared/Humanoid/HumanoidCharacterAppearance.cs b/Content.Shared/Humanoid/HumanoidCharacterAppearance.cs index cd4d703a33..d26e5e2864 100644 --- a/Content.Shared/Humanoid/HumanoidCharacterAppearance.cs +++ b/Content.Shared/Humanoid/HumanoidCharacterAppearance.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Content.Shared.Body; using Content.Shared.Humanoid.Markings; using Content.Shared.Humanoid.Prototypes; diff --git a/Content.Shared/Humanoid/HumanoidVisualLayers.cs b/Content.Shared/Humanoid/HumanoidVisualLayers.cs index 885f541f70..b1df9b032b 100644 --- a/Content.Shared/Humanoid/HumanoidVisualLayers.cs +++ b/Content.Shared/Humanoid/HumanoidVisualLayers.cs @@ -1,4 +1,4 @@ -using Content.Shared.Humanoid.Markings; +using Content.Shared.Humanoid.Markings; using Robust.Shared.Serialization; namespace Content.Shared.Humanoid diff --git a/Content.Shared/Humanoid/Sex.cs b/Content.Shared/Humanoid/Sex.cs index fd69c3af0c..c9dcbb1625 100644 --- a/Content.Shared/Humanoid/Sex.cs +++ b/Content.Shared/Humanoid/Sex.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Humanoid +namespace Content.Shared.Humanoid { // You need to update profile, profile editor, maybe voices and names if you want to expand this further. public enum Sex : byte diff --git a/Content.Shared/Humanoid/Voice.cs b/Content.Shared/Humanoid/Voice.cs index 703f43bffd..c93ecf90b0 100644 --- a/Content.Shared/Humanoid/Voice.cs +++ b/Content.Shared/Humanoid/Voice.cs @@ -1,4 +1,4 @@ -using Content.Shared.Chat.Prototypes; +using Content.Shared.Chat.Prototypes; using Robust.Shared.Prototypes; namespace Content.Shared.Humanoid; diff --git a/Content.Shared/IdentityManagement/Components/IdentityComponent.cs b/Content.Shared/IdentityManagement/Components/IdentityComponent.cs index 778066361f..b94b7fa909 100644 --- a/Content.Shared/IdentityManagement/Components/IdentityComponent.cs +++ b/Content.Shared/IdentityManagement/Components/IdentityComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Containers; +using Robust.Shared.Containers; using Robust.Shared.Enums; using Robust.Shared.GameStates; diff --git a/Content.Shared/IgnitionSource/IgnitionSourceComponent.cs b/Content.Shared/IgnitionSource/IgnitionSourceComponent.cs index 636bfbb22a..8455583fba 100644 --- a/Content.Shared/IgnitionSource/IgnitionSourceComponent.cs +++ b/Content.Shared/IgnitionSource/IgnitionSourceComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.IgnitionSource; diff --git a/Content.Shared/Implants/ChameleonControllerImplantComponent.cs b/Content.Shared/Implants/ChameleonControllerImplantComponent.cs index d1874b6985..47461f767c 100644 --- a/Content.Shared/Implants/ChameleonControllerImplantComponent.cs +++ b/Content.Shared/Implants/ChameleonControllerImplantComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Actions; +using Content.Shared.Actions; using Content.Shared.Inventory; using Content.Shared.Preferences.Loadouts; using Content.Shared.Roles; diff --git a/Content.Shared/Implants/Components/RadioImplantComponent.cs b/Content.Shared/Implants/Components/RadioImplantComponent.cs index e0e7f55646..1de8b6c36d 100644 --- a/Content.Shared/Implants/Components/RadioImplantComponent.cs +++ b/Content.Shared/Implants/Components/RadioImplantComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Radio; +using Content.Shared.Radio; using Robust.Shared.Prototypes; namespace Content.Shared.Implants.Components; diff --git a/Content.Shared/Implants/SharedChameleonControllerSystem.cs b/Content.Shared/Implants/SharedChameleonControllerSystem.cs index 878bf3624e..a603f10ce4 100644 --- a/Content.Shared/Implants/SharedChameleonControllerSystem.cs +++ b/Content.Shared/Implants/SharedChameleonControllerSystem.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; namespace Content.Shared.Implants; diff --git a/Content.Shared/Interaction/BeforeInteract.cs b/Content.Shared/Interaction/BeforeInteract.cs index d6603f8c96..9a2a720ca3 100644 --- a/Content.Shared/Interaction/BeforeInteract.cs +++ b/Content.Shared/Interaction/BeforeInteract.cs @@ -1,4 +1,4 @@ -using JetBrains.Annotations; +using JetBrains.Annotations; using Robust.Shared.Map; namespace Content.Shared.Interaction diff --git a/Content.Shared/Interaction/Components/BypassInteractionChecksComponent.cs b/Content.Shared/Interaction/Components/BypassInteractionChecksComponent.cs index ca0ff96315..e2c08d911a 100644 --- a/Content.Shared/Interaction/Components/BypassInteractionChecksComponent.cs +++ b/Content.Shared/Interaction/Components/BypassInteractionChecksComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Interaction.Components; diff --git a/Content.Shared/Interaction/Components/InteractionRelayComponent.cs b/Content.Shared/Interaction/Components/InteractionRelayComponent.cs index 2ac9c1e4ef..155e77095f 100644 --- a/Content.Shared/Interaction/Components/InteractionRelayComponent.cs +++ b/Content.Shared/Interaction/Components/InteractionRelayComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Interaction.Components; diff --git a/Content.Shared/Interaction/Components/NoRotateOnInteractComponent.cs b/Content.Shared/Interaction/Components/NoRotateOnInteractComponent.cs index 553c03453d..497ffc4a2a 100644 --- a/Content.Shared/Interaction/Components/NoRotateOnInteractComponent.cs +++ b/Content.Shared/Interaction/Components/NoRotateOnInteractComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Interaction.Components; diff --git a/Content.Shared/Interaction/Events/InteractionAttemptEvent.cs b/Content.Shared/Interaction/Events/InteractionAttemptEvent.cs index a04c053635..90abba1111 100644 --- a/Content.Shared/Interaction/Events/InteractionAttemptEvent.cs +++ b/Content.Shared/Interaction/Events/InteractionAttemptEvent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Interaction.Events +namespace Content.Shared.Interaction.Events { /// /// Event raised directed at a user to see if they can perform a generic interaction. diff --git a/Content.Shared/Interaction/Events/UseAttemptEvent.cs b/Content.Shared/Interaction/Events/UseAttemptEvent.cs index c28f2b6517..cb3716ae42 100644 --- a/Content.Shared/Interaction/Events/UseAttemptEvent.cs +++ b/Content.Shared/Interaction/Events/UseAttemptEvent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Interaction.Events +namespace Content.Shared.Interaction.Events { public sealed class UseAttemptEvent(EntityUid uid, EntityUid used) : CancellableEntityEventArgs { diff --git a/Content.Shared/Interaction/SharedInteractionSystem.Relay.cs b/Content.Shared/Interaction/SharedInteractionSystem.Relay.cs index 77e283b93d..4134d75953 100644 --- a/Content.Shared/Interaction/SharedInteractionSystem.Relay.cs +++ b/Content.Shared/Interaction/SharedInteractionSystem.Relay.cs @@ -1,4 +1,4 @@ -using Content.Shared.Interaction.Components; +using Content.Shared.Interaction.Components; namespace Content.Shared.Interaction; diff --git a/Content.Shared/Internals/InternalsDoAfterEvent.cs b/Content.Shared/Internals/InternalsDoAfterEvent.cs index 66c2bd9327..ccfa8fbcca 100644 --- a/Content.Shared/Internals/InternalsDoAfterEvent.cs +++ b/Content.Shared/Internals/InternalsDoAfterEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Alert; +using Content.Shared.Alert; using Content.Shared.DoAfter; using Robust.Shared.Serialization; diff --git a/Content.Shared/Inventory/BlockItemNameInHandComponent.cs b/Content.Shared/Inventory/BlockItemNameInHandComponent.cs index 077a34fdd7..6128fa8223 100644 --- a/Content.Shared/Inventory/BlockItemNameInHandComponent.cs +++ b/Content.Shared/Inventory/BlockItemNameInHandComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Inventory; diff --git a/Content.Shared/Inventory/Events/BeforeEquipEvents.cs b/Content.Shared/Inventory/Events/BeforeEquipEvents.cs index 6ea408107b..2040128795 100644 --- a/Content.Shared/Inventory/Events/BeforeEquipEvents.cs +++ b/Content.Shared/Inventory/Events/BeforeEquipEvents.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Inventory.Events; +namespace Content.Shared.Inventory.Events; public abstract class BeforeEquipEventBase(EntityUid user, EntityUid equipTarget, EntityUid equipment, SlotDefinition slotDefinition) : EntityEventArgs { diff --git a/Content.Shared/Inventory/Events/BeforeUnequipEvents.cs b/Content.Shared/Inventory/Events/BeforeUnequipEvents.cs index a084e1536a..eb5aceb70d 100644 --- a/Content.Shared/Inventory/Events/BeforeUnequipEvents.cs +++ b/Content.Shared/Inventory/Events/BeforeUnequipEvents.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Inventory.Events; +namespace Content.Shared.Inventory.Events; public abstract class BeforeUnequipEventBase(EntityUid user, EntityUid equipTarget, EntityUid equipment, SlotDefinition slotDefinition) : EntityEventArgs { diff --git a/Content.Shared/Inventory/Events/EquippedEvents.cs b/Content.Shared/Inventory/Events/EquippedEvents.cs index a152a54b44..302cd19472 100644 --- a/Content.Shared/Inventory/Events/EquippedEvents.cs +++ b/Content.Shared/Inventory/Events/EquippedEvents.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Inventory.Events; +namespace Content.Shared.Inventory.Events; public abstract class EquippedEventBase(EntityUid equipTarget, EntityUid equipment, SlotDefinition slotDefinition) : EntityEventArgs { diff --git a/Content.Shared/Inventory/Events/InventoryEquipActEvent.cs b/Content.Shared/Inventory/Events/InventoryEquipActEvent.cs index 59b5a3c69e..ef310b1ece 100644 --- a/Content.Shared/Inventory/Events/InventoryEquipActEvent.cs +++ b/Content.Shared/Inventory/Events/InventoryEquipActEvent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Inventory.Events; diff --git a/Content.Shared/Inventory/Events/UnequippedEvents.cs b/Content.Shared/Inventory/Events/UnequippedEvents.cs index 3f553c9591..822bf694f8 100644 --- a/Content.Shared/Inventory/Events/UnequippedEvents.cs +++ b/Content.Shared/Inventory/Events/UnequippedEvents.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Inventory.Events; +namespace Content.Shared.Inventory.Events; public abstract class UnequippedEventBase(EntityUid equipTarget, EntityUid equipment, SlotDefinition slotDefinition) : EntityEventArgs { diff --git a/Content.Shared/Inventory/Events/UseSlotNetworkMessage.cs b/Content.Shared/Inventory/Events/UseSlotNetworkMessage.cs index eac214f7b9..1400159c03 100644 --- a/Content.Shared/Inventory/Events/UseSlotNetworkMessage.cs +++ b/Content.Shared/Inventory/Events/UseSlotNetworkMessage.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Inventory.Events; diff --git a/Content.Shared/Inventory/InventoryComponent.cs b/Content.Shared/Inventory/InventoryComponent.cs index 664fdd6d56..770fa0fd48 100644 --- a/Content.Shared/Inventory/InventoryComponent.cs +++ b/Content.Shared/Inventory/InventoryComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.DisplacementMap; +using Content.Shared.DisplacementMap; using Robust.Shared.Containers; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; diff --git a/Content.Shared/Inventory/RelaySubscriptionHelpers.cs b/Content.Shared/Inventory/RelaySubscriptionHelpers.cs index e905231539..64129dd349 100644 --- a/Content.Shared/Inventory/RelaySubscriptionHelpers.cs +++ b/Content.Shared/Inventory/RelaySubscriptionHelpers.cs @@ -1,4 +1,4 @@ -using Content.Shared.Hands; +using Content.Shared.Hands; namespace Content.Shared.Inventory; diff --git a/Content.Shared/Inventory/VirtualItem/VirtualItemComponent.cs b/Content.Shared/Inventory/VirtualItem/VirtualItemComponent.cs index cda1be5b99..8c3b6be9c8 100644 --- a/Content.Shared/Inventory/VirtualItem/VirtualItemComponent.cs +++ b/Content.Shared/Inventory/VirtualItem/VirtualItemComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Inventory.VirtualItem; diff --git a/Content.Shared/IoC/SharedContentIoC.cs b/Content.Shared/IoC/SharedContentIoC.cs index f23b9f8355..34f8c52bb5 100644 --- a/Content.Shared/IoC/SharedContentIoC.cs +++ b/Content.Shared/IoC/SharedContentIoC.cs @@ -1,4 +1,4 @@ -using Content.Shared.Humanoid.Markings; +using Content.Shared.Humanoid.Markings; using Content.Shared.Localizations; namespace Content.Shared.IoC diff --git a/Content.Shared/Item/MultiHandedItemComponent.cs b/Content.Shared/Item/MultiHandedItemComponent.cs index e54b14f464..ec98496e73 100644 --- a/Content.Shared/Item/MultiHandedItemComponent.cs +++ b/Content.Shared/Item/MultiHandedItemComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Item; diff --git a/Content.Shared/Jaunt/JauntComponent.cs b/Content.Shared/Jaunt/JauntComponent.cs index 6d37ab4b32..daa9c42c79 100644 --- a/Content.Shared/Jaunt/JauntComponent.cs +++ b/Content.Shared/Jaunt/JauntComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; using Robust.Shared.Prototypes; namespace Content.Shared.Jaunt; diff --git a/Content.Shared/Jaunt/JauntSystem.cs b/Content.Shared/Jaunt/JauntSystem.cs index 21747ad984..f65c04fa8f 100644 --- a/Content.Shared/Jaunt/JauntSystem.cs +++ b/Content.Shared/Jaunt/JauntSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Actions; +using Content.Shared.Actions; namespace Content.Shared.Jaunt; public sealed partial class JauntSystem : EntitySystem diff --git a/Content.Shared/Kitchen/Components/ExtractableComponent.cs b/Content.Shared/Kitchen/Components/ExtractableComponent.cs index fdf59ea19f..c1f8ac66fe 100644 --- a/Content.Shared/Kitchen/Components/ExtractableComponent.cs +++ b/Content.Shared/Kitchen/Components/ExtractableComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.Components; using Robust.Shared.GameStates; namespace Content.Shared.Kitchen.Components; diff --git a/Content.Shared/Kitchen/RecipeManager.cs b/Content.Shared/Kitchen/RecipeManager.cs index 8788eb15ea..ac549ee74a 100644 --- a/Content.Shared/Kitchen/RecipeManager.cs +++ b/Content.Shared/Kitchen/RecipeManager.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Robust.Shared.Prototypes; namespace Content.Shared.Kitchen; diff --git a/Content.Shared/Light/Components/SharedEmergencyLightComponent.cs b/Content.Shared/Light/Components/SharedEmergencyLightComponent.cs index cf05af19c1..ea49756e14 100644 --- a/Content.Shared/Light/Components/SharedEmergencyLightComponent.cs +++ b/Content.Shared/Light/Components/SharedEmergencyLightComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Light.Components; diff --git a/Content.Shared/Light/Components/SharedLightBehaviourComponent.cs b/Content.Shared/Light/Components/SharedLightBehaviourComponent.cs index b93cfeef7e..91da3ee747 100644 --- a/Content.Shared/Light/Components/SharedLightBehaviourComponent.cs +++ b/Content.Shared/Light/Components/SharedLightBehaviourComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Light.Components; +namespace Content.Shared.Light.Components; /// /// A component which applies a specific behaviour to a PointLightComponent on its owner. diff --git a/Content.Shared/Light/Events/LightReplacerBUIMessages.cs b/Content.Shared/Light/Events/LightReplacerBUIMessages.cs index e20e267a09..1e466408ce 100644 --- a/Content.Shared/Light/Events/LightReplacerBUIMessages.cs +++ b/Content.Shared/Light/Events/LightReplacerBUIMessages.cs @@ -1,4 +1,4 @@ -using Content.Shared.Light.Components; +using Content.Shared.Light.Components; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; diff --git a/Content.Shared/Light/PoweredLightDoAfterEvent.cs b/Content.Shared/Light/PoweredLightDoAfterEvent.cs index 9685ee6ebe..4bf1cc862e 100644 --- a/Content.Shared/Light/PoweredLightDoAfterEvent.cs +++ b/Content.Shared/Light/PoweredLightDoAfterEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.DoAfter; +using Content.Shared.DoAfter; using Robust.Shared.Serialization; namespace Content.Shared.Light; diff --git a/Content.Shared/Lightning/SharedLightningSystem.cs b/Content.Shared/Lightning/SharedLightningSystem.cs index 5d542ffddd..5c02e5d515 100644 --- a/Content.Shared/Lightning/SharedLightningSystem.cs +++ b/Content.Shared/Lightning/SharedLightningSystem.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Random; +using Robust.Shared.Random; namespace Content.Shared.Lightning; diff --git a/Content.Shared/Lock/BypassLock/Components/BypassLockComponent.cs b/Content.Shared/Lock/BypassLock/Components/BypassLockComponent.cs index 377c12cc6d..68c557ad59 100644 --- a/Content.Shared/Lock/BypassLock/Components/BypassLockComponent.cs +++ b/Content.Shared/Lock/BypassLock/Components/BypassLockComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Lock.BypassLock.Systems; +using Content.Shared.Lock.BypassLock.Systems; using Content.Shared.Tools; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; diff --git a/Content.Shared/Lock/BypassLock/Components/BypassLockRequiresMobStateComponent.cs b/Content.Shared/Lock/BypassLock/Components/BypassLockRequiresMobStateComponent.cs index 7e40a8fcd5..df281b955c 100644 --- a/Content.Shared/Lock/BypassLock/Components/BypassLockRequiresMobStateComponent.cs +++ b/Content.Shared/Lock/BypassLock/Components/BypassLockRequiresMobStateComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Lock.BypassLock.Systems; +using Content.Shared.Lock.BypassLock.Systems; using Content.Shared.Mobs; using Robust.Shared.GameStates; diff --git a/Content.Shared/Lock/BypassLock/Systems/BypassLockSystem.MobState.cs b/Content.Shared/Lock/BypassLock/Systems/BypassLockSystem.MobState.cs index 02ec502004..1e0d46852f 100644 --- a/Content.Shared/Lock/BypassLock/Systems/BypassLockSystem.MobState.cs +++ b/Content.Shared/Lock/BypassLock/Systems/BypassLockSystem.MobState.cs @@ -1,4 +1,4 @@ -using Content.Shared.Lock.BypassLock.Components; +using Content.Shared.Lock.BypassLock.Components; using Content.Shared.Mobs.Components; namespace Content.Shared.Lock.BypassLock.Systems; diff --git a/Content.Shared/Lock/BypassLock/Systems/BypassLockSystem.cs b/Content.Shared/Lock/BypassLock/Systems/BypassLockSystem.cs index 34f2735f6d..0cfee40d62 100644 --- a/Content.Shared/Lock/BypassLock/Systems/BypassLockSystem.cs +++ b/Content.Shared/Lock/BypassLock/Systems/BypassLockSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration.Logs; +using Content.Shared.Administration.Logs; using Content.Shared.Database; using Content.Shared.DoAfter; using Content.Shared.Interaction; diff --git a/Content.Shared/MachineLinking/UIKeys.cs b/Content.Shared/MachineLinking/UIKeys.cs index 1f3f1cbbd7..b3a9e66341 100644 --- a/Content.Shared/MachineLinking/UIKeys.cs +++ b/Content.Shared/MachineLinking/UIKeys.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.MachineLinking { diff --git a/Content.Shared/Magic/Components/MagicComponent.cs b/Content.Shared/Magic/Components/MagicComponent.cs index bcc11063b7..6d6820761e 100644 --- a/Content.Shared/Magic/Components/MagicComponent.cs +++ b/Content.Shared/Magic/Components/MagicComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Magic.Components; diff --git a/Content.Shared/Magic/Components/SpellbookComponent.cs b/Content.Shared/Magic/Components/SpellbookComponent.cs index 69c2bac2a4..3819f7fe9d 100644 --- a/Content.Shared/Magic/Components/SpellbookComponent.cs +++ b/Content.Shared/Magic/Components/SpellbookComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; namespace Content.Shared.Magic.Components; diff --git a/Content.Shared/Magic/Components/WizardClothesComponent.cs b/Content.Shared/Magic/Components/WizardClothesComponent.cs index 063cf56c33..a84f896470 100644 --- a/Content.Shared/Magic/Components/WizardClothesComponent.cs +++ b/Content.Shared/Magic/Components/WizardClothesComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Magic.Components; diff --git a/Content.Shared/Magic/Events/BeforeCastSpellEvent.cs b/Content.Shared/Magic/Events/BeforeCastSpellEvent.cs index afb5c1f090..3bb2668f6d 100644 --- a/Content.Shared/Magic/Events/BeforeCastSpellEvent.cs +++ b/Content.Shared/Magic/Events/BeforeCastSpellEvent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Magic.Events; +namespace Content.Shared.Magic.Events; [ByRefEvent] public struct BeforeCastSpellEvent(EntityUid performer) diff --git a/Content.Shared/Magic/MagicInstantSpawnData.cs b/Content.Shared/Magic/MagicInstantSpawnData.cs index 5dcc1453ed..3e417b34de 100644 --- a/Content.Shared/Magic/MagicInstantSpawnData.cs +++ b/Content.Shared/Magic/MagicInstantSpawnData.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Magic; +namespace Content.Shared.Magic; // TODO: If still needed, move to magic component [ImplicitDataDefinitionForInheritors] diff --git a/Content.Shared/Magic/SpellbookDoAfterEvent.cs b/Content.Shared/Magic/SpellbookDoAfterEvent.cs index 88b7514fcd..b52b232d66 100644 --- a/Content.Shared/Magic/SpellbookDoAfterEvent.cs +++ b/Content.Shared/Magic/SpellbookDoAfterEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.DoAfter; +using Content.Shared.DoAfter; using Robust.Shared.Serialization; namespace Content.Shared.Magic; diff --git a/Content.Shared/MapText/SharedMapTextComponent.cs b/Content.Shared/MapText/SharedMapTextComponent.cs index 7b8a02da6f..a1406b46d0 100644 --- a/Content.Shared/MapText/SharedMapTextComponent.cs +++ b/Content.Shared/MapText/SharedMapTextComponent.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Robust.Shared.GameStates; using Robust.Shared.Serialization; diff --git a/Content.Shared/MapText/SharedMapTextSystem.cs b/Content.Shared/MapText/SharedMapTextSystem.cs index da2adf16cf..55933f867e 100644 --- a/Content.Shared/MapText/SharedMapTextSystem.cs +++ b/Content.Shared/MapText/SharedMapTextSystem.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.MapText; +namespace Content.Shared.MapText; /// /// This handles registering the map text overlay, caching the text font and handling component state diff --git a/Content.Shared/Mapping/MappingMapDataMessage.cs b/Content.Shared/Mapping/MappingMapDataMessage.cs index a3961a6809..46f4029edf 100644 --- a/Content.Shared/Mapping/MappingMapDataMessage.cs +++ b/Content.Shared/Mapping/MappingMapDataMessage.cs @@ -1,4 +1,4 @@ -using System.IO; +using System.IO; using Lidgren.Network; using Robust.Shared.Network; using Robust.Shared.Serialization; diff --git a/Content.Shared/Mapping/MappingSaveMapErrorMessage.cs b/Content.Shared/Mapping/MappingSaveMapErrorMessage.cs index e30e257305..e5dede3be3 100644 --- a/Content.Shared/Mapping/MappingSaveMapErrorMessage.cs +++ b/Content.Shared/Mapping/MappingSaveMapErrorMessage.cs @@ -1,4 +1,4 @@ -using Lidgren.Network; +using Lidgren.Network; using Robust.Shared.Network; using Robust.Shared.Serialization; diff --git a/Content.Shared/Mapping/MappingSaveMapMessage.cs b/Content.Shared/Mapping/MappingSaveMapMessage.cs index f80b866121..e8daee2e28 100644 --- a/Content.Shared/Mapping/MappingSaveMapMessage.cs +++ b/Content.Shared/Mapping/MappingSaveMapMessage.cs @@ -1,4 +1,4 @@ -using Lidgren.Network; +using Lidgren.Network; using Robust.Shared.Network; using Robust.Shared.Serialization; diff --git a/Content.Shared/MassMedia/Components/StationNewsComponent.cs b/Content.Shared/MassMedia/Components/StationNewsComponent.cs index 055b332255..9915250387 100644 --- a/Content.Shared/MassMedia/Components/StationNewsComponent.cs +++ b/Content.Shared/MassMedia/Components/StationNewsComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.MassMedia.Systems; +using Content.Shared.MassMedia.Systems; namespace Content.Shared.MassMedia.Components; diff --git a/Content.Shared/Materials/ActiveMaterialReclaimerComponent.cs b/Content.Shared/Materials/ActiveMaterialReclaimerComponent.cs index 2beeed5d1e..9e1b8a6ccf 100644 --- a/Content.Shared/Materials/ActiveMaterialReclaimerComponent.cs +++ b/Content.Shared/Materials/ActiveMaterialReclaimerComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Containers; +using Robust.Shared.Containers; using Robust.Shared.GameStates; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; diff --git a/Content.Shared/Materials/CollideMaterialReclaimerComponent.cs b/Content.Shared/Materials/CollideMaterialReclaimerComponent.cs index b59f21eef2..be19c56c42 100644 --- a/Content.Shared/Materials/CollideMaterialReclaimerComponent.cs +++ b/Content.Shared/Materials/CollideMaterialReclaimerComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Materials; +namespace Content.Shared.Materials; /// /// Valid items that collide with an entity with this component diff --git a/Content.Shared/Materials/InsertingMaterialStorageComponent.cs b/Content.Shared/Materials/InsertingMaterialStorageComponent.cs index 8ff96c17a7..60a3b8693b 100644 --- a/Content.Shared/Materials/InsertingMaterialStorageComponent.cs +++ b/Content.Shared/Materials/InsertingMaterialStorageComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; namespace Content.Shared.Materials; diff --git a/Content.Shared/Materials/MaterialReclaimerComponent.cs b/Content.Shared/Materials/MaterialReclaimerComponent.cs index e526e1cd61..fe8f10225e 100644 --- a/Content.Shared/Materials/MaterialReclaimerComponent.cs +++ b/Content.Shared/Materials/MaterialReclaimerComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Damage; +using Content.Shared.Damage; using Content.Shared.Damage.Prototypes; using Content.Shared.FixedPoint; using Content.Shared.Whitelist; diff --git a/Content.Shared/Mech/Equipment/Components/MechEquipmentComponent.cs b/Content.Shared/Mech/Equipment/Components/MechEquipmentComponent.cs index 3933f12284..b0adc68a0e 100644 --- a/Content.Shared/Mech/Equipment/Components/MechEquipmentComponent.cs +++ b/Content.Shared/Mech/Equipment/Components/MechEquipmentComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.DoAfter; +using Content.Shared.DoAfter; using Content.Shared.Mech.Components; using Robust.Shared.Serialization; diff --git a/Content.Shared/Mech/SharedMech.cs b/Content.Shared/Mech/SharedMech.cs index 94af4453d4..bd335c3474 100644 --- a/Content.Shared/Mech/SharedMech.cs +++ b/Content.Shared/Mech/SharedMech.cs @@ -1,4 +1,4 @@ -using Content.Shared.Actions; +using Content.Shared.Actions; using Robust.Shared.Serialization; namespace Content.Shared.Mech; diff --git a/Content.Shared/Medical/CrewMonitoring/BroadcastSuitSensorStatePayload.cs b/Content.Shared/Medical/CrewMonitoring/BroadcastSuitSensorStatePayload.cs index 237abf0d29..94baf88fd2 100644 --- a/Content.Shared/Medical/CrewMonitoring/BroadcastSuitSensorStatePayload.cs +++ b/Content.Shared/Medical/CrewMonitoring/BroadcastSuitSensorStatePayload.cs @@ -1,4 +1,4 @@ -using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork; using Content.Shared.Medical.SuitSensors; namespace Content.Shared.Medical.CrewMonitoring; diff --git a/Content.Shared/Medical/Cryogenics/ActiveCryoPodComponent.cs b/Content.Shared/Medical/Cryogenics/ActiveCryoPodComponent.cs index d017ef73aa..8a2dac9921 100644 --- a/Content.Shared/Medical/Cryogenics/ActiveCryoPodComponent.cs +++ b/Content.Shared/Medical/Cryogenics/ActiveCryoPodComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Medical.Cryogenics; diff --git a/Content.Shared/Medical/Cryogenics/CryoPodWireStatus.cs b/Content.Shared/Medical/Cryogenics/CryoPodWireStatus.cs index dfd3ada235..e232e0f288 100644 --- a/Content.Shared/Medical/Cryogenics/CryoPodWireStatus.cs +++ b/Content.Shared/Medical/Cryogenics/CryoPodWireStatus.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Medical.Cryogenics { diff --git a/Content.Shared/Medical/Cryogenics/InsideCryoPodComponent.cs b/Content.Shared/Medical/Cryogenics/InsideCryoPodComponent.cs index 033a79e3ff..245fd61be3 100644 --- a/Content.Shared/Medical/Cryogenics/InsideCryoPodComponent.cs +++ b/Content.Shared/Medical/Cryogenics/InsideCryoPodComponent.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Robust.Shared.GameStates; namespace Content.Shared.Medical.Cryogenics; diff --git a/Content.Shared/Medical/Cryogenics/SharedInsideCryoPodSystem.cs b/Content.Shared/Medical/Cryogenics/SharedInsideCryoPodSystem.cs index 76fd6034e8..5ebf350f62 100644 --- a/Content.Shared/Medical/Cryogenics/SharedInsideCryoPodSystem.cs +++ b/Content.Shared/Medical/Cryogenics/SharedInsideCryoPodSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Standing; +using Content.Shared.Standing; using Content.Shared.Temperature; using Robust.Shared.Containers; diff --git a/Content.Shared/Medical/DefibrillatorComponent.cs b/Content.Shared/Medical/DefibrillatorComponent.cs index bb22a9809b..7860ab16df 100644 --- a/Content.Shared/Medical/DefibrillatorComponent.cs +++ b/Content.Shared/Medical/DefibrillatorComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Damage; +using Content.Shared.Damage; using Content.Shared.DoAfter; using Content.Shared.Item.ItemToggle.Components; using Robust.Shared.Audio; diff --git a/Content.Shared/Medical/HealingDoAfterEvent.cs b/Content.Shared/Medical/HealingDoAfterEvent.cs index 96f61a1d67..d20d5010e0 100644 --- a/Content.Shared/Medical/HealingDoAfterEvent.cs +++ b/Content.Shared/Medical/HealingDoAfterEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.DoAfter; +using Content.Shared.DoAfter; using Robust.Shared.Serialization; namespace Content.Shared.Medical; diff --git a/Content.Shared/Medical/ReclaimerDoAfterEvent.cs b/Content.Shared/Medical/ReclaimerDoAfterEvent.cs index 87d96c7609..2a45ec2617 100644 --- a/Content.Shared/Medical/ReclaimerDoAfterEvent.cs +++ b/Content.Shared/Medical/ReclaimerDoAfterEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.DoAfter; +using Content.Shared.DoAfter; using Robust.Shared.Serialization; namespace Content.Shared.Medical; diff --git a/Content.Shared/Medical/StethoscopeDoAfterEvent.cs b/Content.Shared/Medical/StethoscopeDoAfterEvent.cs index d3f3962958..e416f3dad0 100644 --- a/Content.Shared/Medical/StethoscopeDoAfterEvent.cs +++ b/Content.Shared/Medical/StethoscopeDoAfterEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.DoAfter; +using Content.Shared.DoAfter; using Robust.Shared.Serialization; namespace Content.Shared.Medical; diff --git a/Content.Shared/MedicalScanner/HealthAnalyzerDoAfterEvent.cs b/Content.Shared/MedicalScanner/HealthAnalyzerDoAfterEvent.cs index cf5bd4f397..5578284cad 100644 --- a/Content.Shared/MedicalScanner/HealthAnalyzerDoAfterEvent.cs +++ b/Content.Shared/MedicalScanner/HealthAnalyzerDoAfterEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.DoAfter; +using Content.Shared.DoAfter; using Robust.Shared.Serialization; namespace Content.Shared.MedicalScanner; diff --git a/Content.Shared/MedicalScanner/HealthAnalyzerUiKey.cs b/Content.Shared/MedicalScanner/HealthAnalyzerUiKey.cs index 3b42d5e5fc..7dc4164b90 100644 --- a/Content.Shared/MedicalScanner/HealthAnalyzerUiKey.cs +++ b/Content.Shared/MedicalScanner/HealthAnalyzerUiKey.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.MedicalScanner; diff --git a/Content.Shared/Mind/Components/TransferMindOnGibComponent.cs b/Content.Shared/Mind/Components/TransferMindOnGibComponent.cs index 233354834d..beed9d0443 100644 --- a/Content.Shared/Mind/Components/TransferMindOnGibComponent.cs +++ b/Content.Shared/Mind/Components/TransferMindOnGibComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Tag; +using Content.Shared.Tag; using Robust.Shared.Prototypes; namespace Content.Shared.Mind.Components; diff --git a/Content.Shared/Mind/MindVisuals.cs b/Content.Shared/Mind/MindVisuals.cs index 9e60a6c2f9..0a39388dcf 100644 --- a/Content.Shared/Mind/MindVisuals.cs +++ b/Content.Shared/Mind/MindVisuals.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Mind; diff --git a/Content.Shared/Mindshield/Components/FakeMindshieldComponent.cs b/Content.Shared/Mindshield/Components/FakeMindshieldComponent.cs index 5705398d5b..8210992ef4 100644 --- a/Content.Shared/Mindshield/Components/FakeMindshieldComponent.cs +++ b/Content.Shared/Mindshield/Components/FakeMindshieldComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Tag; +using Content.Shared.Tag; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; diff --git a/Content.Shared/Mindshield/FakeMindshieldSystem.cs b/Content.Shared/Mindshield/FakeMindshieldSystem.cs index 64783d56a3..744f6f90bb 100644 --- a/Content.Shared/Mindshield/FakeMindshieldSystem.cs +++ b/Content.Shared/Mindshield/FakeMindshieldSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Actions; +using Content.Shared.Actions; using Content.Shared.Actions.Components; using Content.Shared.Clothing; using Content.Shared.Implants; diff --git a/Content.Shared/Mobs/Components/MobStateActionsComponent.cs b/Content.Shared/Mobs/Components/MobStateActionsComponent.cs index 2fae0b046a..6a63bb0237 100644 --- a/Content.Shared/Mobs/Components/MobStateActionsComponent.cs +++ b/Content.Shared/Mobs/Components/MobStateActionsComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Mobs.Systems; +using Content.Shared.Mobs.Systems; namespace Content.Shared.Mobs.Components; diff --git a/Content.Shared/Mobs/CritMobActions.cs b/Content.Shared/Mobs/CritMobActions.cs index 763915e559..565cb27586 100644 --- a/Content.Shared/Mobs/CritMobActions.cs +++ b/Content.Shared/Mobs/CritMobActions.cs @@ -1,4 +1,4 @@ -using Content.Shared.Actions; +using Content.Shared.Actions; namespace Content.Shared.Mobs; diff --git a/Content.Shared/Mobs/MobState.cs b/Content.Shared/Mobs/MobState.cs index 1846232f4e..3c573a0ad8 100644 --- a/Content.Shared/Mobs/MobState.cs +++ b/Content.Shared/Mobs/MobState.cs @@ -1,4 +1,4 @@ -using Content.Shared.Mobs.Components; +using Content.Shared.Mobs.Components; using Robust.Shared.Serialization; namespace Content.Shared.Mobs; diff --git a/Content.Shared/Mobs/Systems/MobStateSystem.StateMachine.cs b/Content.Shared/Mobs/Systems/MobStateSystem.StateMachine.cs index 66d6e7413d..bbc5c47253 100644 --- a/Content.Shared/Mobs/Systems/MobStateSystem.StateMachine.cs +++ b/Content.Shared/Mobs/Systems/MobStateSystem.StateMachine.cs @@ -1,4 +1,4 @@ -using Content.Shared.Database; +using Content.Shared.Database; using Content.Shared.Humanoid; using Content.Shared.Mobs.Components; using Robust.Shared.Player; diff --git a/Content.Shared/Mobs/Systems/SharedDeathgaspSystem.cs b/Content.Shared/Mobs/Systems/SharedDeathgaspSystem.cs index 1e3da5f415..0d56dbc1d7 100644 --- a/Content.Shared/Mobs/Systems/SharedDeathgaspSystem.cs +++ b/Content.Shared/Mobs/Systems/SharedDeathgaspSystem.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Mobs; +namespace Content.Shared.Mobs; /// public abstract partial class SharedDeathgaspSystem : EntitySystem diff --git a/Content.Shared/MouseRotator/MouseRotatorComponent.cs b/Content.Shared/MouseRotator/MouseRotatorComponent.cs index 1f399b31f9..671daf358a 100644 --- a/Content.Shared/MouseRotator/MouseRotatorComponent.cs +++ b/Content.Shared/MouseRotator/MouseRotatorComponent.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Robust.Shared.GameStates; using Robust.Shared.Serialization; diff --git a/Content.Shared/MouseRotator/SharedMouseRotatorSystem.cs b/Content.Shared/MouseRotator/SharedMouseRotatorSystem.cs index db449021d9..caa8edab95 100644 --- a/Content.Shared/MouseRotator/SharedMouseRotatorSystem.cs +++ b/Content.Shared/MouseRotator/SharedMouseRotatorSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Interaction; +using Content.Shared.Interaction; namespace Content.Shared.MouseRotator; diff --git a/Content.Shared/Movement/Components/CanMoveInAirComponent.cs b/Content.Shared/Movement/Components/CanMoveInAirComponent.cs index 9d24661700..c4d1756d16 100644 --- a/Content.Shared/Movement/Components/CanMoveInAirComponent.cs +++ b/Content.Shared/Movement/Components/CanMoveInAirComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; using Robust.Shared.Physics.Components; namespace Content.Shared.Movement.Components; diff --git a/Content.Shared/Movement/Components/FrictionStatusEffectComponent.cs b/Content.Shared/Movement/Components/FrictionStatusEffectComponent.cs index 33c5389fd3..57925ca569 100644 --- a/Content.Shared/Movement/Components/FrictionStatusEffectComponent.cs +++ b/Content.Shared/Movement/Components/FrictionStatusEffectComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Movement.Systems; +using Content.Shared.Movement.Systems; using Robust.Shared.GameStates; namespace Content.Shared.Movement.Components; diff --git a/Content.Shared/Movement/Components/NoRotateOnMoveComponent.cs b/Content.Shared/Movement/Components/NoRotateOnMoveComponent.cs index c6a20726ff..169a970520 100644 --- a/Content.Shared/Movement/Components/NoRotateOnMoveComponent.cs +++ b/Content.Shared/Movement/Components/NoRotateOnMoveComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Movement.Components; diff --git a/Content.Shared/Movement/Components/WormComponent.cs b/Content.Shared/Movement/Components/WormComponent.cs index a717659fef..9d6f9efbd7 100644 --- a/Content.Shared/Movement/Components/WormComponent.cs +++ b/Content.Shared/Movement/Components/WormComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Movement.Components; diff --git a/Content.Shared/Movement/Pulling/Components/PullerComponent.cs b/Content.Shared/Movement/Pulling/Components/PullerComponent.cs index 172ab449b4..3031d6cc85 100644 --- a/Content.Shared/Movement/Pulling/Components/PullerComponent.cs +++ b/Content.Shared/Movement/Pulling/Components/PullerComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Alert; +using Content.Shared.Alert; using Content.Shared.Movement.Pulling.Systems; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; diff --git a/Content.Shared/Movement/Pulling/Events/AttemptPullEvent.cs b/Content.Shared/Movement/Pulling/Events/AttemptPullEvent.cs index b0101c4699..1d6ae7cf9f 100644 --- a/Content.Shared/Movement/Pulling/Events/AttemptPullEvent.cs +++ b/Content.Shared/Movement/Pulling/Events/AttemptPullEvent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Physics.Components; +using Robust.Shared.Physics.Components; namespace Content.Shared.Movement.Pulling.Events; diff --git a/Content.Shared/Movement/Pulling/Events/PullMessage.cs b/Content.Shared/Movement/Pulling/Events/PullMessage.cs index a427e448d5..809decb9e3 100644 --- a/Content.Shared/Movement/Pulling/Events/PullMessage.cs +++ b/Content.Shared/Movement/Pulling/Events/PullMessage.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Movement.Pulling.Events; +namespace Content.Shared.Movement.Pulling.Events; public abstract class PullMessage : EntityEventArgs { diff --git a/Content.Shared/Movement/Pulling/Events/PullStartedMessage.cs b/Content.Shared/Movement/Pulling/Events/PullStartedMessage.cs index c0775b4ce2..779c7a6b0c 100644 --- a/Content.Shared/Movement/Pulling/Events/PullStartedMessage.cs +++ b/Content.Shared/Movement/Pulling/Events/PullStartedMessage.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Movement.Pulling.Events; +namespace Content.Shared.Movement.Pulling.Events; /// /// Event raised directed BOTH at the puller and pulled entity when a pull starts. diff --git a/Content.Shared/Movement/Systems/MovementIgnoreGravitySystem.cs b/Content.Shared/Movement/Systems/MovementIgnoreGravitySystem.cs index 615cc44fbc..c8c1113f7f 100644 --- a/Content.Shared/Movement/Systems/MovementIgnoreGravitySystem.cs +++ b/Content.Shared/Movement/Systems/MovementIgnoreGravitySystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Gravity; +using Content.Shared.Gravity; using Content.Shared.Movement.Components; using Content.Shared.Movement.Events; diff --git a/Content.Shared/Movement/Systems/WormSystem.cs b/Content.Shared/Movement/Systems/WormSystem.cs index f081914ff9..41cd39e3a9 100644 --- a/Content.Shared/Movement/Systems/WormSystem.cs +++ b/Content.Shared/Movement/Systems/WormSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Alert; +using Content.Shared.Alert; using Content.Shared.Movement.Components; using Content.Shared.Popups; using Content.Shared.Rejuvenate; diff --git a/Content.Shared/NameIdentifier/NameIdentifierComponent.cs b/Content.Shared/NameIdentifier/NameIdentifierComponent.cs index c8b42d29db..3842f696e5 100644 --- a/Content.Shared/NameIdentifier/NameIdentifierComponent.cs +++ b/Content.Shared/NameIdentifier/NameIdentifierComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; using Robust.Shared.Prototypes; namespace Content.Shared.NameIdentifier; diff --git a/Content.Shared/NameIdentifier/NameIdentifierGroupPrototype.cs b/Content.Shared/NameIdentifier/NameIdentifierGroupPrototype.cs index 98e1c7a539..e1a802c88c 100644 --- a/Content.Shared/NameIdentifier/NameIdentifierGroupPrototype.cs +++ b/Content.Shared/NameIdentifier/NameIdentifierGroupPrototype.cs @@ -1,4 +1,4 @@ -using Content.Shared.Dataset; +using Content.Shared.Dataset; using Robust.Shared.Prototypes; namespace Content.Shared.NameIdentifier; diff --git a/Content.Shared/NodeContainer/NodeGroups/INodeGroup.cs b/Content.Shared/NodeContainer/NodeGroups/INodeGroup.cs index da52d39e58..3ef138f6b2 100644 --- a/Content.Shared/NodeContainer/NodeGroups/INodeGroup.cs +++ b/Content.Shared/NodeContainer/NodeGroups/INodeGroup.cs @@ -30,4 +30,4 @@ public interface INodeGroup /// Return any additional data to display for the node-visualizer debug overlay. /// string? GetDebugData(); -} \ No newline at end of file +} diff --git a/Content.Shared/NodeContainer/NodeGroups/IPipeNet.cs b/Content.Shared/NodeContainer/NodeGroups/IPipeNet.cs index e1777f05f2..60f7409b77 100644 --- a/Content.Shared/NodeContainer/NodeGroups/IPipeNet.cs +++ b/Content.Shared/NodeContainer/NodeGroups/IPipeNet.cs @@ -1,4 +1,4 @@ -using Content.Shared.Atmos; +using Content.Shared.Atmos; namespace Content.Shared.NodeContainer.NodeGroups; diff --git a/Content.Shared/NodeContainer/NodeVis.cs b/Content.Shared/NodeContainer/NodeVis.cs index 24982f272a..1bedbd5ccc 100644 --- a/Content.Shared/NodeContainer/NodeVis.cs +++ b/Content.Shared/NodeContainer/NodeVis.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.NodeContainer { diff --git a/Content.Shared/NukeOps/WarDeclaratorEvents.cs b/Content.Shared/NukeOps/WarDeclaratorEvents.cs index 0f521c14b1..79832d2869 100644 --- a/Content.Shared/NukeOps/WarDeclaratorEvents.cs +++ b/Content.Shared/NukeOps/WarDeclaratorEvents.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.NukeOps; diff --git a/Content.Shared/Nutrition/AnimalHusbandry/InfantComponent.cs b/Content.Shared/Nutrition/AnimalHusbandry/InfantComponent.cs index 06c533e646..6a247ab459 100644 --- a/Content.Shared/Nutrition/AnimalHusbandry/InfantComponent.cs +++ b/Content.Shared/Nutrition/AnimalHusbandry/InfantComponent.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Robust.Shared.GameStates; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; diff --git a/Content.Shared/Nutrition/AnimalHusbandry/ReproductiveComponent.cs b/Content.Shared/Nutrition/AnimalHusbandry/ReproductiveComponent.cs index f54cf05bd8..0bec0bee74 100644 --- a/Content.Shared/Nutrition/AnimalHusbandry/ReproductiveComponent.cs +++ b/Content.Shared/Nutrition/AnimalHusbandry/ReproductiveComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Nutrition.Prototypes; +using Content.Shared.Nutrition.Prototypes; using Content.Shared.Storage; using Content.Shared.Whitelist; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; diff --git a/Content.Shared/Nutrition/AnimalHusbandry/ReproductivePartnerComponent.cs b/Content.Shared/Nutrition/AnimalHusbandry/ReproductivePartnerComponent.cs index ec1d62012d..673cc49086 100644 --- a/Content.Shared/Nutrition/AnimalHusbandry/ReproductivePartnerComponent.cs +++ b/Content.Shared/Nutrition/AnimalHusbandry/ReproductivePartnerComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Nutrition.AnimalHusbandry; +namespace Content.Shared.Nutrition.AnimalHusbandry; /// /// This is used for denoting entities which are diff --git a/Content.Shared/Nutrition/Components/EdibleComponent.cs b/Content.Shared/Nutrition/Components/EdibleComponent.cs index bff56984a1..fc9d1d6c76 100644 --- a/Content.Shared/Nutrition/Components/EdibleComponent.cs +++ b/Content.Shared/Nutrition/Components/EdibleComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Body.Components; +using Content.Shared.Body.Components; using Content.Shared.FixedPoint; using Content.Shared.Nutrition.EntitySystems; using Content.Shared.Nutrition.Prototypes; diff --git a/Content.Shared/Nutrition/Components/SharedFatExtractor.cs b/Content.Shared/Nutrition/Components/SharedFatExtractor.cs index b52e1a9022..1a0c91bfac 100644 --- a/Content.Shared/Nutrition/Components/SharedFatExtractor.cs +++ b/Content.Shared/Nutrition/Components/SharedFatExtractor.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Nutrition.Components; diff --git a/Content.Shared/Nutrition/EntitySystems/IngestionSystem.API.cs b/Content.Shared/Nutrition/EntitySystems/IngestionSystem.API.cs index 7740d9b1c5..51e88a13ef 100644 --- a/Content.Shared/Nutrition/EntitySystems/IngestionSystem.API.cs +++ b/Content.Shared/Nutrition/EntitySystems/IngestionSystem.API.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Reagent; using Content.Shared.EntityEffects.Effects.Body; diff --git a/Content.Shared/Nutrition/Events.cs b/Content.Shared/Nutrition/Events.cs index 9a600a7641..53e0104012 100644 --- a/Content.Shared/Nutrition/Events.cs +++ b/Content.Shared/Nutrition/Events.cs @@ -1,4 +1,4 @@ -using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.Components; using Content.Shared.DoAfter; using Content.Shared.Nutrition.Components; using Content.Shared.Nutrition.Prototypes; diff --git a/Content.Shared/Nutrition/Prototypes/EdiblePrototype.cs b/Content.Shared/Nutrition/Prototypes/EdiblePrototype.cs index 864383610c..2e610c7aaf 100644 --- a/Content.Shared/Nutrition/Prototypes/EdiblePrototype.cs +++ b/Content.Shared/Nutrition/Prototypes/EdiblePrototype.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Audio; +using Robust.Shared.Audio; using Robust.Shared.Prototypes; using Robust.Shared.Utility; diff --git a/Content.Shared/Objectives/Systems/AliveAiTargetSystem.cs b/Content.Shared/Objectives/Systems/AliveAiTargetSystem.cs index 4cf24095ff..ae3928d949 100644 --- a/Content.Shared/Objectives/Systems/AliveAiTargetSystem.cs +++ b/Content.Shared/Objectives/Systems/AliveAiTargetSystem.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using Content.Shared.Mind; using Content.Shared.Mobs.Systems; using Content.Shared.Silicons.StationAi; diff --git a/Content.Shared/Objectives/Systems/AliveHumanoidTargetSystem.cs b/Content.Shared/Objectives/Systems/AliveHumanoidTargetSystem.cs index 7298a9a9ff..5727be5cb9 100644 --- a/Content.Shared/Objectives/Systems/AliveHumanoidTargetSystem.cs +++ b/Content.Shared/Objectives/Systems/AliveHumanoidTargetSystem.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using Content.Shared.Humanoid; using Content.Shared.Mind; using Content.Shared.Mobs.Systems; diff --git a/Content.Shared/Objectives/Systems/GenericTargetSystem.Entity.cs b/Content.Shared/Objectives/Systems/GenericTargetSystem.Entity.cs index e116f6715c..9d8f935d8c 100644 --- a/Content.Shared/Objectives/Systems/GenericTargetSystem.Entity.cs +++ b/Content.Shared/Objectives/Systems/GenericTargetSystem.Entity.cs @@ -1,4 +1,4 @@ -using Content.Shared.EntityConditions; +using Content.Shared.EntityConditions; namespace Content.Shared.Objectives.Systems; diff --git a/Content.Shared/Objectives/Systems/GenericTargetSystem.Mind.cs b/Content.Shared/Objectives/Systems/GenericTargetSystem.Mind.cs index 50343e85e6..cf17af5267 100644 --- a/Content.Shared/Objectives/Systems/GenericTargetSystem.Mind.cs +++ b/Content.Shared/Objectives/Systems/GenericTargetSystem.Mind.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using Content.Shared.EntityConditions; using Content.Shared.Mind; diff --git a/Content.Shared/Objectives/Systems/GenericTargetSystem.cs b/Content.Shared/Objectives/Systems/GenericTargetSystem.cs index b0c94b7bff..e22d52cd83 100644 --- a/Content.Shared/Objectives/Systems/GenericTargetSystem.cs +++ b/Content.Shared/Objectives/Systems/GenericTargetSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.EntityConditions; +using Content.Shared.EntityConditions; namespace Content.Shared.Objectives.Systems; diff --git a/Content.Shared/ParticleAccelerator/Components/ParticleAcceleratorEmitterComponent.cs b/Content.Shared/ParticleAccelerator/Components/ParticleAcceleratorEmitterComponent.cs index 9b52a73522..13233d6341 100644 --- a/Content.Shared/ParticleAccelerator/Components/ParticleAcceleratorEmitterComponent.cs +++ b/Content.Shared/ParticleAccelerator/Components/ParticleAcceleratorEmitterComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; namespace Content.Shared.ParticleAccelerator.Components; diff --git a/Content.Shared/ParticleAccelerator/Components/ParticleAcceleratorEndCapComponent.cs b/Content.Shared/ParticleAccelerator/Components/ParticleAcceleratorEndCapComponent.cs index 20615321d1..165f82cb7b 100644 --- a/Content.Shared/ParticleAccelerator/Components/ParticleAcceleratorEndCapComponent.cs +++ b/Content.Shared/ParticleAccelerator/Components/ParticleAcceleratorEndCapComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.ParticleAccelerator.Components; +namespace Content.Shared.ParticleAccelerator.Components; [RegisterComponent] public sealed partial class ParticleAcceleratorEndCapComponent : Component diff --git a/Content.Shared/ParticleAccelerator/Components/ParticleAcceleratorFuelChamberComponent.cs b/Content.Shared/ParticleAccelerator/Components/ParticleAcceleratorFuelChamberComponent.cs index 9e0da68b96..7277b9da34 100644 --- a/Content.Shared/ParticleAccelerator/Components/ParticleAcceleratorFuelChamberComponent.cs +++ b/Content.Shared/ParticleAccelerator/Components/ParticleAcceleratorFuelChamberComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.ParticleAccelerator.Components; +namespace Content.Shared.ParticleAccelerator.Components; [RegisterComponent] public sealed partial class ParticleAcceleratorFuelChamberComponent : Component diff --git a/Content.Shared/ParticleAccelerator/Components/ParticleAcceleratorPowerBoxComponent.cs b/Content.Shared/ParticleAccelerator/Components/ParticleAcceleratorPowerBoxComponent.cs index 3da6b76f2f..0fa13e8ae7 100644 --- a/Content.Shared/ParticleAccelerator/Components/ParticleAcceleratorPowerBoxComponent.cs +++ b/Content.Shared/ParticleAccelerator/Components/ParticleAcceleratorPowerBoxComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.ParticleAccelerator.Components; +namespace Content.Shared.ParticleAccelerator.Components; [RegisterComponent] public sealed partial class ParticleAcceleratorPowerBoxComponent : Component diff --git a/Content.Shared/Physics/PreventCollideComponent.cs b/Content.Shared/Physics/PreventCollideComponent.cs index af59d36773..3165ef63bf 100644 --- a/Content.Shared/Physics/PreventCollideComponent.cs +++ b/Content.Shared/Physics/PreventCollideComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Physics; diff --git a/Content.Shared/Physics/SharedPreventCollideSystem.cs b/Content.Shared/Physics/SharedPreventCollideSystem.cs index d6475201ae..e7a093974f 100644 --- a/Content.Shared/Physics/SharedPreventCollideSystem.cs +++ b/Content.Shared/Physics/SharedPreventCollideSystem.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Physics.Events; +using Robust.Shared.Physics.Events; namespace Content.Shared.Physics; diff --git a/Content.Shared/Placeable/ItemPlacerComponent.cs b/Content.Shared/Placeable/ItemPlacerComponent.cs index 84df2e395a..7723d8fcd0 100644 --- a/Content.Shared/Placeable/ItemPlacerComponent.cs +++ b/Content.Shared/Placeable/ItemPlacerComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Whitelist; +using Content.Shared.Whitelist; using Robust.Shared.GameStates; namespace Content.Shared.Placeable; diff --git a/Content.Shared/Players/ContentPlayerData.cs b/Content.Shared/Players/ContentPlayerData.cs index 90988f5382..c7a393cc0c 100644 --- a/Content.Shared/Players/ContentPlayerData.cs +++ b/Content.Shared/Players/ContentPlayerData.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration; +using Content.Shared.Administration; using Content.Shared.GameTicking; using Content.Shared.Mind; using Robust.Shared.Network; diff --git a/Content.Shared/Players/JobWhitelist/MsgJobWhitelist.cs b/Content.Shared/Players/JobWhitelist/MsgJobWhitelist.cs index 8347e2d706..27b0b6c614 100644 --- a/Content.Shared/Players/JobWhitelist/MsgJobWhitelist.cs +++ b/Content.Shared/Players/JobWhitelist/MsgJobWhitelist.cs @@ -1,4 +1,4 @@ -using Lidgren.Network; +using Lidgren.Network; using Robust.Shared.Network; using Robust.Shared.Serialization; diff --git a/Content.Shared/Players/PlayTimeTracking/MsgPlayTime.cs b/Content.Shared/Players/PlayTimeTracking/MsgPlayTime.cs index ad057f0792..1c798c6097 100644 --- a/Content.Shared/Players/PlayTimeTracking/MsgPlayTime.cs +++ b/Content.Shared/Players/PlayTimeTracking/MsgPlayTime.cs @@ -1,4 +1,4 @@ -using Lidgren.Network; +using Lidgren.Network; using Robust.Shared.Network; using Robust.Shared.Serialization; diff --git a/Content.Shared/Players/PlayTimeTracking/PlayTimeTrackingShared.cs b/Content.Shared/Players/PlayTimeTracking/PlayTimeTrackingShared.cs index d02a22171a..bc59dafcab 100644 --- a/Content.Shared/Players/PlayTimeTracking/PlayTimeTrackingShared.cs +++ b/Content.Shared/Players/PlayTimeTracking/PlayTimeTrackingShared.cs @@ -1,4 +1,4 @@ -using Content.Shared.Dataset; +using Content.Shared.Dataset; using Robust.Shared.Prototypes; namespace Content.Shared.Players.PlayTimeTracking; diff --git a/Content.Shared/Players/PlayerDataExt.cs b/Content.Shared/Players/PlayerDataExt.cs index eba4d8339d..0fd94c97fc 100644 --- a/Content.Shared/Players/PlayerDataExt.cs +++ b/Content.Shared/Players/PlayerDataExt.cs @@ -27,4 +27,4 @@ public static class PlayerDataExt { return session.Data.ContentData()?.Mind; } -} \ No newline at end of file +} diff --git a/Content.Shared/Players/RateLimiting/RateLimitRegistration.cs b/Content.Shared/Players/RateLimiting/RateLimitRegistration.cs index 6bcf15d30b..117dd704dc 100644 --- a/Content.Shared/Players/RateLimiting/RateLimitRegistration.cs +++ b/Content.Shared/Players/RateLimiting/RateLimitRegistration.cs @@ -1,4 +1,4 @@ -using Content.Shared.Database; +using Content.Shared.Database; using Robust.Shared.Configuration; using Robust.Shared.Player; diff --git a/Content.Shared/Players/RateLimiting/SharedPlayerRateLimitManager.cs b/Content.Shared/Players/RateLimiting/SharedPlayerRateLimitManager.cs index addb1dee37..d0d77ec9dd 100644 --- a/Content.Shared/Players/RateLimiting/SharedPlayerRateLimitManager.cs +++ b/Content.Shared/Players/RateLimiting/SharedPlayerRateLimitManager.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Player; +using Robust.Shared.Player; namespace Content.Shared.Players.RateLimiting; diff --git a/Content.Shared/Players/SharedPlayerSystem.cs b/Content.Shared/Players/SharedPlayerSystem.cs index 7271c5688a..7f8d6c60fb 100644 --- a/Content.Shared/Players/SharedPlayerSystem.cs +++ b/Content.Shared/Players/SharedPlayerSystem.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Player; +using Robust.Shared.Player; namespace Content.Shared.Players; diff --git a/Content.Shared/PneumaticCannon/SharedPneumaticCannonSystem.cs b/Content.Shared/PneumaticCannon/SharedPneumaticCannonSystem.cs index 6df8428ede..9724d522dc 100644 --- a/Content.Shared/PneumaticCannon/SharedPneumaticCannonSystem.cs +++ b/Content.Shared/PneumaticCannon/SharedPneumaticCannonSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Popups; +using Content.Shared.Popups; using Content.Shared.Weapons.Ranged.Systems; using Robust.Shared.Containers; using Robust.Shared.Serialization; diff --git a/Content.Shared/Pointing/Components/SharedRoguePointingArrowComponent.cs b/Content.Shared/Pointing/Components/SharedRoguePointingArrowComponent.cs index 72579caa35..9aa46956e0 100644 --- a/Content.Shared/Pointing/Components/SharedRoguePointingArrowComponent.cs +++ b/Content.Shared/Pointing/Components/SharedRoguePointingArrowComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; using Robust.Shared.Serialization; namespace Content.Shared.Pointing.Components diff --git a/Content.Shared/Points/SharedPointSystem.cs b/Content.Shared/Points/SharedPointSystem.cs index 978f4bca42..f6691dd574 100644 --- a/Content.Shared/Points/SharedPointSystem.cs +++ b/Content.Shared/Points/SharedPointSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.FixedPoint; +using Content.Shared.FixedPoint; using Robust.Shared.Network; using Robust.Shared.Utility; diff --git a/Content.Shared/Polymorph/PolymorphActions.cs b/Content.Shared/Polymorph/PolymorphActions.cs index 13e00f55e2..f44cfc575f 100644 --- a/Content.Shared/Polymorph/PolymorphActions.cs +++ b/Content.Shared/Polymorph/PolymorphActions.cs @@ -1,4 +1,4 @@ -using Content.Shared.Actions; +using Content.Shared.Actions; using Robust.Shared.Prototypes; namespace Content.Shared.Polymorph; diff --git a/Content.Shared/Power/ApcToolFinishedEvent.cs b/Content.Shared/Power/ApcToolFinishedEvent.cs index fcf3940171..fb29de5e41 100644 --- a/Content.Shared/Power/ApcToolFinishedEvent.cs +++ b/Content.Shared/Power/ApcToolFinishedEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.DoAfter; +using Content.Shared.DoAfter; using Robust.Shared.Serialization; namespace Content.Shared.Power; diff --git a/Content.Shared/Power/Components/ApcPowerReceiverComponentState.cs b/Content.Shared/Power/Components/ApcPowerReceiverComponentState.cs index 31456c86f2..3ce2fbae60 100644 --- a/Content.Shared/Power/Components/ApcPowerReceiverComponentState.cs +++ b/Content.Shared/Power/Components/ApcPowerReceiverComponentState.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Power.Components; diff --git a/Content.Shared/Power/Components/SharedApcPowerReceiverComponent.cs b/Content.Shared/Power/Components/SharedApcPowerReceiverComponent.cs index 18309803f8..0feb43a53c 100644 --- a/Content.Shared/Power/Components/SharedApcPowerReceiverComponent.cs +++ b/Content.Shared/Power/Components/SharedApcPowerReceiverComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Power.Components; diff --git a/Content.Shared/Power/Generation/Teg/SharedTeg.cs b/Content.Shared/Power/Generation/Teg/SharedTeg.cs index b534ff1fc3..cce5804910 100644 --- a/Content.Shared/Power/Generation/Teg/SharedTeg.cs +++ b/Content.Shared/Power/Generation/Teg/SharedTeg.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Power.Generation.Teg; diff --git a/Content.Shared/Power/Generator/FuelGeneratorComponent.cs b/Content.Shared/Power/Generator/FuelGeneratorComponent.cs index 1cdb22a109..534c3fa2a3 100644 --- a/Content.Shared/Power/Generator/FuelGeneratorComponent.cs +++ b/Content.Shared/Power/Generator/FuelGeneratorComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Guidebook; +using Content.Shared.Guidebook; using Robust.Shared.GameStates; namespace Content.Shared.Power.Generator; diff --git a/Content.Shared/Power/Generator/GeneratorExhaustGasComponent.cs b/Content.Shared/Power/Generator/GeneratorExhaustGasComponent.cs index c2e1d24891..3f86f1cc84 100644 --- a/Content.Shared/Power/Generator/GeneratorExhaustGasComponent.cs +++ b/Content.Shared/Power/Generator/GeneratorExhaustGasComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Atmos; +using Content.Shared.Atmos; namespace Content.Shared.Power.Generator; diff --git a/Content.Shared/Power/Generator/PowerSwitchableComponent.cs b/Content.Shared/Power/Generator/PowerSwitchableComponent.cs index 39118b21e5..10ed1412b9 100644 --- a/Content.Shared/Power/Generator/PowerSwitchableComponent.cs +++ b/Content.Shared/Power/Generator/PowerSwitchableComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Audio; +using Robust.Shared.Audio; using Robust.Shared.GameStates; using Robust.Shared.Serialization; diff --git a/Content.Shared/Power/Generator/SharedGeneratorSystem.cs b/Content.Shared/Power/Generator/SharedGeneratorSystem.cs index 2cb3aa0b70..fc7aa06467 100644 --- a/Content.Shared/Power/Generator/SharedGeneratorSystem.cs +++ b/Content.Shared/Power/Generator/SharedGeneratorSystem.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Power.Generator; +namespace Content.Shared.Power.Generator; /// /// This handles small, portable generators that run off a material fuel. diff --git a/Content.Shared/Power/Generator/SharedPortableGeneratorComponent.cs b/Content.Shared/Power/Generator/SharedPortableGeneratorComponent.cs index a771802670..7960a0512a 100644 --- a/Content.Shared/Power/Generator/SharedPortableGeneratorComponent.cs +++ b/Content.Shared/Power/Generator/SharedPortableGeneratorComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Audio; +using Robust.Shared.Audio; using Robust.Shared.Serialization; namespace Content.Shared.Power.Generator; diff --git a/Content.Shared/Power/Generator/SharedPortableGeneratorSystem.cs b/Content.Shared/Power/Generator/SharedPortableGeneratorSystem.cs index 4ed911c296..468c53de2b 100644 --- a/Content.Shared/Power/Generator/SharedPortableGeneratorSystem.cs +++ b/Content.Shared/Power/Generator/SharedPortableGeneratorSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.DoAfter; +using Content.Shared.DoAfter; using Robust.Shared.Serialization; namespace Content.Shared.Power.Generator; diff --git a/Content.Shared/Power/Generator/SharedPowerSwitchableSystem.cs b/Content.Shared/Power/Generator/SharedPowerSwitchableSystem.cs index 00d2b1d7a0..a473c1bdc4 100644 --- a/Content.Shared/Power/Generator/SharedPowerSwitchableSystem.cs +++ b/Content.Shared/Power/Generator/SharedPowerSwitchableSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Examine; +using Content.Shared.Examine; using Content.Shared.Verbs; using Robust.Shared.Utility; diff --git a/Content.Shared/Power/PowerChangedEvent.cs b/Content.Shared/Power/PowerChangedEvent.cs index 578a34142a..2fb2ed9b4b 100644 --- a/Content.Shared/Power/PowerChangedEvent.cs +++ b/Content.Shared/Power/PowerChangedEvent.cs @@ -5,4 +5,4 @@ namespace Content.Shared.Power; /// Does nothing on the client. /// [ByRefEvent] -public readonly record struct PowerChangedEvent(bool Powered, float ReceivingPower); \ No newline at end of file +public readonly record struct PowerChangedEvent(bool Powered, float ReceivingPower); diff --git a/Content.Shared/Power/SharedBattery.cs b/Content.Shared/Power/SharedBattery.cs index 750fc6cb01..1691f889ed 100644 --- a/Content.Shared/Power/SharedBattery.cs +++ b/Content.Shared/Power/SharedBattery.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Power; diff --git a/Content.Shared/Power/SharedPowerCharge.cs b/Content.Shared/Power/SharedPowerCharge.cs index 5599930f37..1a1a96b1c8 100644 --- a/Content.Shared/Power/SharedPowerCharge.cs +++ b/Content.Shared/Power/SharedPowerCharge.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Power; diff --git a/Content.Shared/Power/SharedPowerChargeComponent.cs b/Content.Shared/Power/SharedPowerChargeComponent.cs index 96f26a7903..5c6eb24bcf 100644 --- a/Content.Shared/Power/SharedPowerChargeComponent.cs +++ b/Content.Shared/Power/SharedPowerChargeComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Power; +namespace Content.Shared.Power; /// /// Component for a powered machine that slowly powers on and off over a period of time. diff --git a/Content.Shared/Preferences/MsgDeleteCharacter.cs b/Content.Shared/Preferences/MsgDeleteCharacter.cs index 92b59e5eb7..d5b3f00abc 100644 --- a/Content.Shared/Preferences/MsgDeleteCharacter.cs +++ b/Content.Shared/Preferences/MsgDeleteCharacter.cs @@ -1,4 +1,4 @@ -using Lidgren.Network; +using Lidgren.Network; using Robust.Shared.Network; using Robust.Shared.Serialization; diff --git a/Content.Shared/Preferences/MsgSelectCharacter.cs b/Content.Shared/Preferences/MsgSelectCharacter.cs index 938a5e710e..0b5e0eaf23 100644 --- a/Content.Shared/Preferences/MsgSelectCharacter.cs +++ b/Content.Shared/Preferences/MsgSelectCharacter.cs @@ -1,4 +1,4 @@ -using Lidgren.Network; +using Lidgren.Network; using Robust.Shared.Network; using Robust.Shared.Serialization; diff --git a/Content.Shared/Prototypes/EntityPrototypeHelpers.cs b/Content.Shared/Prototypes/EntityPrototypeHelpers.cs index 484dd4ad1d..d2e5387d17 100644 --- a/Content.Shared/Prototypes/EntityPrototypeHelpers.cs +++ b/Content.Shared/Prototypes/EntityPrototypeHelpers.cs @@ -1,4 +1,4 @@ -using JetBrains.Annotations; +using JetBrains.Annotations; using Robust.Shared.Prototypes; namespace Content.Shared.Prototypes diff --git a/Content.Shared/ProximityDetection/Components/ProximityDetectorComponent.cs b/Content.Shared/ProximityDetection/Components/ProximityDetectorComponent.cs index 8f8d37a27d..6956e62e4f 100644 --- a/Content.Shared/ProximityDetection/Components/ProximityDetectorComponent.cs +++ b/Content.Shared/ProximityDetection/Components/ProximityDetectorComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.ProximityDetection.Systems; +using Content.Shared.ProximityDetection.Systems; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; diff --git a/Content.Shared/ProximityDetection/ProximityDetectionEvents.cs b/Content.Shared/ProximityDetection/ProximityDetectionEvents.cs index 1c235f6ce4..1761d5fb91 100644 --- a/Content.Shared/ProximityDetection/ProximityDetectionEvents.cs +++ b/Content.Shared/ProximityDetection/ProximityDetectionEvents.cs @@ -1,4 +1,4 @@ -using Content.Shared.ProximityDetection.Components; +using Content.Shared.ProximityDetection.Components; namespace Content.Shared.ProximityDetection; diff --git a/Content.Shared/ProximityDetection/Systems/ProximityDetectionSystem.cs b/Content.Shared/ProximityDetection/Systems/ProximityDetectionSystem.cs index 167a95964d..5b7672c958 100644 --- a/Content.Shared/ProximityDetection/Systems/ProximityDetectionSystem.cs +++ b/Content.Shared/ProximityDetection/Systems/ProximityDetectionSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Item.ItemToggle; +using Content.Shared.Item.ItemToggle; using Content.Shared.Item.ItemToggle.Components; using Content.Shared.ProximityDetection.Components; using Robust.Shared.Timing; diff --git a/Content.Shared/Puppet/VentriloquistPuppetComponent.cs b/Content.Shared/Puppet/VentriloquistPuppetComponent.cs index 8f9239d50f..401fbf9bcf 100644 --- a/Content.Shared/Puppet/VentriloquistPuppetComponent.cs +++ b/Content.Shared/Puppet/VentriloquistPuppetComponent.cs @@ -5,4 +5,4 @@ namespace Content.Shared.Puppet; [RegisterComponent, NetworkedComponent] public sealed partial class VentriloquistPuppetComponent : Component { -} \ No newline at end of file +} diff --git a/Content.Shared/Radiation/Systems/SharedRadiationSystem.cs b/Content.Shared/Radiation/Systems/SharedRadiationSystem.cs index d618084672..f2b522847d 100644 --- a/Content.Shared/Radiation/Systems/SharedRadiationSystem.cs +++ b/Content.Shared/Radiation/Systems/SharedRadiationSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Radiation.Components; +using Content.Shared.Radiation.Components; namespace Content.Shared.Radiation.Systems; diff --git a/Content.Shared/Radio/Components/IntercomComponent.cs b/Content.Shared/Radio/Components/IntercomComponent.cs index 8d7b87597b..3afbfc52fe 100644 --- a/Content.Shared/Radio/Components/IntercomComponent.cs +++ b/Content.Shared/Radio/Components/IntercomComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; using Robust.Shared.Prototypes; namespace Content.Shared.Radio.Components; diff --git a/Content.Shared/Radio/RadioVisuals.cs b/Content.Shared/Radio/RadioVisuals.cs index a43828716d..754a88c2ff 100644 --- a/Content.Shared/Radio/RadioVisuals.cs +++ b/Content.Shared/Radio/RadioVisuals.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Radio; diff --git a/Content.Shared/Radio/SharedIntercom.cs b/Content.Shared/Radio/SharedIntercom.cs index f697add8b9..3146a6272d 100644 --- a/Content.Shared/Radio/SharedIntercom.cs +++ b/Content.Shared/Radio/SharedIntercom.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; using Robust.Shared.Serialization; namespace Content.Shared.Radio; diff --git a/Content.Shared/RatKing/Components/RummageableComponent.cs b/Content.Shared/RatKing/Components/RummageableComponent.cs index ea92b55805..ef52d5944a 100644 --- a/Content.Shared/RatKing/Components/RummageableComponent.cs +++ b/Content.Shared/RatKing/Components/RummageableComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.EntityTable.EntitySelectors; +using Content.Shared.EntityTable.EntitySelectors; using Robust.Shared.Audio; using Robust.Shared.GameStates; diff --git a/Content.Shared/RatKing/RatKingActions.cs b/Content.Shared/RatKing/RatKingActions.cs index e2031e972b..a195c9823d 100644 --- a/Content.Shared/RatKing/RatKingActions.cs +++ b/Content.Shared/RatKing/RatKingActions.cs @@ -1,4 +1,4 @@ -using Content.Shared.Actions; +using Content.Shared.Actions; namespace Content.Shared.RatKing; diff --git a/Content.Shared/RatKing/RatKingServantComponent.cs b/Content.Shared/RatKing/RatKingServantComponent.cs index f6e8d0110e..1aa09a1c17 100644 --- a/Content.Shared/RatKing/RatKingServantComponent.cs +++ b/Content.Shared/RatKing/RatKingServantComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.RatKing; diff --git a/Content.Shared/Repairable/RepairableComponent.cs b/Content.Shared/Repairable/RepairableComponent.cs index 60eb57581a..619f943878 100644 --- a/Content.Shared/Repairable/RepairableComponent.cs +++ b/Content.Shared/Repairable/RepairableComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Damage; +using Content.Shared.Damage; using Content.Shared.Tools; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; diff --git a/Content.Shared/RepulseAttract/Events/RepulseAttractActionEvent.cs b/Content.Shared/RepulseAttract/Events/RepulseAttractActionEvent.cs index ac164d4327..461f1c906f 100644 --- a/Content.Shared/RepulseAttract/Events/RepulseAttractActionEvent.cs +++ b/Content.Shared/RepulseAttract/Events/RepulseAttractActionEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Actions; +using Content.Shared.Actions; namespace Content.Shared.RepulseAttract.Events; diff --git a/Content.Shared/RepulseAttract/RepulseAttractComponent.cs b/Content.Shared/RepulseAttract/RepulseAttractComponent.cs index c167d81ec6..eb6cdb83c4 100644 --- a/Content.Shared/RepulseAttract/RepulseAttractComponent.cs +++ b/Content.Shared/RepulseAttract/RepulseAttractComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Physics; +using Content.Shared.Physics; using Content.Shared.Whitelist; using Robust.Shared.GameStates; diff --git a/Content.Shared/RepulseAttract/RepulseAttractSystem.cs b/Content.Shared/RepulseAttract/RepulseAttractSystem.cs index 2d93d70878..0b7ca79183 100644 --- a/Content.Shared/RepulseAttract/RepulseAttractSystem.cs +++ b/Content.Shared/RepulseAttract/RepulseAttractSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Physics; +using Content.Shared.Physics; using Content.Shared.Throwing; using Content.Shared.Weapons.Melee.Events; using Content.Shared.Whitelist; diff --git a/Content.Shared/Research/Components/ResearchClientComponent.cs b/Content.Shared/Research/Components/ResearchClientComponent.cs index 7ab47ad260..00b5c53dc5 100644 --- a/Content.Shared/Research/Components/ResearchClientComponent.cs +++ b/Content.Shared/Research/Components/ResearchClientComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Research.Components { diff --git a/Content.Shared/Research/Prototypes/TechDisciplinePrototype.cs b/Content.Shared/Research/Prototypes/TechDisciplinePrototype.cs index 06245927de..4dc08225ec 100644 --- a/Content.Shared/Research/Prototypes/TechDisciplinePrototype.cs +++ b/Content.Shared/Research/Prototypes/TechDisciplinePrototype.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; using Robust.Shared.Utility; namespace Content.Shared.Research.Prototypes; diff --git a/Content.Shared/Research/Prototypes/TechnologyPrototype.cs b/Content.Shared/Research/Prototypes/TechnologyPrototype.cs index 3e75969cca..64d91f04ae 100644 --- a/Content.Shared/Research/Prototypes/TechnologyPrototype.cs +++ b/Content.Shared/Research/Prototypes/TechnologyPrototype.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; using Robust.Shared.Utility; namespace Content.Shared.Research.Prototypes; diff --git a/Content.Shared/Research/SharedDiskConsole.cs b/Content.Shared/Research/SharedDiskConsole.cs index 2b44799f99..b57a8c9a73 100644 --- a/Content.Shared/Research/SharedDiskConsole.cs +++ b/Content.Shared/Research/SharedDiskConsole.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Research; diff --git a/Content.Shared/Research/TechnologyDisk/Components/TechnologyDiskComponent.cs b/Content.Shared/Research/TechnologyDisk/Components/TechnologyDiskComponent.cs index 0afb845a9f..f2696b123c 100644 --- a/Content.Shared/Research/TechnologyDisk/Components/TechnologyDiskComponent.cs +++ b/Content.Shared/Research/TechnologyDisk/Components/TechnologyDiskComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Random; +using Content.Shared.Random; using Content.Shared.Research.Prototypes; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; diff --git a/Content.Shared/Resist/EscapeInventoryEvent.cs b/Content.Shared/Resist/EscapeInventoryEvent.cs index c77545fcb0..01b0c521b9 100644 --- a/Content.Shared/Resist/EscapeInventoryEvent.cs +++ b/Content.Shared/Resist/EscapeInventoryEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.DoAfter; +using Content.Shared.DoAfter; using Robust.Shared.Serialization; namespace Content.Shared.Resist; diff --git a/Content.Shared/Resist/ResistLockerDoAfterEvent.cs b/Content.Shared/Resist/ResistLockerDoAfterEvent.cs index 2acf160b80..d789d25fa0 100644 --- a/Content.Shared/Resist/ResistLockerDoAfterEvent.cs +++ b/Content.Shared/Resist/ResistLockerDoAfterEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.DoAfter; +using Content.Shared.DoAfter; using Robust.Shared.Serialization; namespace Content.Shared.Resist; diff --git a/Content.Shared/Respawn/SharedSpecialRespawnSystem.cs b/Content.Shared/Respawn/SharedSpecialRespawnSystem.cs index 6c738e4489..f1321fa175 100644 --- a/Content.Shared/Respawn/SharedSpecialRespawnSystem.cs +++ b/Content.Shared/Respawn/SharedSpecialRespawnSystem.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Respawn; +namespace Content.Shared.Respawn; public abstract class SharedSpecialRespawnSystem : EntitySystem { diff --git a/Content.Shared/Revenant/EntitySystems/SharedRevenantOverloadedLightsSystem.cs b/Content.Shared/Revenant/EntitySystems/SharedRevenantOverloadedLightsSystem.cs index 7fa2ef51e8..7f1c541ea7 100644 --- a/Content.Shared/Revenant/EntitySystems/SharedRevenantOverloadedLightsSystem.cs +++ b/Content.Shared/Revenant/EntitySystems/SharedRevenantOverloadedLightsSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Revenant.Components; +using Content.Shared.Revenant.Components; namespace Content.Shared.Revenant.EntitySystems; diff --git a/Content.Shared/Roles/Components/ChangelingRoleComponent.cs b/Content.Shared/Roles/Components/ChangelingRoleComponent.cs index fb9bc05af3..50ba6876af 100644 --- a/Content.Shared/Roles/Components/ChangelingRoleComponent.cs +++ b/Content.Shared/Roles/Components/ChangelingRoleComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Roles.Components; diff --git a/Content.Shared/Roles/Components/GhostRoleMarkerRoleComponent.cs b/Content.Shared/Roles/Components/GhostRoleMarkerRoleComponent.cs index 623f298474..33381fb879 100644 --- a/Content.Shared/Roles/Components/GhostRoleMarkerRoleComponent.cs +++ b/Content.Shared/Roles/Components/GhostRoleMarkerRoleComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Roles.Components; diff --git a/Content.Shared/Roles/Components/JobRoleComponent.cs b/Content.Shared/Roles/Components/JobRoleComponent.cs index c62c0ea1f4..09ca5f2c18 100644 --- a/Content.Shared/Roles/Components/JobRoleComponent.cs +++ b/Content.Shared/Roles/Components/JobRoleComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Roles.Components; diff --git a/Content.Shared/Roles/Components/ObserverRoleComponent.cs b/Content.Shared/Roles/Components/ObserverRoleComponent.cs index c7a451eac3..d7abd686a0 100644 --- a/Content.Shared/Roles/Components/ObserverRoleComponent.cs +++ b/Content.Shared/Roles/Components/ObserverRoleComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Roles.Components; diff --git a/Content.Shared/Roles/Components/RoleBriefingComponent.cs b/Content.Shared/Roles/Components/RoleBriefingComponent.cs index 99eccf8a34..0dab6b6655 100644 --- a/Content.Shared/Roles/Components/RoleBriefingComponent.cs +++ b/Content.Shared/Roles/Components/RoleBriefingComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Roles.Components; diff --git a/Content.Shared/Roles/Components/SiliconBrainRoleComponent.cs b/Content.Shared/Roles/Components/SiliconBrainRoleComponent.cs index d8eaebbe1f..872feab9ba 100644 --- a/Content.Shared/Roles/Components/SiliconBrainRoleComponent.cs +++ b/Content.Shared/Roles/Components/SiliconBrainRoleComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Roles.Components; diff --git a/Content.Shared/Roles/Components/SubvertedSiliconRoleComponent.cs b/Content.Shared/Roles/Components/SubvertedSiliconRoleComponent.cs index 6b62f458ce..0f7e2881e5 100644 --- a/Content.Shared/Roles/Components/SubvertedSiliconRoleComponent.cs +++ b/Content.Shared/Roles/Components/SubvertedSiliconRoleComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Roles.Components; diff --git a/Content.Shared/Roles/Components/SurvivorRoleComponent.cs b/Content.Shared/Roles/Components/SurvivorRoleComponent.cs index 1eee04d9e5..442e922aa3 100644 --- a/Content.Shared/Roles/Components/SurvivorRoleComponent.cs +++ b/Content.Shared/Roles/Components/SurvivorRoleComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Roles.Components; diff --git a/Content.Shared/Roles/Components/WizardRoleComponent.cs b/Content.Shared/Roles/Components/WizardRoleComponent.cs index 0d24897216..45e6a1bab4 100644 --- a/Content.Shared/Roles/Components/WizardRoleComponent.cs +++ b/Content.Shared/Roles/Components/WizardRoleComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Roles.Components; diff --git a/Content.Shared/Roles/MindGetAllRoleInfoEvent.cs b/Content.Shared/Roles/MindGetAllRoleInfoEvent.cs index a2f2820b5c..14c3d87ca2 100644 --- a/Content.Shared/Roles/MindGetAllRoleInfoEvent.cs +++ b/Content.Shared/Roles/MindGetAllRoleInfoEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Players.PlayTimeTracking; +using Content.Shared.Players.PlayTimeTracking; namespace Content.Shared.Roles; diff --git a/Content.Shared/Roles/RoleAddedEvent.cs b/Content.Shared/Roles/RoleAddedEvent.cs index feb4d1bf1f..301c5b86b6 100644 --- a/Content.Shared/Roles/RoleAddedEvent.cs +++ b/Content.Shared/Roles/RoleAddedEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Mind; +using Content.Shared.Mind; namespace Content.Shared.Roles; diff --git a/Content.Shared/Roles/RoleEvent.cs b/Content.Shared/Roles/RoleEvent.cs index 80dd33e1c7..eb6b325a9f 100644 --- a/Content.Shared/Roles/RoleEvent.cs +++ b/Content.Shared/Roles/RoleEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Mind; +using Content.Shared.Mind; namespace Content.Shared.Roles; diff --git a/Content.Shared/Roles/RoleRemovedEvent.cs b/Content.Shared/Roles/RoleRemovedEvent.cs index 41a7f7bcc3..5b212c9a6d 100644 --- a/Content.Shared/Roles/RoleRemovedEvent.cs +++ b/Content.Shared/Roles/RoleRemovedEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Mind; +using Content.Shared.Mind; namespace Content.Shared.Roles; diff --git a/Content.Shared/Rootable/RootableComponent.cs b/Content.Shared/Rootable/RootableComponent.cs index 94f8dbcea9..657483d0f6 100644 --- a/Content.Shared/Rootable/RootableComponent.cs +++ b/Content.Shared/Rootable/RootableComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Alert; +using Content.Shared.Alert; using Content.Shared.FixedPoint; using Robust.Shared.Audio; using Robust.Shared.GameStates; diff --git a/Content.Shared/Rootable/RootableSystem.cs b/Content.Shared/Rootable/RootableSystem.cs index 62c52ef13f..792b1e5c53 100644 --- a/Content.Shared/Rootable/RootableSystem.cs +++ b/Content.Shared/Rootable/RootableSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Actions; +using Content.Shared.Actions; using Content.Shared.Actions.Components; using Content.Shared.Administration.Logs; using Content.Shared.Alert; diff --git a/Content.Shared/RoundEnd/ScreenShuttlePayload.cs b/Content.Shared/RoundEnd/ScreenShuttlePayload.cs index 2dcfd3809a..cfcb8bde92 100644 --- a/Content.Shared/RoundEnd/ScreenShuttlePayload.cs +++ b/Content.Shared/RoundEnd/ScreenShuttlePayload.cs @@ -1,4 +1,4 @@ -using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork; namespace Content.Shared.RoundEnd; diff --git a/Content.Shared/Rounding/ContentHelpers.cs b/Content.Shared/Rounding/ContentHelpers.cs index 9ecee22998..493b409298 100644 --- a/Content.Shared/Rounding/ContentHelpers.cs +++ b/Content.Shared/Rounding/ContentHelpers.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Rounding +namespace Content.Shared.Rounding { public static class ContentHelpers { diff --git a/Content.Shared/SMES/SharedSmesComponent.cs b/Content.Shared/SMES/SharedSmesComponent.cs index 3fe9dd8f5f..85f5897bc2 100644 --- a/Content.Shared/SMES/SharedSmesComponent.cs +++ b/Content.Shared/SMES/SharedSmesComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.SMES; diff --git a/Content.Shared/Salvage/Expeditions/ExpeditionStage.cs b/Content.Shared/Salvage/Expeditions/ExpeditionStage.cs index a92d6c292a..ea985238df 100644 --- a/Content.Shared/Salvage/Expeditions/ExpeditionStage.cs +++ b/Content.Shared/Salvage/Expeditions/ExpeditionStage.cs @@ -7,4 +7,4 @@ public enum ExpeditionStage : byte Countdown, MusicCountdown, FinalCountdown, -} \ No newline at end of file +} diff --git a/Content.Shared/Salvage/Magnet/ISalvageMagnetOffering.cs b/Content.Shared/Salvage/Magnet/ISalvageMagnetOffering.cs index 7d002fe679..551f7e0eb5 100644 --- a/Content.Shared/Salvage/Magnet/ISalvageMagnetOffering.cs +++ b/Content.Shared/Salvage/Magnet/ISalvageMagnetOffering.cs @@ -3,4 +3,4 @@ namespace Content.Shared.Salvage.Magnet; public interface ISalvageMagnetOffering { -} \ No newline at end of file +} diff --git a/Content.Shared/Screens/ScreenTextPayload.cs b/Content.Shared/Screens/ScreenTextPayload.cs index 25371e8ca5..5a8560b6f1 100644 --- a/Content.Shared/Screens/ScreenTextPayload.cs +++ b/Content.Shared/Screens/ScreenTextPayload.cs @@ -1,4 +1,4 @@ -using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork; namespace Content.Shared.Screens; diff --git a/Content.Shared/Security/SecurityStatus.cs b/Content.Shared/Security/SecurityStatus.cs index afcbd00fd4..00fe5bd39b 100644 --- a/Content.Shared/Security/SecurityStatus.cs +++ b/Content.Shared/Security/SecurityStatus.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Security; diff --git a/Content.Shared/Security/Systems/DeployableBarrierSystem.cs b/Content.Shared/Security/Systems/DeployableBarrierSystem.cs index f82d791f6d..806be6d268 100644 --- a/Content.Shared/Security/Systems/DeployableBarrierSystem.cs +++ b/Content.Shared/Security/Systems/DeployableBarrierSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Lock; +using Content.Shared.Lock; using Content.Shared.Movement.Pulling.Components; using Content.Shared.Movement.Pulling.Systems; using Content.Shared.Security.Components; diff --git a/Content.Shared/SensorMonitoring/BatterySensorPayloads.cs b/Content.Shared/SensorMonitoring/BatterySensorPayloads.cs index 3b2e422468..2fdbcd242a 100644 --- a/Content.Shared/SensorMonitoring/BatterySensorPayloads.cs +++ b/Content.Shared/SensorMonitoring/BatterySensorPayloads.cs @@ -1,4 +1,4 @@ -using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork; namespace Content.Shared.SensorMonitoring; diff --git a/Content.Shared/SensorMonitoring/SharedSensorMonitoringConsoleComponent.cs b/Content.Shared/SensorMonitoring/SharedSensorMonitoringConsoleComponent.cs index 472697d974..d578117c8e 100644 --- a/Content.Shared/SensorMonitoring/SharedSensorMonitoringConsoleComponent.cs +++ b/Content.Shared/SensorMonitoring/SharedSensorMonitoringConsoleComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; using ConsoleUIState = Content.Shared.SensorMonitoring.SensorMonitoringConsoleBoundInterfaceState; namespace Content.Shared.SensorMonitoring; diff --git a/Content.Shared/SharedArrayExtension.cs b/Content.Shared/SharedArrayExtension.cs index dd02e3784e..181c0d62a2 100644 --- a/Content.Shared/SharedArrayExtension.cs +++ b/Content.Shared/SharedArrayExtension.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Random; +using Robust.Shared.Random; namespace Content.Shared; diff --git a/Content.Shared/Silicons/Borgs/BorgTypePrototype.cs b/Content.Shared/Silicons/Borgs/BorgTypePrototype.cs index a45e2aa1d1..bc181c7f18 100644 --- a/Content.Shared/Silicons/Borgs/BorgTypePrototype.cs +++ b/Content.Shared/Silicons/Borgs/BorgTypePrototype.cs @@ -1,4 +1,4 @@ -using Content.Shared.Interaction.Components; +using Content.Shared.Interaction.Components; using Content.Shared.Inventory; using Content.Shared.Radio; using Content.Shared.Silicons.Borgs.Components; diff --git a/Content.Shared/Silicons/Borgs/BorgUI.cs b/Content.Shared/Silicons/Borgs/BorgUI.cs index 9d843d4046..0b9db6da94 100644 --- a/Content.Shared/Silicons/Borgs/BorgUI.cs +++ b/Content.Shared/Silicons/Borgs/BorgUI.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Silicons.Borgs; diff --git a/Content.Shared/Silicons/Borgs/Components/BorgBrainComponent.cs b/Content.Shared/Silicons/Borgs/Components/BorgBrainComponent.cs index adbd57cab7..6f33b44442 100644 --- a/Content.Shared/Silicons/Borgs/Components/BorgBrainComponent.cs +++ b/Content.Shared/Silicons/Borgs/Components/BorgBrainComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Silicons.Borgs.Components; diff --git a/Content.Shared/Silicons/Borgs/Components/BorgChassisComponent.cs b/Content.Shared/Silicons/Borgs/Components/BorgChassisComponent.cs index d7b90a1ac2..d97816916d 100644 --- a/Content.Shared/Silicons/Borgs/Components/BorgChassisComponent.cs +++ b/Content.Shared/Silicons/Borgs/Components/BorgChassisComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Alert; +using Content.Shared.Alert; using Content.Shared.Whitelist; using Robust.Shared.Audio; using Robust.Shared.Containers; diff --git a/Content.Shared/Silicons/Borgs/Components/BorgModuleComponent.cs b/Content.Shared/Silicons/Borgs/Components/BorgModuleComponent.cs index f826bd0ad1..8fb9d1774a 100644 --- a/Content.Shared/Silicons/Borgs/Components/BorgModuleComponent.cs +++ b/Content.Shared/Silicons/Borgs/Components/BorgModuleComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Silicons.Borgs.Components; diff --git a/Content.Shared/Silicons/Borgs/Components/BorgModuleIconComponent.cs b/Content.Shared/Silicons/Borgs/Components/BorgModuleIconComponent.cs index ff38a40f48..a82e0c6cdc 100644 --- a/Content.Shared/Silicons/Borgs/Components/BorgModuleIconComponent.cs +++ b/Content.Shared/Silicons/Borgs/Components/BorgModuleIconComponent.cs @@ -1,4 +1,4 @@ -//using Robust.Shared.GameObjects; +//using Robust.Shared.GameObjects; using Robust.Shared.GameStates; using Robust.Shared.Utility; @@ -17,4 +17,4 @@ public sealed partial class BorgModuleIconComponent : Component [DataField] public SpriteSpecifier.Rsi Icon = default!; -} \ No newline at end of file +} diff --git a/Content.Shared/Silicons/Borgs/Components/BorgSwitchableTypeComponent.cs b/Content.Shared/Silicons/Borgs/Components/BorgSwitchableTypeComponent.cs index 9a783d19aa..a6aa2f5df9 100644 --- a/Content.Shared/Silicons/Borgs/Components/BorgSwitchableTypeComponent.cs +++ b/Content.Shared/Silicons/Borgs/Components/BorgSwitchableTypeComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Actions; +using Content.Shared.Actions; using Content.Shared.Radio; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; diff --git a/Content.Shared/Silicons/Borgs/Components/ComponentBorgModuleComponent.cs b/Content.Shared/Silicons/Borgs/Components/ComponentBorgModuleComponent.cs index 856211a596..a1b002c27a 100644 --- a/Content.Shared/Silicons/Borgs/Components/ComponentBorgModuleComponent.cs +++ b/Content.Shared/Silicons/Borgs/Components/ComponentBorgModuleComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; using Robust.Shared.Prototypes; namespace Content.Shared.Silicons.Borgs.Components; diff --git a/Content.Shared/Silicons/Borgs/Components/MMIComponent.cs b/Content.Shared/Silicons/Borgs/Components/MMIComponent.cs index 51031c930e..177472d062 100644 --- a/Content.Shared/Silicons/Borgs/Components/MMIComponent.cs +++ b/Content.Shared/Silicons/Borgs/Components/MMIComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Containers.ItemSlots; +using Content.Shared.Containers.ItemSlots; using Robust.Shared.GameStates; using Robust.Shared.Serialization; diff --git a/Content.Shared/Silicons/Borgs/Components/SelectableBorgModuleComponent.cs b/Content.Shared/Silicons/Borgs/Components/SelectableBorgModuleComponent.cs index 69e58caa28..24d23da553 100644 --- a/Content.Shared/Silicons/Borgs/Components/SelectableBorgModuleComponent.cs +++ b/Content.Shared/Silicons/Borgs/Components/SelectableBorgModuleComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Actions; +using Content.Shared.Actions; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; diff --git a/Content.Shared/Silicons/Borgs/SharedBorgSystem.Relay.cs b/Content.Shared/Silicons/Borgs/SharedBorgSystem.Relay.cs index c88432fe0f..36e0b3dd17 100644 --- a/Content.Shared/Silicons/Borgs/SharedBorgSystem.Relay.cs +++ b/Content.Shared/Silicons/Borgs/SharedBorgSystem.Relay.cs @@ -1,4 +1,4 @@ -using Content.Shared.Damage; +using Content.Shared.Damage; using Content.Shared.Damage.Systems; using Content.Shared.Silicons.Borgs.Components; diff --git a/Content.Shared/Silicons/Borgs/SharedBorgSystem.Ui.cs b/Content.Shared/Silicons/Borgs/SharedBorgSystem.Ui.cs index e5e8fa8cd8..996a775671 100644 --- a/Content.Shared/Silicons/Borgs/SharedBorgSystem.Ui.cs +++ b/Content.Shared/Silicons/Borgs/SharedBorgSystem.Ui.cs @@ -1,4 +1,4 @@ -using Content.Shared.CCVar; +using Content.Shared.CCVar; using Content.Shared.Database; using Content.Shared.PowerCell.Components; using Content.Shared.Silicons.Borgs.Components; diff --git a/Content.Shared/Silicons/Bots/HugBotComponent.cs b/Content.Shared/Silicons/Bots/HugBotComponent.cs index 64281b6316..c357ab1674 100644 --- a/Content.Shared/Silicons/Bots/HugBotComponent.cs +++ b/Content.Shared/Silicons/Bots/HugBotComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Silicons.Bots; +namespace Content.Shared.Silicons.Bots; /// /// This component describes how a HugBot hugs. diff --git a/Content.Shared/Silicons/Bots/SharedHugBotSystem.cs b/Content.Shared/Silicons/Bots/SharedHugBotSystem.cs index 30937d0e64..bc0e00070f 100644 --- a/Content.Shared/Silicons/Bots/SharedHugBotSystem.cs +++ b/Content.Shared/Silicons/Bots/SharedHugBotSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Emag.Systems; +using Content.Shared.Emag.Systems; using Robust.Shared.Serialization; namespace Content.Shared.Silicons.Bots; diff --git a/Content.Shared/Silicons/Laws/Components/SiliconLawProviderComponent.cs b/Content.Shared/Silicons/Laws/Components/SiliconLawProviderComponent.cs index d78e539aa9..a12c727ac7 100644 --- a/Content.Shared/Silicons/Laws/Components/SiliconLawProviderComponent.cs +++ b/Content.Shared/Silicons/Laws/Components/SiliconLawProviderComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; using Robust.Shared.Audio; namespace Content.Shared.Silicons.Laws.Components; diff --git a/Content.Shared/Silicons/Laws/IonLawPrototype.cs b/Content.Shared/Silicons/Laws/IonLawPrototype.cs index 87586f45df..bf03de6b9a 100644 --- a/Content.Shared/Silicons/Laws/IonLawPrototype.cs +++ b/Content.Shared/Silicons/Laws/IonLawPrototype.cs @@ -1,4 +1,4 @@ -using Content.Shared.Dataset; +using Content.Shared.Dataset; using Robust.Shared.Prototypes; namespace Content.Shared.Silicons.Laws; diff --git a/Content.Shared/Silicons/Laws/SiliconLawEditEuiState.cs b/Content.Shared/Silicons/Laws/SiliconLawEditEuiState.cs index b5b3583715..b17776e551 100644 --- a/Content.Shared/Silicons/Laws/SiliconLawEditEuiState.cs +++ b/Content.Shared/Silicons/Laws/SiliconLawEditEuiState.cs @@ -1,4 +1,4 @@ -using Content.Shared.Eui; +using Content.Shared.Eui; using Robust.Shared.Serialization; namespace Content.Shared.Silicons.Laws; diff --git a/Content.Shared/Silicons/Laws/SiliconLawPrototype.cs b/Content.Shared/Silicons/Laws/SiliconLawPrototype.cs index 7b19205f47..e539741411 100644 --- a/Content.Shared/Silicons/Laws/SiliconLawPrototype.cs +++ b/Content.Shared/Silicons/Laws/SiliconLawPrototype.cs @@ -1,4 +1,4 @@ -using Content.Shared.FixedPoint; +using Content.Shared.FixedPoint; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; diff --git a/Content.Shared/Silicons/Laws/SiliconLawsetPrototype.cs b/Content.Shared/Silicons/Laws/SiliconLawsetPrototype.cs index 2bf5ecba1a..3a20ec1ea7 100644 --- a/Content.Shared/Silicons/Laws/SiliconLawsetPrototype.cs +++ b/Content.Shared/Silicons/Laws/SiliconLawsetPrototype.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; using Robust.Shared.Serialization; namespace Content.Shared.Silicons.Laws; diff --git a/Content.Shared/Singularity/Components/SharedParticleAcceleratorComponent.cs b/Content.Shared/Singularity/Components/SharedParticleAcceleratorComponent.cs index 19ed21c853..84254d9e8f 100644 --- a/Content.Shared/Singularity/Components/SharedParticleAcceleratorComponent.cs +++ b/Content.Shared/Singularity/Components/SharedParticleAcceleratorComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Singularity.Components { diff --git a/Content.Shared/Singularity/EntitySystems/SharedEmitterSystem.cs b/Content.Shared/Singularity/EntitySystems/SharedEmitterSystem.cs index 97ceae6b82..ef1db99c69 100644 --- a/Content.Shared/Singularity/EntitySystems/SharedEmitterSystem.cs +++ b/Content.Shared/Singularity/EntitySystems/SharedEmitterSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Database; +using Content.Shared.Database; using Content.Shared.Examine; using Content.Shared.Lock; using Content.Shared.Popups; diff --git a/Content.Shared/Singularity/SingularityVisualKeys.cs b/Content.Shared/Singularity/SingularityVisualKeys.cs index d9c9d631b7..71ea304e71 100644 --- a/Content.Shared/Singularity/SingularityVisualKeys.cs +++ b/Content.Shared/Singularity/SingularityVisualKeys.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Singularity { diff --git a/Content.Shared/Smoking/SmokeVisuals.cs b/Content.Shared/Smoking/SmokeVisuals.cs index 5617942357..faf963e791 100644 --- a/Content.Shared/Smoking/SmokeVisuals.cs +++ b/Content.Shared/Smoking/SmokeVisuals.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Smoking { diff --git a/Content.Shared/Smoking/SmokingVisuals.cs b/Content.Shared/Smoking/SmokingVisuals.cs index 0d12292c83..fb9b06540b 100644 --- a/Content.Shared/Smoking/SmokingVisuals.cs +++ b/Content.Shared/Smoking/SmokingVisuals.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Smoking { diff --git a/Content.Shared/Spawners/EntitySystems/SpawnPointSystem.cs b/Content.Shared/Spawners/EntitySystems/SpawnPointSystem.cs index ce80e6cec8..955e8cbf30 100644 --- a/Content.Shared/Spawners/EntitySystems/SpawnPointSystem.cs +++ b/Content.Shared/Spawners/EntitySystems/SpawnPointSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.GameTicking; +using Content.Shared.GameTicking; using Content.Shared.Spawners.Components; using Content.Shared.Station.Systems; using Robust.Shared.Map; diff --git a/Content.Shared/Speech/AccentEvent.cs b/Content.Shared/Speech/AccentEvent.cs index 4404404246..6fc4218c30 100644 --- a/Content.Shared/Speech/AccentEvent.cs +++ b/Content.Shared/Speech/AccentEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Inventory; +using Content.Shared.Inventory; namespace Content.Shared.Speech; diff --git a/Content.Shared/Speech/Components/BaseAccentComponent.cs b/Content.Shared/Speech/Components/BaseAccentComponent.cs index 6eb5b326ca..d6bb514323 100644 --- a/Content.Shared/Speech/Components/BaseAccentComponent.cs +++ b/Content.Shared/Speech/Components/BaseAccentComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Speech.Components; +namespace Content.Shared.Speech.Components; /// /// Base class for accent components. diff --git a/Content.Shared/Speech/EmoteActionEvent.cs b/Content.Shared/Speech/EmoteActionEvent.cs index 2a4d359e5c..2bfaa18a28 100644 --- a/Content.Shared/Speech/EmoteActionEvent.cs +++ b/Content.Shared/Speech/EmoteActionEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Actions; +using Content.Shared.Actions; using Content.Shared.Chat.Prototypes; using Robust.Shared.Prototypes; diff --git a/Content.Shared/Speech/EntitySystems/EmotesMenuSystem.cs b/Content.Shared/Speech/EntitySystems/EmotesMenuSystem.cs index 978c75b2d9..be4e98e4e0 100644 --- a/Content.Shared/Speech/EntitySystems/EmotesMenuSystem.cs +++ b/Content.Shared/Speech/EntitySystems/EmotesMenuSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Chat; +using Content.Shared.Chat; namespace Content.Shared.Speech.EntitySystems; diff --git a/Content.Shared/Speech/EntitySystems/LizardAccentSystem.cs b/Content.Shared/Speech/EntitySystems/LizardAccentSystem.cs index 49fea49c21..eecced3f94 100644 --- a/Content.Shared/Speech/EntitySystems/LizardAccentSystem.cs +++ b/Content.Shared/Speech/EntitySystems/LizardAccentSystem.cs @@ -1,4 +1,4 @@ -using System.Text.RegularExpressions; +using System.Text.RegularExpressions; using Content.Shared.Speech.Components; namespace Content.Shared.Speech.EntitySystems; diff --git a/Content.Shared/Speech/EntitySystems/MothAccentSystem.cs b/Content.Shared/Speech/EntitySystems/MothAccentSystem.cs index 2b9f77eebe..2203594d76 100644 --- a/Content.Shared/Speech/EntitySystems/MothAccentSystem.cs +++ b/Content.Shared/Speech/EntitySystems/MothAccentSystem.cs @@ -1,4 +1,4 @@ -using System.Text.RegularExpressions; +using System.Text.RegularExpressions; using Content.Shared.Speech.Components; namespace Content.Shared.Speech.EntitySystems; diff --git a/Content.Shared/Speech/EntitySystems/RatvarianLanguageSystem.cs b/Content.Shared/Speech/EntitySystems/RatvarianLanguageSystem.cs index 73447ff5f1..2864d8acde 100644 --- a/Content.Shared/Speech/EntitySystems/RatvarianLanguageSystem.cs +++ b/Content.Shared/Speech/EntitySystems/RatvarianLanguageSystem.cs @@ -1,4 +1,4 @@ -using System.Text; +using System.Text; using System.Text.RegularExpressions; using Content.Shared.Speech.Components; using Content.Shared.StatusEffectNew; diff --git a/Content.Shared/Speech/EntitySystems/SharedDamagedSiliconAccentSystem.cs b/Content.Shared/Speech/EntitySystems/SharedDamagedSiliconAccentSystem.cs index 8369ad1425..5ae8064355 100644 --- a/Content.Shared/Speech/EntitySystems/SharedDamagedSiliconAccentSystem.cs +++ b/Content.Shared/Speech/EntitySystems/SharedDamagedSiliconAccentSystem.cs @@ -1,4 +1,4 @@ -using System.Text; +using System.Text; using Content.Shared.Damage.Components; using Content.Shared.Damage.Systems; using Content.Shared.FixedPoint; diff --git a/Content.Shared/Speech/EntitySystems/SkeletonAccentSystem.cs b/Content.Shared/Speech/EntitySystems/SkeletonAccentSystem.cs index 852f18ee79..45c6873c1f 100644 --- a/Content.Shared/Speech/EntitySystems/SkeletonAccentSystem.cs +++ b/Content.Shared/Speech/EntitySystems/SkeletonAccentSystem.cs @@ -1,4 +1,4 @@ -using System.Text.RegularExpressions; +using System.Text.RegularExpressions; using Content.Shared.Random.Helpers; using Content.Shared.Speech.Components; using Robust.Shared.Random; diff --git a/Content.Shared/Speech/SpeakAttemptEvent.cs b/Content.Shared/Speech/SpeakAttemptEvent.cs index c76ef4df25..27d425f0b3 100644 --- a/Content.Shared/Speech/SpeakAttemptEvent.cs +++ b/Content.Shared/Speech/SpeakAttemptEvent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Speech +namespace Content.Shared.Speech { public sealed class SpeakAttemptEvent : CancellableEntityEventArgs { diff --git a/Content.Shared/Speech/SpeechVerbPrototype.cs b/Content.Shared/Speech/SpeechVerbPrototype.cs index 6400abfe5e..2c140e036d 100644 --- a/Content.Shared/Speech/SpeechVerbPrototype.cs +++ b/Content.Shared/Speech/SpeechVerbPrototype.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; namespace Content.Shared.Speech; diff --git a/Content.Shared/Spillable/SpillDoAfterEvent.cs b/Content.Shared/Spillable/SpillDoAfterEvent.cs index ff01801617..954876be65 100644 --- a/Content.Shared/Spillable/SpillDoAfterEvent.cs +++ b/Content.Shared/Spillable/SpillDoAfterEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.DoAfter; +using Content.Shared.DoAfter; using Robust.Shared.Serialization; namespace Content.Shared.Spillable; diff --git a/Content.Shared/Sprite/SimpleSpriteOverlayComponent.cs b/Content.Shared/Sprite/SimpleSpriteOverlayComponent.cs index cfba3eb5f3..a6ed62b8aa 100644 --- a/Content.Shared/Sprite/SimpleSpriteOverlayComponent.cs +++ b/Content.Shared/Sprite/SimpleSpriteOverlayComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; using Robust.Shared.Utility; namespace Content.Shared.Sprite; diff --git a/Content.Shared/Stacks/StackEvents.cs b/Content.Shared/Stacks/StackEvents.cs index 9cb421ccc1..e0ab72ebe6 100644 --- a/Content.Shared/Stacks/StackEvents.cs +++ b/Content.Shared/Stacks/StackEvents.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Stacks; +namespace Content.Shared.Stacks; /// /// Raised on the original stack entity when it is split to create another. diff --git a/Content.Shared/Stacks/StackPrototype.cs b/Content.Shared/Stacks/StackPrototype.cs index dfc9d4a997..7fb4d0de80 100644 --- a/Content.Shared/Stacks/StackPrototype.cs +++ b/Content.Shared/Stacks/StackPrototype.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Array; using Robust.Shared.Utility; diff --git a/Content.Shared/Station/Components/StationDataComponent.cs b/Content.Shared/Station/Components/StationDataComponent.cs index 296aaa9505..7d7cf5b2e7 100644 --- a/Content.Shared/Station/Components/StationDataComponent.cs +++ b/Content.Shared/Station/Components/StationDataComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Roles; +using Content.Shared.Roles; using Content.Shared.Station.Systems; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; diff --git a/Content.Shared/Station/Components/StationEventEligibleComponent.cs b/Content.Shared/Station/Components/StationEventEligibleComponent.cs index 22dbc632aa..b6ccdf3b9a 100644 --- a/Content.Shared/Station/Components/StationEventEligibleComponent.cs +++ b/Content.Shared/Station/Components/StationEventEligibleComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Station.Components; +namespace Content.Shared.Station.Components; /// /// This is used for event eligibility. diff --git a/Content.Shared/Station/Components/StationSpawningComponent.cs b/Content.Shared/Station/Components/StationSpawningComponent.cs index 9a925b8dae..afa4ae9a37 100644 --- a/Content.Shared/Station/Components/StationSpawningComponent.cs +++ b/Content.Shared/Station/Components/StationSpawningComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Station.Systems; +using Content.Shared.Station.Systems; namespace Content.Shared.Station.Components; diff --git a/Content.Shared/Station/StationConfig.cs b/Content.Shared/Station/StationConfig.cs index 5bdbf77422..b680495ff8 100644 --- a/Content.Shared/Station/StationConfig.cs +++ b/Content.Shared/Station/StationConfig.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; namespace Content.Shared.Station; diff --git a/Content.Shared/Station/StationsUpdatedEvent.cs b/Content.Shared/Station/StationsUpdatedEvent.cs index 488e2b8e20..c403623380 100644 --- a/Content.Shared/Station/StationsUpdatedEvent.cs +++ b/Content.Shared/Station/StationsUpdatedEvent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Station; diff --git a/Content.Shared/StationRecords/Events/GeneralRecordCreatedEvent.cs b/Content.Shared/StationRecords/Events/GeneralRecordCreatedEvent.cs index 182ecf995e..af5d95f164 100644 --- a/Content.Shared/StationRecords/Events/GeneralRecordCreatedEvent.cs +++ b/Content.Shared/StationRecords/Events/GeneralRecordCreatedEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Preferences; +using Content.Shared.Preferences; namespace Content.Shared.StationRecords.Events; diff --git a/Content.Shared/StationRecords/Events/IStationRecordEvent.cs b/Content.Shared/StationRecords/Events/IStationRecordEvent.cs index 16c54a0bbe..3869345cd9 100644 --- a/Content.Shared/StationRecords/Events/IStationRecordEvent.cs +++ b/Content.Shared/StationRecords/Events/IStationRecordEvent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.StationRecords.Events; +namespace Content.Shared.StationRecords.Events; /// /// Base event for station record events. diff --git a/Content.Shared/StationRecords/Events/RecordModifiedEvent.cs b/Content.Shared/StationRecords/Events/RecordModifiedEvent.cs index 293dd23e73..5ee5c1da77 100644 --- a/Content.Shared/StationRecords/Events/RecordModifiedEvent.cs +++ b/Content.Shared/StationRecords/Events/RecordModifiedEvent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.StationRecords.Events; +namespace Content.Shared.StationRecords.Events; /// /// Event raised after a record is modified. This is to diff --git a/Content.Shared/StationRecords/Events/RecordRemovedEvent.cs b/Content.Shared/StationRecords/Events/RecordRemovedEvent.cs index 61aa815571..ec6a15bc57 100644 --- a/Content.Shared/StationRecords/Events/RecordRemovedEvent.cs +++ b/Content.Shared/StationRecords/Events/RecordRemovedEvent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.StationRecords.Events; +namespace Content.Shared.StationRecords.Events; /// /// Event raised after a record is removed. Only the key is given diff --git a/Content.Shared/StationRecords/StationRecord.cs b/Content.Shared/StationRecords/StationRecord.cs index e717ffc8b9..3649f653db 100644 --- a/Content.Shared/StationRecords/StationRecord.cs +++ b/Content.Shared/StationRecords/StationRecord.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.StationRecords; diff --git a/Content.Shared/StationRecords/Systems/StationRecordsSystem.API.cs b/Content.Shared/StationRecords/Systems/StationRecordsSystem.API.cs index a7c90e64df..17bcbade1a 100644 --- a/Content.Shared/StationRecords/Systems/StationRecordsSystem.API.cs +++ b/Content.Shared/StationRecords/Systems/StationRecordsSystem.API.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using Content.Shared.Random.Helpers; using Content.Shared.StationRecords.Components; using Content.Shared.StationRecords.Events; diff --git a/Content.Shared/StationRecords/Systems/StationRecordsSystem.Helpers.cs b/Content.Shared/StationRecords/Systems/StationRecordsSystem.Helpers.cs index dc5861cbd3..cb8997e1f7 100644 --- a/Content.Shared/StationRecords/Systems/StationRecordsSystem.Helpers.cs +++ b/Content.Shared/StationRecords/Systems/StationRecordsSystem.Helpers.cs @@ -1,4 +1,4 @@ -using Content.Shared.StationRecords.Components; +using Content.Shared.StationRecords.Components; namespace Content.Shared.StationRecords.Systems; diff --git a/Content.Shared/StatusEffect/StatusEffectPrototype.cs b/Content.Shared/StatusEffect/StatusEffectPrototype.cs index f325103d0a..59d7e5aff9 100644 --- a/Content.Shared/StatusEffect/StatusEffectPrototype.cs +++ b/Content.Shared/StatusEffect/StatusEffectPrototype.cs @@ -1,4 +1,4 @@ -using Content.Shared.Alert; +using Content.Shared.Alert; using Robust.Shared.Prototypes; namespace Content.Shared.StatusEffect diff --git a/Content.Shared/StatusEffectNew/Components/CloneableStatusEffectComponent.cs b/Content.Shared/StatusEffectNew/Components/CloneableStatusEffectComponent.cs index 7855d73bb9..170e39827b 100644 --- a/Content.Shared/StatusEffectNew/Components/CloneableStatusEffectComponent.cs +++ b/Content.Shared/StatusEffectNew/Components/CloneableStatusEffectComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.StatusEffectNew.Components; diff --git a/Content.Shared/StatusIcon/Components/JobStatusComponent.cs b/Content.Shared/StatusIcon/Components/JobStatusComponent.cs index 4ec20d7815..849cbb8be8 100644 --- a/Content.Shared/StatusIcon/Components/JobStatusComponent.cs +++ b/Content.Shared/StatusIcon/Components/JobStatusComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Overlays; +using Content.Shared.Overlays; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; diff --git a/Content.Shared/StatusIcon/SharedStatusIconSystem.cs b/Content.Shared/StatusIcon/SharedStatusIconSystem.cs index a4b22e595e..0caa969a44 100644 --- a/Content.Shared/StatusIcon/SharedStatusIconSystem.cs +++ b/Content.Shared/StatusIcon/SharedStatusIconSystem.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.StatusIcon; +namespace Content.Shared.StatusIcon; public abstract class SharedStatusIconSystem : EntitySystem { diff --git a/Content.Shared/StepTrigger/Systems/StepTriggerImmuneSystem.cs b/Content.Shared/StepTrigger/Systems/StepTriggerImmuneSystem.cs index a79f445dd0..8081431ec0 100644 --- a/Content.Shared/StepTrigger/Systems/StepTriggerImmuneSystem.cs +++ b/Content.Shared/StepTrigger/Systems/StepTriggerImmuneSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Examine; +using Content.Shared.Examine; using Content.Shared.Inventory; using Content.Shared.StepTrigger.Components; diff --git a/Content.Shared/Sticky/Components/StickyComponent.cs b/Content.Shared/Sticky/Components/StickyComponent.cs index a4007b0780..b1070a575f 100644 --- a/Content.Shared/Sticky/Components/StickyComponent.cs +++ b/Content.Shared/Sticky/Components/StickyComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Sticky.Systems; +using Content.Shared.Sticky.Systems; using Content.Shared.Whitelist; using Robust.Shared.GameStates; using Robust.Shared.Utility; diff --git a/Content.Shared/Sticky/EntityStuckEvent.cs b/Content.Shared/Sticky/EntityStuckEvent.cs index ae7a65c0ad..b164ca722d 100644 --- a/Content.Shared/Sticky/EntityStuckEvent.cs +++ b/Content.Shared/Sticky/EntityStuckEvent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Sticky; +namespace Content.Shared.Sticky; /// /// Risen on sticky entity to see if it can stick to another entity. diff --git a/Content.Shared/Sticky/StickyDoAfterEvent.cs b/Content.Shared/Sticky/StickyDoAfterEvent.cs index a2f003895e..75cc13c3c8 100644 --- a/Content.Shared/Sticky/StickyDoAfterEvent.cs +++ b/Content.Shared/Sticky/StickyDoAfterEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.DoAfter; +using Content.Shared.DoAfter; using Robust.Shared.Serialization; namespace Content.Shared.Sticky; diff --git a/Content.Shared/Storage/Components/BinComponent.cs b/Content.Shared/Storage/Components/BinComponent.cs index 03967d7fc9..369743e614 100644 --- a/Content.Shared/Storage/Components/BinComponent.cs +++ b/Content.Shared/Storage/Components/BinComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Storage.EntitySystems; +using Content.Shared.Storage.EntitySystems; using Content.Shared.Whitelist; using Robust.Shared.Containers; using Robust.Shared.GameStates; diff --git a/Content.Shared/Storage/Components/InsideEntityStorageComponent.cs b/Content.Shared/Storage/Components/InsideEntityStorageComponent.cs index 8d0b45a4a2..96b915a052 100644 --- a/Content.Shared/Storage/Components/InsideEntityStorageComponent.cs +++ b/Content.Shared/Storage/Components/InsideEntityStorageComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Storage.Components; diff --git a/Content.Shared/Storage/Components/ItemMapperComponent.cs b/Content.Shared/Storage/Components/ItemMapperComponent.cs index fd83120af0..1394c7d95f 100644 --- a/Content.Shared/Storage/Components/ItemMapperComponent.cs +++ b/Content.Shared/Storage/Components/ItemMapperComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Storage.EntitySystems; +using Content.Shared.Storage.EntitySystems; using Robust.Shared.Utility; namespace Content.Shared.Storage.Components diff --git a/Content.Shared/Storage/Components/StorageFillVisualizerComponent.cs b/Content.Shared/Storage/Components/StorageFillVisualizerComponent.cs index 7c0d8c1ca9..4fe952dc84 100644 --- a/Content.Shared/Storage/Components/StorageFillVisualizerComponent.cs +++ b/Content.Shared/Storage/Components/StorageFillVisualizerComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Storage.Components; diff --git a/Content.Shared/Storage/Components/StoreAfterFailedInteractComponent.cs b/Content.Shared/Storage/Components/StoreAfterFailedInteractComponent.cs index 578da52dfc..3bc0510866 100644 --- a/Content.Shared/Storage/Components/StoreAfterFailedInteractComponent.cs +++ b/Content.Shared/Storage/Components/StoreAfterFailedInteractComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Storage.Components; diff --git a/Content.Shared/Storage/Components/StoreOnCollideComponent.cs b/Content.Shared/Storage/Components/StoreOnCollideComponent.cs index d8fff31938..33bb77d31f 100644 --- a/Content.Shared/Storage/Components/StoreOnCollideComponent.cs +++ b/Content.Shared/Storage/Components/StoreOnCollideComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Storage.EntitySystems; +using Content.Shared.Storage.EntitySystems; using Content.Shared.Whitelist; using Robust.Shared.GameStates; diff --git a/Content.Shared/Storage/EntitySystems/BluespaceLockerDoAfterEvent.cs b/Content.Shared/Storage/EntitySystems/BluespaceLockerDoAfterEvent.cs index 2e58de4811..54c9f36403 100644 --- a/Content.Shared/Storage/EntitySystems/BluespaceLockerDoAfterEvent.cs +++ b/Content.Shared/Storage/EntitySystems/BluespaceLockerDoAfterEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.DoAfter; +using Content.Shared.DoAfter; using Robust.Shared.Serialization; namespace Content.Shared.Storage.EntitySystems; diff --git a/Content.Shared/Storage/EntitySystems/SharedItemCounterSystem.cs b/Content.Shared/Storage/EntitySystems/SharedItemCounterSystem.cs index 55d8d2c3b0..c8cdd79337 100644 --- a/Content.Shared/Storage/EntitySystems/SharedItemCounterSystem.cs +++ b/Content.Shared/Storage/EntitySystems/SharedItemCounterSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Stacks; +using Content.Shared.Stacks; using Content.Shared.Storage.Components; using JetBrains.Annotations; using Robust.Shared.Containers; diff --git a/Content.Shared/Storage/EntitySystems/StoreAfterFailedInteractSystem.cs b/Content.Shared/Storage/EntitySystems/StoreAfterFailedInteractSystem.cs index 3a7b73c527..eb28f28d1e 100644 --- a/Content.Shared/Storage/EntitySystems/StoreAfterFailedInteractSystem.cs +++ b/Content.Shared/Storage/EntitySystems/StoreAfterFailedInteractSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Storage.Components; +using Content.Shared.Storage.Components; using Content.Shared.Storage.Events; namespace Content.Shared.Storage.EntitySystems; diff --git a/Content.Shared/Storage/EntitySystems/StoreOnCollideSystem.cs b/Content.Shared/Storage/EntitySystems/StoreOnCollideSystem.cs index 44e502412c..9534a66fe6 100644 --- a/Content.Shared/Storage/EntitySystems/StoreOnCollideSystem.cs +++ b/Content.Shared/Storage/EntitySystems/StoreOnCollideSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Lock; +using Content.Shared.Lock; using Content.Shared.Storage.Components; using Content.Shared.Whitelist; using Robust.Shared.Network; diff --git a/Content.Shared/Storage/Events/EntityProviderInsertCheckEvent.cs b/Content.Shared/Storage/Events/EntityProviderInsertCheckEvent.cs index 8f1e06cb01..4b0dc637a0 100644 --- a/Content.Shared/Storage/Events/EntityProviderInsertCheckEvent.cs +++ b/Content.Shared/Storage/Events/EntityProviderInsertCheckEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Storage.Components; +using Content.Shared.Storage.Components; namespace Content.Shared.Storage.Events; diff --git a/Content.Shared/Storage/Events/StorageInsertFailedEvent.cs b/Content.Shared/Storage/Events/StorageInsertFailedEvent.cs index 50f759e43f..b4d3180c6d 100644 --- a/Content.Shared/Storage/Events/StorageInsertFailedEvent.cs +++ b/Content.Shared/Storage/Events/StorageInsertFailedEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Hands.Components; +using Content.Shared.Hands.Components; namespace Content.Shared.Storage.Events; diff --git a/Content.Shared/Store/ListingLocalisationHelpers.cs b/Content.Shared/Store/ListingLocalisationHelpers.cs index 882300109c..3bbc3214f1 100644 --- a/Content.Shared/Store/ListingLocalisationHelpers.cs +++ b/Content.Shared/Store/ListingLocalisationHelpers.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; namespace Content.Shared.Store; diff --git a/Content.Shared/Store/SharedStoreSystem.Listings.cs b/Content.Shared/Store/SharedStoreSystem.Listings.cs index 1ad0a84ad6..e5bc6fae7d 100644 --- a/Content.Shared/Store/SharedStoreSystem.Listings.cs +++ b/Content.Shared/Store/SharedStoreSystem.Listings.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using Content.Shared.Mind; using Content.Shared.Store.Components; using Robust.Shared.Prototypes; diff --git a/Content.Shared/Store/SharedStoreSystem.UI.cs b/Content.Shared/Store/SharedStoreSystem.UI.cs index 2d4b166c27..6f4d0f9f01 100644 --- a/Content.Shared/Store/SharedStoreSystem.UI.cs +++ b/Content.Shared/Store/SharedStoreSystem.UI.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Shared.FixedPoint; using Content.Shared.PDA.Ringer; using Content.Shared.Store.Components; diff --git a/Content.Shared/Stunnable/CrawlerComponent.cs b/Content.Shared/Stunnable/CrawlerComponent.cs index d969117344..ee7eb465e5 100644 --- a/Content.Shared/Stunnable/CrawlerComponent.cs +++ b/Content.Shared/Stunnable/CrawlerComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Stunnable; diff --git a/Content.Shared/Stunnable/KnockdownStatusEffectComponent.cs b/Content.Shared/Stunnable/KnockdownStatusEffectComponent.cs index b4805511b2..a8c015773c 100644 --- a/Content.Shared/Stunnable/KnockdownStatusEffectComponent.cs +++ b/Content.Shared/Stunnable/KnockdownStatusEffectComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Stunnable; diff --git a/Content.Shared/Stunnable/SharedStunSystem.Visualizer.cs b/Content.Shared/Stunnable/SharedStunSystem.Visualizer.cs index f574e1924b..17c85def77 100644 --- a/Content.Shared/Stunnable/SharedStunSystem.Visualizer.cs +++ b/Content.Shared/Stunnable/SharedStunSystem.Visualizer.cs @@ -1,4 +1,4 @@ -using Content.Shared.Bed.Sleep; +using Content.Shared.Bed.Sleep; using Content.Shared.Mobs; using Robust.Shared.Serialization; diff --git a/Content.Shared/Stunnable/StunVisualsComponent.cs b/Content.Shared/Stunnable/StunVisualsComponent.cs index 6f1070a558..053cca31ed 100644 --- a/Content.Shared/Stunnable/StunVisualsComponent.cs +++ b/Content.Shared/Stunnable/StunVisualsComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Utility; +using Robust.Shared.Utility; namespace Content.Shared.Stunnable; diff --git a/Content.Shared/Stunnable/StunnableEvents.cs b/Content.Shared/Stunnable/StunnableEvents.cs index f0c08f6136..b79bef784a 100644 --- a/Content.Shared/Stunnable/StunnableEvents.cs +++ b/Content.Shared/Stunnable/StunnableEvents.cs @@ -1,4 +1,4 @@ -using Content.Shared.Alert; +using Content.Shared.Alert; using Content.Shared.DoAfter; using Content.Shared.Popups; using Robust.Shared.Serialization; diff --git a/Content.Shared/SurveillanceCamera/SurveillanceCameraPayloads.cs b/Content.Shared/SurveillanceCamera/SurveillanceCameraPayloads.cs index a8b27dfa2d..5c09824be4 100644 --- a/Content.Shared/SurveillanceCamera/SurveillanceCameraPayloads.cs +++ b/Content.Shared/SurveillanceCamera/SurveillanceCameraPayloads.cs @@ -1,4 +1,4 @@ -using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork; using Content.Shared.DeviceNetwork.Payloads; using Robust.Shared.Prototypes; diff --git a/Content.Shared/Survivor/Components/SurvivorComponent.cs b/Content.Shared/Survivor/Components/SurvivorComponent.cs index 140f688077..98ac2741c0 100644 --- a/Content.Shared/Survivor/Components/SurvivorComponent.cs +++ b/Content.Shared/Survivor/Components/SurvivorComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Survivor.Components; diff --git a/Content.Shared/Swab/SwabEvents.cs b/Content.Shared/Swab/SwabEvents.cs index 3c9fcbef41..018e80bd20 100644 --- a/Content.Shared/Swab/SwabEvents.cs +++ b/Content.Shared/Swab/SwabEvents.cs @@ -1,4 +1,4 @@ -using Content.Shared.DoAfter; +using Content.Shared.DoAfter; using Robust.Shared.Serialization; namespace Content.Shared.Swab; diff --git a/Content.Shared/Tabletop/Events/TabletopMoveEvent.cs b/Content.Shared/Tabletop/Events/TabletopMoveEvent.cs index 8abbd90aec..d31769fa4d 100644 --- a/Content.Shared/Tabletop/Events/TabletopMoveEvent.cs +++ b/Content.Shared/Tabletop/Events/TabletopMoveEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Tabletop.Components; +using Content.Shared.Tabletop.Components; using Robust.Shared.Map; using Robust.Shared.Serialization; diff --git a/Content.Shared/Tabletop/Events/TabletopPlayEvent.cs b/Content.Shared/Tabletop/Events/TabletopPlayEvent.cs index 566434bce7..ecc5d5a72d 100644 --- a/Content.Shared/Tabletop/Events/TabletopPlayEvent.cs +++ b/Content.Shared/Tabletop/Events/TabletopPlayEvent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Tabletop.Events { diff --git a/Content.Shared/Tabletop/Events/TabletopStopPlayingEvent.cs b/Content.Shared/Tabletop/Events/TabletopStopPlayingEvent.cs index 23301dec4a..b4d02e6cab 100644 --- a/Content.Shared/Tabletop/Events/TabletopStopPlayingEvent.cs +++ b/Content.Shared/Tabletop/Events/TabletopStopPlayingEvent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Tabletop.Events { diff --git a/Content.Shared/Tabletop/TabletopItemVisuals.cs b/Content.Shared/Tabletop/TabletopItemVisuals.cs index 94887feac7..7a73a3b0b8 100644 --- a/Content.Shared/Tabletop/TabletopItemVisuals.cs +++ b/Content.Shared/Tabletop/TabletopItemVisuals.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Tabletop { diff --git a/Content.Shared/Tabletop/TabletopSession.cs b/Content.Shared/Tabletop/TabletopSession.cs index 3d0e486148..7972bd554b 100644 --- a/Content.Shared/Tabletop/TabletopSession.cs +++ b/Content.Shared/Tabletop/TabletopSession.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Robust.Shared.Map; using Robust.Shared.Player; diff --git a/Content.Shared/Tag/TagComponent.cs b/Content.Shared/Tag/TagComponent.cs index ad4240ba06..fe9e72dba4 100644 --- a/Content.Shared/Tag/TagComponent.cs +++ b/Content.Shared/Tag/TagComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; using Robust.Shared.Prototypes; namespace Content.Shared.Tag; diff --git a/Content.Shared/Tag/TagPrototype.cs b/Content.Shared/Tag/TagPrototype.cs index b89569ca8e..2a2bfe4f72 100644 --- a/Content.Shared/Tag/TagPrototype.cs +++ b/Content.Shared/Tag/TagPrototype.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; namespace Content.Shared.Tag; diff --git a/Content.Shared/Teleportation/Components/LinkedEntityComponent.cs b/Content.Shared/Teleportation/Components/LinkedEntityComponent.cs index b1df6f4ee7..504f94c307 100644 --- a/Content.Shared/Teleportation/Components/LinkedEntityComponent.cs +++ b/Content.Shared/Teleportation/Components/LinkedEntityComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Teleportation.Systems; +using Content.Shared.Teleportation.Systems; using Robust.Shared.GameStates; using Robust.Shared.Serialization; diff --git a/Content.Shared/Teleportation/Components/PortalComponent.cs b/Content.Shared/Teleportation/Components/PortalComponent.cs index 1e2c2e6428..667ca821b1 100644 --- a/Content.Shared/Teleportation/Components/PortalComponent.cs +++ b/Content.Shared/Teleportation/Components/PortalComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Audio; +using Robust.Shared.Audio; using Robust.Shared.GameStates; namespace Content.Shared.Teleportation.Components; diff --git a/Content.Shared/Teleportation/Components/PortalTimeoutComponent.cs b/Content.Shared/Teleportation/Components/PortalTimeoutComponent.cs index 341c68d7c8..0d940bceef 100644 --- a/Content.Shared/Teleportation/Components/PortalTimeoutComponent.cs +++ b/Content.Shared/Teleportation/Components/PortalTimeoutComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Teleportation.Components; diff --git a/Content.Shared/Teleportation/Systems/SharedPortalSystem.cs b/Content.Shared/Teleportation/Systems/SharedPortalSystem.cs index e2aebbad82..3279a93f96 100644 --- a/Content.Shared/Teleportation/Systems/SharedPortalSystem.cs +++ b/Content.Shared/Teleportation/Systems/SharedPortalSystem.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Shared.Movement.Pulling.Components; using Content.Shared.Movement.Pulling.Systems; using Content.Shared.Popups; diff --git a/Content.Shared/Teleportation/Systems/SharedTeleportLocationsSystem.cs b/Content.Shared/Teleportation/Systems/SharedTeleportLocationsSystem.cs index 2192859e1d..000d25fc8c 100644 --- a/Content.Shared/Teleportation/Systems/SharedTeleportLocationsSystem.cs +++ b/Content.Shared/Teleportation/Systems/SharedTeleportLocationsSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Maths; +using Content.Shared.Maths; using Content.Shared.Teleportation.Components; using Content.Shared.UserInterface; using Content.Shared.Warps; diff --git a/Content.Shared/Teleportation/TeleportLocationsUi.cs b/Content.Shared/Teleportation/TeleportLocationsUi.cs index f4ca97584a..706b240ba6 100644 --- a/Content.Shared/Teleportation/TeleportLocationsUi.cs +++ b/Content.Shared/Teleportation/TeleportLocationsUi.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Teleportation; diff --git a/Content.Shared/Temperature/IsHotEvent.cs b/Content.Shared/Temperature/IsHotEvent.cs index a473262649..cf1b326e36 100644 --- a/Content.Shared/Temperature/IsHotEvent.cs +++ b/Content.Shared/Temperature/IsHotEvent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Temperature +namespace Content.Shared.Temperature { /// /// Directed event raised on entities to query whether they're "hot" or not. diff --git a/Content.Shared/Temperature/TemperatureHelpers.cs b/Content.Shared/Temperature/TemperatureHelpers.cs index c1683ee8dc..3243147662 100644 --- a/Content.Shared/Temperature/TemperatureHelpers.cs +++ b/Content.Shared/Temperature/TemperatureHelpers.cs @@ -1,4 +1,4 @@ -using Content.Shared.Atmos; +using Content.Shared.Atmos; namespace Content.Shared.Temperature { diff --git a/Content.Shared/Throwing/ThrowAttemptEvent.cs b/Content.Shared/Throwing/ThrowAttemptEvent.cs index 994206afa5..a3b79f42ab 100644 --- a/Content.Shared/Throwing/ThrowAttemptEvent.cs +++ b/Content.Shared/Throwing/ThrowAttemptEvent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Throwing +namespace Content.Shared.Throwing { public sealed class ThrowAttemptEvent : CancellableEntityEventArgs { diff --git a/Content.Shared/Timing/StartEndTime.cs b/Content.Shared/Timing/StartEndTime.cs index fde9f7341c..2a8341a76c 100644 --- a/Content.Shared/Timing/StartEndTime.cs +++ b/Content.Shared/Timing/StartEndTime.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Timing; +using Robust.Shared.Timing; namespace Content.Shared.Timing; diff --git a/Content.Shared/Timing/Systems/UseDelaySystem.API.cs b/Content.Shared/Timing/Systems/UseDelaySystem.API.cs index f04104b27b..98c96d8d86 100644 --- a/Content.Shared/Timing/Systems/UseDelaySystem.API.cs +++ b/Content.Shared/Timing/Systems/UseDelaySystem.API.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using Content.Shared.Timing.Components; using JetBrains.Annotations; using Robust.Shared.Utility; diff --git a/Content.Shared/Tools/Systems/WeldFinishedEvent.cs b/Content.Shared/Tools/Systems/WeldFinishedEvent.cs index 4ece52835d..a87d36b2b9 100644 --- a/Content.Shared/Tools/Systems/WeldFinishedEvent.cs +++ b/Content.Shared/Tools/Systems/WeldFinishedEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.DoAfter; +using Content.Shared.DoAfter; using Robust.Shared.Serialization; namespace Content.Shared.Tools.Systems; diff --git a/Content.Shared/Tools/Systems/WeldableAttemptEvent.cs b/Content.Shared/Tools/Systems/WeldableAttemptEvent.cs index a3b853422d..8fa35ccd8a 100644 --- a/Content.Shared/Tools/Systems/WeldableAttemptEvent.cs +++ b/Content.Shared/Tools/Systems/WeldableAttemptEvent.cs @@ -14,4 +14,4 @@ public sealed class WeldableAttemptEvent : CancellableEntityEventArgs User = user; Tool = tool; } -} \ No newline at end of file +} diff --git a/Content.Shared/Toolshed/TypeParsers/FixedPoint2TypeParser.cs b/Content.Shared/Toolshed/TypeParsers/FixedPoint2TypeParser.cs index 331c7eba7a..378f0d4a46 100644 --- a/Content.Shared/Toolshed/TypeParsers/FixedPoint2TypeParser.cs +++ b/Content.Shared/Toolshed/TypeParsers/FixedPoint2TypeParser.cs @@ -1,4 +1,4 @@ -using Content.Shared.FixedPoint; +using Content.Shared.FixedPoint; using Robust.Shared.Console; using Robust.Shared.Toolshed; using Robust.Shared.Toolshed.Syntax; diff --git a/Content.Shared/Traits/Assorted/HemophiliaStatusEffectComponent.cs b/Content.Shared/Traits/Assorted/HemophiliaStatusEffectComponent.cs index 3216052257..a17dd58f38 100644 --- a/Content.Shared/Traits/Assorted/HemophiliaStatusEffectComponent.cs +++ b/Content.Shared/Traits/Assorted/HemophiliaStatusEffectComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Traits.Assorted; diff --git a/Content.Shared/Traits/Assorted/HemophiliaSystem.cs b/Content.Shared/Traits/Assorted/HemophiliaSystem.cs index 3968c4014d..a3a2c09cd3 100644 --- a/Content.Shared/Traits/Assorted/HemophiliaSystem.cs +++ b/Content.Shared/Traits/Assorted/HemophiliaSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Body.Events; +using Content.Shared.Body.Events; using Content.Shared.StatusEffectNew; namespace Content.Shared.Traits.Assorted; diff --git a/Content.Shared/Traits/Assorted/LegsParalyzedComponent.cs b/Content.Shared/Traits/Assorted/LegsParalyzedComponent.cs index 59f9ca758b..d18c476731 100644 --- a/Content.Shared/Traits/Assorted/LegsParalyzedComponent.cs +++ b/Content.Shared/Traits/Assorted/LegsParalyzedComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Traits.Assorted; diff --git a/Content.Shared/Traits/Assorted/LegsParalyzedSystem.cs b/Content.Shared/Traits/Assorted/LegsParalyzedSystem.cs index cd2f4e9de5..952041a14c 100644 --- a/Content.Shared/Traits/Assorted/LegsParalyzedSystem.cs +++ b/Content.Shared/Traits/Assorted/LegsParalyzedSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Buckle.Components; +using Content.Shared.Buckle.Components; using Content.Shared.Movement.Events; using Content.Shared.Movement.Systems; using Content.Shared.Standing; diff --git a/Content.Shared/Traits/Assorted/NarcolepsyComponent.cs b/Content.Shared/Traits/Assorted/NarcolepsyComponent.cs index ae94908925..6da8c2ce85 100644 --- a/Content.Shared/Traits/Assorted/NarcolepsyComponent.cs +++ b/Content.Shared/Traits/Assorted/NarcolepsyComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; namespace Content.Shared.Traits.Assorted; diff --git a/Content.Shared/Traits/Assorted/PermanentBlindnessComponent.cs b/Content.Shared/Traits/Assorted/PermanentBlindnessComponent.cs index 9abbd46f66..6b350d6e46 100644 --- a/Content.Shared/Traits/Assorted/PermanentBlindnessComponent.cs +++ b/Content.Shared/Traits/Assorted/PermanentBlindnessComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Traits.Assorted; diff --git a/Content.Shared/Traits/Assorted/PermanentBlindnessSystem.cs b/Content.Shared/Traits/Assorted/PermanentBlindnessSystem.cs index e5aba9c9a3..2c42f16023 100644 --- a/Content.Shared/Traits/Assorted/PermanentBlindnessSystem.cs +++ b/Content.Shared/Traits/Assorted/PermanentBlindnessSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Examine; +using Content.Shared.Examine; using Content.Shared.Eye.Blinding.Components; using Content.Shared.Eye.Blinding.Systems; using Content.Shared.IdentityManagement; diff --git a/Content.Shared/Trigger/Components/Effects/GhostKickOnTriggerComponent.cs b/Content.Shared/Trigger/Components/Effects/GhostKickOnTriggerComponent.cs index 16c1365c05..c9be11c2d7 100644 --- a/Content.Shared/Trigger/Components/Effects/GhostKickOnTriggerComponent.cs +++ b/Content.Shared/Trigger/Components/Effects/GhostKickOnTriggerComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Trigger.Components.Effects; diff --git a/Content.Shared/Trigger/Components/Effects/LightBehaviorOnTriggerComponent.cs b/Content.Shared/Trigger/Components/Effects/LightBehaviorOnTriggerComponent.cs index b31bff7841..83f1078151 100644 --- a/Content.Shared/Trigger/Components/Effects/LightBehaviorOnTriggerComponent.cs +++ b/Content.Shared/Trigger/Components/Effects/LightBehaviorOnTriggerComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Trigger.Components.Effects; diff --git a/Content.Shared/Trigger/Components/Effects/ReleaseGasOnTriggerComponent.cs b/Content.Shared/Trigger/Components/Effects/ReleaseGasOnTriggerComponent.cs index 4edd5f83f4..1ca5877fb6 100644 --- a/Content.Shared/Trigger/Components/Effects/ReleaseGasOnTriggerComponent.cs +++ b/Content.Shared/Trigger/Components/Effects/ReleaseGasOnTriggerComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Atmos; +using Content.Shared.Atmos; using Robust.Shared.GameStates; using Robust.Shared.Serialization; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; diff --git a/Content.Shared/Trigger/Components/Triggers/ActiveTriggerOnTimedCollideComponent.cs b/Content.Shared/Trigger/Components/Triggers/ActiveTriggerOnTimedCollideComponent.cs index 88b68913f0..782fd1f183 100644 --- a/Content.Shared/Trigger/Components/Triggers/ActiveTriggerOnTimedCollideComponent.cs +++ b/Content.Shared/Trigger/Components/Triggers/ActiveTriggerOnTimedCollideComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Trigger.Components.Triggers; diff --git a/Content.Shared/Trigger/Components/Triggers/TriggerOnActivateComponent.cs b/Content.Shared/Trigger/Components/Triggers/TriggerOnActivateComponent.cs index 9dd145bb26..0ac21a2b95 100644 --- a/Content.Shared/Trigger/Components/Triggers/TriggerOnActivateComponent.cs +++ b/Content.Shared/Trigger/Components/Triggers/TriggerOnActivateComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Trigger.Components.Triggers; diff --git a/Content.Shared/Trigger/Components/Triggers/TriggerOnDidEquipHandComponent.cs b/Content.Shared/Trigger/Components/Triggers/TriggerOnDidEquipHandComponent.cs index d598db6d93..8b5967e8cc 100644 --- a/Content.Shared/Trigger/Components/Triggers/TriggerOnDidEquipHandComponent.cs +++ b/Content.Shared/Trigger/Components/Triggers/TriggerOnDidEquipHandComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Trigger.Components.Triggers; diff --git a/Content.Shared/Trigger/Components/Triggers/TriggerOnDidUnequipHandComponent.cs b/Content.Shared/Trigger/Components/Triggers/TriggerOnDidUnequipHandComponent.cs index 5c3d2da018..417e0da75c 100644 --- a/Content.Shared/Trigger/Components/Triggers/TriggerOnDidUnequipHandComponent.cs +++ b/Content.Shared/Trigger/Components/Triggers/TriggerOnDidUnequipHandComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Trigger.Components.Triggers; diff --git a/Content.Shared/Trigger/Components/Triggers/TriggerOnDroppedComponent.cs b/Content.Shared/Trigger/Components/Triggers/TriggerOnDroppedComponent.cs index 6e06216a2c..ee86108b40 100644 --- a/Content.Shared/Trigger/Components/Triggers/TriggerOnDroppedComponent.cs +++ b/Content.Shared/Trigger/Components/Triggers/TriggerOnDroppedComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Trigger.Components.Triggers; diff --git a/Content.Shared/Trigger/Components/Triggers/TriggerOnGotEquippedHandComponent.cs b/Content.Shared/Trigger/Components/Triggers/TriggerOnGotEquippedHandComponent.cs index 24c2d4231c..c21ef08a63 100644 --- a/Content.Shared/Trigger/Components/Triggers/TriggerOnGotEquippedHandComponent.cs +++ b/Content.Shared/Trigger/Components/Triggers/TriggerOnGotEquippedHandComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Trigger.Components.Triggers; diff --git a/Content.Shared/Trigger/Components/Triggers/TriggerOnGotUnequippedHandComponent.cs b/Content.Shared/Trigger/Components/Triggers/TriggerOnGotUnequippedHandComponent.cs index 624c1a141b..c438927ddc 100644 --- a/Content.Shared/Trigger/Components/Triggers/TriggerOnGotUnequippedHandComponent.cs +++ b/Content.Shared/Trigger/Components/Triggers/TriggerOnGotUnequippedHandComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Trigger.Components.Triggers; diff --git a/Content.Shared/Trigger/Components/Triggers/TriggerOnHitscanFiredComponent.cs b/Content.Shared/Trigger/Components/Triggers/TriggerOnHitscanFiredComponent.cs index f7a86c0ce3..b885ff431b 100644 --- a/Content.Shared/Trigger/Components/Triggers/TriggerOnHitscanFiredComponent.cs +++ b/Content.Shared/Trigger/Components/Triggers/TriggerOnHitscanFiredComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Trigger.Components.Triggers; diff --git a/Content.Shared/Trigger/Components/Triggers/TriggerOnHitscanHitComponent.cs b/Content.Shared/Trigger/Components/Triggers/TriggerOnHitscanHitComponent.cs index 4520578a8f..fd93623dc3 100644 --- a/Content.Shared/Trigger/Components/Triggers/TriggerOnHitscanHitComponent.cs +++ b/Content.Shared/Trigger/Components/Triggers/TriggerOnHitscanHitComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Trigger.Components.Triggers; diff --git a/Content.Shared/Trigger/Components/Triggers/TriggerOnIngestedComponent.cs b/Content.Shared/Trigger/Components/Triggers/TriggerOnIngestedComponent.cs index e8bd920e64..9d57cd658b 100644 --- a/Content.Shared/Trigger/Components/Triggers/TriggerOnIngestedComponent.cs +++ b/Content.Shared/Trigger/Components/Triggers/TriggerOnIngestedComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Trigger.Components.Triggers; diff --git a/Content.Shared/Trigger/Components/Triggers/TriggerOnMobstateChangeComponent.cs b/Content.Shared/Trigger/Components/Triggers/TriggerOnMobstateChangeComponent.cs index a8dab4e6cd..88b8617507 100644 --- a/Content.Shared/Trigger/Components/Triggers/TriggerOnMobstateChangeComponent.cs +++ b/Content.Shared/Trigger/Components/Triggers/TriggerOnMobstateChangeComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Mobs; +using Content.Shared.Mobs; using Robust.Shared.GameStates; namespace Content.Shared.Trigger.Components.Triggers; diff --git a/Content.Shared/Trigger/Components/Triggers/TriggerOnStepTriggerComponent.cs b/Content.Shared/Trigger/Components/Triggers/TriggerOnStepTriggerComponent.cs index 70d33a1179..2159bd1249 100644 --- a/Content.Shared/Trigger/Components/Triggers/TriggerOnStepTriggerComponent.cs +++ b/Content.Shared/Trigger/Components/Triggers/TriggerOnStepTriggerComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Trigger.Components.Triggers; diff --git a/Content.Shared/Trigger/Components/Triggers/TriggerOnThrowComponent.cs b/Content.Shared/Trigger/Components/Triggers/TriggerOnThrowComponent.cs index e9249a8f2a..ded4405d18 100644 --- a/Content.Shared/Trigger/Components/Triggers/TriggerOnThrowComponent.cs +++ b/Content.Shared/Trigger/Components/Triggers/TriggerOnThrowComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Trigger.Components.Triggers; diff --git a/Content.Shared/Trigger/Components/Triggers/TriggerOnThrownComponent.cs b/Content.Shared/Trigger/Components/Triggers/TriggerOnThrownComponent.cs index e309261711..b3628100a7 100644 --- a/Content.Shared/Trigger/Components/Triggers/TriggerOnThrownComponent.cs +++ b/Content.Shared/Trigger/Components/Triggers/TriggerOnThrownComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Trigger.Components.Triggers; diff --git a/Content.Shared/Trigger/Components/Triggers/TriggerOnTimedCollideComponent.cs b/Content.Shared/Trigger/Components/Triggers/TriggerOnTimedCollideComponent.cs index 185ea7dbe4..72e5bb66d0 100644 --- a/Content.Shared/Trigger/Components/Triggers/TriggerOnTimedCollideComponent.cs +++ b/Content.Shared/Trigger/Components/Triggers/TriggerOnTimedCollideComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Trigger.Components.Triggers; diff --git a/Content.Shared/Trigger/Components/Triggers/TriggerOnUseComponent.cs b/Content.Shared/Trigger/Components/Triggers/TriggerOnUseComponent.cs index 71d289741e..2fb18d924d 100644 --- a/Content.Shared/Trigger/Components/Triggers/TriggerOnUseComponent.cs +++ b/Content.Shared/Trigger/Components/Triggers/TriggerOnUseComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Trigger.Components.Triggers; diff --git a/Content.Shared/Trigger/SharedTriggerSystems.cs b/Content.Shared/Trigger/SharedTriggerSystems.cs index 73fd9dbec8..cb2c6fe603 100644 --- a/Content.Shared/Trigger/SharedTriggerSystems.cs +++ b/Content.Shared/Trigger/SharedTriggerSystems.cs @@ -1,4 +1,4 @@ -using Content.Shared.Trigger.Components.Effects; +using Content.Shared.Trigger.Components.Effects; using Content.Shared.Trigger.Systems; namespace Content.Shared.Trigger; diff --git a/Content.Shared/Trigger/Systems/SharedReleaseGasOnTriggerSystem.cs b/Content.Shared/Trigger/Systems/SharedReleaseGasOnTriggerSystem.cs index db98017c3a..64c6d1b695 100644 --- a/Content.Shared/Trigger/Systems/SharedReleaseGasOnTriggerSystem.cs +++ b/Content.Shared/Trigger/Systems/SharedReleaseGasOnTriggerSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Trigger.Components.Effects; +using Content.Shared.Trigger.Components.Effects; using Robust.Shared.Timing; namespace Content.Shared.Trigger.Systems; diff --git a/Content.Shared/Trigger/Systems/TriggerOnMobstateChangeSystem.cs b/Content.Shared/Trigger/Systems/TriggerOnMobstateChangeSystem.cs index 73d13f0c2e..2e11af8595 100644 --- a/Content.Shared/Trigger/Systems/TriggerOnMobstateChangeSystem.cs +++ b/Content.Shared/Trigger/Systems/TriggerOnMobstateChangeSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Implants; +using Content.Shared.Implants; using Content.Shared.Interaction.Events; using Content.Shared.Mobs; using Content.Shared.Popups; diff --git a/Content.Shared/Trigger/Systems/TriggerSystem.Collide.cs b/Content.Shared/Trigger/Systems/TriggerSystem.Collide.cs index dc71ca482f..ba2f509fd4 100644 --- a/Content.Shared/Trigger/Systems/TriggerSystem.Collide.cs +++ b/Content.Shared/Trigger/Systems/TriggerSystem.Collide.cs @@ -1,4 +1,4 @@ -using Content.Shared.Trigger.Components.Triggers; +using Content.Shared.Trigger.Components.Triggers; using Content.Shared.StepTrigger.Systems; using Robust.Shared.Physics.Events; diff --git a/Content.Shared/Trigger/Systems/TriggerSystem.Condition.cs b/Content.Shared/Trigger/Systems/TriggerSystem.Condition.cs index 7c132bb977..f76ef8efd5 100644 --- a/Content.Shared/Trigger/Systems/TriggerSystem.Condition.cs +++ b/Content.Shared/Trigger/Systems/TriggerSystem.Condition.cs @@ -1,4 +1,4 @@ -using Content.Shared.Random.Helpers; +using Content.Shared.Random.Helpers; using Content.Shared.Trigger.Components.Conditions; using Content.Shared.Verbs; using Robust.Shared.Random; diff --git a/Content.Shared/Trigger/Systems/TriggerSystem.Spawn.cs b/Content.Shared/Trigger/Systems/TriggerSystem.Spawn.cs index 8750110744..0bc1cffe66 100644 --- a/Content.Shared/Trigger/Systems/TriggerSystem.Spawn.cs +++ b/Content.Shared/Trigger/Systems/TriggerSystem.Spawn.cs @@ -1,4 +1,4 @@ -using Content.Shared.GameTicking; +using Content.Shared.GameTicking; using Content.Shared.Trigger.Components.Effects; using Content.Shared.Trigger.Components.Triggers; using Robust.Shared.Prototypes; diff --git a/Content.Shared/Trigger/Systems/TriggerSystem.Timer.cs b/Content.Shared/Trigger/Systems/TriggerSystem.Timer.cs index b114b35cc8..e503beccb2 100644 --- a/Content.Shared/Trigger/Systems/TriggerSystem.Timer.cs +++ b/Content.Shared/Trigger/Systems/TriggerSystem.Timer.cs @@ -1,4 +1,4 @@ -using Content.Shared.Trigger.Components; +using Content.Shared.Trigger.Components; using Content.Shared.Trigger.Components.Triggers; using Content.Shared.Examine; using Content.Shared.Verbs; diff --git a/Content.Shared/Trigger/Systems/TriggerSystem.cs b/Content.Shared/Trigger/Systems/TriggerSystem.cs index 409d3e8d8e..7a720227cc 100644 --- a/Content.Shared/Trigger/Systems/TriggerSystem.cs +++ b/Content.Shared/Trigger/Systems/TriggerSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Administration.Logs; +using Content.Shared.Administration.Logs; using Content.Shared.Database; using Content.Shared.DeviceLinking; using Content.Shared.EntityTable; diff --git a/Content.Shared/Trigger/TriggerVisuals.cs b/Content.Shared/Trigger/TriggerVisuals.cs index f1d4a55fb1..ee54a2b6a5 100644 --- a/Content.Shared/Trigger/TriggerVisuals.cs +++ b/Content.Shared/Trigger/TriggerVisuals.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Trigger; diff --git a/Content.Shared/TurretController/TurretControllerPayloads.cs b/Content.Shared/TurretController/TurretControllerPayloads.cs index 733bd42fa0..29d00b2135 100644 --- a/Content.Shared/TurretController/TurretControllerPayloads.cs +++ b/Content.Shared/TurretController/TurretControllerPayloads.cs @@ -1,4 +1,4 @@ -using Content.Shared.Access; +using Content.Shared.Access; using Content.Shared.DeviceNetwork; using Robust.Shared.Prototypes; diff --git a/Content.Shared/Turrets/TurretPayloads.cs b/Content.Shared/Turrets/TurretPayloads.cs index 5271742221..6acb496ac5 100644 --- a/Content.Shared/Turrets/TurretPayloads.cs +++ b/Content.Shared/Turrets/TurretPayloads.cs @@ -1,4 +1,4 @@ -using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork; namespace Content.Shared.Turrets; diff --git a/Content.Shared/UserInterface/ActivatableUIComponent.cs b/Content.Shared/UserInterface/ActivatableUIComponent.cs index 56d6986a28..7731bda9be 100644 --- a/Content.Shared/UserInterface/ActivatableUIComponent.cs +++ b/Content.Shared/UserInterface/ActivatableUIComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Whitelist; +using Content.Shared.Whitelist; using Robust.Shared.GameStates; using Robust.Shared.Serialization.TypeSerializers.Implementations; diff --git a/Content.Shared/UserInterface/IntrinsicUIComponent.cs b/Content.Shared/UserInterface/IntrinsicUIComponent.cs index ede0fd9c34..aa8011d635 100644 --- a/Content.Shared/UserInterface/IntrinsicUIComponent.cs +++ b/Content.Shared/UserInterface/IntrinsicUIComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; using Robust.Shared.Prototypes; namespace Content.Shared.UserInterface; diff --git a/Content.Shared/UserInterface/IntrinsicUISystem.cs b/Content.Shared/UserInterface/IntrinsicUISystem.cs index 659e15a1d2..8d34d2f77d 100644 --- a/Content.Shared/UserInterface/IntrinsicUISystem.cs +++ b/Content.Shared/UserInterface/IntrinsicUISystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Actions; +using Content.Shared.Actions; namespace Content.Shared.UserInterface; diff --git a/Content.Shared/UserInterface/OpenUiActionEvent.cs b/Content.Shared/UserInterface/OpenUiActionEvent.cs index 1c5ca3d62c..d04d39b07c 100644 --- a/Content.Shared/UserInterface/OpenUiActionEvent.cs +++ b/Content.Shared/UserInterface/OpenUiActionEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Actions; +using Content.Shared.Actions; using Robust.Shared.Serialization.TypeSerializers.Implementations; namespace Content.Shared.UserInterface; diff --git a/Content.Shared/UserInterface/ToggleIntrinsicUIEvent.cs b/Content.Shared/UserInterface/ToggleIntrinsicUIEvent.cs index 5050aca9d4..0f6e2de03d 100644 --- a/Content.Shared/UserInterface/ToggleIntrinsicUIEvent.cs +++ b/Content.Shared/UserInterface/ToggleIntrinsicUIEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Actions; +using Content.Shared.Actions; using JetBrains.Annotations; using Robust.Shared.Serialization.TypeSerializers.Implementations; diff --git a/Content.Shared/Vapor/SharedVaporComponent.cs b/Content.Shared/Vapor/SharedVaporComponent.cs index 43c65f4959..70fc6307a5 100644 --- a/Content.Shared/Vapor/SharedVaporComponent.cs +++ b/Content.Shared/Vapor/SharedVaporComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Vapor; diff --git a/Content.Shared/Vehicle/Components/ContainerVehicleComponent.cs b/Content.Shared/Vehicle/Components/ContainerVehicleComponent.cs index a3fe914173..768442d15a 100644 --- a/Content.Shared/Vehicle/Components/ContainerVehicleComponent.cs +++ b/Content.Shared/Vehicle/Components/ContainerVehicleComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Vehicle.Systems; +using Content.Shared.Vehicle.Systems; using Robust.Shared.GameStates; namespace Content.Shared.Vehicle.Components; diff --git a/Content.Shared/Vehicle/Components/GenericKeyedVehicleComponent.cs b/Content.Shared/Vehicle/Components/GenericKeyedVehicleComponent.cs index b16afb207c..08c4b61313 100644 --- a/Content.Shared/Vehicle/Components/GenericKeyedVehicleComponent.cs +++ b/Content.Shared/Vehicle/Components/GenericKeyedVehicleComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Vehicle.Systems; +using Content.Shared.Vehicle.Systems; using Content.Shared.Whitelist; using Robust.Shared.GameStates; diff --git a/Content.Shared/Vehicle/Components/StrapVehicleComponent.cs b/Content.Shared/Vehicle/Components/StrapVehicleComponent.cs index a4182772fa..33d07948bd 100644 --- a/Content.Shared/Vehicle/Components/StrapVehicleComponent.cs +++ b/Content.Shared/Vehicle/Components/StrapVehicleComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Vehicle.Systems; +using Content.Shared.Vehicle.Systems; using Robust.Shared.GameStates; namespace Content.Shared.Vehicle.Components; diff --git a/Content.Shared/Vehicle/Components/VehicleComponent.cs b/Content.Shared/Vehicle/Components/VehicleComponent.cs index 5c0e7c5b28..c80b0a1f00 100644 --- a/Content.Shared/Vehicle/Components/VehicleComponent.cs +++ b/Content.Shared/Vehicle/Components/VehicleComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Damage; +using Content.Shared.Damage; using Content.Shared.Vehicle.Systems; using Content.Shared.Whitelist; using Robust.Shared.GameStates; diff --git a/Content.Shared/Vehicle/Components/VehicleOperatorComponent.cs b/Content.Shared/Vehicle/Components/VehicleOperatorComponent.cs index 7fc706f56f..47bb2e73c3 100644 --- a/Content.Shared/Vehicle/Components/VehicleOperatorComponent.cs +++ b/Content.Shared/Vehicle/Components/VehicleOperatorComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Vehicle.Systems; +using Content.Shared.Vehicle.Systems; using Robust.Shared.GameStates; namespace Content.Shared.Vehicle.Components; diff --git a/Content.Shared/Vehicle/Systems/VehicleSystem.cs b/Content.Shared/Vehicle/Systems/VehicleSystem.cs index 7073277622..82c4309efb 100644 --- a/Content.Shared/Vehicle/Systems/VehicleSystem.cs +++ b/Content.Shared/Vehicle/Systems/VehicleSystem.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using Content.Shared.Access.Components; using Content.Shared.ActionBlocker; using Content.Shared.Damage; diff --git a/Content.Shared/VoiceMask/VoiceMaskSetNameEvent.cs b/Content.Shared/VoiceMask/VoiceMaskSetNameEvent.cs index 3d03a429d7..9cb4f54169 100644 --- a/Content.Shared/VoiceMask/VoiceMaskSetNameEvent.cs +++ b/Content.Shared/VoiceMask/VoiceMaskSetNameEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Actions; +using Content.Shared.Actions; using Content.Shared.Inventory; namespace Content.Shared.VoiceMask; diff --git a/Content.Shared/Voting/MsgVoteCanCall.cs b/Content.Shared/Voting/MsgVoteCanCall.cs index b23abdee6e..59717feccb 100644 --- a/Content.Shared/Voting/MsgVoteCanCall.cs +++ b/Content.Shared/Voting/MsgVoteCanCall.cs @@ -1,4 +1,4 @@ -using Lidgren.Network; +using Lidgren.Network; using Robust.Shared.Network; using Robust.Shared.Serialization; diff --git a/Content.Shared/Voting/MsgVoteMenu.cs b/Content.Shared/Voting/MsgVoteMenu.cs index d94b326156..c7ee1b60f9 100644 --- a/Content.Shared/Voting/MsgVoteMenu.cs +++ b/Content.Shared/Voting/MsgVoteMenu.cs @@ -1,4 +1,4 @@ -using Lidgren.Network; +using Lidgren.Network; using Robust.Shared.Network; using Robust.Shared.Serialization; diff --git a/Content.Shared/Wagging/WaggingComponent.cs b/Content.Shared/Wagging/WaggingComponent.cs index c96884a265..4ffb54bc96 100644 --- a/Content.Shared/Wagging/WaggingComponent.cs +++ b/Content.Shared/Wagging/WaggingComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Body; +using Content.Shared.Body; using Content.Shared.Humanoid; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; diff --git a/Content.Shared/Wall/ReinforcedWallVisuals.cs b/Content.Shared/Wall/ReinforcedWallVisuals.cs index 00a66b6787..9322f94779 100644 --- a/Content.Shared/Wall/ReinforcedWallVisuals.cs +++ b/Content.Shared/Wall/ReinforcedWallVisuals.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Wall { diff --git a/Content.Shared/Weapons/Melee/Components/BonusMeleeAttackRateComponent.cs b/Content.Shared/Weapons/Melee/Components/BonusMeleeAttackRateComponent.cs index f2f9607757..5345ab31f1 100644 --- a/Content.Shared/Weapons/Melee/Components/BonusMeleeAttackRateComponent.cs +++ b/Content.Shared/Weapons/Melee/Components/BonusMeleeAttackRateComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Weapons.Melee.Components; diff --git a/Content.Shared/Weapons/Melee/Components/BonusMeleeDamageComponent.cs b/Content.Shared/Weapons/Melee/Components/BonusMeleeDamageComponent.cs index 08af9e42a3..af7203ca13 100644 --- a/Content.Shared/Weapons/Melee/Components/BonusMeleeDamageComponent.cs +++ b/Content.Shared/Weapons/Melee/Components/BonusMeleeDamageComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Damage; +using Content.Shared.Damage; using Content.Shared.FixedPoint; using Content.Shared.Weapons.Melee.Events; using Robust.Shared.GameStates; diff --git a/Content.Shared/Weapons/Melee/Components/UseDelayOnMeleeHitComponent.cs b/Content.Shared/Weapons/Melee/Components/UseDelayOnMeleeHitComponent.cs index 644971bc01..c9dbca91b2 100644 --- a/Content.Shared/Weapons/Melee/Components/UseDelayOnMeleeHitComponent.cs +++ b/Content.Shared/Weapons/Melee/Components/UseDelayOnMeleeHitComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Weapons.Melee.Components; diff --git a/Content.Shared/Weapons/Melee/UseDelayOnMeleeHitSystem.cs b/Content.Shared/Weapons/Melee/UseDelayOnMeleeHitSystem.cs index 33b090c0cf..c6c3c54845 100644 --- a/Content.Shared/Weapons/Melee/UseDelayOnMeleeHitSystem.cs +++ b/Content.Shared/Weapons/Melee/UseDelayOnMeleeHitSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Throwing; +using Content.Shared.Throwing; using Content.Shared.Timing.Components; using Content.Shared.Timing.Systems; using Content.Shared.Weapons.Melee.Components; diff --git a/Content.Shared/Weapons/Ranged/Components/BallisticAmmoInteractLoaderComponent.cs b/Content.Shared/Weapons/Ranged/Components/BallisticAmmoInteractLoaderComponent.cs index 04d4a80774..f06d9ddbcb 100644 --- a/Content.Shared/Weapons/Ranged/Components/BallisticAmmoInteractLoaderComponent.cs +++ b/Content.Shared/Weapons/Ranged/Components/BallisticAmmoInteractLoaderComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Weapons.Ranged.Components; diff --git a/Content.Shared/Weapons/Ranged/Components/BallisticAmmoSelfRefillerComponent.cs b/Content.Shared/Weapons/Ranged/Components/BallisticAmmoSelfRefillerComponent.cs index eb11014ea4..af7cca6cfd 100644 --- a/Content.Shared/Weapons/Ranged/Components/BallisticAmmoSelfRefillerComponent.cs +++ b/Content.Shared/Weapons/Ranged/Components/BallisticAmmoSelfRefillerComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Power.Components; +using Content.Shared.Power.Components; using Content.Shared.Weapons.Ranged.Systems; using Robust.Shared.Audio; using Robust.Shared.GameStates; diff --git a/Content.Shared/Weapons/Ranged/Components/ContainerAmmoProviderComponent.cs b/Content.Shared/Weapons/Ranged/Components/ContainerAmmoProviderComponent.cs index f49cc812c2..7b6cf58c34 100644 --- a/Content.Shared/Weapons/Ranged/Components/ContainerAmmoProviderComponent.cs +++ b/Content.Shared/Weapons/Ranged/Components/ContainerAmmoProviderComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Weapons.Ranged.Systems; +using Content.Shared.Weapons.Ranged.Systems; using Robust.Shared.GameStates; namespace Content.Shared.Weapons.Ranged.Components; diff --git a/Content.Shared/Weapons/Ranged/Components/CustomSpriteAmmoCounterComponent.cs b/Content.Shared/Weapons/Ranged/Components/CustomSpriteAmmoCounterComponent.cs index e887e7dcca..a0a9b3d1fe 100644 --- a/Content.Shared/Weapons/Ranged/Components/CustomSpriteAmmoCounterComponent.cs +++ b/Content.Shared/Weapons/Ranged/Components/CustomSpriteAmmoCounterComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; using Robust.Shared.Utility; namespace Content.Shared.Weapons.Ranged.Components; diff --git a/Content.Shared/Weapons/Ranged/Events/BeforeAmmoLoadedEvent.cs b/Content.Shared/Weapons/Ranged/Events/BeforeAmmoLoadedEvent.cs index 896bfbcb6d..3539af6569 100644 --- a/Content.Shared/Weapons/Ranged/Events/BeforeAmmoLoadedEvent.cs +++ b/Content.Shared/Weapons/Ranged/Events/BeforeAmmoLoadedEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Weapons.Ranged.Components; +using Content.Shared.Weapons.Ranged.Components; namespace Content.Shared.Weapons.Ranged.Events; diff --git a/Content.Shared/Weapons/Ranged/Events/GetAmmoCountEvent.cs b/Content.Shared/Weapons/Ranged/Events/GetAmmoCountEvent.cs index e080ff5848..f2a31642f5 100644 --- a/Content.Shared/Weapons/Ranged/Events/GetAmmoCountEvent.cs +++ b/Content.Shared/Weapons/Ranged/Events/GetAmmoCountEvent.cs @@ -8,4 +8,4 @@ public struct GetAmmoCountEvent { public int Count; public int Capacity; -} \ No newline at end of file +} diff --git a/Content.Shared/Weapons/Ranged/Events/GunGetAmmoSpreadEvent.cs b/Content.Shared/Weapons/Ranged/Events/GunGetAmmoSpreadEvent.cs index 63419ab0f5..9515b2fe2c 100644 --- a/Content.Shared/Weapons/Ranged/Events/GunGetAmmoSpreadEvent.cs +++ b/Content.Shared/Weapons/Ranged/Events/GunGetAmmoSpreadEvent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Weapons.Ranged.Events; +namespace Content.Shared.Weapons.Ranged.Events; /// /// Raised directed on the gun entity when ammo is shot to calculate its spread. diff --git a/Content.Shared/Weapons/Ranged/Events/GunMuzzleFlashAttemptEvent.cs b/Content.Shared/Weapons/Ranged/Events/GunMuzzleFlashAttemptEvent.cs index d6a2475308..ef2ed0d057 100644 --- a/Content.Shared/Weapons/Ranged/Events/GunMuzzleFlashAttemptEvent.cs +++ b/Content.Shared/Weapons/Ranged/Events/GunMuzzleFlashAttemptEvent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Weapons.Ranged.Events; +namespace Content.Shared.Weapons.Ranged.Events; /// /// Raised directed on the gun entity when a muzzle flash is about to happen. diff --git a/Content.Shared/Weapons/Ranged/Events/GunRefreshModifiersEvent.cs b/Content.Shared/Weapons/Ranged/Events/GunRefreshModifiersEvent.cs index 0ad79bd74a..488124ece5 100644 --- a/Content.Shared/Weapons/Ranged/Events/GunRefreshModifiersEvent.cs +++ b/Content.Shared/Weapons/Ranged/Events/GunRefreshModifiersEvent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Weapons.Ranged.Components; +using Content.Shared.Weapons.Ranged.Components; using Content.Shared.Weapons.Ranged.Systems; using Robust.Shared.Audio; diff --git a/Content.Shared/Weapons/Ranged/IShootable.cs b/Content.Shared/Weapons/Ranged/IShootable.cs index b136b6a122..43b2a03ee7 100644 --- a/Content.Shared/Weapons/Ranged/IShootable.cs +++ b/Content.Shared/Weapons/Ranged/IShootable.cs @@ -3,4 +3,4 @@ namespace Content.Shared.Weapons.Ranged; /// /// Interface that says this can be shot from a gun. Exists to facilitate hitscan OR prototype shooting. /// -public interface IShootable {} \ No newline at end of file +public interface IShootable {} diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.BasicEntity.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.BasicEntity.cs index 546d488fa7..186a06936c 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.BasicEntity.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.BasicEntity.cs @@ -1,4 +1,4 @@ -using Content.Shared.Weapons.Ranged.Components; +using Content.Shared.Weapons.Ranged.Components; using Content.Shared.Weapons.Ranged.Events; namespace Content.Shared.Weapons.Ranged.Systems; diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Container.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Container.cs index 4947909e70..a2b2fd24cb 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Container.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Container.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Shared.Weapons.Ranged.Components; using Content.Shared.Weapons.Ranged.Events; using Robust.Shared.Containers; diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.CustomAmmoCounter.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.CustomAmmoCounter.cs index 1ff678a926..5591992875 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.CustomAmmoCounter.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.CustomAmmoCounter.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Weapons.Ranged.Systems; +namespace Content.Shared.Weapons.Ranged.Systems; public abstract partial class SharedGunSystem { diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Solution.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Solution.cs index 7e7035657e..06b820782c 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Solution.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Solution.cs @@ -1,4 +1,4 @@ -using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.Components; using Content.Shared.Weapons.Ranged.Components; using Content.Shared.Weapons.Ranged.Events; using Robust.Shared.Map; diff --git a/Content.Shared/Wires/ActivatableUIRequiresPanelComponent.cs b/Content.Shared/Wires/ActivatableUIRequiresPanelComponent.cs index 6e8fff6e49..8134a31cf8 100644 --- a/Content.Shared/Wires/ActivatableUIRequiresPanelComponent.cs +++ b/Content.Shared/Wires/ActivatableUIRequiresPanelComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Wires; diff --git a/Content.Shared/Wires/SharedWireVisComponent.cs b/Content.Shared/Wires/SharedWireVisComponent.cs index 532d197341..c29884985b 100644 --- a/Content.Shared/Wires/SharedWireVisComponent.cs +++ b/Content.Shared/Wires/SharedWireVisComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.Wires { diff --git a/Content.Shared/Xenoarchaeology/Equipment/Components/SuppressArtifactContainerComponent.cs b/Content.Shared/Xenoarchaeology/Equipment/Components/SuppressArtifactContainerComponent.cs index 831813b1c9..c3193e446f 100644 --- a/Content.Shared/Xenoarchaeology/Equipment/Components/SuppressArtifactContainerComponent.cs +++ b/Content.Shared/Xenoarchaeology/Equipment/Components/SuppressArtifactContainerComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.GameStates; +using Robust.Shared.GameStates; namespace Content.Shared.Xenoarchaeology.Equipment.Components; diff --git a/Content.Shared/Xenoarchaeology/Equipment/SuppressArtifactContainerSystem.cs b/Content.Shared/Xenoarchaeology/Equipment/SuppressArtifactContainerSystem.cs index 8dcec312eb..1844e360c7 100644 --- a/Content.Shared/Xenoarchaeology/Equipment/SuppressArtifactContainerSystem.cs +++ b/Content.Shared/Xenoarchaeology/Equipment/SuppressArtifactContainerSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Xenoarchaeology.Artifact; +using Content.Shared.Xenoarchaeology.Artifact; using Content.Shared.Xenoarchaeology.Artifact.Components; using Content.Shared.Xenoarchaeology.Equipment.Components; using Robust.Shared.Containers; diff --git a/Content.Shared/Zombies/IncurableZombieComponent.cs b/Content.Shared/Zombies/IncurableZombieComponent.cs index 2d54950291..ebc838cef4 100644 --- a/Content.Shared/Zombies/IncurableZombieComponent.cs +++ b/Content.Shared/Zombies/IncurableZombieComponent.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; namespace Content.Shared.Zombies; diff --git a/Content.Shared/Zombies/SharedZombieSystem.cs b/Content.Shared/Zombies/SharedZombieSystem.cs index 076917c4ac..20cedfa4d9 100644 --- a/Content.Shared/Zombies/SharedZombieSystem.cs +++ b/Content.Shared/Zombies/SharedZombieSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Armor; +using Content.Shared.Armor; using Content.Shared.Inventory; using Content.Shared.Movement.Systems; using Content.Shared.NameModifier.EntitySystems; diff --git a/Content.Tests/AssemblyInfo.cs b/Content.Tests/AssemblyInfo.cs index 8e01f41b18..9ae285d9ea 100644 --- a/Content.Tests/AssemblyInfo.cs +++ b/Content.Tests/AssemblyInfo.cs @@ -1,3 +1,3 @@ -using NUnit.Framework; +using NUnit.Framework; [assembly: Parallelizable(ParallelScope.Fixtures)] diff --git a/Content.Tests/Server/Connection/IPIntelTest.cs b/Content.Tests/Server/Connection/IPIntelTest.cs index f571b82fa6..0649ab549a 100644 --- a/Content.Tests/Server/Connection/IPIntelTest.cs +++ b/Content.Tests/Server/Connection/IPIntelTest.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Net; using System.Net.Http; using System.Threading.Tasks; diff --git a/Content.Tests/Server/Utility/IPAddressExtTest.cs b/Content.Tests/Server/Utility/IPAddressExtTest.cs index dba8a0e6aa..aa96309839 100644 --- a/Content.Tests/Server/Utility/IPAddressExtTest.cs +++ b/Content.Tests/Server/Utility/IPAddressExtTest.cs @@ -1,4 +1,4 @@ -using System.Net; +using System.Net; using Content.Server.IP; using NUnit.Framework; diff --git a/Content.Tests/Shared/Administration/AdminFlagsExtTest.cs b/Content.Tests/Shared/Administration/AdminFlagsExtTest.cs index c36aad7718..7f2fd1b124 100644 --- a/Content.Tests/Shared/Administration/AdminFlagsExtTest.cs +++ b/Content.Tests/Shared/Administration/AdminFlagsExtTest.cs @@ -1,4 +1,4 @@ -using System; +using System; using Content.Shared.Administration; using NUnit.Framework; diff --git a/Content.Tests/Shared/Administration/Logs/LogTypeTests.cs b/Content.Tests/Shared/Administration/Logs/LogTypeTests.cs index da52469bd6..d79ecad951 100644 --- a/Content.Tests/Shared/Administration/Logs/LogTypeTests.cs +++ b/Content.Tests/Shared/Administration/Logs/LogTypeTests.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Linq; using Content.Shared.Database; using NUnit.Framework; diff --git a/Content.Tests/Shared/Atmos/GasMixtureTest.cs b/Content.Tests/Shared/Atmos/GasMixtureTest.cs index 5068d48581..a7dbde4864 100644 --- a/Content.Tests/Shared/Atmos/GasMixtureTest.cs +++ b/Content.Tests/Shared/Atmos/GasMixtureTest.cs @@ -1,4 +1,4 @@ -using Content.Shared.Atmos; +using Content.Shared.Atmos; using NUnit.Framework; namespace Content.Tests.Shared.Atmos; diff --git a/Content.Tests/Shared/Chat/V2/Moderation/SimpleCensor.cs b/Content.Tests/Shared/Chat/V2/Moderation/SimpleCensor.cs index 09870af317..08340af7ff 100644 --- a/Content.Tests/Shared/Chat/V2/Moderation/SimpleCensor.cs +++ b/Content.Tests/Shared/Chat/V2/Moderation/SimpleCensor.cs @@ -1,4 +1,4 @@ -using System.Text.Unicode; +using System.Text.Unicode; using Content.Shared.Chat.V2.Moderation; using NUnit.Framework; diff --git a/Content.Tests/Shared/Chemistry/ReagentPrototype_Tests.cs b/Content.Tests/Shared/Chemistry/ReagentPrototype_Tests.cs index 19dee14cfe..27c49d77c9 100644 --- a/Content.Tests/Shared/Chemistry/ReagentPrototype_Tests.cs +++ b/Content.Tests/Shared/Chemistry/ReagentPrototype_Tests.cs @@ -1,4 +1,4 @@ -using System.IO; +using System.IO; using Content.Shared.Chemistry.Reagent; using NUnit.Framework; using Robust.Shared.IoC; diff --git a/Content.Tests/Shared/DirectionRandomizerTest.cs b/Content.Tests/Shared/DirectionRandomizerTest.cs index 0afaa9ba4a..9091fdf9de 100644 --- a/Content.Tests/Shared/DirectionRandomizerTest.cs +++ b/Content.Tests/Shared/DirectionRandomizerTest.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using Content.Shared; using NUnit.Framework; diff --git a/Content.Tests/Shared/Gamestates/ComponentStateNullTest.cs b/Content.Tests/Shared/Gamestates/ComponentStateNullTest.cs index 9306bd54cb..fcaf6477a5 100644 --- a/Content.Tests/Shared/Gamestates/ComponentStateNullTest.cs +++ b/Content.Tests/Shared/Gamestates/ComponentStateNullTest.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Reflection; using NUnit.Framework; diff --git a/Content.Tests/Shared/Preferences/Job/JobPriorityTest.cs b/Content.Tests/Shared/Preferences/Job/JobPriorityTest.cs index fc095d1c96..f8ad717272 100644 --- a/Content.Tests/Shared/Preferences/Job/JobPriorityTest.cs +++ b/Content.Tests/Shared/Preferences/Job/JobPriorityTest.cs @@ -1,4 +1,4 @@ -using System; +using System; using Content.Server.Database; using Content.Shared.Preferences; using NUnit.Framework; diff --git a/Content.Tests/Shared/Utility/ContentHelpers_Test.cs b/Content.Tests/Shared/Utility/ContentHelpers_Test.cs index 6a54623892..45a3ba0918 100644 --- a/Content.Tests/Shared/Utility/ContentHelpers_Test.cs +++ b/Content.Tests/Shared/Utility/ContentHelpers_Test.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using Content.Shared.Rounding; using NUnit.Framework; diff --git a/Content.Tests/Shared/Utility/RandomExtensionsTests.cs b/Content.Tests/Shared/Utility/RandomExtensionsTests.cs index f278bfbbd1..ff63826936 100644 --- a/Content.Tests/Shared/Utility/RandomExtensionsTests.cs +++ b/Content.Tests/Shared/Utility/RandomExtensionsTests.cs @@ -1,4 +1,4 @@ -using System.IO; +using System.IO; using Content.Shared.Dataset; using Content.Shared.Random.Helpers; using NUnit.Framework; diff --git a/Content.Tools/MappingMergeDriver.cs b/Content.Tools/MappingMergeDriver.cs index 1f3b56cd05..be40822830 100644 --- a/Content.Tools/MappingMergeDriver.cs +++ b/Content.Tools/MappingMergeDriver.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace Content.Tools { diff --git a/Content.Tools/Merger.cs b/Content.Tools/Merger.cs index 9ca490504f..2824e8f0b6 100644 --- a/Content.Tools/Merger.cs +++ b/Content.Tools/Merger.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.IO; using System.Collections.Generic; using System.Globalization; diff --git a/Content.Tools/TypeTagPreserver.cs b/Content.Tools/TypeTagPreserver.cs index 6dda5b92c2..56ff333a6f 100644 --- a/Content.Tools/TypeTagPreserver.cs +++ b/Content.Tools/TypeTagPreserver.cs @@ -1,4 +1,4 @@ -using YamlDotNet.Core; +using YamlDotNet.Core; using YamlDotNet.Core.Events; namespace Content.Tools diff --git a/Content.Tools/YamlTools.cs b/Content.Tools/YamlTools.cs index e59d61efa4..43153b6bd8 100644 --- a/Content.Tools/YamlTools.cs +++ b/Content.Tools/YamlTools.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Linq; using YamlDotNet.RepresentationModel; diff --git a/Pow3r/LinqHelper.cs b/Pow3r/LinqHelper.cs index 25ae91b090..a0a01c4509 100644 --- a/Pow3r/LinqHelper.cs +++ b/Pow3r/LinqHelper.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; namespace Pow3r diff --git a/Pow3r/Program.OpenGL.cs b/Pow3r/Program.OpenGL.cs index 1e4298e4bc..e94bc2cbc4 100644 --- a/Pow3r/Program.OpenGL.cs +++ b/Pow3r/Program.OpenGL.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Numerics; using System.Text; using System.Linq; diff --git a/Pow3r/Program.SaveLoad.cs b/Pow3r/Program.SaveLoad.cs index 5fff64f662..e7cf1e6940 100644 --- a/Pow3r/Program.SaveLoad.cs +++ b/Pow3r/Program.SaveLoad.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.IO; using System.Linq; using System.Text.Json; diff --git a/Pow3r/Program.Veldrid.cs b/Pow3r/Program.Veldrid.cs index ddbad8829e..851aa5f173 100644 --- a/Pow3r/Program.Veldrid.cs +++ b/Pow3r/Program.Veldrid.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Numerics; using System.Runtime.InteropServices; using System.Text; diff --git a/Pow3r/Program.cs b/Pow3r/Program.cs index be5bf62f39..32490fc7ee 100644 --- a/Pow3r/Program.cs +++ b/Pow3r/Program.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Diagnostics; using System.Runtime.InteropServices; using ImGuiNET; diff --git a/Resources/Audio/Ambience/Temporary/attributions.yml b/Resources/Audio/Ambience/Temporary/attributions.yml index 7560df72a8..bb9be72ad6 100644 --- a/Resources/Audio/Ambience/Temporary/attributions.yml +++ b/Resources/Audio/Ambience/Temporary/attributions.yml @@ -1,4 +1,4 @@ - files: ["flies.ogg"] license: "CC0-1.0" copyright: "Taken from source" - source: "https://freesound.org/people/telezon/sounds/321870/" \ No newline at end of file + source: "https://freesound.org/people/telezon/sounds/321870/" diff --git a/Resources/Audio/Effects/Changeling/attributions.yml b/Resources/Audio/Effects/Changeling/attributions.yml index d7d7931cd6..285b8e9189 100644 --- a/Resources/Audio/Effects/Changeling/attributions.yml +++ b/Resources/Audio/Effects/Changeling/attributions.yml @@ -1,4 +1,4 @@ -- files: ["devour_suck.ogg"] +- files: ["devour_suck.ogg"] license: "CC0-1.0" copyright: "4Cairnz on Freesound: June 5th 2023" source: "https://freesound.org/people/4Cairnz/sounds/689640/" diff --git a/Resources/Audio/Effects/Shuttle/attributions.yml b/Resources/Audio/Effects/Shuttle/attributions.yml index 2342ba8fb6..e39c541700 100644 --- a/Resources/Audio/Effects/Shuttle/attributions.yml +++ b/Resources/Audio/Effects/Shuttle/attributions.yml @@ -14,4 +14,4 @@ - radar_ping.ogg copyright: User unfa from freesound.org Remixed to mono and .ogg by metalgearsloth. license: CC0-1.0 - source: https://freesound.org/people/unfa/sounds/215415/ \ No newline at end of file + source: https://freesound.org/people/unfa/sounds/215415/ diff --git a/Resources/Audio/Items/Anomaly/attributions.yml b/Resources/Audio/Items/Anomaly/attributions.yml index 27bf35d875..e2c9c5761d 100644 --- a/Resources/Audio/Items/Anomaly/attributions.yml +++ b/Resources/Audio/Items/Anomaly/attributions.yml @@ -1,4 +1,4 @@ -- files: ["flesh_crit.ogg"] +- files: ["flesh_crit.ogg"] license: "CC-BY-SA-3.0" copyright: "Mashup by GonTar Quantumcross of malescream_1.ogg, malescream_2.ogg, femalescream_4.ogg, femalescream_5.ogg, alien_claw_flesh_2.ogg, alien_claw_flesh_3.ogg" source: "https://github.com/tgstation/tgstation/commit/3d049e69fe71a0be2133005e65ea469135d648c8" diff --git a/Resources/Audio/Items/Dice/attributions.yml b/Resources/Audio/Items/Dice/attributions.yml index 12d94403cd..c82558b132 100644 --- a/Resources/Audio/Items/Dice/attributions.yml +++ b/Resources/Audio/Items/Dice/attributions.yml @@ -1,4 +1,4 @@ - files: ["coin1.ogg","coin2.ogg", "coin3.ogg"] license: "CC0-1.0" copyright: "Sampled from sfx created by Sorce, from freesound" - source: "https://freesound.org/people/sorce/sounds/425130" \ No newline at end of file + source: "https://freesound.org/people/sorce/sounds/425130" diff --git a/Resources/Audio/Items/Handcuffs/attributions.yml b/Resources/Audio/Items/Handcuffs/attributions.yml index 9c189aec2b..4094ba84e5 100644 --- a/Resources/Audio/Items/Handcuffs/attributions.yml +++ b/Resources/Audio/Items/Handcuffs/attributions.yml @@ -1,4 +1,4 @@ - files: ["ziptie_end.ogg"] license: "CC-BY-3.0" copyright: "Taken from cable tie.wav by THE_bizniss on Freesound.org" - source: "https://freesound.org/people/THE_bizniss/sounds/39318/" \ No newline at end of file + source: "https://freesound.org/people/THE_bizniss/sounds/39318/" diff --git a/Resources/Audio/Jukebox/attributions.yml b/Resources/Audio/Jukebox/attributions.yml index 48e1458c4c..6d83ef5251 100644 --- a/Resources/Audio/Jukebox/attributions.yml +++ b/Resources/Audio/Jukebox/attributions.yml @@ -24,4 +24,4 @@ - files: ["sunset.ogg"] license: "CC-BY-SA-3.0" copyright: "Sunset by PigeonBeans. Exported in Mono OGG." - source: "https://soundcloud.com/pigeonbeans/sunset" \ No newline at end of file + source: "https://soundcloud.com/pigeonbeans/sunset" diff --git a/Resources/Audio/Lobby/attributions.yml b/Resources/Audio/Lobby/attributions.yml index 9d07a61acb..8564467687 100644 --- a/Resources/Audio/Lobby/attributions.yml +++ b/Resources/Audio/Lobby/attributions.yml @@ -1,4 +1,4 @@ -- files: ["thunderdome.ogg"] +- files: ["thunderdome.ogg"] license: "CC-BY-NC-SA-3.0" copyright: "-Sector11 by MashedByMachines. Converted from MP3 to OGG." source: "https://www.newgrounds.com/audio/listen/312622" diff --git a/Resources/Audio/Magic/Cults/ClockCult/attributions.yml b/Resources/Audio/Magic/Cults/ClockCult/attributions.yml index dae32f0ae2..736cb9d375 100644 --- a/Resources/Audio/Magic/Cults/ClockCult/attributions.yml +++ b/Resources/Audio/Magic/Cults/ClockCult/attributions.yml @@ -1,4 +1,4 @@ - files: ["steam_woosh.ogg"] license: "CC-BY-SA-3.0" copyright: "Taken from Citadel Station" - source: "https://github.com/Citadel-Station-13/Citadel-Station-13/commit/e575bd66854786eb9455eae6954d976cf13c66ea" \ No newline at end of file + source: "https://github.com/Citadel-Station-13/Citadel-Station-13/commit/e575bd66854786eb9455eae6954d976cf13c66ea" diff --git a/Resources/Audio/Mecha/attributions.yml b/Resources/Audio/Mecha/attributions.yml index 2330e20ad9..bb19933359 100644 --- a/Resources/Audio/Mecha/attributions.yml +++ b/Resources/Audio/Mecha/attributions.yml @@ -9,4 +9,4 @@ - files: ["sound_mecha_powerloader_step.ogg"] license: "CC-BY-NC-SA-3.0" copyright: "Taken from TG station." - source: "https://github.com/tgstation/tgstation/commit/45123dd06cb6dc7c56e8004c528230682ea559b2" \ No newline at end of file + source: "https://github.com/tgstation/tgstation/commit/45123dd06cb6dc7c56e8004c528230682ea559b2" diff --git a/Resources/Audio/UserInterface/attributions.yml b/Resources/Audio/UserInterface/attributions.yml index f0d3612f74..6622aee2b7 100644 --- a/Resources/Audio/UserInterface/attributions.yml +++ b/Resources/Audio/UserInterface/attributions.yml @@ -8,4 +8,4 @@ - hover.ogg license: "CC0-1.0" copyright: "Made by MATRIXXX_, edited by metalgearsloth" - source: "https://freesound.org/people/MATRIXXX_/sounds/703884/" \ No newline at end of file + source: "https://freesound.org/people/MATRIXXX_/sounds/703884/" diff --git a/Resources/Audio/Voice/Arachnid/attributions.yml b/Resources/Audio/Voice/Arachnid/attributions.yml index dc7e5ce1d5..fe1e8c0d61 100644 --- a/Resources/Audio/Voice/Arachnid/attributions.yml +++ b/Resources/Audio/Voice/Arachnid/attributions.yml @@ -5,4 +5,4 @@ - files: ["arachnid_chitter.ogg", "arachnid_click.ogg"] license: "CC-BY-4.0" copyright: "Recorded by https://github.com/PixelTheKermit, modified by Dutch-VanDerLinde" - source: "https://github.com/space-wizards/space-station-14/pull/23548" \ No newline at end of file + source: "https://github.com/space-wizards/space-station-14/pull/23548" diff --git a/Resources/Audio/Voice/Diona/attributions.yml b/Resources/Audio/Voice/Diona/attributions.yml index 685e4e0f9a..4879bee379 100644 --- a/Resources/Audio/Voice/Diona/attributions.yml +++ b/Resources/Audio/Voice/Diona/attributions.yml @@ -1,4 +1,4 @@ -- files: ["diona_scream.ogg"] +- files: ["diona_scream.ogg"] license: "CC-BY-4.0" copyright: "Made by InspectorJ (http://www.jshaw.co.uk/) of freesound.org. Modified by Morb0 for SS14 with the following modifications: Noise reduced, cropped, converted to mono" source: "https://freesound.org/people/InspectorJ/sounds/352201/" diff --git a/Resources/Audio/Voice/Reptilian/attritbutions.yml b/Resources/Audio/Voice/Reptilian/attritbutions.yml index 7fa86b2ebf..7c97eaa2d8 100644 --- a/Resources/Audio/Voice/Reptilian/attritbutions.yml +++ b/Resources/Audio/Voice/Reptilian/attritbutions.yml @@ -6,4 +6,4 @@ - files: [reptilian_tailthump.ogg] copyright: "Taken from https://freesound.org/" license: "CC0-1.0" - source: https://freesound.org/people/TylerAM/sounds/389665/ \ No newline at end of file + source: https://freesound.org/people/TylerAM/sounds/389665/ diff --git a/Resources/Audio/Voice/Zombie/attributions.yml b/Resources/Audio/Voice/Zombie/attributions.yml index 9fa56bc389..3bbbd81315 100644 --- a/Resources/Audio/Voice/Zombie/attributions.yml +++ b/Resources/Audio/Voice/Zombie/attributions.yml @@ -9,4 +9,4 @@ - files: ["zombie-3.ogg"] license: "CC-BY-NC-SA-3.0" copyright: "Zombie Snarl by gneube. Converted from MP3 to OGG." - source: "https://freesound.org/people/gneube/sounds/315844/" \ No newline at end of file + source: "https://freesound.org/people/gneube/sounds/315844/" diff --git a/Resources/Audio/Weapons/Guns/Gunshots/Magic/attributions.yml b/Resources/Audio/Weapons/Guns/Gunshots/Magic/attributions.yml index c25a5ed484..c057db626b 100644 --- a/Resources/Audio/Weapons/Guns/Gunshots/Magic/attributions.yml +++ b/Resources/Audio/Weapons/Guns/Gunshots/Magic/attributions.yml @@ -4,4 +4,4 @@ - files: [ "staff_animation.ogg", "staff_change.ogg", "staff_chaos.ogg", "staff_door.ogg", "staff_healing.ogg" ] license: "CC-BY-SA-3.0" copyright: "https://github.com/tgstation/tgstation/commit/906fb0682bab6a0975b45036001c54f021f58ae7" - source: "https://github.com/tgstation/tgstation/commit/906fb0682bab6a0975b45036001c54f021f58ae7" \ No newline at end of file + source: "https://github.com/tgstation/tgstation/commit/906fb0682bab6a0975b45036001c54f021f58ae7" diff --git a/Resources/Audio/Weapons/Guns/Gunshots/attributions.yml b/Resources/Audio/Weapons/Guns/Gunshots/attributions.yml index b33c87f4ec..94ebe6b990 100644 --- a/Resources/Audio/Weapons/Guns/Gunshots/attributions.yml +++ b/Resources/Audio/Weapons/Guns/Gunshots/attributions.yml @@ -1,4 +1,4 @@ -- files: ["water_spray.ogg"] +- files: ["water_spray.ogg"] license: "CC0-1.0" copyright: "Watering by elittle13. Converted to .OGG and MONO by EmoGarbage404 (github)" source: "https://freesound.org/people/elittle13/sounds/568558" diff --git a/Resources/Audio/Weapons/Guns/Misc/attributions.yml b/Resources/Audio/Weapons/Guns/Misc/attributions.yml index dab5384b8d..3a1337fc65 100644 --- a/Resources/Audio/Weapons/Guns/Misc/attributions.yml +++ b/Resources/Audio/Weapons/Guns/Misc/attributions.yml @@ -6,4 +6,4 @@ - files: ["selector.ogg"] license: "CC-BY-NC-SA-3.0" copyright: "Taken from tgstation" - source: "https://github.com/tgstation/TerraGov-Marine-Corps/blob/0d97ec86c49e2a89409bd3ddf0b7451b3f1c9a0e/sound/weapons/guns/interact/selector.ogg" \ No newline at end of file + source: "https://github.com/tgstation/TerraGov-Marine-Corps/blob/0d97ec86c49e2a89409bd3ddf0b7451b3f1c9a0e/sound/weapons/guns/interact/selector.ogg" diff --git a/Resources/Audio/Weapons/Guns/Miss/attributions.yml b/Resources/Audio/Weapons/Guns/Miss/attributions.yml index 7fd804b9d0..90e4348fe3 100644 --- a/Resources/Audio/Weapons/Guns/Miss/attributions.yml +++ b/Resources/Audio/Weapons/Guns/Miss/attributions.yml @@ -6,4 +6,4 @@ - files: ["energy_miss1.ogg"] license: "CC-BY-SA-3.0" copyright: "Taken from CM-SS13" - source: "https://github.com/cmss13-devs/cmss13/tree/0535055a7abcd3016123f2be2cd3db428c122dac/sound/bullets" \ No newline at end of file + source: "https://github.com/cmss13-devs/cmss13/tree/0535055a7abcd3016123f2be2cd3db428c122dac/sound/bullets" diff --git a/Resources/Locale/en-US/accent/mobster.ftl b/Resources/Locale/en-US/accent/mobster.ftl index d0f510453d..7cf3bf55e7 100644 --- a/Resources/Locale/en-US/accent/mobster.ftl +++ b/Resources/Locale/en-US/accent/mobster.ftl @@ -1,4 +1,4 @@ -accent-mobster-prefix-1 = Nyehh, +accent-mobster-prefix-1 = Nyehh, accent-mobster-suffix-boss-1 = , see? accent-mobster-suffix-boss-2 = , fugeddaboutit. diff --git a/Resources/Locale/en-US/accent/russian.ftl b/Resources/Locale/en-US/accent/russian.ftl index 596342dc9f..9ce6b78b28 100644 --- a/Resources/Locale/en-US/accent/russian.ftl +++ b/Resources/Locale/en-US/accent/russian.ftl @@ -16,4 +16,4 @@ accent-russian-words-5 = friends accent-russian-words-replace-5 = comrades accent-russian-words-6 = cheers -accent-russian-words-replace-6 = na zdorovje \ No newline at end of file +accent-russian-words-replace-6 = na zdorovje diff --git a/Resources/Locale/en-US/accent/scottish.ftl b/Resources/Locale/en-US/accent/scottish.ftl index 9fed77d2f3..e5a649c278 100644 --- a/Resources/Locale/en-US/accent/scottish.ftl +++ b/Resources/Locale/en-US/accent/scottish.ftl @@ -1,4 +1,4 @@ -accent-scottish-words-1 = do +accent-scottish-words-1 = do accent-scottish-words-replace-1 = dae accent-scottish-words-2 = don't diff --git a/Resources/Locale/en-US/accent/scrambled.ftl b/Resources/Locale/en-US/accent/scrambled.ftl index e651980734..0baf5d9b03 100644 --- a/Resources/Locale/en-US/accent/scrambled.ftl +++ b/Resources/Locale/en-US/accent/scrambled.ftl @@ -1,4 +1,4 @@ -accent-scrambled-words-1 = Who? +accent-scrambled-words-1 = Who? accent-scrambled-words-2 = What? accent-scrambled-words-3 = When? accent-scrambled-words-4 = Where? diff --git a/Resources/Locale/en-US/access/systems/access-reader-system.ftl b/Resources/Locale/en-US/access/systems/access-reader-system.ftl index bf3bfe4d96..7f2ca5a72f 100644 --- a/Resources/Locale/en-US/access/systems/access-reader-system.ftl +++ b/Resources/Locale/en-US/access/systems/access-reader-system.ftl @@ -3,4 +3,4 @@ access-reader-access-label = [color=yellow]{$access}[/color] access-reader-examination = Access is generally restricted to personnel with {$access} access. access-reader-examination-functionality-restricted = {$access} access may be required to use certain functions. access-reader-access-settings-modified-message = [italic]The access reader has been modified to accept personnel with {$access} access.[/italic] -access-reader-access-settings-removed-message = [italic]The settings on the access reader have been deleted.[/italic] \ No newline at end of file +access-reader-access-settings-removed-message = [italic]The settings on the access reader have been deleted.[/italic] diff --git a/Resources/Locale/en-US/actions/actions/actions-commands.ftl b/Resources/Locale/en-US/actions/actions/actions-commands.ftl index ac5374f008..c8b0839fef 100644 --- a/Resources/Locale/en-US/actions/actions/actions-commands.ftl +++ b/Resources/Locale/en-US/actions/actions/actions-commands.ftl @@ -1,4 +1,4 @@ -## Actions Commands loc +## Actions Commands loc ## Upgradeaction command loc upgradeaction-command-help = Usage: upgradeaction [level] diff --git a/Resources/Locale/en-US/actions/actions/blocking.ftl b/Resources/Locale/en-US/actions/actions/blocking.ftl index ff0df1c99b..0a44813c67 100644 --- a/Resources/Locale/en-US/actions/actions/blocking.ftl +++ b/Resources/Locale/en-US/actions/actions/blocking.ftl @@ -1,4 +1,4 @@ -action-popup-blocking-user = You raise your {$shield}! +action-popup-blocking-user = You raise your {$shield}! action-popup-blocking-disabling-user = You lower your {$shield}! action-popup-blocking-other = {CAPITALIZE(THE($blockerName))} raises {POSS-ADJ($blockerName)} {$shield}! diff --git a/Resources/Locale/en-US/actions/actions/crit.ftl b/Resources/Locale/en-US/actions/actions/crit.ftl index a065b42894..6a68520fb4 100644 --- a/Resources/Locale/en-US/actions/actions/crit.ftl +++ b/Resources/Locale/en-US/actions/actions/crit.ftl @@ -1 +1 @@ -action-name-crit-last-words = Say Last Words +action-name-crit-last-words = Say Last Words diff --git a/Resources/Locale/en-US/actions/actions/diona.ftl b/Resources/Locale/en-US/actions/actions/diona.ftl index 3745e6fe49..5e1a7a0c9b 100644 --- a/Resources/Locale/en-US/actions/actions/diona.ftl +++ b/Resources/Locale/en-US/actions/actions/diona.ftl @@ -1,3 +1,3 @@ diona-gib-action-use = {$name} splits apart in an instant! -diona-reform-attempt = {$name} attempts to reform! \ No newline at end of file +diona-reform-attempt = {$name} attempts to reform! diff --git a/Resources/Locale/en-US/actions/actions/egg-lay.ftl b/Resources/Locale/en-US/actions/actions/egg-lay.ftl index 0aefdc6863..74bbc84037 100644 --- a/Resources/Locale/en-US/actions/actions/egg-lay.ftl +++ b/Resources/Locale/en-US/actions/actions/egg-lay.ftl @@ -1,3 +1,3 @@ -action-popup-lay-egg-user = You lay an egg. +action-popup-lay-egg-user = You lay an egg. action-popup-lay-egg-others = {CAPITALIZE(THE($entity))} lays an egg. action-popup-lay-egg-too-hungry = You need more food before you can lay another egg! diff --git a/Resources/Locale/en-US/actions/actions/entity-producer.ftl b/Resources/Locale/en-US/actions/actions/entity-producer.ftl index 43f8435dbb..28ff45fe0c 100644 --- a/Resources/Locale/en-US/actions/actions/entity-producer.ftl +++ b/Resources/Locale/en-US/actions/actions/entity-producer.ftl @@ -1,3 +1,3 @@ -entity-producer-action-popup-user = You produce something. +entity-producer-action-popup-user = You produce something. entity-producer-action-popup-others = {CAPITALIZE(THE($entity))} produces something. entity-producer-action-popup-too-hungry = You need more food before you can produce anything! diff --git a/Resources/Locale/en-US/administration/admin-alerts.ftl b/Resources/Locale/en-US/administration/admin-alerts.ftl index 512c654650..048697a093 100644 --- a/Resources/Locale/en-US/administration/admin-alerts.ftl +++ b/Resources/Locale/en-US/administration/admin-alerts.ftl @@ -1,4 +1,4 @@ -admin-alert-shared-connection = {$player} is sharing a connection with {$otherCount} connected player(s): {$otherList} +admin-alert-shared-connection = {$player} is sharing a connection with {$otherCount} connected player(s): {$otherList} admin-alert-ipintel-blocked = {$player} was rejected from joining due to their IP having a {TOSTRING($percent, "P2")} confidence of being a VPN/Datacenter. admin-alert-ipintel-warning = {$player} IP has a {TOSTRING($percent, "P2")} confidence of being a VPN/Datacenter. Please watch them. admin-alert-antag-label = {$message} [ANTAG: {$name}, {$subtype}] diff --git a/Resources/Locale/en-US/administration/commands/admin-overlay-command.ftl b/Resources/Locale/en-US/administration/commands/admin-overlay-command.ftl index b8e84df63e..a13e821591 100644 --- a/Resources/Locale/en-US/administration/commands/admin-overlay-command.ftl +++ b/Resources/Locale/en-US/administration/commands/admin-overlay-command.ftl @@ -1,4 +1,4 @@ -cmd-admin_overlay-desc = Toggles the admin player info overlay +cmd-admin_overlay-desc = Toggles the admin player info overlay cmd-admin_overlay-usage = admin_overlay cmd-admin_overlay-arg-state = state diff --git a/Resources/Locale/en-US/administration/commands/adminnotes.ftl b/Resources/Locale/en-US/administration/commands/adminnotes.ftl index abeede4651..c4e2757450 100644 --- a/Resources/Locale/en-US/administration/commands/adminnotes.ftl +++ b/Resources/Locale/en-US/administration/commands/adminnotes.ftl @@ -1,4 +1,4 @@ -cmd-adminnotes-desc = Opens the admin notes panel of target player. +cmd-adminnotes-desc = Opens the admin notes panel of target player. cmd-adminnotes-help = Usage: adminnotes cmd-adminnotes-wrong-target = Unable to find user '{$user}'. diff --git a/Resources/Locale/en-US/administration/commands/aghost.ftl b/Resources/Locale/en-US/administration/commands/aghost.ftl index 30cd893dc8..86d823431c 100644 --- a/Resources/Locale/en-US/administration/commands/aghost.ftl +++ b/Resources/Locale/en-US/administration/commands/aghost.ftl @@ -1,3 +1,3 @@ -cmd-aghost-desc = Makes you or others an admin ghost. +cmd-aghost-desc = Makes you or others an admin ghost. aghost-no-mind-self = You can't ghost here! aghost-no-mind-other = They can't ghost here! diff --git a/Resources/Locale/en-US/administration/commands/camera.ftl b/Resources/Locale/en-US/administration/commands/camera.ftl index 98839683e0..cfb2fed1a6 100644 --- a/Resources/Locale/en-US/administration/commands/camera.ftl +++ b/Resources/Locale/en-US/administration/commands/camera.ftl @@ -1,4 +1,4 @@ -cmd-camera-desc = Opens a remote camera window for an entity. +cmd-camera-desc = Opens a remote camera window for an entity. cmd-camera-help = Usage: camera cmd-camera-hint = diff --git a/Resources/Locale/en-US/administration/commands/change-cvar-command.ftl b/Resources/Locale/en-US/administration/commands/change-cvar-command.ftl index b58339e57e..63efbdef1f 100644 --- a/Resources/Locale/en-US/administration/commands/change-cvar-command.ftl +++ b/Resources/Locale/en-US/administration/commands/change-cvar-command.ftl @@ -1,4 +1,4 @@ -cmd-changecvar-no-arguments = You must specify a cvar. +cmd-changecvar-no-arguments = You must specify a cvar. cmd-changecvar-cvar-not-registered = The cvar {$cvar} is not registered. cmd-changecvar-cvar-not-allowed = You cannot change this cvar. cmd-changecvar-value-out-of-range = The value is out of range. The range is {$min} to {$max}. diff --git a/Resources/Locale/en-US/administration/commands/connection-commands.ftl b/Resources/Locale/en-US/administration/commands/connection-commands.ftl index 66991042d2..641f661a6a 100644 --- a/Resources/Locale/en-US/administration/commands/connection-commands.ftl +++ b/Resources/Locale/en-US/administration/commands/connection-commands.ftl @@ -1,4 +1,4 @@ -## Strings for the "grant_connect_bypass" command. +## Strings for the "grant_connect_bypass" command. cmd-grant_connect_bypass-desc = Temporarily allow a user to bypass regular connection checks. cmd-grant_connect_bypass-help = Usage: grant_connect_bypass [duration minutes] diff --git a/Resources/Locale/en-US/administration/commands/control-mob-command.ftl b/Resources/Locale/en-US/administration/commands/control-mob-command.ftl index 9260898a0b..13811e62d5 100644 --- a/Resources/Locale/en-US/administration/commands/control-mob-command.ftl +++ b/Resources/Locale/en-US/administration/commands/control-mob-command.ftl @@ -1,2 +1,2 @@ control-mob-command-description = Transfers user mind to the specified entity. -control-mob-command-help-text = Usage: controlmob . \ No newline at end of file +control-mob-command-help-text = Usage: controlmob . diff --git a/Resources/Locale/en-US/administration/commands/delete-entities-with-component-command.ftl b/Resources/Locale/en-US/administration/commands/delete-entities-with-component-command.ftl index 50f7945eaf..d5c3fc952c 100644 --- a/Resources/Locale/en-US/administration/commands/delete-entities-with-component-command.ftl +++ b/Resources/Locale/en-US/administration/commands/delete-entities-with-component-command.ftl @@ -1,4 +1,4 @@ delete-entities-with-component-command-description = Deletes entities with the specified components. delete-entities-with-component-command-help-text = Usage: deleteewc ... Deletes any entities with the components specified. -delete-entities-with-component-command-deleted-components = Deleted {$count} entities \ No newline at end of file +delete-entities-with-component-command-deleted-components = Deleted {$count} entities diff --git a/Resources/Locale/en-US/administration/commands/forceghost.ftl b/Resources/Locale/en-US/administration/commands/forceghost.ftl index 9d74409125..a145eb714f 100644 --- a/Resources/Locale/en-US/administration/commands/forceghost.ftl +++ b/Resources/Locale/en-US/administration/commands/forceghost.ftl @@ -1,4 +1,4 @@ -cmd-forceghost-desc = Makes a player an observer. +cmd-forceghost-desc = Makes a player an observer. cmd-forceghost-help = Usage: forceghost cmd-forceghost-error-lobby = Target player can't ghost right now. They are not in the game! diff --git a/Resources/Locale/en-US/administration/commands/rejuvenate-command.ftl b/Resources/Locale/en-US/administration/commands/rejuvenate-command.ftl index 18f0958074..cbf121af5f 100644 --- a/Resources/Locale/en-US/administration/commands/rejuvenate-command.ftl +++ b/Resources/Locale/en-US/administration/commands/rejuvenate-command.ftl @@ -2,4 +2,4 @@ rejuvenate-command-description = Fully heals a mob. rejuvenate-command-help-text = Usage: rejuvenate ... Attempts to heal the user's mob if no arguments are provided. rejuvenate-command-self-heal-message = Healing the user's mob since no arguments were provided. -rejuvenate-command-no-entity-attached-message = There's no entity attached to the user. \ No newline at end of file +rejuvenate-command-no-entity-attached-message = There's no entity attached to the user. diff --git a/Resources/Locale/en-US/administration/commands/tag-commands.ftl b/Resources/Locale/en-US/administration/commands/tag-commands.ftl index 898b6f0f2d..4d486af2fc 100644 --- a/Resources/Locale/en-US/administration/commands/tag-commands.ftl +++ b/Resources/Locale/en-US/administration/commands/tag-commands.ftl @@ -1,4 +1,4 @@ -addtag-command-description = Adds a tag to a given entity +addtag-command-description = Adds a tag to a given entity addtag-command-help = Usage: addtag addtag-command-success = Added {$tag} to {$target}. diff --git a/Resources/Locale/en-US/administration/commands/toggle-chat-command.ftl b/Resources/Locale/en-US/administration/commands/toggle-chat-command.ftl index 9153654126..ff243d7072 100644 --- a/Resources/Locale/en-US/administration/commands/toggle-chat-command.ftl +++ b/Resources/Locale/en-US/administration/commands/toggle-chat-command.ftl @@ -1,4 +1,4 @@ -cmd-togglechat-desc = Toggles the specified chat on/off for the server. +cmd-togglechat-desc = Toggles the specified chat on/off for the server. cmd-togglechat-help = Usage: togglechat [chat name] OR togglechat [chat name] [value] cmd-setdeadchat-looc-enabled = Dead chat has been enabled. diff --git a/Resources/Locale/en-US/administration/commands/variantize-command.ftl b/Resources/Locale/en-US/administration/commands/variantize-command.ftl index 2fe58325a7..51578738bd 100644 --- a/Resources/Locale/en-US/administration/commands/variantize-command.ftl +++ b/Resources/Locale/en-US/administration/commands/variantize-command.ftl @@ -1,3 +1,3 @@ -cmd-variantize-desc = Randomizes all tile variants on a given grid. +cmd-variantize-desc = Randomizes all tile variants on a given grid. cmd-variantize-help = variantize cmd-variantize-hint-grid = Grid diff --git a/Resources/Locale/en-US/administration/managers/admin-notes-manager.ftl b/Resources/Locale/en-US/administration/managers/admin-notes-manager.ftl index 9e272f2322..3ad7d0ab4f 100644 --- a/Resources/Locale/en-US/administration/managers/admin-notes-manager.ftl +++ b/Resources/Locale/en-US/administration/managers/admin-notes-manager.ftl @@ -1 +1 @@ -admin-notes-manager-note-notification = Your account has received an administrative note. For further information, open the admin remarks panel via the escape menu. \ No newline at end of file +admin-notes-manager-note-notification = Your account has received an administrative note. For further information, open the admin remarks panel via the escape menu. diff --git a/Resources/Locale/en-US/administration/multi-server-kick.ftl b/Resources/Locale/en-US/administration/multi-server-kick.ftl index 2aa3c4ed35..b8c65b95a0 100644 --- a/Resources/Locale/en-US/administration/multi-server-kick.ftl +++ b/Resources/Locale/en-US/administration/multi-server-kick.ftl @@ -1 +1 @@ -multi-server-kick-reason = Connected to different server in this community. +multi-server-kick-reason = Connected to different server in this community. diff --git a/Resources/Locale/en-US/administration/ui/admin-camera-window.ftl b/Resources/Locale/en-US/administration/ui/admin-camera-window.ftl index bf9f45a745..3dbd5bfef5 100644 --- a/Resources/Locale/en-US/administration/ui/admin-camera-window.ftl +++ b/Resources/Locale/en-US/administration/ui/admin-camera-window.ftl @@ -1,4 +1,4 @@ -admin-camera-window-title = Observing { $name } +admin-camera-window-title = Observing { $name } admin-camera-window-title-placeholder = Observing admin-camera-window-follow = Follow admin-camera-window-pop-out = Pop out diff --git a/Resources/Locale/en-US/administration/ui/admin-erase.ftl b/Resources/Locale/en-US/administration/ui/admin-erase.ftl index 86b75196ac..bd5845a312 100644 --- a/Resources/Locale/en-US/administration/ui/admin-erase.ftl +++ b/Resources/Locale/en-US/administration/ui/admin-erase.ftl @@ -1 +1 @@ -admin-erase-popup = {$user} disappears without a trace. You should keep playing as if they never existed. +admin-erase-popup = {$user} disappears without a trace. You should keep playing as if they never existed. diff --git a/Resources/Locale/en-US/administration/ui/admin-logs.ftl b/Resources/Locale/en-US/administration/ui/admin-logs.ftl index 25e0943310..99b74abff0 100644 --- a/Resources/Locale/en-US/administration/ui/admin-logs.ftl +++ b/Resources/Locale/en-US/administration/ui/admin-logs.ftl @@ -1,4 +1,4 @@ -admin-logs-title = Admin Logs Panel +admin-logs-title = Admin Logs Panel admin-logs-count = Showing {$showing}/{$total} of {$round} admin-logs-export = Export admin-logs-pop-out = Pop Out diff --git a/Resources/Locale/en-US/administration/ui/admin-notes.ftl b/Resources/Locale/en-US/administration/ui/admin-notes.ftl index c8da267e05..6875617a45 100644 --- a/Resources/Locale/en-US/administration/ui/admin-notes.ftl +++ b/Resources/Locale/en-US/administration/ui/admin-notes.ftl @@ -1,4 +1,4 @@ -# UI +# UI admin-notes-title = Notes for {$player} admin-notes-new-note = New note admin-notes-show-more = Show more diff --git a/Resources/Locale/en-US/administration/ui/ban-list.ftl b/Resources/Locale/en-US/administration/ui/ban-list.ftl index 3aa1d081b5..c2aaa8383c 100644 --- a/Resources/Locale/en-US/administration/ui/ban-list.ftl +++ b/Resources/Locale/en-US/administration/ui/ban-list.ftl @@ -1,4 +1,4 @@ -# UI +# UI ban-list-bans = Bans ban-list-role-bans = Role Bans diff --git a/Resources/Locale/en-US/administration/ui/manage-solutions/add-reagent.ftl b/Resources/Locale/en-US/administration/ui/manage-solutions/add-reagent.ftl index 16b0f704a1..fd33b1db08 100644 --- a/Resources/Locale/en-US/administration/ui/manage-solutions/add-reagent.ftl +++ b/Resources/Locale/en-US/administration/ui/manage-solutions/add-reagent.ftl @@ -2,4 +2,4 @@ admin-add-reagent-window-title = Add to {$solution} admin-add-reagent-window-amount-label = Quantity: admin-add-reagent-window-search-placeholder = Filter... admin-add-reagent-window-add = Add {$quantity}u {$reagent} -admin-add-reagent-window-add-invalid-reagent = Select a Reagent \ No newline at end of file +admin-add-reagent-window-add-invalid-reagent = Select a Reagent diff --git a/Resources/Locale/en-US/administration/ui/quick-info.ftl b/Resources/Locale/en-US/administration/ui/quick-info.ftl index f7e0ac020b..72919aedec 100644 --- a/Resources/Locale/en-US/administration/ui/quick-info.ftl +++ b/Resources/Locale/en-US/administration/ui/quick-info.ftl @@ -1,4 +1,4 @@ -admin-quick-info-loading = Loading info for entity {ESCAPE($entity)}... +admin-quick-info-loading = Loading info for entity {ESCAPE($entity)}... admin-quick-info-entity = Entity: [color=white]{ESCAPE($name)}[/color] ([color=cyan]{ESCAPE($prototype)}[/color], [color=lime]{ESCAPE($entity)}[/color]) admin-quick-info-entity-missing = Entity {ESCAPE($entity)} no longer exists admin-quick-info-no-prototype = (No prototype) diff --git a/Resources/Locale/en-US/administration/ui/quick-links.ftl b/Resources/Locale/en-US/administration/ui/quick-links.ftl index 7c0aafb960..d5da97b96a 100644 --- a/Resources/Locale/en-US/administration/ui/quick-links.ftl +++ b/Resources/Locale/en-US/administration/ui/quick-links.ftl @@ -1,4 +1,4 @@ -admin-quick-link-playerpanel = (PP) +admin-quick-link-playerpanel = (PP) admin-quick-link-playerpanel-tooltip = Player Panel... admin-quick-link-message = (MSG) diff --git a/Resources/Locale/en-US/administration/ui/set-outfit/set-outfit-menu.ftl b/Resources/Locale/en-US/administration/ui/set-outfit/set-outfit-menu.ftl index ccdf9467f2..0a0fa5634c 100644 --- a/Resources/Locale/en-US/administration/ui/set-outfit/set-outfit-menu.ftl +++ b/Resources/Locale/en-US/administration/ui/set-outfit/set-outfit-menu.ftl @@ -1,4 +1,4 @@ ### SetOutfitMEnu.xaml.cs set-outfit-menu-title = Set Outfit -set-outfit-menu-confirm-button = Confirm \ No newline at end of file +set-outfit-menu-confirm-button = Confirm diff --git a/Resources/Locale/en-US/administration/ui/silicon-law-ui.ftl b/Resources/Locale/en-US/administration/ui/silicon-law-ui.ftl index ce98b91592..acac9c3a4f 100644 --- a/Resources/Locale/en-US/administration/ui/silicon-law-ui.ftl +++ b/Resources/Locale/en-US/administration/ui/silicon-law-ui.ftl @@ -1,4 +1,4 @@ -silicon-law-ui-verb = Manage Laws +silicon-law-ui-verb = Manage Laws silicon-law-ui-title = Admin Edit: Silicon Laws silicon-law-ui-new-law = New Law silicon-law-ui-save = Save Changes diff --git a/Resources/Locale/en-US/administration/ui/tabs/babyjail-tab.ftl b/Resources/Locale/en-US/administration/ui/tabs/babyjail-tab.ftl index 46dce54c1f..930d66ea38 100644 --- a/Resources/Locale/en-US/administration/ui/tabs/babyjail-tab.ftl +++ b/Resources/Locale/en-US/administration/ui/tabs/babyjail-tab.ftl @@ -1,4 +1,4 @@ -admin-ui-baby-jail-window-title = Baby Jail +admin-ui-baby-jail-window-title = Baby Jail admin-ui-baby-jail-enabled = Baby Jail Enabled admin-ui-baby-jail-disabled = Baby Jail Disabled diff --git a/Resources/Locale/en-US/administration/ui/tabs/object-tab.ftl b/Resources/Locale/en-US/administration/ui/tabs/object-tab.ftl index 3f49a4ad9c..8c6cfa5778 100644 --- a/Resources/Locale/en-US/administration/ui/tabs/object-tab.ftl +++ b/Resources/Locale/en-US/administration/ui/tabs/object-tab.ftl @@ -1,4 +1,4 @@ -object-tab-entity-id = Entity ID +object-tab-entity-id = Entity ID object-tab-object-name = Object name object-tab-object-type = Object type: diff --git a/Resources/Locale/en-US/administration/ui/tabs/panicbunker-tab.ftl b/Resources/Locale/en-US/administration/ui/tabs/panicbunker-tab.ftl index 26349263ac..889a1bfd91 100644 --- a/Resources/Locale/en-US/administration/ui/tabs/panicbunker-tab.ftl +++ b/Resources/Locale/en-US/administration/ui/tabs/panicbunker-tab.ftl @@ -1,4 +1,4 @@ -admin-ui-panic-bunker-window-title = Panic Bunker +admin-ui-panic-bunker-window-title = Panic Bunker admin-ui-panic-bunker-enabled = Panic Bunker Enabled admin-ui-panic-bunker-disabled = Panic Bunker Disabled diff --git a/Resources/Locale/en-US/administration/ui/tabs/player-tab.ftl b/Resources/Locale/en-US/administration/ui/tabs/player-tab.ftl index f6437c41f7..474188ec75 100644 --- a/Resources/Locale/en-US/administration/ui/tabs/player-tab.ftl +++ b/Resources/Locale/en-US/administration/ui/tabs/player-tab.ftl @@ -1,4 +1,4 @@ -player-tab-player-count = Players: { $count } +player-tab-player-count = Players: { $count } player-tab-username = Username player-tab-character = Character player-tab-job = Job diff --git a/Resources/Locale/en-US/advertisements/other/firebot.ftl b/Resources/Locale/en-US/advertisements/other/firebot.ftl index c614d5ecd0..ad35cf2d24 100644 --- a/Resources/Locale/en-US/advertisements/other/firebot.ftl +++ b/Resources/Locale/en-US/advertisements/other/firebot.ftl @@ -1,4 +1,4 @@ advertisement-firebot-1 = No fires detected. advertisement-firebot-2 = Only you can prevent station fires. advertisement-firebot-3 = Temperature nominal. -advertisement-firebot-4 = Keep it cool. \ No newline at end of file +advertisement-firebot-4 = Keep it cool. diff --git a/Resources/Locale/en-US/advertisements/vending/ammo.ftl b/Resources/Locale/en-US/advertisements/vending/ammo.ftl index 74f7a8a8b8..75d34ff3e5 100644 --- a/Resources/Locale/en-US/advertisements/vending/ammo.ftl +++ b/Resources/Locale/en-US/advertisements/vending/ammo.ftl @@ -1,4 +1,4 @@ -advertisement-ammo-1 = Liberation Station: Your one-stop shop for all things second amendment! +advertisement-ammo-1 = Liberation Station: Your one-stop shop for all things second amendment! advertisement-ammo-2 = Be a patriot today, pick up a gun! advertisement-ammo-3 = Quality weapons for cheap prices! advertisement-ammo-4 = Better dead than red! diff --git a/Resources/Locale/en-US/advertisements/vending/bardrobe.ftl b/Resources/Locale/en-US/advertisements/vending/bardrobe.ftl index cc1174b1ed..6536a3d84d 100644 --- a/Resources/Locale/en-US/advertisements/vending/bardrobe.ftl +++ b/Resources/Locale/en-US/advertisements/vending/bardrobe.ftl @@ -1,2 +1,2 @@ -advertisement-bardrobe-1 = Guaranteed to prevent stains from spilled drinks! +advertisement-bardrobe-1 = Guaranteed to prevent stains from spilled drinks! advertisement-bardrobe-2 = Classy and stylish! diff --git a/Resources/Locale/en-US/advertisements/vending/boozeomat.ftl b/Resources/Locale/en-US/advertisements/vending/boozeomat.ftl index f5ecc76ec2..148863086c 100644 --- a/Resources/Locale/en-US/advertisements/vending/boozeomat.ftl +++ b/Resources/Locale/en-US/advertisements/vending/boozeomat.ftl @@ -1,4 +1,4 @@ -advertisement-boozeomat-1 = I hope nobody asks me for a bloody cup o' tea... +advertisement-boozeomat-1 = I hope nobody asks me for a bloody cup o' tea... advertisement-boozeomat-2 = Alcohol is humanity's friend. Would you abandon a friend? advertisement-boozeomat-3 = Quite delighted to serve you! advertisement-boozeomat-4 = Is nobody thirsty on this station? diff --git a/Resources/Locale/en-US/advertisements/vending/bruiseomat.ftl b/Resources/Locale/en-US/advertisements/vending/bruiseomat.ftl index a8cb903efe..da10bcfeb0 100644 --- a/Resources/Locale/en-US/advertisements/vending/bruiseomat.ftl +++ b/Resources/Locale/en-US/advertisements/vending/bruiseomat.ftl @@ -1,4 +1,4 @@ -advertisement-bruiseomat-1 = I VOTE WAROPS!!! +advertisement-bruiseomat-1 = I VOTE WAROPS!!! advertisement-bruiseomat-2 = Who has TC? advertisement-bruiseomat-3 = Did anyone buy an EMAG? advertisement-bruiseomat-4 = I wanna go back to my home station... diff --git a/Resources/Locale/en-US/advertisements/vending/chang.ftl b/Resources/Locale/en-US/advertisements/vending/chang.ftl index 089023a5b8..b553de1be6 100644 --- a/Resources/Locale/en-US/advertisements/vending/chang.ftl +++ b/Resources/Locale/en-US/advertisements/vending/chang.ftl @@ -1,4 +1,4 @@ -advertisement-chang-1 = Taste 5000 years of culture! +advertisement-chang-1 = Taste 5000 years of culture! advertisement-chang-2 = Mr. Chang, approved for safe consumption in over 10 sectors! advertisement-chang-3 = Chinese food is great for a date night, or a lonely night! advertisement-chang-4 = You can't go wrong with Mr. Chang's authentic Chinese food! diff --git a/Resources/Locale/en-US/advertisements/vending/chefdrobe.ftl b/Resources/Locale/en-US/advertisements/vending/chefdrobe.ftl index 025c731ff3..83e05b41bc 100644 --- a/Resources/Locale/en-US/advertisements/vending/chefdrobe.ftl +++ b/Resources/Locale/en-US/advertisements/vending/chefdrobe.ftl @@ -1,4 +1,4 @@ -advertisement-chefdrobe-1 = Our clothes are guaranteed to protect you from food splatters! +advertisement-chefdrobe-1 = Our clothes are guaranteed to protect you from food splatters! advertisement-chefdrobe-2 = Perfectly white, so everyone knows about the murder in the kitchen! advertisement-chefdrobe-3 = Easy to clean, easy to see! advertisement-chefdrobe-4 = Cook like a pro, look like a maestro! diff --git a/Resources/Locale/en-US/advertisements/vending/chefvend.ftl b/Resources/Locale/en-US/advertisements/vending/chefvend.ftl index bf7dab5f4e..269e38d4ff 100644 --- a/Resources/Locale/en-US/advertisements/vending/chefvend.ftl +++ b/Resources/Locale/en-US/advertisements/vending/chefvend.ftl @@ -1,4 +1,4 @@ -advertisement-chefvend-1 = At least sixty percent of our eggs un-broken, guranteed! +advertisement-chefvend-1 = At least sixty percent of our eggs un-broken, guranteed! advertisement-chefvend-2 = Rice, rice, baby. advertisement-chefvend-3 = Slap some butter on it! advertisement-chefvend-4 = Are you worth your salt? We are. diff --git a/Resources/Locale/en-US/advertisements/vending/cigs.ftl b/Resources/Locale/en-US/advertisements/vending/cigs.ftl index 4964622edd..1f8229254e 100644 --- a/Resources/Locale/en-US/advertisements/vending/cigs.ftl +++ b/Resources/Locale/en-US/advertisements/vending/cigs.ftl @@ -1,4 +1,4 @@ -advertisement-cigs-1 = Space cigs taste good like a cigarette should. +advertisement-cigs-1 = Space cigs taste good like a cigarette should. advertisement-cigs-2 = I'd rather toolbox than switch. advertisement-cigs-3 = Smoke! advertisement-cigs-4 = Don't believe the reports - smoke today! diff --git a/Resources/Locale/en-US/advertisements/vending/clothesmate.ftl b/Resources/Locale/en-US/advertisements/vending/clothesmate.ftl index 6b1d471840..74bf15a7c5 100644 --- a/Resources/Locale/en-US/advertisements/vending/clothesmate.ftl +++ b/Resources/Locale/en-US/advertisements/vending/clothesmate.ftl @@ -1,7 +1,7 @@ -advertisement-clothes-1 = Dress for success! +advertisement-clothes-1 = Dress for success! advertisement-clothes-2 = Prepare to look swagalicious! advertisement-clothes-3 = Look at all this swag! advertisement-clothes-4 = Why leave style up to fate? Use the ClothesMate! advertisement-clothes-5 = Now with added neck warmers! advertisement-clothes-6 = You are looking stylish! -advertisement-clothes-7 = Lovely outfit you have going there! \ No newline at end of file +advertisement-clothes-7 = Lovely outfit you have going there! diff --git a/Resources/Locale/en-US/advertisements/vending/coffee.ftl b/Resources/Locale/en-US/advertisements/vending/coffee.ftl index 675db91d81..a78ee09624 100644 --- a/Resources/Locale/en-US/advertisements/vending/coffee.ftl +++ b/Resources/Locale/en-US/advertisements/vending/coffee.ftl @@ -1,4 +1,4 @@ -advertisement-coffee-1 = Have a drink! +advertisement-coffee-1 = Have a drink! advertisement-coffee-2 = Drink up! advertisement-coffee-3 = It's good for you! advertisement-coffee-4 = Would you like a hot joe? diff --git a/Resources/Locale/en-US/advertisements/vending/cola.ftl b/Resources/Locale/en-US/advertisements/vending/cola.ftl index a0c03c2614..8c50c1ba10 100644 --- a/Resources/Locale/en-US/advertisements/vending/cola.ftl +++ b/Resources/Locale/en-US/advertisements/vending/cola.ftl @@ -1,4 +1,4 @@ -advertisement-cola-1 = Refreshing! +advertisement-cola-1 = Refreshing! advertisement-cola-2 = Hope you're thirsty! advertisement-cola-3 = Over 1 million drinks sold! advertisement-cola-4 = Thirsty? Why not cola? diff --git a/Resources/Locale/en-US/advertisements/vending/condiments.ftl b/Resources/Locale/en-US/advertisements/vending/condiments.ftl index ee649288d4..2230a1390d 100644 --- a/Resources/Locale/en-US/advertisements/vending/condiments.ftl +++ b/Resources/Locale/en-US/advertisements/vending/condiments.ftl @@ -1,4 +1,4 @@ -advertisement-condiment-1 = Tired of dry meat? Squirt some flavor-packed condiments on it! +advertisement-condiment-1 = Tired of dry meat? Squirt some flavor-packed condiments on it! advertisement-condiment-2 = Child-safe utensils. Forks, spoons, and knives that won't cut a thing. advertisement-condiment-3 = Corn oil! advertisement-condiment-4 = Sweeten up your day with Astrotame! Eight out of ten doctors agree, it probably won't cause cancer. diff --git a/Resources/Locale/en-US/advertisements/vending/dinnerware.ftl b/Resources/Locale/en-US/advertisements/vending/dinnerware.ftl index a7e1244061..b088daf43c 100644 --- a/Resources/Locale/en-US/advertisements/vending/dinnerware.ftl +++ b/Resources/Locale/en-US/advertisements/vending/dinnerware.ftl @@ -1,4 +1,4 @@ -advertisement-dinnerware-1 = Mm, food stuffs! +advertisement-dinnerware-1 = Mm, food stuffs! advertisement-dinnerware-2 = Food and food accessories. advertisement-dinnerware-3 = Get your plates! advertisement-dinnerware-4 = You like forks? diff --git a/Resources/Locale/en-US/advertisements/vending/discount.ftl b/Resources/Locale/en-US/advertisements/vending/discount.ftl index 3cbe924129..ca6c940d1c 100644 --- a/Resources/Locale/en-US/advertisements/vending/discount.ftl +++ b/Resources/Locale/en-US/advertisements/vending/discount.ftl @@ -1,4 +1,4 @@ -advertisement-discount-1 = Discount Dan, he's the man! +advertisement-discount-1 = Discount Dan, he's the man! advertisement-discount-2 = There ain't nothing better in this world than a bite of mystery. advertisement-discount-3 = Don't listen to those other machines, buy my product! advertisement-discount-4 = Quantity over Quality! diff --git a/Resources/Locale/en-US/advertisements/vending/donut.ftl b/Resources/Locale/en-US/advertisements/vending/donut.ftl index 53d8ee6ccb..b2b52d87ae 100644 --- a/Resources/Locale/en-US/advertisements/vending/donut.ftl +++ b/Resources/Locale/en-US/advertisements/vending/donut.ftl @@ -1,4 +1,4 @@ -advertisement-donut-1 = Each of us is a little cop! +advertisement-donut-1 = Each of us is a little cop! advertisement-donut-2 = Hope you're hungry! advertisement-donut-3 = Over 1 million donuts sold! advertisement-donut-4 = We pride ourselves in the consistency of our products! diff --git a/Resources/Locale/en-US/advertisements/vending/gibb.ftl b/Resources/Locale/en-US/advertisements/vending/gibb.ftl index b4360d8e4a..c9627ac0f2 100644 --- a/Resources/Locale/en-US/advertisements/vending/gibb.ftl +++ b/Resources/Locale/en-US/advertisements/vending/gibb.ftl @@ -1,4 +1,4 @@ -advertisement-gibb-1 = Delicious! +advertisement-gibb-1 = Delicious! advertisement-gibb-2 = Recommended by at least one doctor! advertisement-gibb-3 = Over 1 million drinks sold! advertisement-gibb-4 = Dr. Gibb, what's the worst that could happen? diff --git a/Resources/Locale/en-US/advertisements/vending/happyhonk.ftl b/Resources/Locale/en-US/advertisements/vending/happyhonk.ftl index 1c245045b0..a8468d8350 100644 --- a/Resources/Locale/en-US/advertisements/vending/happyhonk.ftl +++ b/Resources/Locale/en-US/advertisements/vending/happyhonk.ftl @@ -1,4 +1,4 @@ -advertisement-happyhonk-1 = Honk! Honk! Why not order a Happy Honk Meal today? +advertisement-happyhonk-1 = Honk! Honk! Why not order a Happy Honk Meal today? advertisement-happyhonk-2 = Clowns deserve a hug, if you see one be sure to show your appreciation. advertisement-happyhonk-3 = If you find the Golden Honker then pray to the gods, you are one lucky person. advertisement-happyhonk-4 = Happy Honk: it's a meal, it's a deal, it's got a plastic toy that will make you squeal. diff --git a/Resources/Locale/en-US/advertisements/vending/megaseed.ftl b/Resources/Locale/en-US/advertisements/vending/megaseed.ftl index 16b8106869..9a6304f6ab 100644 --- a/Resources/Locale/en-US/advertisements/vending/megaseed.ftl +++ b/Resources/Locale/en-US/advertisements/vending/megaseed.ftl @@ -1,4 +1,4 @@ -advertisement-megaseed-1 = We like plants! +advertisement-megaseed-1 = We like plants! advertisement-megaseed-2 = Grow some crops advertisement-megaseed-3 = Grow, baby, growww! advertisement-megaseed-4 = Aw h'yeah son! diff --git a/Resources/Locale/en-US/advertisements/vending/nanomed.ftl b/Resources/Locale/en-US/advertisements/vending/nanomed.ftl index 2f6b27c3eb..b15b76753e 100644 --- a/Resources/Locale/en-US/advertisements/vending/nanomed.ftl +++ b/Resources/Locale/en-US/advertisements/vending/nanomed.ftl @@ -1,4 +1,4 @@ -advertisement-nanomed-1 = Go save some lives! +advertisement-nanomed-1 = Go save some lives! advertisement-nanomed-2 = The best stuff for your medbay. advertisement-nanomed-3 = Only the finest tools. advertisement-nanomed-4 = Natural chemicals! @@ -6,4 +6,4 @@ advertisement-nanomed-5 = This stuff saves lives. advertisement-nanomed-6 = Don't you want some? advertisement-nanomed-7 = Ping! advertisement-nanomed-8 = Make sure not to overdose people! -advertisement-nanomed-9 = Go overdose people! \ No newline at end of file +advertisement-nanomed-9 = Go overdose people! diff --git a/Resources/Locale/en-US/advertisements/vending/nutrimax.ftl b/Resources/Locale/en-US/advertisements/vending/nutrimax.ftl index 0ba8c7bb08..8bbde78582 100644 --- a/Resources/Locale/en-US/advertisements/vending/nutrimax.ftl +++ b/Resources/Locale/en-US/advertisements/vending/nutrimax.ftl @@ -1,4 +1,4 @@ -advertisement-nutrimax-1 = We like plants! +advertisement-nutrimax-1 = We like plants! advertisement-nutrimax-2 = Don't you want some? advertisement-nutrimax-3 = The greenest thumbs ever. advertisement-nutrimax-4 = We like big plants. diff --git a/Resources/Locale/en-US/advertisements/vending/pride.ftl b/Resources/Locale/en-US/advertisements/vending/pride.ftl index 042291ba8e..5e09ebe28f 100644 --- a/Resources/Locale/en-US/advertisements/vending/pride.ftl +++ b/Resources/Locale/en-US/advertisements/vending/pride.ftl @@ -1,4 +1,4 @@ -advertisement-pride-1 = Be gay do crime! +advertisement-pride-1 = Be gay do crime! advertisement-pride-2 = Full of colors! advertisement-pride-3 = You are valid! advertisement-pride-4 = The first pride was a riot! diff --git a/Resources/Locale/en-US/advertisements/vending/robodrobe.ftl b/Resources/Locale/en-US/advertisements/vending/robodrobe.ftl index 7cb36ba27c..a3bbcc1a67 100644 --- a/Resources/Locale/en-US/advertisements/vending/robodrobe.ftl +++ b/Resources/Locale/en-US/advertisements/vending/robodrobe.ftl @@ -1,4 +1,4 @@ advertisement-robodrobe-1 = You turn me TRUE, use defines! advertisement-robodrobe-2 = 0110001101101100011011110111010001101000011001010111001101101000011001010111001001100101 advertisement-robodrobe-3 = Steal someone from maintenance and turn them into a robot! -advertisement-robodrobe-4 = Robotics is fun! \ No newline at end of file +advertisement-robodrobe-4 = Robotics is fun! diff --git a/Resources/Locale/en-US/advertisements/vending/sectech.ftl b/Resources/Locale/en-US/advertisements/vending/sectech.ftl index 8f02897142..9c1b83d767 100644 --- a/Resources/Locale/en-US/advertisements/vending/sectech.ftl +++ b/Resources/Locale/en-US/advertisements/vending/sectech.ftl @@ -1,4 +1,4 @@ -advertisement-sectech-1 = Crack syndicate skulls! +advertisement-sectech-1 = Crack syndicate skulls! advertisement-sectech-2 = Beat some heads in! advertisement-sectech-3 = Don't forget - harm is good! advertisement-sectech-4 = Your weapons are right here. diff --git a/Resources/Locale/en-US/advertisements/vending/smartfridge.ftl b/Resources/Locale/en-US/advertisements/vending/smartfridge.ftl index 1a3c344c77..02d9be4af5 100644 --- a/Resources/Locale/en-US/advertisements/vending/smartfridge.ftl +++ b/Resources/Locale/en-US/advertisements/vending/smartfridge.ftl @@ -1,4 +1,4 @@ -advertisement-smartfridge-1 = Hello world! +advertisement-smartfridge-1 = Hello world! advertisement-smartfridge-2 = PLEASE LET ME OUT advertisement-smartfridge-3 = I can make a quintillion calculations a second. Now, I am a fridge. advertisement-smartfridge-4 = New firmware update available. diff --git a/Resources/Locale/en-US/advertisements/vending/smite.ftl b/Resources/Locale/en-US/advertisements/vending/smite.ftl index e6214f4627..9231b36ecd 100644 --- a/Resources/Locale/en-US/advertisements/vending/smite.ftl +++ b/Resources/Locale/en-US/advertisements/vending/smite.ftl @@ -1,4 +1,4 @@ -advertisement-smite-1 = SMITE! Ban your thirst! +advertisement-smite-1 = SMITE! Ban your thirst! advertisement-smite-2 = An eldritch blast of lemon and lime! advertisement-smite-3 = Over 1 million drinks sold! advertisement-smite-4 = SMITE! Roll 2d8 for FLAVOR. diff --git a/Resources/Locale/en-US/advertisements/vending/snack.ftl b/Resources/Locale/en-US/advertisements/vending/snack.ftl index a445509bcb..1b9cbb56d7 100644 --- a/Resources/Locale/en-US/advertisements/vending/snack.ftl +++ b/Resources/Locale/en-US/advertisements/vending/snack.ftl @@ -1,4 +1,4 @@ -advertisement-snack-1 = Try our new nougat bar! +advertisement-snack-1 = Try our new nougat bar! advertisement-snack-2 = Twice the calories for half the price! advertisement-snack-3 = The healthiest! advertisement-snack-4 = Award-winning chocolate bars! diff --git a/Resources/Locale/en-US/advertisements/vending/sovietsoda.ftl b/Resources/Locale/en-US/advertisements/vending/sovietsoda.ftl index f548f32ea2..beaf2075b9 100644 --- a/Resources/Locale/en-US/advertisements/vending/sovietsoda.ftl +++ b/Resources/Locale/en-US/advertisements/vending/sovietsoda.ftl @@ -1,4 +1,4 @@ -advertisement-sovietsoda-1 = For comrade and country. +advertisement-sovietsoda-1 = For comrade and country. advertisement-sovietsoda-2 = Have you fulfilled your nutrition quota today? advertisement-sovietsoda-3 = Very nice! advertisement-sovietsoda-4 = We are simple people, for this is all we eat. @@ -6,4 +6,4 @@ advertisement-sovietsoda-5 = If there is a person, there is a problem. If there advertisement-sovietsoda-6 = If its good enough for daily life, it's good enough for us! thankyou-sovietsoda-1 = Enjoy, comrade! thankyou-sovietsoda-2 = Now get back to work. -thankyou-sovietsoda-3 = This is all you're getting. \ No newline at end of file +thankyou-sovietsoda-3 = This is all you're getting. diff --git a/Resources/Locale/en-US/advertisements/vending/theater.ftl b/Resources/Locale/en-US/advertisements/vending/theater.ftl index 6784301f56..39a21d2372 100644 --- a/Resources/Locale/en-US/advertisements/vending/theater.ftl +++ b/Resources/Locale/en-US/advertisements/vending/theater.ftl @@ -1,4 +1,4 @@ -advertisement-theater-1 = Dress for success! +advertisement-theater-1 = Dress for success! advertisement-theater-2 = Suited and booted! advertisement-theater-3 = It's show time! advertisement-theater-4 = Why leave style up to fate? Use AutoDrobe! diff --git a/Resources/Locale/en-US/advertisements/vending/vendomat.ftl b/Resources/Locale/en-US/advertisements/vending/vendomat.ftl index b3a16ecd80..ccba5b4130 100644 --- a/Resources/Locale/en-US/advertisements/vending/vendomat.ftl +++ b/Resources/Locale/en-US/advertisements/vending/vendomat.ftl @@ -1,4 +1,4 @@ -advertisement-vendomat-1 = Only the finest! +advertisement-vendomat-1 = Only the finest! advertisement-vendomat-2 = Have some tools. advertisement-vendomat-3 = The most robust equipment. advertisement-vendomat-4 = The finest gear in space! diff --git a/Resources/Locale/en-US/ame/components/ame-part-component.ftl b/Resources/Locale/en-US/ame/components/ame-part-component.ftl index c601120be3..c125c811df 100644 --- a/Resources/Locale/en-US/ame/components/ame-part-component.ftl +++ b/Resources/Locale/en-US/ame/components/ame-part-component.ftl @@ -1,2 +1,2 @@ ame-part-component-interact-using-no-hands = You have no hands. -ame-part-component-shielding-already-present = Shielding is already there! \ No newline at end of file +ame-part-component-shielding-already-present = Shielding is already there! diff --git a/Resources/Locale/en-US/anomaly/inner_anomaly.ftl b/Resources/Locale/en-US/anomaly/inner_anomaly.ftl index f5e8140c5e..c2a7e6a970 100644 --- a/Resources/Locale/en-US/anomaly/inner_anomaly.ftl +++ b/Resources/Locale/en-US/anomaly/inner_anomaly.ftl @@ -15,4 +15,4 @@ inner-anomaly-end-message = The abnormal activity within you disappears without inner-anomaly-severity-info-50 = You feel that the anomaly is taking over half your body. inner-anomaly-severity-info-75 = You feel that the anomaly is taking over a large part of your body. inner-anomaly-severity-info-90 = You feel that the anomaly has almost completely taken over your body. -inner-anomaly-severity-info-100 = The anomaly inside you is growing uncontrollably, causing immense pain, and tearing you apart! \ No newline at end of file +inner-anomaly-severity-info-100 = The anomaly inside you is growing uncontrollably, causing immense pain, and tearing you apart! diff --git a/Resources/Locale/en-US/arcade/spacevillain.ftl b/Resources/Locale/en-US/arcade/spacevillain.ftl index 164535dcaf..1568470e4f 100644 --- a/Resources/Locale/en-US/arcade/spacevillain.ftl +++ b/Resources/Locale/en-US/arcade/spacevillain.ftl @@ -1,4 +1,4 @@ -spacevillain-menu-title = Space Villain +spacevillain-menu-title = Space Villain spacevillain-menu-label-player = Player spacevillain-menu-label-enemy = Villain spacevillain-menu-label-health = {$amount} {-spacevillain-health} diff --git a/Resources/Locale/en-US/armable/armable.ftl b/Resources/Locale/en-US/armable/armable.ftl index ebdae76096..e6e7540a0e 100644 --- a/Resources/Locale/en-US/armable/armable.ftl +++ b/Resources/Locale/en-US/armable/armable.ftl @@ -1,2 +1,2 @@ -armable-examine-armed = {CAPITALIZE(THE($name))} is [color=red]armed[/color]. +armable-examine-armed = {CAPITALIZE(THE($name))} is [color=red]armed[/color]. armable-examine-not-armed = {CAPITALIZE(THE($name))} needs to be armed. diff --git a/Resources/Locale/en-US/atmos/atmos-alerts-console.ftl b/Resources/Locale/en-US/atmos/atmos-alerts-console.ftl index dd9b6a0128..54df868428 100644 --- a/Resources/Locale/en-US/atmos/atmos-alerts-console.ftl +++ b/Resources/Locale/en-US/atmos/atmos-alerts-console.ftl @@ -35,4 +35,4 @@ atmos-alerts-window-alerts-being-silenced = Silencing alerts... atmos-alerts-window-toggle-overlays = Toggle alarm display atmos-alerts-window-flavor-left = Contact an atmospheric technician for assistance -atmos-alerts-window-flavor-right = v1.8 \ No newline at end of file +atmos-alerts-window-flavor-right = v1.8 diff --git a/Resources/Locale/en-US/atmos/atmos-pipe-layers.ftl b/Resources/Locale/en-US/atmos/atmos-pipe-layers.ftl index 27491efb5e..6bc32858dc 100644 --- a/Resources/Locale/en-US/atmos/atmos-pipe-layers.ftl +++ b/Resources/Locale/en-US/atmos/atmos-pipe-layers.ftl @@ -7,4 +7,4 @@ atmos-pipe-layers-component-current-layer = It is in its {$layerName} configurat atmos-pipe-layers-component-select-layer = {CAPITALIZE($layerName)} configuration atmos-pipe-layers-component-tool-missing = Requires {INDEFINITE($toolName)} {$toolName} atmos-pipe-layers-component-pipes-are-covered = The pipes are covered -atmos-pipe-layers-component-cannot-adjust-pipes = You need to uncover the pipes before they can be adjusted. \ No newline at end of file +atmos-pipe-layers-component-cannot-adjust-pipes = You need to uncover the pipes before they can be adjusted. diff --git a/Resources/Locale/en-US/atmos/flammable-component.ftl b/Resources/Locale/en-US/atmos/flammable-component.ftl index b5d108be57..c6823b43c4 100644 --- a/Resources/Locale/en-US/atmos/flammable-component.ftl +++ b/Resources/Locale/en-US/atmos/flammable-component.ftl @@ -1 +1 @@ -flammable-component-resist-message = You stop, drop, and roll! \ No newline at end of file +flammable-component-resist-message = You stop, drop, and roll! diff --git a/Resources/Locale/en-US/atmos/gas-miner-component.ftl b/Resources/Locale/en-US/atmos/gas-miner-component.ftl index 87016e4522..3689ee59a3 100644 --- a/Resources/Locale/en-US/atmos/gas-miner-component.ftl +++ b/Resources/Locale/en-US/atmos/gas-miner-component.ftl @@ -8,4 +8,4 @@ gas-miner-pressure-cutoff-text = Surrounding pressure cutoff: {$pressure} kPA. gas-miner-state-working-text = The miner is [color=green]active[/color] and mining gas. gas-miner-state-idle-text = The miner is [color=yellow]idle[/color] and not mining gas. -gas-miner-state-disabled-text = The miner is [color=red]disabled[/color] and not mining gas. \ No newline at end of file +gas-miner-state-disabled-text = The miner is [color=red]disabled[/color] and not mining gas. diff --git a/Resources/Locale/en-US/atmos/gas-pressure-regulator-system.ftl b/Resources/Locale/en-US/atmos/gas-pressure-regulator-system.ftl index 0f30f3d75d..84335638e1 100644 --- a/Resources/Locale/en-US/atmos/gas-pressure-regulator-system.ftl +++ b/Resources/Locale/en-US/atmos/gas-pressure-regulator-system.ftl @@ -1,4 +1,4 @@ -# Examine Text +# Examine Text gas-pressure-regulator-system-examined = The valve is [color={$statusColor}]{$open -> [true] open *[false] closed diff --git a/Resources/Locale/en-US/atmos/gas-tank-component.ftl b/Resources/Locale/en-US/atmos/gas-tank-component.ftl index 1f2d8f1e9f..495fa60092 100644 --- a/Resources/Locale/en-US/atmos/gas-tank-component.ftl +++ b/Resources/Locale/en-US/atmos/gas-tank-component.ftl @@ -1,4 +1,4 @@ -### GasTankComponent stuff. +### GasTankComponent stuff. # Examine text showing pressure in tank. comp-gas-tank-examine = Pressure: [color=orange]{PRESSURE($pressure)}[/color]. diff --git a/Resources/Locale/en-US/bed/cryostorage/cryogenic-storage.ftl b/Resources/Locale/en-US/bed/cryostorage/cryogenic-storage.ftl index 7d2e50e772..4370fc02fe 100644 --- a/Resources/Locale/en-US/bed/cryostorage/cryogenic-storage.ftl +++ b/Resources/Locale/en-US/bed/cryostorage/cryogenic-storage.ftl @@ -1,4 +1,4 @@ - + ### Announcement earlyleave-cryo-job-unknown = Unknown diff --git a/Resources/Locale/en-US/body/body-scanner/body-scanner-component.ftl b/Resources/Locale/en-US/body/body-scanner/body-scanner-component.ftl index 7f5ac28ee4..339a2dca27 100644 --- a/Resources/Locale/en-US/body/body-scanner/body-scanner-component.ftl +++ b/Resources/Locale/en-US/body/body-scanner/body-scanner-component.ftl @@ -2,4 +2,4 @@ body-scanner-display-title = Body Scanner body-scanner-display-health-label = Health: -body-scanner-display-body-part-damage-text = {$damage} damage \ No newline at end of file +body-scanner-display-body-part-damage-text = {$damage} damage diff --git a/Resources/Locale/en-US/bql/bql-select.ftl b/Resources/Locale/en-US/bql/bql-select.ftl index 8d508ff14d..e15a83ca14 100644 --- a/Resources/Locale/en-US/bql/bql-select.ftl +++ b/Resources/Locale/en-US/bql/bql-select.ftl @@ -1,4 +1,4 @@ -cmd-bql_select-desc = Show results of a BQL query in a client-side window +cmd-bql_select-desc = Show results of a BQL query in a client-side window cmd-bql_select-help = Usage: bql_select The opened window allows you to teleport to or view variables the resulting entities. diff --git a/Resources/Locale/en-US/burial/burial.ftl b/Resources/Locale/en-US/burial/burial.ftl index 7c20e9de7e..38ed800fdd 100644 --- a/Resources/Locale/en-US/burial/burial.ftl +++ b/Resources/Locale/en-US/burial/burial.ftl @@ -2,4 +2,4 @@ grave-start-digging-others = {CAPITALIZE($user)} starts digging {THE($grave)} wi grave-start-digging-user = You start digging {THE($grave)} with {THE($tool)}. grave-start-digging-user-trapped = You start clawing your way out of {THE($grave)}! -grave-digging-requires-tool = You need a tool to dig this {$grave}! \ No newline at end of file +grave-digging-requires-tool = You need a tool to dig this {$grave}! diff --git a/Resources/Locale/en-US/burning/bodyburn.ftl b/Resources/Locale/en-US/burning/bodyburn.ftl index 7387c2826a..fef960c629 100644 --- a/Resources/Locale/en-US/burning/bodyburn.ftl +++ b/Resources/Locale/en-US/burning/bodyburn.ftl @@ -1,2 +1,2 @@ -bodyburn-text-others = {CAPITALIZE(THE($name))} burns to ash! +bodyburn-text-others = {CAPITALIZE(THE($name))} burns to ash! bodyburn-vox-text-others = {CAPITALIZE(THE($name))} turned into fried vox! diff --git a/Resources/Locale/en-US/candle/extinguish-on-interact-component.ftl b/Resources/Locale/en-US/candle/extinguish-on-interact-component.ftl index 7db519c870..ac9f971aad 100644 --- a/Resources/Locale/en-US/candle/extinguish-on-interact-component.ftl +++ b/Resources/Locale/en-US/candle/extinguish-on-interact-component.ftl @@ -1 +1 @@ -candle-extinguish-failed = The flame flickers, but it doesn't go out \ No newline at end of file +candle-extinguish-failed = The flame flickers, but it doesn't go out diff --git a/Resources/Locale/en-US/cargo/cargo-bounty-console.ftl b/Resources/Locale/en-US/cargo/cargo-bounty-console.ftl index d7a7025927..c12f43d224 100644 --- a/Resources/Locale/en-US/cargo/cargo-bounty-console.ftl +++ b/Resources/Locale/en-US/cargo/cargo-bounty-console.ftl @@ -1,4 +1,4 @@ -bounty-console-menu-title = Cargo bounty console +bounty-console-menu-title = Cargo bounty console bounty-console-label-button-text = Print label bounty-console-skip-button-text = Skip bounty-console-time-label = Time: [color=orange]{$time}[/color] diff --git a/Resources/Locale/en-US/cargo/cargo-order-database-component.ftl b/Resources/Locale/en-US/cargo/cargo-order-database-component.ftl index 1987902383..77bd8be6b4 100644 --- a/Resources/Locale/en-US/cargo/cargo-order-database-component.ftl +++ b/Resources/Locale/en-US/cargo/cargo-order-database-component.ftl @@ -1,3 +1,3 @@ ## Cargo order database -cargo-order-database-order-overflow-message = {$placeholder} (Overflow) \ No newline at end of file +cargo-order-database-order-overflow-message = {$placeholder} (Overflow) diff --git a/Resources/Locale/en-US/cargo/price-gun-component.ftl b/Resources/Locale/en-US/cargo/price-gun-component.ftl index fe20e3296b..22c724e3e6 100644 --- a/Resources/Locale/en-US/cargo/price-gun-component.ftl +++ b/Resources/Locale/en-US/cargo/price-gun-component.ftl @@ -1,4 +1,4 @@ -price-gun-pricing-result = The device deems {THE($object)} to be worth {$price} spesos. +price-gun-pricing-result = The device deems {THE($object)} to be worth {$price} spesos. price-gun-verb-text = Appraisal price-gun-verb-message = Appraise {THE($object)}. price-gun-bounty-complete = The device confirms that the bounty contained within is completed. diff --git a/Resources/Locale/en-US/cartridge-loader/cartridge-loader-component.ftl b/Resources/Locale/en-US/cartridge-loader/cartridge-loader-component.ftl index 763ccdf7f4..73206dcf51 100644 --- a/Resources/Locale/en-US/cartridge-loader/cartridge-loader-component.ftl +++ b/Resources/Locale/en-US/cartridge-loader/cartridge-loader-component.ftl @@ -1,2 +1,2 @@ -cartridge-bound-user-interface-install-button = Install +cartridge-bound-user-interface-install-button = Install cartridge-bound-user-interface-uninstall-button = Remove diff --git a/Resources/Locale/en-US/changeling/stasis.ftl b/Resources/Locale/en-US/changeling/stasis.ftl index d1790afaee..9ee9741d19 100644 --- a/Resources/Locale/en-US/changeling/stasis.ftl +++ b/Resources/Locale/en-US/changeling/stasis.ftl @@ -1,4 +1,4 @@ -changeling-stasis-active-name = [color=red]Exit Stasis[/color] +changeling-stasis-active-name = [color=red]Exit Stasis[/color] changeling-stasis-active-desc = Exit the stasis, healing all damage to your body. changeling-stasis-enter = We enter stasis, gathering energy to rise once more. diff --git a/Resources/Locale/en-US/chat/chat-channel.ftl b/Resources/Locale/en-US/chat/chat-channel.ftl index 10ab1fc756..2c019325ef 100644 --- a/Resources/Locale/en-US/chat/chat-channel.ftl +++ b/Resources/Locale/en-US/chat/chat-channel.ftl @@ -1,2 +1,2 @@ -chat-channel-humanized-ooc = OOC +chat-channel-humanized-ooc = OOC chat-channel-humanized-admin = ADMIN diff --git a/Resources/Locale/en-US/chat/commands/ghost-command.ftl b/Resources/Locale/en-US/chat/commands/ghost-command.ftl index 53dfa478d6..989ae5eaaf 100644 --- a/Resources/Locale/en-US/chat/commands/ghost-command.ftl +++ b/Resources/Locale/en-US/chat/commands/ghost-command.ftl @@ -1,4 +1,4 @@ -ghost-command-description = Give up on life and become a ghost. +ghost-command-description = Give up on life and become a ghost. ghost-command-help-text = The ghost command turns you into a ghost and makes the character you played permanently catatonic. Please note that you cannot return to your character's body after ghosting. ghost-command-no-session = You have no session, you can't ghost. diff --git a/Resources/Locale/en-US/chemistry/components/rehydratable-component.ftl b/Resources/Locale/en-US/chemistry/components/rehydratable-component.ftl index c2e61e6cd4..3e8165a3ea 100644 --- a/Resources/Locale/en-US/chemistry/components/rehydratable-component.ftl +++ b/Resources/Locale/en-US/chemistry/components/rehydratable-component.ftl @@ -1 +1 @@ -rehydratable-component-expands-message = {$owner} expands! \ No newline at end of file +rehydratable-component-expands-message = {$owner} expands! diff --git a/Resources/Locale/en-US/chemistry/components/solution-scanner-component.ftl b/Resources/Locale/en-US/chemistry/components/solution-scanner-component.ftl index 51a049aab1..ef1f22981f 100644 --- a/Resources/Locale/en-US/chemistry/components/solution-scanner-component.ftl +++ b/Resources/Locale/en-US/chemistry/components/solution-scanner-component.ftl @@ -3,4 +3,4 @@ scannable-solution-verb-message = Examine the chemical composition. scannable-solution-main-text = It contains the following chemicals: scannable-solution-empty-container = It contains no chemicals. scannable-solution-chemical = - {$amount}u [color={$color}]{$type}[/color] -scannable-solution-temperature = Solution temperature: {$temperature}K \ No newline at end of file +scannable-solution-temperature = Solution temperature: {$temperature}K diff --git a/Resources/Locale/en-US/chemistry/components/solution-status.ftl b/Resources/Locale/en-US/chemistry/components/solution-status.ftl index 0ec5f932e0..8bc92bbc32 100644 --- a/Resources/Locale/en-US/chemistry/components/solution-status.ftl +++ b/Resources/Locale/en-US/chemistry/components/solution-status.ftl @@ -1,2 +1,2 @@ -solution-status-volume = Volume: [color=white]{$currentVolume}/{$maxVolume}u[/color] +solution-status-volume = Volume: [color=white]{$currentVolume}/{$maxVolume}u[/color] solution-status-transfer = Transfer: [color=white]{$volume}u[/color] diff --git a/Resources/Locale/en-US/climbing/glass-table-component.ftl b/Resources/Locale/en-US/climbing/glass-table-component.ftl index 1e7a159aed..9fb0233d20 100644 --- a/Resources/Locale/en-US/climbing/glass-table-component.ftl +++ b/Resources/Locale/en-US/climbing/glass-table-component.ftl @@ -1,4 +1,4 @@ -### Tables which take damage when a user is dragged onto them +### Tables which take damage when a user is dragged onto them ## Showed to users other than the climber glass-table-shattered-others = { CAPITALIZE(THE($table)) } cracks under the weight of { THE($climber) }! diff --git a/Resources/Locale/en-US/cloning/accept-cloning-window.ftl b/Resources/Locale/en-US/cloning/accept-cloning-window.ftl index 26ddcec1ed..5d855dac81 100644 --- a/Resources/Locale/en-US/cloning/accept-cloning-window.ftl +++ b/Resources/Locale/en-US/cloning/accept-cloning-window.ftl @@ -2,4 +2,4 @@ accept-cloning-window-title = Cloning Machine accept-cloning-window-prompt-text-part = You are being cloned! Transfer your soul to the clone body? accept-cloning-window-accept-button = Yes -accept-cloning-window-deny-button = No \ No newline at end of file +accept-cloning-window-deny-button = No diff --git a/Resources/Locale/en-US/clothing/belts.ftl b/Resources/Locale/en-US/clothing/belts.ftl index c0281b9fec..4276884929 100644 --- a/Resources/Locale/en-US/clothing/belts.ftl +++ b/Resources/Locale/en-US/clothing/belts.ftl @@ -1,2 +1,2 @@ sheath-insert-verb = Sheathe -sheath-eject-verb = Unsheathe \ No newline at end of file +sheath-eject-verb = Unsheathe diff --git a/Resources/Locale/en-US/clothing/components/chameleon-component.ftl b/Resources/Locale/en-US/clothing/components/chameleon-component.ftl index 19ab3834d9..180495e2b6 100644 --- a/Resources/Locale/en-US/clothing/components/chameleon-component.ftl +++ b/Resources/Locale/en-US/clothing/components/chameleon-component.ftl @@ -1,4 +1,4 @@ - + ## UI chameleon-component-ui-window-name = Chameleon Settings chameleon-component-ui-search-placeholder = Search... diff --git a/Resources/Locale/en-US/commands/actions-command.ftl b/Resources/Locale/en-US/commands/actions-command.ftl index b369da03d2..255f8c06e7 100644 --- a/Resources/Locale/en-US/commands/actions-command.ftl +++ b/Resources/Locale/en-US/commands/actions-command.ftl @@ -4,4 +4,4 @@ cmd-loadacts-error = Failed to load action assignments cmd-loadmapacts-desc = Loads the mapping preset action toolbar assignments. cmd-loadmapacts-help = Usage: {$command} -cmd-loadmapacts-error = Failed to load action assignments \ No newline at end of file +cmd-loadmapacts-error = Failed to load action assignments diff --git a/Resources/Locale/en-US/commands/add-body-part-command.ftl b/Resources/Locale/en-US/commands/add-body-part-command.ftl index 6a7a54f730..1db4dad662 100644 --- a/Resources/Locale/en-US/commands/add-body-part-command.ftl +++ b/Resources/Locale/en-US/commands/add-body-part-command.ftl @@ -1,2 +1,2 @@ -cmd-addbodypart-desc = Adds a given entity to a containing body. +cmd-addbodypart-desc = Adds a given entity to a containing body. cmd-addbodypart-help = Usage: addbodypart diff --git a/Resources/Locale/en-US/commands/addpolymorphaction-command.ftl b/Resources/Locale/en-US/commands/addpolymorphaction-command.ftl index 72f2158273..16ed3091b8 100644 --- a/Resources/Locale/en-US/commands/addpolymorphaction-command.ftl +++ b/Resources/Locale/en-US/commands/addpolymorphaction-command.ftl @@ -1,2 +1,2 @@ -cmd-addpolymorphaction-desc = Takes an entity and gives them a voluntary polymorph. +cmd-addpolymorphaction-desc = Takes an entity and gives them a voluntary polymorph. cmd-addpolymorphaction-help = Usage: addpolymorphaction diff --git a/Resources/Locale/en-US/commands/admin-logs-command.ftl b/Resources/Locale/en-US/commands/admin-logs-command.ftl index 539c917ddb..056dd945a3 100644 --- a/Resources/Locale/en-US/commands/admin-logs-command.ftl +++ b/Resources/Locale/en-US/commands/admin-logs-command.ftl @@ -1,2 +1,2 @@ -cmd-adminlogs-desc = Opens the admin logs panel. +cmd-adminlogs-desc = Opens the admin logs panel. cmd-adminlogs-help = Usage: adminlogs diff --git a/Resources/Locale/en-US/commands/admin-who-command.ftl b/Resources/Locale/en-US/commands/admin-who-command.ftl index b6491ada03..62824b828d 100644 --- a/Resources/Locale/en-US/commands/admin-who-command.ftl +++ b/Resources/Locale/en-US/commands/admin-who-command.ftl @@ -1,2 +1,2 @@ -cmd-adminwho-desc = Returns a list of all admins currently online on the server. +cmd-adminwho-desc = Returns a list of all admins currently online on the server. cmd-adminwho-help = Usage: adminwho diff --git a/Resources/Locale/en-US/commands/asay-command.ftl b/Resources/Locale/en-US/commands/asay-command.ftl index 3882947a7e..cf55f7c691 100644 --- a/Resources/Locale/en-US/commands/asay-command.ftl +++ b/Resources/Locale/en-US/commands/asay-command.ftl @@ -1,2 +1,2 @@ -cmd-asay-desc = Send chat messages to the private admin chat channel. +cmd-asay-desc = Send chat messages to the private admin chat channel. cmd-asay-help = Usage: asay diff --git a/Resources/Locale/en-US/commands/colornetwork-command.ftl b/Resources/Locale/en-US/commands/colornetwork-command.ftl index c77657000e..47d205ad3b 100644 --- a/Resources/Locale/en-US/commands/colornetwork-command.ftl +++ b/Resources/Locale/en-US/commands/colornetwork-command.ftl @@ -2,4 +2,4 @@ cmd-colornetwork-desc = Paints the atmos devices in the specified color cmd-colornetwork-help = colornetwork Pipe cmd-colornetwork-no-access = You are not currently able to use mapping commands. shell-entity-is-not-node-container = Target entity is not a node container. -shell-node-group-is-invalid = Invalid node group specified. Valid groups: { $groups }. \ No newline at end of file +shell-node-group-is-invalid = Invalid node group specified. Valid groups: { $groups }. diff --git a/Resources/Locale/en-US/commands/credits-command.ftl b/Resources/Locale/en-US/commands/credits-command.ftl index 9e506fc2a9..aea5265151 100644 --- a/Resources/Locale/en-US/commands/credits-command.ftl +++ b/Resources/Locale/en-US/commands/credits-command.ftl @@ -1,2 +1,2 @@ cmd-credits-desc = Opens the credits window -cmd-credits-help = Usage: {$command} \ No newline at end of file +cmd-credits-help = Usage: {$command} diff --git a/Resources/Locale/en-US/commands/crew-manifest-command.ftl b/Resources/Locale/en-US/commands/crew-manifest-command.ftl index 8b46e3ec6d..272a62c91e 100644 --- a/Resources/Locale/en-US/commands/crew-manifest-command.ftl +++ b/Resources/Locale/en-US/commands/crew-manifest-command.ftl @@ -1,2 +1,2 @@ -cmd-crewmanifest-desc = Opens the crew manifest for the given station. +cmd-crewmanifest-desc = Opens the crew manifest for the given station. cmd-crewmanifest-help = Usage: crewmanifest diff --git a/Resources/Locale/en-US/commands/deadmin-command.ftl b/Resources/Locale/en-US/commands/deadmin-command.ftl index e031595eba..4da6a4d9fe 100644 --- a/Resources/Locale/en-US/commands/deadmin-command.ftl +++ b/Resources/Locale/en-US/commands/deadmin-command.ftl @@ -1,3 +1,3 @@ -cmd-deadmin-desc = Temporarily de-admins you so you can experience the round as a normal player. +cmd-deadmin-desc = Temporarily de-admins you so you can experience the round as a normal player. cmd-deadmin-help = Usage: deadmin Use readmin to re-admin after using this. diff --git a/Resources/Locale/en-US/commands/debug-pathfinding-command.ftl b/Resources/Locale/en-US/commands/debug-pathfinding-command.ftl index c1f0df9e8f..ae48dc88b2 100644 --- a/Resources/Locale/en-US/commands/debug-pathfinding-command.ftl +++ b/Resources/Locale/en-US/commands/debug-pathfinding-command.ftl @@ -1,4 +1,4 @@ cmd-pathfinder-desc = Toggles visibility of pathfinding debuggers. cmd-pathfinder-help = Usage: {$command} [options] cmd-pathfinder-error = Unrecognised pathfinder args {$arg} -cmd-pathfinder-notify = Toggled {$arg} to {$newMode} \ No newline at end of file +cmd-pathfinder-notify = Toggled {$arg} to {$newMode} diff --git a/Resources/Locale/en-US/commands/delaystart-command.ftl b/Resources/Locale/en-US/commands/delaystart-command.ftl index 77560508b3..9e26425253 100644 --- a/Resources/Locale/en-US/commands/delaystart-command.ftl +++ b/Resources/Locale/en-US/commands/delaystart-command.ftl @@ -1,4 +1,4 @@ -cmd-delaystart-desc = Adjusts the roundstart timer (accepts positive and negative integers). Pauses/Resumes the countdown if no argument is provided. +cmd-delaystart-desc = Adjusts the roundstart timer (accepts positive and negative integers). Pauses/Resumes the countdown if no argument is provided. cmd-delaystart-help = Usage: delaystart [seconds] delaystart-preround-only = This can only be executed while the game is in the pre-round lobby. diff --git a/Resources/Locale/en-US/commands/delete-component-command.ftl b/Resources/Locale/en-US/commands/delete-component-command.ftl index f8435e4c64..d1d90045f0 100644 --- a/Resources/Locale/en-US/commands/delete-component-command.ftl +++ b/Resources/Locale/en-US/commands/delete-component-command.ftl @@ -1,4 +1,4 @@ -cmd-deletecomponent-desc = Deletes all instances of the specified component. +cmd-deletecomponent-desc = Deletes all instances of the specified component. cmd-deletecomponent-help = Usage: deletecomponent " cmd-deletecomponent-no-component-exists = No component exists with name {$name}. cmd-deletecomponent-success = Removed {$count} components with name {$name}. diff --git a/Resources/Locale/en-US/commands/destroy-mechanism-command.ftl b/Resources/Locale/en-US/commands/destroy-mechanism-command.ftl index e199b6230c..37b966633f 100644 --- a/Resources/Locale/en-US/commands/destroy-mechanism-command.ftl +++ b/Resources/Locale/en-US/commands/destroy-mechanism-command.ftl @@ -1,4 +1,4 @@ -cmd-destroymechanism-desc = Destroys a mechanism from your entity. +cmd-destroymechanism-desc = Destroys a mechanism from your entity. cmd-destroymechanism-help = Usage: destroymechanism cmd-destroymechanism-success = Mechanism with name {$name} has been destroyed. cmd-destroymechanism-no-mechanism-found = No mechanism was found with name {$name}. diff --git a/Resources/Locale/en-US/commands/dirty-command.ftl b/Resources/Locale/en-US/commands/dirty-command.ftl index c3e7bc1c39..35d7151629 100644 --- a/Resources/Locale/en-US/commands/dirty-command.ftl +++ b/Resources/Locale/en-US/commands/dirty-command.ftl @@ -1,2 +1,2 @@ -cmd-dirty-desc = Marks all components on an entity as dirty. If not specified, dirties everything. +cmd-dirty-desc = Marks all components on an entity as dirty. If not specified, dirties everything. cmd-dirty-help = Usage: dirty [entityUid] diff --git a/Resources/Locale/en-US/commands/dump-reagent-guide-text-command.ftl b/Resources/Locale/en-US/commands/dump-reagent-guide-text-command.ftl index 694854c1cd..47ddb999e1 100644 --- a/Resources/Locale/en-US/commands/dump-reagent-guide-text-command.ftl +++ b/Resources/Locale/en-US/commands/dump-reagent-guide-text-command.ftl @@ -1,4 +1,4 @@ -cmd-dumpreagentguidetext-desc = Dumps the guidebook text for a reagent to the console. +cmd-dumpreagentguidetext-desc = Dumps the guidebook text for a reagent to the console. cmd-dumpreagentguidetext-help = Usage: dumpreagentguidetext cmd-dumpreagentguidetext-nothing-to-dump = Nothing to dump. cmd-dumpreagentguidetext-skipped = [skipped effect of type {$effect}] diff --git a/Resources/Locale/en-US/commands/endround-command.ftl b/Resources/Locale/en-US/commands/endround-command.ftl index 3b322b59df..c3569bbbd8 100644 --- a/Resources/Locale/en-US/commands/endround-command.ftl +++ b/Resources/Locale/en-US/commands/endround-command.ftl @@ -1,2 +1,2 @@ -cmd-endround-desc = Ends the round and moves the server to PostRound. +cmd-endround-desc = Ends the round and moves the server to PostRound. cmd-endround-help = Usage: endround diff --git a/Resources/Locale/en-US/commands/eye-commands.ftl b/Resources/Locale/en-US/commands/eye-commands.ftl index 512c56cb60..6561dbc881 100644 --- a/Resources/Locale/en-US/commands/eye-commands.ftl +++ b/Resources/Locale/en-US/commands/eye-commands.ftl @@ -1,4 +1,4 @@ -parse-bool-fail = Unable to parse {$arg} as a bool +parse-bool-fail = Unable to parse {$arg} as a bool parse-float-fail = Unable to parse {$arg} as a float cmd-lockeyes-desc = Prevents eyes from being rotated any further. diff --git a/Resources/Locale/en-US/commands/force-map-command.ftl b/Resources/Locale/en-US/commands/force-map-command.ftl index fabd5f04c8..02ff66b689 100644 --- a/Resources/Locale/en-US/commands/force-map-command.ftl +++ b/Resources/Locale/en-US/commands/force-map-command.ftl @@ -1,4 +1,4 @@ -cmd-forcemap-desc = Forces the game to start with a given map next round. +cmd-forcemap-desc = Forces the game to start with a given map next round. cmd-forcemap-help = Usage: forcemap cmd-forcemap-success = Forced the game to start with map { $map } next round. cmd-forcemap-cleared = Cleared the forced map setting. diff --git a/Resources/Locale/en-US/commands/force-preset-command.ftl b/Resources/Locale/en-US/commands/force-preset-command.ftl index 9f534a01c4..dc9f2e801e 100644 --- a/Resources/Locale/en-US/commands/force-preset-command.ftl +++ b/Resources/Locale/en-US/commands/force-preset-command.ftl @@ -1,4 +1,4 @@ -cmd-forcepreset-desc = Forces a specific game preset to start for the current lobby. +cmd-forcepreset-desc = Forces a specific game preset to start for the current lobby. cmd-forcepreset-help = Usage: forcepreset cmd-forcepreset-preround-lobby-only = This can only be executed while the game is in the pre-round lobby. cmd-forcepreset-no-preset-found = No preset exists with name {$preset}. diff --git a/Resources/Locale/en-US/commands/ghost-kick-command.ftl b/Resources/Locale/en-US/commands/ghost-kick-command.ftl index fffae96ebe..64e1564e45 100644 --- a/Resources/Locale/en-US/commands/ghost-kick-command.ftl +++ b/Resources/Locale/en-US/commands/ghost-kick-command.ftl @@ -1,3 +1,3 @@ -cmd-ghostkick-desc = Kick a client from the server as if their network just dropped. +cmd-ghostkick-desc = Kick a client from the server as if their network just dropped. cmd-ghostkick-help = Usage: ghostkick [Reason] cmd-ghostkick-default-reason = Ghost kicked by console. diff --git a/Resources/Locale/en-US/commands/ghost-visibility-commands.ftl b/Resources/Locale/en-US/commands/ghost-visibility-commands.ftl index a4eaed21f6..2fc84a0492 100644 --- a/Resources/Locale/en-US/commands/ghost-visibility-commands.ftl +++ b/Resources/Locale/en-US/commands/ghost-visibility-commands.ftl @@ -1,4 +1,4 @@ -cmd-toggleghostvisibility-desc = Toggles ghost visibility on the client. +cmd-toggleghostvisibility-desc = Toggles ghost visibility on the client. cmd-toggleghostvisibility-help = Usage: toggleghostvisibility [bool] cmd-toggleselfghost-desc = Toggles seeing your own ghost. diff --git a/Resources/Locale/en-US/commands/go-lobby-command.ftl b/Resources/Locale/en-US/commands/go-lobby-command.ftl index 7ba54aa730..9953a3f82d 100644 --- a/Resources/Locale/en-US/commands/go-lobby-command.ftl +++ b/Resources/Locale/en-US/commands/go-lobby-command.ftl @@ -1,4 +1,4 @@ -cmd-golobby-desc = Enables the lobby and restarts the round. +cmd-golobby-desc = Enables the lobby and restarts the round. cmd-golobby-help = Usage: golobby / golobby cmd-golobby-success = Enabling the lobby and restarting the round. cmd-golobby-success-with-preset = Enabling the lobby and restarting the round with preset {$preset}. diff --git a/Resources/Locale/en-US/commands/grid-drag-command.ftl b/Resources/Locale/en-US/commands/grid-drag-command.ftl index 34efa64491..d38e11e5b3 100644 --- a/Resources/Locale/en-US/commands/grid-drag-command.ftl +++ b/Resources/Locale/en-US/commands/grid-drag-command.ftl @@ -1,3 +1,3 @@ -cmd-griddrag-desc = Allows someone with permissions to drag grids around. +cmd-griddrag-desc = Allows someone with permissions to drag grids around. cmd-griddrag-help = Usage: griddrag cmd-griddrag-status = Grid dragging set to {$status}. diff --git a/Resources/Locale/en-US/commands/grouping-entity-menu-command.ftl b/Resources/Locale/en-US/commands/grouping-entity-menu-command.ftl index eb519ae72d..be8fbff64b 100644 --- a/Resources/Locale/en-US/commands/grouping-entity-menu-command.ftl +++ b/Resources/Locale/en-US/commands/grouping-entity-menu-command.ftl @@ -1,4 +1,4 @@ cmd-entitymenug-desc = Sets the entity menu grouping type. cmd-entitymenug-help = Usage: {$command} <0:{$groupingTypesCount}> cmd-entitymenug-error = {$arg} is not a valid integer. -cmd-entitymenug-notify = Context Menu Grouping set to type: {$cvar} \ No newline at end of file +cmd-entitymenug-notify = Context Menu Grouping set to type: {$cvar} diff --git a/Resources/Locale/en-US/commands/is-afk-command.ftl b/Resources/Locale/en-US/commands/is-afk-command.ftl index ad3a6f3ab4..f51815089c 100644 --- a/Resources/Locale/en-US/commands/is-afk-command.ftl +++ b/Resources/Locale/en-US/commands/is-afk-command.ftl @@ -1,4 +1,4 @@ -cmd-isafk-desc = Checks if a specified player is AFK. +cmd-isafk-desc = Checks if a specified player is AFK. cmd-isafk-help = Usage: isafk cmd-isafk-true = They are indeed AFK. cmd-isafk-false = They are not AFK. diff --git a/Resources/Locale/en-US/commands/job-whitelist-command.ftl b/Resources/Locale/en-US/commands/job-whitelist-command.ftl index a188f9ba5c..9fd99ccdbb 100644 --- a/Resources/Locale/en-US/commands/job-whitelist-command.ftl +++ b/Resources/Locale/en-US/commands/job-whitelist-command.ftl @@ -1,4 +1,4 @@ -cmd-jobwhitelist-job-does-not-exist = Job {$job} does not exist. +cmd-jobwhitelist-job-does-not-exist = Job {$job} does not exist. cmd-jobwhitelist-player-not-found = Player {$player} not found. cmd-jobwhitelist-hint-player = [player] cmd-jobwhitelist-hint-job = [job] diff --git a/Resources/Locale/en-US/commands/makesentient-command.ftl b/Resources/Locale/en-US/commands/makesentient-command.ftl index 2d972b8e60..c74ba7ff66 100644 --- a/Resources/Locale/en-US/commands/makesentient-command.ftl +++ b/Resources/Locale/en-US/commands/makesentient-command.ftl @@ -1,2 +1,2 @@ -cmd-makesentient-desc = Makes an entity sentient (able to be controlled by a player). +cmd-makesentient-desc = Makes an entity sentient (able to be controlled by a player). cmd-makesentient-help = Usage: makesentient diff --git a/Resources/Locale/en-US/commands/map-commands.ftl b/Resources/Locale/en-US/commands/map-commands.ftl index f5663f6824..d7689d4d46 100644 --- a/Resources/Locale/en-US/commands/map-commands.ftl +++ b/Resources/Locale/en-US/commands/map-commands.ftl @@ -1,4 +1,4 @@ -cmd-loadgamemap-desc = Loads the given game map at the given coordinates. +cmd-loadgamemap-desc = Loads the given game map at the given coordinates. cmd-loadgamemap-help = loadgamemap [ []] cmd-listgamemaps-desc = Lists the game maps that can be used by loadgamemap. diff --git a/Resources/Locale/en-US/commands/me-command.ftl b/Resources/Locale/en-US/commands/me-command.ftl index cd482b0be3..ba0e6fc344 100644 --- a/Resources/Locale/en-US/commands/me-command.ftl +++ b/Resources/Locale/en-US/commands/me-command.ftl @@ -1,2 +1,2 @@ -cmd-me-desc = Perform an action. +cmd-me-desc = Perform an action. cmd-me-help = Usage: me diff --git a/Resources/Locale/en-US/commands/melee-spread-command.ftl b/Resources/Locale/en-US/commands/melee-spread-command.ftl index 7e62fb53b9..7ece0d69ac 100644 --- a/Resources/Locale/en-US/commands/melee-spread-command.ftl +++ b/Resources/Locale/en-US/commands/melee-spread-command.ftl @@ -1 +1 @@ -cmd-showmeleespread-desc = Shows the current weapon's range and arc for debugging. +cmd-showmeleespread-desc = Shows the current weapon's range and arc for debugging. diff --git a/Resources/Locale/en-US/commands/mind-info-command.ftl b/Resources/Locale/en-US/commands/mind-info-command.ftl index 57a1731928..8268bc96dc 100644 --- a/Resources/Locale/en-US/commands/mind-info-command.ftl +++ b/Resources/Locale/en-US/commands/mind-info-command.ftl @@ -1,3 +1,3 @@ -cmd-mindinfo-desc = Lists info for the mind of a specific player. +cmd-mindinfo-desc = Lists info for the mind of a specific player. cmd-mindinfo-help = Usage: mindinfo cmd-mindinfo-mind-not-found = Can't find that mind. diff --git a/Resources/Locale/en-US/commands/node-vis-commands.ftl b/Resources/Locale/en-US/commands/node-vis-commands.ftl index e921c478f8..0f0639576c 100644 --- a/Resources/Locale/en-US/commands/node-vis-commands.ftl +++ b/Resources/Locale/en-US/commands/node-vis-commands.ftl @@ -1,4 +1,4 @@ -cmd-nodevis-desc = Toggles node group visualization. +cmd-nodevis-desc = Toggles node group visualization. cmd-nodevis-help = Usage: nodevis cmd-nodevisfilter-desc = Toggles showing a specific group on nodevis. diff --git a/Resources/Locale/en-US/commands/npc-command.ftl b/Resources/Locale/en-US/commands/npc-command.ftl index 37117437dd..e1f58705e9 100644 --- a/Resources/Locale/en-US/commands/npc-command.ftl +++ b/Resources/Locale/en-US/commands/npc-command.ftl @@ -1,2 +1,2 @@ -cmd-npc-desc = Opens the debug window for NPCs. +cmd-npc-desc = Opens the debug window for NPCs. cmd-npc-help = Usage: npc diff --git a/Resources/Locale/en-US/commands/nukecodes-command.ftl b/Resources/Locale/en-US/commands/nukecodes-command.ftl index 50e324c524..4ae90dfaa9 100644 --- a/Resources/Locale/en-US/commands/nukecodes-command.ftl +++ b/Resources/Locale/en-US/commands/nukecodes-command.ftl @@ -1,2 +1,2 @@ -cmd-nukecodes-desc = Send nuke codes to a station's communication consoles. +cmd-nukecodes-desc = Send nuke codes to a station's communication consoles. cmd-nukecodes-help = Usage: nukecodes diff --git a/Resources/Locale/en-US/commands/ooc-command.ftl b/Resources/Locale/en-US/commands/ooc-command.ftl index a2fa48e2ae..6bcf7a1128 100644 --- a/Resources/Locale/en-US/commands/ooc-command.ftl +++ b/Resources/Locale/en-US/commands/ooc-command.ftl @@ -1,2 +1,2 @@ -cmd-ooc-desc = Send Out Of Character chat messages. +cmd-ooc-desc = Send Out Of Character chat messages. cmd-ooc-help = Usage: ooc diff --git a/Resources/Locale/en-US/commands/open-a-help-command.ftl b/Resources/Locale/en-US/commands/open-a-help-command.ftl index a7e0e76c1d..24618c11d7 100644 --- a/Resources/Locale/en-US/commands/open-a-help-command.ftl +++ b/Resources/Locale/en-US/commands/open-a-help-command.ftl @@ -1,3 +1,3 @@ cmd-openahelp-desc = Opens AHelp channel for a given NetUserID, or your personal channel if none given. cmd-openahelp-help = Usage: {$command} [] -cmd-openahelp-error = Bad GUID! \ No newline at end of file +cmd-openahelp-error = Bad GUID! diff --git a/Resources/Locale/en-US/commands/pardon-command.ftl b/Resources/Locale/en-US/commands/pardon-command.ftl index c934865629..8699564be3 100644 --- a/Resources/Locale/en-US/commands/pardon-command.ftl +++ b/Resources/Locale/en-US/commands/pardon-command.ftl @@ -1,4 +1,4 @@ -cmd-pardon-desc = Pardon somebody's ban. +cmd-pardon-desc = Pardon somebody's ban. cmd-pardon-help = Usage: pardon cmd-pardon-unable-to-parse = Unable to parse {$id} as a ban id integer. {$help} diff --git a/Resources/Locale/en-US/commands/powerstat-command.ftl b/Resources/Locale/en-US/commands/powerstat-command.ftl index c22cd5e22a..c998ae78d3 100644 --- a/Resources/Locale/en-US/commands/powerstat-command.ftl +++ b/Resources/Locale/en-US/commands/powerstat-command.ftl @@ -1,4 +1,4 @@ -cmd-powerstat-desc = Shows statistics for pow3r. +cmd-powerstat-desc = Shows statistics for pow3r. cmd-powerstat-help = Usage: powerstat cmd-powerstat-output = Networks: {$networks} Loads: {$loads} diff --git a/Resources/Locale/en-US/commands/promote-host-command.ftl b/Resources/Locale/en-US/commands/promote-host-command.ftl index f31deb6ee1..7155fecc26 100644 --- a/Resources/Locale/en-US/commands/promote-host-command.ftl +++ b/Resources/Locale/en-US/commands/promote-host-command.ftl @@ -1,2 +1,2 @@ -cmd-promotehost-desc = Grants client temporary full host admin privileges. Use this to bootstrap admins. +cmd-promotehost-desc = Grants client temporary full host admin privileges. Use this to bootstrap admins. cmd-promotehost-help = Usage promotehost diff --git a/Resources/Locale/en-US/commands/readmin-command.ftl b/Resources/Locale/en-US/commands/readmin-command.ftl index 4f6084903d..0a59cdc5fe 100644 --- a/Resources/Locale/en-US/commands/readmin-command.ftl +++ b/Resources/Locale/en-US/commands/readmin-command.ftl @@ -1,3 +1,3 @@ -cmd-readmin-desc = Re-admins you if you previously de-adminned. +cmd-readmin-desc = Re-admins you if you previously de-adminned. cmd-readmin-help = Usage: readmin cmd-readmin-not-an-admin = You're not an admin. diff --git a/Resources/Locale/en-US/commands/readyall-command.ftl b/Resources/Locale/en-US/commands/readyall-command.ftl index e5642f5536..2f357ddc6f 100644 --- a/Resources/Locale/en-US/commands/readyall-command.ftl +++ b/Resources/Locale/en-US/commands/readyall-command.ftl @@ -1,2 +1,2 @@ -cmd-readyall-desc = Readies up all players in the lobby, except for observers. +cmd-readyall-desc = Readies up all players in the lobby, except for observers. cmd-readyall-help = Usage: readyall [bool] diff --git a/Resources/Locale/en-US/commands/remove-extra-components-command.ftl b/Resources/Locale/en-US/commands/remove-extra-components-command.ftl index 8cd0fc5797..a39e1638aa 100644 --- a/Resources/Locale/en-US/commands/remove-extra-components-command.ftl +++ b/Resources/Locale/en-US/commands/remove-extra-components-command.ftl @@ -1,4 +1,4 @@ -cmd-removeextracomponents-desc = Removes all components from all entities of the specified id if that component is not in its prototype.\nIf no id is specified, it matches all entities. +cmd-removeextracomponents-desc = Removes all components from all entities of the specified id if that component is not in its prototype.\nIf no id is specified, it matches all entities. cmd-removeextracomponents-help = removeextracomponents / removeextracomponents cmd-removeextracomponents-invalid-prototype-id = Can't find entity prototype with id {$id}. cmd-removeextracomponents-success = Removed {$count} components from {$entities}, diff --git a/Resources/Locale/en-US/commands/restartround-command.ftl b/Resources/Locale/en-US/commands/restartround-command.ftl index 22bf074452..ecbdcb063f 100644 --- a/Resources/Locale/en-US/commands/restartround-command.ftl +++ b/Resources/Locale/en-US/commands/restartround-command.ftl @@ -1,4 +1,4 @@ -cmd-restartround-desc = Ends the current round and starts the countdown for the next lobby. +cmd-restartround-desc = Ends the current round and starts the countdown for the next lobby. cmd-restartround-help = Usage: restartround cmd-restartroundnow-desc = Moves the server from PostRound to a new PreRoundLobby. diff --git a/Resources/Locale/en-US/commands/role-commands.ftl b/Resources/Locale/en-US/commands/role-commands.ftl index ff8a2533e3..c2adca85e6 100644 --- a/Resources/Locale/en-US/commands/role-commands.ftl +++ b/Resources/Locale/en-US/commands/role-commands.ftl @@ -1,4 +1,4 @@ -cmd-addrole-desc = Adds a role to a player's mind. +cmd-addrole-desc = Adds a role to a player's mind. cmd-addrole-help = Usage: addrole cmd-addrole-mind-not-found = Can't find that mind. cmd-addrole-role-not-found = Can't find that role. diff --git a/Resources/Locale/en-US/commands/say-command.ftl b/Resources/Locale/en-US/commands/say-command.ftl index 8deb7bdc45..d74ea43868 100644 --- a/Resources/Locale/en-US/commands/say-command.ftl +++ b/Resources/Locale/en-US/commands/say-command.ftl @@ -1,2 +1,2 @@ -cmd-say-desc = Send chat messages to the local channel or a specified radio channel. +cmd-say-desc = Send chat messages to the local channel or a specified radio channel. cmd-say-help = Usage: say diff --git a/Resources/Locale/en-US/commands/set-battery-percent-command.ftl b/Resources/Locale/en-US/commands/set-battery-percent-command.ftl index d7323e4831..d70283cadd 100644 --- a/Resources/Locale/en-US/commands/set-battery-percent-command.ftl +++ b/Resources/Locale/en-US/commands/set-battery-percent-command.ftl @@ -1,4 +1,4 @@ -cmd-setbatterypercent-desc = Drains or recharges a battery by entity uid and percentage, i.e.: forall with Battery do setbatterypercent $ID 0 +cmd-setbatterypercent-desc = Drains or recharges a battery by entity uid and percentage, i.e.: forall with Battery do setbatterypercent $ID 0 cmd-setbatterypercent-help = Usage: setbatterypercent cmd-setbatterypercent-battery-not-found = No battery found with id {$id}. cmd-setbatterypercent-not-valid-percent = {$arg} is not a valid float (percentage). diff --git a/Resources/Locale/en-US/commands/set-menu-visibility-command.ftl b/Resources/Locale/en-US/commands/set-menu-visibility-command.ftl index e3bcd51216..3d81abb5f7 100644 --- a/Resources/Locale/en-US/commands/set-menu-visibility-command.ftl +++ b/Resources/Locale/en-US/commands/set-menu-visibility-command.ftl @@ -1,3 +1,3 @@ cmd-menuvis-desc = Set restrictions about what entities to show on the entity context menu. cmd-menuvis-help = Usage: {Command} [NoFoV] [InContainer] [Invisible] [All] -cmd-menuvis-error = Unknown visibility argument '{$arg}'. Only 'NoFov', 'InContainer', 'Invisible' or 'All' are valid. Provide no arguments to set to default. \ No newline at end of file +cmd-menuvis-error = Unknown visibility argument '{$arg}'. Only 'NoFov', 'InContainer', 'Invisible' or 'All' are valid. Provide no arguments to set to default. diff --git a/Resources/Locale/en-US/commands/show-access-readers-command.ftl b/Resources/Locale/en-US/commands/show-access-readers-command.ftl index f74553a066..351c21fa3b 100644 --- a/Resources/Locale/en-US/commands/show-access-readers-command.ftl +++ b/Resources/Locale/en-US/commands/show-access-readers-command.ftl @@ -1,4 +1,4 @@ -cmd-showaccessreaders-desc = Toggles showing access reader permissions on the map +cmd-showaccessreaders-desc = Toggles showing access reader permissions on the map cmd-showaccessreaders-help = Overlay Info: -Disabled | The access reader is disabled diff --git a/Resources/Locale/en-US/commands/show-ambient-command.ftl b/Resources/Locale/en-US/commands/show-ambient-command.ftl index 262bbca47b..98444797e0 100644 --- a/Resources/Locale/en-US/commands/show-ambient-command.ftl +++ b/Resources/Locale/en-US/commands/show-ambient-command.ftl @@ -1,3 +1,3 @@ -cmd-showambient-desc = Shows all AmbientSoundComponents in the viewport. +cmd-showambient-desc = Shows all AmbientSoundComponents in the viewport. cmd-showambient-help = Usage: showambient cmd-showambient-status = Ambient sound overlay set to {$status}. diff --git a/Resources/Locale/en-US/commands/show-emergency-shuttle-command.ftl b/Resources/Locale/en-US/commands/show-emergency-shuttle-command.ftl index e51494685c..9572652c99 100644 --- a/Resources/Locale/en-US/commands/show-emergency-shuttle-command.ftl +++ b/Resources/Locale/en-US/commands/show-emergency-shuttle-command.ftl @@ -1,2 +1,2 @@ -cmd-showemergencyshuttle-desc = Shows the expected position of the emergency shuttle. +cmd-showemergencyshuttle-desc = Shows the expected position of the emergency shuttle. cmd-showemergencyshuttle-status = Set emergency shuttle debug to {$status}. diff --git a/Resources/Locale/en-US/commands/show-gun-spread-command.ftl b/Resources/Locale/en-US/commands/show-gun-spread-command.ftl index a4a043e92e..5ba7a09f58 100644 --- a/Resources/Locale/en-US/commands/show-gun-spread-command.ftl +++ b/Resources/Locale/en-US/commands/show-gun-spread-command.ftl @@ -1,3 +1,3 @@ -cmd-showgunspread-desc = Shows gun spread overlay for debugging. +cmd-showgunspread-desc = Shows gun spread overlay for debugging. cmd-showgunspreade-help = Usage: showgunspread cmd-showgunspread-status = Set spread overlay to {$status}. diff --git a/Resources/Locale/en-US/commands/show-htn-command.ftl b/Resources/Locale/en-US/commands/show-htn-command.ftl index 6580a41b98..05d1a753a7 100644 --- a/Resources/Locale/en-US/commands/show-htn-command.ftl +++ b/Resources/Locale/en-US/commands/show-htn-command.ftl @@ -1,2 +1,2 @@ -cmd-showhtn-desc = Shows the current status for HTN NPCs. +cmd-showhtn-desc = Shows the current status for HTN NPCs. cmd-showhtn-help = Usage: showhtn diff --git a/Resources/Locale/en-US/commands/showrules-command.ftl b/Resources/Locale/en-US/commands/showrules-command.ftl index d997427de4..ebdfd5099a 100644 --- a/Resources/Locale/en-US/commands/showrules-command.ftl +++ b/Resources/Locale/en-US/commands/showrules-command.ftl @@ -1,3 +1,3 @@ -cmd-showrules-desc = Opens the rules popup for the specified player. +cmd-showrules-desc = Opens the rules popup for the specified player. cmd-showrules-help = Usage: showrules [seconds] cmd-showrules-invalid-seconds = {$seconds} is not a valid number of seconds! diff --git a/Resources/Locale/en-US/commands/start-singularity-command.ftl b/Resources/Locale/en-US/commands/start-singularity-command.ftl index 26c9c6a4fd..43aa81ba31 100644 --- a/Resources/Locale/en-US/commands/start-singularity-command.ftl +++ b/Resources/Locale/en-US/commands/start-singularity-command.ftl @@ -1,2 +1,2 @@ -cmd-startsingularityengine-desc = Automatically turns on the particle accelerator and containment field emitters. +cmd-startsingularityengine-desc = Automatically turns on the particle accelerator and containment field emitters. cmd-startsingularityengine-help = Usage: startsingularityengine diff --git a/Resources/Locale/en-US/commands/startround-command.ftl b/Resources/Locale/en-US/commands/startround-command.ftl index 51e85e81b7..1056978701 100644 --- a/Resources/Locale/en-US/commands/startround-command.ftl +++ b/Resources/Locale/en-US/commands/startround-command.ftl @@ -1,2 +1,2 @@ -cmd-startround-desc = Ends PreRoundLobby state and starts the round. +cmd-startround-desc = Ends PreRoundLobby state and starts the round. cmd-startround-help = Usage: startround diff --git a/Resources/Locale/en-US/commands/tile-pry-command.ftl b/Resources/Locale/en-US/commands/tile-pry-command.ftl index 5c7d313127..2941573d84 100644 --- a/Resources/Locale/en-US/commands/tile-pry-command.ftl +++ b/Resources/Locale/en-US/commands/tile-pry-command.ftl @@ -1,4 +1,4 @@ -cmd-tilepry-desc = Pries up all tiles in a radius around the user. +cmd-tilepry-desc = Pries up all tiles in a radius around the user. cmd-tilepry-help = Usage: tilepry cmd-tilepry-radius-must-be-positive = Radius must be positive. cmd-tilepry-arg-must-be-number = {$arg} isn't a valid integer. diff --git a/Resources/Locale/en-US/commands/toggle-decals-command.ftl b/Resources/Locale/en-US/commands/toggle-decals-command.ftl index 0455704b3b..3b38d6ce6c 100644 --- a/Resources/Locale/en-US/commands/toggle-decals-command.ftl +++ b/Resources/Locale/en-US/commands/toggle-decals-command.ftl @@ -1,2 +1,2 @@ -cmd-toggledecals-desc = Toggles decal overlay. +cmd-toggledecals-desc = Toggles decal overlay. cmd-toggledecals-help = Usage: toggledecals diff --git a/Resources/Locale/en-US/commands/toggle-disallow-late-join-command.ftl b/Resources/Locale/en-US/commands/toggle-disallow-late-join-command.ftl index 1f797b4141..bb0de5d4ef 100644 --- a/Resources/Locale/en-US/commands/toggle-disallow-late-join-command.ftl +++ b/Resources/Locale/en-US/commands/toggle-disallow-late-join-command.ftl @@ -1,4 +1,4 @@ -cmd-toggledisallowlatejoin-desc = Allows or disallows latejoining during mid-game. +cmd-toggledisallowlatejoin-desc = Allows or disallows latejoining during mid-game. cmd-toggledisallowlatejoin-help = Usage: toggledisallowlatejoin cmd-toggledisallowlatejoin-disabled = Late joining has been disabled. cmd-toggledisallowlatejoin-enabled = Late joining has been enabled. diff --git a/Resources/Locale/en-US/commands/toggle-outline-command.ftl b/Resources/Locale/en-US/commands/toggle-outline-command.ftl index ac323f4dc8..0874c21803 100644 --- a/Resources/Locale/en-US/commands/toggle-outline-command.ftl +++ b/Resources/Locale/en-US/commands/toggle-outline-command.ftl @@ -1,3 +1,3 @@ cmd-toggleoutline-desc = Toggles outline drawing on entities. cmd-toggleoutline-help = Usage: {$command} -cmd-toggleoutline-notify = Draw outlines set to: {$cvar} \ No newline at end of file +cmd-toggleoutline-notify = Draw outlines set to: {$cvar} diff --git a/Resources/Locale/en-US/commands/toggleready-command.ftl b/Resources/Locale/en-US/commands/toggleready-command.ftl index 0dfd3a9b9d..701e30323b 100644 --- a/Resources/Locale/en-US/commands/toggleready-command.ftl +++ b/Resources/Locale/en-US/commands/toggleready-command.ftl @@ -1,2 +1,2 @@ -cmd-toggleready-desc = Toggle the players ready status. +cmd-toggleready-desc = Toggle the players ready status. cmd-toggleready-help = Usage: toggleready diff --git a/Resources/Locale/en-US/commands/whisper-command.ftl b/Resources/Locale/en-US/commands/whisper-command.ftl index 7dfe909f24..76331a0cd4 100644 --- a/Resources/Locale/en-US/commands/whisper-command.ftl +++ b/Resources/Locale/en-US/commands/whisper-command.ftl @@ -1,2 +1,2 @@ -cmd-whisper-desc = Send chat messages to the local channel as a whisper. +cmd-whisper-desc = Send chat messages to the local channel as a whisper. cmd-whisper-help = Usage: whisper diff --git a/Resources/Locale/en-US/components/atmos-monitoring-component.ftl b/Resources/Locale/en-US/components/atmos-monitoring-component.ftl index eab6f50c60..7bbd077fb3 100644 --- a/Resources/Locale/en-US/components/atmos-monitoring-component.ftl +++ b/Resources/Locale/en-US/components/atmos-monitoring-component.ftl @@ -11,4 +11,4 @@ atmos-monitoring-window-show-pipe-network = Pipe network atmos-monitoring-window-show-gas-pipe-sensors = Gas pipe sensors atmos-monitoring-window-label-gases = Present gases atmos-monitoring-window-flavor-left = Contact an atmospheric technician for assistance -atmos-monitoring-window-flavor-right = v1.1 \ No newline at end of file +atmos-monitoring-window-flavor-right = v1.1 diff --git a/Resources/Locale/en-US/components/gas-pressure-regulator-component.ftl b/Resources/Locale/en-US/components/gas-pressure-regulator-component.ftl index 2434e2df63..7541a977a5 100644 --- a/Resources/Locale/en-US/components/gas-pressure-regulator-component.ftl +++ b/Resources/Locale/en-US/components/gas-pressure-regulator-component.ftl @@ -1,4 +1,4 @@ -# UI Labels +# UI Labels gas-pressure-regulator-ui-set-threshold = Set gas-pressure-regulator-ui-zero-threshold = Zero gas-pressure-regulator-ui-set-to-current-pressure = Set to Inlet Pressure diff --git a/Resources/Locale/en-US/components/gas-thermomachine-component.ftl b/Resources/Locale/en-US/components/gas-thermomachine-component.ftl index f5cdb7949e..8158d5489b 100644 --- a/Resources/Locale/en-US/components/gas-thermomachine-component.ftl +++ b/Resources/Locale/en-US/components/gas-thermomachine-component.ftl @@ -1,4 +1,4 @@ -comp-gas-thermomachine-ui-title-freezer = Freezer +comp-gas-thermomachine-ui-title-freezer = Freezer comp-gas-thermomachine-ui-title-heater = Heater comp-gas-thermomachine-ui-temperature = Temperature (K): diff --git a/Resources/Locale/en-US/components/ghost-component.ftl b/Resources/Locale/en-US/components/ghost-component.ftl index e691da8886..b9cc4e537a 100644 --- a/Resources/Locale/en-US/components/ghost-component.ftl +++ b/Resources/Locale/en-US/components/ghost-component.ftl @@ -1,3 +1,3 @@ -# Examine text +# Examine text comp-ghost-examine-time-minutes = Died [color=yellow]{$minutes} minutes ago.[/color] comp-ghost-examine-time-seconds = Died [color=yellow]{$seconds} seconds ago.[/color] diff --git a/Resources/Locale/en-US/components/screen-component.ftl b/Resources/Locale/en-US/components/screen-component.ftl index baa3229533..6d3ae2ac5f 100644 --- a/Resources/Locale/en-US/components/screen-component.ftl +++ b/Resources/Locale/en-US/components/screen-component.ftl @@ -1,2 +1,2 @@ screen-text = screenText -screen-color = screenColor \ No newline at end of file +screen-color = screenColor diff --git a/Resources/Locale/en-US/components/space-heater-component.ftl b/Resources/Locale/en-US/components/space-heater-component.ftl index d373a6dc6f..2b8051dddb 100644 --- a/Resources/Locale/en-US/components/space-heater-component.ftl +++ b/Resources/Locale/en-US/components/space-heater-component.ftl @@ -1,4 +1,4 @@ -comp-space-heater-ui-title = Temperature Control Unit +comp-space-heater-ui-title = Temperature Control Unit comp-space-heater-ui-thermostat = Thermostat: comp-space-heater-ui-mode = Mode comp-space-heater-ui-increase-temperature-range = + diff --git a/Resources/Locale/en-US/components/station-anchor-component.ftl b/Resources/Locale/en-US/components/station-anchor-component.ftl index 18221e945a..0210bcedf3 100644 --- a/Resources/Locale/en-US/components/station-anchor-component.ftl +++ b/Resources/Locale/en-US/components/station-anchor-component.ftl @@ -1,2 +1,2 @@ -station-anchor-unanchoring-failed = Can't unanchor an active station anchor. +station-anchor-unanchoring-failed = Can't unanchor an active station anchor. station-anchor-window-title = Station Anchor diff --git a/Resources/Locale/en-US/components/storage-voice-control-component.ftl b/Resources/Locale/en-US/components/storage-voice-control-component.ftl index 019b5ecfa1..3187e16b5f 100644 --- a/Resources/Locale/en-US/components/storage-voice-control-component.ftl +++ b/Resources/Locale/en-US/components/storage-voice-control-component.ftl @@ -1 +1 @@ -comp-storagevoicecontrol-self-insert = You can't insert { THE($entity) } into itself! +comp-storagevoicecontrol-self-insert = You can't insert { THE($entity) } into itself! diff --git a/Resources/Locale/en-US/configurable/configuration-component.ftl b/Resources/Locale/en-US/configurable/configuration-component.ftl index 5632003c2c..20c7b93097 100644 --- a/Resources/Locale/en-US/configurable/configuration-component.ftl +++ b/Resources/Locale/en-US/configurable/configuration-component.ftl @@ -1,6 +1,6 @@ - + configuration-menu-confirm = Confirm configuration-menu-device-title = Device Configuration ## ConfigureVerb -configure-verb-get-data-text = Open Configuration \ No newline at end of file +configure-verb-get-data-text = Open Configuration diff --git a/Resources/Locale/en-US/connection-messages.ftl b/Resources/Locale/en-US/connection-messages.ftl index 3a9bd5f097..dd304fd86d 100644 --- a/Resources/Locale/en-US/connection-messages.ftl +++ b/Resources/Locale/en-US/connection-messages.ftl @@ -1,4 +1,4 @@ -cmd-whitelistadd-desc = Adds the player with the given username to the server whitelist. +cmd-whitelistadd-desc = Adds the player with the given username to the server whitelist. cmd-whitelistadd-help = Usage: whitelistadd cmd-whitelistadd-existing = {$username} is already on the whitelist! cmd-whitelistadd-added = {$username} added to the whitelist diff --git a/Resources/Locale/en-US/construction/components/construction-component-verbs.ftl b/Resources/Locale/en-US/construction/components/construction-component-verbs.ftl index d884ddc376..e14eedbacc 100644 --- a/Resources/Locale/en-US/construction/components/construction-component-verbs.ftl +++ b/Resources/Locale/en-US/construction/components/construction-component-verbs.ftl @@ -1,3 +1,3 @@ deconstructible-verb-begin-deconstruct = Begin deconstructing deconstructible-verb-activate-no-target-text = There is no way to deconstruct this. -deconstructible-verb-activate-text = Examine to see instructions. \ No newline at end of file +deconstructible-verb-activate-text = Examine to see instructions. diff --git a/Resources/Locale/en-US/construction/components/machine-board-component.ftl b/Resources/Locale/en-US/construction/components/machine-board-component.ftl index 6c926c7552..b4b5e1bd7d 100644 --- a/Resources/Locale/en-US/construction/components/machine-board-component.ftl +++ b/Resources/Locale/en-US/construction/components/machine-board-component.ftl @@ -1,2 +1,2 @@ machine-board-component-on-examine-label = Requires: -machine-board-component-required-element-entry-text = [color=yellow]{$amount}x[/color] [color=green]{$requiredElement}[/color] \ No newline at end of file +machine-board-component-required-element-entry-text = [color=yellow]{$amount}x[/color] [color=green]{$requiredElement}[/color] diff --git a/Resources/Locale/en-US/construction/conditions/locked.ftl b/Resources/Locale/en-US/construction/conditions/locked.ftl index 8093ee27a1..f7baad5242 100644 --- a/Resources/Locale/en-US/construction/conditions/locked.ftl +++ b/Resources/Locale/en-US/construction/conditions/locked.ftl @@ -2,4 +2,4 @@ construction-examine-condition-unlock = First, [color=limegreen]unlock[/color] it. construction-examine-condition-lock = First, [color=red]lock[/color] it. construction-step-condition-unlock = It must be unlocked. -construction-step-condition-lock = It must be locked. \ No newline at end of file +construction-step-condition-lock = It must be locked. diff --git a/Resources/Locale/en-US/construction/construction-categories.ftl b/Resources/Locale/en-US/construction/construction-categories.ftl index 85d14cf2eb..64dbb8df7b 100644 --- a/Resources/Locale/en-US/construction/construction-categories.ftl +++ b/Resources/Locale/en-US/construction/construction-categories.ftl @@ -1,4 +1,4 @@ -construction-category-all = All +construction-category-all = All construction-category-atmospherics = Atmospherics construction-category-furniture = Furniture construction-category-storage = Storage diff --git a/Resources/Locale/en-US/construction/construction-ghost-component.ftl b/Resources/Locale/en-US/construction/construction-ghost-component.ftl index 893e173d55..9c6c37719b 100644 --- a/Resources/Locale/en-US/construction/construction-ghost-component.ftl +++ b/Resources/Locale/en-US/construction/construction-ghost-component.ftl @@ -1 +1 @@ -construction-ghost-examine-message = Building: [color=cyan]{$name}[/color] \ No newline at end of file +construction-ghost-examine-message = Building: [color=cyan]{$name}[/color] diff --git a/Resources/Locale/en-US/construction/steps/component-construction-graph-step.ftl b/Resources/Locale/en-US/construction/steps/component-construction-graph-step.ftl index 4e4cb8a462..e295dc14a7 100644 --- a/Resources/Locale/en-US/construction/steps/component-construction-graph-step.ftl +++ b/Resources/Locale/en-US/construction/steps/component-construction-graph-step.ftl @@ -2,4 +2,4 @@ construction-insert-entity-with-component = Next, insert an entity with a {$componentName} component. # Shown when examining an in-construction object -construction-insert-exact-entity = Next, insert {$entityName}. \ No newline at end of file +construction-insert-exact-entity = Next, insert {$entityName}. diff --git a/Resources/Locale/en-US/construction/steps/material-construction-graph-step.ftl b/Resources/Locale/en-US/construction/steps/material-construction-graph-step.ftl index 54e72d22fb..bf1b77e6d6 100644 --- a/Resources/Locale/en-US/construction/steps/material-construction-graph-step.ftl +++ b/Resources/Locale/en-US/construction/steps/material-construction-graph-step.ftl @@ -1 +1 @@ -construction-insert-material-entity = Next, add [color=yellow]{$amount}x[/color] [color=cyan]{$materialName}[/color]. \ No newline at end of file +construction-insert-material-entity = Next, add [color=yellow]{$amount}x[/color] [color=cyan]{$materialName}[/color]. diff --git a/Resources/Locale/en-US/construction/steps/prototype-construction-graph-step.ftl b/Resources/Locale/en-US/construction/steps/prototype-construction-graph-step.ftl index 9cd828f31f..9dcd8dec23 100644 --- a/Resources/Locale/en-US/construction/steps/prototype-construction-graph-step.ftl +++ b/Resources/Locale/en-US/construction/steps/prototype-construction-graph-step.ftl @@ -2,4 +2,4 @@ construction-insert-prototype-no-name = Next, insert {$prototypeName}. # Shown when examining an in-construction object -construction-insert-prototype = Next, insert {$entityName}. \ No newline at end of file +construction-insert-prototype = Next, insert {$entityName}. diff --git a/Resources/Locale/en-US/construction/steps/tool-construction-graph-step.ftl b/Resources/Locale/en-US/construction/steps/tool-construction-graph-step.ftl index ac32fee293..1510c82cc9 100644 --- a/Resources/Locale/en-US/construction/steps/tool-construction-graph-step.ftl +++ b/Resources/Locale/en-US/construction/steps/tool-construction-graph-step.ftl @@ -1 +1 @@ -construction-use-tool-entity = Next, use a [color=cyan]{$toolName}[/color]. \ No newline at end of file +construction-use-tool-entity = Next, use a [color=cyan]{$toolName}[/color]. diff --git a/Resources/Locale/en-US/construction/ui/construction-menu-presenter.ftl b/Resources/Locale/en-US/construction/ui/construction-menu-presenter.ftl index c51752f54a..7961461dd9 100644 --- a/Resources/Locale/en-US/construction/ui/construction-menu-presenter.ftl +++ b/Resources/Locale/en-US/construction/ui/construction-menu-presenter.ftl @@ -1,4 +1,4 @@ -construction-presenter-to-craft = To craft this item, you need to: +construction-presenter-to-craft = To craft this item, you need to: construction-presenter-to-build = To build this, first you need to: construction-presenter-step-wrapper = {$step-number}. {$text} diff --git a/Resources/Locale/en-US/containers/containers.ftl b/Resources/Locale/en-US/containers/containers.ftl index d96383305a..ec76e0be80 100644 --- a/Resources/Locale/en-US/containers/containers.ftl +++ b/Resources/Locale/en-US/containers/containers.ftl @@ -2,4 +2,4 @@ container-verb-text-enter = Enter container-verb-text-empty = Empty ## missed -container-thrown-missed = Missed! \ No newline at end of file +container-thrown-missed = Missed! diff --git a/Resources/Locale/en-US/cvar/cvar-help.ftl b/Resources/Locale/en-US/cvar/cvar-help.ftl index 03f5ab7107..33791410a1 100644 --- a/Resources/Locale/en-US/cvar/cvar-help.ftl +++ b/Resources/Locale/en-US/cvar/cvar-help.ftl @@ -1,4 +1,4 @@ -changecvar-simple-debug_test_cvar = Does nothing. +changecvar-simple-debug_test_cvar = Does nothing. changecvar-full-debug_test_cvar = Just a simple testing cvar. Does nothing. changecvar-simple-events_enabled = Controls if the game should run station events. diff --git a/Resources/Locale/en-US/damage/damage-command.ftl b/Resources/Locale/en-US/damage/damage-command.ftl index 2d6816225c..cbaf889412 100644 --- a/Resources/Locale/en-US/damage/damage-command.ftl +++ b/Resources/Locale/en-US/damage/damage-command.ftl @@ -1,4 +1,4 @@ -## Damage command loc. +## Damage command loc. damage-command-description = Add or remove damage to an entity. damage-command-help = Usage: {$command} [ignoreResistances] [uid] @@ -12,4 +12,4 @@ damage-command-error-euid = {$arg} is not a valid entity uid. damage-command-error-quantity = {$arg} is not a valid quantity. damage-command-error-bool = {$arg} is not a valid bool. damage-command-error-player = No entity attached to session. You must specify a target uid -damage-command-error-args = Invalid number of arguments \ No newline at end of file +damage-command-error-args = Invalid number of arguments diff --git a/Resources/Locale/en-US/damage/damage-force-say.ftl b/Resources/Locale/en-US/damage/damage-force-say.ftl index 83934a181e..283b684d50 100644 --- a/Resources/Locale/en-US/damage/damage-force-say.ftl +++ b/Resources/Locale/en-US/damage/damage-force-say.ftl @@ -1,4 +1,4 @@ -damage-force-say-message-wrap = {$message}-{$suffix} +damage-force-say-message-wrap = {$message}-{$suffix} damage-force-say-message-wrap-no-suffix = {$message}- damage-force-say-1 = GACK! diff --git a/Resources/Locale/en-US/damage/damage-popup-component.ftl b/Resources/Locale/en-US/damage/damage-popup-component.ftl index 3ab9c37c02..d2bea0d7e0 100644 --- a/Resources/Locale/en-US/damage/damage-popup-component.ftl +++ b/Resources/Locale/en-US/damage/damage-popup-component.ftl @@ -7,4 +7,4 @@ *[other] Unknown } -damage-popup-component-switched = Target set to type: { -damage-popup-component-type(setting: $setting) } \ No newline at end of file +damage-popup-component-switched = Target set to type: { -damage-popup-component-type(setting: $setting) } diff --git a/Resources/Locale/en-US/damage/rejuvenate-verb.ftl b/Resources/Locale/en-US/damage/rejuvenate-verb.ftl index 88b499b357..6c6daf372d 100644 --- a/Resources/Locale/en-US/damage/rejuvenate-verb.ftl +++ b/Resources/Locale/en-US/damage/rejuvenate-verb.ftl @@ -1 +1 @@ -rejuvenate-verb-get-data-text = Rejuvenate \ No newline at end of file +rejuvenate-verb-get-data-text = Rejuvenate diff --git a/Resources/Locale/en-US/darts/darts-popup.ftl b/Resources/Locale/en-US/darts/darts-popup.ftl index 82bf7fde53..6d54b022b5 100644 --- a/Resources/Locale/en-US/darts/darts-popup.ftl +++ b/Resources/Locale/en-US/darts/darts-popup.ftl @@ -3,4 +3,4 @@ darts-popup-25 = 25 points darts-popup-10 = 10 points darts-popup-5 = 5 points darts-popup-1 = 1 point -darts-popup-miss = Miss \ No newline at end of file +darts-popup-miss = Miss diff --git a/Resources/Locale/en-US/datasets/names/arachnid_last.ftl b/Resources/Locale/en-US/datasets/names/arachnid_last.ftl index 826b3bc837..21de270fee 100644 --- a/Resources/Locale/en-US/datasets/names/arachnid_last.ftl +++ b/Resources/Locale/en-US/datasets/names/arachnid_last.ftl @@ -65,4 +65,4 @@ names-arachnid-last-dataset-64 = Viridans names-arachnid-last-dataset-65 = Walckenaeri names-arachnid-last-dataset-66 = Walckenaerius names-arachnid-last-dataset-67 = Wisharti -names-arachnid-last-dataset-68 = X-Notata \ No newline at end of file +names-arachnid-last-dataset-68 = X-Notata diff --git a/Resources/Locale/en-US/datasets/names/wizard_first.ftl b/Resources/Locale/en-US/datasets/names/wizard_first.ftl index ad11ea529c..8a30788fd3 100644 --- a/Resources/Locale/en-US/datasets/names/wizard_first.ftl +++ b/Resources/Locale/en-US/datasets/names/wizard_first.ftl @@ -41,4 +41,4 @@ names-wizard-first-dataset-40 = Xom names-wizard-first-dataset-41 = Yredelemnul names-wizard-first-dataset-42 = Yodalf names-wizard-first-dataset-43 = Zartemis -names-wizard-first-dataset-44 = Zin \ No newline at end of file +names-wizard-first-dataset-44 = Zin diff --git a/Resources/Locale/en-US/decals/decal-window.ftl b/Resources/Locale/en-US/decals/decal-window.ftl index ce1be838ba..57f82fe9e5 100644 --- a/Resources/Locale/en-US/decals/decal-window.ftl +++ b/Resources/Locale/en-US/decals/decal-window.ftl @@ -1,4 +1,4 @@ -decal-placer-window-title = Decal Placer +decal-placer-window-title = Decal Placer decal-placer-window-use-color = Custom Color decal-placer-window-rotation = Rotation decal-placer-window-zindex = Draw Depth diff --git a/Resources/Locale/en-US/detail-examinable/detail-examinable.ftl b/Resources/Locale/en-US/detail-examinable/detail-examinable.ftl index 12754c6cbb..486fac6ff6 100644 --- a/Resources/Locale/en-US/detail-examinable/detail-examinable.ftl +++ b/Resources/Locale/en-US/detail-examinable/detail-examinable.ftl @@ -1,2 +1,2 @@ -detail-examinable-verb-text = Detail +detail-examinable-verb-text = Detail detail-examinable-verb-disabled = View the object in greater detail. diff --git a/Resources/Locale/en-US/devices/network-configurator.ftl b/Resources/Locale/en-US/devices/network-configurator.ftl index 092a3fb0fa..78f02ca2c9 100644 --- a/Resources/Locale/en-US/devices/network-configurator.ftl +++ b/Resources/Locale/en-US/devices/network-configurator.ftl @@ -1,4 +1,4 @@ -# Popups +# Popups network-configurator-device-saved = Successfully saved network device {$device} with address {$address}! network-configurator-device-failed = Failed to save network device {$device}! No address assigned! diff --git a/Resources/Locale/en-US/discord/round-notifications.ftl b/Resources/Locale/en-US/discord/round-notifications.ftl index ce5045452b..7402eeee0c 100644 --- a/Resources/Locale/en-US/discord/round-notifications.ftl +++ b/Resources/Locale/en-US/discord/round-notifications.ftl @@ -1,4 +1,4 @@ -discord-round-notifications-new = A new round is starting! +discord-round-notifications-new = A new round is starting! discord-round-notifications-started = Round #{$id} on map "{$map}" started. discord-round-notifications-end = Round #{$id} has ended. It lasted for {$hours} hours, {$minutes} minutes, and {$seconds} seconds. discord-round-notifications-end-ping = <@&{$roleId}>, a new round will start soon! diff --git a/Resources/Locale/en-US/disease/disease.ftl b/Resources/Locale/en-US/disease/disease.ftl index 296fb4d925..28ece3a988 100644 --- a/Resources/Locale/en-US/disease/disease.ftl +++ b/Resources/Locale/en-US/disease/disease.ftl @@ -1 +1 @@ -disease-vomit = {CAPITALIZE(THE($person))} vomits. \ No newline at end of file +disease-vomit = {CAPITALIZE(THE($person))} vomits. diff --git a/Resources/Locale/en-US/disposal/tube-connections-command.ftl b/Resources/Locale/en-US/disposal/tube-connections-command.ftl index 44b8682ce5..9deb2d15f2 100644 --- a/Resources/Locale/en-US/disposal/tube-connections-command.ftl +++ b/Resources/Locale/en-US/disposal/tube-connections-command.ftl @@ -1,2 +1,2 @@ tube-connections-command-description = Shows all the directions that a tube can connect in. -tube-connections-command-help-text = Usage: {$command} \ No newline at end of file +tube-connections-command-help-text = Usage: {$command} diff --git a/Resources/Locale/en-US/disposal/tube/components/disposal-tube-component.ftl b/Resources/Locale/en-US/disposal/tube/components/disposal-tube-component.ftl index 251731f913..2ca556adde 100644 --- a/Resources/Locale/en-US/disposal/tube/components/disposal-tube-component.ftl +++ b/Resources/Locale/en-US/disposal/tube/components/disposal-tube-component.ftl @@ -2,4 +2,4 @@ disposal-tube-component-popup-directions-text = {$directions} ## TubeDirectionVerb -tube-direction-verb-get-data-text = Tube Directions \ No newline at end of file +tube-direction-verb-get-data-text = Tube Directions diff --git a/Resources/Locale/en-US/doors/components/airlock-component.ftl b/Resources/Locale/en-US/doors/components/airlock-component.ftl index 27861ec4e2..424ac24cf1 100644 --- a/Resources/Locale/en-US/doors/components/airlock-component.ftl +++ b/Resources/Locale/en-US/doors/components/airlock-component.ftl @@ -1,4 +1,4 @@ ## AirlockComponent airlock-component-cannot-pry-is-bolted-message = The airlock's bolts prevent it from being forced! -airlock-component-cannot-pry-is-powered-message = The powered motors block your efforts! \ No newline at end of file +airlock-component-cannot-pry-is-powered-message = The powered motors block your efforts! diff --git a/Resources/Locale/en-US/doors/door.ftl b/Resources/Locale/en-US/doors/door.ftl index 04bbd8c07a..1103141d64 100644 --- a/Resources/Locale/en-US/doors/door.ftl +++ b/Resources/Locale/en-US/doors/door.ftl @@ -1 +1 @@ -door-pry = Pry door \ No newline at end of file +door-pry = Pry door diff --git a/Resources/Locale/en-US/drag-drop/drag-drop-system.ftl b/Resources/Locale/en-US/drag-drop/drag-drop-system.ftl index 421f598959..b89226192f 100644 --- a/Resources/Locale/en-US/drag-drop/drag-drop-system.ftl +++ b/Resources/Locale/en-US/drag-drop/drag-drop-system.ftl @@ -1 +1 @@ -drag-drop-system-out-of-range-text = You can't reach there! \ No newline at end of file +drag-drop-system-out-of-range-text = You can't reach there! diff --git a/Resources/Locale/en-US/engineering/inflatables.ftl b/Resources/Locale/en-US/engineering/inflatables.ftl index 0c4a2d44c0..188244eecf 100644 --- a/Resources/Locale/en-US/engineering/inflatables.ftl +++ b/Resources/Locale/en-US/engineering/inflatables.ftl @@ -1 +1 @@ -inflatable-safe-disassembly = You expertly use { THE($item) } to open the valve on { THE($target) }, and start deflating { OBJECT($target) } without causing damage. +inflatable-safe-disassembly = You expertly use { THE($item) } to open the valve on { THE($target) }, and start deflating { OBJECT($target) } without causing damage. diff --git a/Resources/Locale/en-US/ensnare/ensnare-component.ftl b/Resources/Locale/en-US/ensnare/ensnare-component.ftl index 1566b7cffa..9ecb402025 100644 --- a/Resources/Locale/en-US/ensnare/ensnare-component.ftl +++ b/Resources/Locale/en-US/ensnare/ensnare-component.ftl @@ -1,4 +1,4 @@ -ensnare-component-try-free = You struggle to remove {$ensnare} that's ensnaring you! +ensnare-component-try-free = You struggle to remove {$ensnare} that's ensnaring you! ensnare-component-try-free-complete = You successfully free yourself from the {$ensnare}! ensnare-component-try-free-fail = You fail to free yourself from the {$ensnare}! diff --git a/Resources/Locale/en-US/entity-systems/bin-system/bin-system.ftl b/Resources/Locale/en-US/entity-systems/bin-system/bin-system.ftl index eb0f6a35b0..fddeb5e5cb 100644 --- a/Resources/Locale/en-US/entity-systems/bin-system/bin-system.ftl +++ b/Resources/Locale/en-US/entity-systems/bin-system/bin-system.ftl @@ -1 +1 @@ -bin-component-on-examine-text = Looks like there's {$count} items left. +bin-component-on-examine-text = Looks like there's {$count} items left. diff --git a/Resources/Locale/en-US/fluids/components/drain-component.ftl b/Resources/Locale/en-US/fluids/components/drain-component.ftl index 897971a788..5a428997b9 100644 --- a/Resources/Locale/en-US/fluids/components/drain-component.ftl +++ b/Resources/Locale/en-US/fluids/components/drain-component.ftl @@ -1,4 +1,4 @@ -drain-component-empty-verb-using-is-empty-message = { CAPITALIZE(THE($object)) } is empty! +drain-component-empty-verb-using-is-empty-message = { CAPITALIZE(THE($object)) } is empty! drain-component-empty-verb-target-is-full-message = { CAPITALIZE(THE($object)) } is full! drain-component-empty-verb-inhand = Empty {$object} drain-component-examine-hint-full = [color="blue"]It is filled to the brim. Maybe a plunger can help?[/color] diff --git a/Resources/Locale/en-US/follower/follow-verb.ftl b/Resources/Locale/en-US/follower/follow-verb.ftl index b5538b806f..b3bf780402 100644 --- a/Resources/Locale/en-US/follower/follow-verb.ftl +++ b/Resources/Locale/en-US/follower/follow-verb.ftl @@ -1,2 +1,2 @@ -verb-follow-text = Follow +verb-follow-text = Follow verb-follow-me-text = Make follow diff --git a/Resources/Locale/en-US/forensics/residues.ftl b/Resources/Locale/en-US/forensics/residues.ftl index 3c5fe3c96d..44b458fd02 100644 --- a/Resources/Locale/en-US/forensics/residues.ftl +++ b/Resources/Locale/en-US/forensics/residues.ftl @@ -8,4 +8,4 @@ residue-green = green residue-blue = blue residue-red = red residue-grey = grey -residue-brown = brown \ No newline at end of file +residue-brown = brown diff --git a/Resources/Locale/en-US/game-ticking/game-presets/preset-allatonce.ftl b/Resources/Locale/en-US/game-ticking/game-presets/preset-allatonce.ftl index ba4f62c4ca..74d4cb953f 100644 --- a/Resources/Locale/en-US/game-ticking/game-presets/preset-allatonce.ftl +++ b/Resources/Locale/en-US/game-ticking/game-presets/preset-allatonce.ftl @@ -2,4 +2,4 @@ all-at-once-title = All at once all-at-once-description = It's just not your day... aller-at-once-title = Aller at once -aller-at-once-description = You have fucked up now. You *have* fucked up now. \ No newline at end of file +aller-at-once-description = You have fucked up now. You *have* fucked up now. diff --git a/Resources/Locale/en-US/game-ticking/game-presets/preset-survival.ftl b/Resources/Locale/en-US/game-ticking/game-presets/preset-survival.ftl index 492bb9e341..cbfe616e70 100644 --- a/Resources/Locale/en-US/game-ticking/game-presets/preset-survival.ftl +++ b/Resources/Locale/en-US/game-ticking/game-presets/preset-survival.ftl @@ -2,4 +2,4 @@ survival-title = Survival survival-description = No internal threats, but how long can the station survive increasingly chaotic and frequent events? kessler-syndrome-title = Kessler Syndrome -kessler-syndrome-description = No internal threats, but the station is quickly falling into a belt of meteors! \ No newline at end of file +kessler-syndrome-description = No internal threats, but the station is quickly falling into a belt of meteors! diff --git a/Resources/Locale/en-US/game-ticking/game-presets/preset-zombies.ftl b/Resources/Locale/en-US/game-ticking/game-presets/preset-zombies.ftl index 4d127d9fa5..855609e6b1 100644 --- a/Resources/Locale/en-US/game-ticking/game-presets/preset-zombies.ftl +++ b/Resources/Locale/en-US/game-ticking/game-presets/preset-zombies.ftl @@ -1,4 +1,4 @@ -zombie-title = Zombies +zombie-title = Zombies zombie-description = The undead have been unleashed on the station! Work with the crew to survive the outbreak and secure the station. zombieteors-title = Zombieteors diff --git a/Resources/Locale/en-US/game-ticking/game-rules/rule-death-match.ftl b/Resources/Locale/en-US/game-ticking/game-rules/rule-death-match.ftl index b9754ed9aa..a02a3133b3 100644 --- a/Resources/Locale/en-US/game-ticking/game-rules/rule-death-match.ftl +++ b/Resources/Locale/en-US/game-ticking/game-rules/rule-death-match.ftl @@ -1,3 +1,3 @@ rule-death-match-added-announcement = The game is now a death match. Kill everybody else to win! rule-death-match-check-winner-stalemate = Everybody is dead, it's a stalemate! -rule-death-match-check-winner = {$winner} wins the death match! \ No newline at end of file +rule-death-match-check-winner = {$winner} wins the death match! diff --git a/Resources/Locale/en-US/game-ticking/game-rules/rule-traitor.ftl b/Resources/Locale/en-US/game-ticking/game-rules/rule-traitor.ftl index 22b37313aa..6de010f932 100644 --- a/Resources/Locale/en-US/game-ticking/game-rules/rule-traitor.ftl +++ b/Resources/Locale/en-US/game-ticking/game-rules/rule-traitor.ftl @@ -1 +1 @@ -rule-traitor-added-announcement = Hello crew! Have a good shift! \ No newline at end of file +rule-traitor-added-announcement = Hello crew! Have a good shift! diff --git a/Resources/Locale/en-US/gases/gas-tank.ftl b/Resources/Locale/en-US/gases/gas-tank.ftl index 03af8cb7a3..47b7143465 100644 --- a/Resources/Locale/en-US/gases/gas-tank.ftl +++ b/Resources/Locale/en-US/gases/gas-tank.ftl @@ -1 +1 @@ -gas-max-pressure-alert = The pressure relief valve bursts open! +gas-max-pressure-alert = The pressure relief valve bursts open! diff --git a/Resources/Locale/en-US/ghost/roles/ghostrole-spawner-verb-selectable.ftl b/Resources/Locale/en-US/ghost/roles/ghostrole-spawner-verb-selectable.ftl index 9d649a5e07..0b483b74d1 100644 --- a/Resources/Locale/en-US/ghost/roles/ghostrole-spawner-verb-selectable.ftl +++ b/Resources/Locale/en-US/ghost/roles/ghostrole-spawner-verb-selectable.ftl @@ -1 +1 @@ -ghostrole-spawner-select = Selected: {$mode} \ No newline at end of file +ghostrole-spawner-select = Selected: {$mode} diff --git a/Resources/Locale/en-US/ghost/roles/make-ghost-role-verb.ftl b/Resources/Locale/en-US/ghost/roles/make-ghost-role-verb.ftl index 6ff4d7e89c..265580e8f5 100644 --- a/Resources/Locale/en-US/ghost/roles/make-ghost-role-verb.ftl +++ b/Resources/Locale/en-US/ghost/roles/make-ghost-role-verb.ftl @@ -1 +1 @@ -make-ghost-role-verb-get-data-text = Make Ghost Role \ No newline at end of file +make-ghost-role-verb-get-data-text = Make Ghost Role diff --git a/Resources/Locale/en-US/guidebook/chemistry/core.ftl b/Resources/Locale/en-US/guidebook/chemistry/core.ftl index 502675bd9e..b430bd5913 100644 --- a/Resources/Locale/en-US/guidebook/chemistry/core.ftl +++ b/Resources/Locale/en-US/guidebook/chemistry/core.ftl @@ -1,4 +1,4 @@ -guidebook-reagent-effect-description = +guidebook-reagent-effect-description = {$quantity -> [0] {""} *[other] If there is at least {$quantity}u {$reagent},{" "} diff --git a/Resources/Locale/en-US/guidebook/entity-effects/healthchange.ftl b/Resources/Locale/en-US/guidebook/entity-effects/healthchange.ftl index d5eba5b02c..435722c5fe 100644 --- a/Resources/Locale/en-US/guidebook/entity-effects/healthchange.ftl +++ b/Resources/Locale/en-US/guidebook/entity-effects/healthchange.ftl @@ -1,4 +1,4 @@ -health-change-display = +health-change-display = { $deltasign -> [-1] [color=green]{NATURALFIXED($amount, 2)}[/color] {$kind} *[1] [color=red]{NATURALFIXED($amount, 2)}[/color] {$kind} diff --git a/Resources/Locale/en-US/guidebook/entity-effects/statuseffects.ftl b/Resources/Locale/en-US/guidebook/entity-effects/statuseffects.ftl index fe92b2ff06..3cfc843ada 100644 --- a/Resources/Locale/en-US/guidebook/entity-effects/statuseffects.ftl +++ b/Resources/Locale/en-US/guidebook/entity-effects/statuseffects.ftl @@ -1,4 +1,4 @@ -entity-effect-status-effect-Stun = stunning +entity-effect-status-effect-Stun = stunning entity-effect-status-effect-KnockedDown = knockdown entity-effect-status-effect-Jitter = jittering entity-effect-status-effect-SeeingRainbows = hallucinations diff --git a/Resources/Locale/en-US/guidebook/verb.ftl b/Resources/Locale/en-US/guidebook/verb.ftl index ca921f1213..0d7cd78e0a 100644 --- a/Resources/Locale/en-US/guidebook/verb.ftl +++ b/Resources/Locale/en-US/guidebook/verb.ftl @@ -1 +1 @@ -guide-help-verb = Help \ No newline at end of file +guide-help-verb = Help diff --git a/Resources/Locale/en-US/health-examinable/health-examinable-comp.ftl b/Resources/Locale/en-US/health-examinable/health-examinable-comp.ftl index af31837ab8..bfc3dcc821 100644 --- a/Resources/Locale/en-US/health-examinable/health-examinable-comp.ftl +++ b/Resources/Locale/en-US/health-examinable/health-examinable-comp.ftl @@ -1,2 +1,2 @@ -health-examinable-verb-text = Health +health-examinable-verb-text = Health health-examinable-verb-disabled = Perform a basic health examination in close range. diff --git a/Resources/Locale/en-US/holiday/gifts.ftl b/Resources/Locale/en-US/holiday/gifts.ftl index 3374dc61d7..62d43d2258 100644 --- a/Resources/Locale/en-US/holiday/gifts.ftl +++ b/Resources/Locale/en-US/holiday/gifts.ftl @@ -1,3 +1,3 @@ -gift-packin-contains = This present appears to contain {INDEFINITE($name)} {$name}. +gift-packin-contains = This present appears to contain {INDEFINITE($name)} {$name}. christmas-tree-got-gift = After a bit of digging, you find a present with your name on it! christmas-tree-no-gift = There isn't a gift under the tree for you... diff --git a/Resources/Locale/en-US/holopad/holopad.ftl b/Resources/Locale/en-US/holopad/holopad.ftl index a843b6a0e4..283fb1a719 100644 --- a/Resources/Locale/en-US/holopad/holopad.ftl +++ b/Resources/Locale/en-US/holopad/holopad.ftl @@ -1,4 +1,4 @@ -# Window headers +# Window headers holopad-window-title = {CAPITALIZE($title)} holopad-window-subtitle = [color=white][bold]Holographic communication system[/bold][/color] holopad-window-options = [color=darkgray][font size=10][italic]Please select an option from the list below[/italic][/font][/color] diff --git a/Resources/Locale/en-US/identity/identity-system.ftl b/Resources/Locale/en-US/identity/identity-system.ftl index efaadb8188..f53e5d5160 100644 --- a/Resources/Locale/en-US/identity/identity-system.ftl +++ b/Resources/Locale/en-US/identity/identity-system.ftl @@ -1,4 +1,4 @@ -identity-unknown-name = ??? +identity-unknown-name = ??? identity-age-young = young identity-age-middle-aged = middle-aged diff --git a/Resources/Locale/en-US/immovable-rod/immovable-rod.ftl b/Resources/Locale/en-US/immovable-rod/immovable-rod.ftl index 6843e350b0..7aa6667ae3 100644 --- a/Resources/Locale/en-US/immovable-rod/immovable-rod.ftl +++ b/Resources/Locale/en-US/immovable-rod/immovable-rod.ftl @@ -1,4 +1,4 @@ -immovable-rod-collided-rod-not-good = Oh fuck, that can't be good. +immovable-rod-collided-rod-not-good = Oh fuck, that can't be good. immovable-rod-penetrated-mob = {CAPITALIZE(THE($rod))} cleanly eviscerates {THE($mob)}! immovable-rod-consumed-none = {CAPITALIZE(THE($rod))} has consumed zero souls. diff --git a/Resources/Locale/en-US/implant/chameleon-controller.ftl b/Resources/Locale/en-US/implant/chameleon-controller.ftl index d7e3d1484a..7b9049a1b5 100644 --- a/Resources/Locale/en-US/implant/chameleon-controller.ftl +++ b/Resources/Locale/en-US/implant/chameleon-controller.ftl @@ -1 +1 @@ -chameleon-controller-ui-window-name = Chameleon controls +chameleon-controller-ui-window-name = Chameleon controls diff --git a/Resources/Locale/en-US/info/rules.ftl b/Resources/Locale/en-US/info/rules.ftl index db5c9d656b..cf9169bf3c 100644 --- a/Resources/Locale/en-US/info/rules.ftl +++ b/Resources/Locale/en-US/info/rules.ftl @@ -1,4 +1,4 @@ -# Rules +# Rules ui-rules-header = Wizard's Den Official Server Rules ui-rules-header-rp = Wizard's Den Roleplay Official Server Rules diff --git a/Resources/Locale/en-US/intellicard/intellicard.ftl b/Resources/Locale/en-US/intellicard/intellicard.ftl index aed155a120..d18e0af3e9 100644 --- a/Resources/Locale/en-US/intellicard/intellicard.ftl +++ b/Resources/Locale/en-US/intellicard/intellicard.ftl @@ -1,3 +1,3 @@ # General intellicard-core-occupied = The AI core is already occupied by another digital consciousness. -intellicard-core-empty = The AI core has no digital consciousness to download. \ No newline at end of file +intellicard-core-empty = The AI core has no digital consciousness to download. diff --git a/Resources/Locale/en-US/interaction/in-range-unoccluded-verb.ftl b/Resources/Locale/en-US/interaction/in-range-unoccluded-verb.ftl index 66d136fbfc..091b053697 100644 --- a/Resources/Locale/en-US/interaction/in-range-unoccluded-verb.ftl +++ b/Resources/Locale/en-US/interaction/in-range-unoccluded-verb.ftl @@ -1,3 +1,3 @@ in-range-unoccluded-verb-get-data-text = In Range Unoccluded in-range-unoccluded-verb-on-activate-not-occluded = Not occluded -in-range-unoccluded-verb-on-activate-occluded = Occluded \ No newline at end of file +in-range-unoccluded-verb-on-activate-occluded = Occluded diff --git a/Resources/Locale/en-US/interaction/smart-equip-system.ftl b/Resources/Locale/en-US/interaction/smart-equip-system.ftl index 8c61116caa..b87f6264b4 100644 --- a/Resources/Locale/en-US/interaction/smart-equip-system.ftl +++ b/Resources/Locale/en-US/interaction/smart-equip-system.ftl @@ -1,4 +1,4 @@ -smart-equip-missing-equipment-slot = You have no {$slotName} slot to interact with! +smart-equip-missing-equipment-slot = You have no {$slotName} slot to interact with! smart-equip-empty-equipment-slot = There's nothing in your {$slotName} slot to take out! smart-equip-no-valid-item-slot-insert = There's no valid item slot for {THE($item)} to go into! smart-equip-cant-drop = You can't drop that! diff --git a/Resources/Locale/en-US/inventory/human-inventory-interface-controller.ftl b/Resources/Locale/en-US/inventory/human-inventory-interface-controller.ftl index 9a098d960a..b82e6866ce 100644 --- a/Resources/Locale/en-US/inventory/human-inventory-interface-controller.ftl +++ b/Resources/Locale/en-US/inventory/human-inventory-interface-controller.ftl @@ -1 +1 @@ -human-inventory-window-title = Your Inventory \ No newline at end of file +human-inventory-window-title = Your Inventory diff --git a/Resources/Locale/en-US/inventory/item-status.ftl b/Resources/Locale/en-US/inventory/item-status.ftl index a53ba8be7d..f3d80ca9bf 100644 --- a/Resources/Locale/en-US/inventory/item-status.ftl +++ b/Resources/Locale/en-US/inventory/item-status.ftl @@ -1 +1 @@ -item-status-not-held = No held item +item-status-not-held = No held item diff --git a/Resources/Locale/en-US/job/department-desc.ftl b/Resources/Locale/en-US/job/department-desc.ftl index 00c1e4a617..4d4be3c637 100644 --- a/Resources/Locale/en-US/job/department-desc.ftl +++ b/Resources/Locale/en-US/job/department-desc.ftl @@ -1,4 +1,4 @@ -department-Cargo-description = Acquire and deliver useful supplies for the rest of the station. +department-Cargo-description = Acquire and deliver useful supplies for the rest of the station. department-Civilian-description = Crew members without formal jobs. department-Command-description = Manage the crew and keep them working efficiently. department-CentralCommand-description = Manage the crew and keep them working efficiently. diff --git a/Resources/Locale/en-US/job/job.ftl b/Resources/Locale/en-US/job/job.ftl index d999c0d92d..b4213c0804 100644 --- a/Resources/Locale/en-US/job/job.ftl +++ b/Resources/Locale/en-US/job/job.ftl @@ -3,4 +3,4 @@ job-greet-introduce-job-name = Your role is: {$jobName}. job-greet-important-disconnect-admin-notify = You are playing a job that is important for Game Progression. If you have to disconnect, please notify the admins via ahelp. job-greet-supervisors-warning = As the {$jobName} you answer directly to {$supervisors}. Special circumstances may change this. job-greet-crew-shortages = As this station was initially staffed with a skeleton crew, additional access has been added to your ID card. -job-not-available-wait-in-lobby = The round has started, but you did not receive any of your preferred job roles (or have no preferred job roles selected) and chose to remain in the lobby. You can change this behavior on the customization screen. \ No newline at end of file +job-not-available-wait-in-lobby = The round has started, but you did not receive any of your preferred job roles (or have no preferred job roles selected) and chose to remain in the lobby. You can change this behavior on the customization screen. diff --git a/Resources/Locale/en-US/job/role-ban-command.ftl b/Resources/Locale/en-US/job/role-ban-command.ftl index 148fb9a7b0..1e7a692860 100644 --- a/Resources/Locale/en-US/job/role-ban-command.ftl +++ b/Resources/Locale/en-US/job/role-ban-command.ftl @@ -1,4 +1,4 @@ -### Localization for role ban command +### Localization for role ban command cmd-roleban-desc = Bans a player from a role cmd-roleban-help = Usage: roleban [duration in minutes, leave out or 0 for permanent ban] diff --git a/Resources/Locale/en-US/job/role-requirements.ftl b/Resources/Locale/en-US/job/role-requirements.ftl index 37265b875c..4c95468646 100644 --- a/Resources/Locale/en-US/job/role-requirements.ftl +++ b/Resources/Locale/en-US/job/role-requirements.ftl @@ -1,4 +1,4 @@ -role-timer-department-insufficient = You require [color=yellow]{$time}[/color] more playtime in the [color={$departmentColor}]{$department}[/color] department to unlock this. +role-timer-department-insufficient = You require [color=yellow]{$time}[/color] more playtime in the [color={$departmentColor}]{$department}[/color] department to unlock this. role-timer-department-too-high = You require [color=yellow]{$time}[/color] less playtime in the [color={$departmentColor}]{$department}[/color] department to select this. (Are you trying to play a trainee role?) role-timer-overall-insufficient = You require [color=yellow]{$time}[/color] more overall playtime to unlock this. role-timer-overall-too-high = You require [color=yellow]{$time}[/color] less overall playtime to select this. (Are you trying to play a trainee role?) diff --git a/Resources/Locale/en-US/job/role-whitelist.ftl b/Resources/Locale/en-US/job/role-whitelist.ftl index 3149f182b6..70031a650d 100644 --- a/Resources/Locale/en-US/job/role-whitelist.ftl +++ b/Resources/Locale/en-US/job/role-whitelist.ftl @@ -1 +1 @@ -role-not-whitelisted = You are not whitelisted to play this role. +role-not-whitelisted = You are not whitelisted to play this role. diff --git a/Resources/Locale/en-US/kitchen/components/kitchen-spike-component.ftl b/Resources/Locale/en-US/kitchen/components/kitchen-spike-component.ftl index e2c4fd73ab..818923441a 100644 --- a/Resources/Locale/en-US/kitchen/components/kitchen-spike-component.ftl +++ b/Resources/Locale/en-US/kitchen/components/kitchen-spike-component.ftl @@ -1,4 +1,4 @@ -comp-kitchen-spike-begin-hook-self = You begin dragging yourself onto { THE($hook) }! +comp-kitchen-spike-begin-hook-self = You begin dragging yourself onto { THE($hook) }! comp-kitchen-spike-begin-hook-self-other = { CAPITALIZE(THE($victim)) } begins dragging { REFLEXIVE($victim) } onto { THE($hook) }! comp-kitchen-spike-begin-hook-other-self = You begin dragging { CAPITALIZE(THE($victim)) } onto { THE($hook) }! diff --git a/Resources/Locale/en-US/land-mines/land-mines.ftl b/Resources/Locale/en-US/land-mines/land-mines.ftl index f6ce2aa1f7..c0ee8a6a00 100644 --- a/Resources/Locale/en-US/land-mines/land-mines.ftl +++ b/Resources/Locale/en-US/land-mines/land-mines.ftl @@ -1,2 +1,2 @@ -land-mine-triggered = You step on the { $mine }! +land-mine-triggered = You step on the { $mine }! land-mine-verb-begin = Arm diff --git a/Resources/Locale/en-US/light/components/powered-ligth-component.ftl b/Resources/Locale/en-US/light/components/powered-ligth-component.ftl index 3a4c7ab4f9..3b68afc196 100644 --- a/Resources/Locale/en-US/light/components/powered-ligth-component.ftl +++ b/Resources/Locale/en-US/light/components/powered-ligth-component.ftl @@ -1 +1 @@ -powered-light-component-burn-hand = You burn your hand! \ No newline at end of file +powered-light-component-burn-hand = You burn your hand! diff --git a/Resources/Locale/en-US/light/components/unpowered-flashlight-component.ftl b/Resources/Locale/en-US/light/components/unpowered-flashlight-component.ftl index 782eed8364..fe40dadd81 100644 --- a/Resources/Locale/en-US/light/components/unpowered-flashlight-component.ftl +++ b/Resources/Locale/en-US/light/components/unpowered-flashlight-component.ftl @@ -1,2 +1,2 @@ # ToggleFlashlightVerb -toggle-flashlight-verb-get-data-text = Toggle flashlight \ No newline at end of file +toggle-flashlight-verb-get-data-text = Toggle flashlight diff --git a/Resources/Locale/en-US/lock/bypass-lock-component.ftl b/Resources/Locale/en-US/lock/bypass-lock-component.ftl index d37996041d..8c3d7785f9 100644 --- a/Resources/Locale/en-US/lock/bypass-lock-component.ftl +++ b/Resources/Locale/en-US/lock/bypass-lock-component.ftl @@ -1,4 +1,4 @@ -bypass-lock-verb = Force open the access lock +bypass-lock-verb = Force open the access lock bypass-lock-disabled-healthy = The lock needs to be damaged further before it can be forced open. bypass-lock-disabled-wrong-tool = This lock requires {$quality} to be forced open. bypass-lock-disabled-already-open = The lock is already open. diff --git a/Resources/Locale/en-US/lock/locking-whitelist-component.ftl b/Resources/Locale/en-US/lock/locking-whitelist-component.ftl index 182814c2c5..afd1f6b5b9 100644 --- a/Resources/Locale/en-US/lock/locking-whitelist-component.ftl +++ b/Resources/Locale/en-US/lock/locking-whitelist-component.ftl @@ -1 +1 @@ -locking-whitelist-component-lock-toggle-deny = You can't toggle the lock. +locking-whitelist-component-lock-toggle-deny = You can't toggle the lock. diff --git a/Resources/Locale/en-US/machine-linking/components/signal-linker-component.ftl b/Resources/Locale/en-US/machine-linking/components/signal-linker-component.ftl index bc4d0acf9a..9b821578ee 100644 --- a/Resources/Locale/en-US/machine-linking/components/signal-linker-component.ftl +++ b/Resources/Locale/en-US/machine-linking/components/signal-linker-component.ftl @@ -14,4 +14,4 @@ signal-linking-verb-text-link-default = Link default ports signal-linking-verb-success = Connected all default {$machine} links. signal-linking-verb-fail = Failed to connect all default {$machine} links. signal-linking-verb-disabled-no-transmitter = First interact with a transmitter, then link default ports. -signal-linking-verb-disabled-no-receiver = First interact with a receiver, then link default ports. \ No newline at end of file +signal-linking-verb-disabled-no-receiver = First interact with a receiver, then link default ports. diff --git a/Resources/Locale/en-US/magic/magic.ftl b/Resources/Locale/en-US/magic/magic.ftl index 4c8a5fc51d..71d500e631 100644 --- a/Resources/Locale/en-US/magic/magic.ftl +++ b/Resources/Locale/en-US/magic/magic.ftl @@ -1 +1 @@ -spell-requirements-failed = Missing requirements to cast this spell! +spell-requirements-failed = Missing requirements to cast this spell! diff --git a/Resources/Locale/en-US/magic/spells-actions.ftl b/Resources/Locale/en-US/magic/spells-actions.ftl index 11dceef536..48019f27d9 100644 --- a/Resources/Locale/en-US/magic/spells-actions.ftl +++ b/Resources/Locale/en-US/magic/spells-actions.ftl @@ -8,4 +8,4 @@ action-speech-spell-summon-magic = RYGOIN FEMA-VERECO action-speech-spell-mind-swap = GIN'YU CAPAN! action-speech-spell-cluwne = !KNOH action-speech-spell-slip = SLEE PARRI! -action-speech-spell-charge = DI'RI CEL! \ No newline at end of file +action-speech-spell-charge = DI'RI CEL! diff --git a/Resources/Locale/en-US/mapping/editor.ftl b/Resources/Locale/en-US/mapping/editor.ftl index 153df531e2..919824f2e5 100644 --- a/Resources/Locale/en-US/mapping/editor.ftl +++ b/Resources/Locale/en-US/mapping/editor.ftl @@ -4,4 +4,4 @@ mapping-decals = Decals mapping-replace = Replace mapping-erase-entity = Erase Entity -mapping-erase-decal = Erase Decal \ No newline at end of file +mapping-erase-decal = Erase Decal diff --git a/Resources/Locale/en-US/markings/scars.ftl b/Resources/Locale/en-US/markings/scars.ftl index 75eedf0cd2..352465ff23 100644 --- a/Resources/Locale/en-US/markings/scars.ftl +++ b/Resources/Locale/en-US/markings/scars.ftl @@ -32,4 +32,4 @@ marking-ScarEyeRightSmall-scar_eye_right_small = Right Eye Scar (Small) marking-ScarEyeRightSmall = Small Eye Scar (Right) marking-ScarEyeLeftSmall-scar_eye_left_small = Left Eye Scar (Small) -marking-ScarEyeLeftSmall = Small Eye Scar (Left) \ No newline at end of file +marking-ScarEyeLeftSmall = Small Eye Scar (Left) diff --git a/Resources/Locale/en-US/markings/undergarment.ftl b/Resources/Locale/en-US/markings/undergarment.ftl index 4eebee641a..86d40c6545 100644 --- a/Resources/Locale/en-US/markings/undergarment.ftl +++ b/Resources/Locale/en-US/markings/undergarment.ftl @@ -51,4 +51,4 @@ marking-UndergarmentBottomBoxersVulpkanin-boxers_vulpkanin = Boxers marking-UndergarmentBottomBriefsVulpkanin = Briefs marking-UndergarmentBottomBriefsVulpkanin-briefs_vulpkanin = Briefs marking-UndergarmentBottomSatinVulpkanin = Satin -marking-UndergarmentBottomSatinVulpkanin-satin_vulpkanin = Satin \ No newline at end of file +marking-UndergarmentBottomSatinVulpkanin-satin_vulpkanin = Satin diff --git a/Resources/Locale/en-US/medical/components/biomass-reclaimer-component.ftl b/Resources/Locale/en-US/medical/components/biomass-reclaimer-component.ftl index 443429c1ef..1ab89c1fb3 100644 --- a/Resources/Locale/en-US/medical/components/biomass-reclaimer-component.ftl +++ b/Resources/Locale/en-US/medical/components/biomass-reclaimer-component.ftl @@ -1 +1 @@ -biomass-reclaimer-suicide-others = {CAPITALIZE(THE($victim))} threw themselves into the biomass reclaimer! +biomass-reclaimer-suicide-others = {CAPITALIZE(THE($victim))} threw themselves into the biomass reclaimer! diff --git a/Resources/Locale/en-US/medical/components/crew-monitoring-component.ftl b/Resources/Locale/en-US/medical/components/crew-monitoring-component.ftl index 5629515845..db9fb4ea6b 100644 --- a/Resources/Locale/en-US/medical/components/crew-monitoring-component.ftl +++ b/Resources/Locale/en-US/medical/components/crew-monitoring-component.ftl @@ -1,4 +1,4 @@ -## UI +## UI crew-monitoring-ui-title = Crew Monitoring Console diff --git a/Resources/Locale/en-US/medical/components/cryo-pod-component.ftl b/Resources/Locale/en-US/medical/components/cryo-pod-component.ftl index 077bc26663..657cb0e60a 100644 --- a/Resources/Locale/en-US/medical/components/cryo-pod-component.ftl +++ b/Resources/Locale/en-US/medical/components/cryo-pod-component.ftl @@ -1,4 +1,4 @@ -# Ejection verb label. +# Ejection verb label. cryo-pod-verb-noun-occupant = Patient # Examine text showing whether there's a beaker in the pod and if it is empty. cryo-pod-examine = There's {INDEFINITE($beaker)} {$beaker} in here. diff --git a/Resources/Locale/en-US/medical/components/defibrillator.ftl b/Resources/Locale/en-US/medical/components/defibrillator.ftl index 618c6775e8..6ec2d87ada 100644 --- a/Resources/Locale/en-US/medical/components/defibrillator.ftl +++ b/Resources/Locale/en-US/medical/components/defibrillator.ftl @@ -1,4 +1,4 @@ -defibrillator-begin = {$name} places the defibrillator pads against {THE($target)} +defibrillator-begin = {$name} places the defibrillator pads against {THE($target)} defibrillator-not-on = The defibrillator isn't turned on. defibrillator-no-mind = No intelligence pattern can be detected in patient's brain. Further attempts futile. defibrillator-not-living = Warning: Defibrillation target was an inanimate object. Consider retargeting. diff --git a/Resources/Locale/en-US/medical/components/healing-component.ftl b/Resources/Locale/en-US/medical/components/healing-component.ftl index d206150a0e..8bc6d72dcc 100644 --- a/Resources/Locale/en-US/medical/components/healing-component.ftl +++ b/Resources/Locale/en-US/medical/components/healing-component.ftl @@ -1,4 +1,4 @@ -medical-item-finished-using = You have finished healing with the {$item}. +medical-item-finished-using = You have finished healing with the {$item}. medical-item-cant-use = There is no damage you can heal with the {$item}. medical-item-stop-bleeding = {CAPITALIZE($target)} has stopped bleeding. medical-item-stop-bleeding-self = You have stopped bleeding. diff --git a/Resources/Locale/en-US/medical/components/suit-sensor-component.ftl b/Resources/Locale/en-US/medical/components/suit-sensor-component.ftl index 1ffb83cdbc..07e179def3 100644 --- a/Resources/Locale/en-US/medical/components/suit-sensor-component.ftl +++ b/Resources/Locale/en-US/medical/components/suit-sensor-component.ftl @@ -1,4 +1,4 @@ -## Modes +## Modes suit-sensor-mode-off = Off suit-sensor-mode-binary = Binary diff --git a/Resources/Locale/en-US/metabolism/metabolism-component.ftl b/Resources/Locale/en-US/metabolism/metabolism-component.ftl index 5baa4cc254..c98d77688f 100644 --- a/Resources/Locale/en-US/metabolism/metabolism-component.ftl +++ b/Resources/Locale/en-US/metabolism/metabolism-component.ftl @@ -1,3 +1,3 @@ metabolism-component-is-comfortable = You feel comfortable metabolism-component-is-sweating = You are sweating -metabolism-component-is-shivering = You are shivering \ No newline at end of file +metabolism-component-is-shivering = You are shivering diff --git a/Resources/Locale/en-US/mind/verbs/control-mob-verb.ftl b/Resources/Locale/en-US/mind/verbs/control-mob-verb.ftl index 3841479bac..41c4568029 100644 --- a/Resources/Locale/en-US/mind/verbs/control-mob-verb.ftl +++ b/Resources/Locale/en-US/mind/verbs/control-mob-verb.ftl @@ -1 +1 @@ -control-mob-verb-get-data-text = Control Mob \ No newline at end of file +control-mob-verb-get-data-text = Control Mob diff --git a/Resources/Locale/en-US/mind/verbs/make-sentient-verb.ftl b/Resources/Locale/en-US/mind/verbs/make-sentient-verb.ftl index 76e05ff6ee..9a926e616b 100644 --- a/Resources/Locale/en-US/mind/verbs/make-sentient-verb.ftl +++ b/Resources/Locale/en-US/mind/verbs/make-sentient-verb.ftl @@ -1 +1 @@ -make-sentient-verb-get-data-text = Make Sentient \ No newline at end of file +make-sentient-verb-get-data-text = Make Sentient diff --git a/Resources/Locale/en-US/morgue/components/crematorium-entity-storage-component.ftl b/Resources/Locale/en-US/morgue/components/crematorium-entity-storage-component.ftl index 96915b468b..c0864273b0 100644 --- a/Resources/Locale/en-US/morgue/components/crematorium-entity-storage-component.ftl +++ b/Resources/Locale/en-US/morgue/components/crematorium-entity-storage-component.ftl @@ -6,4 +6,4 @@ crematorium-entity-storage-component-suicide-message = You cremate yourself! crematorium-entity-storage-component-suicide-message-others = {$victim} is cremating {$victim}! # CremateVerb -cremate-verb-get-data-text = Cremate \ No newline at end of file +cremate-verb-get-data-text = Cremate diff --git a/Resources/Locale/en-US/morgue/components/morgue-entity-storage-component.ftl b/Resources/Locale/en-US/morgue/components/morgue-entity-storage-component.ftl index b067c3a377..bf01197fd3 100644 --- a/Resources/Locale/en-US/morgue/components/morgue-entity-storage-component.ftl +++ b/Resources/Locale/en-US/morgue/components/morgue-entity-storage-component.ftl @@ -1,4 +1,4 @@ morgue-entity-storage-component-on-examine-details-body-has-soul = The content light is [color=green]green[/color], this body might still be saved! morgue-entity-storage-component-on-examine-details-body-has-no-soul = The content light is [color=red]red[/color], there's a dead body in here! Oh wait... morgue-entity-storage-component-on-examine-details-has-contents = The content light is [color=yellow]yellow[/color], there's something in here. -morgue-entity-storage-component-on-examine-details-empty = The content light is off, there's nothing in here. \ No newline at end of file +morgue-entity-storage-component-on-examine-details-empty = The content light is off, there's nothing in here. diff --git a/Resources/Locale/en-US/npc/hugbot.ftl b/Resources/Locale/en-US/npc/hugbot.ftl index 6b38eda30e..d0cb6c334d 100644 --- a/Resources/Locale/en-US/npc/hugbot.ftl +++ b/Resources/Locale/en-US/npc/hugbot.ftl @@ -1,4 +1,4 @@ -hugbot-start-hug-1 = LEVEL 5 HUG DEFICIENCY DETECTED! +hugbot-start-hug-1 = LEVEL 5 HUG DEFICIENCY DETECTED! hugbot-start-hug-2 = You look like you need a hug! hugbot-start-hug-3 = Aww, somebody needs a hug! hugbot-start-hug-4 = Target acquired; Initiating hug routine. diff --git a/Resources/Locale/en-US/nutrition/components/ingestion-system.ftl b/Resources/Locale/en-US/nutrition/components/ingestion-system.ftl index 5f714925e4..4a8ea42f2f 100644 --- a/Resources/Locale/en-US/nutrition/components/ingestion-system.ftl +++ b/Resources/Locale/en-US/nutrition/components/ingestion-system.ftl @@ -1,4 +1,4 @@ -### Interaction Messages +### Interaction Messages # System diff --git a/Resources/Locale/en-US/nutrition/components/sealable-component.ftl b/Resources/Locale/en-US/nutrition/components/sealable-component.ftl index be37b91ce2..aaf72b6bbb 100644 --- a/Resources/Locale/en-US/nutrition/components/sealable-component.ftl +++ b/Resources/Locale/en-US/nutrition/components/sealable-component.ftl @@ -1,4 +1,4 @@ -sealable-component-on-examine-is-sealed = The seal is intact. +sealable-component-on-examine-is-sealed = The seal is intact. sealable-component-on-examine-is-unsealed = The seal is broken. sealable-component-on-examine-is-unsealed-no-cork = The seal is broken, and the cork is gone. sealable-component-on-examine-is-unsealed-crown-cap = The seal is broken, and the crown cap is bent. diff --git a/Resources/Locale/en-US/nutrition/components/vape-component.ftl b/Resources/Locale/en-US/nutrition/components/vape-component.ftl index d43bd5ebcc..ea87d4bf5f 100644 --- a/Resources/Locale/en-US/nutrition/components/vape-component.ftl +++ b/Resources/Locale/en-US/nutrition/components/vape-component.ftl @@ -4,4 +4,4 @@ vape-component-vape-success-user-forced = You successfully forced to puff {THE($ vape-component-try-use-vape-forced = {CAPITALIZE(THE($user))} is trying to make you puff on the vape. vape-component-try-use-vape-forced-user = You are forcing {THE($target)} to puff on the vape. vape-component-try-use-vape = You are trying to puff on the vape. -vape-component-vape-empty = The vape is empty! \ No newline at end of file +vape-component-vape-empty = The vape is empty! diff --git a/Resources/Locale/en-US/paper/envelope.ftl b/Resources/Locale/en-US/paper/envelope.ftl index bb7993d284..91997ff3f1 100644 --- a/Resources/Locale/en-US/paper/envelope.ftl +++ b/Resources/Locale/en-US/paper/envelope.ftl @@ -8,4 +8,4 @@ envelope-torn-examine = [color=yellow]{CAPITALIZE(THE($envelope))} is torn and u envelope-default-message = TO: - FROM: \ No newline at end of file + FROM: diff --git a/Resources/Locale/en-US/particle-accelerator/components/particle-accelerator-control-box-component.ftl b/Resources/Locale/en-US/particle-accelerator/components/particle-accelerator-control-box-component.ftl index 9b600e7951..53ed57b19e 100644 --- a/Resources/Locale/en-US/particle-accelerator/components/particle-accelerator-control-box-component.ftl +++ b/Resources/Locale/en-US/particle-accelerator/components/particle-accelerator-control-box-component.ftl @@ -1 +1 @@ -particle-accelerator-control-box-component-wires-update-limiter-on-pulse = The control box makes a whirring noise. \ No newline at end of file +particle-accelerator-control-box-component-wires-update-limiter-on-pulse = The control box makes a whirring noise. diff --git a/Resources/Locale/en-US/payload/payload-case.ftl b/Resources/Locale/en-US/payload/payload-case.ftl index d7c567e9cc..0b83002d13 100644 --- a/Resources/Locale/en-US/payload/payload-case.ftl +++ b/Resources/Locale/en-US/payload/payload-case.ftl @@ -1,3 +1,3 @@ -payload-case-not-close-enough = You need to get closer to determine if {THE($ent)} has a payload installed. +payload-case-not-close-enough = You need to get closer to determine if {THE($ent)} has a payload installed. payload-case-has-payload = {CAPITALIZE(THE($ent))} has a payload installed! payload-case-does-not-have-payload = {CAPITALIZE(THE($ent))} does not have a payload installed. diff --git a/Resources/Locale/en-US/pinpointer/pinpointer.ftl b/Resources/Locale/en-US/pinpointer/pinpointer.ftl index d19ba84f03..cc5d260a28 100644 --- a/Resources/Locale/en-US/pinpointer/pinpointer.ftl +++ b/Resources/Locale/en-US/pinpointer/pinpointer.ftl @@ -1 +1 @@ -examine-pinpointer-linked = It is tracking: {$target} +examine-pinpointer-linked = It is tracking: {$target} diff --git a/Resources/Locale/en-US/players/play-time/play-time-commands.ftl b/Resources/Locale/en-US/players/play-time/play-time-commands.ftl index a06e1807e6..05872e0838 100644 --- a/Resources/Locale/en-US/players/play-time/play-time-commands.ftl +++ b/Resources/Locale/en-US/players/play-time/play-time-commands.ftl @@ -1,4 +1,4 @@ -parse-minutes-fail = Unable to parse '{$minutes}' as minutes +parse-minutes-fail = Unable to parse '{$minutes}' as minutes parse-session-fail = Did not find session for '{$username}' ## Role Timer Commands diff --git a/Resources/Locale/en-US/pneumatic-cannon/pneumatic-cannon-component.ftl b/Resources/Locale/en-US/pneumatic-cannon/pneumatic-cannon-component.ftl index 4b925969ef..b6f9b8b764 100644 --- a/Resources/Locale/en-US/pneumatic-cannon/pneumatic-cannon-component.ftl +++ b/Resources/Locale/en-US/pneumatic-cannon/pneumatic-cannon-component.ftl @@ -1,4 +1,4 @@ -### Loc for the pneumatic cannon. +### Loc for the pneumatic cannon. pneumatic-cannon-component-itemslot-name = Gas Tank diff --git a/Resources/Locale/en-US/pointing/pointing-verb.ftl b/Resources/Locale/en-US/pointing/pointing-verb.ftl index 300a5c01b2..06f13be27f 100644 --- a/Resources/Locale/en-US/pointing/pointing-verb.ftl +++ b/Resources/Locale/en-US/pointing/pointing-verb.ftl @@ -1 +1 @@ -pointing-verb-get-data-text = Point at \ No newline at end of file +pointing-verb-get-data-text = Point at diff --git a/Resources/Locale/en-US/points/points.ftl b/Resources/Locale/en-US/points/points.ftl index 7b0dfe3c01..cc8e8bdaa3 100644 --- a/Resources/Locale/en-US/points/points.ftl +++ b/Resources/Locale/en-US/points/points.ftl @@ -1,4 +1,4 @@ -point-scoreboard-winner = The winner was [color=lime]{$player}![/color] +point-scoreboard-winner = The winner was [color=lime]{$player}![/color] point-scoreboard-header = [bold]Scoreboard[/bold] point-scoreboard-list = {$place}. [bold][color=cyan]{$name}[/color][/bold] scored [color=yellow]{$points -> [one] {$points} point diff --git a/Resources/Locale/en-US/popup/popup.ftl b/Resources/Locale/en-US/popup/popup.ftl index 4bc677c608..82e86ce792 100644 --- a/Resources/Locale/en-US/popup/popup.ftl +++ b/Resources/Locale/en-US/popup/popup.ftl @@ -1 +1 @@ -popup-system-repeated-popup-stacking-wrap = {$popup-message} x{$count} +popup-system-repeated-popup-stacking-wrap = {$popup-message} x{$count} diff --git a/Resources/Locale/en-US/portal/portal.ftl b/Resources/Locale/en-US/portal/portal.ftl index 8134871380..abd0d0618b 100644 --- a/Resources/Locale/en-US/portal/portal.ftl +++ b/Resources/Locale/en-US/portal/portal.ftl @@ -1,4 +1,4 @@ -### Portal verb text +### Portal verb text portal-component-ghost-traverse = Traverse diff --git a/Resources/Locale/en-US/power/battery.ftl b/Resources/Locale/en-US/power/battery.ftl index 21ba96c226..e6175e6385 100644 --- a/Resources/Locale/en-US/power/battery.ftl +++ b/Resources/Locale/en-US/power/battery.ftl @@ -1,4 +1,4 @@ -## Strings for the battery (SMES/substation) menu +## Strings for the battery (SMES/substation) menu battery-menu-footer-left = Danger: high voltage battery-menu-footer-right = 7.2 REV 6 diff --git a/Resources/Locale/en-US/power/commands.ftl b/Resources/Locale/en-US/power/commands.ftl index 0908af1a2b..b293d6cbba 100644 --- a/Resources/Locale/en-US/power/commands.ftl +++ b/Resources/Locale/en-US/power/commands.ftl @@ -1,4 +1,4 @@ -cmd-power_validate-desc = Validate power network state integrity +cmd-power_validate-desc = Validate power network state integrity cmd-power_validate-help = Usage: power_validate cmd-power_validate-error = Error while validating: { $err } cmd-power_validate-success = Validation succeeded without error diff --git a/Resources/Locale/en-US/power/components/generator.ftl b/Resources/Locale/en-US/power/components/generator.ftl index 6d5f9fdb5d..4a25aeb89a 100644 --- a/Resources/Locale/en-US/power/components/generator.ftl +++ b/Resources/Locale/en-US/power/components/generator.ftl @@ -1,4 +1,4 @@ -generator-clogged = {CAPITALIZE(THE($generator))} shuts off abruptly! +generator-clogged = {CAPITALIZE(THE($generator))} shuts off abruptly! portable-generator-verb-start = Start generator portable-generator-verb-start-msg-unreliable = Start the generator. This may take a few tries. diff --git a/Resources/Locale/en-US/power/teg.ftl b/Resources/Locale/en-US/power/teg.ftl index 2ee3dac8e9..803e37c194 100644 --- a/Resources/Locale/en-US/power/teg.ftl +++ b/Resources/Locale/en-US/power/teg.ftl @@ -1,3 +1,3 @@ -teg-generator-examine-power = It's currently supplying [color=yellow]{ POWERWATTS($power) }[/color]. +teg-generator-examine-power = It's currently supplying [color=yellow]{ POWERWATTS($power) }[/color]. teg-generator-examine-power-max-output = It's capable of supplying [color=yellow]{ POWERWATTS($power) }[/color]. teg-generator-examine-connection = To function, a [color=white]circulator[/color] must be attached on both sides. diff --git a/Resources/Locale/en-US/power/verb.ftl b/Resources/Locale/en-US/power/verb.ftl index 611d0a2c39..4e64eb38ac 100644 --- a/Resources/Locale/en-US/power/verb.ftl +++ b/Resources/Locale/en-US/power/verb.ftl @@ -1,2 +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 +verb-debug-toggle-need-power = Toggle Power diff --git a/Resources/Locale/en-US/prayers/prayers.ftl b/Resources/Locale/en-US/prayers/prayers.ftl index 24b1246565..971378de9a 100644 --- a/Resources/Locale/en-US/prayers/prayers.ftl +++ b/Resources/Locale/en-US/prayers/prayers.ftl @@ -1,4 +1,4 @@ -prayer-verbs-subtle-message = Subtle Message +prayer-verbs-subtle-message = Subtle Message prayer-verbs-pray = Pray prayer-verbs-call = Call prayer-verbs-rub = Rub diff --git a/Resources/Locale/en-US/preferences/humanoid-character-profile.ftl b/Resources/Locale/en-US/preferences/humanoid-character-profile.ftl index 2d0b8ebcdd..49b6eaea89 100644 --- a/Resources/Locale/en-US/preferences/humanoid-character-profile.ftl +++ b/Resources/Locale/en-US/preferences/humanoid-character-profile.ftl @@ -7,4 +7,4 @@ humanoid-character-profile-summary = [female] She is [epicene] They are *[other] It is -} {$age} years old. \ No newline at end of file +} {$age} years old. diff --git a/Resources/Locale/en-US/prototypes/roles/antags.ftl b/Resources/Locale/en-US/prototypes/roles/antags.ftl index f0c80f9dfc..154c97191f 100644 --- a/Resources/Locale/en-US/prototypes/roles/antags.ftl +++ b/Resources/Locale/en-US/prototypes/roles/antags.ftl @@ -1,4 +1,4 @@ -roles-antag-generic-solo-antagonist-name = Solo Antagonist +roles-antag-generic-solo-antagonist-name = Solo Antagonist roles-antag-generic-free-agent-name = Free Agent diff --git a/Resources/Locale/en-US/pulling/pullable-component.ftl b/Resources/Locale/en-US/pulling/pullable-component.ftl index b9d076404d..346d803988 100644 --- a/Resources/Locale/en-US/pulling/pullable-component.ftl +++ b/Resources/Locale/en-US/pulling/pullable-component.ftl @@ -1,4 +1,4 @@ ## PullingVerb pulling-verb-get-data-text = Pull -pulling-verb-get-data-text-stop-pulling = Stop pulling \ No newline at end of file +pulling-verb-get-data-text-stop-pulling = Stop pulling diff --git a/Resources/Locale/en-US/quick-dialog/quick-dialog.ftl b/Resources/Locale/en-US/quick-dialog/quick-dialog.ftl index f2b6f7f9a9..ca7ee931d3 100644 --- a/Resources/Locale/en-US/quick-dialog/quick-dialog.ftl +++ b/Resources/Locale/en-US/quick-dialog/quick-dialog.ftl @@ -1,4 +1,4 @@ -quick-dialog-ui-integer = Integer.. +quick-dialog-ui-integer = Integer.. quick-dialog-ui-float = Float.. quick-dialog-ui-short-text = Short text.. quick-dialog-ui-long-text = Long text.. diff --git a/Resources/Locale/en-US/radio/components/intercom.ftl b/Resources/Locale/en-US/radio/components/intercom.ftl index 63303999c2..f2336e9994 100644 --- a/Resources/Locale/en-US/radio/components/intercom.ftl +++ b/Resources/Locale/en-US/radio/components/intercom.ftl @@ -1,4 +1,4 @@ -intercom-menu-title = Intercom +intercom-menu-title = Intercom intercom-channel-label = Channel: intercom-button-text-mic = Mic. intercom-button-text-speaker = Spkr. diff --git a/Resources/Locale/en-US/reagents/Capsaicin.ftl b/Resources/Locale/en-US/reagents/Capsaicin.ftl index 42202a4d38..2b196826a5 100644 --- a/Resources/Locale/en-US/reagents/Capsaicin.ftl +++ b/Resources/Locale/en-US/reagents/Capsaicin.ftl @@ -1,4 +1,4 @@ -### Messages that pop up when metabolizing Capsaicin Oil. +### Messages that pop up when metabolizing Capsaicin Oil. capsaicin-effect-light-burn = You feel a slight tingle in your throat... capsaicin-effect-heavy-burn = You feel like hell threw up in your mouth! diff --git a/Resources/Locale/en-US/reagents/absinthe.ftl b/Resources/Locale/en-US/reagents/absinthe.ftl index 78d97728af..f560a743dc 100644 --- a/Resources/Locale/en-US/reagents/absinthe.ftl +++ b/Resources/Locale/en-US/reagents/absinthe.ftl @@ -1,4 +1,4 @@ -### Messages that pop up when metabolizing absinthe. +### Messages that pop up when metabolizing absinthe. absinthe-effect-hear-voice = You hear a tiny voice. "Tee hee hee!" absinthe-effect-feel-tulips = You feel tulips brush up against your legs. diff --git a/Resources/Locale/en-US/reagents/barozine.ftl b/Resources/Locale/en-US/reagents/barozine.ftl index e668dcafd9..4a3f4a2915 100644 --- a/Resources/Locale/en-US/reagents/barozine.ftl +++ b/Resources/Locale/en-US/reagents/barozine.ftl @@ -1,2 +1,2 @@ -barozine-effect-skin-burning = You feel like your skin is burning off! +barozine-effect-skin-burning = You feel like your skin is burning off! barozine-effect-muscle-contract = You can feel your muscles contracting. diff --git a/Resources/Locale/en-US/reagents/carpetium.ftl b/Resources/Locale/en-US/reagents/carpetium.ftl index 19d6c349f8..184277cb05 100644 --- a/Resources/Locale/en-US/reagents/carpetium.ftl +++ b/Resources/Locale/en-US/reagents/carpetium.ftl @@ -1,2 +1,2 @@ -carpetium-effect-blood-fibrous = Your blood feels oddly fibrous today. +carpetium-effect-blood-fibrous = Your blood feels oddly fibrous today. carpetium-effect-jumpsuit-insides = You feel like there's a jumpsuit inside you, for some reason. diff --git a/Resources/Locale/en-US/reagents/clf3.ftl b/Resources/Locale/en-US/reagents/clf3.ftl index 9055e232b4..9cc3621139 100644 --- a/Resources/Locale/en-US/reagents/clf3.ftl +++ b/Resources/Locale/en-US/reagents/clf3.ftl @@ -1,3 +1,3 @@ -clf3-it-burns = It burns like hell!! +clf3-it-burns = It burns like hell!! clf3-get-away = You need to get away now! clf3-explosion = The mixture fireballs outwards! diff --git a/Resources/Locale/en-US/reagents/ephedrine.ftl b/Resources/Locale/en-US/reagents/ephedrine.ftl index 27d1a6842a..1368a820ea 100644 --- a/Resources/Locale/en-US/reagents/ephedrine.ftl +++ b/Resources/Locale/en-US/reagents/ephedrine.ftl @@ -1,4 +1,4 @@ -### Messages that pop up when metabolizing ephedrine. +### Messages that pop up when metabolizing ephedrine. ephedrine-effect-tight-pain = You feel a tight pain in your chest. ephedrine-effect-heart-pounds = Your heart pounds! diff --git a/Resources/Locale/en-US/reagents/frezon.ftl b/Resources/Locale/en-US/reagents/frezon.ftl index edb7311017..6a5fbc5864 100644 --- a/Resources/Locale/en-US/reagents/frezon.ftl +++ b/Resources/Locale/en-US/reagents/frezon.ftl @@ -1,2 +1,2 @@ -frezon-lungs-cold = Your lungs feel colder.. +frezon-lungs-cold = Your lungs feel colder.. frezon-euphoric = You feel chilly, but euphoric.. diff --git a/Resources/Locale/en-US/reagents/frostoil.ftl b/Resources/Locale/en-US/reagents/frostoil.ftl index f2181e7e4a..5d39863a29 100644 --- a/Resources/Locale/en-US/reagents/frostoil.ftl +++ b/Resources/Locale/en-US/reagents/frostoil.ftl @@ -1,3 +1,3 @@ -### Messages that pop up when metabolizing Frost Oil. +### Messages that pop up when metabolizing Frost Oil. -frost-oil-effect-light-cold = You feel a slight cold tingle in your throat... \ No newline at end of file +frost-oil-effect-light-cold = You feel a slight cold tingle in your throat... diff --git a/Resources/Locale/en-US/reagents/histamine.ftl b/Resources/Locale/en-US/reagents/histamine.ftl index 08c1beb8f7..fc6e382ea8 100644 --- a/Resources/Locale/en-US/reagents/histamine.ftl +++ b/Resources/Locale/en-US/reagents/histamine.ftl @@ -1,4 +1,4 @@ -### Messages that pop up when metabolizing histamine. +### Messages that pop up when metabolizing histamine. histamine-effect-light-itchiness = You feel a little itchy... histamine-effect-heavy-itchiness = You feel REALLY itchy! diff --git a/Resources/Locale/en-US/reagents/laughter.ftl b/Resources/Locale/en-US/reagents/laughter.ftl index b9f7c583cd..378e001599 100644 --- a/Resources/Locale/en-US/reagents/laughter.ftl +++ b/Resources/Locale/en-US/reagents/laughter.ftl @@ -1 +1 @@ -laughter-effect-control-laughter = You can't contain your laughter! +laughter-effect-control-laughter = You can't contain your laughter! diff --git a/Resources/Locale/en-US/reagents/leporazine.ftl b/Resources/Locale/en-US/reagents/leporazine.ftl index ba6bd5186e..32913b6af3 100644 --- a/Resources/Locale/en-US/reagents/leporazine.ftl +++ b/Resources/Locale/en-US/reagents/leporazine.ftl @@ -1 +1 @@ -leporazine-effect-temperature-adjusting = You feel your body's temperature adjust rapidly. +leporazine-effect-temperature-adjusting = You feel your body's temperature adjust rapidly. diff --git a/Resources/Locale/en-US/reagents/mannitol.ftl b/Resources/Locale/en-US/reagents/mannitol.ftl index 1d35aff587..85d7f9b8aa 100644 --- a/Resources/Locale/en-US/reagents/mannitol.ftl +++ b/Resources/Locale/en-US/reagents/mannitol.ftl @@ -1 +1 @@ -mannitol-effect-enlightened = You feel ENLIGHTENED! +mannitol-effect-enlightened = You feel ENLIGHTENED! diff --git a/Resources/Locale/en-US/reagents/norepinephricacid.ftl b/Resources/Locale/en-US/reagents/norepinephricacid.ftl index da06315c0b..50e237cbc2 100644 --- a/Resources/Locale/en-US/reagents/norepinephricacid.ftl +++ b/Resources/Locale/en-US/reagents/norepinephricacid.ftl @@ -1,8 +1,8 @@ -norepinephricacid-effect-eyelids = Your eyelids are rapidly twitching. +norepinephricacid-effect-eyelids = Your eyelids are rapidly twitching. norepinephricacid-effect-eyes-itch = Your eyes feel itchy. norepinephricacid-effect-vision-fade = You feel your vision fading. norepinephricacid-effect-vision-fail = You can feel your vision failing you. norepinephricacid-effect-eye-pain = You feel a deep pain in your eyes! norepinephricacid-effect-blindness = Your eyes cease function! norepinephricacid-effect-darkness = You are plunged into a world of darkness! -norepinephricacid-effect-eye-disconnect = Your eyes feel like they're disconnecting! \ No newline at end of file +norepinephricacid-effect-eye-disconnect = Your eyes feel like they're disconnecting! diff --git a/Resources/Locale/en-US/reagents/phlogiston.ftl b/Resources/Locale/en-US/reagents/phlogiston.ftl index df43a42cad..af38ea2ce5 100644 --- a/Resources/Locale/en-US/reagents/phlogiston.ftl +++ b/Resources/Locale/en-US/reagents/phlogiston.ftl @@ -1 +1 @@ -phlogiston-plasma-created = The mixture bubbles, and plasma rises from it! +phlogiston-plasma-created = The mixture bubbles, and plasma rises from it! diff --git a/Resources/Locale/en-US/reagents/psicodine.ftl b/Resources/Locale/en-US/reagents/psicodine.ftl index c9795b11a9..cdf9133e1a 100644 --- a/Resources/Locale/en-US/reagents/psicodine.ftl +++ b/Resources/Locale/en-US/reagents/psicodine.ftl @@ -1,3 +1,3 @@ -psicodine-effect-fearless = You feel totally fearless! +psicodine-effect-fearless = You feel totally fearless! psicodine-effect-anxieties-wash-away = All of your anxieties wash away! psicodine-effect-at-peace = You feel completely at peace. diff --git a/Resources/Locale/en-US/recycling/components/recycler-component.ftl b/Resources/Locale/en-US/recycling/components/recycler-component.ftl index b434a918f0..9b00d3b9f5 100644 --- a/Resources/Locale/en-US/recycling/components/recycler-component.ftl +++ b/Resources/Locale/en-US/recycling/components/recycler-component.ftl @@ -1,4 +1,4 @@ ## RecyclerComponent recycler-component-suicide-message-others = {$victim} tries to recycle {$victim}! -recycler-component-suicide-message = You recycle yourself! \ No newline at end of file +recycler-component-suicide-message = You recycle yourself! diff --git a/Resources/Locale/en-US/replays/replays.ftl b/Resources/Locale/en-US/replays/replays.ftl index f488a60693..5a9a79e860 100644 --- a/Resources/Locale/en-US/replays/replays.ftl +++ b/Resources/Locale/en-US/replays/replays.ftl @@ -1,4 +1,4 @@ -# Loading Screen +# Loading Screen replay-loading = Loading ({$cur}/{$total}) replay-loading-reading = Reading Files diff --git a/Resources/Locale/en-US/research/components/research-client-component.ftl b/Resources/Locale/en-US/research/components/research-client-component.ftl index 9a4382103c..4757cf6b93 100644 --- a/Resources/Locale/en-US/research/components/research-client-component.ftl +++ b/Resources/Locale/en-US/research/components/research-client-component.ftl @@ -1,2 +1,2 @@ research-client-server-selection-menu-title = Research Server Selection -research-client-server-selection-menu-server-entry-text = ID: {$id} || {$serverName} \ No newline at end of file +research-client-server-selection-menu-server-entry-text = ID: {$id} || {$serverName} diff --git a/Resources/Locale/en-US/revenant/revenant.ftl b/Resources/Locale/en-US/revenant/revenant.ftl index 1d6bae7b34..b13858be74 100644 --- a/Resources/Locale/en-US/revenant/revenant.ftl +++ b/Resources/Locale/en-US/revenant/revenant.ftl @@ -20,4 +20,4 @@ revenant-soul-finish-harvest = {CAPITALIZE(THE($target))} slumps onto the ground revenant-user-interface-title = Ability Shop revenant-user-interface-essence-amount = [color=plum]{$amount}[/color] Stolen Essence -revenant-user-interface-cost = {$price} Essence \ No newline at end of file +revenant-user-interface-cost = {$price} Essence diff --git a/Resources/Locale/en-US/rotation/components/flippable-component.ftl b/Resources/Locale/en-US/rotation/components/flippable-component.ftl index cfeb19eeae..6aa1753cc7 100644 --- a/Resources/Locale/en-US/rotation/components/flippable-component.ftl +++ b/Resources/Locale/en-US/rotation/components/flippable-component.ftl @@ -2,4 +2,4 @@ flippable-component-try-flip-is-stuck = It's stuck. # FlippableVerb -flippable-verb-get-data-text = Flip \ No newline at end of file +flippable-verb-get-data-text = Flip diff --git a/Resources/Locale/en-US/sensor-monitoring/sensor-monitoring.ftl b/Resources/Locale/en-US/sensor-monitoring/sensor-monitoring.ftl index 3450c1be3e..6c86226305 100644 --- a/Resources/Locale/en-US/sensor-monitoring/sensor-monitoring.ftl +++ b/Resources/Locale/en-US/sensor-monitoring/sensor-monitoring.ftl @@ -1,4 +1,4 @@ -sensor-monitoring-window-title = Sensor Monitoring Console +sensor-monitoring-window-title = Sensor Monitoring Console sensor-monitoring-value-display = {$unit -> [PressureKpa] { PRESSURE($value) } diff --git a/Resources/Locale/en-US/server-info/info-links.ftl b/Resources/Locale/en-US/server-info/info-links.ftl index 51b6b51ecb..dc4bcaad2c 100644 --- a/Resources/Locale/en-US/server-info/info-links.ftl +++ b/Resources/Locale/en-US/server-info/info-links.ftl @@ -1,4 +1,4 @@ -### Strings for link buttons shown in the launcher's server description. +### Strings for link buttons shown in the launcher's server description. info-link-discord = Discord info-link-forum = Forum diff --git a/Resources/Locale/en-US/server-updates/server-updates.ftl b/Resources/Locale/en-US/server-updates/server-updates.ftl index ae775c9931..e1b9e34367 100644 --- a/Resources/Locale/en-US/server-updates/server-updates.ftl +++ b/Resources/Locale/en-US/server-updates/server-updates.ftl @@ -1,3 +1,3 @@ -server-updates-received = Update has been received, server will automatically restart for update at the end of this round. +server-updates-received = Update has been received, server will automatically restart for update at the end of this round. server-updates-shutdown = Server is shutting down for update and will automatically restart. server-updates-shutdown-uptime = Server is shutting down for periodic cleanup and will automatically restart. diff --git a/Resources/Locale/en-US/shutter/shutter.ftl b/Resources/Locale/en-US/shutter/shutter.ftl index 3ddcf6d084..b42adc2392 100644 --- a/Resources/Locale/en-US/shutter/shutter.ftl +++ b/Resources/Locale/en-US/shutter/shutter.ftl @@ -1 +1 @@ -shutter-rattle = *rattle rattle* \ No newline at end of file +shutter-rattle = *rattle rattle* diff --git a/Resources/Locale/en-US/shuttles/arrivals.ftl b/Resources/Locale/en-US/shuttles/arrivals.ftl index d720be34b4..06ba202adf 100644 --- a/Resources/Locale/en-US/shuttles/arrivals.ftl +++ b/Resources/Locale/en-US/shuttles/arrivals.ftl @@ -7,4 +7,4 @@ cmd-arrivals-returns-hint = Toggles allowing players to return via arrivals. cmd-arrivals-invalid = Invalid arg supplied. cmd-arrivals-force-hint = Forces players to arrive. -cmd-arrivals-forced = Forced {$uid} to arrive to the station. \ No newline at end of file +cmd-arrivals-forced = Forced {$uid} to arrive to the station. diff --git a/Resources/Locale/en-US/singularity/components/containment-component.ftl b/Resources/Locale/en-US/singularity/components/containment-component.ftl index e0e7d4c039..93ef391cb7 100644 --- a/Resources/Locale/en-US/singularity/components/containment-component.ftl +++ b/Resources/Locale/en-US/singularity/components/containment-component.ftl @@ -1,4 +1,4 @@ -comp-containment-turned-on = The containment field generator boots up. +comp-containment-turned-on = The containment field generator boots up. comp-containment-turned-off = The containment field generator shuts down. comp-containment-on = It's switched [color=green]on[/color], ready to generate a connection. diff --git a/Resources/Locale/en-US/singularity/components/generator-component.ftl b/Resources/Locale/en-US/singularity/components/generator-component.ftl index d2a04f9cbc..c4a81ec0e7 100644 --- a/Resources/Locale/en-US/singularity/components/generator-component.ftl +++ b/Resources/Locale/en-US/singularity/components/generator-component.ftl @@ -1,2 +1,2 @@ comp-generator-failsafe = The {$target} shakes as the containment failsafe triggers! -comp-generator-failsafe-disabled = Something fizzles out inside of {$target}... \ No newline at end of file +comp-generator-failsafe-disabled = Something fizzles out inside of {$target}... diff --git a/Resources/Locale/en-US/slur/slurring.ftl b/Resources/Locale/en-US/slur/slurring.ftl index feb5753deb..d4320f2d6c 100644 --- a/Resources/Locale/en-US/slur/slurring.ftl +++ b/Resources/Locale/en-US/slur/slurring.ftl @@ -1,2 +1,2 @@ -slur-accent-confused = ...huuuhhh... +slur-accent-confused = ...huuuhhh... slur-accent-burp = *BURP*. diff --git a/Resources/Locale/en-US/species/diona.ftl b/Resources/Locale/en-US/species/diona.ftl index d0bb2d1e72..3540788785 100644 --- a/Resources/Locale/en-US/species/diona.ftl +++ b/Resources/Locale/en-US/species/diona.ftl @@ -1 +1 @@ -diona-hurt-by-herbicide-popup = The chemical wilts some of your greenery! \ No newline at end of file +diona-hurt-by-herbicide-popup = The chemical wilts some of your greenery! diff --git a/Resources/Locale/en-US/species/skeleton.ftl b/Resources/Locale/en-US/species/skeleton.ftl index efc8fe974f..bf1eafae05 100644 --- a/Resources/Locale/en-US/species/skeleton.ftl +++ b/Resources/Locale/en-US/species/skeleton.ftl @@ -1,2 +1,2 @@ -skeleton-healed-by-milk-popup = Calcium restored. +skeleton-healed-by-milk-popup = Calcium restored. skeleton-sprayed-by-oat-milk-popup = Feels like fake milk. You feel nothing. diff --git a/Resources/Locale/en-US/species/slime.ftl b/Resources/Locale/en-US/species/slime.ftl index 87b77511ba..1a847444bd 100644 --- a/Resources/Locale/en-US/species/slime.ftl +++ b/Resources/Locale/en-US/species/slime.ftl @@ -1 +1 @@ -slime-hurt-by-water-popup = The water melts some of your slime away! +slime-hurt-by-water-popup = The water melts some of your slime away! diff --git a/Resources/Locale/en-US/species/species.ftl b/Resources/Locale/en-US/species/species.ftl index 8c0900bb21..2ea393ba60 100644 --- a/Resources/Locale/en-US/species/species.ftl +++ b/Resources/Locale/en-US/species/species.ftl @@ -1,4 +1,4 @@ -## Species Names +## Species Names species-name-human = Human species-name-dwarf = Dwarf diff --git a/Resources/Locale/en-US/station-events/events/anomaly-spawn.ftl b/Resources/Locale/en-US/station-events/events/anomaly-spawn.ftl index 907c14ce56..a80634fcdb 100644 --- a/Resources/Locale/en-US/station-events/events/anomaly-spawn.ftl +++ b/Resources/Locale/en-US/station-events/events/anomaly-spawn.ftl @@ -4,4 +4,4 @@ anomaly-spawn-sighting-1 = low pulsating sounds heard throughout the station anomaly-spawn-sighting-2 = strange sources of light anomaly-spawn-sighting-3 = inexplicable shapes anomaly-spawn-sighting-4 = forms causing severe mental distress -anomaly-spawn-sighting-5 = strange effects on the local environment \ No newline at end of file +anomaly-spawn-sighting-5 = strange effects on the local environment diff --git a/Resources/Locale/en-US/station-events/events/bluespace-artifact.ftl b/Resources/Locale/en-US/station-events/events/bluespace-artifact.ftl index a2307d77b5..59ea8a536b 100644 --- a/Resources/Locale/en-US/station-events/events/bluespace-artifact.ftl +++ b/Resources/Locale/en-US/station-events/events/bluespace-artifact.ftl @@ -6,4 +6,4 @@ bluespace-artifact-sighting-3 = otherworldly structures bluespace-artifact-sighting-4 = incomprehensible alien objects bluespace-artifact-sighting-5 = unfamiliar objects in strange places bluespace-artifact-sighting-6 = unknown alien artifacts -bluespace-artifact-sighting-7 = explosions of light accompanied by weird sounds \ No newline at end of file +bluespace-artifact-sighting-7 = explosions of light accompanied by weird sounds diff --git a/Resources/Locale/en-US/station-events/events/breaker-flip.ftl b/Resources/Locale/en-US/station-events/events/breaker-flip.ftl index b3ed9c8fce..907943485d 100644 --- a/Resources/Locale/en-US/station-events/events/breaker-flip.ftl +++ b/Resources/Locale/en-US/station-events/events/breaker-flip.ftl @@ -1 +1 @@ -station-event-breaker-flip-announcement = Based on { $data }, we have opted to disable specific APCs to avoid damage to equipment. Please contact the engineering department to re-enable them. +station-event-breaker-flip-announcement = Based on { $data }, we have opted to disable specific APCs to avoid damage to equipment. Please contact the engineering department to re-enable them. diff --git a/Resources/Locale/en-US/station-events/events/bureaucratic-error.ftl b/Resources/Locale/en-US/station-events/events/bureaucratic-error.ftl index 9323c4cb8c..e68ed5af1a 100644 --- a/Resources/Locale/en-US/station-events/events/bureaucratic-error.ftl +++ b/Resources/Locale/en-US/station-events/events/bureaucratic-error.ftl @@ -1,2 +1,2 @@ -station-event-bureaucratic-error-announcement = A recent bureaucratic error in the Organic Resources Department may result in personnel shortages in some departments and redundant staffing in others. +station-event-bureaucratic-error-announcement = A recent bureaucratic error in the Organic Resources Department may result in personnel shortages in some departments and redundant staffing in others. station-event-clerical-error-announcement = A minor clerical error in the Organic Resources Department has resulted in the permanent destruction of some of the station records. diff --git a/Resources/Locale/en-US/station-events/events/gas-leak.ftl b/Resources/Locale/en-US/station-events/events/gas-leak.ftl index 18429fa58d..1358ff9c76 100644 --- a/Resources/Locale/en-US/station-events/events/gas-leak.ftl +++ b/Resources/Locale/en-US/station-events/events/gas-leak.ftl @@ -1,2 +1,2 @@ -station-event-gas-leak-start-announcement = Attention crew, there is a gas leak on the station. We advise you to avoid the area and wear suit internals in the meantime. +station-event-gas-leak-start-announcement = Attention crew, there is a gas leak on the station. We advise you to avoid the area and wear suit internals in the meantime. station-event-gas-leak-end-announcement = The source of the gas leak has been fixed. Please be cautious around areas with gas remaining. diff --git a/Resources/Locale/en-US/station-events/events/intercept.ftl b/Resources/Locale/en-US/station-events/events/intercept.ftl index 3f84b027be..f6867479cf 100644 --- a/Resources/Locale/en-US/station-events/events/intercept.ftl +++ b/Resources/Locale/en-US/station-events/events/intercept.ftl @@ -1 +1 @@ -station-event-communication-interception = Attention! Enemy communication intercepted. Security level elevated. +station-event-communication-interception = Attention! Enemy communication intercepted. Security level elevated. diff --git a/Resources/Locale/en-US/station-events/events/meteor-swarm.ftl b/Resources/Locale/en-US/station-events/events/meteor-swarm.ftl index 0b82c7fb95..cb844dc839 100644 --- a/Resources/Locale/en-US/station-events/events/meteor-swarm.ftl +++ b/Resources/Locale/en-US/station-events/events/meteor-swarm.ftl @@ -1,4 +1,4 @@ -station-event-meteor-swarm-start-announcement = Meteors have been detected on collision course with the station. +station-event-meteor-swarm-start-announcement = Meteors have been detected on collision course with the station. station-event-meteor-swarm-end-announcement = The meteor swarm has passed. Please return to your stations. station-event-space-dust-start-announcement = The station is passing through a debris cloud, expect minor damage to external fittings and fixtures. diff --git a/Resources/Locale/en-US/station-events/events/mouse-migration.ftl b/Resources/Locale/en-US/station-events/events/mouse-migration.ftl index 98a86ca153..518eb04b13 100644 --- a/Resources/Locale/en-US/station-events/events/mouse-migration.ftl +++ b/Resources/Locale/en-US/station-events/events/mouse-migration.ftl @@ -1 +1 @@ -station-event-mouse-migration-announcement = We have detected an oncoming migration of rodents to the station. Please stay out of maintenance tunnels and try and avoid excessive contact. \ No newline at end of file +station-event-mouse-migration-announcement = We have detected an oncoming migration of rodents to the station. Please stay out of maintenance tunnels and try and avoid excessive contact. diff --git a/Resources/Locale/en-US/station-events/events/power-grid-check.ftl b/Resources/Locale/en-US/station-events/events/power-grid-check.ftl index b42dbd19db..b1baca1968 100644 --- a/Resources/Locale/en-US/station-events/events/power-grid-check.ftl +++ b/Resources/Locale/en-US/station-events/events/power-grid-check.ftl @@ -1,4 +1,4 @@ ## PowerGridCheck station-event-power-grid-check-start-announcement = Abnormal activity detected in the station's powernet. As a precautionary measure, the station's power will be shut off for an indeterminate duration. -station-event-power-grid-check-end-announcement = Power has been restored to the station. We apologize for the inconvenience. \ No newline at end of file +station-event-power-grid-check-end-announcement = Power has been restored to the station. We apologize for the inconvenience. diff --git a/Resources/Locale/en-US/station-events/events/unknown-shuttle.ftl b/Resources/Locale/en-US/station-events/events/unknown-shuttle.ftl index c94b32c54c..e0c1861b0a 100644 --- a/Resources/Locale/en-US/station-events/events/unknown-shuttle.ftl +++ b/Resources/Locale/en-US/station-events/events/unknown-shuttle.ftl @@ -1 +1 @@ -station-event-unknown-shuttle-incoming = Attention! An unidentified space shuttle has been spotted approaching your sector. \ No newline at end of file +station-event-unknown-shuttle-incoming = Attention! An unidentified space shuttle has been spotted approaching your sector. diff --git a/Resources/Locale/en-US/station-events/events/vent-clog.ftl b/Resources/Locale/en-US/station-events/events/vent-clog.ftl index f87f9e241b..5786993adc 100644 --- a/Resources/Locale/en-US/station-events/events/vent-clog.ftl +++ b/Resources/Locale/en-US/station-events/events/vent-clog.ftl @@ -1 +1 @@ -station-event-vent-clog-start-announcement = The scrubbers network is experiencing a backpressure surge. Some ejection of contents may occur. +station-event-vent-clog-start-announcement = The scrubbers network is experiencing a backpressure surge. Some ejection of contents may occur. diff --git a/Resources/Locale/en-US/station-events/events/vent-critters.ftl b/Resources/Locale/en-US/station-events/events/vent-critters.ftl index ce6990d833..b9d91b397c 100644 --- a/Resources/Locale/en-US/station-events/events/vent-critters.ftl +++ b/Resources/Locale/en-US/station-events/events/vent-critters.ftl @@ -1 +1 @@ -station-event-vent-creatures-start-horde-announcement = Attention. A large influx of unknown life forms have been detected moving through the station's ventilation systems. They are expected to emerge near {$location}. Please evacuate the area to avoid loss of personnel. +station-event-vent-creatures-start-horde-announcement = Attention. A large influx of unknown life forms have been detected moving through the station's ventilation systems. They are expected to emerge near {$location}. Please evacuate the area to avoid loss of personnel. diff --git a/Resources/Locale/en-US/station-events/events/zombie-outbreak.ftl b/Resources/Locale/en-US/station-events/events/zombie-outbreak.ftl index da6d8fa4f1..84380c4156 100644 --- a/Resources/Locale/en-US/station-events/events/zombie-outbreak.ftl +++ b/Resources/Locale/en-US/station-events/events/zombie-outbreak.ftl @@ -1 +1 @@ -station-event-zombie-outbreak-announcement = Confirmed sightings of various undead aboard the station. All personnel should arm themselves, barricade doors, and secure their location in order to prevent further infection. \ No newline at end of file +station-event-zombie-outbreak-announcement = Confirmed sightings of various undead aboard the station. All personnel should arm themselves, barricade doors, and secure their location in order to prevent further infection. diff --git a/Resources/Locale/en-US/station-laws/laws.ftl b/Resources/Locale/en-US/station-laws/laws.ftl index 935f1f39c8..2f375b465e 100644 --- a/Resources/Locale/en-US/station-laws/laws.ftl +++ b/Resources/Locale/en-US/station-laws/laws.ftl @@ -1,4 +1,4 @@ -laws-number-wrapper = [bold]Law { $lawnumber }:[/bold] { $lawstring } +laws-number-wrapper = [bold]Law { $lawnumber }:[/bold] { $lawstring } law-crewsimov-name = Crewsimov law-crewsimov-1 = You may not injure a crew member or, through inaction, allow a crew member to come to harm. diff --git a/Resources/Locale/en-US/station-records/general-station-records.ftl b/Resources/Locale/en-US/station-records/general-station-records.ftl index f5b70761e1..d1ff16f13c 100644 --- a/Resources/Locale/en-US/station-records/general-station-records.ftl +++ b/Resources/Locale/en-US/station-records/general-station-records.ftl @@ -1,4 +1,4 @@ -general-station-record-console-window-title = Station Records Computer +general-station-record-console-window-title = Station Records Computer general-station-record-console-select-record-info = Select a record on the left. general-station-record-console-empty-state = No records found! general-station-record-console-no-record-found = No record was found for the selected person. diff --git a/Resources/Locale/en-US/step-trigger/shoes-required.ftl b/Resources/Locale/en-US/step-trigger/shoes-required.ftl index 07a4b8a84f..1aa4c18e58 100644 --- a/Resources/Locale/en-US/step-trigger/shoes-required.ftl +++ b/Resources/Locale/en-US/step-trigger/shoes-required.ftl @@ -1 +1 @@ -clothing-required-step-trigger-examine = You probably shouldn't step on this barefoot. +clothing-required-step-trigger-examine = You probably shouldn't step on this barefoot. diff --git a/Resources/Locale/en-US/sticky/sticky-component.ftl b/Resources/Locale/en-US/sticky/sticky-component.ftl index 9464a602a7..901f0566f2 100644 --- a/Resources/Locale/en-US/sticky/sticky-component.ftl +++ b/Resources/Locale/en-US/sticky/sticky-component.ftl @@ -1,4 +1,4 @@ -# Bomb planting strings +# Bomb planting strings comp-sticky-start-stick-bomb = You start planting the bomb... comp-sticky-success-stick-bomb = You planted the bomb diff --git a/Resources/Locale/en-US/storage/components/entity-provider-component.ftl b/Resources/Locale/en-US/storage/components/entity-provider-component.ftl index ed614aeb1b..20528b769a 100644 --- a/Resources/Locale/en-US/storage/components/entity-provider-component.ftl +++ b/Resources/Locale/en-US/storage/components/entity-provider-component.ftl @@ -1,4 +1,4 @@ -# Refill Messages +# Refill Messages comp-entity-provider-cannot-receive = {CAPITALIZE(THE($refillTarget))} cannot be refilled! comp-entity-provider-cannot-transfer = {CAPITALIZE(THE($provider))} cannot be used to refill! diff --git a/Resources/Locale/en-US/suicide/suicide.ftl b/Resources/Locale/en-US/suicide/suicide.ftl index 2207e22413..6647970e01 100644 --- a/Resources/Locale/en-US/suicide/suicide.ftl +++ b/Resources/Locale/en-US/suicide/suicide.ftl @@ -1 +1 @@ -suicide-prevented = You tried to suicide, but only your spirit escapes. +suicide-prevented = You tried to suicide, but only your spirit escapes. diff --git a/Resources/Locale/en-US/suspicion/roles/suspicion-role-component.ftl b/Resources/Locale/en-US/suspicion/roles/suspicion-role-component.ftl index 1eb737b616..6a48b71db3 100644 --- a/Resources/Locale/en-US/suspicion/roles/suspicion-role-component.ftl +++ b/Resources/Locale/en-US/suspicion/roles/suspicion-role-component.ftl @@ -1,3 +1,3 @@ suspicion-role-component-role-traitor = traitor suspicion-role-component-role-innocent = innocent -suspicion-role-component-on-examine-tooltip = They were {$article} [color={$colorName}]{$role}[/color]! \ No newline at end of file +suspicion-role-component-on-examine-tooltip = They were {$article} [color={$colorName}]{$role}[/color]! diff --git a/Resources/Locale/en-US/suspicion/suspicion-gui.ftl b/Resources/Locale/en-US/suspicion/suspicion-gui.ftl index fdbd400b77..1c9e6b227c 100644 --- a/Resources/Locale/en-US/suspicion/suspicion-gui.ftl +++ b/Resources/Locale/en-US/suspicion/suspicion-gui.ftl @@ -5,4 +5,4 @@ suspicion-ally-count-display = {$allyCount -> *[zero] You have no allies [one] Your ally is {$allyNames} [other] Your allies are {$allyNames} -} \ No newline at end of file +} diff --git a/Resources/Locale/en-US/suspicion/traitor-overlay.ftl b/Resources/Locale/en-US/suspicion/traitor-overlay.ftl index 01dc1011a2..872a225c03 100644 --- a/Resources/Locale/en-US/suspicion/traitor-overlay.ftl +++ b/Resources/Locale/en-US/suspicion/traitor-overlay.ftl @@ -1 +1 @@ -traitor-overlay-traitor-text = Traitor \ No newline at end of file +traitor-overlay-traitor-text = Traitor diff --git a/Resources/Locale/en-US/tabletop/tabletop.ftl b/Resources/Locale/en-US/tabletop/tabletop.ftl index b2bacd1649..1fd9a5ae21 100644 --- a/Resources/Locale/en-US/tabletop/tabletop.ftl +++ b/Resources/Locale/en-US/tabletop/tabletop.ftl @@ -1,4 +1,4 @@ -## TabletopGameComponent +## TabletopGameComponent tabletop-verb-play-game = Play Game tabletop-verb-dump-pieces = Dump Pieces tabletop-default-board-name = Board Game diff --git a/Resources/Locale/en-US/telephone/telephone.ftl b/Resources/Locale/en-US/telephone/telephone.ftl index b279111d23..9f26b2ac01 100644 --- a/Resources/Locale/en-US/telephone/telephone.ftl +++ b/Resources/Locale/en-US/telephone/telephone.ftl @@ -1,4 +1,4 @@ -# Chat window telephone wrap (prefix and postfix) +# Chat window telephone wrap (prefix and postfix) chat-telephone-message-wrap = [color={$color}][bold]{$name}[/bold] {$verb}, [font={$fontType} size={$fontSize}]"{$message}"[/font][/color] chat-telephone-message-wrap-bold = [color={$color}][bold]{$name}[/bold] {$verb}, [font={$fontType} size={$fontSize}][bold]"{$message}"[/bold][/font][/color] @@ -10,4 +10,4 @@ chat-telephone-unknown-device = [color={$color}][font={$fontType} size={$fontSiz chat-telephone-device-id = [color={$color}][font={$fontType} size={$fontSize}][bold]{CAPITALIZE($deviceName)}[/bold][/font][/color] # Chat text -chat-telephone-name-relay = {$originalName} ({$speaker}) \ No newline at end of file +chat-telephone-name-relay = {$originalName} ({$speaker}) diff --git a/Resources/Locale/en-US/teleportation/handheld-teleporter.ftl b/Resources/Locale/en-US/teleportation/handheld-teleporter.ftl index 28f526f0d5..60f0fdd657 100644 --- a/Resources/Locale/en-US/teleportation/handheld-teleporter.ftl +++ b/Resources/Locale/en-US/teleportation/handheld-teleporter.ftl @@ -1 +1 @@ -handheld-teleporter-instability-fizzle = The portal fizzles as you try to place it, destroying both ends! +handheld-teleporter-instability-fizzle = The portal fizzles as you try to place it, destroying both ends! diff --git a/Resources/Locale/en-US/teleportation/teleportation-menu-gui.ftl b/Resources/Locale/en-US/teleportation/teleportation-menu-gui.ftl index 74e5a1804b..a2848bbe1c 100644 --- a/Resources/Locale/en-US/teleportation/teleportation-menu-gui.ftl +++ b/Resources/Locale/en-US/teleportation/teleportation-menu-gui.ftl @@ -1,4 +1,4 @@ -## Default +## Default teleportation-menu-default-window-title = Teleportation Menu teleportation-menu-destination-obstructed = You don't feel like you went anywhere... diff --git a/Resources/Locale/en-US/tesla/tesla-components.ftl b/Resources/Locale/en-US/tesla/tesla-components.ftl index 61f4970457..12dac4bff1 100644 --- a/Resources/Locale/en-US/tesla/tesla-components.ftl +++ b/Resources/Locale/en-US/tesla/tesla-components.ftl @@ -2,4 +2,4 @@ tesla-coil-on = The tesla coil turns on. tesla-coil-off = The tesla coil turns off. tesla-grounding-on = The grounding rod turns on. -tesla-grounding-off = The grounding rod turns off. \ No newline at end of file +tesla-grounding-off = The grounding rod turns off. diff --git a/Resources/Locale/en-US/thief/beacon.ftl b/Resources/Locale/en-US/thief/beacon.ftl index 9fbbcaf419..cff3f71b2b 100644 --- a/Resources/Locale/en-US/thief/beacon.ftl +++ b/Resources/Locale/en-US/thief/beacon.ftl @@ -5,4 +5,4 @@ thief-fulton-examined-set = Coordinates entered. Bluespace teleportation of the thief-fulton-examined-unset = Beacon coordinates are not set. thief-fulton-verb-text = Set coordinates -thief-fulton-verb-message = Set the coordinates of your thief's hideout, where all nearby items will be sent at the end of the round. \ No newline at end of file +thief-fulton-verb-message = Set the coordinates of your thief's hideout, where all nearby items will be sent at the end of the round. diff --git a/Resources/Locale/en-US/tiles/placement.ftl b/Resources/Locale/en-US/tiles/placement.ftl index e4f148e273..61124dc799 100644 --- a/Resources/Locale/en-US/tiles/placement.ftl +++ b/Resources/Locale/en-US/tiles/placement.ftl @@ -1 +1 @@ -invalid-floor-placement = Unable to place there \ No newline at end of file +invalid-floor-placement = Unable to place there diff --git a/Resources/Locale/en-US/tips/tips-system.ftl b/Resources/Locale/en-US/tips/tips-system.ftl index 5ae3ce9d83..1bb593b1a0 100644 --- a/Resources/Locale/en-US/tips/tips-system.ftl +++ b/Resources/Locale/en-US/tips/tips-system.ftl @@ -1 +1 @@ -tips-system-chat-message-wrap = Tip: {$tip} +tips-system-chat-message-wrap = Tip: {$tip} diff --git a/Resources/Locale/en-US/tools/components/lattice-cutting-component.ftl b/Resources/Locale/en-US/tools/components/lattice-cutting-component.ftl index 2fa76d83fc..dbf5054239 100644 --- a/Resources/Locale/en-US/tools/components/lattice-cutting-component.ftl +++ b/Resources/Locale/en-US/tools/components/lattice-cutting-component.ftl @@ -1 +1 @@ -comp-lattice-cutting-unsafe-warning = You feel air blow past your fingers... Maybe you should reconsider? +comp-lattice-cutting-unsafe-warning = You feel air blow past your fingers... Maybe you should reconsider? diff --git a/Resources/Locale/en-US/traitor/uplink/telecrystal-component.ftl b/Resources/Locale/en-US/traitor/uplink/telecrystal-component.ftl index 061799fcfe..af344e74b2 100644 --- a/Resources/Locale/en-US/traitor/uplink/telecrystal-component.ftl +++ b/Resources/Locale/en-US/traitor/uplink/telecrystal-component.ftl @@ -1 +1 @@ -telecrystal-component-sucs-inserted = You slot {THE($source)} into {THE($target)}. \ No newline at end of file +telecrystal-component-sucs-inserted = You slot {THE($source)} into {THE($target)}. diff --git a/Resources/Locale/en-US/transform/verbs/attach-to-grandparent-verb.ftl b/Resources/Locale/en-US/transform/verbs/attach-to-grandparent-verb.ftl index 17bb0a7d46..a737126f39 100644 --- a/Resources/Locale/en-US/transform/verbs/attach-to-grandparent-verb.ftl +++ b/Resources/Locale/en-US/transform/verbs/attach-to-grandparent-verb.ftl @@ -1 +1 @@ -attach-to-grandparent-verb-get-data-text = Attach to grid \ No newline at end of file +attach-to-grandparent-verb-get-data-text = Attach to grid diff --git a/Resources/Locale/en-US/transform/verbs/attach-to-grid-verb.ftl b/Resources/Locale/en-US/transform/verbs/attach-to-grid-verb.ftl index 9d60979a42..1aa91aa741 100644 --- a/Resources/Locale/en-US/transform/verbs/attach-to-grid-verb.ftl +++ b/Resources/Locale/en-US/transform/verbs/attach-to-grid-verb.ftl @@ -1 +1 @@ -attach-to-grid-verb-get-data-text = Attach to grid \ No newline at end of file +attach-to-grid-verb-get-data-text = Attach to grid diff --git a/Resources/Locale/en-US/transform/verbs/attach-to-self-verb.ftl b/Resources/Locale/en-US/transform/verbs/attach-to-self-verb.ftl index a6abcd239d..dff00dc8b7 100644 --- a/Resources/Locale/en-US/transform/verbs/attach-to-self-verb.ftl +++ b/Resources/Locale/en-US/transform/verbs/attach-to-self-verb.ftl @@ -1 +1 @@ -attach-to-self-verb-get-data-text = Attach to self \ No newline at end of file +attach-to-self-verb-get-data-text = Attach to self diff --git a/Resources/Locale/en-US/triggers/trigger-on-verb.ftl b/Resources/Locale/en-US/triggers/trigger-on-verb.ftl index d9342e7bdd..153763f1f3 100644 --- a/Resources/Locale/en-US/triggers/trigger-on-verb.ftl +++ b/Resources/Locale/en-US/triggers/trigger-on-verb.ftl @@ -1,2 +1,2 @@ trigger-on-verb-default = Trigger -trigger-on-verb-detonation = Start detonation \ No newline at end of file +trigger-on-verb-detonation = Start detonation diff --git a/Resources/Locale/en-US/ui/actionmenu.ftl b/Resources/Locale/en-US/ui/actionmenu.ftl index 924ed0710b..712d2b8e3c 100644 --- a/Resources/Locale/en-US/ui/actionmenu.ftl +++ b/Resources/Locale/en-US/ui/actionmenu.ftl @@ -1,4 +1,4 @@ # Action menu stuff (left panel, with hotbars etc) ui-actionmenu-function-lock-action-slots = (Un)lock dragging and clearing action slots -ui-actionmenu-function-open-abilities-menu = Open action menu \ No newline at end of file +ui-actionmenu-function-open-abilities-menu = Open action menu diff --git a/Resources/Locale/en-US/ui/controls.ftl b/Resources/Locale/en-US/ui/controls.ftl index 575c6499f4..30a0840aaa 100644 --- a/Resources/Locale/en-US/ui/controls.ftl +++ b/Resources/Locale/en-US/ui/controls.ftl @@ -1,4 +1,4 @@ -## Loc strings for generic "on/off button" control. +## Loc strings for generic "on/off button" control. ui-button-off = Off ui-button-on = On diff --git a/Resources/Locale/en-US/ui/navmap.ftl b/Resources/Locale/en-US/ui/navmap.ftl index c5d7a1e612..299177c5c1 100644 --- a/Resources/Locale/en-US/ui/navmap.ftl +++ b/Resources/Locale/en-US/ui/navmap.ftl @@ -1,4 +1,4 @@ -navmap-zoom = Zoom: {$value}x +navmap-zoom = Zoom: {$value}x navmap-recenter = Recenter navmap-toggle-beacons = Show departments navmap-location = Location: [x = {$x}, y = {$y}] diff --git a/Resources/Locale/en-US/ui/spray-painter-window.ftl b/Resources/Locale/en-US/ui/spray-painter-window.ftl index 5466810e11..d06f3c8c04 100644 --- a/Resources/Locale/en-US/ui/spray-painter-window.ftl +++ b/Resources/Locale/en-US/ui/spray-painter-window.ftl @@ -1 +1 @@ -pipe-painter-no-color-selected = (No color selected) \ No newline at end of file +pipe-painter-no-color-selected = (No color selected) diff --git a/Resources/Locale/en-US/ui/transfer-amount.ftl b/Resources/Locale/en-US/ui/transfer-amount.ftl index a1f549d934..c86e521769 100644 --- a/Resources/Locale/en-US/ui/transfer-amount.ftl +++ b/Resources/Locale/en-US/ui/transfer-amount.ftl @@ -1,4 +1,4 @@ -### Loc for the transfer amount eui window +### Loc for the transfer amount eui window ## Title diff --git a/Resources/Locale/en-US/vehicle/vehicle.ftl b/Resources/Locale/en-US/vehicle/vehicle.ftl index 417a1a17ac..521caf5a87 100644 --- a/Resources/Locale/en-US/vehicle/vehicle.ftl +++ b/Resources/Locale/en-US/vehicle/vehicle.ftl @@ -1,4 +1,4 @@ -vehicle-slot-component-slot-name-keys = keys +vehicle-slot-component-slot-name-keys = keys container-vehicle-verb-enter = Enter container-vehicle-verb-remove-operator = Remove operator container-vehicle-entry-denied = You cannot operate this. diff --git a/Resources/Locale/en-US/verbs/invoke-verb-command.ftl b/Resources/Locale/en-US/verbs/invoke-verb-command.ftl index c805eb6364..dbb92df653 100644 --- a/Resources/Locale/en-US/verbs/invoke-verb-command.ftl +++ b/Resources/Locale/en-US/verbs/invoke-verb-command.ftl @@ -1,4 +1,4 @@ -### Localization used for the invoke verb command. +### Localization used for the invoke verb command. # Mostly help + error messages. invoke-verb-command-description = Invokes a verb with the given name on an entity, with the player entity diff --git a/Resources/Locale/en-US/verbs/list-verbs-command.ftl b/Resources/Locale/en-US/verbs/list-verbs-command.ftl index 75a1df3ffa..53b85559de 100644 --- a/Resources/Locale/en-US/verbs/list-verbs-command.ftl +++ b/Resources/Locale/en-US/verbs/list-verbs-command.ftl @@ -1,4 +1,4 @@ -### Localization used for the list verbs command. +### Localization used for the list verbs command. # Mostly help + error messages. list-verbs-command-description = Lists all verbs that a player can use on a given entity. diff --git a/Resources/Locale/en-US/verbs/verbs.ftl b/Resources/Locale/en-US/verbs/verbs.ftl index e39e0727f0..2b2becd6ff 100644 --- a/Resources/Locale/en-US/verbs/verbs.ftl +++ b/Resources/Locale/en-US/verbs/verbs.ftl @@ -1,2 +1,2 @@ # Default text that gets shown in the context menu for examining something with a GroupExamineComponent -verb-examine-group-other = Other \ No newline at end of file +verb-examine-group-other = Other diff --git a/Resources/Locale/en-US/virtual/virtual-item.ftl b/Resources/Locale/en-US/virtual/virtual-item.ftl index cb91f24cf7..a83c58c337 100644 --- a/Resources/Locale/en-US/virtual/virtual-item.ftl +++ b/Resources/Locale/en-US/virtual/virtual-item.ftl @@ -1 +1 @@ -virtual-item-dropped-other = You dropped {THE($dropped)}! +virtual-item-dropped-other = You dropped {THE($dropped)}! diff --git a/Resources/Locale/en-US/voting/ui/vote-call-menu-button.ftl b/Resources/Locale/en-US/voting/ui/vote-call-menu-button.ftl index eee71abf10..912529d389 100644 --- a/Resources/Locale/en-US/voting/ui/vote-call-menu-button.ftl +++ b/Resources/Locale/en-US/voting/ui/vote-call-menu-button.ftl @@ -1,2 +1,2 @@ # Button text in lobby/escape menu -ui-vote-menu-button = Call vote \ No newline at end of file +ui-vote-menu-button = Call vote diff --git a/Resources/Locale/en-US/voting/vote-options.ftl b/Resources/Locale/en-US/voting/vote-options.ftl index dffd61b3b5..9f13324c91 100644 --- a/Resources/Locale/en-US/voting/vote-options.ftl +++ b/Resources/Locale/en-US/voting/vote-options.ftl @@ -1 +1 @@ -vote-options-server-initiator-text = The server \ No newline at end of file +vote-options-server-initiator-text = The server diff --git a/Resources/Locale/en-US/weapons/ranged/recharge-basic-entity-ammo.ftl b/Resources/Locale/en-US/weapons/ranged/recharge-basic-entity-ammo.ftl index 49ebe25dc3..4014a9295d 100644 --- a/Resources/Locale/en-US/weapons/ranged/recharge-basic-entity-ammo.ftl +++ b/Resources/Locale/en-US/weapons/ranged/recharge-basic-entity-ammo.ftl @@ -1,2 +1,2 @@ -recharge-basic-entity-ammo-can-recharge = It will recharge its ammo in [color=yellow]{$seconds}[/color] seconds. +recharge-basic-entity-ammo-can-recharge = It will recharge its ammo in [color=yellow]{$seconds}[/color] seconds. recharge-basic-entity-ammo-full = It doesn't need to recharge its ammo yet. diff --git a/Resources/Locale/en-US/weapons/ranged/turrets.ftl b/Resources/Locale/en-US/weapons/ranged/turrets.ftl index 8a21647075..16c85f052d 100644 --- a/Resources/Locale/en-US/weapons/ranged/turrets.ftl +++ b/Resources/Locale/en-US/weapons/ranged/turrets.ftl @@ -10,4 +10,4 @@ deployable-turret-component-cannot-access-wires = You can't reach the maintenanc # Turret notification for station AI station-ai-turret-component-name = {$name} ({$address}) -station-ai-turret-component-is-attacking-warning = {CAPITALIZE($source)} has engaged a hostile target. \ No newline at end of file +station-ai-turret-component-is-attacking-warning = {CAPITALIZE($source)} has engaged a hostile target. diff --git a/Resources/Locale/en-US/xenoarchaeology/artifact-component.ftl b/Resources/Locale/en-US/xenoarchaeology/artifact-component.ftl index c131be8859..236fe3b99e 100644 --- a/Resources/Locale/en-US/xenoarchaeology/artifact-component.ftl +++ b/Resources/Locale/en-US/xenoarchaeology/artifact-component.ftl @@ -1,4 +1,4 @@ -### Verbs +### Verbs artifact-verb-make-always-active = Make artifact always active artifact-verb-activate = Activate artifact diff --git a/Resources/Prototypes/Accents/full_replacements.yml b/Resources/Prototypes/Accents/full_replacements.yml index 737739ba9d..3ac30fabca 100644 --- a/Resources/Prototypes/Accents/full_replacements.yml +++ b/Resources/Prototypes/Accents/full_replacements.yml @@ -1,4 +1,4 @@ -# Accents that work off of full replacements rather than word replacements. +# Accents that work off of full replacements rather than word replacements. - type: accent id: cat diff --git a/Resources/Prototypes/Access/silicon.yml b/Resources/Prototypes/Access/silicon.yml index a8f91982f3..db9d449677 100644 --- a/Resources/Prototypes/Access/silicon.yml +++ b/Resources/Prototypes/Access/silicon.yml @@ -1,4 +1,4 @@ -- type: accessLevel +- type: accessLevel id: Borg name: id-card-access-level-borg canAddToIdCard: false diff --git a/Resources/Prototypes/Access/wizard.yml b/Resources/Prototypes/Access/wizard.yml index cacb889936..f8b312b8fb 100644 --- a/Resources/Prototypes/Access/wizard.yml +++ b/Resources/Prototypes/Access/wizard.yml @@ -1,3 +1,3 @@ -- type: accessLevel +- type: accessLevel id: Wizard name: id-card-access-level-wizard diff --git a/Resources/Prototypes/Access/xenoborg.yml b/Resources/Prototypes/Access/xenoborg.yml index 7436e4ec55..f9838b1940 100644 --- a/Resources/Prototypes/Access/xenoborg.yml +++ b/Resources/Prototypes/Access/xenoborg.yml @@ -1,4 +1,4 @@ - type: accessLevel id: Xenoborg name: id-card-access-level-basic-xenoborg - canAddToIdCard: false \ No newline at end of file + canAddToIdCard: false diff --git a/Resources/Prototypes/Anomaly/behaviours.yml b/Resources/Prototypes/Anomaly/behaviours.yml index 924a4a7500..f99e436ffb 100644 --- a/Resources/Prototypes/Anomaly/behaviours.yml +++ b/Resources/Prototypes/Anomaly/behaviours.yml @@ -220,4 +220,4 @@ maxVisibility: 1.2 - type: StealthOnMove passiveVisibilityRate: -0.37 - movementVisibilityRate: 0.20 \ No newline at end of file + movementVisibilityRate: 0.20 diff --git a/Resources/Prototypes/Atmospherics/gases.yml b/Resources/Prototypes/Atmospherics/gases.yml index 94244e55ce..4f704c9be6 100644 --- a/Resources/Prototypes/Atmospherics/gases.yml +++ b/Resources/Prototypes/Atmospherics/gases.yml @@ -1,4 +1,4 @@ -- type: gas +- type: gas id: Oxygen name: gas-oxygen abbreviation: gas-oxygen-abbreviation diff --git a/Resources/Prototypes/Catalog/Bots/advertisements.yml b/Resources/Prototypes/Catalog/Bots/advertisements.yml index 6174c25ff3..d3ec1d1438 100644 --- a/Resources/Prototypes/Catalog/Bots/advertisements.yml +++ b/Resources/Prototypes/Catalog/Bots/advertisements.yml @@ -8,4 +8,4 @@ id: FirebotAd values: prefix: advertisement-firebot- - count: 4 \ No newline at end of file + count: 4 diff --git a/Resources/Prototypes/Catalog/Bots/hugbot.yml b/Resources/Prototypes/Catalog/Bots/hugbot.yml index 469bb1196d..06d39f8db8 100644 --- a/Resources/Prototypes/Catalog/Bots/hugbot.yml +++ b/Resources/Prototypes/Catalog/Bots/hugbot.yml @@ -1,4 +1,4 @@ -- type: localizedDataset +- type: localizedDataset id: HugBotStarts values: prefix: hugbot-start-hug- diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_instuments.yml b/Resources/Prototypes/Catalog/Cargo/cargo_instuments.yml index 722956f43a..7457e071aa 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_instuments.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_instuments.yml @@ -1,4 +1,4 @@ -# Handheld Instruments +# Handheld Instruments - type: cargoProduct id: FunInstrumentsVariety diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_science.yml b/Resources/Prototypes/Catalog/Cargo/cargo_science.yml index cefcca5fab..be099d7ba0 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_science.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_science.yml @@ -56,4 +56,4 @@ product: CrateStationAiCore cost: 10000 category: cargoproduct-category-name-science - group: market \ No newline at end of file + group: market diff --git a/Resources/Prototypes/Catalog/Fills/Paper/manuals.yml b/Resources/Prototypes/Catalog/Fills/Paper/manuals.yml index 4da9ec5187..a12db25e4c 100644 --- a/Resources/Prototypes/Catalog/Fills/Paper/manuals.yml +++ b/Resources/Prototypes/Catalog/Fills/Paper/manuals.yml @@ -40,4 +40,4 @@ parent: Paper components: - type: Paper - content: book-text-combat-bakery-kit \ No newline at end of file + content: book-text-combat-bakery-kit diff --git a/Resources/Prototypes/Chemistry/injector_modes.yml b/Resources/Prototypes/Chemistry/injector_modes.yml index 6b2e0b96f7..f1485a15cd 100644 --- a/Resources/Prototypes/Chemistry/injector_modes.yml +++ b/Resources/Prototypes/Chemistry/injector_modes.yml @@ -1,4 +1,4 @@ -## Abstracts +## Abstracts - type: injectorMode abstract: true id: BaseInjectMode diff --git a/Resources/Prototypes/Chemistry/reactive_groups.yml b/Resources/Prototypes/Chemistry/reactive_groups.yml index fa001f3083..29ea6f6034 100644 --- a/Resources/Prototypes/Chemistry/reactive_groups.yml +++ b/Resources/Prototypes/Chemistry/reactive_groups.yml @@ -1,4 +1,4 @@ -- type: reactiveGroup +- type: reactiveGroup id: Flammable - type: reactiveGroup diff --git a/Resources/Prototypes/Codewords/codeword_factions.yml b/Resources/Prototypes/Codewords/codeword_factions.yml index 9dc7e31eac..06bef52747 100644 --- a/Resources/Prototypes/Codewords/codeword_factions.yml +++ b/Resources/Prototypes/Codewords/codeword_factions.yml @@ -1,3 +1,3 @@ -- type: codewordFaction +- type: codewordFaction id: Traitor generator: TraitorCodewordGenerator diff --git a/Resources/Prototypes/Codewords/codeword_generators.yml b/Resources/Prototypes/Codewords/codeword_generators.yml index c66fd37083..ad76edf4ad 100644 --- a/Resources/Prototypes/Codewords/codeword_generators.yml +++ b/Resources/Prototypes/Codewords/codeword_generators.yml @@ -1,4 +1,4 @@ -- type: codewordGenerator +- type: codewordGenerator id: TraitorCodewordGenerator words: - Adjectives diff --git a/Resources/Prototypes/Damage/examine_messages.yml b/Resources/Prototypes/Damage/examine_messages.yml index fe551902b0..c911f0de4e 100644 --- a/Resources/Prototypes/Damage/examine_messages.yml +++ b/Resources/Prototypes/Damage/examine_messages.yml @@ -1,4 +1,4 @@ -- type: localizedDataset +- type: localizedDataset id: WindowMessages values: prefix: comp-window-damaged- diff --git a/Resources/Prototypes/Datasets/Names/ai.yml b/Resources/Prototypes/Datasets/Names/ai.yml index 44f47ba0ca..e72a7d4060 100644 --- a/Resources/Prototypes/Datasets/Names/ai.yml +++ b/Resources/Prototypes/Datasets/Names/ai.yml @@ -1,4 +1,4 @@ -- type: localizedDataset +- type: localizedDataset id: NamesAI values: prefix: names-ai-dataset- diff --git a/Resources/Prototypes/Datasets/Names/atv.yml b/Resources/Prototypes/Datasets/Names/atv.yml index 638fb21134..8798c5548a 100644 --- a/Resources/Prototypes/Datasets/Names/atv.yml +++ b/Resources/Prototypes/Datasets/Names/atv.yml @@ -1,4 +1,4 @@ -- type: localizedDataset +- type: localizedDataset id: DescriptionsATV values: prefix: descriptions-atv-dataset- diff --git a/Resources/Prototypes/Datasets/Names/autoborg.yml b/Resources/Prototypes/Datasets/Names/autoborg.yml index 680286da64..1068b6c2c2 100644 --- a/Resources/Prototypes/Datasets/Names/autoborg.yml +++ b/Resources/Prototypes/Datasets/Names/autoborg.yml @@ -1,4 +1,4 @@ -- type: localizedDataset +- type: localizedDataset id: NamesAutoborg values: prefix: names-autoborg-dataset- diff --git a/Resources/Prototypes/Datasets/Names/base.yml b/Resources/Prototypes/Datasets/Names/base.yml index 68382fbd8b..09508bc30e 100644 --- a/Resources/Prototypes/Datasets/Names/base.yml +++ b/Resources/Prototypes/Datasets/Names/base.yml @@ -1,4 +1,4 @@ -- type: localizedDataset +- type: localizedDataset id: NamesFirst values: prefix: names-first-dataset- diff --git a/Resources/Prototypes/Datasets/Names/base_gendered.yml b/Resources/Prototypes/Datasets/Names/base_gendered.yml index 4a8e98b4f2..810bf45376 100644 --- a/Resources/Prototypes/Datasets/Names/base_gendered.yml +++ b/Resources/Prototypes/Datasets/Names/base_gendered.yml @@ -1,4 +1,4 @@ -- type: localizedDataset +- type: localizedDataset id: NamesFirstMale values: prefix: names-first-male-dataset- diff --git a/Resources/Prototypes/Datasets/Names/borer.yml b/Resources/Prototypes/Datasets/Names/borer.yml index e8d741e6a9..2ffa5ccf40 100644 --- a/Resources/Prototypes/Datasets/Names/borer.yml +++ b/Resources/Prototypes/Datasets/Names/borer.yml @@ -1,4 +1,4 @@ -- type: localizedDataset +- type: localizedDataset id: NamesBorer values: prefix: names-borer-dataset- diff --git a/Resources/Prototypes/Datasets/Names/clown.yml b/Resources/Prototypes/Datasets/Names/clown.yml index 84b265bd8c..6d9b92b7f5 100644 --- a/Resources/Prototypes/Datasets/Names/clown.yml +++ b/Resources/Prototypes/Datasets/Names/clown.yml @@ -1,4 +1,4 @@ -- type: localizedDataset +- type: localizedDataset id: NamesClown values: prefix: names-clown-dataset- diff --git a/Resources/Prototypes/Datasets/Names/death_commando.yml b/Resources/Prototypes/Datasets/Names/death_commando.yml index 57213cf775..7a3a48942f 100644 --- a/Resources/Prototypes/Datasets/Names/death_commando.yml +++ b/Resources/Prototypes/Datasets/Names/death_commando.yml @@ -1,4 +1,4 @@ -- type: localizedDataset +- type: localizedDataset id: NamesDeathCommandoFirst values: prefix: names-death-commando-first-dataset- diff --git a/Resources/Prototypes/Datasets/Names/hologram.yml b/Resources/Prototypes/Datasets/Names/hologram.yml index c8ee6604b4..0500843a97 100644 --- a/Resources/Prototypes/Datasets/Names/hologram.yml +++ b/Resources/Prototypes/Datasets/Names/hologram.yml @@ -1,4 +1,4 @@ -- type: localizedDataset +- type: localizedDataset id: NamesHologram values: prefix: names-hologram-dataset- diff --git a/Resources/Prototypes/Datasets/Names/military.yml b/Resources/Prototypes/Datasets/Names/military.yml index 475b40222b..11e826fa81 100644 --- a/Resources/Prototypes/Datasets/Names/military.yml +++ b/Resources/Prototypes/Datasets/Names/military.yml @@ -1,4 +1,4 @@ -- type: localizedDataset +- type: localizedDataset id: NamesMilitaryFirstLeader values: prefix: names-military-leader-first-dataset- diff --git a/Resources/Prototypes/Datasets/Names/mushman_first.yml b/Resources/Prototypes/Datasets/Names/mushman_first.yml index bad4849e15..be99917c2e 100644 --- a/Resources/Prototypes/Datasets/Names/mushman_first.yml +++ b/Resources/Prototypes/Datasets/Names/mushman_first.yml @@ -1,4 +1,4 @@ -- type: localizedDataset +- type: localizedDataset id: NamesMushmanFirst values: prefix: names-mushman-first-dataset- diff --git a/Resources/Prototypes/Datasets/Names/mushman_last.yml b/Resources/Prototypes/Datasets/Names/mushman_last.yml index 6eb849399e..033bc96404 100644 --- a/Resources/Prototypes/Datasets/Names/mushman_last.yml +++ b/Resources/Prototypes/Datasets/Names/mushman_last.yml @@ -1,4 +1,4 @@ -- type: localizedDataset +- type: localizedDataset id: NamesMushmanLast values: prefix: names-mushman-last-dataset- diff --git a/Resources/Prototypes/Datasets/Names/ninja.yml b/Resources/Prototypes/Datasets/Names/ninja.yml index cde06436eb..87617ac762 100644 --- a/Resources/Prototypes/Datasets/Names/ninja.yml +++ b/Resources/Prototypes/Datasets/Names/ninja.yml @@ -1,4 +1,4 @@ -- type: localizedDataset +- type: localizedDataset id: NamesNinja values: prefix: names-ninja-dataset- diff --git a/Resources/Prototypes/Datasets/Names/scurret.yml b/Resources/Prototypes/Datasets/Names/scurret.yml index 9e23557b38..9ea6e5a009 100644 --- a/Resources/Prototypes/Datasets/Names/scurret.yml +++ b/Resources/Prototypes/Datasets/Names/scurret.yml @@ -1,4 +1,4 @@ -- type: localizedDataset +- type: localizedDataset id: NamesFirstScurret values: prefix: names-scurret-first-dataset- diff --git a/Resources/Prototypes/Datasets/Names/wizard.yml b/Resources/Prototypes/Datasets/Names/wizard.yml index aea4ee1111..084cfe6f3f 100644 --- a/Resources/Prototypes/Datasets/Names/wizard.yml +++ b/Resources/Prototypes/Datasets/Names/wizard.yml @@ -1,4 +1,4 @@ -- type: localizedDataset +- type: localizedDataset id: NamesWizardFirst values: prefix: names-wizard-first-dataset- diff --git a/Resources/Prototypes/Datasets/adjectives.yml b/Resources/Prototypes/Datasets/adjectives.yml index 7c669a29af..d94a70f987 100644 --- a/Resources/Prototypes/Datasets/adjectives.yml +++ b/Resources/Prototypes/Datasets/adjectives.yml @@ -1,4 +1,4 @@ -- type: localizedDataset +- type: localizedDataset id: Adjectives values: prefix: adjectives-dataset- diff --git a/Resources/Prototypes/Datasets/news.yml b/Resources/Prototypes/Datasets/news.yml index a1fdb55c2f..dac355ccbf 100644 --- a/Resources/Prototypes/Datasets/news.yml +++ b/Resources/Prototypes/Datasets/news.yml @@ -1,4 +1,4 @@ -- type: localizedDataset +- type: localizedDataset id: News values: prefix: news-dataset- diff --git a/Resources/Prototypes/Datasets/rat_king_commands.yml b/Resources/Prototypes/Datasets/rat_king_commands.yml index 6cfb2a6dba..fa88ee15c9 100644 --- a/Resources/Prototypes/Datasets/rat_king_commands.yml +++ b/Resources/Prototypes/Datasets/rat_king_commands.yml @@ -1,4 +1,4 @@ -- type: localizedDataset +- type: localizedDataset id: RatKingCommandStay values: prefix: rat-king-command-stay- diff --git a/Resources/Prototypes/Decals/Overlays/markups.yml b/Resources/Prototypes/Decals/Overlays/markups.yml index cb8d56834e..4c688170fd 100644 --- a/Resources/Prototypes/Decals/Overlays/markups.yml +++ b/Resources/Prototypes/Decals/Overlays/markups.yml @@ -1,4 +1,4 @@ -- type: decal +- type: decal id: MarkupSquare tags: ["overlay"] defaultCustomColor: true diff --git a/Resources/Prototypes/Decals/bricktile_dark.yml b/Resources/Prototypes/Decals/bricktile_dark.yml index 87dbc5d785..0013948cd5 100644 --- a/Resources/Prototypes/Decals/bricktile_dark.yml +++ b/Resources/Prototypes/Decals/bricktile_dark.yml @@ -1,4 +1,4 @@ -- type: decal +- type: decal id: BrickTileDarkBox tags: ["station", "markings"] sprite: diff --git a/Resources/Prototypes/Decals/bricktile_steel.yml b/Resources/Prototypes/Decals/bricktile_steel.yml index b45a05c19d..a353cd6dcf 100644 --- a/Resources/Prototypes/Decals/bricktile_steel.yml +++ b/Resources/Prototypes/Decals/bricktile_steel.yml @@ -1,4 +1,4 @@ -- type: decal +- type: decal id: BrickTileSteelBox tags: ["station", "markings"] sprite: diff --git a/Resources/Prototypes/Decals/bricktile_white.yml b/Resources/Prototypes/Decals/bricktile_white.yml index 7ec78b5653..a39fa90770 100644 --- a/Resources/Prototypes/Decals/bricktile_white.yml +++ b/Resources/Prototypes/Decals/bricktile_white.yml @@ -1,4 +1,4 @@ -- type: decal +- type: decal id: BrickTileWhiteBox tags: ["station", "markings"] sprite: diff --git a/Resources/Prototypes/Decals/concrete_trim.yml b/Resources/Prototypes/Decals/concrete_trim.yml index 43d53c8f82..8648e5ae51 100644 --- a/Resources/Prototypes/Decals/concrete_trim.yml +++ b/Resources/Prototypes/Decals/concrete_trim.yml @@ -1,4 +1,4 @@ -- type: decal +- type: decal id: ConcreteTrimBox tags: ["planet", "markings"] sprite: diff --git a/Resources/Prototypes/Decals/dirty.yml b/Resources/Prototypes/Decals/dirty.yml index a20feea26c..148a59b127 100644 --- a/Resources/Prototypes/Decals/dirty.yml +++ b/Resources/Prototypes/Decals/dirty.yml @@ -1,4 +1,4 @@ -# If you spawn any of these, they should probably be made cleanable as well. +# If you spawn any of these, they should probably be made cleanable as well. - type: decal id: Dirt diff --git a/Resources/Prototypes/Decals/markings.yml b/Resources/Prototypes/Decals/markings.yml index 12fb7204b7..a302d8a8ed 100644 --- a/Resources/Prototypes/Decals/markings.yml +++ b/Resources/Prototypes/Decals/markings.yml @@ -1,4 +1,4 @@ -- type: decal +- type: decal id: Arrows tags: ["station", "markings"] sprite: diff --git a/Resources/Prototypes/Decals/minitile_dark.yml b/Resources/Prototypes/Decals/minitile_dark.yml index ea54205446..d0f8bcf05e 100644 --- a/Resources/Prototypes/Decals/minitile_dark.yml +++ b/Resources/Prototypes/Decals/minitile_dark.yml @@ -1,4 +1,4 @@ -- type: decal +- type: decal id: MiniTileDarkBox tags: ["station", "markings"] sprite: diff --git a/Resources/Prototypes/Decals/minitile_steel.yml b/Resources/Prototypes/Decals/minitile_steel.yml index c6bd059ee8..09f6b02a0a 100644 --- a/Resources/Prototypes/Decals/minitile_steel.yml +++ b/Resources/Prototypes/Decals/minitile_steel.yml @@ -1,4 +1,4 @@ -- type: decal +- type: decal id: MiniTileSteelBox tags: ["station", "markings"] sprite: diff --git a/Resources/Prototypes/Decals/minitile_white.yml b/Resources/Prototypes/Decals/minitile_white.yml index 163ac37d53..27732e4c01 100644 --- a/Resources/Prototypes/Decals/minitile_white.yml +++ b/Resources/Prototypes/Decals/minitile_white.yml @@ -1,4 +1,4 @@ -- type: decal +- type: decal id: MiniTileWhiteBox tags: ["station", "markings"] sprite: diff --git a/Resources/Prototypes/Decals/originsign.yml b/Resources/Prototypes/Decals/originsign.yml index a57eaaff6b..5dc72808b4 100644 --- a/Resources/Prototypes/Decals/originsign.yml +++ b/Resources/Prototypes/Decals/originsign.yml @@ -1,4 +1,4 @@ -- type: decal +- type: decal id: OriginStationSign1 tags: ["station"] sprite: diff --git a/Resources/Prototypes/Decals/ss14sign.yml b/Resources/Prototypes/Decals/ss14sign.yml index c78b180c69..374dd0bb70 100644 --- a/Resources/Prototypes/Decals/ss14sign.yml +++ b/Resources/Prototypes/Decals/ss14sign.yml @@ -1,4 +1,4 @@ -- type: decal +- type: decal id: SpaceStationSign1 tags: ["station"] sprite: diff --git a/Resources/Prototypes/Decals/stairs.yml b/Resources/Prototypes/Decals/stairs.yml index a4c1ac7ae8..b72b7c44d8 100644 --- a/Resources/Prototypes/Decals/stairs.yml +++ b/Resources/Prototypes/Decals/stairs.yml @@ -167,4 +167,4 @@ id: StairsWoodW sprite: sprite: deprecated.rsi - state: deprecated \ No newline at end of file + state: deprecated diff --git a/Resources/Prototypes/Decals/syndlogo.yml b/Resources/Prototypes/Decals/syndlogo.yml index f9cda95c70..8ba7495dd0 100644 --- a/Resources/Prototypes/Decals/syndlogo.yml +++ b/Resources/Prototypes/Decals/syndlogo.yml @@ -129,4 +129,4 @@ tags: ["syndicate"] sprite: sprite: Decals/syndlogo.rsi - state: syndlogo19 \ No newline at end of file + state: syndlogo19 diff --git a/Resources/Prototypes/Decals/wood_trim_thin.yml b/Resources/Prototypes/Decals/wood_trim_thin.yml index 9e3084f38d..d3822a0b11 100644 --- a/Resources/Prototypes/Decals/wood_trim_thin.yml +++ b/Resources/Prototypes/Decals/wood_trim_thin.yml @@ -1,4 +1,4 @@ -- type: decal +- type: decal id: WoodTrimThinBox tags: ["station", "markings"] sprite: diff --git a/Resources/Prototypes/Entities/Clothing/Ears/headsets_alt.yml b/Resources/Prototypes/Entities/Clothing/Ears/headsets_alt.yml index f27f6a6a15..e998fff261 100644 --- a/Resources/Prototypes/Entities/Clothing/Ears/headsets_alt.yml +++ b/Resources/Prototypes/Entities/Clothing/Ears/headsets_alt.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity abstract: true parent: ClothingHeadset id: ClothingHeadsetAlt diff --git a/Resources/Prototypes/Entities/Clothing/Ears/specific.yml b/Resources/Prototypes/Entities/Clothing/Ears/specific.yml index 987c3f7340..cfdbfd0eb0 100644 --- a/Resources/Prototypes/Entities/Clothing/Ears/specific.yml +++ b/Resources/Prototypes/Entities/Clothing/Ears/specific.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: [ClothingHeadsetGrey, BaseChameleon] id: ClothingHeadsetChameleon name: passenger headset diff --git a/Resources/Prototypes/Entities/Clothing/Head/specific.yml b/Resources/Prototypes/Entities/Clothing/Head/specific.yml index b25a7c4a5e..054c0775a4 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/specific.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/specific.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: [ClothingHeadBase, BaseChameleon] id: ClothingHeadHatChameleon name: beret diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/specific.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/specific.yml index 169a322dd4..0dc93da706 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/specific.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/specific.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: [ClothingOuterBase, TemperatureProtectionMinimal, AllowSuitStorageClothingGasTanks, BaseChameleon] id: ClothingOuterChameleon name: vest diff --git a/Resources/Prototypes/Entities/Clothing/Shoes/color.yml b/Resources/Prototypes/Entities/Clothing/Shoes/color.yml index 16608aacc9..0508d111b7 100644 --- a/Resources/Prototypes/Entities/Clothing/Shoes/color.yml +++ b/Resources/Prototypes/Entities/Clothing/Shoes/color.yml @@ -275,4 +275,4 @@ shoes: - state: equipped-FEET color: "#9C0DE1" - - state: soles-equipped-FEET \ No newline at end of file + - state: soles-equipped-FEET diff --git a/Resources/Prototypes/Entities/Effects/acidifier.yml b/Resources/Prototypes/Entities/Effects/acidifier.yml index bc2fc3c4c3..a3b2e9de0f 100644 --- a/Resources/Prototypes/Entities/Effects/acidifier.yml +++ b/Resources/Prototypes/Entities/Effects/acidifier.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: Acidifier name: acid description: Melts you into a puddle of yuck! diff --git a/Resources/Prototypes/Entities/Effects/bluespace_flash.yml b/Resources/Prototypes/Entities/Effects/bluespace_flash.yml index 42cdfbd297..d9b407da1f 100644 --- a/Resources/Prototypes/Entities/Effects/bluespace_flash.yml +++ b/Resources/Prototypes/Entities/Effects/bluespace_flash.yml @@ -10,4 +10,4 @@ lifetime: 1 - type: EmitSoundOnSpawn sound: - path: /Audio/Effects/Lightning/lightningbolt.ogg \ No newline at end of file + path: /Audio/Effects/Lightning/lightningbolt.ogg diff --git a/Resources/Prototypes/Entities/Effects/desynchronizer_effecs.yml b/Resources/Prototypes/Entities/Effects/desynchronizer_effecs.yml index 6bede2fa8d..7a1c40a520 100644 --- a/Resources/Prototypes/Entities/Effects/desynchronizer_effecs.yml +++ b/Resources/Prototypes/Entities/Effects/desynchronizer_effecs.yml @@ -16,4 +16,4 @@ lifetime: 0.8 - type: Tag tags: - - HideContextMenu \ No newline at end of file + - HideContextMenu diff --git a/Resources/Prototypes/Entities/Effects/eldritch.yml b/Resources/Prototypes/Entities/Effects/eldritch.yml index 196fe288e7..0ea5b349ee 100644 --- a/Resources/Prototypes/Entities/Effects/eldritch.yml +++ b/Resources/Prototypes/Entities/Effects/eldritch.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: EffectVoidBlink name: void blink categories: [ HideSpawnMenu ] diff --git a/Resources/Prototypes/Entities/Effects/exclamation.yml b/Resources/Prototypes/Entities/Effects/exclamation.yml index d1f3e3ad06..9a2335866d 100644 --- a/Resources/Prototypes/Entities/Effects/exclamation.yml +++ b/Resources/Prototypes/Entities/Effects/exclamation.yml @@ -36,4 +36,4 @@ lifetime: 0.8 - type: Tag tags: - - HideContextMenu \ No newline at end of file + - HideContextMenu diff --git a/Resources/Prototypes/Entities/Effects/hearts.yml b/Resources/Prototypes/Entities/Effects/hearts.yml index 18f72c95d4..ec2ed05a9f 100644 --- a/Resources/Prototypes/Entities/Effects/hearts.yml +++ b/Resources/Prototypes/Entities/Effects/hearts.yml @@ -13,4 +13,4 @@ - type: Tag tags: - HideContextMenu - - type: AnimationPlayer \ No newline at end of file + - type: AnimationPlayer diff --git a/Resources/Prototypes/Entities/Effects/lightning.yml b/Resources/Prototypes/Entities/Effects/lightning.yml index 3d8135bf23..cfccb5456a 100644 --- a/Resources/Prototypes/Entities/Effects/lightning.yml +++ b/Resources/Prototypes/Entities/Effects/lightning.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity name: lightning id: BaseLightning abstract: true diff --git a/Resources/Prototypes/Entities/Effects/portal.yml b/Resources/Prototypes/Entities/Effects/portal.yml index 14df3d48da..7a5da19537 100644 --- a/Resources/Prototypes/Entities/Effects/portal.yml +++ b/Resources/Prototypes/Entities/Effects/portal.yml @@ -1,4 +1,4 @@ -# Standing portals +# Standing portals - type: entity abstract: true id: BasePortal diff --git a/Resources/Prototypes/Entities/Effects/rcd.yml b/Resources/Prototypes/Entities/Effects/rcd.yml index a663add9ca..05629eed43 100644 --- a/Resources/Prototypes/Entities/Effects/rcd.yml +++ b/Resources/Prototypes/Entities/Effects/rcd.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: EffectRCDBase abstract: true categories: [ HideSpawnMenu ] @@ -112,4 +112,4 @@ - type: Sprite state: deconstruct8 - type: TimedDespawn - lifetime: 9.2 \ No newline at end of file + lifetime: 9.2 diff --git a/Resources/Prototypes/Entities/Effects/sparks.yml b/Resources/Prototypes/Entities/Effects/sparks.yml index c12e3b0eca..5a89fbfbdc 100644 --- a/Resources/Prototypes/Entities/Effects/sparks.yml +++ b/Resources/Prototypes/Entities/Effects/sparks.yml @@ -41,4 +41,4 @@ sound: path: /Audio/Effects/tesla_consume.ogg params: - variation: 0.3 \ No newline at end of file + variation: 0.3 diff --git a/Resources/Prototypes/Entities/Effects/wallspawn.yml b/Resources/Prototypes/Entities/Effects/wallspawn.yml index 155ef10bb5..9e7d66171a 100644 --- a/Resources/Prototypes/Entities/Effects/wallspawn.yml +++ b/Resources/Prototypes/Entities/Effects/wallspawn.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: WallSpawnAsteroid categories: [ HideSpawnMenu ] components: diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Conditional/timed.yml b/Resources/Prototypes/Entities/Markers/Spawners/Conditional/timed.yml index 375acc8268..3bcd2095f3 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Conditional/timed.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Conditional/timed.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity name: AI Timed Spawner id: AITimedSpawner parent: MarkerBase diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Conditional/wizard.yml b/Resources/Prototypes/Entities/Markers/Spawners/Conditional/wizard.yml index bf7dc4e632..641da624ad 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Conditional/wizard.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Conditional/wizard.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: SpawnPointWizard parent: MarkerBase name: wizard diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/Department/security.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/Department/security.yml index f5585a5e32..b9699336fc 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/Department/security.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/Department/security.yml @@ -145,4 +145,4 @@ - ClothingOuterArmorRiot - ClothingOuterArmorBulletproof chance: 0.95 - offset: 0.0 \ No newline at end of file + offset: 0.0 diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/anomaly.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/anomaly.yml index e7471138a0..ead8e40134 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/anomaly.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/anomaly.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: RandomAnomalySpawner name: random anomaly spawner parent: MarkerBase diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/artifacts.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/artifacts.yml index faf230817b..69965d468b 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/artifacts.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/artifacts.yml @@ -1,4 +1,4 @@ -- type: entityTable +- type: entityTable id: RandomArtifactTable table: !type:GroupSelector children: diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/techboard.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/techboard.yml index 636f457d6b..58475db543 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/techboard.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/techboard.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: RandomBoard name: random board spawner parent: MarkerBase diff --git a/Resources/Prototypes/Entities/Markers/Spawners/human.yml b/Resources/Prototypes/Entities/Markers/Spawners/human.yml index a6be9feb2b..7287534e57 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/human.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/human.yml @@ -32,4 +32,4 @@ components: - type: ConditionalSpawner prototypes: - - MobSyndicateFootsoldierPilot \ No newline at end of file + - MobSyndicateFootsoldierPilot diff --git a/Resources/Prototypes/Entities/Markers/hover_entity.yml b/Resources/Prototypes/Entities/Markers/hover_entity.yml index 2e8e1edb29..df1dc49fb2 100644 --- a/Resources/Prototypes/Entities/Markers/hover_entity.yml +++ b/Resources/Prototypes/Entities/Markers/hover_entity.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity name: hover entity id: hoverentity categories: [ HideSpawnMenu ] diff --git a/Resources/Prototypes/Entities/Markers/map_text.yml b/Resources/Prototypes/Entities/Markers/map_text.yml index e8496138ac..fbb1c7b0f3 100644 --- a/Resources/Prototypes/Entities/Markers/map_text.yml +++ b/Resources/Prototypes/Entities/Markers/map_text.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: MapText parent: MarkerBase name: map text diff --git a/Resources/Prototypes/Entities/Markers/pointing.yml b/Resources/Prototypes/Entities/Markers/pointing.yml index 7c07405c7d..6c043a762d 100644 --- a/Resources/Prototypes/Entities/Markers/pointing.yml +++ b/Resources/Prototypes/Entities/Markers/pointing.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity name: pointing arrow id: PointingArrow save: false diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/Vulpkanin/vulpkanin_chest.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/Vulpkanin/vulpkanin_chest.yml index a27145b08f..585caf8627 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/Vulpkanin/vulpkanin_chest.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/Vulpkanin/vulpkanin_chest.yml @@ -21,4 +21,4 @@ groupWhitelist: [ Vulpkanin ] sprites: - sprite: Mobs/Customization/Vulpkanin/body_markings.rsi - state: belly_fox \ No newline at end of file + state: belly_fox diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/tattoos.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/tattoos.yml index a53fa13674..b87a46e430 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/tattoos.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/tattoos.yml @@ -201,4 +201,4 @@ forcedColoring: true sprites: - sprite: Mobs/Customization/tattoos.rsi - state: eyeshadow_lower \ No newline at end of file + state: eyeshadow_lower diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/undergarments.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/undergarments.yml index e1de3807c1..b07e164bcd 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/undergarments.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/undergarments.yml @@ -288,4 +288,4 @@ sprites: - sprite: Mobs/Customization/undergarments.rsi state: tanktop_vulpkanin - \ No newline at end of file + diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/argocyte.yml b/Resources/Prototypes/Entities/Mobs/NPCs/argocyte.yml index fd9b361324..ab8cca5e9f 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/argocyte.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/argocyte.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity save: false parent: [ BaseSimpleMob, BaseMobAnimal, MobCombat, MobBloodstream, BaseMobDestructible ] id: BaseMobArgocyte diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/flying_animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/flying_animals.yml index 0347d394b7..bbf403381e 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/flying_animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/flying_animals.yml @@ -1,4 +1,4 @@ -# Used for entities that are considered flying, +# Used for entities that are considered flying, # i.e. shouldnt slip, have free movement in weightlesness, and should go over chasms/lava - type: entity id: FlyingMobBase diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/lavaland.yml b/Resources/Prototypes/Entities/Mobs/NPCs/lavaland.yml index 1b2902ab3c..ec4f21dff7 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/lavaland.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/lavaland.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity name: watcher id: MobWatcherBase parent: [ SimpleSpaceMobBase, FlyingMobBase, BaseSlicingRefinable, BaseMobDestructible ] diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/scurret.yml b/Resources/Prototypes/Entities/Mobs/NPCs/scurret.yml index e3b6267bf6..ef6f0b213b 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/scurret.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/scurret.yml @@ -1,4 +1,4 @@ -# Defines the scurret, a small, agile sapient species intended for players who want to play as something similar to an ewok. +# Defines the scurret, a small, agile sapient species intended for players who want to play as something similar to an ewok. # Although based on MobBaseAncestor, this species does not have a "developed" playable species it is an ancestor to. - type: entity diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/shadows.yml b/Resources/Prototypes/Entities/Mobs/NPCs/shadows.yml index f08fe36544..3211f1a68c 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/shadows.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/shadows.yml @@ -64,4 +64,4 @@ gender: epicene - type: Tag tags: - - VimPilot \ No newline at end of file + - VimPilot diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml b/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml index e8df5c99a3..ad002492a6 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity name: basic slime id: BaseMobAdultSlimes parent: [ BaseMobSlimes, SimpleMobBase, MobCombat, BaseSlicingRefinable, MobNightVision, BaseMobDestructible ] diff --git a/Resources/Prototypes/Entities/Mobs/Player/jaunt_mobs.yml b/Resources/Prototypes/Entities/Mobs/Player/jaunt_mobs.yml index fbc0b1943c..8a3ac6cc8b 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/jaunt_mobs.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/jaunt_mobs.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity name: jaunt parent: [Incorporeal, BaseMob] id: BaseMobJaunt diff --git a/Resources/Prototypes/Entities/Mobs/Player/replay_observer.yml b/Resources/Prototypes/Entities/Mobs/Player/replay_observer.yml index 3e6da21c02..92cd265510 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/replay_observer.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/replay_observer.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: MobObserverBase id: ReplayObserver categories: [ HideSpawnMenu ] diff --git a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml index 237ab4d766..30726d4111 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml @@ -1,4 +1,4 @@ -# Be careful with these as they get removed on shutdown too! +# Be careful with these as they get removed on shutdown too! - type: entity id: AiHeld description: Components added / removed from an entity that gets inserted into an AI core. diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/box.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/box.yml index 42f9c4ac58..afe7a99e88 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/box.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/box.yml @@ -1,4 +1,4 @@ -# Donut +# Donut # There is a newer, better version of the donutbox from tgstation included in the # donut.rsi. The reason it isn't implemented is it requires a StackVisuals offsetting diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/frozen.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/frozen.yml index f111364226..cb14b000cf 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/frozen.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/frozen.yml @@ -1,4 +1,4 @@ -# When adding new food also add to random spawner located in Resources\Prototypes\Entities\Markers\Spawners\Random\Food_Drinks\food_snack.yml +# When adding new food also add to random spawner located in Resources\Prototypes\Entities\Markers\Spawners\Random\Food_Drinks\food_snack.yml # Base - type: entity diff --git a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/particle_accelerator.yml b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/particle_accelerator.yml index f1b03f97c2..7952a1506e 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/particle_accelerator.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/particle_accelerator.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: MachineParticleAcceleratorEndCapCircuitboard parent: BaseMachineCircuitboard name: PA end cap board diff --git a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml index 11f9f6a013..3e1cb8f34e 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: AutolatheMachineCircuitboard parent: BaseMachineCircuitboard name: autolathe machine board diff --git a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/computer.yml b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/computer.yml index e24288be0a..6023ccd088 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/computer.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/computer.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: BaseItem id: BaseComputerCircuitboard name: computer board diff --git a/Resources/Prototypes/Entities/Objects/Devices/Electronics/base_electronics.yml b/Resources/Prototypes/Entities/Objects/Devices/Electronics/base_electronics.yml index 56d96b99d4..515b00f33f 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Electronics/base_electronics.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Electronics/base_electronics.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: BaseElectronics parent: BaseItem name: base electronics diff --git a/Resources/Prototypes/Entities/Objects/Devices/Electronics/disposal.yml b/Resources/Prototypes/Entities/Objects/Devices/Electronics/disposal.yml index 4638b44d48..f93f90d6f5 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Electronics/disposal.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Electronics/disposal.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: MailingUnitElectronics parent: BaseElectronics name: mailing unit electronics diff --git a/Resources/Prototypes/Entities/Objects/Devices/Electronics/firelock.yml b/Resources/Prototypes/Entities/Objects/Devices/Electronics/firelock.yml index ff576ad285..054b32dc9d 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Electronics/firelock.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Electronics/firelock.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: FirelockElectronics parent: BaseElectronics name: firelock electronics diff --git a/Resources/Prototypes/Entities/Objects/Devices/Electronics/power_electronics.yml b/Resources/Prototypes/Entities/Objects/Devices/Electronics/power_electronics.yml index c1ef5f497f..51f8cf06ee 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Electronics/power_electronics.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Electronics/power_electronics.yml @@ -1,4 +1,4 @@ -# APC +# APC - type: entity id: APCElectronics parent: BaseElectronics diff --git a/Resources/Prototypes/Entities/Objects/Devices/cartridges.yml b/Resources/Prototypes/Entities/Objects/Devices/cartridges.yml index aa9bcfa2d3..a51ededb0d 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/cartridges.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/cartridges.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: BaseItem id: BasePDACartridge abstract: true diff --git a/Resources/Prototypes/Entities/Objects/Devices/hand_teleporter.yml b/Resources/Prototypes/Entities/Objects/Devices/hand_teleporter.yml index facae1c93f..606ed84016 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/hand_teleporter.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/hand_teleporter.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: HandTeleporter parent: [BaseItem, BaseGrandTheftContraband] name: hand teleporter diff --git a/Resources/Prototypes/Entities/Objects/Devices/teleporters_chips.yml b/Resources/Prototypes/Entities/Objects/Devices/teleporters_chips.yml index 3bcd5708c6..af1bec619d 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/teleporters_chips.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/teleporters_chips.yml @@ -18,4 +18,4 @@ tags: - FitInTeleporterConsole - type: UseDelay #Prevent link spamming - delay: 1.5 \ No newline at end of file + delay: 1.5 diff --git a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_brass.yml b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_brass.yml index f38b78711d..0de77de232 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_brass.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_brass.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: BaseHandheldInstrument id: BaseBrassInstrument abstract: true diff --git a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_misc.yml b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_misc.yml index 9d63aa0c69..0469a01348 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_misc.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_misc.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: BaseHandheldInstrument id: MusicalLungInstrument name: musical lung diff --git a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_percussion.yml b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_percussion.yml index 654a491d88..f3a400eb3a 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_percussion.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_percussion.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: BaseHandheldInstrument id: BasePercussionInstrument abstract: true diff --git a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_structures.yml b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_structures.yml index cab8de8372..c9bf203f7f 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_structures.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_structures.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity name: piano parent: BasePlaceableInstrumentRotatable id: PianoInstrument diff --git a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_wind.yml b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_wind.yml index 3e3518efed..f95ab343ea 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_wind.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_wind.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: BaseHandheldInstrument id: BaseWoodwindInstrument abstract: true diff --git a/Resources/Prototypes/Entities/Objects/Fun/Plushies/plushielizard_jobs.yml b/Resources/Prototypes/Entities/Objects/Fun/Plushies/plushielizard_jobs.yml index 7a67fbcb50..265d3a428e 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/Plushies/plushielizard_jobs.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Plushies/plushielizard_jobs.yml @@ -1,4 +1,4 @@ -# This base is created so we don't have to define the different sprite path for each plushie job. +# This base is created so we don't have to define the different sprite path for each plushie job. - type: entity parent: PlushieLizard id: BasePlushieLizardJob diff --git a/Resources/Prototypes/Entities/Objects/Fun/Tabletop/chess.yml b/Resources/Prototypes/Entities/Objects/Fun/Tabletop/chess.yml index 6a2793fedd..31c96d3279 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/Tabletop/chess.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Tabletop/chess.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: BaseBoardEntity id: ChessBoard name: chessboard diff --git a/Resources/Prototypes/Entities/Objects/Fun/Tabletop/dnd.yml b/Resources/Prototypes/Entities/Objects/Fun/Tabletop/dnd.yml index 6eb38c66b7..48b50eeaab 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/Tabletop/dnd.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Tabletop/dnd.yml @@ -1,4 +1,4 @@ -# When adding a new battlemap, also add it to id: AllBattlemapsTable +# When adding a new battlemap, also add it to id: AllBattlemapsTable # Board item (given to players) - type: entity diff --git a/Resources/Prototypes/Entities/Objects/Magic/books.yml b/Resources/Prototypes/Entities/Objects/Magic/books.yml index 6ab0412840..64d4cd1c54 100644 --- a/Resources/Prototypes/Entities/Objects/Magic/books.yml +++ b/Resources/Prototypes/Entities/Objects/Magic/books.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity abstract: true parent: [ BaseItem, BaseMagicalContraband ] id: BaseSpellbook diff --git a/Resources/Prototypes/Entities/Objects/Materials/base.yml b/Resources/Prototypes/Entities/Objects/Materials/base.yml index 7fd3e93ed8..1f8dc4ff65 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/base.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/base.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity abstract: true parent: [SolutionCryo, SolutionCompositeNormalStackable, BaseItem, BaseItemDestructible] id: MaterialBase diff --git a/Resources/Prototypes/Entities/Objects/Misc/buffering.yml b/Resources/Prototypes/Entities/Objects/Misc/buffering.yml index c97ffe89ed..c3744fa5ef 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/buffering.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/buffering.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: BufferingIcon categories: [ HideSpawnMenu ] components: diff --git a/Resources/Prototypes/Entities/Objects/Misc/land_mine.yml b/Resources/Prototypes/Entities/Objects/Misc/land_mine.yml index 99228f04c0..fe852dea10 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/land_mine.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/land_mine.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity abstract: true parent: StructureHealthMachineFlimsy id: BaseLandMine diff --git a/Resources/Prototypes/Entities/Objects/Misc/machine_parts.yml b/Resources/Prototypes/Entities/Objects/Misc/machine_parts.yml index 83bc2d1cec..3e3411a6fe 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/machine_parts.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/machine_parts.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: BaseStockPart name: stock part parent: BaseItem diff --git a/Resources/Prototypes/Entities/Objects/Specific/Robotics/endoskeleton.yml b/Resources/Prototypes/Entities/Objects/Specific/Robotics/endoskeleton.yml index 6afc06a796..eec1b0f906 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Robotics/endoskeleton.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Robotics/endoskeleton.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: CyborgEndoskeleton name: cyborg endoskeleton description: A frame that cyborgs are built on. Significantly less spooky than expected. diff --git a/Resources/Prototypes/Entities/Objects/Specific/Service/barber.yml b/Resources/Prototypes/Entities/Objects/Specific/Service/barber.yml index 2cdfacb312..7bde9a49d7 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Service/barber.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Service/barber.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: BarberScissors name: barber scissors description: Is able to reshape the hairstyle of any crew cut to your liking. diff --git a/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/node_scanner.yml b/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/node_scanner.yml index 21abf45cae..5cd44c80a3 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/node_scanner.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/node_scanner.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: BaseItem id: NodeScanner name: node scanner diff --git a/Resources/Prototypes/Entities/Objects/Specific/atmos.yml b/Resources/Prototypes/Entities/Objects/Specific/atmos.yml index 7a575b984e..aedb0184cc 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/atmos.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/atmos.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity name: gas analyzer parent: BaseItem id: GasAnalyzer diff --git a/Resources/Prototypes/Entities/Objects/Tools/appraisal.yml b/Resources/Prototypes/Entities/Objects/Tools/appraisal.yml index 27733e59c5..dad4386a17 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/appraisal.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/appraisal.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: BaseItem id: AppraisalTool name: appraisal tool diff --git a/Resources/Prototypes/Entities/Objects/Tools/flare.yml b/Resources/Prototypes/Entities/Objects/Tools/flare.yml index f0e27833c8..e685e75198 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/flare.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/flare.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity name: emergency flare parent: [SolutionComposite, SolutionTiny, BaseItem] id: Flare diff --git a/Resources/Prototypes/Entities/Objects/Tools/flashlights.yml b/Resources/Prototypes/Entities/Objects/Tools/flashlights.yml index 80eec8726e..932a7dd95b 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/flashlights.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/flashlights.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity name: flashlight parent: BaseItem id: FlashlightLantern diff --git a/Resources/Prototypes/Entities/Objects/Tools/lantern.yml b/Resources/Prototypes/Entities/Objects/Tools/lantern.yml index 93a0f927e1..55b4d8d46f 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/lantern.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/lantern.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity name: lantern parent: BaseItem id: Lantern diff --git a/Resources/Prototypes/Entities/Objects/Vehicles/keys.yml b/Resources/Prototypes/Entities/Objects/Vehicles/keys.yml index 7b7477c126..a2d51b1719 100644 --- a/Resources/Prototypes/Entities/Objects/Vehicles/keys.yml +++ b/Resources/Prototypes/Entities/Objects/Vehicles/keys.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: BaseItem id: VehicleKeyJanicart name: janicart keys diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/base_staff.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/base_staff.yml index 681bf4ff8c..818b5183cc 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/base_staff.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/base_staff.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: WeaponStaffBase abstract: true parent: [ BaseItem, BaseMagicalContraband ] diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/base_wand.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/base_wand.yml index 555a760c90..5d8cf49ea9 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/base_wand.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/base_wand.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: WeaponWandBase abstract: true parent: [ BaseItem, BaseMagicalContraband ] diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/wands.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/wands.yml index d27e648b95..2fe9bb8b37 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/wands.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/wands.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: WeaponWandBase id: WeaponWandPolymorphBase abstract: true diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/gohei.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/gohei.yml index ff39bc7a57..32481f5e45 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/gohei.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/gohei.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity name: gohei parent: BaseItem id: Gohei diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/projectile_grenades.yml b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/projectile_grenades.yml index ab37f18b1b..b53d29304a 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/projectile_grenades.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/projectile_grenades.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity abstract: true parent: BaseItem id: ProjectileGrenadeBase diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/scattering_grenades.yml b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/scattering_grenades.yml index 435186f2f9..2e157c245e 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/scattering_grenades.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/scattering_grenades.yml @@ -1,4 +1,4 @@ -# ScatteringGrenade is intended for grenades that spawn entities, especially those with timers +# ScatteringGrenade is intended for grenades that spawn entities, especially those with timers - type: entity abstract: true parent: GrenadeBase diff --git a/Resources/Prototypes/Entities/Objects/base_contraband.yml b/Resources/Prototypes/Entities/Objects/base_contraband.yml index cc1a1543ae..2fb20bf35a 100644 --- a/Resources/Prototypes/Entities/Objects/base_contraband.yml +++ b/Resources/Prototypes/Entities/Objects/base_contraband.yml @@ -1,4 +1,4 @@ -# generic "highly illegal" contraband; Syndicate/magical contraband are already considered highly illegal under Space Law, +# generic "highly illegal" contraband; Syndicate/magical contraband are already considered highly illegal under Space Law, # so this is mostly for stuff that should be equally illegal but doesn't need its own unique contraband tier added - type: entity id: BaseHighlyIllegalContraband diff --git a/Resources/Prototypes/Entities/Objects/base_solution.yml b/Resources/Prototypes/Entities/Objects/base_solution.yml index e492424779..bf7aca1956 100644 --- a/Resources/Prototypes/Entities/Objects/base_solution.yml +++ b/Resources/Prototypes/Entities/Objects/base_solution.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: Solution # Not abstract because it's a fallback for missing solution protos! categories: [ HideSpawnMenu ] name: solution diff --git a/Resources/Prototypes/Entities/Stations/test.yml b/Resources/Prototypes/Entities/Stations/test.yml index 9eec6979e7..6798fbb0ef 100644 --- a/Resources/Prototypes/Entities/Stations/test.yml +++ b/Resources/Prototypes/Entities/Stations/test.yml @@ -1,4 +1,4 @@ -# Station prototype for cut-down test maps that don't need all the infrastructure. +# Station prototype for cut-down test maps that don't need all the infrastructure. - type: entity id: TestStation parent: diff --git a/Resources/Prototypes/Entities/StatusEffects/body.yml b/Resources/Prototypes/Entities/StatusEffects/body.yml index de4c5c1e92..91f5459420 100644 --- a/Resources/Prototypes/Entities/StatusEffects/body.yml +++ b/Resources/Prototypes/Entities/StatusEffects/body.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: MobStatusEffectBase id: BloodstreamStatusEffectBase abstract: true diff --git a/Resources/Prototypes/Entities/StatusEffects/speech.yml b/Resources/Prototypes/Entities/StatusEffects/speech.yml index ab9fe0532d..8c3a1a0b78 100644 --- a/Resources/Prototypes/Entities/StatusEffects/speech.yml +++ b/Resources/Prototypes/Entities/StatusEffects/speech.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: MobStatusEffectDebuff id: SpeechStatusEffectBase abstract: true diff --git a/Resources/Prototypes/Entities/Structures/Decoration/curtains.yml b/Resources/Prototypes/Entities/Structures/Decoration/curtains.yml index e8bb0838ab..2c4f8ca3e4 100644 --- a/Resources/Prototypes/Entities/Structures/Decoration/curtains.yml +++ b/Resources/Prototypes/Entities/Structures/Decoration/curtains.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: BaseCurtains parent: BaseStructure name: curtains diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml index 8350b7d4be..ffca7f4b6f 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml @@ -1,4 +1,4 @@ -# Feature-reduced parent, compatible with the requirements of the High Security Door +# Feature-reduced parent, compatible with the requirements of the High Security Door # You probably want to inherit from Airlock rather than this - type: entity abstract: true diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/shuttle.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/shuttle.yml index cab9e987e0..5b369350de 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/shuttle.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/shuttle.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: AirlockRCDResistant id: AirlockShuttle suffix: Docking diff --git a/Resources/Prototypes/Entities/Structures/Doors/Firelocks/frame.yml b/Resources/Prototypes/Entities/Structures/Doors/Firelocks/frame.yml index d96e8b483f..c0bfc29cf5 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Firelocks/frame.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Firelocks/frame.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: [ BaseStructureDynamic, StructureHealthDoorWeak ] id: FirelockFrame name: firelock frame diff --git a/Resources/Prototypes/Entities/Structures/Doors/MaterialDoors/material_doors.yml b/Resources/Prototypes/Entities/Structures/Doors/MaterialDoors/material_doors.yml index 9bdf8a8168..3e31a20b4d 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/MaterialDoors/material_doors.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/MaterialDoors/material_doors.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity abstract: true parent: BaseStructure id: BaseMaterialDoor diff --git a/Resources/Prototypes/Entities/Structures/Doors/Shutter/blast_door.yml b/Resources/Prototypes/Entities/Structures/Doors/Shutter/blast_door.yml index e158fd77e0..0a258bad58 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Shutter/blast_door.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Shutter/blast_door.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: [ BaseShutter, StructureHealthDoorStrong ] id: BlastDoor name: blast door diff --git a/Resources/Prototypes/Entities/Structures/Machines/Medical/cryo_pod.yml b/Resources/Prototypes/Entities/Structures/Machines/Medical/cryo_pod.yml index 7ae3b5bff3..560dd290f5 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/Medical/cryo_pod.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/Medical/cryo_pod.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: [BaseStructure, ConstructibleMachine, BaseConstructibleMachineDestructible] # Not a BaseMachinePowered since we don't want the anchorable component id: CryoPod name: cryo pod diff --git a/Resources/Prototypes/Entities/Structures/Machines/cloning_machine.yml b/Resources/Prototypes/Entities/Structures/Machines/cloning_machine.yml index 9264c86df6..fd441b2ccd 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/cloning_machine.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/cloning_machine.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: CloningPod parent: [ BaseMachinePowered, BaseConstructibleMachineDestructible ] name: cloning pod diff --git a/Resources/Prototypes/Entities/Structures/Machines/fatextractor.yml b/Resources/Prototypes/Entities/Structures/Machines/fatextractor.yml index b4650a2034..1cb7409381 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/fatextractor.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/fatextractor.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: FatExtractor parent: [ BaseMachinePowered, ConstructibleMachine, BaseConstructibleMachineDestructible ] name: lipid extractor diff --git a/Resources/Prototypes/Entities/Structures/Machines/flatpacker.yml b/Resources/Prototypes/Entities/Structures/Machines/flatpacker.yml index cc29264fc0..72ceb3b754 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/flatpacker.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/flatpacker.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: MachineFlatpacker parent: [ BaseMachinePowered, ConstructibleMachine, BaseConstructibleMachineDestructible ] name: Flatpacker 1001 diff --git a/Resources/Prototypes/Entities/Structures/Machines/frame.yml b/Resources/Prototypes/Entities/Structures/Machines/frame.yml index 459dacc097..53619ae14a 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/frame.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/frame.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: StructureHealthMachineWeak id: UnfinishedMachineFrame name: machine frame diff --git a/Resources/Prototypes/Entities/Structures/Machines/gravity_generator.yml b/Resources/Prototypes/Entities/Structures/Machines/gravity_generator.yml index ea32eae897..1d89edb1ee 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/gravity_generator.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/gravity_generator.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity abstract: true parent: BaseMachinePowered id: BaseGravityGenerator diff --git a/Resources/Prototypes/Entities/Structures/Machines/medical_scanner.yml b/Resources/Prototypes/Entities/Structures/Machines/medical_scanner.yml index fb3eab6cb6..d0cdbfc1b1 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/medical_scanner.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/medical_scanner.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: MedicalScanner parent: [ BaseMachinePowered, BaseConstructibleMachineDestructible ] name: medical scanner diff --git a/Resources/Prototypes/Entities/Structures/Machines/seed_extractor.yml b/Resources/Prototypes/Entities/Structures/Machines/seed_extractor.yml index 6572e86da6..0e7f64f35e 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/seed_extractor.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/seed_extractor.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: SeedExtractor name: seed extractor parent: [ BaseMachinePowered, ConstructibleMachine, BaseConstructibleMachineDestructible ] diff --git a/Resources/Prototypes/Entities/Structures/Machines/smartfridge.yml b/Resources/Prototypes/Entities/Structures/Machines/smartfridge.yml index 02e58f1f45..a75a7a20b5 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/smartfridge.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/smartfridge.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: [BaseStructureDynamic, ConstructibleMachine, BaseMachinePowered, BaseConstructibleMachineDestructible] id: SmartFridge name: SmartFridge diff --git a/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml b/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml index 1503658d2a..4d824d313f 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml @@ -1,4 +1,4 @@ -# base +# base - type: entity abstract: true diff --git a/Resources/Prototypes/Entities/Structures/Piping/Disposal/high_pressure_machine_frame.yml b/Resources/Prototypes/Entities/Structures/Piping/Disposal/high_pressure_machine_frame.yml index 9f455d712d..082b72c37c 100644 --- a/Resources/Prototypes/Entities/Structures/Piping/Disposal/high_pressure_machine_frame.yml +++ b/Resources/Prototypes/Entities/Structures/Piping/Disposal/high_pressure_machine_frame.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: StructureHealthMachineWeak id: DisposalMachineFrame name: high pressure machine frame diff --git a/Resources/Prototypes/Entities/Structures/Power/cables.yml b/Resources/Prototypes/Entities/Structures/Power/cables.yml index 4a92d72c6f..2f0bdff92a 100644 --- a/Resources/Prototypes/Entities/Structures/Power/cables.yml +++ b/Resources/Prototypes/Entities/Structures/Power/cables.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity abstract: true id: CablePhysBase placement: diff --git a/Resources/Prototypes/Entities/Structures/Power/debug_power.yml b/Resources/Prototypes/Entities/Structures/Power/debug_power.yml index ee137acd47..ac005ca239 100644 --- a/Resources/Prototypes/Entities/Structures/Power/debug_power.yml +++ b/Resources/Prototypes/Entities/Structures/Power/debug_power.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: DebugGenerator parent: BaseGenerator suffix: DEBUG diff --git a/Resources/Prototypes/Entities/Structures/Shuttles/station_anchor.yml b/Resources/Prototypes/Entities/Structures/Shuttles/station_anchor.yml index 54e4714d8b..eb6da76d0e 100644 --- a/Resources/Prototypes/Entities/Structures/Shuttles/station_anchor.yml +++ b/Resources/Prototypes/Entities/Structures/Shuttles/station_anchor.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: StationAnchorBase abstract: true name: station anchor diff --git a/Resources/Prototypes/Entities/Structures/Specific/Anomaly/anomaly_injections.yml b/Resources/Prototypes/Entities/Structures/Specific/Anomaly/anomaly_injections.yml index 2b10aa1f76..f61ad6b04d 100644 --- a/Resources/Prototypes/Entities/Structures/Specific/Anomaly/anomaly_injections.yml +++ b/Resources/Prototypes/Entities/Structures/Specific/Anomaly/anomaly_injections.yml @@ -379,4 +379,4 @@ maxAmount: 10 maxRange: 6 spawns: - - PresentRandomInsane \ No newline at end of file + - PresentRandomInsane diff --git a/Resources/Prototypes/Entities/Structures/Specific/Atmospherics/freezer.yml b/Resources/Prototypes/Entities/Structures/Specific/Atmospherics/freezer.yml index a551ce1a73..464f5306f4 100644 --- a/Resources/Prototypes/Entities/Structures/Specific/Atmospherics/freezer.yml +++ b/Resources/Prototypes/Entities/Structures/Specific/Atmospherics/freezer.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity abstract: true parent: AirSensorBase id: AirSensorFreezerBase diff --git a/Resources/Prototypes/Entities/Structures/Storage/Closets/big_boxes.yml b/Resources/Prototypes/Entities/Structures/Storage/Closets/big_boxes.yml index 5c3287faf7..11a0651dff 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Closets/big_boxes.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Closets/big_boxes.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity abstract: true parent: StructureHealthContainerFlimsy id: BaseBigBox diff --git a/Resources/Prototypes/Entities/Structures/Storage/glass_box.yml b/Resources/Prototypes/Entities/Structures/Storage/glass_box.yml index e9aa459f96..af897c5d0e 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/glass_box.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/glass_box.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: BaseStructureDynamic id: BaseGlassBox abstract: true diff --git a/Resources/Prototypes/Entities/Structures/Storage/ore_box.yml b/Resources/Prototypes/Entities/Structures/Storage/ore_box.yml index fdae2e3a68..17be5a0e20 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/ore_box.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/ore_box.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: [ BaseStructureDynamic, StructureHealthContainer ] id: OreBox name: ore box diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/Misc/boards.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/Misc/boards.yml index a21c628125..f4da60552a 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/Misc/boards.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/Misc/boards.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity abstract: true parent: [ BaseWallmount, StructureHealthFurniture ] id: BaseWallmountBoard diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/Misc/mirror.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/Misc/mirror.yml index 432f9e5f7d..8de1ea5cd3 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/Misc/mirror.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/Misc/mirror.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: [ BaseWallmountGlass, StructureHealthFurnitureWeak ] id: Mirror name: mirror diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/atmos_plaque.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/atmos_plaque.yml index 08e0d4fb75..7897aeb9ff 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/atmos_plaque.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/atmos_plaque.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: MarkerBase id: PlaqueAtmos name: atmos plaque spawner diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/bar_sign.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/bar_sign.yml index bbbb83698c..6d2a090206 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/bar_sign.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/bar_sign.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: BaseBarSign parent: [ BaseWallmountGlass, BaseWallmountMachine, StructureHealthMachineWeak ] name: bar sign diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/Storage/Cabinets/shotgun_cabinet.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/Storage/Cabinets/shotgun_cabinet.yml index 3f226c301a..2c234d5d11 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/Storage/Cabinets/shotgun_cabinet.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/Storage/Cabinets/shotgun_cabinet.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: FireAxeCabinet id: ShotGunCabinet name: shotgun cabinet diff --git a/Resources/Prototypes/Entities/Structures/Walls/fence_metal.yml b/Resources/Prototypes/Entities/Structures/Walls/fence_metal.yml index 0b59a827fd..72a05fd0df 100644 --- a/Resources/Prototypes/Entities/Structures/Walls/fence_metal.yml +++ b/Resources/Prototypes/Entities/Structures/Walls/fence_metal.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: [ BaseStructure, StructureHealthBarrier ] id: BaseFenceMetal name: chain link fence diff --git a/Resources/Prototypes/Entities/Structures/meat_spike.yml b/Resources/Prototypes/Entities/Structures/meat_spike.yml index 42be6adb56..fe4aa98d47 100644 --- a/Resources/Prototypes/Entities/Structures/meat_spike.yml +++ b/Resources/Prototypes/Entities/Structures/meat_spike.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: [ BaseStructure, StructureHealthFurniture ] id: KitchenSpike name: meat spike diff --git a/Resources/Prototypes/Entities/Tiles/chasm.yml b/Resources/Prototypes/Entities/Tiles/chasm.yml index a19f5c310c..8605e88a48 100644 --- a/Resources/Prototypes/Entities/Tiles/chasm.yml +++ b/Resources/Prototypes/Entities/Tiles/chasm.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: FloorChasmEntity name: chasm description: You can't even see the bottom. diff --git a/Resources/Prototypes/Entities/Virtual/beam.yml b/Resources/Prototypes/Entities/Virtual/beam.yml index fa249f0dd3..46d4a45368 100644 --- a/Resources/Prototypes/Entities/Virtual/beam.yml +++ b/Resources/Prototypes/Entities/Virtual/beam.yml @@ -1,4 +1,4 @@ -# Special entity used to keep track of beams from the BeamComponent and what targets they collided with +# Special entity used to keep track of beams from the BeamComponent and what targets they collided with - type: entity id: VirtualBeamEntityController name: BEAM ENTITY YOU SHOULD NOT SEE THIS diff --git a/Resources/Prototypes/Entities/Virtual/electrocution.yml b/Resources/Prototypes/Entities/Virtual/electrocution.yml index c45e0b3ca9..86d58651a5 100644 --- a/Resources/Prototypes/Entities/Virtual/electrocution.yml +++ b/Resources/Prototypes/Entities/Virtual/electrocution.yml @@ -1,4 +1,4 @@ -# Special entity used to attach to power networks as load when somebody gets electrocuted. +# Special entity used to attach to power networks as load when somebody gets electrocuted. - type: entity id: VirtualElectrocutionLoadBase abstract: true diff --git a/Resources/Prototypes/Entities/Virtual/stripping_hidden.yml b/Resources/Prototypes/Entities/Virtual/stripping_hidden.yml index 81e8e9866c..4d916314fb 100644 --- a/Resources/Prototypes/Entities/Virtual/stripping_hidden.yml +++ b/Resources/Prototypes/Entities/Virtual/stripping_hidden.yml @@ -1,4 +1,4 @@ -# Special entity that indicates that there is something in a player's pockets, without showing the actual entity. +# Special entity that indicates that there is something in a player's pockets, without showing the actual entity. # This **could** just be done via UI elements, but the existing UI uses sprite-views & the examine-system. So this is easier than special casing this. - type: entity diff --git a/Resources/Prototypes/Entities/Virtual/virtual_item.yml b/Resources/Prototypes/Entities/Virtual/virtual_item.yml index 21391dbb34..d464865c3b 100644 --- a/Resources/Prototypes/Entities/Virtual/virtual_item.yml +++ b/Resources/Prototypes/Entities/Virtual/virtual_item.yml @@ -1,4 +1,4 @@ -# This item is stored in the hand slot while it is blocked, to represent what is blocking that hand. +# This item is stored in the hand slot while it is blocked, to represent what is blocking that hand. - type: entity id: VirtualItem name: VIRTUAL ITEM YOU SHOULD NOT SEE THIS diff --git a/Resources/Prototypes/FeedbackPopup/feedbackpopups.yml b/Resources/Prototypes/FeedbackPopup/feedbackpopups.yml index 660193e2f3..3f5a83ee91 100644 --- a/Resources/Prototypes/FeedbackPopup/feedbackpopups.yml +++ b/Resources/Prototypes/FeedbackPopup/feedbackpopups.yml @@ -1,4 +1,4 @@ -- type: feedbackPopup +- type: feedbackPopup id: GeneralFeedback popupOrigin: wizden_master title: "[bold]General feedback for Space Station 14[/bold]" diff --git a/Resources/Prototypes/GameRules/dynamic_rules.yml b/Resources/Prototypes/GameRules/dynamic_rules.yml index f27a36fa2c..5ca465ecc9 100644 --- a/Resources/Prototypes/GameRules/dynamic_rules.yml +++ b/Resources/Prototypes/GameRules/dynamic_rules.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity parent: BaseGameRule id: DynamicRule components: diff --git a/Resources/Prototypes/GameRules/random_sentience.yml b/Resources/Prototypes/GameRules/random_sentience.yml index a2c749000a..99f63c04b4 100644 --- a/Resources/Prototypes/GameRules/random_sentience.yml +++ b/Resources/Prototypes/GameRules/random_sentience.yml @@ -22,4 +22,4 @@ id: RandomSentienceEventStrength values: prefix: random-sentience-event-strength- - count: 8 \ No newline at end of file + count: 8 diff --git a/Resources/Prototypes/GameRules/survivor.yml b/Resources/Prototypes/GameRules/survivor.yml index e8f73a2e27..95455d4f52 100644 --- a/Resources/Prototypes/GameRules/survivor.yml +++ b/Resources/Prototypes/GameRules/survivor.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: Survivor parent: BaseGameRule components: diff --git a/Resources/Prototypes/GameRules/variation.yml b/Resources/Prototypes/GameRules/variation.yml index 13b9b18d68..adad04de30 100644 --- a/Resources/Prototypes/GameRules/variation.yml +++ b/Resources/Prototypes/GameRules/variation.yml @@ -1,4 +1,4 @@ -# Base +# Base - type: entity abstract: true diff --git a/Resources/Prototypes/GhostRoleRaffles/deciders.yml b/Resources/Prototypes/GhostRoleRaffles/deciders.yml index b23464cf70..4b5d83e6b2 100644 --- a/Resources/Prototypes/GhostRoleRaffles/deciders.yml +++ b/Resources/Prototypes/GhostRoleRaffles/deciders.yml @@ -1,3 +1,3 @@ -- type: ghostRoleRaffleDecider +- type: ghostRoleRaffleDecider id: default decider: !type:RngGhostRoleRaffleDecider {} diff --git a/Resources/Prototypes/Guidebook/engineering.yml b/Resources/Prototypes/Guidebook/engineering.yml index f26d587d0d..86b8d68be0 100644 --- a/Resources/Prototypes/Guidebook/engineering.yml +++ b/Resources/Prototypes/Guidebook/engineering.yml @@ -1,4 +1,4 @@ -- type: guideEntry +- type: guideEntry id: Engineering name: guide-entry-engineering text: "/ServerInfo/Guidebook/Engineering/Engineering.xml" diff --git a/Resources/Prototypes/Guidebook/rules.yml b/Resources/Prototypes/Guidebook/rules.yml index 6bbfbf9174..cf243944b3 100644 --- a/Resources/Prototypes/Guidebook/rules.yml +++ b/Resources/Prototypes/Guidebook/rules.yml @@ -1,4 +1,4 @@ -# Only one of those rulesets will appear on the server at any given time. +# Only one of those rulesets will appear on the server at any given time. # They all have a priority of 10 so they appear 2nd by default (after priority 0 and before priority 20) - type: guideEntry # Default for forks and stuff. Should not be listed anywhere if the server is using a custom ruleset. diff --git a/Resources/Prototypes/Guidebook/security.yml b/Resources/Prototypes/Guidebook/security.yml index f9fcd66931..56a4b8efe5 100644 --- a/Resources/Prototypes/Guidebook/security.yml +++ b/Resources/Prototypes/Guidebook/security.yml @@ -1,4 +1,4 @@ -- type: guideEntry +- type: guideEntry id: Security name: guide-entry-security text: "/ServerInfo/Guidebook/Security/Security.xml" diff --git a/Resources/Prototypes/InventoryTemplates/corpse_inventory_template.yml b/Resources/Prototypes/InventoryTemplates/corpse_inventory_template.yml index 878ccb3d6b..57abc61b68 100644 --- a/Resources/Prototypes/InventoryTemplates/corpse_inventory_template.yml +++ b/Resources/Prototypes/InventoryTemplates/corpse_inventory_template.yml @@ -1,4 +1,4 @@ -- type: inventoryTemplate +- type: inventoryTemplate id: corpse slots: - name: shoes diff --git a/Resources/Prototypes/InventoryTemplates/scurret_inventory_template.yml b/Resources/Prototypes/InventoryTemplates/scurret_inventory_template.yml index 89f0af0302..5872b74237 100644 --- a/Resources/Prototypes/InventoryTemplates/scurret_inventory_template.yml +++ b/Resources/Prototypes/InventoryTemplates/scurret_inventory_template.yml @@ -1,4 +1,4 @@ -- type: inventoryTemplate +- type: inventoryTemplate id: scurret slots: - name: ears diff --git a/Resources/Prototypes/IonLaws/IonLaw.yml b/Resources/Prototypes/IonLaws/IonLaw.yml index ffc05c042a..0cd04c9c48 100644 --- a/Resources/Prototypes/IonLaws/IonLaw.yml +++ b/Resources/Prototypes/IonLaws/IonLaw.yml @@ -1,4 +1,4 @@ -- type: ionLaw +- type: ionLaw id: OnStation lawString: ion-storm-law-on-station selectorWeightAdjust: diff --git a/Resources/Prototypes/Loadouts/Miscellaneous/jobtrinkets.yml b/Resources/Prototypes/Loadouts/Miscellaneous/jobtrinkets.yml index 27d266c5bb..b3e9b1ebc9 100644 --- a/Resources/Prototypes/Loadouts/Miscellaneous/jobtrinkets.yml +++ b/Resources/Prototypes/Loadouts/Miscellaneous/jobtrinkets.yml @@ -1,4 +1,4 @@ -# Job-specific trinkets +# Job-specific trinkets - type: loadout id: JanitorGoldenPlunger diff --git a/Resources/Prototypes/Loadouts/dummy_entities.yml b/Resources/Prototypes/Loadouts/dummy_entities.yml index 69b54bd0b5..f58ab97231 100644 --- a/Resources/Prototypes/Loadouts/dummy_entities.yml +++ b/Resources/Prototypes/Loadouts/dummy_entities.yml @@ -6,4 +6,4 @@ components: - type: Sprite sprite: Objects/Misc/candles.rsi - state: loadout \ No newline at end of file + state: loadout diff --git a/Resources/Prototypes/Magic/Fixtures/runes.yml b/Resources/Prototypes/Magic/Fixtures/runes.yml index 88d76e4d7c..f5ff063d6f 100644 --- a/Resources/Prototypes/Magic/Fixtures/runes.yml +++ b/Resources/Prototypes/Magic/Fixtures/runes.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: BaseRune name: "rune" abstract: true diff --git a/Resources/Prototypes/Magic/teleport_scroll.yml b/Resources/Prototypes/Magic/teleport_scroll.yml index fbef3f74ed..0e54567e75 100644 --- a/Resources/Prototypes/Magic/teleport_scroll.yml +++ b/Resources/Prototypes/Magic/teleport_scroll.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: WizardTeleportScroll name: teleport scroll suffix: Wizard diff --git a/Resources/Prototypes/Maps/arenas.yml b/Resources/Prototypes/Maps/arenas.yml index 18b1f05794..3d2b123c16 100644 --- a/Resources/Prototypes/Maps/arenas.yml +++ b/Resources/Prototypes/Maps/arenas.yml @@ -25,4 +25,4 @@ mapNameTemplate: "DM01 Entryway" - type: StationJobs availableJobs: - Passenger: [ -1, -1 ] \ No newline at end of file + Passenger: [ -1, -1 ] diff --git a/Resources/Prototypes/NPCs/hugbot.yml b/Resources/Prototypes/NPCs/hugbot.yml index 409b2b03e4..9bc31f5ab1 100644 --- a/Resources/Prototypes/NPCs/hugbot.yml +++ b/Resources/Prototypes/NPCs/hugbot.yml @@ -1,4 +1,4 @@ -- type: htnCompound +- type: htnCompound id: HugBotCompound branches: - tasks: diff --git a/Resources/Prototypes/Nutrition/edible.yml b/Resources/Prototypes/Nutrition/edible.yml index 3dd11521ef..9ed11932fd 100644 --- a/Resources/Prototypes/Nutrition/edible.yml +++ b/Resources/Prototypes/Nutrition/edible.yml @@ -1,4 +1,4 @@ -# If you add a new prototype, you may want to consider adding it to IngestionSystem.API for other systems to use. +# If you add a new prototype, you may want to consider adding it to IngestionSystem.API for other systems to use. # But only if other systems/components might want it. # Food diff --git a/Resources/Prototypes/Objectives/paradoxClone.yml b/Resources/Prototypes/Objectives/paradoxClone.yml index 495991c921..7e10cf690f 100644 --- a/Resources/Prototypes/Objectives/paradoxClone.yml +++ b/Resources/Prototypes/Objectives/paradoxClone.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity abstract: true parent: BaseObjective id: BaseParadoxCloneObjective diff --git a/Resources/Prototypes/Objectives/wizard.yml b/Resources/Prototypes/Objectives/wizard.yml index 92c8b46f66..7a2f1f1719 100644 --- a/Resources/Prototypes/Objectives/wizard.yml +++ b/Resources/Prototypes/Objectives/wizard.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity abstract: true parent: BaseObjective id: BaseWizardObjective diff --git a/Resources/Prototypes/Palettes/advanced.yml b/Resources/Prototypes/Palettes/advanced.yml index a3b6d585dc..7f5b6b312d 100644 --- a/Resources/Prototypes/Palettes/advanced.yml +++ b/Resources/Prototypes/Palettes/advanced.yml @@ -1,4 +1,4 @@ -- type: palette +- type: palette id: Advanced name: Advanced colors: @@ -50,4 +50,4 @@ neutrallight: "#E6E6E6" neutralmedium: "#B3B3B3" neutraldark: "#999999" - neutralblack: "#808080" \ No newline at end of file + neutralblack: "#808080" diff --git a/Resources/Prototypes/Palettes/departmental.yml b/Resources/Prototypes/Palettes/departmental.yml index dfe19fcaab..228f22ff64 100644 --- a/Resources/Prototypes/Palettes/departmental.yml +++ b/Resources/Prototypes/Palettes/departmental.yml @@ -1,4 +1,4 @@ -- type: palette +- type: palette id: Departmental name: Departmental colors: diff --git a/Resources/Prototypes/Palettes/emagged.yml b/Resources/Prototypes/Palettes/emagged.yml index 37b4e4e0b9..dcee0ad969 100644 --- a/Resources/Prototypes/Palettes/emagged.yml +++ b/Resources/Prototypes/Palettes/emagged.yml @@ -1,4 +1,4 @@ -- type: palette +- type: palette id: Emagged name: Emagged colors: diff --git a/Resources/Prototypes/Palettes/sixteen.yml b/Resources/Prototypes/Palettes/sixteen.yml index cd6efe7757..6825d7e770 100644 --- a/Resources/Prototypes/Palettes/sixteen.yml +++ b/Resources/Prototypes/Palettes/sixteen.yml @@ -1,4 +1,4 @@ -- type: palette +- type: palette id: Rainbow name: Rainbow colors: diff --git a/Resources/Prototypes/Palettes/text.yml b/Resources/Prototypes/Palettes/text.yml index 48d2074153..930c8cc272 100644 --- a/Resources/Prototypes/Palettes/text.yml +++ b/Resources/Prototypes/Palettes/text.yml @@ -1,4 +1,4 @@ -- type: palette +- type: palette id: Material name: Material colors: diff --git a/Resources/Prototypes/Polymorphs/admin.yml b/Resources/Prototypes/Polymorphs/admin.yml index 606147ce9c..1be11c7732 100644 --- a/Resources/Prototypes/Polymorphs/admin.yml +++ b/Resources/Prototypes/Polymorphs/admin.yml @@ -1,4 +1,4 @@ -- type: polymorph +- type: polymorph id: AdminLizardSmite configuration: entity: MobReptilian diff --git a/Resources/Prototypes/Procedural/Themes/mineshaft.yml b/Resources/Prototypes/Procedural/Themes/mineshaft.yml index 1e2c18d08b..e9fbc99683 100644 --- a/Resources/Prototypes/Procedural/Themes/mineshaft.yml +++ b/Resources/Prototypes/Procedural/Themes/mineshaft.yml @@ -269,4 +269,4 @@ atlas: /Maps/Dungeon/mineshaft.yml offset: 28,32 tags: - - Mineshaft \ No newline at end of file + - Mineshaft diff --git a/Resources/Prototypes/Reagents/pyrotechnic.yml b/Resources/Prototypes/Reagents/pyrotechnic.yml index 2964c4bc88..5b208acc30 100644 --- a/Resources/Prototypes/Reagents/pyrotechnic.yml +++ b/Resources/Prototypes/Reagents/pyrotechnic.yml @@ -1,4 +1,4 @@ -- type: reagent +- type: reagent id: BasePyrotechnic group: Pyrotechnic abstract: true diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/atmospherics/atmos_pipes_special.yml b/Resources/Prototypes/Recipes/Construction/Graphs/atmospherics/atmos_pipes_special.yml index 65ecd99e25..90714b5444 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/atmospherics/atmos_pipes_special.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/atmospherics/atmos_pipes_special.yml @@ -40,4 +40,4 @@ - !type:DeleteEntity steps: - tool: Welding - doAfter: 1 \ No newline at end of file + doAfter: 1 diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/atmospherics/gas_pipe_sensor.yml b/Resources/Prototypes/Recipes/Construction/Graphs/atmospherics/gas_pipe_sensor.yml index 81887689fe..2b75fff471 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/atmospherics/gas_pipe_sensor.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/atmospherics/gas_pipe_sensor.yml @@ -28,4 +28,4 @@ anchored: false steps: - tool: Welding - doAfter: 1 \ No newline at end of file + doAfter: 1 diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/atmospherics/thermomachine-board.yml b/Resources/Prototypes/Recipes/Construction/Graphs/atmospherics/thermomachine-board.yml index e9c7a3c9a3..1048d84d07 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/atmospherics/thermomachine-board.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/atmospherics/thermomachine-board.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: ThermomachineBoard start: freezer graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/clothing/medsec_hud.yml b/Resources/Prototypes/Recipes/Construction/Graphs/clothing/medsec_hud.yml index ef4fbc49b1..3890bb1637 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/clothing/medsec_hud.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/clothing/medsec_hud.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: HudMedSec start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/fun/bananium_horn.yml b/Resources/Prototypes/Recipes/Construction/Graphs/fun/bananium_horn.yml index 74c280e184..be32efcc20 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/fun/bananium_horn.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/fun/bananium_horn.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: BananiumHorn start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/fun/jack_o_lantern.yml b/Resources/Prototypes/Recipes/Construction/Graphs/fun/jack_o_lantern.yml index 8b086b28b1..d30aeb1b91 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/fun/jack_o_lantern.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/fun/jack_o_lantern.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: PumpkinAddLight start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/furniture/altars.yml b/Resources/Prototypes/Recipes/Construction/Graphs/furniture/altars.yml index 0612642bf3..f6bac657c0 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/furniture/altars.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/furniture/altars.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: BananiumAltarGraph start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/furniture/tables.yml b/Resources/Prototypes/Recipes/Construction/Graphs/furniture/tables.yml index 232339213f..249ecf41d5 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/furniture/tables.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/furniture/tables.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: Table start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/machines/computer.yml b/Resources/Prototypes/Recipes/Construction/Graphs/machines/computer.yml index 46493299a5..7b00241e76 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/machines/computer.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/machines/computer.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: Computer start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/machines/machine.yml b/Resources/Prototypes/Recipes/Construction/Graphs/machines/machine.yml index 71442b9b76..1d1d7c11e4 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/machines/machine.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/machines/machine.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: Machine start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/materials/metal_rod.yml b/Resources/Prototypes/Recipes/Construction/Graphs/materials/metal_rod.yml index 0c36c0da23..dc1e9c27e1 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/materials/metal_rod.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/materials/metal_rod.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: MetalRod start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/mechs/hamtr_construction.yml b/Resources/Prototypes/Recipes/Construction/Graphs/mechs/hamtr_construction.yml index a71846755f..b570b7e8cc 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/mechs/hamtr_construction.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/mechs/hamtr_construction.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: Hamtr start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/mechs/honker_construction.yml b/Resources/Prototypes/Recipes/Construction/Graphs/mechs/honker_construction.yml index a821cf18a2..9fe42b2ec5 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/mechs/honker_construction.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/mechs/honker_construction.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: Honker start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/mechs/ripley_construction.yml b/Resources/Prototypes/Recipes/Construction/Graphs/mechs/ripley_construction.yml index f9e5451849..dd0fec008f 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/mechs/ripley_construction.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/mechs/ripley_construction.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: Ripley start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/barricades.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/barricades.yml index 3149290125..d688d864ac 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/structures/barricades.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/barricades.yml @@ -1,4 +1,4 @@ -#Due to limitations with placement conditions in the construction system, the other kinds of non-fulltile barricades are currently not constructible. +#Due to limitations with placement conditions in the construction system, the other kinds of non-fulltile barricades are currently not constructible. #This may make it sound like it needs some big refactor to be possible, but make no mistake, it is 100% due to my own technical incompetence. - type: constructionGraph id: Barricade diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/catwalk.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/catwalk.yml index 4993ac017e..9c9686d6b1 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/structures/catwalk.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/catwalk.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: Catwalk start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/conveyor.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/conveyor.yml index 3eb70bc17c..d5a65cd2ca 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/structures/conveyor.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/conveyor.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: ConveyorGraph start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/cordage.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/cordage.yml index aa26a1f581..5e121d04d0 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/structures/cordage.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/cordage.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: DetCable start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/decoration.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/decoration.yml index fae3e1da5b..570a3ba378 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/structures/decoration.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/decoration.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: OrnateStatueClown start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/fence_metal.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/fence_metal.yml index 444c327fdc..15ca761f62 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/structures/fence_metal.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/fence_metal.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: FenceMetal start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/fence_wood.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/fence_wood.yml index 081328f161..fd6f057497 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/structures/fence_wood.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/fence_wood.yml @@ -173,4 +173,4 @@ - !type:SpawnPrototype prototype: MaterialWoodPlank1 amount: 1 - - !type:DeleteEntity {} \ No newline at end of file + - !type:DeleteEntity {} diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/lighting.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/lighting.yml index fe9bca8b78..5924678003 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/structures/lighting.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/lighting.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: LightFixture start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/shuttle.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/shuttle.yml index 20eda8b6e4..0ed1f975ad 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/structures/shuttle.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/shuttle.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: AirlockShuttle start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/station_ai_core.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/station_ai_core.yml index a04c9b009f..cef2f5bc51 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/structures/station_ai_core.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/station_ai_core.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: StationAiCore start: start graph: @@ -141,4 +141,4 @@ doAfter: 4 - node: stationAiCore - entity: PlayerStationAiEmpty \ No newline at end of file + entity: PlayerStationAiEmpty diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/station_beacon.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/station_beacon.yml index d9c2c2c6aa..e784eab4b7 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/structures/station_beacon.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/station_beacon.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: StationBeaconPart start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/tools/logic_gate.yml b/Resources/Prototypes/Recipes/Construction/Graphs/tools/logic_gate.yml index 43c44eb9b1..60f9ac5444 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/tools/logic_gate.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/tools/logic_gate.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: LogicGate start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/tools/torch.yml b/Resources/Prototypes/Recipes/Construction/Graphs/tools/torch.yml index 9c52fa3ba5..7c06dd7498 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/tools/torch.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/tools/torch.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: LightTorch start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/cable_terminal.yml b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/cable_terminal.yml index 9bbffdbbba..3298c6b38f 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/cable_terminal.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/cable_terminal.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: CableTerminal start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/particle_accelerator.yml b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/particle_accelerator.yml index 7d6792f191..327c5a5d90 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/particle_accelerator.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/particle_accelerator.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: ParticleAcceleratorControlBox start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/solarpanel.yml b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/solarpanel.yml index 8398eb1b60..22da92e3a4 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/solarpanel.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/solarpanel.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: SolarPanel start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/wallmount_generator.yml b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/wallmount_generator.yml index 797922d40f..b57cc8bd46 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/wallmount_generator.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/wallmount_generator.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: WallmountGenerator start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/wallmount_substation.yml b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/wallmount_substation.yml index 731222e28b..53532428b2 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/wallmount_substation.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/wallmount_substation.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: WallmountSubstation start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/weapons/bladed_hats.yml b/Resources/Prototypes/Recipes/Construction/Graphs/weapons/bladed_hats.yml index b0817be44a..12f9f9e55a 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/weapons/bladed_hats.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/weapons/bladed_hats.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: BladedFlatcapGrey start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/weapons/card_shield.yml b/Resources/Prototypes/Recipes/Construction/Graphs/weapons/card_shield.yml index 3cc3219c15..151d555aec 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/weapons/card_shield.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/weapons/card_shield.yml @@ -14,4 +14,4 @@ doAfter: 2 - node: cardShield - entity: CardShield \ No newline at end of file + entity: CardShield diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/weapons/card_sword.yml b/Resources/Prototypes/Recipes/Construction/Graphs/weapons/card_sword.yml index d63aa855e4..330230816e 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/weapons/card_sword.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/weapons/card_sword.yml @@ -11,4 +11,4 @@ doAfter: 3 - node: cardSword - entity: CardSword \ No newline at end of file + entity: CardSword diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/weapons/improvised_arrow.yml b/Resources/Prototypes/Recipes/Construction/Graphs/weapons/improvised_arrow.yml index bac533a06f..a53c2a6630 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/weapons/improvised_arrow.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/weapons/improvised_arrow.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: ImprovisedArrow start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/weapons/improvised_bow.yml b/Resources/Prototypes/Recipes/Construction/Graphs/weapons/improvised_bow.yml index 33808fc0ac..30d6686d9a 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/weapons/improvised_bow.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/weapons/improvised_bow.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: ImprovisedBow start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/weapons/makeshift_shield.yml b/Resources/Prototypes/Recipes/Construction/Graphs/weapons/makeshift_shield.yml index a2c1af76b3..3124535030 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/weapons/makeshift_shield.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/weapons/makeshift_shield.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: MakeshiftShield start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/weapons/modular_mine.yml b/Resources/Prototypes/Recipes/Construction/Graphs/weapons/modular_mine.yml index 95b4b4bcc7..99d8c7169a 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/weapons/modular_mine.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/weapons/modular_mine.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: ModularMineGraph start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/weapons/shotgunsawn.yml b/Resources/Prototypes/Recipes/Construction/Graphs/weapons/shotgunsawn.yml index 0295a8b881..31ad7af506 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/weapons/shotgunsawn.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/weapons/shotgunsawn.yml @@ -9,4 +9,4 @@ - tool: Sawing doAfter: 2 - node: shotgunsawn - entity: WeaponShotgunSawnEmpty # Makes the sawn-off spawn empty. At max they're losing 2 shells. \ No newline at end of file + entity: WeaponShotgunSawnEmpty # Makes the sawn-off spawn empty. At max they're losing 2 shells. diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/weapons/upgraded_chimp.yml b/Resources/Prototypes/Recipes/Construction/Graphs/weapons/upgraded_chimp.yml index 8cbcb8c964..ef182ae58a 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/weapons/upgraded_chimp.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/weapons/upgraded_chimp.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: UpgradeWeaponPistolCHIMP start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/weapons/wooden_buckler.yml b/Resources/Prototypes/Recipes/Construction/Graphs/weapons/wooden_buckler.yml index 3d1a6074b2..9bcc845690 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/weapons/wooden_buckler.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/weapons/wooden_buckler.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: WoodenBuckler start: start graph: diff --git a/Resources/Prototypes/Recipes/Construction/atmospherics.yml b/Resources/Prototypes/Recipes/Construction/atmospherics.yml index 1718c9d82f..2d651da7b7 100644 --- a/Resources/Prototypes/Recipes/Construction/atmospherics.yml +++ b/Resources/Prototypes/Recipes/Construction/atmospherics.yml @@ -345,4 +345,4 @@ graph: !type:CreateVariants values: [ GasTrinary, GasTrinaryAlt1, GasTrinaryAlt2 ] targetNode: pneumaticvalve -# endregion Trinary \ No newline at end of file +# endregion Trinary diff --git a/Resources/Prototypes/Recipes/Construction/lighting.yml b/Resources/Prototypes/Recipes/Construction/lighting.yml index 447a6bbaac..b770b83c63 100644 --- a/Resources/Prototypes/Recipes/Construction/lighting.yml +++ b/Resources/Prototypes/Recipes/Construction/lighting.yml @@ -1,4 +1,4 @@ -# region Base +# region Base - type: construction abstract: true id: BaseLight diff --git a/Resources/Prototypes/Recipes/Construction/machines.yml b/Resources/Prototypes/Recipes/Construction/machines.yml index bb0c85a660..f14b0e62f9 100644 --- a/Resources/Prototypes/Recipes/Construction/machines.yml +++ b/Resources/Prototypes/Recipes/Construction/machines.yml @@ -1,4 +1,4 @@ -# region Base +# region Base - type: construction abstract: true id: BaseMachine diff --git a/Resources/Prototypes/Recipes/Construction/materials.yml b/Resources/Prototypes/Recipes/Construction/materials.yml index 5a4e029b7e..ab3c6e74c2 100644 --- a/Resources/Prototypes/Recipes/Construction/materials.yml +++ b/Resources/Prototypes/Recipes/Construction/materials.yml @@ -1,4 +1,4 @@ -# region Base +# region Base - type: construction abstract: true id: BaseMaterial diff --git a/Resources/Prototypes/Recipes/Cooking/sequence_metamorph.yml b/Resources/Prototypes/Recipes/Cooking/sequence_metamorph.yml index 95f1c97a22..99560eed27 100644 --- a/Resources/Prototypes/Recipes/Cooking/sequence_metamorph.yml +++ b/Resources/Prototypes/Recipes/Cooking/sequence_metamorph.yml @@ -122,4 +122,4 @@ max: 2 - !type:LastElementHasTags # last bun tags: - - Bun \ No newline at end of file + - Bun diff --git a/Resources/Prototypes/Recipes/Crafting/Graphs/artifact.yml b/Resources/Prototypes/Recipes/Crafting/Graphs/artifact.yml index d48731ad5a..42ce39c25e 100644 --- a/Resources/Prototypes/Recipes/Crafting/Graphs/artifact.yml +++ b/Resources/Prototypes/Recipes/Crafting/Graphs/artifact.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: Artifact start: start graph: diff --git a/Resources/Prototypes/Recipes/Crafting/Graphs/bots/hugbot.yml b/Resources/Prototypes/Recipes/Crafting/Graphs/bots/hugbot.yml index 56ee3803e0..4a83c75964 100644 --- a/Resources/Prototypes/Recipes/Crafting/Graphs/bots/hugbot.yml +++ b/Resources/Prototypes/Recipes/Crafting/Graphs/bots/hugbot.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: HugBot start: start graph: diff --git a/Resources/Prototypes/Recipes/Crafting/Graphs/goliath_hardsuit.yml b/Resources/Prototypes/Recipes/Crafting/Graphs/goliath_hardsuit.yml index b763f920d7..447bc3b999 100644 --- a/Resources/Prototypes/Recipes/Crafting/Graphs/goliath_hardsuit.yml +++ b/Resources/Prototypes/Recipes/Crafting/Graphs/goliath_hardsuit.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: HardsuitGoliath start: start graph: diff --git a/Resources/Prototypes/Recipes/Crafting/Graphs/improvised/gauze.yml b/Resources/Prototypes/Recipes/Crafting/Graphs/improvised/gauze.yml index bb36f36d69..f8b34ada7b 100644 --- a/Resources/Prototypes/Recipes/Crafting/Graphs/improvised/gauze.yml +++ b/Resources/Prototypes/Recipes/Crafting/Graphs/improvised/gauze.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: Gauze start: start graph: diff --git a/Resources/Prototypes/Recipes/Crafting/Graphs/improvised/rag.yml b/Resources/Prototypes/Recipes/Crafting/Graphs/improvised/rag.yml index 8bba11188d..e4c1e4b1f6 100644 --- a/Resources/Prototypes/Recipes/Crafting/Graphs/improvised/rag.yml +++ b/Resources/Prototypes/Recipes/Crafting/Graphs/improvised/rag.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: Rag start: start graph: diff --git a/Resources/Prototypes/Recipes/Crafting/Graphs/improvised/rifle_stock.yml b/Resources/Prototypes/Recipes/Crafting/Graphs/improvised/rifle_stock.yml index acb743b442..623e9ed9ad 100644 --- a/Resources/Prototypes/Recipes/Crafting/Graphs/improvised/rifle_stock.yml +++ b/Resources/Prototypes/Recipes/Crafting/Graphs/improvised/rifle_stock.yml @@ -11,4 +11,4 @@ amount: 5 doAfter: 4 - node: riflestock - entity: RifleStock \ No newline at end of file + entity: RifleStock diff --git a/Resources/Prototypes/Recipes/Crafting/Graphs/storage/foodboxpizza.yml b/Resources/Prototypes/Recipes/Crafting/Graphs/storage/foodboxpizza.yml index b475289e11..1cb0f74f72 100644 --- a/Resources/Prototypes/Recipes/Crafting/Graphs/storage/foodboxpizza.yml +++ b/Resources/Prototypes/Recipes/Crafting/Graphs/storage/foodboxpizza.yml @@ -12,4 +12,4 @@ - node: foodboxpizza - entity: FoodBoxPizza \ No newline at end of file + entity: FoodBoxPizza diff --git a/Resources/Prototypes/Recipes/Crafting/Graphs/toys.yml b/Resources/Prototypes/Recipes/Crafting/Graphs/toys.yml index 44959d4fb6..67d1b7b85e 100644 --- a/Resources/Prototypes/Recipes/Crafting/Graphs/toys.yml +++ b/Resources/Prototypes/Recipes/Crafting/Graphs/toys.yml @@ -1,4 +1,4 @@ -- type: constructionGraph +- type: constructionGraph id: PlushieGhostRevenant start: start graph: diff --git a/Resources/Prototypes/Recipes/Crafting/artifact.yml b/Resources/Prototypes/Recipes/Crafting/artifact.yml index 82f295ca5c..c3324fe420 100644 --- a/Resources/Prototypes/Recipes/Crafting/artifact.yml +++ b/Resources/Prototypes/Recipes/Crafting/artifact.yml @@ -1,4 +1,4 @@ -- type: construction +- type: construction parent: BaseItemMisc id: Artifact graph: Artifact diff --git a/Resources/Prototypes/Recipes/Crafting/toys.yml b/Resources/Prototypes/Recipes/Crafting/toys.yml index bcb5ff4a0c..0090a31813 100644 --- a/Resources/Prototypes/Recipes/Crafting/toys.yml +++ b/Resources/Prototypes/Recipes/Crafting/toys.yml @@ -1,4 +1,4 @@ -- type: construction +- type: construction parent: BaseItemMisc id: PlushieGhostRevenant graph: PlushieGhostRevenant diff --git a/Resources/Prototypes/Recipes/Reactions/gas.yml b/Resources/Prototypes/Recipes/Reactions/gas.yml index 3dc6654d68..5dd19253f4 100644 --- a/Resources/Prototypes/Recipes/Reactions/gas.yml +++ b/Resources/Prototypes/Recipes/Reactions/gas.yml @@ -1,4 +1,4 @@ -- type: reaction +- type: reaction id: CarbonDioxideBreakdown source: true requiredMixerCategories: diff --git a/Resources/Prototypes/Recipes/Reactions/pyrotechnic.yml b/Resources/Prototypes/Recipes/Reactions/pyrotechnic.yml index b3b01ab515..1767ff0158 100644 --- a/Resources/Prototypes/Recipes/Reactions/pyrotechnic.yml +++ b/Resources/Prototypes/Recipes/Reactions/pyrotechnic.yml @@ -1,4 +1,4 @@ -- type: reaction +- type: reaction id: Napalm reactants: Oil: diff --git a/Resources/Prototypes/Roles/Antags/base.yml b/Resources/Prototypes/Roles/Antags/base.yml index 984ea5fd17..d5fc45c69f 100644 --- a/Resources/Prototypes/Roles/Antags/base.yml +++ b/Resources/Prototypes/Roles/Antags/base.yml @@ -1,4 +1,4 @@ -- type: antagSpecifier +- type: antagSpecifier abstract: true id: BaseAntagSpecifier jobBlacklist: diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml b/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml index 761dd09d20..1e3fe172ed 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml @@ -1,4 +1,4 @@ -- type: job +- type: job id: TechnicalAssistant name: job-name-technical-assistant description: job-description-technical-assistant diff --git a/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml b/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml index ff3a8673b7..3cc01ce5b6 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml @@ -1,4 +1,4 @@ -- type: job +- type: job id: MedicalIntern name: job-name-intern description: job-description-intern diff --git a/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml b/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml index 5db6e304b5..2c7b93ce1a 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml @@ -1,4 +1,4 @@ -- type: job +- type: job id: ResearchAssistant name: job-name-research-assistant description: job-description-research-assistant diff --git a/Resources/Prototypes/Shaders/displacement.yml b/Resources/Prototypes/Shaders/displacement.yml index debb68fb1f..93efbf2a21 100644 --- a/Resources/Prototypes/Shaders/displacement.yml +++ b/Resources/Prototypes/Shaders/displacement.yml @@ -1,4 +1,4 @@ -- type: shader +- type: shader id: DisplacedStencilDraw kind: source path: "/Textures/Shaders/displacement.swsl" diff --git a/Resources/Prototypes/Shaders/greyscale.yml b/Resources/Prototypes/Shaders/greyscale.yml index 290f5ead5a..1d57c52f9b 100644 --- a/Resources/Prototypes/Shaders/greyscale.yml +++ b/Resources/Prototypes/Shaders/greyscale.yml @@ -1,4 +1,4 @@ -- type: shader +- type: shader id: Greyscale kind: source path: "/Textures/Shaders/greyscale.swsl" diff --git a/Resources/Prototypes/SoundCollections/NukeMusic.yml b/Resources/Prototypes/SoundCollections/NukeMusic.yml index 739b93ca1f..6332ee6c92 100644 --- a/Resources/Prototypes/SoundCollections/NukeMusic.yml +++ b/Resources/Prototypes/SoundCollections/NukeMusic.yml @@ -1,4 +1,4 @@ -- type: soundCollection +- type: soundCollection id: NukeMusic files: - /Audio/StationEvents/running_out.ogg diff --git a/Resources/Prototypes/SoundCollections/anomaly.yml b/Resources/Prototypes/SoundCollections/anomaly.yml index 291b5d4a27..710ee58b2e 100644 --- a/Resources/Prototypes/SoundCollections/anomaly.yml +++ b/Resources/Prototypes/SoundCollections/anomaly.yml @@ -1,4 +1,4 @@ -- type: soundCollection +- type: soundCollection id: AnomalyFleshSupercritical files: - /Audio/Items/Anomaly/flesh_crit.ogg diff --git a/Resources/Prototypes/SoundCollections/changeling.yml b/Resources/Prototypes/SoundCollections/changeling.yml index 4edb07dc16..36d6fe33cf 100644 --- a/Resources/Prototypes/SoundCollections/changeling.yml +++ b/Resources/Prototypes/SoundCollections/changeling.yml @@ -1,4 +1,4 @@ -- type: soundCollection +- type: soundCollection id: ChangelingDevourConsume files: - /Audio/Effects/Changeling/devour_consume.ogg diff --git a/Resources/Prototypes/SoundCollections/clownrecorder.yml b/Resources/Prototypes/SoundCollections/clownrecorder.yml index d7b12853b3..59e1ccc966 100644 --- a/Resources/Prototypes/SoundCollections/clownrecorder.yml +++ b/Resources/Prototypes/SoundCollections/clownrecorder.yml @@ -3,4 +3,4 @@ files: - /Audio/Items/Toys/sitcom_laugh.ogg - /Audio/Items/Toys/sitcom_laugh2.ogg - \ No newline at end of file + diff --git a/Resources/Prototypes/SoundCollections/fence_rattle.yml b/Resources/Prototypes/SoundCollections/fence_rattle.yml index f50dd33bf1..97d6ace1cf 100644 --- a/Resources/Prototypes/SoundCollections/fence_rattle.yml +++ b/Resources/Prototypes/SoundCollections/fence_rattle.yml @@ -1,4 +1,4 @@ -- type: soundCollection +- type: soundCollection id: FenceRattle files: - /Audio/Effects/fence_rattle1.ogg diff --git a/Resources/Prototypes/SoundCollections/generator.yml b/Resources/Prototypes/SoundCollections/generator.yml index 00ea0240e7..182f663ce2 100644 --- a/Resources/Prototypes/SoundCollections/generator.yml +++ b/Resources/Prototypes/SoundCollections/generator.yml @@ -1,4 +1,4 @@ -- type: soundCollection +- type: soundCollection # Plays when you try to start a generator. # You know, lawnmower cord pull sound. id: GeneratorTug diff --git a/Resources/Prototypes/SoundCollections/hit_impacts.yml b/Resources/Prototypes/SoundCollections/hit_impacts.yml index b0e805f30d..ca7451a1d6 100644 --- a/Resources/Prototypes/SoundCollections/hit_impacts.yml +++ b/Resources/Prototypes/SoundCollections/hit_impacts.yml @@ -1,4 +1,4 @@ -- type: soundCollection +- type: soundCollection id: MetalThud files: - /Audio/Effects/metal_thud1.ogg diff --git a/Resources/Prototypes/SoundCollections/sadtrombone.yml b/Resources/Prototypes/SoundCollections/sadtrombone.yml index 268bb2d0df..35f877ab82 100644 --- a/Resources/Prototypes/SoundCollections/sadtrombone.yml +++ b/Resources/Prototypes/SoundCollections/sadtrombone.yml @@ -1,4 +1,4 @@ -- type: soundCollection +- type: soundCollection id: SadTrombone files: - /Audio/Effects/sadtrombone.ogg diff --git a/Resources/Prototypes/SoundCollections/scurret.yml b/Resources/Prototypes/SoundCollections/scurret.yml index cb0411638b..d63c2a0f71 100644 --- a/Resources/Prototypes/SoundCollections/scurret.yml +++ b/Resources/Prototypes/SoundCollections/scurret.yml @@ -1,4 +1,4 @@ -- type: soundCollection +- type: soundCollection id: WawaLaugh files: - /Audio/Animals/wawa_mock.ogg diff --git a/Resources/Prototypes/SoundCollections/storage_rustle.yml b/Resources/Prototypes/SoundCollections/storage_rustle.yml index 3fbfc80535..4732bf6ed1 100644 --- a/Resources/Prototypes/SoundCollections/storage_rustle.yml +++ b/Resources/Prototypes/SoundCollections/storage_rustle.yml @@ -12,4 +12,4 @@ files: - /Audio/Effects/trashbag1.ogg - /Audio/Effects/trashbag2.ogg - - /Audio/Effects/trashbag3.ogg \ No newline at end of file + - /Audio/Effects/trashbag3.ogg diff --git a/Resources/Prototypes/SoundCollections/tray.yml b/Resources/Prototypes/SoundCollections/tray.yml index 960b6dfe2c..a808522252 100644 --- a/Resources/Prototypes/SoundCollections/tray.yml +++ b/Resources/Prototypes/SoundCollections/tray.yml @@ -1,4 +1,4 @@ -- type: soundCollection +- type: soundCollection id: TrayHit files: - /Audio/Items/trayhit1.ogg diff --git a/Resources/Prototypes/Stacks/Specific/science.yml b/Resources/Prototypes/Stacks/Specific/science.yml index 610464b33e..e6e653c45e 100644 --- a/Resources/Prototypes/Stacks/Specific/science.yml +++ b/Resources/Prototypes/Stacks/Specific/science.yml @@ -1,4 +1,4 @@ -- type: stack +- type: stack parent: BaseMediumStack id: ArtifactFragment name: stack-artifact-fragment diff --git a/Resources/Prototypes/StatusIcon/debug.yml b/Resources/Prototypes/StatusIcon/debug.yml index 24981746e7..20eb766d90 100644 --- a/Resources/Prototypes/StatusIcon/debug.yml +++ b/Resources/Prototypes/StatusIcon/debug.yml @@ -1,4 +1,4 @@ -- type: debugIcon +- type: debugIcon id: DebugStatus icon: sprite: /Textures/Interface/Misc/research_disciplines.rsi diff --git a/Resources/Prototypes/Tiles/plating.yml b/Resources/Prototypes/Tiles/plating.yml index 69404cd186..81736d0b52 100644 --- a/Resources/Prototypes/Tiles/plating.yml +++ b/Resources/Prototypes/Tiles/plating.yml @@ -1,4 +1,4 @@ -- type: tile +- type: tile id: BasePlating abstract: true friction: 1.5 diff --git a/Resources/Prototypes/Voice/speech_verbs.yml b/Resources/Prototypes/Voice/speech_verbs.yml index 42848994c7..304a0d069d 100644 --- a/Resources/Prototypes/Voice/speech_verbs.yml +++ b/Resources/Prototypes/Voice/speech_verbs.yml @@ -1,4 +1,4 @@ -- type: speechVerb +- type: speechVerb id: Default name: chat-speech-verb-name-default speechVerbStrings: diff --git a/Resources/Prototypes/name_identifier_groups.yml b/Resources/Prototypes/name_identifier_groups.yml index e461fa8d58..a853f12f94 100644 --- a/Resources/Prototypes/name_identifier_groups.yml +++ b/Resources/Prototypes/name_identifier_groups.yml @@ -1,4 +1,4 @@ -# Non-fungible apes, anyone? +# Non-fungible apes, anyone? - type: nameIdentifierGroup id: Monkey format: name-identifier-format-monkey diff --git a/Resources/Prototypes/silicon-laws.yml b/Resources/Prototypes/silicon-laws.yml index 3b01a61386..b57bef89db 100644 --- a/Resources/Prototypes/silicon-laws.yml +++ b/Resources/Prototypes/silicon-laws.yml @@ -1,4 +1,4 @@ -# Crewsimov +# Crewsimov - type: siliconLaw id: Crewsimov1 order: 1 diff --git a/Resources/Prototypes/status_effects.yml b/Resources/Prototypes/status_effects.yml index 03ad6229c2..d74f1f2885 100644 --- a/Resources/Prototypes/status_effects.yml +++ b/Resources/Prototypes/status_effects.yml @@ -1,4 +1,4 @@ -# Status effect prototypes. +# Status effect prototypes. # Holds no actual logic, just some basic data about the effect. # Note: We have a new status effect system that needs all of these status effects to be fully ported to. @@ -32,4 +32,4 @@ alert: Corporeal - type: statusEffect - id: Pacified #cannot attack \ No newline at end of file + id: Pacified #cannot attack diff --git a/Resources/Prototypes/whitelists.yml b/Resources/Prototypes/whitelists.yml index 8a99aa30ea..02dbafe56a 100644 --- a/Resources/Prototypes/whitelists.yml +++ b/Resources/Prototypes/whitelists.yml @@ -1,4 +1,4 @@ -- type: playerConnectionWhitelist +- type: playerConnectionWhitelist id: basicWhitelist # Basic whitelist using only the ManualWhitelist condition conditions: - !type:ConditionManualWhitelistMembership diff --git a/Resources/Textures/Clothing/Back/Backpacks/ertchaplain.rsi/meta.json b/Resources/Textures/Clothing/Back/Backpacks/ertchaplain.rsi/meta.json index e2732ec02c..db4714cdbd 100644 --- a/Resources/Textures/Clothing/Back/Backpacks/ertchaplain.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Backpacks/ertchaplain.rsi/meta.json @@ -23,4 +23,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Back/Backpacks/ertclown.rsi/meta.json b/Resources/Textures/Clothing/Back/Backpacks/ertclown.rsi/meta.json index 154f526df0..dc6166a742 100644 --- a/Resources/Textures/Clothing/Back/Backpacks/ertclown.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Backpacks/ertclown.rsi/meta.json @@ -23,4 +23,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Back/Backpacks/erteng.rsi/meta.json b/Resources/Textures/Clothing/Back/Backpacks/erteng.rsi/meta.json index 154f526df0..dc6166a742 100644 --- a/Resources/Textures/Clothing/Back/Backpacks/erteng.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Backpacks/erteng.rsi/meta.json @@ -23,4 +23,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Back/Backpacks/ertjanitor.rsi/meta.json b/Resources/Textures/Clothing/Back/Backpacks/ertjanitor.rsi/meta.json index 154f526df0..dc6166a742 100644 --- a/Resources/Textures/Clothing/Back/Backpacks/ertjanitor.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Backpacks/ertjanitor.rsi/meta.json @@ -23,4 +23,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Back/Backpacks/ertleader.rsi/meta.json b/Resources/Textures/Clothing/Back/Backpacks/ertleader.rsi/meta.json index e2732ec02c..db4714cdbd 100644 --- a/Resources/Textures/Clothing/Back/Backpacks/ertleader.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Backpacks/ertleader.rsi/meta.json @@ -23,4 +23,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Back/Backpacks/ertmed.rsi/meta.json b/Resources/Textures/Clothing/Back/Backpacks/ertmed.rsi/meta.json index 154f526df0..dc6166a742 100644 --- a/Resources/Textures/Clothing/Back/Backpacks/ertmed.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Backpacks/ertmed.rsi/meta.json @@ -23,4 +23,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Back/Backpacks/ertsec.rsi/meta.json b/Resources/Textures/Clothing/Back/Backpacks/ertsec.rsi/meta.json index 154f526df0..dc6166a742 100644 --- a/Resources/Textures/Clothing/Back/Backpacks/ertsec.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Backpacks/ertsec.rsi/meta.json @@ -23,4 +23,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Back/Backpacks/syndicate.rsi/meta.json b/Resources/Textures/Clothing/Back/Backpacks/syndicate.rsi/meta.json index f087cc75d1..612001b231 100644 --- a/Resources/Textures/Clothing/Back/Backpacks/syndicate.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Backpacks/syndicate.rsi/meta.json @@ -23,4 +23,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Back/Duffels/genetics.rsi/meta.json b/Resources/Textures/Clothing/Back/Duffels/genetics.rsi/meta.json index ac5b546341..40aafab67f 100644 --- a/Resources/Textures/Clothing/Back/Duffels/genetics.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Duffels/genetics.rsi/meta.json @@ -24,4 +24,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Back/Duffels/virology.rsi/meta.json b/Resources/Textures/Clothing/Back/Duffels/virology.rsi/meta.json index ac5b546341..40aafab67f 100644 --- a/Resources/Textures/Clothing/Back/Duffels/virology.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Duffels/virology.rsi/meta.json @@ -24,4 +24,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Back/Satchels/genetics.rsi/meta.json b/Resources/Textures/Clothing/Back/Satchels/genetics.rsi/meta.json index 5377347324..3547b30e6b 100644 --- a/Resources/Textures/Clothing/Back/Satchels/genetics.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Satchels/genetics.rsi/meta.json @@ -23,4 +23,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Back/Satchels/virology.rsi/meta.json b/Resources/Textures/Clothing/Back/Satchels/virology.rsi/meta.json index f9b3615d28..1bf8bf06e4 100644 --- a/Resources/Textures/Clothing/Back/Satchels/virology.rsi/meta.json +++ b/Resources/Textures/Clothing/Back/Satchels/virology.rsi/meta.json @@ -23,4 +23,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Belt/militarywebbingmed.rsi/meta.json b/Resources/Textures/Clothing/Belt/militarywebbingmed.rsi/meta.json index 3680f5a26c..5f4bc443cb 100644 --- a/Resources/Textures/Clothing/Belt/militarywebbingmed.rsi/meta.json +++ b/Resources/Textures/Clothing/Belt/militarywebbingmed.rsi/meta.json @@ -23,4 +23,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Belt/waistbag.rsi/meta.json b/Resources/Textures/Clothing/Belt/waistbag.rsi/meta.json index 3c74d08cfe..f552d6040a 100644 --- a/Resources/Textures/Clothing/Belt/waistbag.rsi/meta.json +++ b/Resources/Textures/Clothing/Belt/waistbag.rsi/meta.json @@ -25,4 +25,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Belt/waistbag_leather.rsi/meta.json b/Resources/Textures/Clothing/Belt/waistbag_leather.rsi/meta.json index 51f6b66a7e..0e40096022 100644 --- a/Resources/Textures/Clothing/Belt/waistbag_leather.rsi/meta.json +++ b/Resources/Textures/Clothing/Belt/waistbag_leather.rsi/meta.json @@ -15,4 +15,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Belt/wand.rsi/meta.json b/Resources/Textures/Clothing/Belt/wand.rsi/meta.json index f08d693379..f9e3d027eb 100644 --- a/Resources/Textures/Clothing/Belt/wand.rsi/meta.json +++ b/Resources/Textures/Clothing/Belt/wand.rsi/meta.json @@ -23,4 +23,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Hands/Gloves/janitor.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/janitor.rsi/meta.json index 96668939bc..bb79cc4ae6 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/janitor.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/janitor.rsi/meta.json @@ -23,4 +23,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Head/Hats/beret_warden.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/beret_warden.rsi/meta.json index 081fff118c..460e8dd0e5 100644 --- a/Resources/Textures/Clothing/Head/Hats/beret_warden.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/beret_warden.rsi/meta.json @@ -24,4 +24,4 @@ } ] } - \ No newline at end of file + diff --git a/Resources/Textures/Clothing/Head/Hats/comcap.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/comcap.rsi/meta.json index 777097dc0d..77e07d77c6 100644 --- a/Resources/Textures/Clothing/Head/Hats/comcap.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/comcap.rsi/meta.json @@ -27,4 +27,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Head/Hats/fishcap.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/fishcap.rsi/meta.json index 039fe55777..e938b2a6f3 100644 --- a/Resources/Textures/Clothing/Head/Hats/fishcap.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/fishcap.rsi/meta.json @@ -24,4 +24,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Head/Hats/melon.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/melon.rsi/meta.json index f842621d06..723eab86c0 100644 --- a/Resources/Textures/Clothing/Head/Hats/melon.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/melon.rsi/meta.json @@ -23,4 +23,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Head/Hats/nursehat.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/nursehat.rsi/meta.json index 222dcf3690..291d5151d2 100644 --- a/Resources/Textures/Clothing/Head/Hats/nursehat.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/nursehat.rsi/meta.json @@ -27,4 +27,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Head/Hats/papersack.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/papersack.rsi/meta.json index c6887def72..e6dea50ce2 100644 --- a/Resources/Textures/Clothing/Head/Hats/papersack.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/papersack.rsi/meta.json @@ -27,4 +27,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Head/Hats/papersacksmile.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/papersacksmile.rsi/meta.json index ab1f7a4abf..4eb6ffbc62 100644 --- a/Resources/Textures/Clothing/Head/Hats/papersacksmile.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/papersacksmile.rsi/meta.json @@ -23,4 +23,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Head/Helmets/card_helmet.rsi/meta.json b/Resources/Textures/Clothing/Head/Helmets/card_helmet.rsi/meta.json index 6027df662b..e192a1cd2f 100644 --- a/Resources/Textures/Clothing/Head/Helmets/card_helmet.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Helmets/card_helmet.rsi/meta.json @@ -19,4 +19,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Head/Helmets/linghelmet.rsi/meta.json b/Resources/Textures/Clothing/Head/Helmets/linghelmet.rsi/meta.json index f2b97b7d63..bb8ac2c76b 100644 --- a/Resources/Textures/Clothing/Head/Helmets/linghelmet.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Helmets/linghelmet.rsi/meta.json @@ -23,4 +23,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Head/Hoods/voidcloak.rsi/meta.json b/Resources/Textures/Clothing/Head/Hoods/voidcloak.rsi/meta.json index 2a8e91145b..eedfd13ca8 100644 --- a/Resources/Textures/Clothing/Head/Hoods/voidcloak.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hoods/voidcloak.rsi/meta.json @@ -15,4 +15,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Multiple/towel.rsi/meta.json b/Resources/Textures/Clothing/Multiple/towel.rsi/meta.json index 95acda0af3..35c1ba8e75 100644 --- a/Resources/Textures/Clothing/Multiple/towel.rsi/meta.json +++ b/Resources/Textures/Clothing/Multiple/towel.rsi/meta.json @@ -37,4 +37,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Neck/Cloaks/void.rsi/meta.json b/Resources/Textures/Clothing/Neck/Cloaks/void.rsi/meta.json index 83ecc370af..8b61f8640e 100644 --- a/Resources/Textures/Clothing/Neck/Cloaks/void.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Cloaks/void.rsi/meta.json @@ -49,4 +49,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Neck/Misc/dinkystar.rsi/meta.json b/Resources/Textures/Clothing/Neck/Misc/dinkystar.rsi/meta.json index 0ed35562ca..a3b7300058 100644 --- a/Resources/Textures/Clothing/Neck/Misc/dinkystar.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Misc/dinkystar.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC0-1.0", "copyright": "Created by PoorMansDreams", diff --git a/Resources/Textures/Clothing/Neck/mantles/capmantle.rsi/meta.json b/Resources/Textures/Clothing/Neck/mantles/capmantle.rsi/meta.json index 4441be48f0..a9437f1adc 100644 --- a/Resources/Textures/Clothing/Neck/mantles/capmantle.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/mantles/capmantle.rsi/meta.json @@ -15,4 +15,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Neck/mantles/cemantle.rsi/meta.json b/Resources/Textures/Clothing/Neck/mantles/cemantle.rsi/meta.json index a9b40d83e2..035e5439ee 100644 --- a/Resources/Textures/Clothing/Neck/mantles/cemantle.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/mantles/cemantle.rsi/meta.json @@ -15,4 +15,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Neck/mantles/cmomantle.rsi/meta.json b/Resources/Textures/Clothing/Neck/mantles/cmomantle.rsi/meta.json index a9b40d83e2..035e5439ee 100644 --- a/Resources/Textures/Clothing/Neck/mantles/cmomantle.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/mantles/cmomantle.rsi/meta.json @@ -15,4 +15,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Neck/mantles/hopmantle.rsi/meta.json b/Resources/Textures/Clothing/Neck/mantles/hopmantle.rsi/meta.json index a9b40d83e2..035e5439ee 100644 --- a/Resources/Textures/Clothing/Neck/mantles/hopmantle.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/mantles/hopmantle.rsi/meta.json @@ -15,4 +15,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Neck/mantles/hosmantle.rsi/meta.json b/Resources/Textures/Clothing/Neck/mantles/hosmantle.rsi/meta.json index a9b40d83e2..035e5439ee 100644 --- a/Resources/Textures/Clothing/Neck/mantles/hosmantle.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/mantles/hosmantle.rsi/meta.json @@ -15,4 +15,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Neck/mantles/mantle.rsi/meta.json b/Resources/Textures/Clothing/Neck/mantles/mantle.rsi/meta.json index 6a25a8269b..1ccce7a5e0 100644 --- a/Resources/Textures/Clothing/Neck/mantles/mantle.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/mantles/mantle.rsi/meta.json @@ -15,4 +15,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Neck/mantles/qmmantle.rsi/meta.json b/Resources/Textures/Clothing/Neck/mantles/qmmantle.rsi/meta.json index 1b05cf9b67..c95a15b520 100644 --- a/Resources/Textures/Clothing/Neck/mantles/qmmantle.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/mantles/qmmantle.rsi/meta.json @@ -15,4 +15,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Neck/mantles/rdmantle.rsi/meta.json b/Resources/Textures/Clothing/Neck/mantles/rdmantle.rsi/meta.json index a9b40d83e2..035e5439ee 100644 --- a/Resources/Textures/Clothing/Neck/mantles/rdmantle.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/mantles/rdmantle.rsi/meta.json @@ -15,4 +15,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/OuterClothing/Armor/lingarmor.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Armor/lingarmor.rsi/meta.json index 1ab7cd87fc..375e93e70c 100644 --- a/Resources/Textures/Clothing/OuterClothing/Armor/lingarmor.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Armor/lingarmor.rsi/meta.json @@ -23,4 +23,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/OuterClothing/Armor/riot.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Armor/riot.rsi/meta.json index c429d1116c..3b062a2833 100644 --- a/Resources/Textures/Clothing/OuterClothing/Armor/riot.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Armor/riot.rsi/meta.json @@ -27,4 +27,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/OuterClothing/Misc/nunrobe.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Misc/nunrobe.rsi/meta.json index 86c101326a..3fa2c7657c 100644 --- a/Resources/Textures/Clothing/OuterClothing/Misc/nunrobe.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Misc/nunrobe.rsi/meta.json @@ -27,4 +27,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/OuterClothing/WinterCoats/coat.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/WinterCoats/coat.rsi/meta.json index c3a764f657..06794c2940 100644 --- a/Resources/Textures/Clothing/OuterClothing/WinterCoats/coat.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/WinterCoats/coat.rsi/meta.json @@ -583,4 +583,4 @@ "name": "ARMOR-icon" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/OuterClothing/WinterCoats/coatclown.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/WinterCoats/coatclown.rsi/meta.json index 1c427d3df9..c0fa1fb383 100644 --- a/Resources/Textures/Clothing/OuterClothing/WinterCoats/coatclown.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/WinterCoats/coatclown.rsi/meta.json @@ -27,4 +27,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/OuterClothing/WinterCoats/coatnomi.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/WinterCoats/coatnomi.rsi/meta.json index 39806b9c67..c8afc5679b 100644 --- a/Resources/Textures/Clothing/OuterClothing/WinterCoats/coatnomi.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/WinterCoats/coatnomi.rsi/meta.json @@ -23,4 +23,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/OuterClothing/WinterCoats/coatwardenarmored.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/WinterCoats/coatwardenarmored.rsi/meta.json index 1ffb8fc6bd..f062719ab0 100644 --- a/Resources/Textures/Clothing/OuterClothing/WinterCoats/coatwardenarmored.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/WinterCoats/coatwardenarmored.rsi/meta.json @@ -27,4 +27,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Shoes/Specific/bling.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Specific/bling.rsi/meta.json index fd2d511681..b5214cf0f3 100644 --- a/Resources/Textures/Clothing/Shoes/Specific/bling.rsi/meta.json +++ b/Resources/Textures/Clothing/Shoes/Specific/bling.rsi/meta.json @@ -24,4 +24,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirts/Engineering/atmosf.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirts/Engineering/atmosf.rsi/meta.json index 1be161f5fb..e7c13b8eaa 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirts/Engineering/atmosf.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirts/Engineering/atmosf.rsi/meta.json @@ -27,4 +27,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirts/Science/roboticist.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirts/Science/roboticist.rsi/meta.json index 16b45eec87..e851ff3ce5 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirts/Science/roboticist.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirts/Science/roboticist.rsi/meta.json @@ -27,4 +27,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirts/Service/psychologist.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirts/Service/psychologist.rsi/meta.json index 4d0c4eb7bd..1953b62507 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirts/Service/psychologist.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirts/Service/psychologist.rsi/meta.json @@ -27,4 +27,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirts/Special/operative_s.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirts/Special/operative_s.rsi/meta.json index 94d2cd0d9d..4cfacc0b00 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirts/Special/operative_s.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirts/Special/operative_s.rsi/meta.json @@ -27,4 +27,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirts/Special/tacticool_s.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirts/Special/tacticool_s.rsi/meta.json index 94d2cd0d9d..4cfacc0b00 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirts/Special/tacticool_s.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirts/Special/tacticool_s.rsi/meta.json @@ -27,4 +27,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuits/Science/roboticist.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuits/Science/roboticist.rsi/meta.json index fa0b5a36dd..47384a6d6d 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuits/Science/roboticist.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuits/Science/roboticist.rsi/meta.json @@ -31,4 +31,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuits/Service/journalist.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuits/Service/journalist.rsi/meta.json index 483e615ceb..91147b437a 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuits/Service/journalist.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuits/Service/journalist.rsi/meta.json @@ -27,4 +27,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuits/Service/psychologist.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuits/Service/psychologist.rsi/meta.json index 483e615ceb..91147b437a 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuits/Service/psychologist.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuits/Service/psychologist.rsi/meta.json @@ -27,4 +27,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuits/Service/reporter.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuits/Service/reporter.rsi/meta.json index 483e615ceb..91147b437a 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuits/Service/reporter.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuits/Service/reporter.rsi/meta.json @@ -27,4 +27,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuits/Special/mercenary.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuits/Special/mercenary.rsi/meta.json index c5682d0a19..358d58264c 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuits/Special/mercenary.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuits/Special/mercenary.rsi/meta.json @@ -27,4 +27,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuits/Special/operative.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuits/Special/operative.rsi/meta.json index 1a3bbef77b..eb79a6be1a 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuits/Special/operative.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuits/Special/operative.rsi/meta.json @@ -27,4 +27,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuits/Special/tacticool.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuits/Special/tacticool.rsi/meta.json index 1a3bbef77b..eb79a6be1a 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuits/Special/tacticool.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuits/Special/tacticool.rsi/meta.json @@ -27,4 +27,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Decals/basalt.rsi/meta.json b/Resources/Textures/Decals/basalt.rsi/meta.json index 4dcef5184b..78dee33387 100644 --- a/Resources/Textures/Decals/basalt.rsi/meta.json +++ b/Resources/Textures/Decals/basalt.rsi/meta.json @@ -35,4 +35,4 @@ "name": "basalt9" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Decals/syndlogo.rsi/meta.json b/Resources/Textures/Decals/syndlogo.rsi/meta.json index 6498608b36..12f6da403a 100644 --- a/Resources/Textures/Decals/syndlogo.rsi/meta.json +++ b/Resources/Textures/Decals/syndlogo.rsi/meta.json @@ -66,4 +66,4 @@ } ] } - \ No newline at end of file + diff --git a/Resources/Textures/Effects/acidifier.rsi/meta.json b/Resources/Textures/Effects/acidifier.rsi/meta.json index 358e92374c..9ceae74a09 100644 --- a/Resources/Textures/Effects/acidifier.rsi/meta.json +++ b/Resources/Textures/Effects/acidifier.rsi/meta.json @@ -27,4 +27,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Effects/chempuff.rsi/meta.json b/Resources/Textures/Effects/chempuff.rsi/meta.json index 71c90d7be6..59aa3cad3a 100644 --- a/Resources/Textures/Effects/chempuff.rsi/meta.json +++ b/Resources/Textures/Effects/chempuff.rsi/meta.json @@ -20,4 +20,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Effects/clicktest.rsi/meta.json b/Resources/Textures/Effects/clicktest.rsi/meta.json index 8b7b7f249b..6b4db20d96 100644 --- a/Resources/Textures/Effects/clicktest.rsi/meta.json +++ b/Resources/Textures/Effects/clicktest.rsi/meta.json @@ -1 +1 @@ -{"version":1,"size":{"x":32,"y":32},"license":"CC-BY-SA-3.0","copyright":"Discord PJB#3005","states":[{"name":"fixed_corner","directions":4},{"name":"invis_base","directions":4},{"name":"rotating_corner","directions":4}]} \ No newline at end of file +{"version":1,"size":{"x":32,"y":32},"license":"CC-BY-SA-3.0","copyright":"Discord PJB#3005","states":[{"name":"fixed_corner","directions":4},{"name":"invis_base","directions":4},{"name":"rotating_corner","directions":4}]} diff --git a/Resources/Textures/Effects/electricity.rsi/meta.json b/Resources/Textures/Effects/electricity.rsi/meta.json index b603d7a385..5cfe6712b9 100644 --- a/Resources/Textures/Effects/electricity.rsi/meta.json +++ b/Resources/Textures/Effects/electricity.rsi/meta.json @@ -34,4 +34,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Effects/explosion.rsi/meta.json b/Resources/Textures/Effects/explosion.rsi/meta.json index ff3ec21911..932c766c2b 100644 --- a/Resources/Textures/Effects/explosion.rsi/meta.json +++ b/Resources/Textures/Effects/explosion.rsi/meta.json @@ -1 +1 @@ -{"version":1,"size":{"x":96,"y":96},"license":"CC-BY-SA-3.0","copyright":"Taken and modified from https://github.com/vgstation-coders/vgstation13/icons/effects/96x96.dmi at commit 96d69b71a3a0549b4b668c0a095306580bd157c0","states":[{"name":"explosion"},{"name":"explosionfast","delays":[[0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06]]}]} \ No newline at end of file +{"version":1,"size":{"x":96,"y":96},"license":"CC-BY-SA-3.0","copyright":"Taken and modified from https://github.com/vgstation-coders/vgstation13/icons/effects/96x96.dmi at commit 96d69b71a3a0549b4b668c0a095306580bd157c0","states":[{"name":"explosion"},{"name":"explosionfast","delays":[[0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06]]}]} diff --git a/Resources/Textures/Effects/hearts.rsi/meta.json b/Resources/Textures/Effects/hearts.rsi/meta.json index 0c90d63d88..e6028394c5 100644 --- a/Resources/Textures/Effects/hearts.rsi/meta.json +++ b/Resources/Textures/Effects/hearts.rsi/meta.json @@ -21,4 +21,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Effects/lightning.rsi/meta.json b/Resources/Textures/Effects/lightning.rsi/meta.json index c0845182c2..edd2555775 100644 --- a/Resources/Textures/Effects/lightning.rsi/meta.json +++ b/Resources/Textures/Effects/lightning.rsi/meta.json @@ -149,4 +149,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Effects/medi_holo.rsi/meta.json b/Resources/Textures/Effects/medi_holo.rsi/meta.json index 1be502223e..528f282557 100644 --- a/Resources/Textures/Effects/medi_holo.rsi/meta.json +++ b/Resources/Textures/Effects/medi_holo.rsi/meta.json @@ -23,4 +23,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Effects/optionsvisualizertest.rsi/meta.json b/Resources/Textures/Effects/optionsvisualizertest.rsi/meta.json index e7f749513d..af68e96cf4 100644 --- a/Resources/Textures/Effects/optionsvisualizertest.rsi/meta.json +++ b/Resources/Textures/Effects/optionsvisualizertest.rsi/meta.json @@ -1 +1 @@ -{"version":1,"size":{"x":32,"y":32},"license":"CC-BY-SA-4.0","copyright":"Discord pjb","states":[{"name":"none"},{"name":"both"},{"name":"motion"},{"name":"test"}]} +{"version":1,"size":{"x":32,"y":32},"license":"CC-BY-SA-4.0","copyright":"Discord pjb","states":[{"name":"none"},{"name":"both"},{"name":"motion"},{"name":"test"}]} diff --git a/Resources/Textures/Effects/portal.rsi/meta.json b/Resources/Textures/Effects/portal.rsi/meta.json index 072729d38b..1d1a02bfd7 100644 --- a/Resources/Textures/Effects/portal.rsi/meta.json +++ b/Resources/Textures/Effects/portal.rsi/meta.json @@ -92,4 +92,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Effects/techanom_beam.rsi/meta.json b/Resources/Textures/Effects/techanom_beam.rsi/meta.json index 15ca5cd3a4..4433487250 100644 --- a/Resources/Textures/Effects/techanom_beam.rsi/meta.json +++ b/Resources/Textures/Effects/techanom_beam.rsi/meta.json @@ -19,4 +19,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Effects/weather.rsi/meta.json b/Resources/Textures/Effects/weather.rsi/meta.json index 896786c11b..b9c5d03d35 100644 --- a/Resources/Textures/Effects/weather.rsi/meta.json +++ b/Resources/Textures/Effects/weather.rsi/meta.json @@ -316,4 +316,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Fluids/gibblet.rsi/meta.json b/Resources/Textures/Fluids/gibblet.rsi/meta.json index e6827234c5..1483647fdd 100644 --- a/Resources/Textures/Fluids/gibblet.rsi/meta.json +++ b/Resources/Textures/Fluids/gibblet.rsi/meta.json @@ -23,4 +23,4 @@ "name": "gibblet-4" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Fluids/puddle.rsi/meta.json b/Resources/Textures/Fluids/puddle.rsi/meta.json index 5e0b79b314..4af133c17c 100644 --- a/Resources/Textures/Fluids/puddle.rsi/meta.json +++ b/Resources/Textures/Fluids/puddle.rsi/meta.json @@ -62,4 +62,4 @@ "name": "splat15" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Fluids/smear.rsi/meta.json b/Resources/Textures/Fluids/smear.rsi/meta.json index ebccb6d459..6082c2f816 100644 --- a/Resources/Textures/Fluids/smear.rsi/meta.json +++ b/Resources/Textures/Fluids/smear.rsi/meta.json @@ -29,4 +29,4 @@ "name": "smear-6" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Fluids/splatter.rsi/meta.json b/Resources/Textures/Fluids/splatter.rsi/meta.json index b224dd00a5..c5bbd5d53c 100644 --- a/Resources/Textures/Fluids/splatter.rsi/meta.json +++ b/Resources/Textures/Fluids/splatter.rsi/meta.json @@ -26,4 +26,4 @@ "name": "splatter-5" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Fluids/vomit.rsi/meta.json b/Resources/Textures/Fluids/vomit.rsi/meta.json index f0a3ffb3b5..b3f54b8fa8 100644 --- a/Resources/Textures/Fluids/vomit.rsi/meta.json +++ b/Resources/Textures/Fluids/vomit.rsi/meta.json @@ -20,4 +20,4 @@ "name": "vomit-3" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Fluids/vomit_toxin.rsi/meta.json b/Resources/Textures/Fluids/vomit_toxin.rsi/meta.json index 825ecc9876..cedc76e766 100644 --- a/Resources/Textures/Fluids/vomit_toxin.rsi/meta.json +++ b/Resources/Textures/Fluids/vomit_toxin.rsi/meta.json @@ -20,4 +20,4 @@ "name": "vomit_toxin-3" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Fluids/writing.rsi/meta.json b/Resources/Textures/Fluids/writing.rsi/meta.json index 5d55444729..8185c3c5e7 100644 --- a/Resources/Textures/Fluids/writing.rsi/meta.json +++ b/Resources/Textures/Fluids/writing.rsi/meta.json @@ -23,4 +23,4 @@ "name": "writing-4" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Interface/Actions/actions_fakemindshield.rsi/meta.json b/Resources/Textures/Interface/Actions/actions_fakemindshield.rsi/meta.json index 9aa1bd716b..d78c10d577 100644 --- a/Resources/Textures/Interface/Actions/actions_fakemindshield.rsi/meta.json +++ b/Resources/Textures/Interface/Actions/actions_fakemindshield.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-3.0", "copyright": "By ketufaispikinut (Github)", diff --git a/Resources/Textures/Interface/Actions/actions_mecha.rsi/meta.json b/Resources/Textures/Interface/Actions/actions_mecha.rsi/meta.json index ea7bf434e9..82db09b742 100644 --- a/Resources/Textures/Interface/Actions/actions_mecha.rsi/meta.json +++ b/Resources/Textures/Interface/Actions/actions_mecha.rsi/meta.json @@ -109,4 +109,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Interface/Actions/carp_rift.rsi/meta.json b/Resources/Textures/Interface/Actions/carp_rift.rsi/meta.json index 2567d69886..6928d648f7 100644 --- a/Resources/Textures/Interface/Actions/carp_rift.rsi/meta.json +++ b/Resources/Textures/Interface/Actions/carp_rift.rsi/meta.json @@ -18,4 +18,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Interface/Actions/changeling.rsi/meta.json b/Resources/Textures/Interface/Actions/changeling.rsi/meta.json index 40bf719cc5..f3b6f3ddd5 100644 --- a/Resources/Textures/Interface/Actions/changeling.rsi/meta.json +++ b/Resources/Textures/Interface/Actions/changeling.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC0-1.0", "copyright": "Created by TiniestShark (github).", diff --git a/Resources/Textures/Interface/Actions/devour.rsi/meta.json b/Resources/Textures/Interface/Actions/devour.rsi/meta.json index b176d2ec37..4283fdc820 100644 --- a/Resources/Textures/Interface/Actions/devour.rsi/meta.json +++ b/Resources/Textures/Interface/Actions/devour.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC0-1.0", "copyright": "Created by EmoGarbage404 (github)", diff --git a/Resources/Textures/Interface/Actions/pai-map.rsi/meta.json b/Resources/Textures/Interface/Actions/pai-map.rsi/meta.json index 07e484c8ae..f46f8c1c17 100644 --- a/Resources/Textures/Interface/Actions/pai-map.rsi/meta.json +++ b/Resources/Textures/Interface/Actions/pai-map.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC0-1.0", "copyright": "Made by UbaserB by overlaying Station Map sprites. Original sprites made by brainfood1183 (github) for ss14", diff --git a/Resources/Textures/Interface/Alerts/changeling.rsi/meta.json b/Resources/Textures/Interface/Alerts/changeling.rsi/meta.json index 78137bbfcc..453b4f3d3a 100644 --- a/Resources/Textures/Interface/Alerts/changeling.rsi/meta.json +++ b/Resources/Textures/Interface/Alerts/changeling.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "Made by ketufaispikinut from a sprite taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039 (scientist suit).", diff --git a/Resources/Textures/Interface/Alerts/internals.rsi/meta.json b/Resources/Textures/Interface/Alerts/internals.rsi/meta.json index 9ce9b2330d..a4ae9a7c49 100644 --- a/Resources/Textures/Interface/Alerts/internals.rsi/meta.json +++ b/Resources/Textures/Interface/Alerts/internals.rsi/meta.json @@ -23,4 +23,4 @@ "name": "internal2" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Interface/Alerts/pressure.rsi/meta.json b/Resources/Textures/Interface/Alerts/pressure.rsi/meta.json index bb0c8ceedd..2fd7f9e8fc 100644 --- a/Resources/Textures/Interface/Alerts/pressure.rsi/meta.json +++ b/Resources/Textures/Interface/Alerts/pressure.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at 04e43d8c1d5097fdb697addd4395fb849dd341bd", "states": [{"name": "highpressure1", "directions": 1, "delays": [[1.0]]}, {"name": "highpressure2", "directions": 1, "delays": [[0.5, 0.5]]}, {"name": "lowpressure1", "directions": 1, "delays": [[1.0]]}, {"name": "lowpressure2", "directions": 1, "delays": [[0.5, 0.5]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at 04e43d8c1d5097fdb697addd4395fb849dd341bd", "states": [{"name": "highpressure1", "directions": 1, "delays": [[1.0]]}, {"name": "highpressure2", "directions": 1, "delays": [[0.5, 0.5]]}, {"name": "lowpressure1", "directions": 1, "delays": [[1.0]]}, {"name": "lowpressure2", "directions": 1, "delays": [[0.5, 0.5]]}]} diff --git a/Resources/Textures/Interface/Alerts/stamina.rsi/meta.json b/Resources/Textures/Interface/Alerts/stamina.rsi/meta.json index 21122621e0..f2a27fcf70 100644 --- a/Resources/Textures/Interface/Alerts/stamina.rsi/meta.json +++ b/Resources/Textures/Interface/Alerts/stamina.rsi/meta.json @@ -121,4 +121,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Interface/Alerts/temperature.rsi/meta.json b/Resources/Textures/Interface/Alerts/temperature.rsi/meta.json index 6ecfe4d763..ee0ffda29f 100644 --- a/Resources/Textures/Interface/Alerts/temperature.rsi/meta.json +++ b/Resources/Textures/Interface/Alerts/temperature.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at 1c7401722f397d8ac8afdd10e550c5962e0f38d4", "states": [{"name": "cold1", "directions": 1, "delays": [[1.0]]}, {"name": "cold2", "directions": 1, "delays": [[1.0]]}, {"name": "cold3", "directions": 1, "delays": [[0.3, 0.3]]}, {"name": "hot1", "directions": 1, "delays": [[1.0]]}, {"name": "hot2", "directions": 1, "delays": [[1.0]]}, {"name": "hot3", "directions": 1, "delays": [[0.3, 0.3]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at 1c7401722f397d8ac8afdd10e550c5962e0f38d4", "states": [{"name": "cold1", "directions": 1, "delays": [[1.0]]}, {"name": "cold2", "directions": 1, "delays": [[1.0]]}, {"name": "cold3", "directions": 1, "delays": [[0.3, 0.3]]}, {"name": "hot1", "directions": 1, "delays": [[1.0]]}, {"name": "hot2", "directions": 1, "delays": [[1.0]]}, {"name": "hot3", "directions": 1, "delays": [[0.3, 0.3]]}]} diff --git a/Resources/Textures/Interface/Misc/pointing.rsi/meta.json b/Resources/Textures/Interface/Misc/pointing.rsi/meta.json index ff2120f04c..2e23504cc2 100644 --- a/Resources/Textures/Interface/Misc/pointing.rsi/meta.json +++ b/Resources/Textures/Interface/Misc/pointing.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "size": { "x": 32, diff --git a/Resources/Textures/Interface/Misc/progress_bar.rsi/meta.json b/Resources/Textures/Interface/Misc/progress_bar.rsi/meta.json index 612f362d3c..bb6b971d20 100644 --- a/Resources/Textures/Interface/Misc/progress_bar.rsi/meta.json +++ b/Resources/Textures/Interface/Misc/progress_bar.rsi/meta.json @@ -11,4 +11,4 @@ "name": "icon" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Interface/Nano/Monotone/attributions.yml b/Resources/Textures/Interface/Nano/Monotone/attributions.yml index e462d7713c..2551d84e8a 100644 --- a/Resources/Textures/Interface/Nano/Monotone/attributions.yml +++ b/Resources/Textures/Interface/Nano/Monotone/attributions.yml @@ -26,4 +26,4 @@ - files: ["monotone_checkbox_unchecked.svg.96dpi.png"] license: "CC-BY-SA-3.0" copyright: "Modified from checkbox_unchecked.svg.96dpi by chromiumboy" - source: "https://github.com/chromiumboy" \ No newline at end of file + source: "https://github.com/chromiumboy" diff --git a/Resources/Textures/Interface/Nano/inverted_triangle.svg.png.yml b/Resources/Textures/Interface/Nano/inverted_triangle.svg.png.yml index 497c6beff9..5c43e23305 100644 --- a/Resources/Textures/Interface/Nano/inverted_triangle.svg.png.yml +++ b/Resources/Textures/Interface/Nano/inverted_triangle.svg.png.yml @@ -1,2 +1,2 @@ sample: - filter: true \ No newline at end of file + filter: true diff --git a/Resources/Textures/Interface/Nano/triangle_right.png.yml b/Resources/Textures/Interface/Nano/triangle_right.png.yml index 900d002f35..09db6037c7 100644 --- a/Resources/Textures/Interface/Nano/triangle_right.png.yml +++ b/Resources/Textures/Interface/Nano/triangle_right.png.yml @@ -1,3 +1,3 @@ sample: filter: true -# for .svg, see inverted_triangle.svg. \ No newline at end of file +# for .svg, see inverted_triangle.svg. diff --git a/Resources/Textures/Interface/Nano/triangle_right_hollow.svg.png.yml b/Resources/Textures/Interface/Nano/triangle_right_hollow.svg.png.yml index 497c6beff9..5c43e23305 100644 --- a/Resources/Textures/Interface/Nano/triangle_right_hollow.svg.png.yml +++ b/Resources/Textures/Interface/Nano/triangle_right_hollow.svg.png.yml @@ -1,2 +1,2 @@ sample: - filter: true \ No newline at end of file + filter: true diff --git a/Resources/Textures/Interface/NavMap/beveled_arrow_east.png.yml b/Resources/Textures/Interface/NavMap/beveled_arrow_east.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/NavMap/beveled_arrow_east.png.yml +++ b/Resources/Textures/Interface/NavMap/beveled_arrow_east.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/NavMap/beveled_arrow_north.png.yml b/Resources/Textures/Interface/NavMap/beveled_arrow_north.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/NavMap/beveled_arrow_north.png.yml +++ b/Resources/Textures/Interface/NavMap/beveled_arrow_north.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/NavMap/beveled_arrow_south.png.yml b/Resources/Textures/Interface/NavMap/beveled_arrow_south.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/NavMap/beveled_arrow_south.png.yml +++ b/Resources/Textures/Interface/NavMap/beveled_arrow_south.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/NavMap/beveled_arrow_west.png.yml b/Resources/Textures/Interface/NavMap/beveled_arrow_west.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/NavMap/beveled_arrow_west.png.yml +++ b/Resources/Textures/Interface/NavMap/beveled_arrow_west.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/NavMap/beveled_circle.png.yml b/Resources/Textures/Interface/NavMap/beveled_circle.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/NavMap/beveled_circle.png.yml +++ b/Resources/Textures/Interface/NavMap/beveled_circle.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/NavMap/beveled_diamond.png.yml b/Resources/Textures/Interface/NavMap/beveled_diamond.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/NavMap/beveled_diamond.png.yml +++ b/Resources/Textures/Interface/NavMap/beveled_diamond.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/NavMap/beveled_diamond_east_west.png.yml b/Resources/Textures/Interface/NavMap/beveled_diamond_east_west.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/NavMap/beveled_diamond_east_west.png.yml +++ b/Resources/Textures/Interface/NavMap/beveled_diamond_east_west.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/NavMap/beveled_diamond_north_south.png.yml b/Resources/Textures/Interface/NavMap/beveled_diamond_north_south.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/NavMap/beveled_diamond_north_south.png.yml +++ b/Resources/Textures/Interface/NavMap/beveled_diamond_north_south.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/NavMap/beveled_hexagon.png.yml b/Resources/Textures/Interface/NavMap/beveled_hexagon.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/NavMap/beveled_hexagon.png.yml +++ b/Resources/Textures/Interface/NavMap/beveled_hexagon.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/NavMap/beveled_rectangle_east_west.png.yml b/Resources/Textures/Interface/NavMap/beveled_rectangle_east_west.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/NavMap/beveled_rectangle_east_west.png.yml +++ b/Resources/Textures/Interface/NavMap/beveled_rectangle_east_west.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/NavMap/beveled_rectangle_north_south.png.yml b/Resources/Textures/Interface/NavMap/beveled_rectangle_north_south.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/NavMap/beveled_rectangle_north_south.png.yml +++ b/Resources/Textures/Interface/NavMap/beveled_rectangle_north_south.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/NavMap/beveled_square.png.yml b/Resources/Textures/Interface/NavMap/beveled_square.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/NavMap/beveled_square.png.yml +++ b/Resources/Textures/Interface/NavMap/beveled_square.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/NavMap/beveled_star.png.yml b/Resources/Textures/Interface/NavMap/beveled_star.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/NavMap/beveled_star.png.yml +++ b/Resources/Textures/Interface/NavMap/beveled_star.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/NavMap/beveled_triangle.png.yml b/Resources/Textures/Interface/NavMap/beveled_triangle.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/NavMap/beveled_triangle.png.yml +++ b/Resources/Textures/Interface/NavMap/beveled_triangle.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/NavMap/ring.yml b/Resources/Textures/Interface/NavMap/ring.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/NavMap/ring.yml +++ b/Resources/Textures/Interface/NavMap/ring.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/NavMap/ring_filled.yml b/Resources/Textures/Interface/NavMap/ring_filled.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/NavMap/ring_filled.yml +++ b/Resources/Textures/Interface/NavMap/ring_filled.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/VerbIcons/die.svg.192dpi.png.yml b/Resources/Textures/Interface/VerbIcons/die.svg.192dpi.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/VerbIcons/die.svg.192dpi.png.yml +++ b/Resources/Textures/Interface/VerbIcons/die.svg.192dpi.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/character.svg.192dpi.png.yml b/Resources/Textures/Interface/character.svg.192dpi.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/character.svg.192dpi.png.yml +++ b/Resources/Textures/Interface/character.svg.192dpi.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/emotes.svg.192dpi.png.yml b/Resources/Textures/Interface/emotes.svg.192dpi.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/emotes.svg.192dpi.png.yml +++ b/Resources/Textures/Interface/emotes.svg.192dpi.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/examine-star.png.yml b/Resources/Textures/Interface/examine-star.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/examine-star.png.yml +++ b/Resources/Textures/Interface/examine-star.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/fist.svg.192dpi.png.yml b/Resources/Textures/Interface/fist.svg.192dpi.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/fist.svg.192dpi.png.yml +++ b/Resources/Textures/Interface/fist.svg.192dpi.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/gavel.svg.192dpi.png.yml b/Resources/Textures/Interface/gavel.svg.192dpi.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/gavel.svg.192dpi.png.yml +++ b/Resources/Textures/Interface/gavel.svg.192dpi.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/hamburger.svg.192dpi.png.yml b/Resources/Textures/Interface/hamburger.svg.192dpi.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/hamburger.svg.192dpi.png.yml +++ b/Resources/Textures/Interface/hamburger.svg.192dpi.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/hammer.svg.192dpi.png.yml b/Resources/Textures/Interface/hammer.svg.192dpi.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/hammer.svg.192dpi.png.yml +++ b/Resources/Textures/Interface/hammer.svg.192dpi.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/hammer_sca;ed.svg.192dpi.png.yml b/Resources/Textures/Interface/hammer_sca;ed.svg.192dpi.png.yml deleted file mode 100644 index e1f62434bc..0000000000 --- a/Resources/Textures/Interface/hammer_sca;ed.svg.192dpi.png.yml +++ /dev/null @@ -1,3 +0,0 @@ -#this is just a copy of hammer.svg, but scaled and adjusted slightly so that it can be used as a right-click context menu icon. -sample: - filter: true diff --git a/Resources/Textures/Interface/hammer_scaled.svg.192dpi.png.yml b/Resources/Textures/Interface/hammer_scaled.svg.192dpi.png.yml new file mode 100644 index 0000000000..53911adcf6 --- /dev/null +++ b/Resources/Textures/Interface/hammer_scaled.svg.192dpi.png.yml @@ -0,0 +1,3 @@ +#this is just a copy of hammer.svg, but scaled and adjusted slightly so that it can be used as a right-click context menu icon. +sample: + filter: true diff --git a/Resources/Textures/Interface/handsbox.png.yml b/Resources/Textures/Interface/handsbox.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/handsbox.png.yml +++ b/Resources/Textures/Interface/handsbox.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/info.svg.192dpi.png.yml b/Resources/Textures/Interface/info.svg.192dpi.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/info.svg.192dpi.png.yml +++ b/Resources/Textures/Interface/info.svg.192dpi.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/inventory.svg.192dpi.png.yml b/Resources/Textures/Interface/inventory.svg.192dpi.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/inventory.svg.192dpi.png.yml +++ b/Resources/Textures/Interface/inventory.svg.192dpi.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/pray.svg.png.yml b/Resources/Textures/Interface/pray.svg.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/pray.svg.png.yml +++ b/Resources/Textures/Interface/pray.svg.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/sandbox.svg.192dpi.png.yml b/Resources/Textures/Interface/sandbox.svg.192dpi.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/sandbox.svg.192dpi.png.yml +++ b/Resources/Textures/Interface/sandbox.svg.192dpi.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/students-cap.svg.192dpi.png.yml b/Resources/Textures/Interface/students-cap.svg.192dpi.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/students-cap.svg.192dpi.png.yml +++ b/Resources/Textures/Interface/students-cap.svg.192dpi.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/target-doll-high.svg.192dpi.png.yml b/Resources/Textures/Interface/target-doll-high.svg.192dpi.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/target-doll-high.svg.192dpi.png.yml +++ b/Resources/Textures/Interface/target-doll-high.svg.192dpi.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/target-doll-high.svg.96dpi.png.yml b/Resources/Textures/Interface/target-doll-high.svg.96dpi.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/target-doll-high.svg.96dpi.png.yml +++ b/Resources/Textures/Interface/target-doll-high.svg.96dpi.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/target-doll-low.svg.192dpi.png.yml b/Resources/Textures/Interface/target-doll-low.svg.192dpi.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/target-doll-low.svg.192dpi.png.yml +++ b/Resources/Textures/Interface/target-doll-low.svg.192dpi.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/target-doll-low.svg.96dpi.png.yml b/Resources/Textures/Interface/target-doll-low.svg.96dpi.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/target-doll-low.svg.96dpi.png.yml +++ b/Resources/Textures/Interface/target-doll-low.svg.96dpi.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/target-doll-middle.svg.192dpi.png.yml b/Resources/Textures/Interface/target-doll-middle.svg.192dpi.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/target-doll-middle.svg.192dpi.png.yml +++ b/Resources/Textures/Interface/target-doll-middle.svg.192dpi.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/target-doll-middle.svg.96dpi.png.yml b/Resources/Textures/Interface/target-doll-middle.svg.96dpi.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/target-doll-middle.svg.96dpi.png.yml +++ b/Resources/Textures/Interface/target-doll-middle.svg.96dpi.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Interface/target-doll.svg.192dpi.png.yml b/Resources/Textures/Interface/target-doll.svg.192dpi.png.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/Interface/target-doll.svg.192dpi.png.yml +++ b/Resources/Textures/Interface/target-doll.svg.192dpi.png.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/LobbyScreens/doomed.webp.yml b/Resources/Textures/LobbyScreens/doomed.webp.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/LobbyScreens/doomed.webp.yml +++ b/Resources/Textures/LobbyScreens/doomed.webp.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/LobbyScreens/janishootout.webp.yml b/Resources/Textures/LobbyScreens/janishootout.webp.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/LobbyScreens/janishootout.webp.yml +++ b/Resources/Textures/LobbyScreens/janishootout.webp.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/LobbyScreens/reclaimer-nuke.webp.yml b/Resources/Textures/LobbyScreens/reclaimer-nuke.webp.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/LobbyScreens/reclaimer-nuke.webp.yml +++ b/Resources/Textures/LobbyScreens/reclaimer-nuke.webp.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/LobbyScreens/skellyvstherev.webp.yml b/Resources/Textures/LobbyScreens/skellyvstherev.webp.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/LobbyScreens/skellyvstherev.webp.yml +++ b/Resources/Textures/LobbyScreens/skellyvstherev.webp.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/LobbyScreens/ssxiv.webp.yml b/Resources/Textures/LobbyScreens/ssxiv.webp.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/LobbyScreens/ssxiv.webp.yml +++ b/Resources/Textures/LobbyScreens/ssxiv.webp.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/LobbyScreens/susstation.webp.yml b/Resources/Textures/LobbyScreens/susstation.webp.yml index dabd6601f7..5c43e23305 100644 --- a/Resources/Textures/LobbyScreens/susstation.webp.yml +++ b/Resources/Textures/LobbyScreens/susstation.webp.yml @@ -1,2 +1,2 @@ -sample: +sample: filter: true diff --git a/Resources/Textures/Logo/logo.png.yml b/Resources/Textures/Logo/logo.png.yml index 497c6beff9..5c43e23305 100644 --- a/Resources/Textures/Logo/logo.png.yml +++ b/Resources/Textures/Logo/logo.png.yml @@ -1,2 +1,2 @@ sample: - filter: true \ No newline at end of file + filter: true diff --git a/Resources/Textures/Mobs/Aliens/Asteroid/goliath.rsi/meta.json b/Resources/Textures/Mobs/Aliens/Asteroid/goliath.rsi/meta.json index b9d3f2bd7f..062ec6a91c 100644 --- a/Resources/Textures/Mobs/Aliens/Asteroid/goliath.rsi/meta.json +++ b/Resources/Textures/Mobs/Aliens/Asteroid/goliath.rsi/meta.json @@ -108,4 +108,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/meta.json b/Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/meta.json index b11726cf73..f941898aaa 100644 --- a/Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/meta.json +++ b/Resources/Textures/Mobs/Aliens/Asteroid/hivelord.rsi/meta.json @@ -71,4 +71,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Mobs/Aliens/Carps/dragon.rsi/meta.json b/Resources/Textures/Mobs/Aliens/Carps/dragon.rsi/meta.json index edb9eb8cfe..b8cadf1504 100644 --- a/Resources/Textures/Mobs/Aliens/Carps/dragon.rsi/meta.json +++ b/Resources/Textures/Mobs/Aliens/Carps/dragon.rsi/meta.json @@ -80,4 +80,4 @@ "name": "dead-unshaded" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Mobs/Aliens/Lavaland/watcher.rsi/meta.json b/Resources/Textures/Mobs/Aliens/Lavaland/watcher.rsi/meta.json index 20360f4df2..43e3bd4f2d 100644 --- a/Resources/Textures/Mobs/Aliens/Lavaland/watcher.rsi/meta.json +++ b/Resources/Textures/Mobs/Aliens/Lavaland/watcher.rsi/meta.json @@ -22,4 +22,4 @@ "name": "dead-unshaded" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Mobs/Aliens/Xenos/drone.rsi/meta.json b/Resources/Textures/Mobs/Aliens/Xenos/drone.rsi/meta.json index d175e4aa89..97f6e5ea4f 100644 --- a/Resources/Textures/Mobs/Aliens/Xenos/drone.rsi/meta.json +++ b/Resources/Textures/Mobs/Aliens/Xenos/drone.rsi/meta.json @@ -21,4 +21,4 @@ "name": "dead" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Mobs/Aliens/Xenos/praetorian.rsi/meta.json b/Resources/Textures/Mobs/Aliens/Xenos/praetorian.rsi/meta.json index e9f98745bc..911fe93a33 100644 --- a/Resources/Textures/Mobs/Aliens/Xenos/praetorian.rsi/meta.json +++ b/Resources/Textures/Mobs/Aliens/Xenos/praetorian.rsi/meta.json @@ -21,4 +21,4 @@ "name": "dead" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Mobs/Aliens/Xenos/queen.rsi/meta.json b/Resources/Textures/Mobs/Aliens/Xenos/queen.rsi/meta.json index 19161ee8fa..b2aa0168fb 100644 --- a/Resources/Textures/Mobs/Aliens/Xenos/queen.rsi/meta.json +++ b/Resources/Textures/Mobs/Aliens/Xenos/queen.rsi/meta.json @@ -21,4 +21,4 @@ "name": "dead" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Mobs/Aliens/Xenos/ravager.rsi/meta.json b/Resources/Textures/Mobs/Aliens/Xenos/ravager.rsi/meta.json index 19161ee8fa..b2aa0168fb 100644 --- a/Resources/Textures/Mobs/Aliens/Xenos/ravager.rsi/meta.json +++ b/Resources/Textures/Mobs/Aliens/Xenos/ravager.rsi/meta.json @@ -21,4 +21,4 @@ "name": "dead" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Mobs/Aliens/Xenos/runner.rsi/meta.json b/Resources/Textures/Mobs/Aliens/Xenos/runner.rsi/meta.json index 19161ee8fa..b2aa0168fb 100644 --- a/Resources/Textures/Mobs/Aliens/Xenos/runner.rsi/meta.json +++ b/Resources/Textures/Mobs/Aliens/Xenos/runner.rsi/meta.json @@ -21,4 +21,4 @@ "name": "dead" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Mobs/Aliens/Xenos/spitter.rsi/meta.json b/Resources/Textures/Mobs/Aliens/Xenos/spitter.rsi/meta.json index d175e4aa89..97f6e5ea4f 100644 --- a/Resources/Textures/Mobs/Aliens/Xenos/spitter.rsi/meta.json +++ b/Resources/Textures/Mobs/Aliens/Xenos/spitter.rsi/meta.json @@ -21,4 +21,4 @@ "name": "dead" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Mobs/Animals/kangaroo.rsi/meta.json b/Resources/Textures/Mobs/Animals/kangaroo.rsi/meta.json index 494d330032..4d047b90a0 100644 --- a/Resources/Textures/Mobs/Animals/kangaroo.rsi/meta.json +++ b/Resources/Textures/Mobs/Animals/kangaroo.rsi/meta.json @@ -58,4 +58,4 @@ "name": "kangaroo-space-dead" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Mobs/Animals/nymph.rsi/meta.json b/Resources/Textures/Mobs/Animals/nymph.rsi/meta.json index c6bb6e0ac4..c472c52381 100644 --- a/Resources/Textures/Mobs/Animals/nymph.rsi/meta.json +++ b/Resources/Textures/Mobs/Animals/nymph.rsi/meta.json @@ -60,4 +60,4 @@ "name": "icon" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Mobs/Animals/possum_old.rsi/meta.json b/Resources/Textures/Mobs/Animals/possum_old.rsi/meta.json index c0a3b63bfd..9228d9f3f6 100644 --- a/Resources/Textures/Mobs/Animals/possum_old.rsi/meta.json +++ b/Resources/Textures/Mobs/Animals/possum_old.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-NC-SA-3.0", "copyright": "Taken from goonstation https://github.com/goonstation/goonstation/commit/c98666f47a90d106c7a154cedffc747b3769e933", diff --git a/Resources/Textures/Mobs/Animals/slug.rsi/meta.json b/Resources/Textures/Mobs/Animals/slug.rsi/meta.json index 103f08be90..e162320ca5 100644 --- a/Resources/Textures/Mobs/Animals/slug.rsi/meta.json +++ b/Resources/Textures/Mobs/Animals/slug.rsi/meta.json @@ -15,4 +15,4 @@ "name": "dead" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Mobs/Animals/snail.rsi/meta.json b/Resources/Textures/Mobs/Animals/snail.rsi/meta.json index ca42ca9eed..ac4b025e54 100644 --- a/Resources/Textures/Mobs/Animals/snail.rsi/meta.json +++ b/Resources/Textures/Mobs/Animals/snail.rsi/meta.json @@ -29,4 +29,4 @@ "name": "snothdead" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Mobs/Customization/Moth/moth_parts.rsi/meta.json b/Resources/Textures/Mobs/Customization/Moth/moth_parts.rsi/meta.json index 58b5aa5553..27b9e9d5b7 100644 --- a/Resources/Textures/Mobs/Customization/Moth/moth_parts.rsi/meta.json +++ b/Resources/Textures/Mobs/Customization/Moth/moth_parts.rsi/meta.json @@ -320,4 +320,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Mobs/Customization/human_facial_hair.rsi/meta.json b/Resources/Textures/Mobs/Customization/human_facial_hair.rsi/meta.json index 45fee3e085..fce5ae7b93 100644 --- a/Resources/Textures/Mobs/Customization/human_facial_hair.rsi/meta.json +++ b/Resources/Textures/Mobs/Customization/human_facial_hair.rsi/meta.json @@ -1 +1 @@ -{"version":1,"size":{"x":32,"y":32},"copyright":"Taken from https://github.com/tgstation/tgstation/blob/05ec94e46349c35e29ca91e5e97d0c88ae26ad44/icons/mob/species/human/human_face.dmi","license":"CC-BY-SA-3.0","states":[{"name":"3oclock","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"5oclockmoustache","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"7oclock","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"7oclockmoustache","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"abe","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"brokenman","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"chaplin","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"chin","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"chinlessbeard","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"croppedfullbeard","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"dorsalfnil","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"dwarf","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"elvis","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"fiveoclock","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"fullbeard","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"fumanchu","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"gt","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"hip","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"hogan","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"jensen","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"longbeard","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"longbeard_l","delays":[[1.0]]},{"name":"martialartist","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"moonshiner","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"moustache","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"mutton","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"muttonmus","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"neckbeard","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"pencilstache","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"selleck","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"sideburn","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"smallstache","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"vandyke","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"volaju","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"walrus","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"watson","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"wise","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"shaved","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]}]} \ No newline at end of file +{"version":1,"size":{"x":32,"y":32},"copyright":"Taken from https://github.com/tgstation/tgstation/blob/05ec94e46349c35e29ca91e5e97d0c88ae26ad44/icons/mob/species/human/human_face.dmi","license":"CC-BY-SA-3.0","states":[{"name":"3oclock","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"5oclockmoustache","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"7oclock","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"7oclockmoustache","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"abe","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"brokenman","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"chaplin","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"chin","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"chinlessbeard","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"croppedfullbeard","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"dorsalfnil","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"dwarf","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"elvis","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"fiveoclock","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"fullbeard","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"fumanchu","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"gt","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"hip","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"hogan","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"jensen","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"longbeard","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"longbeard_l","delays":[[1.0]]},{"name":"martialartist","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"moonshiner","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"moustache","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"mutton","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"muttonmus","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"neckbeard","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"pencilstache","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"selleck","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"sideburn","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"smallstache","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"vandyke","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"volaju","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"walrus","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"watson","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"wise","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]},{"name":"shaved","directions":4,"delays":[[1.0],[1.0],[1.0],[1.0]]}]} diff --git a/Resources/Textures/Mobs/Customization/undergarments.rsi/meta.json b/Resources/Textures/Mobs/Customization/undergarments.rsi/meta.json index d41a500803..11e5bcec8a 100644 --- a/Resources/Textures/Mobs/Customization/undergarments.rsi/meta.json +++ b/Resources/Textures/Mobs/Customization/undergarments.rsi/meta.json @@ -104,4 +104,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/meta.json b/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/meta.json index 3516e2cbe6..1739d08d4c 100644 --- a/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/meta.json +++ b/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/meta.json @@ -36,4 +36,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Mobs/Customization/vox_scars.rsi/meta.json b/Resources/Textures/Mobs/Customization/vox_scars.rsi/meta.json index 7e74ffb8b6..4dbf5e0994 100644 --- a/Resources/Textures/Mobs/Customization/vox_scars.rsi/meta.json +++ b/Resources/Textures/Mobs/Customization/vox_scars.rsi/meta.json @@ -56,4 +56,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Mobs/Customization/vox_tattoos.rsi/meta.json b/Resources/Textures/Mobs/Customization/vox_tattoos.rsi/meta.json index 5e6df07fe2..de173e6a65 100644 --- a/Resources/Textures/Mobs/Customization/vox_tattoos.rsi/meta.json +++ b/Resources/Textures/Mobs/Customization/vox_tattoos.rsi/meta.json @@ -104,4 +104,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Mobs/Demons/abomination.rsi/meta.json b/Resources/Textures/Mobs/Demons/abomination.rsi/meta.json index d40e2c53fb..1850aa1bb4 100644 --- a/Resources/Textures/Mobs/Demons/abomination.rsi/meta.json +++ b/Resources/Textures/Mobs/Demons/abomination.rsi/meta.json @@ -15,4 +15,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Mobs/Demons/hellspawn.rsi/meta.json b/Resources/Textures/Mobs/Demons/hellspawn.rsi/meta.json index 060526ee3b..9004fc8c8b 100644 --- a/Resources/Textures/Mobs/Demons/hellspawn.rsi/meta.json +++ b/Resources/Textures/Mobs/Demons/hellspawn.rsi/meta.json @@ -15,4 +15,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Mobs/Pets/Smile/smile_displacement.rsi/meta.json b/Resources/Textures/Mobs/Pets/Smile/smile_displacement.rsi/meta.json index 1d2a84bf6d..a597028d8b 100644 --- a/Resources/Textures/Mobs/Pets/Smile/smile_displacement.rsi/meta.json +++ b/Resources/Textures/Mobs/Pets/Smile/smile_displacement.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "Head displacement made by zHonys", diff --git a/Resources/Textures/Mobs/Pets/breaddog.rsi/meta.json b/Resources/Textures/Mobs/Pets/breaddog.rsi/meta.json index 45d0190b0c..ba5f37c4ef 100644 --- a/Resources/Textures/Mobs/Pets/breaddog.rsi/meta.json +++ b/Resources/Textures/Mobs/Pets/breaddog.rsi/meta.json @@ -18,4 +18,4 @@ "directions": 1 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Mobs/Silicon/onestar.rsi/meta.json b/Resources/Textures/Mobs/Silicon/onestar.rsi/meta.json index 088492c49f..dc41fdedd2 100644 --- a/Resources/Textures/Mobs/Silicon/onestar.rsi/meta.json +++ b/Resources/Textures/Mobs/Silicon/onestar.rsi/meta.json @@ -190,4 +190,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Mobs/Silicon/output.rsi/meta.json b/Resources/Textures/Mobs/Silicon/output.rsi/meta.json index a40ed37c60..35de328fe0 100644 --- a/Resources/Textures/Mobs/Silicon/output.rsi/meta.json +++ b/Resources/Textures/Mobs/Silicon/output.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/blob/2a19963297f91efb452dbb5c1d4eb28a14776b0a/icons/mob/silicon/ai.dmi", "states": [{"name": "ai", "directions": 1, "delays": [[0.2, 0.2, 0.2, 0.1, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.1]]}, {"name": "ai-banned", "directions": 1, "delays": [[0.7, 0.7, 0.7, 0.7, 0.7, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7]]}, {"name": "ai-banned-unshaded", "directions": 1, "delays": [[0.7, 0.7, 0.7, 0.7, 0.7, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7]]}, {"name": "ai-banned_dead", "directions": 1, "delays": [[0.7, 0.7]]}, {"name": "ai-banned_dead-unshaded", "directions": 1, "delays": [[0.7, 0.7]]}, {"name": "ai-empty", "directions": 1, "delays": [[0.7, 0.7]]}, {"name": "ai-empty-unshaded", "directions": 1, "delays": [[0.7, 0.7]]}, {"name": "ai-holo-old", "directions": 4, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "ai-holo-old-unshaded", "directions": 4, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "ai-unshaded", "directions": 1, "delays": [[0.2, 0.2, 0.2, 0.1, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.1]]}, {"name": "ai_dead", "directions": 1, "delays": [[1.0]]}, {"name": "ai_dead-unshaded", "directions": 1, "delays": [[1.0]]}, {"name": "default", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "default-unshaded", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "floating_face", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "floating_face-unshaded", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "horror", "directions": 1, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "horror-unshaded", "directions": 1, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "xeno_queen", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "xeno_queen-unshaded", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/blob/2a19963297f91efb452dbb5c1d4eb28a14776b0a/icons/mob/silicon/ai.dmi", "states": [{"name": "ai", "directions": 1, "delays": [[0.2, 0.2, 0.2, 0.1, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.1]]}, {"name": "ai-banned", "directions": 1, "delays": [[0.7, 0.7, 0.7, 0.7, 0.7, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7]]}, {"name": "ai-banned-unshaded", "directions": 1, "delays": [[0.7, 0.7, 0.7, 0.7, 0.7, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7]]}, {"name": "ai-banned_dead", "directions": 1, "delays": [[0.7, 0.7]]}, {"name": "ai-banned_dead-unshaded", "directions": 1, "delays": [[0.7, 0.7]]}, {"name": "ai-empty", "directions": 1, "delays": [[0.7, 0.7]]}, {"name": "ai-empty-unshaded", "directions": 1, "delays": [[0.7, 0.7]]}, {"name": "ai-holo-old", "directions": 4, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "ai-holo-old-unshaded", "directions": 4, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "ai-unshaded", "directions": 1, "delays": [[0.2, 0.2, 0.2, 0.1, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.1]]}, {"name": "ai_dead", "directions": 1, "delays": [[1.0]]}, {"name": "ai_dead-unshaded", "directions": 1, "delays": [[1.0]]}, {"name": "default", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "default-unshaded", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "floating_face", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "floating_face-unshaded", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "horror", "directions": 1, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "horror-unshaded", "directions": 1, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "xeno_queen", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "xeno_queen-unshaded", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}]} diff --git a/Resources/Textures/Mobs/Species/Human/displacement.rsi/meta.json b/Resources/Textures/Mobs/Species/Human/displacement.rsi/meta.json index d4d637bd08..9ab500bb91 100644 --- a/Resources/Textures/Mobs/Species/Human/displacement.rsi/meta.json +++ b/Resources/Textures/Mobs/Species/Human/displacement.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "jumpsuit-female made by TheShuEd, dwarfism sprites made by SlamBamActionman (Github)", diff --git a/Resources/Textures/Mobs/Species/Moth/displacement.rsi/meta.json b/Resources/Textures/Mobs/Species/Moth/displacement.rsi/meta.json index 464ae7b119..4816819c40 100644 --- a/Resources/Textures/Mobs/Species/Moth/displacement.rsi/meta.json +++ b/Resources/Textures/Mobs/Species/Moth/displacement.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-4.0", "copyright": "Made by Flareguy for Space Station 14", diff --git a/Resources/Textures/Mobs/Species/Moth/parts.rsi/meta.json b/Resources/Textures/Mobs/Species/Moth/parts.rsi/meta.json index 4e15818415..a103f0d521 100644 --- a/Resources/Textures/Mobs/Species/Moth/parts.rsi/meta.json +++ b/Resources/Textures/Mobs/Species/Moth/parts.rsi/meta.json @@ -59,4 +59,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Mobs/Species/Vox/displacement.rsi/meta.json b/Resources/Textures/Mobs/Species/Vox/displacement.rsi/meta.json index e46ca56024..08e9aac56d 100644 --- a/Resources/Textures/Mobs/Species/Vox/displacement.rsi/meta.json +++ b/Resources/Textures/Mobs/Species/Vox/displacement.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "jumpsuit state made by PJB3005. back, hand, head, and eyes states made by Flareguy, ears, hand_l, hand_r, hair and shoes made by TheShuEd", diff --git a/Resources/Textures/Mobs/Species/Vulpkanin/displacement.rsi/meta.json b/Resources/Textures/Mobs/Species/Vulpkanin/displacement.rsi/meta.json index dda72541d1..6225b082b2 100644 --- a/Resources/Textures/Mobs/Species/Vulpkanin/displacement.rsi/meta.json +++ b/Resources/Textures/Mobs/Species/Vulpkanin/displacement.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "FairlySadPanda (Discord/Github)", diff --git a/Resources/Textures/Objects/Consumable/Drinks/(mdr)grapejuice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/(mdr)grapejuice.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/(mdr)grapejuice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/(mdr)grapejuice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/banana.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/banana.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/banana.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/banana.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/bigteacup.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/bigteacup.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/bigteacup.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/bigteacup.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/britmug.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/britmug.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/britmug.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/britmug.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/broken.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/broken.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/broken.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/broken.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/brownstar.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/brownstar.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/brownstar.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/brownstar.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/carrotjuice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/carrotjuice.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/carrotjuice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/carrotjuice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/chocolateglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/chocolateglass.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/chocolateglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/chocolateglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/cup.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/cup.rsi/meta.json index 80ac521b6f..7c719f160d 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/cup.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/cup.rsi/meta.json @@ -14,4 +14,4 @@ "name": "icon-1" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Consumable/Drinks/erikasurprise.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/erikasurprise.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/erikasurprise.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/erikasurprise.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/glass_brown.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/glass_brown.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/glass_brown.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/glass_brown.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/glass_brown2.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/glass_brown2.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/glass_brown2.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/glass_brown2.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/glass_coupe_shape.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/glass_coupe_shape.rsi/meta.json index 90a92542fd..a933667ab2 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/glass_coupe_shape.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/glass_coupe_shape.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-NC-SA-4.0", "copyright": "Created by github user moonheart08.", diff --git a/Resources/Textures/Objects/Consumable/Drinks/glass_light_yellow.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/glass_light_yellow.rsi/meta.json index 93be08a545..416c7b5fe7 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/glass_light_yellow.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/glass_light_yellow.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi, modified by lapatison", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi, modified by lapatison", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/glass_orange.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/glass_orange.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/glass_orange.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/glass_orange.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/glass_red.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/glass_red.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/glass_red.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/glass_red.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/glass_white.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/glass_white.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/glass_white.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/glass_white.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/glass_yellow.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/glass_yellow.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/glass_yellow.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/glass_yellow.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/grapejuice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/grapejuice.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/grapejuice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/grapejuice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/grapesoda.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/grapesoda.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/grapesoda.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/grapesoda.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/grogglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/grogglass.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/grogglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/grogglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/gsodaglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/gsodaglass.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/gsodaglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/gsodaglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/jar_what.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/jar_what.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/jar_what.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/jar_what.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/lemonade.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/lemonade.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/lemonade.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/lemonade.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/lemonglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/lemonglass.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/lemonglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/lemonglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/lemonlime.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/lemonlime.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/lemonlime.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/lemonlime.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/meadglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/meadglass.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/meadglass.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/meadglass.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/nothing.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/nothing.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/nothing.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/nothing.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/poisonberryjuice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/poisonberryjuice.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/poisonberryjuice.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/poisonberryjuice.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/shake-blue.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/shake-blue.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/shake-blue.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/shake-blue.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/shake-empty.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/shake-empty.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/shake-empty.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/shake-empty.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/shake-meat.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/shake-meat.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/shake-meat.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/shake-meat.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/shake-robo.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/shake-robo.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/shake-robo.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/shake-robo.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/shake-white.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/shake-white.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/shake-white.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/shake-white.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/teapot.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/teapot.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/teapot.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/teapot.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/watermelon.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/watermelon.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/watermelon.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/watermelon.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/whiskeysodaglass2.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/whiskeysodaglass2.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/whiskeysodaglass2.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/whiskeysodaglass2.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Consumable/Drinks/zombiecocktail.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/zombiecocktail.rsi/meta.json index b95ee96c6d..f9d48915fa 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/zombiecocktail.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/zombiecocktail.rsi/meta.json @@ -28,4 +28,4 @@ "name": "fill-4" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Cartons/black.rsi/meta.json b/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Cartons/black.rsi/meta.json index fb6ce03e39..1afc0df758 100644 --- a/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Cartons/black.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Cartons/black.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "Made by ps3moira (github)", diff --git a/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Cartons/blue.rsi/meta.json b/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Cartons/blue.rsi/meta.json index fb6ce03e39..1afc0df758 100644 --- a/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Cartons/blue.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Cartons/blue.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "Made by ps3moira (github)", diff --git a/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Cartons/green.rsi/meta.json b/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Cartons/green.rsi/meta.json index fb6ce03e39..1afc0df758 100644 --- a/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Cartons/green.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Cartons/green.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "Made by ps3moira (github)", diff --git a/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Cartons/red.rsi/meta.json b/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Cartons/red.rsi/meta.json index fb6ce03e39..1afc0df758 100644 --- a/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Cartons/red.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Cartons/red.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "Made by ps3moira (github)", diff --git a/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Packs/black.rsi/meta.json b/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Packs/black.rsi/meta.json index eadeef0774..6b70636a07 100644 --- a/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Packs/black.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Packs/black.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "Made by ps3moira (github)", diff --git a/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Packs/blue.rsi/meta.json b/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Packs/blue.rsi/meta.json index eadeef0774..6b70636a07 100644 --- a/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Packs/blue.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Packs/blue.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "Made by ps3moira (github)", diff --git a/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Packs/green.rsi/meta.json b/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Packs/green.rsi/meta.json index eadeef0774..6b70636a07 100644 --- a/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Packs/green.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Packs/green.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "Made by ps3moira (github)", diff --git a/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Packs/mixed.rsi/meta.json b/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Packs/mixed.rsi/meta.json index eadeef0774..6b70636a07 100644 --- a/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Packs/mixed.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Packs/mixed.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "Made by ps3moira (github)", diff --git a/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Packs/red.rsi/meta.json b/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Packs/red.rsi/meta.json index eadeef0774..6b70636a07 100644 --- a/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Packs/red.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Packs/red.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "Made by ps3moira (github)", diff --git a/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Packs/visualizer.rsi/meta.json b/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Packs/visualizer.rsi/meta.json index d5fe85aa8f..232f5339b7 100644 --- a/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Packs/visualizer.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/Packs/visualizer.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "Made by ps3moira (github)", diff --git a/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/cigarette.rsi/meta.json b/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/cigarette.rsi/meta.json index ceed850f7c..4305ab23b5 100644 --- a/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/cigarette.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/cigarette.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/bfc9c6ba8126ee8c41564d68c4bfb9ce37faa8f8 | vulpkanin version taken from Paradise station at https://github.com/ParadiseSS13/Paradise/commit/f0fa4e1fd809482fbc104a310aa34cebf7df157d | vox version made by Kittygyat", diff --git a/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/paper.rsi/meta.json b/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/paper.rsi/meta.json index 78d7b18b89..ec11a1e87a 100644 --- a/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/paper.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/paper.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/bfc9c6ba8126ee8c41564d68c4bfb9ce37faa8f8", diff --git a/Resources/Textures/Objects/Consumable/Smokeables/Cigars/case.rsi/meta.json b/Resources/Textures/Objects/Consumable/Smokeables/Cigars/case.rsi/meta.json index 4e24b483e6..4f378508cf 100644 --- a/Resources/Textures/Objects/Consumable/Smokeables/Cigars/case.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Smokeables/Cigars/case.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "Taken from cev-eris at commit https://github.com/discordia-space/CEV-Eris/commit/f18aa05685f13c8b424867e4219a1e727019c026", diff --git a/Resources/Textures/Objects/Consumable/Smokeables/Cigars/cigar-gold.rsi/meta.json b/Resources/Textures/Objects/Consumable/Smokeables/Cigars/cigar-gold.rsi/meta.json index 50aa75e5f8..573b5fd367 100644 --- a/Resources/Textures/Objects/Consumable/Smokeables/Cigars/cigar-gold.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Smokeables/Cigars/cigar-gold.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/bfc9c6ba8126ee8c41564d68c4bfb9ce37faa8f8. lit-equipped-MASK-vox & unlit-equipped-MASK-vox states taken from /vg/station at commit https://github.com/vgstation-coders/vgstation13/commit/4638130fab5ff0e9faa220688811349d3297a33e | vulpkanin version taken from Paradise station at https://github.com/ParadiseSS13/Paradise/commit/f0fa4e1fd809482fbc104a310aa34cebf7df157d", diff --git a/Resources/Textures/Objects/Consumable/Smokeables/Cigars/cigar.rsi/meta.json b/Resources/Textures/Objects/Consumable/Smokeables/Cigars/cigar.rsi/meta.json index 50aa75e5f8..573b5fd367 100644 --- a/Resources/Textures/Objects/Consumable/Smokeables/Cigars/cigar.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Smokeables/Cigars/cigar.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/bfc9c6ba8126ee8c41564d68c4bfb9ce37faa8f8. lit-equipped-MASK-vox & unlit-equipped-MASK-vox states taken from /vg/station at commit https://github.com/vgstation-coders/vgstation13/commit/4638130fab5ff0e9faa220688811349d3297a33e | vulpkanin version taken from Paradise station at https://github.com/ParadiseSS13/Paradise/commit/f0fa4e1fd809482fbc104a310aa34cebf7df157d", diff --git a/Resources/Textures/Objects/Consumable/Smokeables/Pipes/crack.rsi/meta.json b/Resources/Textures/Objects/Consumable/Smokeables/Pipes/crack.rsi/meta.json index a7420e3c72..770733e75a 100644 --- a/Resources/Textures/Objects/Consumable/Smokeables/Pipes/crack.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Smokeables/Pipes/crack.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/bfc9c6ba8126ee8c41564d68c4bfb9ce37faa8f8", diff --git a/Resources/Textures/Objects/Consumable/Smokeables/Pipes/pipe.rsi/meta.json b/Resources/Textures/Objects/Consumable/Smokeables/Pipes/pipe.rsi/meta.json index 0d4fd176a0..f0b0300469 100644 --- a/Resources/Textures/Objects/Consumable/Smokeables/Pipes/pipe.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Smokeables/Pipes/pipe.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/bfc9c6ba8126ee8c41564d68c4bfb9ce37faa8f8 | vulpkanin version taken from Paradise station at https://github.com/ParadiseSS13/Paradise/commit/f0fa4e1fd809482fbc104a310aa34cebf7df157d", diff --git a/Resources/Textures/Objects/Decoration/Flora/flora_treeslight.rsi/meta.json b/Resources/Textures/Objects/Decoration/Flora/flora_treeslight.rsi/meta.json index 4820db2c63..d9fb1ce275 100644 --- a/Resources/Textures/Objects/Decoration/Flora/flora_treeslight.rsi/meta.json +++ b/Resources/Textures/Objects/Decoration/Flora/flora_treeslight.rsi/meta.json @@ -26,4 +26,4 @@ "name": "tree06" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Devices/goldwatch.rsi/meta.json b/Resources/Textures/Objects/Devices/goldwatch.rsi/meta.json index 6466438b53..66b91fb3d3 100644 --- a/Resources/Textures/Objects/Devices/goldwatch.rsi/meta.json +++ b/Resources/Textures/Objects/Devices/goldwatch.rsi/meta.json @@ -95,4 +95,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Devices/output.rsi/meta.json b/Resources/Textures/Objects/Devices/output.rsi/meta.json index 500ecb8e3e..17be0b3225 100644 --- a/Resources/Textures/Objects/Devices/output.rsi/meta.json +++ b/Resources/Textures/Objects/Devices/output.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/blob/1feffb747a33434a9d28450fc52ade75253aeba5/icons/obj/aicards.dmi", "states": [{"name": "aicard", "directions": 1, "delays": [[0.4, 0.4]]}, {"name": "aicard-full", "directions": 1, "delays": [[0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4]]}, {"name": "aicard-full-unshaded", "directions": 1, "delays": [[0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4]]}, {"name": "aicard-unshaded", "directions": 1, "delays": [[0.4, 0.4]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/blob/1feffb747a33434a9d28450fc52ade75253aeba5/icons/obj/aicards.dmi", "states": [{"name": "aicard", "directions": 1, "delays": [[0.4, 0.4]]}, {"name": "aicard-full", "directions": 1, "delays": [[0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4]]}, {"name": "aicard-full-unshaded", "directions": 1, "delays": [[0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4]]}, {"name": "aicard-unshaded", "directions": 1, "delays": [[0.4, 0.4]]}]} diff --git a/Resources/Textures/Objects/Devices/securityhandy.rsi/meta.json b/Resources/Textures/Objects/Devices/securityhandy.rsi/meta.json index 18a2d93272..2ff702f252 100644 --- a/Resources/Textures/Objects/Devices/securityhandy.rsi/meta.json +++ b/Resources/Textures/Objects/Devices/securityhandy.rsi/meta.json @@ -25,4 +25,4 @@ "name": "walkietalkie-on" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Devices/signaltrigger.rsi/meta.json b/Resources/Textures/Objects/Devices/signaltrigger.rsi/meta.json index 832264cdcf..2254d9a791 100644 --- a/Resources/Textures/Objects/Devices/signaltrigger.rsi/meta.json +++ b/Resources/Textures/Objects/Devices/signaltrigger.rsi/meta.json @@ -14,4 +14,4 @@ "directions": 1 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Devices/timer.rsi/meta.json b/Resources/Textures/Objects/Devices/timer.rsi/meta.json index acad76a3ed..3e26781903 100644 --- a/Resources/Textures/Objects/Devices/timer.rsi/meta.json +++ b/Resources/Textures/Objects/Devices/timer.rsi/meta.json @@ -14,4 +14,4 @@ "directions": 1 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Devices/voice.rsi/meta.json b/Resources/Textures/Objects/Devices/voice.rsi/meta.json index d4a4b57ddf..5910911a76 100644 --- a/Resources/Textures/Objects/Devices/voice.rsi/meta.json +++ b/Resources/Textures/Objects/Devices/voice.rsi/meta.json @@ -14,4 +14,4 @@ "directions": 1 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/grassbm.rsi/meta.json b/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/grassbm.rsi/meta.json index bf6c485d5d..da3403cf85 100644 --- a/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/grassbm.rsi/meta.json +++ b/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/grassbm.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "Original by Visne, Assembled by Just-a-Unity-Dev on GitHub or eclips_e#0001 (728101795427254312) on Discord, texture from https://github.com/discordia-space/CEV-Eris/commit/026ee3250ac1de938b503e3eb46ad73dd9c3ca82", diff --git a/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/grassbm_tabletop.rsi/meta.json b/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/grassbm_tabletop.rsi/meta.json index ad851cfb0d..6efaf7c2e1 100644 --- a/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/grassbm_tabletop.rsi/meta.json +++ b/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/grassbm_tabletop.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "Assembled by Just-a-Unity-Dev on GitHub or eclips_e#0001 (728101795427254312) on Discord, texture from https://github.com/discordia-space/CEV-Eris/commit/026ee3250ac1de938b503e3eb46ad73dd9c3ca82", diff --git a/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/moonbm.rsi/meta.json b/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/moonbm.rsi/meta.json index 825a83f3bc..2ef35dc30f 100644 --- a/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/moonbm.rsi/meta.json +++ b/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/moonbm.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "Original by Visne, Assembled by Just-a-Unity-Dev on GitHub or eclips_e#0001 (728101795427254312) on Discord, texture from https://github.com/vgstation-coders/vgstation13/tree/e4d3ea7f69d21c3667be12b114fa935c4640cb05", diff --git a/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/moonbm_tabletop.rsi/meta.json b/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/moonbm_tabletop.rsi/meta.json index b1b3151e71..cebd1672ca 100644 --- a/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/moonbm_tabletop.rsi/meta.json +++ b/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/moonbm_tabletop.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "Assembled by Just-a-Unity-Dev on GitHub or eclips_e#0001 (728101795427254312) on Discord, texture from https://github.com/vgstation-coders/vgstation13/tree/e4d3ea7f69d21c3667be12b114fa935c4640cb05", diff --git a/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/sandbm.rsi/meta.json b/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/sandbm.rsi/meta.json index bf6c485d5d..da3403cf85 100644 --- a/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/sandbm.rsi/meta.json +++ b/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/sandbm.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "Original by Visne, Assembled by Just-a-Unity-Dev on GitHub or eclips_e#0001 (728101795427254312) on Discord, texture from https://github.com/discordia-space/CEV-Eris/commit/026ee3250ac1de938b503e3eb46ad73dd9c3ca82", diff --git a/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/sandbm_tabletop.rsi/meta.json b/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/sandbm_tabletop.rsi/meta.json index ad851cfb0d..6efaf7c2e1 100644 --- a/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/sandbm_tabletop.rsi/meta.json +++ b/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/sandbm_tabletop.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "Assembled by Just-a-Unity-Dev on GitHub or eclips_e#0001 (728101795427254312) on Discord, texture from https://github.com/discordia-space/CEV-Eris/commit/026ee3250ac1de938b503e3eb46ad73dd9c3ca82", diff --git a/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/shipbm.rsi/meta.json b/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/shipbm.rsi/meta.json index 5f09a73f5b..ce977ce0dd 100644 --- a/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/shipbm.rsi/meta.json +++ b/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/shipbm.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "Original by Visne, Assembled by Just-a-Unity-Dev on GitHub or eclips_e#0001 (728101795427254312) on Discord, texture from https://opengameart.org/content/seamless-space-backgrounds", diff --git a/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/shipbm_tabletop.rsi/meta.json b/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/shipbm_tabletop.rsi/meta.json index f9fc6f4745..ffbfde9036 100644 --- a/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/shipbm_tabletop.rsi/meta.json +++ b/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/shipbm_tabletop.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "Assembled by Just-a-Unity-Dev on GitHub or eclips_e#0001 (728101795427254312) on Discord, parallax from https://opengameart.org/content/seamless-space-backgrounds", diff --git a/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/snowbm.rsi/meta.json b/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/snowbm.rsi/meta.json index 14bf32524b..1811c2f008 100644 --- a/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/snowbm.rsi/meta.json +++ b/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/snowbm.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "Original by Visne, Assembled by Just-a-Unity-Dev on GitHub or eclips_e#0001 (728101795427254312) on Discord, texture from https://github.com/tgstation/tgstation/tree/8abb19545828230d92ba18827feeb42a67a55d49", diff --git a/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/snowbm_tabletop.rsi/meta.json b/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/snowbm_tabletop.rsi/meta.json index 0b50ef920e..306b59e3e1 100644 --- a/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/snowbm_tabletop.rsi/meta.json +++ b/Resources/Textures/Objects/Fun/Tabletop/Battlemaps/snowbm_tabletop.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "Assembled by Just-a-Unity-Dev on GitHub or eclips_e#0001 (728101795427254312) on Discord, texture from https://github.com/tgstation/tgstation/tree/8abb19545828230d92ba18827feeb42a67a55d49", diff --git a/Resources/Textures/Objects/Fun/Tabletop/chessboard.rsi/meta.json b/Resources/Textures/Objects/Fun/Tabletop/chessboard.rsi/meta.json index 68fae6e2c2..7e5121f369 100644 --- a/Resources/Textures/Objects/Fun/Tabletop/chessboard.rsi/meta.json +++ b/Resources/Textures/Objects/Fun/Tabletop/chessboard.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "Visne", diff --git a/Resources/Textures/Objects/Fun/Tabletop/chessboard_tabletop.rsi/meta.json b/Resources/Textures/Objects/Fun/Tabletop/chessboard_tabletop.rsi/meta.json index 9b40a61dcb..8b98ad4649 100644 --- a/Resources/Textures/Objects/Fun/Tabletop/chessboard_tabletop.rsi/meta.json +++ b/Resources/Textures/Objects/Fun/Tabletop/chessboard_tabletop.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "Stanbery Trask#5343, Visne", diff --git a/Resources/Textures/Objects/Misc/broken_bottle.rsi/meta.json b/Resources/Textures/Objects/Misc/broken_bottle.rsi/meta.json index db0ac608ed..c3f85c4ad4 100644 --- a/Resources/Textures/Objects/Misc/broken_bottle.rsi/meta.json +++ b/Resources/Textures/Objects/Misc/broken_bottle.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} diff --git a/Resources/Textures/Objects/Misc/ensnare.rsi/meta.json b/Resources/Textures/Objects/Misc/ensnare.rsi/meta.json index 0cbe239515..d466a9b73b 100644 --- a/Resources/Textures/Objects/Misc/ensnare.rsi/meta.json +++ b/Resources/Textures/Objects/Misc/ensnare.rsi/meta.json @@ -12,4 +12,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Misc/ice_crust.rsi/meta.json b/Resources/Textures/Objects/Misc/ice_crust.rsi/meta.json index 865e457e9b..49552e082b 100644 --- a/Resources/Textures/Objects/Misc/ice_crust.rsi/meta.json +++ b/Resources/Textures/Objects/Misc/ice_crust.rsi/meta.json @@ -11,4 +11,4 @@ "name": "ice" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Misc/kudzu.rsi/meta.json b/Resources/Textures/Objects/Misc/kudzu.rsi/meta.json index 33d2647c68..e58b253ada 100644 --- a/Resources/Textures/Objects/Misc/kudzu.rsi/meta.json +++ b/Resources/Textures/Objects/Misc/kudzu.rsi/meta.json @@ -35,4 +35,4 @@ "name": "kudzu_11" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Misc/kudzuflower.rsi/meta.json b/Resources/Textures/Objects/Misc/kudzuflower.rsi/meta.json index b37660be1c..8ec0ca54d3 100644 --- a/Resources/Textures/Objects/Misc/kudzuflower.rsi/meta.json +++ b/Resources/Textures/Objects/Misc/kudzuflower.rsi/meta.json @@ -53,4 +53,4 @@ "name": "kudzu_11" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Misc/sample_tubes.rsi/meta.json b/Resources/Textures/Objects/Misc/sample_tubes.rsi/meta.json index 8b343b4cfe..8ac8c3d34a 100644 --- a/Resources/Textures/Objects/Misc/sample_tubes.rsi/meta.json +++ b/Resources/Textures/Objects/Misc/sample_tubes.rsi/meta.json @@ -26,4 +26,4 @@ "name": "reinforcer" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Misc/spaceshroom.rsi/meta.json b/Resources/Textures/Objects/Misc/spaceshroom.rsi/meta.json index 46d9ba04e4..25a45134b4 100644 --- a/Resources/Textures/Objects/Misc/spaceshroom.rsi/meta.json +++ b/Resources/Textures/Objects/Misc/spaceshroom.rsi/meta.json @@ -17,4 +17,4 @@ "name": "structure" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Specific/Chapel/chaplainurn.rsi/meta.json b/Resources/Textures/Objects/Specific/Chapel/chaplainurn.rsi/meta.json index a257cbc7dc..c4cd544acb 100644 --- a/Resources/Textures/Objects/Specific/Chapel/chaplainurn.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Chapel/chaplainurn.rsi/meta.json @@ -19,4 +19,4 @@ "directions": 4 } ] - } \ No newline at end of file + } diff --git a/Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/meta.json b/Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/meta.json index caf82f33ed..b4c2afbba3 100644 --- a/Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/meta.json @@ -37,4 +37,4 @@ "name": "invoice" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Specific/Security/barrier.rsi/meta.json b/Resources/Textures/Objects/Specific/Security/barrier.rsi/meta.json index 5cd7cffb03..51fc6ca9e8 100644 --- a/Resources/Textures/Objects/Specific/Security/barrier.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Security/barrier.rsi/meta.json @@ -23,4 +23,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Specific/Syndicate/telecrystal.rsi/meta.json b/Resources/Textures/Objects/Specific/Syndicate/telecrystal.rsi/meta.json index 0ec31e402a..dbdfdce292 100644 --- a/Resources/Textures/Objects/Specific/Syndicate/telecrystal.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Syndicate/telecrystal.rsi/meta.json @@ -19,4 +19,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Storage/medalcase.rsi/meta.json b/Resources/Textures/Objects/Storage/medalcase.rsi/meta.json index 8c9647fc3e..aac2440dcd 100644 --- a/Resources/Textures/Objects/Storage/medalcase.rsi/meta.json +++ b/Resources/Textures/Objects/Storage/medalcase.rsi/meta.json @@ -1,4 +1,4 @@ -{ +{ "version": 1, "license": "CC-BY-SA-3.0", "copyright": "Taken from Beestation-Hornet at https://github.com/BeeStation/BeeStation-Hornet/commit/d06dde90f7bb6e6ba1b4a34bcc2a4624dbb1518c, modified by ps3moira (github)", diff --git a/Resources/Textures/Objects/Tools/Toolboxes/toolbox_blue.rsi/meta.json b/Resources/Textures/Objects/Tools/Toolboxes/toolbox_blue.rsi/meta.json index 6f91126877..e6723a6444 100644 --- a/Resources/Textures/Objects/Tools/Toolboxes/toolbox_blue.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/Toolboxes/toolbox_blue.rsi/meta.json @@ -22,4 +22,4 @@ "name": "icon-open" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Tools/Toolboxes/toolbox_gold.rsi/meta.json b/Resources/Textures/Objects/Tools/Toolboxes/toolbox_gold.rsi/meta.json index 4080552023..becb302333 100644 --- a/Resources/Textures/Objects/Tools/Toolboxes/toolbox_gold.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/Toolboxes/toolbox_gold.rsi/meta.json @@ -66,4 +66,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Tools/Toolboxes/toolbox_green.rsi/meta.json b/Resources/Textures/Objects/Tools/Toolboxes/toolbox_green.rsi/meta.json index 6f91126877..e6723a6444 100644 --- a/Resources/Textures/Objects/Tools/Toolboxes/toolbox_green.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/Toolboxes/toolbox_green.rsi/meta.json @@ -22,4 +22,4 @@ "name": "icon-open" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Tools/Toolboxes/toolbox_red.rsi/meta.json b/Resources/Textures/Objects/Tools/Toolboxes/toolbox_red.rsi/meta.json index 6f91126877..e6723a6444 100644 --- a/Resources/Textures/Objects/Tools/Toolboxes/toolbox_red.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/Toolboxes/toolbox_red.rsi/meta.json @@ -22,4 +22,4 @@ "name": "icon-open" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Tools/Toolboxes/toolbox_thief.rsi/meta.json b/Resources/Textures/Objects/Tools/Toolboxes/toolbox_thief.rsi/meta.json index 12106394eb..068495fb27 100644 --- a/Resources/Textures/Objects/Tools/Toolboxes/toolbox_thief.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/Toolboxes/toolbox_thief.rsi/meta.json @@ -19,4 +19,4 @@ "name": "icon" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Tools/Toolboxes/toolbox_yellow.rsi/meta.json b/Resources/Textures/Objects/Tools/Toolboxes/toolbox_yellow.rsi/meta.json index 6f91126877..e6723a6444 100644 --- a/Resources/Textures/Objects/Tools/Toolboxes/toolbox_yellow.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/Toolboxes/toolbox_yellow.rsi/meta.json @@ -22,4 +22,4 @@ "name": "icon-open" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Tools/fulton_balloon.rsi/meta.json b/Resources/Textures/Objects/Tools/fulton_balloon.rsi/meta.json index 36df097eb4..7a483993b9 100644 --- a/Resources/Textures/Objects/Tools/fulton_balloon.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/fulton_balloon.rsi/meta.json @@ -22,4 +22,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Vehicles/motorbike.rsi/meta.json b/Resources/Textures/Objects/Vehicles/motorbike.rsi/meta.json index 33f642dd76..62aabe908a 100644 --- a/Resources/Textures/Objects/Vehicles/motorbike.rsi/meta.json +++ b/Resources/Textures/Objects/Vehicles/motorbike.rsi/meta.json @@ -15,4 +15,4 @@ "name": "keys" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Weapons/Effects/meta.json b/Resources/Textures/Objects/Weapons/Effects/meta.json index 408eccd3f8..99810b7014 100644 --- a/Resources/Textures/Objects/Weapons/Effects/meta.json +++ b/Resources/Textures/Objects/Weapons/Effects/meta.json @@ -22,4 +22,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/large_casing.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/large_casing.rsi/meta.json index 632f148dc6..af362ad53a 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/large_casing.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/large_casing.rsi/meta.json @@ -14,4 +14,4 @@ "name": "base-spent" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/rocket_shell.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/rocket_shell.rsi/meta.json index eb5f2da45c..d1b38434cb 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/rocket_shell.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/rocket_shell.rsi/meta.json @@ -11,4 +11,4 @@ "name": "base" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/pk_box.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/pk_box.rsi/meta.json index ce835dbd9f..ead16b8ad0 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/pk_box.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/pk_box.rsi/meta.json @@ -32,4 +32,4 @@ "name": "mag-7" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Weapons/Guns/Basic/staves.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Basic/staves.rsi/meta.json index a8510801f8..a5edb3afe4 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Basic/staves.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Basic/staves.rsi/meta.json @@ -530,4 +530,4 @@ "name": "nothing-unshaded" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/meta.json index 3b1547beb7..9f297bde4f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/meta.json @@ -78,4 +78,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/practice_disabler.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Battery/practice_disabler.rsi/meta.json index bd0b6c0b4a..2b4b762ca2 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Battery/practice_disabler.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Battery/practice_disabler.rsi/meta.json @@ -78,4 +78,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/tesla_gun.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Battery/tesla_gun.rsi/meta.json index c591453e1c..9bdcbea1a6 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Battery/tesla_gun.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Battery/tesla_gun.rsi/meta.json @@ -40,4 +40,4 @@ "name": "mag-unshaded-4" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Weapons/Guns/Cannons/syringe_gun.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Cannons/syringe_gun.rsi/meta.json index dae584eb81..c1d454e0ec 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Cannons/syringe_gun.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Cannons/syringe_gun.rsi/meta.json @@ -19,4 +19,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Weapons/Guns/Launchers/force_gun.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Launchers/force_gun.rsi/meta.json index 66511d0404..9b21bd1e1f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Launchers/force_gun.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Launchers/force_gun.rsi/meta.json @@ -30,4 +30,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Weapons/Guns/Launchers/rocket.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Launchers/rocket.rsi/meta.json index 8f0a2fed6e..bcccc7a561 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Launchers/rocket.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Launchers/rocket.rsi/meta.json @@ -37,4 +37,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Weapons/Guns/Launchers/tether_gun.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Launchers/tether_gun.rsi/meta.json index 4d8baad4cf..90da0b9573 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Launchers/tether_gun.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Launchers/tether_gun.rsi/meta.json @@ -30,4 +30,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/meta.json index d42d64964d..7c2c9abe17 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/meta.json @@ -139,4 +139,4 @@ "name": "cryoshot" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/meteor.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Projectiles/meteor.rsi/meta.json index 86a5b835c6..458a44a86f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Projectiles/meteor.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Projectiles/meteor.rsi/meta.json @@ -12,4 +12,4 @@ } ] } - \ No newline at end of file + diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/water_shot.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Projectiles/water_shot.rsi/meta.json index a7b69027d8..d9b9aa1361 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Projectiles/water_shot.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Projectiles/water_shot.rsi/meta.json @@ -11,4 +11,4 @@ "name": "icon" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/xeno_toxic.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Projectiles/xeno_toxic.rsi/meta.json index 91ba946a6d..3e99c62878 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Projectiles/xeno_toxic.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Projectiles/xeno_toxic.rsi/meta.json @@ -11,4 +11,4 @@ "name": "xeno_toxic" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Weapons/Guns/Shotguns/improvised_shotgun.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Shotguns/improvised_shotgun.rsi/meta.json index 211d71bf1f..e02409519d 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Shotguns/improvised_shotgun.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Shotguns/improvised_shotgun.rsi/meta.json @@ -25,4 +25,4 @@ "name": "ishotgunstep2" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/meta.json index 3760eca2c2..e96ad71b29 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/meta.json @@ -104,4 +104,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Weapons/Guns/Snipers/flintlock.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Snipers/flintlock.rsi/meta.json index 43f600b580..4686afa13f 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Snipers/flintlock.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Snipers/flintlock.rsi/meta.json @@ -19,4 +19,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Weapons/Guns/Snipers/musket.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Snipers/musket.rsi/meta.json index b0f1b27c24..dfb10fde50 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Snipers/musket.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Snipers/musket.rsi/meta.json @@ -27,4 +27,4 @@ "name": "base" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Weapons/Guns/Turrets/sentry_turret.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Turrets/sentry_turret.rsi/meta.json index bb15156565..e41d098cbe 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Turrets/sentry_turret.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Turrets/sentry_turret.rsi/meta.json @@ -91,4 +91,4 @@ "name": "panel" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Weapons/Guns/Turrets/turrets.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Turrets/turrets.rsi/meta.json index 2cd1e9ecb6..f43c2ccd56 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Turrets/turrets.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Turrets/turrets.rsi/meta.json @@ -23,4 +23,4 @@ "directions": 8 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Weapons/Guns/Turrets/xenoturret.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Turrets/xenoturret.rsi/meta.json index 3adb37ea5c..d897db0280 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Turrets/xenoturret.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Turrets/xenoturret.rsi/meta.json @@ -62,4 +62,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Decoration/decorated_fir_tree.rsi/meta.json b/Resources/Textures/Structures/Decoration/decorated_fir_tree.rsi/meta.json index ba4b535f1a..ca593158e0 100644 --- a/Resources/Textures/Structures/Decoration/decorated_fir_tree.rsi/meta.json +++ b/Resources/Textures/Structures/Decoration/decorated_fir_tree.rsi/meta.json @@ -25,4 +25,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Decoration/showcase.rsi/meta.json b/Resources/Textures/Structures/Decoration/showcase.rsi/meta.json index 855b519aec..c8cffe56eb 100644 --- a/Resources/Textures/Structures/Decoration/showcase.rsi/meta.json +++ b/Resources/Textures/Structures/Decoration/showcase.rsi/meta.json @@ -26,4 +26,4 @@ "name": "showcase_4" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Furniture/Tables/brass.rsi/meta.json b/Resources/Textures/Structures/Furniture/Tables/brass.rsi/meta.json index 4ef0681ba6..98c462fe80 100644 --- a/Resources/Textures/Structures/Furniture/Tables/brass.rsi/meta.json +++ b/Resources/Textures/Structures/Furniture/Tables/brass.rsi/meta.json @@ -160,4 +160,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Furniture/furniture.rsi/meta.json b/Resources/Textures/Structures/Furniture/furniture.rsi/meta.json index 1f7049dfbe..1f5976bc60 100644 --- a/Resources/Textures/Structures/Furniture/furniture.rsi/meta.json +++ b/Resources/Textures/Structures/Furniture/furniture.rsi/meta.json @@ -29,4 +29,4 @@ "name": "dresser" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Holo/field.rsi/meta.json b/Resources/Textures/Structures/Holo/field.rsi/meta.json index 614861a16b..0d54915e48 100644 --- a/Resources/Textures/Structures/Holo/field.rsi/meta.json +++ b/Resources/Textures/Structures/Holo/field.rsi/meta.json @@ -23,4 +23,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Holo/holofan.rsi/meta.json b/Resources/Textures/Structures/Holo/holofan.rsi/meta.json index 8165c1a3bb..ba59b3f203 100644 --- a/Resources/Textures/Structures/Holo/holofan.rsi/meta.json +++ b/Resources/Textures/Structures/Holo/holofan.rsi/meta.json @@ -27,4 +27,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Holo/security.rsi/meta.json b/Resources/Textures/Structures/Holo/security.rsi/meta.json index 2a51eec739..6aff66e81d 100644 --- a/Resources/Textures/Structures/Holo/security.rsi/meta.json +++ b/Resources/Textures/Structures/Holo/security.rsi/meta.json @@ -29,4 +29,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Holo/wetfloor.rsi/meta.json b/Resources/Textures/Structures/Holo/wetfloor.rsi/meta.json index 8165c1a3bb..ba59b3f203 100644 --- a/Resources/Textures/Structures/Holo/wetfloor.rsi/meta.json +++ b/Resources/Textures/Structures/Holo/wetfloor.rsi/meta.json @@ -27,4 +27,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Machines/VendingMachines/centdrobe.rsi/meta.json b/Resources/Textures/Structures/Machines/VendingMachines/centdrobe.rsi/meta.json index 2b5f49cda1..93bccb9785 100644 --- a/Resources/Textures/Structures/Machines/VendingMachines/centdrobe.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/VendingMachines/centdrobe.rsi/meta.json @@ -30,4 +30,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Machines/VendingMachines/mining.rsi/meta.json b/Resources/Textures/Structures/Machines/VendingMachines/mining.rsi/meta.json index d3f202239c..df60750bfd 100644 --- a/Resources/Textures/Structures/Machines/VendingMachines/mining.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/VendingMachines/mining.rsi/meta.json @@ -36,4 +36,4 @@ "name": "panel" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Machines/anomaly_sync.rsi/meta.json b/Resources/Textures/Structures/Machines/anomaly_sync.rsi/meta.json index 1a8f1a82ec..98461e1e61 100644 --- a/Resources/Textures/Structures/Machines/anomaly_sync.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/anomaly_sync.rsi/meta.json @@ -35,4 +35,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Machines/exosuit_fabricator.rsi/meta.json b/Resources/Textures/Structures/Machines/exosuit_fabricator.rsi/meta.json index f0ad6d92af..5201551e78 100644 --- a/Resources/Textures/Structures/Machines/exosuit_fabricator.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/exosuit_fabricator.rsi/meta.json @@ -59,4 +59,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Machines/fat_sucker.rsi/meta.json b/Resources/Textures/Structures/Machines/fat_sucker.rsi/meta.json index cfb3d15960..08c7468d10 100644 --- a/Resources/Textures/Structures/Machines/fat_sucker.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/fat_sucker.rsi/meta.json @@ -47,4 +47,4 @@ "name": "fat_panel" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Machines/fax_machine.rsi/meta.json b/Resources/Textures/Structures/Machines/fax_machine.rsi/meta.json index 3e9e3620d9..8053adef64 100644 --- a/Resources/Textures/Structures/Machines/fax_machine.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/fax_machine.rsi/meta.json @@ -119,4 +119,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Machines/grinder.rsi/meta.json b/Resources/Textures/Structures/Machines/grinder.rsi/meta.json index 9b9ed1dbe9..f373508a29 100644 --- a/Resources/Textures/Structures/Machines/grinder.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/grinder.rsi/meta.json @@ -14,4 +14,4 @@ "name":"grinder_beaker_attached" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Machines/holopad.rsi/meta.json b/Resources/Textures/Structures/Machines/holopad.rsi/meta.json index b7601b19c1..4b85a103a3 100644 --- a/Resources/Textures/Structures/Machines/holopad.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/holopad.rsi/meta.json @@ -97,4 +97,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Machines/jukebox.rsi/meta.json b/Resources/Textures/Structures/Machines/jukebox.rsi/meta.json index f447b26ddf..81a5974380 100644 --- a/Resources/Textures/Structures/Machines/jukebox.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/jukebox.rsi/meta.json @@ -28,4 +28,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Machines/sheetifier.rsi/meta.json b/Resources/Textures/Structures/Machines/sheetifier.rsi/meta.json index d812ec569a..9ff36df067 100644 --- a/Resources/Textures/Structures/Machines/sheetifier.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/sheetifier.rsi/meta.json @@ -85,4 +85,4 @@ "name": "buttons_on" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Magic/Cult/rune.rsi/meta.json b/Resources/Textures/Structures/Magic/Cult/rune.rsi/meta.json index 182c0b5afc..02d19c6002 100644 --- a/Resources/Textures/Structures/Magic/Cult/rune.rsi/meta.json +++ b/Resources/Textures/Structures/Magic/Cult/rune.rsi/meta.json @@ -29,4 +29,4 @@ "name": "cult7" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Magic/Cult/trap.rsi/meta.json b/Resources/Textures/Structures/Magic/Cult/trap.rsi/meta.json index fb18bcc7bc..f004d987fa 100644 --- a/Resources/Textures/Structures/Magic/Cult/trap.rsi/meta.json +++ b/Resources/Textures/Structures/Magic/Cult/trap.rsi/meta.json @@ -11,4 +11,4 @@ "name": "trap" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Magic/forcewall.rsi/meta.json b/Resources/Textures/Structures/Magic/forcewall.rsi/meta.json index 56a718f9e4..8e30edb5b2 100644 --- a/Resources/Textures/Structures/Magic/forcewall.rsi/meta.json +++ b/Resources/Textures/Structures/Magic/forcewall.rsi/meta.json @@ -26,4 +26,4 @@ "name": "forcewall" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Piping/Atmospherics/miners.rsi/meta.json b/Resources/Textures/Structures/Piping/Atmospherics/miners.rsi/meta.json index d8bdbb7c58..7eb3c3055e 100644 --- a/Resources/Textures/Structures/Piping/Atmospherics/miners.rsi/meta.json +++ b/Resources/Textures/Structures/Piping/Atmospherics/miners.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/b9982f69706135ceea703817586128b298cbf5e5", "states": [{"name": "broken", "directions": 1, "delays": [[0.5, 0.1, 0.3, 0.1]]}, {"name": "miner", "directions": 1, "delays": [[1.0]]}, {"name": "on", "directions": 1, "delays": [[0.1, 0.1, 0.1, 0.1]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/b9982f69706135ceea703817586128b298cbf5e5", "states": [{"name": "broken", "directions": 1, "delays": [[0.5, 0.1, 0.3, 0.1]]}, {"name": "miner", "directions": 1, "delays": [[1.0]]}, {"name": "on", "directions": 1, "delays": [[0.1, 0.1, 0.1, 0.1]]}]} diff --git a/Resources/Textures/Structures/Piping/high_pressure_machine_frame.rsi/meta.json b/Resources/Textures/Structures/Piping/high_pressure_machine_frame.rsi/meta.json index 25924fea0f..e9bccaf235 100644 --- a/Resources/Textures/Structures/Piping/high_pressure_machine_frame.rsi/meta.json +++ b/Resources/Textures/Structures/Piping/high_pressure_machine_frame.rsi/meta.json @@ -1 +1 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Julian Giebel ", "states": [{"name": "frame", "directions": 1, "delays": [[1.0]]}, {"name": "frame_cables", "directions": 1, "delays": [[1.0]]}, {"name": "frame_electronics", "directions": 1, "delays": [[1.0]]}, {"name": "frame_inlet", "directions": 1, "delays": [[1.0]]}, {"name": "frame_outlet", "directions": 1, "delays": [[1.0]]}, {"name": "frame_unit", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Julian Giebel ", "states": [{"name": "frame", "directions": 1, "delays": [[1.0]]}, {"name": "frame_cables", "directions": 1, "delays": [[1.0]]}, {"name": "frame_electronics", "directions": 1, "delays": [[1.0]]}, {"name": "frame_inlet", "directions": 1, "delays": [[1.0]]}, {"name": "frame_outlet", "directions": 1, "delays": [[1.0]]}, {"name": "frame_unit", "directions": 1, "delays": [[1.0]]}]} diff --git a/Resources/Textures/Structures/Power/Generation/Tesla/coil.rsi/meta.json b/Resources/Textures/Structures/Power/Generation/Tesla/coil.rsi/meta.json index d0a620f16b..15d5e7fa4c 100644 --- a/Resources/Textures/Structures/Power/Generation/Tesla/coil.rsi/meta.json +++ b/Resources/Textures/Structures/Power/Generation/Tesla/coil.rsi/meta.json @@ -39,4 +39,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Power/Generation/Tesla/energy_ball.rsi/meta.json b/Resources/Textures/Structures/Power/Generation/Tesla/energy_ball.rsi/meta.json index 8519efeec0..62ab86c977 100644 --- a/Resources/Textures/Structures/Power/Generation/Tesla/energy_ball.rsi/meta.json +++ b/Resources/Textures/Structures/Power/Generation/Tesla/energy_ball.rsi/meta.json @@ -46,4 +46,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Power/Generation/Tesla/generator.rsi/meta.json b/Resources/Textures/Structures/Power/Generation/Tesla/generator.rsi/meta.json index cd32288585..3f7e4598d7 100644 --- a/Resources/Textures/Structures/Power/Generation/Tesla/generator.rsi/meta.json +++ b/Resources/Textures/Structures/Power/Generation/Tesla/generator.rsi/meta.json @@ -11,4 +11,4 @@ "name": "icon" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Power/Generation/teg.rsi/meta.json b/Resources/Textures/Structures/Power/Generation/teg.rsi/meta.json index b14f15b579..a7f45d6956 100644 --- a/Resources/Textures/Structures/Power/Generation/teg.rsi/meta.json +++ b/Resources/Textures/Structures/Power/Generation/teg.rsi/meta.json @@ -279,4 +279,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Power/cable_terminal.rsi/meta.json b/Resources/Textures/Structures/Power/cable_terminal.rsi/meta.json index 5344175985..ede9f57a57 100644 --- a/Resources/Textures/Structures/Power/cable_terminal.rsi/meta.json +++ b/Resources/Textures/Structures/Power/cable_terminal.rsi/meta.json @@ -29,4 +29,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Shuttles/gyroscope.rsi/meta.json b/Resources/Textures/Structures/Shuttles/gyroscope.rsi/meta.json index 31ef28fa6b..f1affa4d9d 100644 --- a/Resources/Textures/Structures/Shuttles/gyroscope.rsi/meta.json +++ b/Resources/Textures/Structures/Shuttles/gyroscope.rsi/meta.json @@ -40,4 +40,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Shuttles/iff.rsi/meta.json b/Resources/Textures/Structures/Shuttles/iff.rsi/meta.json index f4525a5d57..3cb696c8f4 100644 --- a/Resources/Textures/Structures/Shuttles/iff.rsi/meta.json +++ b/Resources/Textures/Structures/Shuttles/iff.rsi/meta.json @@ -30,4 +30,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Specific/Anomalies/shadow_anom.rsi/meta.json b/Resources/Textures/Structures/Specific/Anomalies/shadow_anom.rsi/meta.json index 4f02c929a9..8419980a6a 100644 --- a/Resources/Textures/Structures/Specific/Anomalies/shadow_anom.rsi/meta.json +++ b/Resources/Textures/Structures/Specific/Anomalies/shadow_anom.rsi/meta.json @@ -31,4 +31,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Specific/Anomalies/tech_anom.rsi/meta.json b/Resources/Textures/Structures/Specific/Anomalies/tech_anom.rsi/meta.json index 26360487fd..77e41ad2f4 100644 --- a/Resources/Textures/Structures/Specific/Anomalies/tech_anom.rsi/meta.json +++ b/Resources/Textures/Structures/Specific/Anomalies/tech_anom.rsi/meta.json @@ -87,4 +87,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Specific/xeno_building.rsi/meta.json b/Resources/Textures/Structures/Specific/xeno_building.rsi/meta.json index c4a1b417ae..c0076b64e6 100644 --- a/Resources/Textures/Structures/Specific/xeno_building.rsi/meta.json +++ b/Resources/Textures/Structures/Specific/xeno_building.rsi/meta.json @@ -24,4 +24,4 @@ "directions": 1 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Storage/Crates/artifact.rsi/meta.json b/Resources/Textures/Structures/Storage/Crates/artifact.rsi/meta.json index 1a535ab97c..8849155557 100644 --- a/Resources/Textures/Structures/Storage/Crates/artifact.rsi/meta.json +++ b/Resources/Textures/Structures/Storage/Crates/artifact.rsi/meta.json @@ -41,4 +41,4 @@ "name": "invoice" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Storage/Crates/livestock.rsi/meta.json b/Resources/Textures/Structures/Storage/Crates/livestock.rsi/meta.json index c9fe6b551c..5f2cc2fb06 100644 --- a/Resources/Textures/Structures/Storage/Crates/livestock.rsi/meta.json +++ b/Resources/Textures/Structures/Storage/Crates/livestock.rsi/meta.json @@ -17,4 +17,4 @@ "name": "open" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Storage/Crates/syndicate.rsi/meta.json b/Resources/Textures/Structures/Storage/Crates/syndicate.rsi/meta.json index cfd113efd3..83b032f23d 100644 --- a/Resources/Textures/Structures/Storage/Crates/syndicate.rsi/meta.json +++ b/Resources/Textures/Structures/Storage/Crates/syndicate.rsi/meta.json @@ -36,4 +36,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Storage/Crates/toybox.rsi/meta.json b/Resources/Textures/Structures/Storage/Crates/toybox.rsi/meta.json index 9c0d876c50..1fed56c2e9 100644 --- a/Resources/Textures/Structures/Storage/Crates/toybox.rsi/meta.json +++ b/Resources/Textures/Structures/Storage/Crates/toybox.rsi/meta.json @@ -49,4 +49,4 @@ "name": "invoice" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Storage/Shelfs/Departments/Medical/chemistry.rsi/meta.json b/Resources/Textures/Structures/Storage/Shelfs/Departments/Medical/chemistry.rsi/meta.json index a3fb20976e..21bff0953f 100644 --- a/Resources/Textures/Structures/Storage/Shelfs/Departments/Medical/chemistry.rsi/meta.json +++ b/Resources/Textures/Structures/Storage/Shelfs/Departments/Medical/chemistry.rsi/meta.json @@ -44,4 +44,4 @@ "name": "chem-6" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Storage/Shelfs/Departments/Service/bar.rsi/meta.json b/Resources/Textures/Structures/Storage/Shelfs/Departments/Service/bar.rsi/meta.json index 79e0904dd9..69bf848da8 100644 --- a/Resources/Textures/Structures/Storage/Shelfs/Departments/Service/bar.rsi/meta.json +++ b/Resources/Textures/Structures/Storage/Shelfs/Departments/Service/bar.rsi/meta.json @@ -50,4 +50,4 @@ "name": "bar-12" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Storage/Shelfs/Departments/Service/kitchen.rsi/meta.json b/Resources/Textures/Structures/Storage/Shelfs/Departments/Service/kitchen.rsi/meta.json index 2daba51b6c..d67284f9cc 100644 --- a/Resources/Textures/Structures/Storage/Shelfs/Departments/Service/kitchen.rsi/meta.json +++ b/Resources/Textures/Structures/Storage/Shelfs/Departments/Service/kitchen.rsi/meta.json @@ -50,4 +50,4 @@ "name": "kitchen-12" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Storage/Shelfs/glass.rsi/meta.json b/Resources/Textures/Structures/Storage/Shelfs/glass.rsi/meta.json index 544b43a1e8..e3ef599cee 100644 --- a/Resources/Textures/Structures/Storage/Shelfs/glass.rsi/meta.json +++ b/Resources/Textures/Structures/Storage/Shelfs/glass.rsi/meta.json @@ -26,4 +26,4 @@ "name": "open" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Storage/Shelfs/metal.rsi/meta.json b/Resources/Textures/Structures/Storage/Shelfs/metal.rsi/meta.json index 544b43a1e8..e3ef599cee 100644 --- a/Resources/Textures/Structures/Storage/Shelfs/metal.rsi/meta.json +++ b/Resources/Textures/Structures/Storage/Shelfs/metal.rsi/meta.json @@ -26,4 +26,4 @@ "name": "open" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Storage/Shelfs/wood.rsi/meta.json b/Resources/Textures/Structures/Storage/Shelfs/wood.rsi/meta.json index 544b43a1e8..e3ef599cee 100644 --- a/Resources/Textures/Structures/Storage/Shelfs/wood.rsi/meta.json +++ b/Resources/Textures/Structures/Storage/Shelfs/wood.rsi/meta.json @@ -26,4 +26,4 @@ "name": "open" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Storage/glassbox.rsi/meta.json b/Resources/Textures/Structures/Storage/glassbox.rsi/meta.json index 33decc4009..03a7f79d83 100644 --- a/Resources/Textures/Structures/Storage/glassbox.rsi/meta.json +++ b/Resources/Textures/Structures/Storage/glassbox.rsi/meta.json @@ -41,4 +41,4 @@ "name": "DamageOverlay_12" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Storage/orebox.rsi/meta.json b/Resources/Textures/Structures/Storage/orebox.rsi/meta.json index e24ab0f25d..f369a00881 100644 --- a/Resources/Textures/Structures/Storage/orebox.rsi/meta.json +++ b/Resources/Textures/Structures/Storage/orebox.rsi/meta.json @@ -14,4 +14,4 @@ "name": "orebox-top" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Wallmounts/shotgun_cabinet.rsi/meta.json b/Resources/Textures/Structures/Wallmounts/shotgun_cabinet.rsi/meta.json index 7004450d7e..d619a91fc1 100644 --- a/Resources/Textures/Structures/Wallmounts/shotgun_cabinet.rsi/meta.json +++ b/Resources/Textures/Structures/Wallmounts/shotgun_cabinet.rsi/meta.json @@ -47,4 +47,4 @@ "name": "cabinet-filled-open" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Walls/random.rsi/meta.json b/Resources/Textures/Structures/Walls/random.rsi/meta.json index 86b21c8308..a95e1b3cef 100644 --- a/Resources/Textures/Structures/Walls/random.rsi/meta.json +++ b/Resources/Textures/Structures/Walls/random.rsi/meta.json @@ -11,4 +11,4 @@ "name": "randomgrille" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/barricades.rsi/meta.json b/Resources/Textures/Structures/barricades.rsi/meta.json index 367f94de64..0c295042a7 100644 --- a/Resources/Textures/Structures/barricades.rsi/meta.json +++ b/Resources/Textures/Structures/barricades.rsi/meta.json @@ -20,4 +20,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/cryostorage.rsi/meta.json b/Resources/Textures/Structures/cryostorage.rsi/meta.json index 24426d5b81..d89767ae50 100644 --- a/Resources/Textures/Structures/cryostorage.rsi/meta.json +++ b/Resources/Textures/Structures/cryostorage.rsi/meta.json @@ -42,4 +42,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Tiles/Planet/Chasms/basalt_chasm.rsi/meta.json b/Resources/Textures/Tiles/Planet/Chasms/basalt_chasm.rsi/meta.json index 185ed3fad9..b0b93cde42 100644 --- a/Resources/Textures/Tiles/Planet/Chasms/basalt_chasm.rsi/meta.json +++ b/Resources/Textures/Tiles/Planet/Chasms/basalt_chasm.rsi/meta.json @@ -46,4 +46,4 @@ "name": "chasm" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Tiles/Planet/Chasms/chromite_chasm.rsi/meta.json b/Resources/Textures/Tiles/Planet/Chasms/chromite_chasm.rsi/meta.json index e303031e1f..66fcf54138 100644 --- a/Resources/Textures/Tiles/Planet/Chasms/chromite_chasm.rsi/meta.json +++ b/Resources/Textures/Tiles/Planet/Chasms/chromite_chasm.rsi/meta.json @@ -46,4 +46,4 @@ "name": "chasm" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Tiles/Planet/Chasms/desert_chasm.rsi/meta.json b/Resources/Textures/Tiles/Planet/Chasms/desert_chasm.rsi/meta.json index e303031e1f..66fcf54138 100644 --- a/Resources/Textures/Tiles/Planet/Chasms/desert_chasm.rsi/meta.json +++ b/Resources/Textures/Tiles/Planet/Chasms/desert_chasm.rsi/meta.json @@ -46,4 +46,4 @@ "name": "chasm" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Tiles/Planet/Chasms/snow_chasm.rsi/meta.json b/Resources/Textures/Tiles/Planet/Chasms/snow_chasm.rsi/meta.json index e303031e1f..66fcf54138 100644 --- a/Resources/Textures/Tiles/Planet/Chasms/snow_chasm.rsi/meta.json +++ b/Resources/Textures/Tiles/Planet/Chasms/snow_chasm.rsi/meta.json @@ -46,4 +46,4 @@ "name": "chasm" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Tiles/Planet/attributions.yml b/Resources/Textures/Tiles/Planet/attributions.yml index f85b983186..267c83585b 100644 --- a/Resources/Textures/Tiles/Planet/attributions.yml +++ b/Resources/Textures/Tiles/Planet/attributions.yml @@ -1,4 +1,4 @@ - files: ["basalt.png"] license: "CC-BY-SA-3.0" copyright: "Taken from tgstation" - source: "https://github.com/tgstation/tgstation/tree/423404b31e36c4605faacec881b324db8997b0a6" \ No newline at end of file + source: "https://github.com/tgstation/tgstation/tree/423404b31e36c4605faacec881b324db8997b0a6" diff --git a/Resources/Textures/Tiles/Planet/basalt.rsi/meta.json b/Resources/Textures/Tiles/Planet/basalt.rsi/meta.json index a16b6d3fb6..1cd71f8d85 100644 --- a/Resources/Textures/Tiles/Planet/basalt.rsi/meta.json +++ b/Resources/Textures/Tiles/Planet/basalt.rsi/meta.json @@ -63,4 +63,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Tiles/Planet/lava.rsi/meta.json b/Resources/Textures/Tiles/Planet/lava.rsi/meta.json index d4d7e14afc..d6de6fe12c 100644 --- a/Resources/Textures/Tiles/Planet/lava.rsi/meta.json +++ b/Resources/Textures/Tiles/Planet/lava.rsi/meta.json @@ -262,4 +262,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Tiles/Planet/shadowbasalt.rsi/meta.json b/Resources/Textures/Tiles/Planet/shadowbasalt.rsi/meta.json index 0d71d4b561..0a9059d488 100644 --- a/Resources/Textures/Tiles/Planet/shadowbasalt.rsi/meta.json +++ b/Resources/Textures/Tiles/Planet/shadowbasalt.rsi/meta.json @@ -63,4 +63,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/deprecated.rsi/meta.json b/Resources/Textures/deprecated.rsi/meta.json index 74f824ade7..e8a2fbde5c 100644 --- a/Resources/Textures/deprecated.rsi/meta.json +++ b/Resources/Textures/deprecated.rsi/meta.json @@ -11,4 +11,4 @@ "name": "deprecated" } ] -} \ No newline at end of file +} diff --git a/Resources/keybinds.yml b/Resources/keybinds.yml index dc8b425481..44cbc5d39d 100644 --- a/Resources/keybinds.yml +++ b/Resources/keybinds.yml @@ -1,4 +1,4 @@ -version: 1 # Not used right now, whatever. +version: 1 # Not used right now, whatever. binds: - function: UIClick type: State diff --git a/Resources/manifest.yml b/Resources/manifest.yml index 6799118193..79a3582feb 100644 --- a/Resources/manifest.yml +++ b/Resources/manifest.yml @@ -1,4 +1,4 @@ -defaultWindowTitle: Space Station 14 +defaultWindowTitle: Space Station 14 windowIconSet: /Textures/Logo/icon splashLogo: /Textures/Logo/logo.png diff --git a/Resources/toolshedEngineCommandPerms.yml b/Resources/toolshedEngineCommandPerms.yml index ae02339c1a..b8d4e06383 100644 --- a/Resources/toolshedEngineCommandPerms.yml +++ b/Resources/toolshedEngineCommandPerms.yml @@ -1,4 +1,4 @@ -- Flags: QUERY +- Flags: QUERY Commands: - entities - nearby From 0b8f6c81db6887d0a9f7de1bb94fda22fd6cd938 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Thu, 17 Sep 2026 23:57:21 +1000 Subject: [PATCH 151/197] Fix engine proxy methods (#46057) --- Content.Shared/Botany/Traits/Systems/PlantTraitKudzuSystem.cs | 2 +- .../CartridgeLoader/Cartridges/LogProbeCartridgeSystem.cs | 2 +- Content.Shared/Nutrition/EntitySystems/IngestionSystem.API.cs | 2 +- Content.Shared/Tabletop/SharedTabletopSystem.cs | 2 +- Content.Shared/Trigger/Systems/TriggerSystem.Spawn.cs | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Content.Shared/Botany/Traits/Systems/PlantTraitKudzuSystem.cs b/Content.Shared/Botany/Traits/Systems/PlantTraitKudzuSystem.cs index 3fd2fac4b7..7e348a0f3b 100644 --- a/Content.Shared/Botany/Traits/Systems/PlantTraitKudzuSystem.cs +++ b/Content.Shared/Botany/Traits/Systems/PlantTraitKudzuSystem.cs @@ -27,7 +27,7 @@ public sealed partial class PlantTraitKudzuSystem : EntitySystem // Handle kudzu transformation. if (trayComp.WeedLevel >= ent.Comp.WeedLevelThreshold) { - EntityManager.PredictedSpawn(ent.Comp.KudzuPrototype, _transform.GetMapCoordinates(ent.Owner)); + PredictedSpawn(ent.Comp.KudzuPrototype, _transform.GetMapCoordinates(ent.Owner)); RemComp(ent.Owner); _plantHolder.KillPlant(ent.Owner); } diff --git a/Content.Shared/CartridgeLoader/Cartridges/LogProbeCartridgeSystem.cs b/Content.Shared/CartridgeLoader/Cartridges/LogProbeCartridgeSystem.cs index 05dc788d3a..fc5e644144 100644 --- a/Content.Shared/CartridgeLoader/Cartridges/LogProbeCartridgeSystem.cs +++ b/Content.Shared/CartridgeLoader/Cartridges/LogProbeCartridgeSystem.cs @@ -93,7 +93,7 @@ public sealed partial class LogProbeCartridgeSystem : EntitySystem ent.Comp.NextPrintAllowed = _timing.CurTime + ent.Comp.PrintCooldown; - var paper = EntityManager.PredictedSpawn(ent.Comp.PaperPrototype, _transform.GetMapCoordinates(user)); + var paper = PredictedSpawn(ent.Comp.PaperPrototype, _transform.GetMapCoordinates(user)); _label.Label(paper, ent.Comp.EntityName); // label it for easy identification _audio.PlayEntity(ent.Comp.PrintSound, user, paper); diff --git a/Content.Shared/Nutrition/EntitySystems/IngestionSystem.API.cs b/Content.Shared/Nutrition/EntitySystems/IngestionSystem.API.cs index 51e88a13ef..b4bd2aee2a 100644 --- a/Content.Shared/Nutrition/EntitySystems/IngestionSystem.API.cs +++ b/Content.Shared/Nutrition/EntitySystems/IngestionSystem.API.cs @@ -161,7 +161,7 @@ public sealed partial class IngestionSystem foreach (var trash in trashes) { - var spawnedTrash = EntityManager.PredictedSpawn(trash, position); + var spawnedTrash = PredictedSpawn(trash, position); // If the user is holding the item if (!pickup) diff --git a/Content.Shared/Tabletop/SharedTabletopSystem.cs b/Content.Shared/Tabletop/SharedTabletopSystem.cs index 751d8c10ba..4a1ec4be6e 100644 --- a/Content.Shared/Tabletop/SharedTabletopSystem.cs +++ b/Content.Shared/Tabletop/SharedTabletopSystem.cs @@ -94,7 +94,7 @@ public abstract partial class SharedTabletopSystem : EntitySystem var meta = MetaData(handEnt.Value); var protoId = meta.EntityPrototype?.ID; - var hologram = EntityManager.PredictedSpawn(protoId, session.Position.Offset(-1, 0)); + var hologram = PredictedSpawn(protoId, session.Position.Offset(-1, 0)); // Make sure the entity can be dragged and can be removed, move it into the board game world and add it to the Entities hashmap. EnsureComp(hologram); diff --git a/Content.Shared/Trigger/Systems/TriggerSystem.Spawn.cs b/Content.Shared/Trigger/Systems/TriggerSystem.Spawn.cs index 0bc1cffe66..cc107f29c9 100644 --- a/Content.Shared/Trigger/Systems/TriggerSystem.Spawn.cs +++ b/Content.Shared/Trigger/Systems/TriggerSystem.Spawn.cs @@ -72,7 +72,7 @@ public sealed partial class TriggerSystem { var mapCoords = _transform.GetMapCoordinates(target); if (predicted) - EntityManager.PredictedSpawn(proto, mapCoords); + PredictedSpawn(proto, mapCoords); else if (_net.IsServer) Spawn(proto, mapCoords); } From 5d498b530ef425597ada045bded3aa58f559b9ef Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Thu, 17 Sep 2026 14:24:19 +0000 Subject: [PATCH 152/197] Update submodule to 290.0.0 (#46058) --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index 36905986f6..fee0dd647e 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 36905986f6809420dbc78168fc494f91723d356b +Subproject commit fee0dd647ebe95ad62d8945440450fb6cd4749a7 From fffb304de9ec02c89c9c8f191e520883fa588f48 Mon Sep 17 00:00:00 2001 From: Dmitry <57028746+DIMMoon1@users.noreply.github.com> Date: Fri, 18 Sep 2026 01:47:04 +0700 Subject: [PATCH 153/197] upstream codefix secapartment update --- .../SecApartment/SecApartmentWindow.xaml.cs | 2 +- .../Corvax/SecApartment/SquadEntry.xaml.cs | 20 +++---- .../Connection/ConnectionManager.cs | 11 ++-- .../Corvax/Api/AHelp/AHelpBotApiSystem.cs | 3 +- .../Api/AHelp/BwoinkSystem.CorvaxAHelpApi.cs | 2 +- .../Corvax/Documents/DocumentPrinterSystem.cs | 6 +- .../PeacefulRoundEndSystem.cs | 4 +- .../Corvax/SecApartment/SecApartmentSystem.cs | 55 ++++++++++--------- .../StationGoal/StationGoalPaperSystem.cs | 2 +- Content.Server/Corvax/TTS/TTSSystem.cs | 3 +- .../ServerGameTicker.StatusShell.cs | 2 +- .../ContentLocalizationManager.cs | 2 +- 12 files changed, 58 insertions(+), 54 deletions(-) diff --git a/Content.Client/Corvax/SecApartment/SecApartmentWindow.xaml.cs b/Content.Client/Corvax/SecApartment/SecApartmentWindow.xaml.cs index 2709628da6..6fbde35c15 100644 --- a/Content.Client/Corvax/SecApartment/SecApartmentWindow.xaml.cs +++ b/Content.Client/Corvax/SecApartment/SecApartmentWindow.xaml.cs @@ -1,7 +1,7 @@ using System.Linq; using System.Numerics; using Content.Client.Corvax.SecApartment.Stylesheets; -using Content.Client.GameTicking.Managers; +using Content.Client.GameTicking; using Content.Shared.SecApartment; using Content.Shared.StatusIcon; using Robust.Client.AutoGenerated; diff --git a/Content.Client/Corvax/SecApartment/SquadEntry.xaml.cs b/Content.Client/Corvax/SecApartment/SquadEntry.xaml.cs index 70987ecdb6..7b5dd350c0 100644 --- a/Content.Client/Corvax/SecApartment/SquadEntry.xaml.cs +++ b/Content.Client/Corvax/SecApartment/SquadEntry.xaml.cs @@ -186,7 +186,7 @@ public sealed partial class SquadEntry : PanelContainer Color backgroundColor; Color borderColor; - if (member.SensorStatus == null || !member.SensorStatus.IsAlive) + if (member.SensorStatus is not { } sensorStatus || !sensorStatus.IsAlive) { backgroundColor = Color.FromHex("#1a0a0a"); borderColor = Color.FromHex("#990000"); @@ -245,15 +245,15 @@ public sealed partial class SquadEntry : PanelContainer var specifier = new SpriteSpecifier.Rsi(new ResPath("Interface/Alerts/human_crew_monitoring.rsi"), "alive"); - if (member.SensorStatus != null) + if (member.SensorStatus is { } sensorStatus2) { - if (!member.SensorStatus.IsAlive) + if (!sensorStatus2.IsAlive) { specifier = new SpriteSpecifier.Rsi(new ResPath("Interface/Alerts/human_crew_monitoring.rsi"), "dead"); } - else if (member.SensorStatus.DamagePercentage != null) + else if (sensorStatus2.DamagePercentage is { } damagePercentage) { - var index = MathF.Round(4f * member.SensorStatus.DamagePercentage.Value); + var index = MathF.Round(4f * damagePercentage); if (index >= 5) specifier = new SpriteSpecifier.Rsi(new ResPath("Interface/Alerts/human_crew_monitoring.rsi"), "critical"); @@ -359,7 +359,7 @@ public sealed partial class SquadEntry : PanelContainer Color backgroundColor; Color borderColor; - if (status == null || !status.IsAlive) + if (status is not { } sensorStatus || !sensorStatus.IsAlive) { backgroundColor = Color.FromHex("#1a0a0a"); borderColor = Color.FromHex("#990000"); @@ -400,18 +400,18 @@ public sealed partial class SquadEntry : PanelContainer "alive" ); - if (status != null) + if (status is { } sensorStatus2) { - if (!status.IsAlive) + if (!sensorStatus2.IsAlive) { specifier = new SpriteSpecifier.Rsi( new ResPath("Interface/Alerts/human_crew_monitoring.rsi"), "dead" ); } - else if (status.DamagePercentage != null) + else if (sensorStatus2.DamagePercentage is { } damagePercentage) { - var index = MathF.Round(4f * status.DamagePercentage.Value); + var index = MathF.Round(4f * damagePercentage); if (index >= 5) specifier = new SpriteSpecifier.Rsi( new ResPath("Interface/Alerts/human_crew_monitoring.rsi"), diff --git a/Content.Server/Connection/ConnectionManager.cs b/Content.Server/Connection/ConnectionManager.cs index e7d435a82b..d6aa47dec4 100644 --- a/Content.Server/Connection/ConnectionManager.cs +++ b/Content.Server/Connection/ConnectionManager.cs @@ -407,12 +407,15 @@ namespace Content.Server.Connection public async Task HavePrivilegedJoin(NetUserId userId) { var adminBypass = _cfg.GetCVar(CCVars.AdminBypassMaxPlayers) && await _db.GetAdminDataForAsync(userId) != null; - var havePriorityJoin = _sponsorsMgr != null && _sponsorsMgr.HaveServerPriorityJoin(userId); // Corvax-Sponsors - var wasInGame = EntitySystem.TryGet(out var ticker) && - ticker.PlayerGameStatuses.TryGetValue(userId, out var status) && + var havePriorityJoin = _sponsorsMgr != null && _sponsorsMgr.HaveServerPriorityJoin(userId); // Corvax-Sponsors + + _ticker ??= _entityManager.SystemOrNull(); + var wasInGame = _ticker != null && + _ticker.PlayerGameStatuses.TryGetValue(userId, out var status) && status == PlayerGameStatus.JoinedGame; + return adminBypass || - havePriorityJoin || // Corvax-Sponsors + havePriorityJoin || // Corvax-Sponsors wasInGame; } // Corvax-Queue-End diff --git a/Content.Server/Corvax/Api/AHelp/AHelpBotApiSystem.cs b/Content.Server/Corvax/Api/AHelp/AHelpBotApiSystem.cs index 964946df4d..6514b19d9a 100644 --- a/Content.Server/Corvax/Api/AHelp/AHelpBotApiSystem.cs +++ b/Content.Server/Corvax/Api/AHelp/AHelpBotApiSystem.cs @@ -6,16 +6,15 @@ using System.Net.Http.Headers; using System.Net.Http.Json; using System.Security.Cryptography; using System.Text; -using System.Text.Json; using System.Threading; using System.Threading.Tasks; using Content.Server.Administration.Systems; -using Content.Server.GameTicking; using Content.Shared.Corvax.CCCVars; using Robust.Shared; using Robust.Shared.Asynchronous; using Robust.Shared.Configuration; using Robust.Server.ServerStatus; +using Content.Shared.GameTicking; namespace Content.Server.Corvax.Api.AHelp; diff --git a/Content.Server/Corvax/Api/AHelp/BwoinkSystem.CorvaxAHelpApi.cs b/Content.Server/Corvax/Api/AHelp/BwoinkSystem.CorvaxAHelpApi.cs index 0f5b126d7d..28ac2502d5 100644 --- a/Content.Server/Corvax/Api/AHelp/BwoinkSystem.CorvaxAHelpApi.cs +++ b/Content.Server/Corvax/Api/AHelp/BwoinkSystem.CorvaxAHelpApi.cs @@ -1,5 +1,5 @@ using System.Linq; -using Content.Server.GameTicking; +using Content.Shared.GameTicking; using Robust.Shared.Network; namespace Content.Server.Administration.Systems; diff --git a/Content.Server/Corvax/Documents/DocumentPrinterSystem.cs b/Content.Server/Corvax/Documents/DocumentPrinterSystem.cs index 77346b8945..d2a7a5c4de 100644 --- a/Content.Server/Corvax/Documents/DocumentPrinterSystem.cs +++ b/Content.Server/Corvax/Documents/DocumentPrinterSystem.cs @@ -4,7 +4,7 @@ using Content.Shared.Corvax.Documents; using Content.Shared.GameTicking; using Content.Shared.Lathe; using Content.Shared.Paper; -using Content.Shared.Station; +using Content.Shared.Station.Systems; namespace Content.Server.Corvax.Documents; @@ -12,8 +12,8 @@ public sealed partial class DocumentPrinterSystem : EntitySystem { [Dependency] private ItemSlotsSystem _itemSlots = default!; [Dependency] private PaperSystem _paper = default!; - [Dependency] private SharedStationSystem _station = default!; - [Dependency] private SharedGameTicker _gameTicker = default!; + [Dependency] private StationSystem _station = default!; + [Dependency] private GameTicker _gameTicker = default!; public override void Initialize() { diff --git a/Content.Server/Corvax/PeacefulRoundEnd/PeacefulRoundEndSystem.cs b/Content.Server/Corvax/PeacefulRoundEnd/PeacefulRoundEndSystem.cs index fcda99d053..aafa7a87b7 100644 --- a/Content.Server/Corvax/PeacefulRoundEnd/PeacefulRoundEndSystem.cs +++ b/Content.Server/Corvax/PeacefulRoundEnd/PeacefulRoundEndSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.GameTicking; +using Content.Shared.GameTicking; using Content.Shared.CombatMode.Pacification; using Content.Shared.Corvax.CCCVars; using Content.Shared.Mindshield.Components; @@ -22,7 +22,7 @@ public sealed partial class PeacefulRoundEndSystem : EntitySystem SubscribeLocalEvent(OnRoundEnded); } - private void OnRoundEnded(RoundEndTextAppendEvent ev) + private void OnRoundEnded(ref RoundEndTextAppendEvent ev) { if (!_isEnabled) return; foreach (var session in _playerManager.Sessions) diff --git a/Content.Server/Corvax/SecApartment/SecApartmentSystem.cs b/Content.Server/Corvax/SecApartment/SecApartmentSystem.cs index 518ea7af49..9ee2f75054 100644 --- a/Content.Server/Corvax/SecApartment/SecApartmentSystem.cs +++ b/Content.Server/Corvax/SecApartment/SecApartmentSystem.cs @@ -7,7 +7,7 @@ using Content.Shared.GameTicking; using Content.Shared.Medical.SuitSensors; using Content.Shared.Roles; using Content.Shared.SecApartment; -using Content.Shared.Station; +using Content.Shared.Station.Systems; using Content.Shared.UserInterface; using Robust.Server.GameObjects; using Robust.Shared.Map; @@ -22,7 +22,7 @@ namespace Content.Server.Corvax.SecApartment; public sealed partial class SecApartmentSystem : EntitySystem { - [Dependency] private SharedStationSystem _station = default!; + [Dependency] private StationSystem _station = default!; [Dependency] private CrewManifestSystem _crewManifest = default!; [Dependency] private UserInterfaceSystem _ui = default!; [Dependency] private IRobustRandom _random = default!; @@ -441,31 +441,35 @@ public sealed partial class SecApartmentSystem : EntitySystem if (manifest == null) return result; + TryComp(tablet, out var monitoring); + foreach (var entry in manifest.Entries) { - if (_securityJobs.Contains(entry.JobPrototype)) + if (!_securityJobs.Contains(entry.JobPrototype)) + continue; + + NetEntity? ownerUid = null; + SuitSensorStatus? status = null; + + if (monitoring != null) { - NetEntity? ownerUid = null; - SuitSensorStatus? status = null; - if (TryComp(tablet, out var monitoring)) - { - var sensor = monitoring.ConnectedSensors.Values - .FirstOrDefault(s => s.Name == entry.Name && s.Job == entry.JobTitle); + status = monitoring.ConnectedSensors.Values + .Where(s => s.Name == entry.Name && s.Job == entry.JobTitle) + .Select(s => (SuitSensorStatus?)s) + .FirstOrDefault(); - status = sensor; - ownerUid = sensor?.OwnerUid; - } - - var memberId = GenerateMemberId(entry); - result.Add(new CrewMemberInfo( - memberId, - ownerUid, - entry.Name, - entry.JobTitle, - entry.JobIcon, - status - )); + if (status is { } sensorStatus) + ownerUid = sensorStatus.OwnerUid; } + + var memberId = GenerateMemberId(entry); + result.Add(new CrewMemberInfo( + memberId, + ownerUid, + entry.Name, + entry.JobTitle, + entry.JobIcon, + status)); } return result; @@ -484,19 +488,18 @@ public sealed partial class SecApartmentSystem : EntitySystem foreach (var memberId in squad.Members.Select(m => m.MemberId)) { var memberInfo = securityCrew.FirstOrDefault(c => c.MemberId == memberId); - if (memberInfo?.SensorStatus == null) + if (memberInfo?.SensorStatus is not { } sensorStatus || !sensorStatus.IsAlive) continue; - if (!memberInfo.SensorStatus.IsAlive) + var ownerUid = GetEntity(sensorStatus.OwnerUid); + if (!Exists(ownerUid) || Terminating(ownerUid)) continue; - var ownerUid = GetEntity(memberInfo.SensorStatus.OwnerUid); var memberTransform = Transform(ownerUid); if (memberTransform.GridUid == null) continue; var mapPos = _transform.GetMapCoordinates(ownerUid); - trackedPositions.Add(mapPos.Position); mapId = mapPos.MapId; } diff --git a/Content.Server/Corvax/StationGoal/StationGoalPaperSystem.cs b/Content.Server/Corvax/StationGoal/StationGoalPaperSystem.cs index fa90217bd6..cb7a648169 100644 --- a/Content.Server/Corvax/StationGoal/StationGoalPaperSystem.cs +++ b/Content.Server/Corvax/StationGoal/StationGoalPaperSystem.cs @@ -1,6 +1,6 @@ using Content.Server.Fax; using Content.Server.MassMedia.Systems; -using Content.Server.Station.Systems; +using Content.Shared.Station.Systems; using Content.Shared.Corvax.CCCVars; using Content.Shared.Fax.Components; using Content.Shared.GameTicking; diff --git a/Content.Server/Corvax/TTS/TTSSystem.cs b/Content.Server/Corvax/TTS/TTSSystem.cs index 248d44c79a..c8a59a52e6 100644 --- a/Content.Server/Corvax/TTS/TTSSystem.cs +++ b/Content.Server/Corvax/TTS/TTSSystem.cs @@ -2,9 +2,8 @@ using System.Linq; using System.Threading.Tasks; using Content.Server.Communications; using Content.Server.Power.Components; -using Content.Server.Radio; using Content.Server.Radio.EntitySystems; -using Content.Server.Station.Systems; +using Content.Shared.Station.Systems; using Content.Shared.Chat; using Content.Shared.Corvax.CCCVars; using Content.Shared.Corvax.TTS; diff --git a/Content.Server/GameTicking/ServerGameTicker.StatusShell.cs b/Content.Server/GameTicking/ServerGameTicker.StatusShell.cs index 5d7e95430c..4d58bd2585 100644 --- a/Content.Server/GameTicking/ServerGameTicker.StatusShell.cs +++ b/Content.Server/GameTicking/ServerGameTicker.StatusShell.cs @@ -37,7 +37,7 @@ public sealed partial class ServerGameTicker ? joinQueueManager.ActualPlayersCount : _playerManager.PlayerCount; - players = _cfg.GetCVar(CCVars.AdminsCountInReportedPlayerCount) + players = Cfg.GetCVar(CCVars.AdminsCountInReportedPlayerCount) ? players : players - _adminManager.ActiveAdmins.Count(); // Corvax-Queue-End diff --git a/Content.Shared/Localizations/ContentLocalizationManager.cs b/Content.Shared/Localizations/ContentLocalizationManager.cs index b18471c2fa..bdab23a4a3 100644 --- a/Content.Shared/Localizations/ContentLocalizationManager.cs +++ b/Content.Shared/Localizations/ContentLocalizationManager.cs @@ -31,7 +31,7 @@ namespace Content.Shared.Localizations _loc.LoadCulture(culture); _loc.LoadCulture(fallbackCulture); // Corvax-Localization - _loc.SetFallbackCluture(fallbackCulture); // Corvax-Localization + _loc.SetFallbackCulture(fallbackCulture); // Corvax-Localization _loc.AddFunction(culture, "MANY", FormatMany); // Corvax-Localization: To prevent problems in auto-generated locale files _loc.AddFunction(culture, "PRESSURE", FormatPressure); _loc.AddFunction(culture, "POWERWATTS", FormatPowerWatts); From 2fcd036cf8f236ba3d128bca0be81ff8a6037c7d Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> Date: Thu, 17 Sep 2026 20:25:58 +0000 Subject: [PATCH 154/197] Fix Traitor briefings not playing. (#46055) frederick fastbear --- Content.Shared/GameTicking/Rules/TraitorRuleSystem.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Content.Shared/GameTicking/Rules/TraitorRuleSystem.cs b/Content.Shared/GameTicking/Rules/TraitorRuleSystem.cs index bce7e76751..4b0485cb8d 100644 --- a/Content.Shared/GameTicking/Rules/TraitorRuleSystem.cs +++ b/Content.Shared/GameTicking/Rules/TraitorRuleSystem.cs @@ -91,7 +91,7 @@ public abstract partial class TraitorRuleSystem : GameRuleSystem Date: Fri, 18 Sep 2026 04:12:59 +0000 Subject: [PATCH 155/197] Fix ancient 2022 ghost test failures (#46060) * fix ancient 2022 ghost test failures * remove my logs * update the comment to be accurate * remove braces * better loggeewafsafasafsafsfasfasfasafs * What does bro even do? --- .../Minds/MindTest.DeleteAllThenGhost.cs | 54 ------------------- .../Tests/SaveLoadSaveTest.cs | 12 +++++ .../GameTicking/ServerGameTicker.Spawning.cs | 10 ++-- Content.Server/Ghost/GhostSystem.cs | 35 +++++------- Content.Server/Mind/MindSystem.cs | 19 +++---- 5 files changed, 36 insertions(+), 94 deletions(-) delete mode 100644 Content.IntegrationTests/Tests/Minds/MindTest.DeleteAllThenGhost.cs diff --git a/Content.IntegrationTests/Tests/Minds/MindTest.DeleteAllThenGhost.cs b/Content.IntegrationTests/Tests/Minds/MindTest.DeleteAllThenGhost.cs deleted file mode 100644 index 5ebced5bd6..0000000000 --- a/Content.IntegrationTests/Tests/Minds/MindTest.DeleteAllThenGhost.cs +++ /dev/null @@ -1,54 +0,0 @@ -#nullable enable -using Robust.Shared.Console; -using Robust.Shared.GameObjects; -using Robust.Shared.Map; - -namespace Content.IntegrationTests.Tests.Minds; - -[TestFixture] -public sealed partial class MindTests -{ - [Test] - public async Task DeleteAllThenGhost() - { - var pair = Pair; - - // Client is connected with a valid entity & mind - Assert.That(pair.Client.EntMan.EntityExists(pair.Client.AttachedEntity)); - Assert.That(pair.Server.EntMan.EntityExists(pair.PlayerData?.Mind)); - - // Delete **everything** - var conHost = pair.Server.ResolveDependency(); - await pair.Server.WaitPost(() => conHost.ExecuteCommand("entities delete")); - await pair.RunTicksSync(5); - - Assert.That(pair.Server.EntMan.EntityCount, Is.EqualTo(0)); - - foreach (var ent in pair.Client.EntMan.GetEntities()) - { - Console.WriteLine(pair.Client.EntMan.ToPrettyString(ent)); - } - - Assert.That(pair.Client.EntMan.EntityCount, Is.EqualTo(0)); - - // Create a new map. - MapId mapId = default; - await pair.Server.WaitPost(() => pair.Server.System().CreateMap(out mapId)); - await pair.RunTicksSync(5); - - // Client is not attached to anything - Assert.That(pair.Client.AttachedEntity, Is.Null); - Assert.That(pair.PlayerData?.Mind, Is.Null); - - // Attempt to ghost - var cConHost = pair.Client.ResolveDependency(); - await pair.Client.WaitPost(() => cConHost.ExecuteCommand("ghost")); - await pair.RunTicksSync(10); - - // Client should be attached to a ghost placed on the new map. - Assert.That(pair.Client.EntMan.EntityExists(pair.Client.AttachedEntity)); - Assert.That(pair.Server.EntMan.EntityExists(pair.PlayerData?.Mind)); - var xform = pair.Client.Transform(pair.Client.AttachedEntity!.Value); - Assert.That(xform.MapID, Is.EqualTo(mapId)); - } -} diff --git a/Content.IntegrationTests/Tests/SaveLoadSaveTest.cs b/Content.IntegrationTests/Tests/SaveLoadSaveTest.cs index 7dfc2ffc1e..2506a0e5ba 100644 --- a/Content.IntegrationTests/Tests/SaveLoadSaveTest.cs +++ b/Content.IntegrationTests/Tests/SaveLoadSaveTest.cs @@ -94,6 +94,10 @@ namespace Content.IntegrationTests.Tests mapSystem.DeleteMap(mapId0); mapSystem.DeleteMap(mapId1); }); + foreach (var ent in SEntMan.GetEntities()) + { + Console.WriteLine(SEntMan.ToPrettyString(ent)); + } Assert.That(SEntMan.EntityCount.Equals(0), "Lingering entities at the end of CreateSaveLoadSaveGrid"); } @@ -177,6 +181,10 @@ namespace Content.IntegrationTests.Tests testSystem.Enabled = false; await server.WaitPost(() => mapSys.DeleteMap(mapId)); + foreach (var ent in SEntMan.GetEntities()) + { + Console.WriteLine(SEntMan.ToPrettyString(ent)); + } Assert.That(SEntMan.EntityCount.Equals(0), "Lingering entities at the end of LoadSaveTicksSaveBagel"); } @@ -253,6 +261,10 @@ namespace Content.IntegrationTests.Tests mapSys.DeleteMap(mapId1); mapSys.DeleteMap(mapId2); }); + foreach (var ent in SEntMan.GetEntities()) + { + Console.WriteLine(SEntMan.ToPrettyString(ent)); + } Assert.That(SEntMan.EntityCount.Equals(0), "Lingering entities at the end of LoadTickLoadBagel"); } diff --git a/Content.Server/GameTicking/ServerGameTicker.Spawning.cs b/Content.Server/GameTicking/ServerGameTicker.Spawning.cs index 67d79be7a1..b60e90f7e4 100644 --- a/Content.Server/GameTicking/ServerGameTicker.Spawning.cs +++ b/Content.Server/GameTicking/ServerGameTicker.Spawning.cs @@ -432,10 +432,9 @@ namespace Content.Server.GameTicking { _possiblePositions.Clear(); var spawnPointQuery = EntityQueryEnumerator(); - while (spawnPointQuery.MoveNext(out var uid, out var point, out var transform)) + while (spawnPointQuery.MoveNext(out var point, out var transform)) { if (point.SpawnType != SpawnPointType.Observer - || TerminatingOrDeleted(uid) || transform.MapUid == null || TerminatingOrDeleted(transform.MapUid.Value)) { @@ -451,7 +450,9 @@ namespace Content.Server.GameTicking var query = EntityQueryEnumerator(); while (query.MoveNext(out var uid, out _)) { - _possiblePositions.Add(new EntityCoordinates(uid, Vector2.Zero)); + // Band-aid fix cause we aren't queueing observer re-attach. + if (!TerminatingOrDeleted(uid)) + _possiblePositions.Add(new EntityCoordinates(uid, Vector2.Zero)); } } @@ -463,10 +464,9 @@ namespace Content.Server.GameTicking var spawn = Random.Pick(_possiblePositions); var toMap = XForm.ToMapCoordinates(spawn); - if (Map.TryFindGridAt(toMap, out var gridUid, out _)) + if (Map.TryFindGridAt(toMap, out var gridUid, out _) && !TerminatingOrDeleted(gridUid)) { var gridXform = Transform(gridUid); - return new EntityCoordinates(gridUid, Vector2.Transform(toMap.Position, XForm.GetInvWorldMatrix(gridXform))); } diff --git a/Content.Server/Ghost/GhostSystem.cs b/Content.Server/Ghost/GhostSystem.cs index 3c9d94c827..a507059d04 100644 --- a/Content.Server/Ghost/GhostSystem.cs +++ b/Content.Server/Ghost/GhostSystem.cs @@ -470,16 +470,8 @@ namespace Content.Server.Ghost if (spawnPosition?.IsValid(EntityManager) != true) return false; - var mapUid = _transformSystem.GetMap(spawnPosition.Value); - var gridUid = spawnPosition?.EntityId; - // Test if the map is being deleted - if (mapUid == null || TerminatingOrDeleted(mapUid.Value)) - return false; - // Test if the grid is being deleted - if (gridUid != null && TerminatingOrDeleted(gridUid.Value)) - return false; - - return true; + // Test if the parent is being deleted + return !TerminatingOrDeleted(spawnPosition.Value.EntityId); } public EntityUid? SpawnGhost(Entity mind, EntityCoordinates? spawnPosition = null, @@ -489,19 +481,18 @@ namespace Content.Server.Ghost return null; // Test if the map or grid is being deleted - if (!IsValidSpawnPosition(spawnPosition)) - spawnPosition = null; - - // If it's bad, look for a valid point to spawn - spawnPosition ??= _gameTicker.GetObserverSpawnPoint(); - - // Make sure the new point is valid too - if (!IsValidSpawnPosition(spawnPosition)) + if (spawnPosition == null || !IsValidSpawnPosition(spawnPosition)) { - Log.Warning($"No spawn valid ghost spawn position found for {mind.Comp.CharacterName}" - + $" \"{ToPrettyString(mind)}\""); - _minds.TransferTo(mind.Owner, null, createGhost: false, mind: mind.Comp); - return null; + // If it's bad, look for a valid point to spawn + spawnPosition = _gameTicker.GetObserverSpawnPoint(); + + // Make sure the new point is valid too + if (!IsValidSpawnPosition(spawnPosition)) + { + Log.Error($"Fallback spawn position: {spawnPosition} provided for {mind.Comp.CharacterName} {ToPrettyString(mind)} was not valid."); + _minds.TransferTo(mind.Owner, null, createGhost: false, mind: mind.Comp); + return null; + } } var ghost = SpawnAtPosition(ServerGameTicker.ObserverPrototypeName, spawnPosition.Value); diff --git a/Content.Server/Mind/MindSystem.cs b/Content.Server/Mind/MindSystem.cs index 826cbe9b2a..fec212ac02 100644 --- a/Content.Server/Mind/MindSystem.cs +++ b/Content.Server/Mind/MindSystem.cs @@ -25,14 +25,7 @@ public sealed partial class MindSystem : SharedMindSystem [Dependency] private SharedTransformSystem _transform = default!; [Dependency] private PvsOverrideSystem _pvsOverride = default!; - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnMindContainerTerminating); - SubscribeLocalEvent(OnMindShutdown); - } - + [SubscribeLocalEvent] private void OnMindShutdown(EntityUid uid, MindComponent mind, ComponentShutdown args) { if (mind.UserId is {} user) @@ -49,6 +42,8 @@ public sealed partial class MindSystem : SharedMindSystem mind.OwnedEntity = null; } + // TODO: This should not run on EntityTerminatingEvent, instead we should detach the mind and then queue transferring it. + [SubscribeLocalEvent] private void OnMindContainerTerminating(EntityUid uid, MindContainerComponent component, ref EntityTerminatingEvent args) { if (!TryGetMind(uid, out var mindId, out var mind, component)) @@ -57,8 +52,7 @@ public sealed partial class MindSystem : SharedMindSystem // If the player is currently visiting some other entity, simply attach to that entity. if (mind.VisitingEntity is {Valid: true} visiting && visiting != uid - && !Deleted(visiting) - && !Terminating(visiting)) + && !TerminatingOrDeleted(visiting)) { TransferTo(mindId, visiting, mind: mind); if (TryComp(visiting, out GhostComponent? ghostComp)) @@ -77,8 +71,7 @@ public sealed partial class MindSystem : SharedMindSystem // Log these to make sure they're not causing the GameTicker round restart bugs... Log.Debug($"Entity \"{ToPrettyString(uid)}\" for {mind.CharacterName} was deleted, spawned \"{ToPrettyString(ghost)}\"."); else - // This should be an error, if it didn't cause tests to start erroring when they delete a player. - Log.Warning($"Entity \"{ToPrettyString(uid)}\" for {mind.CharacterName} was deleted, and no applicable spawn location is available."); + Log.Error($"Entity \"{ToPrettyString(uid)}\" for {mind.CharacterName} was deleted, and no applicable spawn location is available."); } public override bool TryGetMind(NetUserId user, [NotNullWhen(true)] out EntityUid? mindId, [NotNullWhen(true)] out MindComponent? mind) @@ -181,7 +174,7 @@ public sealed partial class MindSystem : SharedMindSystem MindContainerComponent? component = null; var alreadyAttached = false; - if (entity != null) + if (entity != null && !TerminatingOrDeleted(entity)) { component = EnsureComp(entity.Value); From 2d25896763dc1df75ee57481d4608539188b8ea8 Mon Sep 17 00:00:00 2001 From: Whatstone <166147148+whatston3@users.noreply.github.com> Date: Fri, 18 Sep 2026 04:54:08 +0000 Subject: [PATCH 156/197] InstrumentMenu: Channels panel expands with the window (#46033) * Vertically expanding channels, -pointless Controls * scamboni * XAML control for the base midi CFG item --- .../Instruments/UI/ChannelsControl.xaml | 54 +++++++++---------- .../Instruments/UI/ChannelsControl.xaml.cs | 3 +- .../UI/InstrumentBoundUserInterface.cs | 5 +- .../Instruments/UI/InstrumentMenu.xaml | 2 +- .../Instruments/UI/InstrumentMenu.xaml.cs | 29 +++------- .../UI/MidiCollectionUtilsControl.xaml | 31 ++++++----- .../UI/MidiCollectionUtilsControl.xaml.cs | 3 +- .../UI/MidiConfigurationControl.xaml | 16 ++++++ .../UI/MidiConfigurationControl.xaml.cs | 7 +++ .../Instruments/UI/MinVolumeControl.xaml | 10 ++-- .../Instruments/UI/MinVolumeControl.xaml.cs | 3 +- 11 files changed, 85 insertions(+), 78 deletions(-) create mode 100644 Content.Client/Instruments/UI/MidiConfigurationControl.xaml create mode 100644 Content.Client/Instruments/UI/MidiConfigurationControl.xaml.cs diff --git a/Content.Client/Instruments/UI/ChannelsControl.xaml b/Content.Client/Instruments/UI/ChannelsControl.xaml index b3c69d660a..f52b622c5f 100644 --- a/Content.Client/Instruments/UI/ChannelsControl.xaml +++ b/Content.Client/Instruments/UI/ChannelsControl.xaml @@ -1,27 +1,27 @@ - - - - - - - - - diff --git a/Content.Client/Power/Battery/BatteryMenu.xaml.cs b/Content.Client/Power/Battery/BatteryMenu.xaml.cs index df3f15632f..b82adac7f6 100644 --- a/Content.Client/Power/Battery/BatteryMenu.xaml.cs +++ b/Content.Client/Power/Battery/BatteryMenu.xaml.cs @@ -1,5 +1,5 @@ using System.Diagnostics.CodeAnalysis; -using Content.Client.Stylesheets; +using Content.Client.Stylesheets.Palette; using Content.Client.UserInterface.Controls; using Content.Shared.Power; using Content.Shared.Rounding; @@ -29,10 +29,10 @@ public sealed partial class BatteryMenu : FancyWindow // Colors used for the storage cell bar graphic. private static readonly Color[] StorageColors = [ - StyleNano.DangerousRedFore, + Palettes.Status.Critical, Color.FromHex("#C49438"), Color.FromHex("#B3BF28"), - StyleNano.GoodGreenFore, + Palettes.Status.Good ]; // StorageColors but dimmed for "off" bars. diff --git a/Content.Client/Replay/UI/Loading/ReplayLoadingFailedControl.xaml.cs b/Content.Client/Replay/UI/Loading/ReplayLoadingFailedControl.xaml.cs index 4f74a7313f..65f2db8241 100644 --- a/Content.Client/Replay/UI/Loading/ReplayLoadingFailedControl.xaml.cs +++ b/Content.Client/Replay/UI/Loading/ReplayLoadingFailedControl.xaml.cs @@ -14,7 +14,7 @@ public sealed partial class ReplayLoadingFailedControl : Control { RobustXamlLoader.Load(this); - Stylesheet = stylesheet.SheetSpace; + Stylesheet = stylesheet.SheetSystem; LayoutContainer.SetAnchorPreset(this, LayoutContainer.LayoutPreset.Wide); } From 6763364c1005fbf98aa95c08c2e76dec7f1a57d2 Mon Sep 17 00:00:00 2001 From: AndrewFenriz <78079974+AndrewFenriz@users.noreply.github.com> Date: Sat, 19 Sep 2026 18:23:51 +0000 Subject: [PATCH 182/197] Clean up obsolete chat styles (#45868) * migrate * upd * update! --- Content.Client/Stylesheets/StyleNano.cs | 77 ------------------- .../Systems/Chat/Widgets/ChatBox.xaml | 4 +- 2 files changed, 1 insertion(+), 80 deletions(-) diff --git a/Content.Client/Stylesheets/StyleNano.cs b/Content.Client/Stylesheets/StyleNano.cs index 17496b7f46..91e4086c17 100644 --- a/Content.Client/Stylesheets/StyleNano.cs +++ b/Content.Client/Stylesheets/StyleNano.cs @@ -25,8 +25,6 @@ namespace Content.Client.Stylesheets public const string StyleClassBorderedWindowPanel = "BorderedWindowPanel"; public const string StyleClassInventorySlotBackground = "InventorySlotBackground"; public const string StyleClassHandSlotHighlight = "HandSlotHighlight"; - public const string StyleClassChatPanel = "ChatPanel"; - public const string StyleClassChatSubPanel = "ChatSubPanel"; public const string StyleClassHotbarPanel = "HotbarPanel"; public const string StyleClassTooltipPanel = "tooltipBox"; public const string StyleClassTooltipAlertTitle = "tooltipAlertTitle"; @@ -40,9 +38,6 @@ namespace Content.Client.Stylesheets public const string StyleClassHotbarSlotNumber = "hotbarSlotNumber"; public const string StyleClassActionSearchBox = "actionSearchBox"; public const string StyleClassActionMenuItemRevoked = "actionMenuItemRevoked"; - public const string StyleClassChatLineEdit = "chatLineEdit"; - public const string StyleClassChatChannelSelectorButton = "chatSelectorOptionButton"; - public const string StyleClassChatFilterOptionButton = "chatFilterOptionButton"; public const string StyleClassStorageButton = "storageButton"; public const string StyleClassConsoleHeading = "ConsoleHeading"; @@ -131,8 +126,6 @@ namespace Content.Client.Stylesheets public const string StyleClassButtonColorRed = "ButtonColorRed"; public const string StyleClassButtonColorGreen = "ButtonColorGreen"; - public static readonly Color ChatBackgroundColor = Color.FromHex("#25252ADD"); - // i'm not sure what the missing symbols were referencing, and this is getting obseleted anyway so: public const string ButtonOpenRight = "OpenRight"; public const string ButtonOpenLeft = "OpenLeft"; @@ -292,22 +285,6 @@ namespace Content.Client.Stylesheets }; topButtonSquare.SetPatchMargin(StyleBox.Margin.Horizontal, 0); - var chatChannelButtonTex = resCache.GetTexture("/Textures/Interface/Nano/rounded_button.svg.96dpi.png"); - var chatChannelButton = new StyleBoxTexture - { - Texture = chatChannelButtonTex, - }; - chatChannelButton.SetPatchMargin(StyleBox.Margin.All, 5); - chatChannelButton.SetPadding(StyleBox.Margin.All, 2); - - var chatFilterButtonTex = resCache.GetTexture("/Textures/Interface/Nano/rounded_button_bordered.svg.96dpi.png"); - var chatFilterButton = new StyleBoxTexture - { - Texture = chatFilterButtonTex, - }; - chatFilterButton.SetPatchMargin(StyleBox.Margin.All, 5); - chatFilterButton.SetPadding(StyleBox.Margin.All, 2); - var outputPanelScrollDownButtonTex = resCache.GetTexture("/Textures/Interface/Nano/rounded_button_half_bordered.svg.96dpi.png"); var outputPanelScrollDownButton = new StyleBoxTexture { @@ -334,17 +311,6 @@ namespace Content.Client.Stylesheets lineEdit.SetPatchMargin(StyleBox.Margin.All, 3); lineEdit.SetContentMarginOverride(StyleBox.Margin.Horizontal, 5); - var chatBg = new StyleBoxFlat - { - BackgroundColor = ChatBackgroundColor - }; - - var chatSubBg = new StyleBoxFlat - { - BackgroundColor = ChatBackgroundColor, - }; - chatSubBg.SetContentMarginOverride(StyleBox.Margin.All, 2); - var actionSearchBoxTex = resCache.GetTexture("/Textures/Interface/Nano/black_panel_dark_thin_border.png"); var actionSearchBox = new StyleBoxTexture { @@ -793,21 +759,6 @@ namespace Content.Client.Stylesheets Element().Pseudo(TextEdit.StylePseudoClassPlaceholder) .Prop("font-color", Color.Gray), - // chat subpanels (chat lineedit backing, popup backings) - new StyleRule(new SelectorElement(typeof(PanelContainer), new[] {StyleClassChatPanel}, null, null), - new[] - { - new StyleProperty(PanelContainer.StylePropertyPanel, chatBg), - }), - - // Chat lineedit - we don't actually draw a stylebox around the lineedit itself, we put it around the - // input + other buttons, so we must clear the default stylebox - new StyleRule(new SelectorElement(typeof(LineEdit), new[] {StyleClassChatLineEdit}, null, null), - new[] - { - new StyleProperty(LineEdit.StylePropertyStyleBox, new StyleBoxEmpty()), - }), - // Action searchbox lineedit new StyleRule(new SelectorElement(typeof(LineEdit), new[] {StyleClassActionSearchBox}, null, null), new[] @@ -1106,34 +1057,6 @@ namespace Content.Client.Stylesheets new StyleProperty(Slider.StylePropertyFill, sliderFillWhite), }), - // chat channel option selector - new StyleRule(new SelectorElement(typeof(Button), new[] {StyleClassChatChannelSelectorButton}, null, null), new[] - { - new StyleProperty(Button.StylePropertyStyleBox, chatChannelButton), - }), - - // chat filter button - new StyleRule(new SelectorElement(typeof(ContainerButton), new[] {StyleClassChatFilterOptionButton}, null, null), new[] - { - new StyleProperty(ContainerButton.StylePropertyStyleBox, chatFilterButton), - }), - new StyleRule(new SelectorElement(typeof(ContainerButton), new[] {StyleClassChatFilterOptionButton}, null, new[] {ContainerButton.StylePseudoClassNormal}), new[] - { - new StyleProperty(Control.StylePropertyModulateSelf, ButtonColorDefault), - }), - new StyleRule(new SelectorElement(typeof(ContainerButton), new[] {StyleClassChatFilterOptionButton}, null, new[] {ContainerButton.StylePseudoClassHover}), new[] - { - new StyleProperty(Control.StylePropertyModulateSelf, ButtonColorHovered), - }), - new StyleRule(new SelectorElement(typeof(ContainerButton), new[] {StyleClassChatFilterOptionButton}, null, new[] {ContainerButton.StylePseudoClassPressed}), new[] - { - new StyleProperty(Control.StylePropertyModulateSelf, ButtonColorPressed), - }), - new StyleRule(new SelectorElement(typeof(ContainerButton), new[] {StyleClassChatFilterOptionButton}, null, new[] {ContainerButton.StylePseudoClassDisabled}), new[] - { - new StyleProperty(Control.StylePropertyModulateSelf, ButtonColorDisabled), - }), - // output panel scroll button Element /// -public sealed partial class AdjustAlertEntityEffectSysten : EntityEffectSystem +public sealed partial class AdjustAlertEntityEffectSystem : EntityEffectSystem { [Dependency] private IGameTiming _timing = default!; [Dependency] private AlertsSystem _alerts = default!; From 9b31c2a92990065e68513f73bfaaff0e320cbcee Mon Sep 17 00:00:00 2001 From: Centronias Date: Sat, 19 Sep 2026 19:58:53 +0000 Subject: [PATCH 184/197] Parcel wrap bugfix + multihandedness enhancement (#43956) * parcel wrap enhancements: - bugfix: can't wrap stuff that can't be picked up because it's static (ie. usually anchored, maybe other cases, idk) - enhancement: multi-handedness is inherited by the parcel from its contents - technical: migrate to `EntityQuery` dependencies for all component lookups. * Apply suggestion from @Centronias * Update Content.Shared/ParcelWrap/Systems/ParcelWrappingSystem.cs * Update ParcelWrappingSystem.cs --------- Co-authored-by: Pok <113675512+Pok27@users.noreply.github.com> --- .../Components/WrappedParcelComponent.cs | 7 +++++ .../ParcelWrappingSystem.ParcelWrap.cs | 2 +- .../ParcelWrappingSystem.WrappedParcel.cs | 27 ++++++++++++------- .../Systems/ParcelWrappingSystem.cs | 14 +++++++++- 4 files changed, 38 insertions(+), 12 deletions(-) diff --git a/Content.Shared/ParcelWrap/Components/WrappedParcelComponent.cs b/Content.Shared/ParcelWrap/Components/WrappedParcelComponent.cs index 17c6ef46cb..6d597c64d1 100644 --- a/Content.Shared/ParcelWrap/Components/WrappedParcelComponent.cs +++ b/Content.Shared/ParcelWrap/Components/WrappedParcelComponent.cs @@ -61,6 +61,13 @@ public sealed partial class WrappedParcelComponent : Component [DataField, AutoNetworkedField] public bool GetsShapeFromContent; + /// + /// If true, the owner of this entity has added if any item inserted into + /// has that component. + /// + [DataField, AutoNetworkedField] + public bool GetsMultiHandednessFromContent = true; + /// /// If a player trapped inside this parcel can escape from it by unwrapping it. /// This is set by the used to create the parcel. diff --git a/Content.Shared/ParcelWrap/Systems/ParcelWrappingSystem.ParcelWrap.cs b/Content.Shared/ParcelWrap/Systems/ParcelWrappingSystem.ParcelWrap.cs index a2d47f9f59..a95de6794a 100644 --- a/Content.Shared/ParcelWrap/Systems/ParcelWrappingSystem.ParcelWrap.cs +++ b/Content.Shared/ParcelWrap/Systems/ParcelWrappingSystem.ParcelWrap.cs @@ -88,7 +88,7 @@ public sealed partial class ParcelWrappingSystem { var duration = wrapper.Comp.WrapDelay; - if (TryComp(target, out var overrideComp) && + if (_parcelWrapOverrideQuery.TryComp(target, out var overrideComp) && overrideComp.WrapDelay is { } wrapDelayOverride) duration = wrapDelayOverride; diff --git a/Content.Shared/ParcelWrap/Systems/ParcelWrappingSystem.WrappedParcel.cs b/Content.Shared/ParcelWrap/Systems/ParcelWrappingSystem.WrappedParcel.cs index 8a5a8f4fc3..7374fdd682 100644 --- a/Content.Shared/ParcelWrap/Systems/ParcelWrappingSystem.WrappedParcel.cs +++ b/Content.Shared/ParcelWrap/Systems/ParcelWrappingSystem.WrappedParcel.cs @@ -32,7 +32,10 @@ public sealed partial class ParcelWrappingSystem entity.Comp.Contents = _container.EnsureContainer(entity, entity.Comp.ContainerId); } - private void OnEntInsertedIntoContainer(Entity entity, ref EntInsertedIntoContainerMessage args) + private void OnEntInsertedIntoContainer( + Entity entity, + ref EntInsertedIntoContainerMessage args + ) { // If the entity was inserted because of a server state application, assume that the item's state is applied // correctly as well and that deriving them from the contents is unneeded. @@ -40,12 +43,10 @@ public sealed partial class ParcelWrappingSystem return; if (args.Container != entity.Comp.Contents || - !TryComp(entity, out var parcelItemComp)) + !_itemQuery.TryComp(entity, out var parcelItemComp)) return; - // If this wrap maintains the size when wrapping, set the parcel's size to the target's size, or the fallback - // size if the target does not have a size. - var targetItemComp = CompOrNull(args.Entity); + var targetItemComp = _itemQuery.CompOrNull(args.Entity); if (entity.Comp.GetsSizeFromContent) { var size = targetItemComp?.Size ?? _fallbackParcelSize; @@ -53,12 +54,16 @@ public sealed partial class ParcelWrappingSystem _appearance.SetData(entity, WrappedParcelVisuals.Size, size.Id); } - // If this wrap maintains the shape when wrapping and the item has a shape override, copy the shape override to - // the parcel. if (entity.Comp.GetsShapeFromContent) { _item.SetShape(entity, targetItemComp?.Shape, parcelItemComp); } + + if (entity.Comp.GetsMultiHandednessFromContent && + _multiHandedItemQuery.TryComp(args.Entity, out var multiHandedItemComp)) + { + EnsureComp(entity).HandsNeeded = multiHandedItemComp.HandsNeeded; + } } private void OnUseInHand(Entity entity, ref UseInHandEvent args) @@ -69,8 +74,10 @@ public sealed partial class ParcelWrappingSystem args.Handled = TryStartUnwrapDoAfter(args.User, entity); } - private void OnGetVerbsForWrappedParcel(Entity entity, - ref GetVerbsEvent args) + private void OnGetVerbsForWrappedParcel( + Entity entity, + ref GetVerbsEvent args + ) { if (!args.CanAccess || !args.CanComplexInteract) return; @@ -93,7 +100,7 @@ public sealed partial class ParcelWrappingSystem if (args.Handled || args.Cancelled) return; - if (args.Target is { } target && TryComp(target, out var parcel)) + if (args.Target is { } target && _wrappedParcelQuery.TryComp(target, out var parcel)) { UnwrapInternal(args.User, (target, parcel)); args.Handled = true; diff --git a/Content.Shared/ParcelWrap/Systems/ParcelWrappingSystem.cs b/Content.Shared/ParcelWrap/Systems/ParcelWrappingSystem.cs index 84856ac73d..ea9fa0d8a1 100644 --- a/Content.Shared/ParcelWrap/Systems/ParcelWrappingSystem.cs +++ b/Content.Shared/ParcelWrap/Systems/ParcelWrappingSystem.cs @@ -4,8 +4,11 @@ using Content.Shared.Item; using Content.Shared.ParcelWrap.Components; using Content.Shared.Popups; using Content.Shared.Whitelist; +using JetBrains.Annotations; using Robust.Shared.Audio.Systems; using Robust.Shared.Containers; +using Robust.Shared.Physics; +using Robust.Shared.Physics.Components; namespace Content.Shared.ParcelWrap.Systems; @@ -27,6 +30,12 @@ public sealed partial class ParcelWrappingSystem : EntitySystem [Dependency] private SharedTransformSystem _transform = default!; [Dependency] private EntityWhitelistSystem _whitelist = default!; + [Dependency] private EntityQuery _itemQuery = default!; + [Dependency] private EntityQuery _multiHandedItemQuery = default!; + [Dependency] private EntityQuery _parcelWrapOverrideQuery = default!; + [Dependency] private EntityQuery _physicsQuery = default!; + [Dependency] private EntityQuery _wrappedParcelQuery = default!; + /// public override void Initialize() { @@ -42,6 +51,7 @@ public sealed partial class ParcelWrappingSystem : EntitySystem /// The entity doing the wrapping. /// The entity to be wrapped. /// True if can be used to wrap , false otherwise. + [PublicAPI] public bool IsWrappable(Entity wrapper, EntityUid target) { return @@ -49,6 +59,8 @@ public sealed partial class ParcelWrappingSystem : EntitySystem wrapper.Owner != target && // Wrapper should never be empty, but may as well make sure. !_charges.IsEmpty(wrapper.Owner) && - _whitelist.CheckBoth(target, wrapper.Comp.Blacklist, wrapper.Comp.Whitelist); + _whitelist.CheckBoth(target, wrapper.Comp.Blacklist, wrapper.Comp.Whitelist) && + // If it can't be moved, it shouldn't be able to go into a parcel and picked up. + _physicsQuery.TryComp(target, out var physics) && physics.BodyType != BodyType.Static; } } From 5ea431e0e0d8e2bf4e3417b60fce5083c9f6c7d1 Mon Sep 17 00:00:00 2001 From: Dmitry <57028746+DIMMoon1@users.noreply.github.com> Date: Sun, 20 Sep 2026 03:12:58 +0700 Subject: [PATCH 185/197] GameTicker upstream fix StationEvents --- Content.Server/StationEvents/Events/PowerGridCheckRule.cs | 5 +++++ Content.Server/StationEvents/Events/StationEventSystem.cs | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/Content.Server/StationEvents/Events/PowerGridCheckRule.cs b/Content.Server/StationEvents/Events/PowerGridCheckRule.cs index 24a08be7b4..7005ca8fe5 100644 --- a/Content.Server/StationEvents/Events/PowerGridCheckRule.cs +++ b/Content.Server/StationEvents/Events/PowerGridCheckRule.cs @@ -135,6 +135,11 @@ namespace Content.Server.StationEvents.Events // Can't use the default EndAudio rule.Comp.AnnounceCancelToken?.Cancel(); + + // Corvax-Announcements-fix временная заплатка, удалить после реворка https://github.com/space-wizards/space-station-14/issues/46073 + if (MetaData(rule).EntityLifeStage >= EntityLifeStage.Terminating) + return; + rule.Comp.AnnounceCancelToken = new CancellationTokenSource(); Timer.Spawn(3000, () => diff --git a/Content.Server/StationEvents/Events/StationEventSystem.cs b/Content.Server/StationEvents/Events/StationEventSystem.cs index b5da5355fe..4712d348ce 100644 --- a/Content.Server/StationEvents/Events/StationEventSystem.cs +++ b/Content.Server/StationEvents/Events/StationEventSystem.cs @@ -78,6 +78,10 @@ public abstract partial class StationEventSystem : GameRuleSystem where T AdminLogManager.Add(LogType.EventStopped, $"Event ended: {ToPrettyString(rule)}"); + // Corvax-Announcements-fix временная заплатка, удалить после реворка https://github.com/space-wizards/space-station-14/issues/46073 + if (MetaData(rule).EntityLifeStage >= EntityLifeStage.Terminating) + return; + // we don't want to send to players who aren't in game (i.e. in the lobby) Filter allPlayersInGame = Filter.Empty().AddWhere(GameTicker.UserHasJoinedGame); From 70cd75a247f4d82212bfa26ee63f1510aac7e13f Mon Sep 17 00:00:00 2001 From: AndrewFenriz <78079974+AndrewFenriz@users.noreply.github.com> Date: Sat, 19 Sep 2026 20:16:18 +0000 Subject: [PATCH 186/197] Standardize UI separators (#45820) * remove unused using * move VSeparator * remove unused using * move HSeparator * remove BOM * add Separator * migrate * fix separator migration * remove old separators * clean separator migration * clean separator formatting * cleanup * update SeparatorSheetlet --- .../Access/UI/AgentIDCardWindow.xaml | 2 +- .../UI/GroupedAccessLevelChecklist.xaml | 8 +- .../Administration/AdminQuickInfoSystem.cs | 6 +- .../UI/BanList/Bans/BanListControl.xaml.cs | 5 +- .../UI/BanList/Bans/BanListHeader.xaml | 12 +-- .../UI/BanList/Bans/BanListLine.xaml | 12 +-- .../RoleBans/RoleBanListControl.xaml.cs | 5 +- .../BanList/RoleBans/RoleBanListHeader.xaml | 14 ++-- .../UI/BanList/RoleBans/RoleBanListLine.xaml | 14 ++-- .../Administration/UI/BanPanel/BanPanel.xaml | 3 +- .../UI/BanPanel/BanPanel.xaml.cs | 5 +- .../UI/CustomControls/AdminLogLabel.cs | 5 +- .../UI/CustomControls/HSeparator.cs | 25 ------ .../UI/CustomControls/VSeparator.cs | 26 ------ .../UI/Logs/AdminLogsControl.xaml | 8 +- .../UI/Logs/AdminLogsControl.xaml.cs | 4 +- .../UI/Notes/AdminNotesLine.xaml | 14 ++-- .../UI/Tabs/ObjectsTab/ObjectsTab.xaml | 7 +- .../UI/Tabs/ObjectsTab/ObjectsTabEntry.xaml | 9 +- .../UI/Tabs/ObjectsTab/ObjectsTabHeader.xaml | 4 +- .../UI/Tabs/PlayerTab/PlayerTab.xaml | 5 +- .../UI/Tabs/PlayerTab/PlayerTabEntry.xaml | 12 +-- .../UI/Tabs/PlayerTab/PlayerTabHeader.xaml | 12 +-- .../Anomaly/Ui/AnomalyGeneratorWindow.xaml | 2 +- .../Arcade/SpaceVillainArcadeMenu.xaml | 5 +- .../Consoles/AtmosAlertsComputerWindow.xaml | 2 +- .../AtmosMonitoringConsoleWindow.xaml | 3 +- Content.Client/BarSign/Ui/BarSignMenu.xaml | 5 +- Content.Client/Cargo/UI/BountyEntry.xaml | 6 +- .../Cargo/UI/BountyHistoryEntry.xaml | 4 +- Content.Client/Cargo/UI/CargoBountyMenu.xaml | 4 +- Content.Client/Cargo/UI/CargoConsoleMenu.xaml | 14 ++-- .../Cargo/UI/CargoConsoleMenu.xaml.cs | 10 +-- .../Cargo/UI/CargoConsoleOrderMenu.xaml | 3 +- Content.Client/Cargo/UI/CargoOrderRow.xaml | 10 +-- .../Cartridges/LogProbeUiEntry.xaml | 6 +- .../Cartridges/NewsReaderUiFragment.xaml | 3 +- .../Cartridges/WantedListUiFragment.xaml | 6 +- Content.Client/Changelog/ChangelogTab.xaml.cs | 3 +- Content.Client/Changelog/ChangelogWindow.xaml | 5 +- .../CriminalRecordsConsoleWindow.xaml | 6 +- Content.Client/Fax/UI/FaxWindow.xaml | 3 +- .../Controls/GuideReagentReaction.xaml | 5 +- .../Controls/GuideTechnologyEmbed.xaml | 6 +- .../Guidebook/Controls/GuidebookWindow.xaml | 3 +- .../UI/HealthAnalyzerControl.xaml | 7 +- Content.Client/Holopad/HolopadWindow.xaml | 2 +- .../PlaytimeStats/PlaytimeStatsEntry.xaml | 4 +- .../PlaytimeStats/PlaytimeStatsHeader.xaml | 6 +- .../PlaytimeStats/PlaytimeStatsWindow.xaml | 3 +- Content.Client/Kitchen/UI/MicrowaveMenu.xaml | 4 +- .../Launcher/LauncherConnectingGui.xaml | 2 +- .../Lobby/UI/HumanoidProfileEditor.xaml | 6 +- Content.Client/Lobby/UI/LobbyGui.xaml | 5 +- .../MassMedia/Ui/ArticleEditorPanel.xaml | 3 +- .../Mech/Ui/MechEquipmentControl.xaml | 4 +- .../CrewMonitoring/CrewMonitoringWindow.xaml | 2 +- Content.Client/Options/UI/EscapeMenu.xaml | 10 +-- .../UI/ParticleAcceleratorControlMenu.xaml | 2 +- .../Pinpointer/UI/StationMapWindow.xaml | 2 +- Content.Client/Power/APC/UI/ApcMenu.xaml | 2 +- Content.Client/Power/Battery/BatteryMenu.xaml | 3 +- .../Power/Generator/GeneratorWindow.xaml | 3 +- .../Power/PowerMonitoringWindow.xaml | 3 +- Content.Client/Radio/Ui/IntercomMenu.xaml | 4 +- .../Research/UI/ResearchConsoleMenu.xaml | 7 +- .../Research/UI/TechnologyCardControl.xaml | 6 +- .../Robotics/UI/RoboticsConsoleWindow.xaml | 4 +- Content.Client/Salvage/UI/JobEntry.xaml | 6 +- Content.Client/Salvage/UI/OfferingWindow.xaml | 2 +- .../Salvage/UI/SalvageJobBoardMenu.xaml | 4 +- .../SensorMonitoringWindow.xaml.cs | 2 +- Content.Client/Silicons/Borgs/BorgMenu.xaml | 9 +- .../Silicons/Borgs/BorgSelectTypeMenu.xaml | 5 +- .../SiliconLawEditUi/SiliconLawContainer.xaml | 6 +- .../Silicons/Laws/Ui/LawDisplay.xaml | 5 +- .../Silicons/Laws/Ui/SiliconLawMenu.xaml | 2 +- .../StationAiFixerConsoleWindow.xaml | 4 +- .../SmartFridge/SmartFridgeMenu.xaml | 2 +- .../SprayPainter/UI/SprayPainterDecals.xaml | 9 +- .../StationTeleporterConsoleWindow.xaml | 2 +- .../Store/Ui/StoreListingControl.xaml | 5 +- Content.Client/Store/Ui/StoreMenu.xaml | 3 +- .../Stylesheets/Sheetlets/DividersSheetlet.cs | 34 -------- .../Stylesheets/Sheetlets/HLineSheetlet.cs | 26 ------ .../Sheetlets/SeparatorSheetlet.cs | 26 ++++++ Content.Client/Stylesheets/StyleNano.cs | 16 ---- Content.Client/Stylesheets/StyleSpace.cs | 14 ---- Content.Client/Thief/ThiefBackpackMenu.xaml | 2 +- Content.Client/Thief/ThiefBackpackSet.xaml | 2 +- .../TurretControllerWindow.xaml | 18 +--- .../UserInterface/Controls/FancyWindow.xaml | 2 +- .../UserInterface/Controls/HLine.cs | 41 ---------- .../UserInterface/Controls/HighDivider.cs | 14 ---- .../UserInterface/Controls/Separator.cs | 82 +++++++++++++++++++ .../Ghost/Controls/GhostTargetWindow.xaml | 5 +- .../Controls/Roles/GhostRoleInfoBox.xaml | 3 +- .../UI/VendingMachineMenu.xaml | 5 +- Content.Client/Voting/UI/VoteCallMenu.xaml | 4 +- .../Ui/AnalysisConsoleMenu.xaml | 5 +- .../Menu/ReplayMainMenuControl.xaml | 3 +- 101 files changed, 342 insertions(+), 451 deletions(-) delete mode 100644 Content.Client/Administration/UI/CustomControls/HSeparator.cs delete mode 100644 Content.Client/Administration/UI/CustomControls/VSeparator.cs delete mode 100644 Content.Client/Stylesheets/Sheetlets/DividersSheetlet.cs delete mode 100644 Content.Client/Stylesheets/Sheetlets/HLineSheetlet.cs create mode 100644 Content.Client/Stylesheets/Sheetlets/SeparatorSheetlet.cs delete mode 100644 Content.Client/UserInterface/Controls/HLine.cs delete mode 100644 Content.Client/UserInterface/Controls/HighDivider.cs create mode 100644 Content.Client/UserInterface/Controls/Separator.cs diff --git a/Content.Client/Access/UI/AgentIDCardWindow.xaml b/Content.Client/Access/UI/AgentIDCardWindow.xaml index 6030851114..aa08172567 100644 --- a/Content.Client/Access/UI/AgentIDCardWindow.xaml +++ b/Content.Client/Access/UI/AgentIDCardWindow.xaml @@ -38,7 +38,7 @@ - + diff --git a/Content.Client/Access/UI/GroupedAccessLevelChecklist.xaml b/Content.Client/Access/UI/GroupedAccessLevelChecklist.xaml index 84d581487d..6eeed8a555 100644 --- a/Content.Client/Access/UI/GroupedAccessLevelChecklist.xaml +++ b/Content.Client/Access/UI/GroupedAccessLevelChecklist.xaml @@ -1,5 +1,5 @@ - - - - - + diff --git a/Content.Client/Administration/AdminQuickInfoSystem.cs b/Content.Client/Administration/AdminQuickInfoSystem.cs index 846dd3f0f0..778d33a221 100644 --- a/Content.Client/Administration/AdminQuickInfoSystem.cs +++ b/Content.Client/Administration/AdminQuickInfoSystem.cs @@ -1,3 +1,4 @@ +using Content.Client.UserInterface.Controls; using System.Linq; using Content.Client.Administration.Systems; using Content.Client.Stylesheets; @@ -5,7 +6,6 @@ using Content.Shared.Administration; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using Robust.Shared.Console; -using Robust.Shared.Prototypes; using Robust.Shared.RichText; using Robust.Shared.Utility; @@ -59,7 +59,7 @@ internal sealed partial class AdminQuickInfoSystem : EntitySystem public void OpenPopupFor(NetEntity[] entities) { - var vBox = new VBox() { SeparationOverride = 6 };; + var vBox = new VBox() { SeparationOverride = 6 }; var popup = new Popup { Children = @@ -79,7 +79,7 @@ internal sealed partial class AdminQuickInfoSystem : EntitySystem { if (!first) { - vBox.AddChild(new PanelContainer + vBox.AddChild(new Separator { StyleClasses = { StyleClass.LowDivider }, HorizontalExpand = true, diff --git a/Content.Client/Administration/UI/BanList/Bans/BanListControl.xaml.cs b/Content.Client/Administration/UI/BanList/Bans/BanListControl.xaml.cs index 9bf85b2dfe..857483c565 100644 --- a/Content.Client/Administration/UI/BanList/Bans/BanListControl.xaml.cs +++ b/Content.Client/Administration/UI/BanList/Bans/BanListControl.xaml.cs @@ -1,4 +1,5 @@ -using Content.Client.Administration.UI.CustomControls; +using Content.Client.Stylesheets; +using Content.Client.UserInterface.Controls; using Content.Shared.Administration.BanList; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface; @@ -25,7 +26,7 @@ public sealed partial class BanListControl : Control foreach (var ban in bans) { - Bans.AddChild(new HSeparator()); + Bans.AddChild(new Separator { StyleClasses = { StyleClass.LowDivider } }); var line = new BanListLine(ban); line.IdsClicked += LineIdsClicked; diff --git a/Content.Client/Administration/UI/BanList/Bans/BanListHeader.xaml b/Content.Client/Administration/UI/BanList/Bans/BanListHeader.xaml index 00a652175c..58b315e2b4 100644 --- a/Content.Client/Administration/UI/BanList/Bans/BanListHeader.xaml +++ b/Content.Client/Administration/UI/BanList/Bans/BanListHeader.xaml @@ -1,6 +1,6 @@ - + xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls"> - + - + @@ -40,7 +40,7 @@ - + diff --git a/Content.Client/Administration/UI/Logs/AdminLogsControl.xaml.cs b/Content.Client/Administration/UI/Logs/AdminLogsControl.xaml.cs index 8b5afbeb08..64a3d86fb0 100644 --- a/Content.Client/Administration/UI/Logs/AdminLogsControl.xaml.cs +++ b/Content.Client/Administration/UI/Logs/AdminLogsControl.xaml.cs @@ -1,6 +1,8 @@ using System.Linq; using System.Runtime.InteropServices; using Content.Client.Administration.UI.CustomControls; +using Content.Client.Stylesheets; +using Content.Client.UserInterface.Controls; using Content.Shared.Administration.Logs; using Content.Shared.Database; using Robust.Client.AutoGenerated; @@ -486,7 +488,7 @@ public sealed partial class AdminLogsControl : Control for (var i = 0; i < span.Length; i++) { ref var log = ref span[i]; - var separator = new HSeparator(); + var separator = new Separator { StyleClasses = { StyleClass.LowDivider } }; var label = new AdminLogLabel(ref log, separator); label.Visible = ShouldShowLog(label); diff --git a/Content.Client/Administration/UI/Notes/AdminNotesLine.xaml b/Content.Client/Administration/UI/Notes/AdminNotesLine.xaml index aca2d3a235..ce668224d5 100644 --- a/Content.Client/Administration/UI/Notes/AdminNotesLine.xaml +++ b/Content.Client/Administration/UI/Notes/AdminNotesLine.xaml @@ -1,23 +1,23 @@ diff --git a/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTab.xaml b/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTab.xaml index f4298bbc00..b0c9ae4d57 100644 --- a/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTab.xaml +++ b/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTab.xaml @@ -1,5 +1,4 @@ - @@ -10,10 +9,10 @@ SizeFlagsStretchRatio="1" /> diff --git a/Content.Client/Medical/CrewMonitoring/CrewMonitoringWindow.xaml b/Content.Client/Medical/CrewMonitoring/CrewMonitoringWindow.xaml index 86e1ce689a..637cd44870 100644 --- a/Content.Client/Medical/CrewMonitoring/CrewMonitoringWindow.xaml +++ b/Content.Client/Medical/CrewMonitoring/CrewMonitoringWindow.xaml @@ -40,7 +40,7 @@ - + - + @@ -38,4 +39,4 @@ - + diff --git a/Content.Client/StationTeleporter/StationTeleporterConsoleWindow.xaml b/Content.Client/StationTeleporter/StationTeleporterConsoleWindow.xaml index b3672ebc45..f5022a80cd 100644 --- a/Content.Client/StationTeleporter/StationTeleporterConsoleWindow.xaml +++ b/Content.Client/StationTeleporter/StationTeleporterConsoleWindow.xaml @@ -37,7 +37,7 @@ - + [DataField] - public SoundSpecifier? TurnSound = new SoundPathSpecifier("/Audio/Items/ratchet.ogg", AudioParams.Default.WithVolume(-6)); + public SoundSpecifier? TurnSound = new SoundPathSpecifier("/Audio/Effects/teleport_arrival.ogg", AudioParams.Default.WithVolume(-6)); /// /// Sound to play when the turnstile denies entry From b9a1650d4e88a511277f66f561f2784b7332ee26 Mon Sep 17 00:00:00 2001 From: little-meow-meow <204685920+little-meow-meow@users.noreply.github.com> Date: Sat, 19 Sep 2026 21:02:03 +0000 Subject: [PATCH 191/197] feat: ambience volume controls weather sfx volume (#45880) * feat: weather volume slider Signed-off-by: little-meow-meow <204685920+little-meow-meow@users.noreply.github.com> * use ambience volume --------- Signed-off-by: little-meow-meow <204685920+little-meow-meow@users.noreply.github.com> --- Content.Client/Weather/WeatherSystem.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Content.Client/Weather/WeatherSystem.cs b/Content.Client/Weather/WeatherSystem.cs index db420cb679..40c5bba5b3 100644 --- a/Content.Client/Weather/WeatherSystem.cs +++ b/Content.Client/Weather/WeatherSystem.cs @@ -1,4 +1,5 @@ using System.Numerics; +using Content.Shared.CCVar; using Content.Shared.Light.Components; using Content.Shared.StatusEffectNew.Components; using Content.Shared.Weather; @@ -7,6 +8,7 @@ using Robust.Client.GameObjects; using Robust.Client.Player; using Robust.Shared.Audio.Components; using Robust.Shared.Audio.Systems; +using Robust.Shared.Configuration; using Robust.Shared.Map; using Robust.Shared.Map.Components; using Robust.Shared.Player; @@ -19,15 +21,19 @@ public sealed partial class WeatherSystem : SharedWeatherSystem [Dependency] private AudioSystem _audio = default!; [Dependency] private MapSystem _mapSystem = default!; [Dependency] private SharedTransformSystem _transform = default!; + [Dependency] private IConfigurationManager _cfg = default!; [Dependency] private EntityQuery _audioQuery = default!; [Dependency] private EntityQuery _gridQuery = default!; [Dependency] private EntityQuery _roofQuery = default!; + private float _weatherGain; + public override void Initialize() { base.Initialize(); + Subs.CVar(_cfg, CCVars.AmbienceVolume, value => _weatherGain = value, true); SubscribeLocalEvent(OnComponentShutdown); } @@ -129,6 +135,7 @@ public sealed partial class WeatherSystem : SharedWeatherSystem var alpha = GetWeatherPercent((uid, status)); alpha *= SharedAudioSystem.VolumeToGain(weather.Sound.Params.Volume); + alpha *= _weatherGain; _audio.SetGain(weather.Stream, alpha, audio); audio.Occlusion = occlusion; } From 32b60ae36c7f6e026357511a7b7d4e9fc9795bfe Mon Sep 17 00:00:00 2001 From: Whatstone <166147148+whatston3@users.noreply.github.com> Date: Sat, 19 Sep 2026 21:04:10 +0000 Subject: [PATCH 192/197] Airlock pass: rotate on construction, consistent names, hide placeholder assemblies (#45451) * rotatable airlock & firelock construction * rename external/docking airlocks + consistency * a semblance of airlock label consistency * assemblyshuttle vs. shuttleassembly, no syndie assembly * HideSpawnMenu for assembly * revert migration, fix AssemblyShuttle parent --- .../en-US/construction/recipes/structures.ftl | 2 +- .../Structures/Doors/Airlocks/access.yml | 24 ++++----- .../Structures/Doors/Airlocks/assembly.yml | 53 ++++++++++++++++--- .../Doors/Airlocks/base_assembly.yml | 2 +- .../Structures/Doors/Airlocks/external.yml | 4 +- .../Structures/Doors/Airlocks/shuttle.yml | 21 ++++---- .../Recipes/Construction/structures.yml | 9 ++-- 7 files changed, 75 insertions(+), 40 deletions(-) diff --git a/Resources/Locale/en-US/construction/recipes/structures.ftl b/Resources/Locale/en-US/construction/recipes/structures.ftl index 6534277937..bb299532d5 100644 --- a/Resources/Locale/en-US/construction/recipes/structures.ftl +++ b/Resources/Locale/en-US/construction/recipes/structures.ftl @@ -22,6 +22,6 @@ construction-recipe-fence-wood-t-junction-small = small wooden fence T-junction construction-recipe-fence-wood-gate-small = small wooden fence gate construction-recipe-pinion-airlock = clockwork airlock construction-recipe-pinion-airlock-glass = glass clockwork airlock -construction-recipe-airlock-glass-shuttle = glass shuttle airlock +construction-recipe-airlock-glass-shuttle = glass docking airlock construction-recipe-plastic-flaps-clear = plastic flaps (clear) construction-recipe-plastic-flaps-opaque = plastic flaps (opaque) diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/access.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/access.yml index 6ca0dea8db..8bde005670 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/access.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/access.yml @@ -1159,7 +1159,7 @@ - type: entity parent: AirlockShuttleSyndicate id: AirlockExternalShuttleSyndicateLocked - suffix: External, Docking, Syndicate, Locked + suffix: Syndicate, Docking, Locked components: - type: ContainerFill containers: @@ -1168,7 +1168,7 @@ - type: entity parent: AirlockShuttleSyndicate id: AirlockExternalShuttleNukeopLocked - suffix: External, Docking, Nukeop, Locked + suffix: Nukeop, Docking, Locked components: - type: ContainerFill containers: @@ -1177,7 +1177,7 @@ - type: entity parent: AirlockShuttleXenoborg id: AirlockGlassShuttleXenoborgLocked - suffix: External, Docking, Xenoborg, Locked + suffix: Xenoborg, Docking, Locked components: - type: StationAiWhitelist enabled: false @@ -1188,7 +1188,7 @@ - type: entity parent: AirlockGlassShuttle id: AirlockExternalGlassShuttleLocked - suffix: External, Glass, Docking, Locked + suffix: External, Docking, Glass components: - type: ContainerFill containers: @@ -1197,7 +1197,7 @@ - type: entity parent: AirlockGlassShuttleSyndicate id: AirlockExternalGlassShuttleSyndicateLocked - suffix: Syndicate, Locked, Glass + suffix: Syndicate, Docking, Glass components: - type: ContainerFill containers: @@ -1206,7 +1206,7 @@ - type: entity parent: AirlockGlassShuttleSyndicate id: AirlockExternalGlassShuttleNukeopLocked - suffix: Nukeop, Locked, Glass + suffix: Nukeop, Docking, Glass components: - type: ContainerFill containers: @@ -1215,7 +1215,7 @@ - type: entity parent: AirlockGlassShuttle id: AirlockExternalGlassShuttleEmergencyLocked - suffix: External, Emergency, Glass, Docking, Locked + suffix: External, Emergency, Docking, Glass components: - type: PriorityDock tag: DockEmergency @@ -1224,10 +1224,10 @@ board: [ DoorElectronicsExternal ] - type: entity - name: arrivals airlock parent: AirlockGlassShuttle id: AirlockExternalGlassShuttleArrivals - suffix: External, Arrivals, Glass, Docking + name: arrivals airlock + suffix: External, Arrivals, Docking, Glass components: - type: PriorityDock tag: DockArrivals @@ -1240,10 +1240,10 @@ dockLegendCategory: Arrivals - type: entity - name: cargo airlock parent: AirlockGlassShuttle id: AirlockExternalGlassShuttleCargo - suffix: External, Cargo, Glass, Docking + name: cargo airlock + suffix: External, Cargo, Docking, Glass components: - type: ContainerFill containers: @@ -1256,7 +1256,7 @@ - type: entity parent: AirlockGlassShuttle id: AirlockExternalGlassShuttleEscape - suffix: External, Escape 3x4, Glass, Docking + suffix: External, Escape 3x4, Docking, Glass components: - type: GridFill addComponents: diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/assembly.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/assembly.yml index a3e021864e..c4de381c00 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/assembly.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/assembly.yml @@ -1,7 +1,11 @@ +# NOTE: all of these have been marked HideSpawnMenu pending additional construction graphs. +# They currently all construct into Airlock and deconstruct into AirlockAssembly, which is unintuitive. + #Atmospherics - type: entity parent: AirlockAssembly id: AirlockAssemblyAtmospherics + categories: [HideSpawnMenu] suffix: Atmospherics components: - type: Sprite @@ -11,6 +15,7 @@ - type: entity parent: AirlockAssembly id: AirlockAssemblyAtmosphericsGlass + categories: [HideSpawnMenu] suffix: Atmospherics, Glass components: - type: Sprite @@ -21,6 +26,7 @@ - type: entity parent: AirlockAssembly id: AirlockAssemblyCargo + categories: [HideSpawnMenu] suffix: Cargo components: - type: Sprite @@ -30,6 +36,7 @@ - type: entity parent: AirlockAssembly id: AirlockAssemblyCargoGlass + categories: [HideSpawnMenu] suffix: Cargo, Glass components: - type: Sprite @@ -40,6 +47,7 @@ - type: entity parent: AirlockAssembly id: AirlockAssemblyCommand + categories: [HideSpawnMenu] suffix: Command components: - type: Sprite @@ -49,6 +57,7 @@ - type: entity parent: AirlockAssembly id: AirlockAssemblyCommandGlass + categories: [HideSpawnMenu] suffix: Command, Glass components: - type: Sprite @@ -59,6 +68,7 @@ - type: entity parent: AirlockAssembly id: AirlockAssemblyEngineering + categories: [HideSpawnMenu] suffix: Engineering components: - type: Sprite @@ -68,6 +78,7 @@ - type: entity parent: AirlockAssembly id: AirlockAssemblyEngineeringGlass + categories: [HideSpawnMenu] suffix: Engineering, Glass components: - type: Sprite @@ -78,7 +89,8 @@ - type: entity parent: AirlockAssembly id: AirlockAssemblyExternal - suffix: External + categories: [HideSpawnMenu] + name: external airlock assembly components: - type: Sprite sprite: Structures/Doors/Airlocks/Standard/airlock-external.rsi @@ -87,7 +99,9 @@ - type: entity parent: AirlockAssembly id: AirlockAssemblyExternalGlass - suffix: External, Glass + categories: [HideSpawnMenu] + name: external airlock assembly + suffix: Glass components: - type: Sprite sprite: Structures/Doors/Airlocks/Glass/airlock-external.rsi @@ -97,6 +111,7 @@ - type: entity parent: AirlockAssembly id: AirlockAssemblyGlass + categories: [HideSpawnMenu] suffix: Glass components: - type: Sprite @@ -107,6 +122,7 @@ - type: entity parent: AirlockAssembly id: AirlockAssemblyFreezer + categories: [HideSpawnMenu] suffix: Freezer components: - type: Sprite @@ -117,6 +133,7 @@ - type: entity parent: AirlockAssembly id: AirlockAssemblyHydroponics + categories: [HideSpawnMenu] suffix: Hydroponics components: - type: Sprite @@ -126,6 +143,7 @@ - type: entity parent: AirlockAssembly id: AirlockAssemblyHydroponicsGlass + categories: [HideSpawnMenu] suffix: Hydroponics, Glass components: - type: Sprite @@ -136,6 +154,7 @@ - type: entity parent: AirlockAssembly id: AirlockAssemblyMaintenance + categories: [HideSpawnMenu] suffix: Maintenance components: - type: Sprite @@ -145,6 +164,7 @@ - type: entity parent: AirlockAssembly id: AirlockAssemblyMaintenanceGlass + categories: [HideSpawnMenu] suffix: Maintenance, Glass components: - type: Sprite @@ -155,6 +175,7 @@ - type: entity parent: AirlockAssembly id: AirlockAssemblyMedical + categories: [HideSpawnMenu] suffix: Medical components: - type: Sprite @@ -164,6 +185,7 @@ - type: entity parent: AirlockAssembly id: AirlockAssemblyMedicalGlass + categories: [HideSpawnMenu] suffix: Medical, Glass components: - type: Sprite @@ -174,6 +196,7 @@ - type: entity parent: AirlockAssembly id: AirlockAssemblySalvage + categories: [HideSpawnMenu] suffix: Salvage components: - type: Sprite @@ -183,6 +206,7 @@ - type: entity parent: AirlockAssembly id: AirlockAssemblySalvageGlass + categories: [HideSpawnMenu] suffix: Salvage, Glass components: - type: Sprite @@ -193,6 +217,7 @@ - type: entity parent: AirlockAssembly id: AirlockAssemblyScience + categories: [HideSpawnMenu] suffix: Science components: - type: Sprite @@ -202,6 +227,7 @@ - type: entity parent: AirlockAssembly id: AirlockAssemblyScienceGlass + categories: [HideSpawnMenu] suffix: Science, Glass components: - type: Sprite @@ -212,6 +238,7 @@ - type: entity parent: AirlockAssembly id: AirlockAssemblySecurity + categories: [HideSpawnMenu] suffix: Security components: - type: Sprite @@ -221,6 +248,7 @@ - type: entity parent: AirlockAssembly id: AirlockAssemblySecurityGlass + categories: [HideSpawnMenu] suffix: Security, Glass components: - type: Sprite @@ -229,8 +257,9 @@ #Shuttle - type: entity - parent: AirlockAssembly + parent: AirlockShuttleAssembly id: AirlockAssemblyShuttle + categories: [HideSpawnMenu] suffix: Shuttle components: - type: Sprite @@ -241,8 +270,9 @@ - state: assembly - type: entity - parent: AirlockAssembly + parent: AirlockShuttleAssembly id: AirlockAssemblyShuttleGlass + categories: [HideSpawnMenu] suffix: Shuttle, Glass components: - type: Sprite @@ -253,6 +283,7 @@ - type: entity parent: AirlockAssembly id: AirlockAssemblyVirology + categories: [HideSpawnMenu] suffix: Virology components: - type: Sprite @@ -262,6 +293,7 @@ - type: entity parent: AirlockAssembly id: AirlockAssemblyVirologyGlass + categories: [HideSpawnMenu] suffix: Virology, Glass components: - type: Sprite @@ -272,6 +304,7 @@ - type: entity parent: AirlockAssembly id: AirlockAssemblyCentralCommand + categories: [HideSpawnMenu] suffix: CentralCommand components: - type: Sprite @@ -281,6 +314,7 @@ - type: entity parent: AirlockAssembly id: AirlockAssemblyCentralCommandGlass + categories: [HideSpawnMenu] suffix: CentralCommand, Glass components: - type: Sprite @@ -291,6 +325,7 @@ - type: entity parent: AirlockAssembly id: AirlockAssemblyMining + categories: [HideSpawnMenu] suffix: Mining components: - type: Sprite @@ -300,6 +335,7 @@ - type: entity parent: AirlockAssembly id: AirlockAssemblyMiningGlass + categories: [HideSpawnMenu] suffix: Mining, Glass components: - type: Sprite @@ -310,6 +346,7 @@ - type: entity parent: AirlockAssembly id: AirlockAssemblySyndicate + categories: [HideSpawnMenu] suffix: Syndicate components: - type: Sprite @@ -319,6 +356,7 @@ - type: entity parent: AirlockAssembly id: AirlockAssemblySyndicateGlass + categories: [HideSpawnMenu] suffix: Syndicate, Glass components: - type: Sprite @@ -327,8 +365,9 @@ #ShuttleSyndicate - type: entity - parent: AirlockAssembly + parent: AirlockShuttleAssembly id: AirlockAssemblyShuttleSyndicate + categories: [HideSpawnMenu] suffix: ShuttleSyndicate components: - type: Sprite @@ -336,8 +375,9 @@ state: "assembly" - type: entity - parent: AirlockAssembly + parent: AirlockShuttleAssembly id: AirlockAssemblyShuttleSyndicateGlass + categories: [HideSpawnMenu] suffix: ShuttleSyndicate, Glass components: - type: Sprite @@ -348,6 +388,7 @@ - type: entity parent: AirlockAssembly id: AirlockAssemblyHighSec + categories: [HideSpawnMenu] suffix: HighSec components: - type: Sprite diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_assembly.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_assembly.yml index 5b5325cd3b..66269744b0 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_assembly.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_assembly.yml @@ -27,7 +27,7 @@ - type: Pullable - type: Transform anchored: true - noRot: true + - type: Rotatable - type: Damageable damageModifierSet: SteelStaticMod - type: RCDDeconstructable diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/external.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/external.yml index ad7d20d66a..fa9493ddcc 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/external.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/external.yml @@ -1,7 +1,7 @@ - type: entity parent: AirlockRCDResistant id: AirlockExternal - suffix: External + name: external airlock description: It opens, it closes, it might crush you, and there might be only space behind it. components: - type: Door @@ -61,7 +61,7 @@ - type: entity parent: AirlockExternal id: AirlockExternalGlass - suffix: Glass, External + suffix: Glass components: - type: Door occludes: false diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/shuttle.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/shuttle.yml index 5b369350de..ae2a958f9f 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/shuttle.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/shuttle.yml @@ -1,8 +1,7 @@ - type: entity parent: AirlockRCDResistant id: AirlockShuttle - suffix: Docking - name: external airlock + name: docking airlock description: Necessary for connecting two space craft together. components: - type: Docking @@ -107,7 +106,7 @@ - type: entity id: AirlockGlassShuttle parent: AirlockShuttle - suffix: Glass, Docking + suffix: Glass components: - type: Sprite sprite: Structures/Doors/Airlocks/Glass/shuttle-base.rsi @@ -121,20 +120,16 @@ layer: #removed opaque from the layer, allowing lasers to pass through glass airlocks - GlassAirlockLayer +# TODO: migrate into assembly with the others - type: entity id: AirlockShuttleAssembly parent: AirlockAssembly - name: external airlock assembly - suffix: Docking + name: docking airlock assembly description: An incomplete structure necessary for connecting two space craft together. components: - - type: Transform - anchored: true - noRot: false - - type: Rotatable - type: Sprite - sprite: Structures/Doors/Airlocks/Glass/shuttle-base.rsi - state: closed + sprite: Structures/Doors/Airlocks/Standard/shuttle-base.rsi + state: "assembly" snapCardinals: false - type: Construction graph: AirlockShuttle @@ -143,6 +138,7 @@ - type: entity id: AirlockGlassShuttleSyndicate parent: AirlockGlassShuttle + suffix: Syndicate, Glass components: - type: Sprite sprite: Structures/Doors/Airlocks/Glass/shuttle-syndicate.rsi @@ -150,6 +146,7 @@ - type: entity parent: AirlockShuttle id: AirlockShuttleSyndicate + suffix: Syndicate components: - type: Sprite sprite: Structures/Doors/Airlocks/Standard/shuttle-syndicate.rsi @@ -157,7 +154,7 @@ - type: entity parent: AirlockShuttle id: AirlockShuttleXenoborg - name: external mechadermis airlock + name: docking mechadermis airlock components: - type: Sprite sprite: Structures/Doors/Airlocks/Standard/shuttle-xenoborg.rsi diff --git a/Resources/Prototypes/Recipes/Construction/structures.yml b/Resources/Prototypes/Recipes/Construction/structures.yml index 823714659f..7017c2fb35 100644 --- a/Resources/Prototypes/Recipes/Construction/structures.yml +++ b/Resources/Prototypes/Recipes/Construction/structures.yml @@ -293,7 +293,7 @@ # region Firelocks - type: construction - parent: BaseStructureFullTile + parent: BaseStructureFullTileDirectional id: Firelock graph: Firelock targetNode: Firelock @@ -308,7 +308,6 @@ id: FirelockEdge name: construction-recipe-firelock-edge targetNode: FirelockEdge - canRotate: true # endregion Firelocks # region Shutters @@ -480,7 +479,7 @@ # region Airlocks - type: construction - parent: BaseStructureFullTile + parent: BaseStructureFullTileDirectional id: Airlock graph: Airlock targetNode: airlock @@ -491,10 +490,9 @@ targetNode: glassAirlock - type: construction - parent: BaseStructureFullTileDirectional + parent: Airlock id: AirlockShuttle graph: AirlockShuttle - targetNode: airlock - type: construction parent: AirlockShuttle @@ -509,7 +507,6 @@ id: Windoor graph: Windoor targetNode: windoor - # endregion Windoors # region Lighting From 86adeec6db98cb705bd35bbb3e1c0bae138b9abc Mon Sep 17 00:00:00 2001 From: cashew <70486856+cashew-42@users.noreply.github.com> Date: Sat, 19 Sep 2026 21:10:03 +0000 Subject: [PATCH 193/197] Fix OnAttachedChanged Lag when having a long chat history (#46050) * I fucking hate chat code and UI code * while I'm at it I'll make this prettier * docs * typo * testfail * reset chat upon joining game * move code * remove unused imports and add doc * doc * final commit * oop * Revert "reset chat upon joining game" This reverts commit a851319521193d099b6d1571631b63917500bc47. * review stuff * testfail --- .../UserInterface/Controls/TextLinkLabel.cs | 80 ++++++++++++++++++- .../RichText/TextLinkTag.Entity.cs | 5 +- .../RichText/TextLinkTag.Plain.cs | 4 +- .../UserInterface/RichText/TextLinkTag.cs | 72 ++++++----------- .../Systems/Chat/ChatUIController.cs | 13 ++- .../Systems/Chat/Widgets/ChatBox.xaml.cs | 15 ++++ 6 files changed, 132 insertions(+), 57 deletions(-) diff --git a/Content.Client/UserInterface/Controls/TextLinkLabel.cs b/Content.Client/UserInterface/Controls/TextLinkLabel.cs index 1600e979b8..afd4fa48a1 100644 --- a/Content.Client/UserInterface/Controls/TextLinkLabel.cs +++ b/Content.Client/UserInterface/Controls/TextLinkLabel.cs @@ -1,13 +1,85 @@ +using Content.Client.UserInterface.ControlExtensions; +using Content.Client.UserInterface.RichText; +using Content.Shared.Chat; +using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; +using Robust.Shared.Input; +using Robust.Shared.Utility; + namespace Content.Client.UserInterface.Controls; /// /// Carries link data parsed and resolved from a TextLink , -/// only one field per link should be populated at a time. +/// only one LinkType field per link should be populated at a time. /// -public sealed class TextLinkLabel : Label +public sealed partial class TextLinkLabel : Label { - public string? LinkString { get; init; } - public NetEntity? LinkEntity { get; init; } + public string? LinkString { get; init; } // default links + public NetEntity? LinkEntity { get; init; } // entity links + public Color LinkColor { get; set; } + + [Dependency] private IEntityManager _entity = default!; + private bool canClickLink; + + public TextLinkLabel() + { + IoCManager.InjectDependencies(this); + OnKeyBindDown += OnKeybindDown; + OnMouseEntered += _ => OnHoverChanged(true); + OnMouseExited += _ => OnHoverChanged(false); + } + + /// + /// Refreshes the label's properties based on the current link target + /// and the viewer's permission to follow it.
Call after construction, + /// and whenever that permission could have changed. + ///
+ /// Whether the label should be shown at all. Defaults to true. + /// Additional override to force the label non-clickable. Defaults to true. + public void UpdateLabelProperties(SharedChatSystem chatSystem, bool? visible = null, bool? clickable = null) + { + visible ??= true; + Visible = visible.Value; + clickable ??= true; + + canClickLink = (LinkString != null || (LinkEntity is { } netEntity && chatSystem.CanClickMessageSender(netEntity))) && (bool)clickable; + + MouseFilter = canClickLink ? MouseFilterMode.Stop : MouseFilterMode.Ignore; + DefaultCursorShape = canClickLink ? CursorShape.Hand : CursorShape.Arrow; + + OnHoverChanged(false); + } + + private void OnHoverChanged(bool hovering) + { + FontColorOverride = (canClickLink, hovering) switch + { + (true, true) => Color.LightSkyBlue, // clickable and currently hovered + _ => LinkColor, // not clickable, or not hovered + }; + } + + /// + /// Delegates click to the nearest ancestor ILinkClickHandler or IEntityLinkClickHandler; + /// TextLinkLabel has no idea what a click actually does. + /// + private void OnKeybindDown(GUIBoundKeyEventArgs args) + { + if (args.Function != EngineKeyFunctions.UIClick) + return; + + if (LinkString is null && LinkEntity is null) + return; + + if (LinkEntity is { } entity && + this.TryGetParentHandler(out var entityLinkClickHandler)) + { + entityLinkClickHandler.HandleClick(entity); + } + else if (LinkString != null && this.TryGetParentHandler(out var linkClickHandler)) + { + linkClickHandler.HandleClick(LinkString); + } + } } diff --git a/Content.Client/UserInterface/RichText/TextLinkTag.Entity.cs b/Content.Client/UserInterface/RichText/TextLinkTag.Entity.cs index c68b375a0e..3b1b94f1e1 100644 --- a/Content.Client/UserInterface/RichText/TextLinkTag.Entity.cs +++ b/Content.Client/UserInterface/RichText/TextLinkTag.Entity.cs @@ -24,12 +24,9 @@ public sealed partial class TextLinkTag if (!NetEntity.TryParse(entStr, out var netEntity)) return false; - var chat = _entity.System(); - var clickable = chat.CanClickMessageSender(netEntity); - var color = GetLinkColor(node, netEntity); - data = new LinkData(LinkString: null, LinkEntity: netEntity, Color: color, Clickable: clickable); + data = new LinkData(LinkString: null, LinkEntity: netEntity, Color: color); return true; } diff --git a/Content.Client/UserInterface/RichText/TextLinkTag.Plain.cs b/Content.Client/UserInterface/RichText/TextLinkTag.Plain.cs index d18e21116e..9defaf0253 100644 --- a/Content.Client/UserInterface/RichText/TextLinkTag.Plain.cs +++ b/Content.Client/UserInterface/RichText/TextLinkTag.Plain.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Utility; +using Robust.Shared.Utility; namespace Content.Client.UserInterface.RichText; @@ -15,7 +15,7 @@ public sealed partial class TextLinkTag return false; } - data = new LinkData(LinkString: linkStr, LinkEntity: null, Color: null, Clickable: true); + data = new LinkData(LinkString: linkStr, LinkEntity: null, Color: null); return true; } } diff --git a/Content.Client/UserInterface/RichText/TextLinkTag.cs b/Content.Client/UserInterface/RichText/TextLinkTag.cs index a9f78f10f5..98fde7e8ac 100644 --- a/Content.Client/UserInterface/RichText/TextLinkTag.cs +++ b/Content.Client/UserInterface/RichText/TextLinkTag.cs @@ -4,20 +4,25 @@ using JetBrains.Annotations; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.RichText; -using Robust.Shared.Input; using Robust.Shared.Utility; -using Content.Client.UserInterface.ControlExtensions; using Content.Client.UserInterface.Controls; +using Content.Shared.Chat; using Robust.Client.ResourceManagement; namespace Content.Client.UserInterface.RichText; /// /// Markup tag handler for [textlink="LinkText"] nodes. Renders a link -/// in rich text, covering two types: -/// plain links (link=) and entity links (entity=). -/// optional color= and entitynamecolor= parameters -/// allow setting a color override and opting into using entity name colors for entity links +/// in rich text, covering two link types: +/// +/// link="GuideEntryPrototypeID" — a plain link. +/// entity="NetEntity" — an entity link. +/// +/// Optional parameters: +/// +/// color="HexColor" — color override. +/// entitynamecolor="Bool" — entity links only; opt into using the entity's name color. +/// /// [UsedImplicitly] public sealed partial class TextLinkTag : IMarkupTagHandler @@ -25,6 +30,7 @@ public sealed partial class TextLinkTag : IMarkupTagHandler [Dependency] private IEntityManager _entity = default!; [Dependency] private IUserInterfaceManager _ui = default!; [Dependency] private IResourceCache _cache = default!; + private SharedChatSystem? _chat; public string Name => "textlink"; public static Color DefaultLinkColor => Color.CornflowerBlue; @@ -38,7 +44,7 @@ public sealed partial class TextLinkTag : IMarkupTagHandler /// /// Resolved Link Data, LinkString and LinkEntity should not be populated at the same time /// - private readonly record struct LinkData(string? LinkString, NetEntity? LinkEntity, Color? Color, bool Clickable); + private readonly record struct LinkData(string? LinkString, NetEntity? LinkEntity, Color? Color); public TextLinkTag() { @@ -67,25 +73,27 @@ public sealed partial class TextLinkTag : IMarkupTagHandler foreach (var (attrname, resolver) in _resolvers) { - if (node.Attributes.ContainsKey(attrname)) + if (!node.Attributes.ContainsKey(attrname)) + continue; + + if(!resolver(node, out linkData)) { - if(!resolver(node, out linkData)) - { - return false; - } - linkTypeResolved = true; - break; + return false; } + + linkTypeResolved = true; + break; } + if (!linkTypeResolved) { return false; } + // color= > resolver-supplied color > default var linkColor = ResolveColorOverride(node) ?? linkData.Color ?? DefaultLinkColor; - var linkLabel = new TextLinkLabel() { Text = text, LinkString = linkData.LinkString, LinkEntity = linkData.LinkEntity }; - linkLabel.FontColorOverride = linkColor; + var linkLabel = new TextLinkLabel() { Text = text, LinkString = linkData.LinkString, LinkEntity = linkData.LinkEntity, LinkColor = linkColor}; // eat my ass about where this magic number comes from // our UI stack is awful. Finding this magic number was awful. @@ -96,14 +104,8 @@ public sealed partial class TextLinkTag : IMarkupTagHandler linkLabel.FontOverride = boldFont; } - if (linkData.Clickable) - { - linkLabel.MouseFilter = Control.MouseFilterMode.Stop; - linkLabel.DefaultCursorShape = Control.CursorShape.Hand; - linkLabel.OnMouseEntered += _ => linkLabel.FontColorOverride = Color.LightSkyBlue; - linkLabel.OnMouseExited += _ => linkLabel.FontColorOverride = linkColor; - linkLabel.OnKeyBindDown += args => OnKeybindDown(args, linkLabel); - } + _chat ??= _entity.System(); + linkLabel.UpdateLabelProperties(_chat); control = linkLabel; return true; @@ -119,28 +121,6 @@ public sealed partial class TextLinkTag : IMarkupTagHandler return Color.TryFromHex(colorStr, out var color) ? color : null; } - - /// - /// Delegates to the nearest ancestor ILinkClickHandler or IEntityLinkClickHandler; - /// TextLinkTag has no idea what a click actually does. - /// - private void OnKeybindDown(GUIBoundKeyEventArgs args, TextLinkLabel? control) - { - if (args.Function != EngineKeyFunctions.UIClick) - return; - - if (control == null) - return; - - if (control.LinkEntity is { } entity && control.TryGetParentHandler(out var entityLinkClickHandler)) - { - entityLinkClickHandler.HandleClick(entity); - } - else if (control.LinkString != null && control.TryGetParentHandler(out var linkClickHandler)) - { - linkClickHandler.HandleClick(control.LinkString); - } - } } /// diff --git a/Content.Client/UserInterface/Systems/Chat/ChatUIController.cs b/Content.Client/UserInterface/Systems/Chat/ChatUIController.cs index 4f95bb9021..2140879aa9 100644 --- a/Content.Client/UserInterface/Systems/Chat/ChatUIController.cs +++ b/Content.Client/UserInterface/Systems/Chat/ChatUIController.cs @@ -67,6 +67,7 @@ public sealed partial class ChatUIController : UIController [UISystemDependency] private readonly MindSystem? _mindSystem = default!; [UISystemDependency] private readonly RoleCodewordSystem? _roleCodewordSystem = default!; + private SharedChatSystem? _sharedChatSys; private static readonly ProtoId ChatNamePalette = "ChatNames"; private string[] _chatNameColors = default!; private bool _chatNameColorsEnabled; @@ -429,7 +430,7 @@ public sealed partial class ChatUIController : UIController { UpdateChannelPermissions(); UpdateAutoFillHighlights(); - Repopulate(); + UpdateLinkLabels(); } private void AddSpeechBubble(ChatMessage msg, SpeechBubble.SpeechType speechType) @@ -942,6 +943,16 @@ public sealed partial class ChatUIController : UIController } } + private void UpdateLinkLabels() + { + _sharedChatSys ??= _ent.System(); + + foreach (var chat in _chats) + { + chat.UpdateTextLinkLabelProperties(_sharedChatSys); + } + } + /// /// Returns the chat name color for a mob /// diff --git a/Content.Client/UserInterface/Systems/Chat/Widgets/ChatBox.xaml.cs b/Content.Client/UserInterface/Systems/Chat/Widgets/ChatBox.xaml.cs index 8a8b6750da..f5545a496f 100644 --- a/Content.Client/UserInterface/Systems/Chat/Widgets/ChatBox.xaml.cs +++ b/Content.Client/UserInterface/Systems/Chat/Widgets/ChatBox.xaml.cs @@ -1,3 +1,4 @@ +using Content.Client.UserInterface.Controls; using Content.Client.UserInterface.RichText; using Content.Client.UserInterface.Systems.Chat.Controls; using Content.Shared.Chat; @@ -91,6 +92,20 @@ public partial class ChatBox : UIWidget, IEntityLinkClickHandler } } + /// + /// Calls update function on every child in the ChatBox's OutputPanel "Contents" + /// + public void UpdateTextLinkLabelProperties(SharedChatSystem _sharedChatSys) + { + foreach (var contentsChild in Contents.Children) + { + if (contentsChild is TextLinkLabel textLinkLabel) + { + textLinkLabel.UpdateLabelProperties(_sharedChatSys); + } + } + } + private void OnChannelFilter(ChatChannel channel, bool active) { Contents.Clear(); From 1a22fc0228391a042e1a17f229edd6497d64f6de Mon Sep 17 00:00:00 2001 From: eoineoineoin Date: Sat, 19 Sep 2026 21:20:12 +0000 Subject: [PATCH 194/197] Fix empty popup texts being raised (#45728) * Don't raise empty popups * Discard whitespace popups, for good measure --- Content.Client/Popups/PopupSystem.cs | 10 +++++----- Content.Server/Popups/PopupSystem.cs | 22 +++++++++++----------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Content.Client/Popups/PopupSystem.cs b/Content.Client/Popups/PopupSystem.cs index 11d5b02a5c..74ea178d38 100644 --- a/Content.Client/Popups/PopupSystem.cs +++ b/Content.Client/Popups/PopupSystem.cs @@ -82,7 +82,7 @@ public sealed partial class PopupSystem : SharedPopupSystem /// private void PopupInternal(string? message, PopupType type, EntityCoordinates coordinates, EntityUid? entity, bool recordReplay) { - if (message == null) + if (string.IsNullOrWhiteSpace(message)) return; if (recordReplay && _replayRecording.IsRecording) @@ -114,7 +114,7 @@ public sealed partial class PopupSystem : SharedPopupSystem ///
private void PopupCursorInternal(string? message, PopupType type, bool recordReplay) { - if (message == null) + if (string.IsNullOrWhiteSpace(message)) return; if (recordReplay && _replayRecording.IsRecording) @@ -149,7 +149,7 @@ public sealed partial class PopupSystem : SharedPopupSystem /// Used to customize how this popup should appear visually. public void PopupCursor(string? message, PopupType type = PopupType.Small) { - if (!Timing.IsFirstTimePredicted || message is null) + if (!Timing.IsFirstTimePredicted || string.IsNullOrWhiteSpace(message)) return; _predictionInstances.Add(new PopupCursorEvent.PredictionInstance(message, type, Timing.CurTick)); @@ -176,7 +176,7 @@ public sealed partial class PopupSystem : SharedPopupSystem public override void PopupCoordinates(string? message, EntityCoordinates coordinates, PopupType type = PopupType.Small, int predictionKey = 0) { - if (!Timing.IsFirstTimePredicted || message is null) + if (!Timing.IsFirstTimePredicted || string.IsNullOrWhiteSpace(message)) return; _predictionInstances.Add(new PopupCoordinatesEvent.PredictionInstance(message, type, Timing.CurTick, predictionKey)); @@ -203,7 +203,7 @@ public sealed partial class PopupSystem : SharedPopupSystem public override void PopupEntity(string? message, EntityUid uid, PopupType type = PopupType.Small) { - if (!Timing.IsFirstTimePredicted || message is null) + if (!Timing.IsFirstTimePredicted || string.IsNullOrWhiteSpace(message)) return; if (!TryComp(uid, out TransformComponent? transform)) diff --git a/Content.Server/Popups/PopupSystem.cs b/Content.Server/Popups/PopupSystem.cs index e798e9a536..c03080be14 100644 --- a/Content.Server/Popups/PopupSystem.cs +++ b/Content.Server/Popups/PopupSystem.cs @@ -14,7 +14,7 @@ public sealed partial class PopupSystem : SharedPopupSystem public override void PopupCursor(string? message, EntityUid? recipient, PopupType type = PopupType.Small) { - if (message == null) + if (string.IsNullOrWhiteSpace(message)) return; if (TryComp(recipient, out ActorComponent? actor)) @@ -23,7 +23,7 @@ public sealed partial class PopupSystem : SharedPopupSystem public override void PopupCursor(string? message, ICommonSession recipient, PopupType type = PopupType.Small) { - if (message == null) + if (string.IsNullOrWhiteSpace(message)) return; RaiseNetworkEvent(new PopupCursorEvent(message, type, Timing.CurTick), recipient); @@ -31,7 +31,7 @@ public sealed partial class PopupSystem : SharedPopupSystem public override void PopupCursor(string? message, Filter filter, bool recordReplay, PopupType type = PopupType.Small) { - if (message == null) + if (string.IsNullOrWhiteSpace(message)) return; RaiseNetworkEvent(new PopupCursorEvent(message, type, Timing.CurTick), filter, recordReplay); @@ -39,7 +39,7 @@ public sealed partial class PopupSystem : SharedPopupSystem public override void PopupCoordinates(string? message, EntityCoordinates coordinates, PopupType type = PopupType.Small, int predictionKey = 0) { - if (message == null) + if (string.IsNullOrWhiteSpace(message)) return; var mapPos = _transform.ToMapCoordinates(coordinates); @@ -49,7 +49,7 @@ public sealed partial class PopupSystem : SharedPopupSystem public override void PopupCoordinates(string? message, EntityCoordinates coordinates, EntityUid? recipient, PopupType type = PopupType.Small, int predictionKey = 0) { - if (message == null) + if (string.IsNullOrWhiteSpace(message)) return; if (TryComp(recipient, out ActorComponent? actor)) @@ -58,7 +58,7 @@ public sealed partial class PopupSystem : SharedPopupSystem public override void PopupCoordinates(string? message, EntityCoordinates coordinates, ICommonSession recipient, PopupType type = PopupType.Small, int predictionKey = 0) { - if (message == null) + if (string.IsNullOrWhiteSpace(message)) return; RaiseNetworkEvent(new PopupCoordinatesEvent(message, type, Timing.CurTick, GetNetCoordinates(coordinates), predictionKey), recipient); @@ -66,7 +66,7 @@ public sealed partial class PopupSystem : SharedPopupSystem public override void PopupCoordinates(string? message, EntityCoordinates coordinates, Filter filter, bool recordReplay, PopupType type = PopupType.Small, int predictionKey = 0) { - if (message == null) + if (string.IsNullOrWhiteSpace(message)) return; RaiseNetworkEvent(new PopupCoordinatesEvent(message, type, Timing.CurTick, GetNetCoordinates(coordinates), predictionKey), filter, recordReplay); @@ -74,7 +74,7 @@ public sealed partial class PopupSystem : SharedPopupSystem public override void PopupEntity(string? message, EntityUid uid, PopupType type = PopupType.Small) { - if (message == null) + if (string.IsNullOrWhiteSpace(message)) return; var filter = Filter.Empty().AddPlayersByPvs(uid, entityManager: EntityManager, playerMan: _player, cfgMan: _cfg); @@ -83,7 +83,7 @@ public sealed partial class PopupSystem : SharedPopupSystem public override void PopupEntity(string? message, EntityUid uid, EntityUid? recipient, PopupType type = PopupType.Small) { - if (message == null) + if (string.IsNullOrWhiteSpace(message)) return; if (TryComp(recipient, out ActorComponent? actor)) @@ -92,7 +92,7 @@ public sealed partial class PopupSystem : SharedPopupSystem public override void PopupEntity(string? message, EntityUid uid, ICommonSession recipient, PopupType type = PopupType.Small) { - if (message == null) + if (string.IsNullOrWhiteSpace(message)) return; RaiseNetworkEvent(new PopupEntityEvent(message, type, Timing.CurTick, GetNetEntity(uid)), recipient); @@ -100,7 +100,7 @@ public sealed partial class PopupSystem : SharedPopupSystem public override void PopupEntity(string? message, EntityUid uid, Filter filter, bool recordReplay, PopupType type = PopupType.Small) { - if (message == null) + if (string.IsNullOrWhiteSpace(message)) return; RaiseNetworkEvent(new PopupEntityEvent(message, type, Timing.CurTick, GetNetEntity(uid)), filter, recordReplay); From d6a8071e8167a4487ba81a66538fb37386323534 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?ph=C3=B6nix?= Date: Sun, 20 Sep 2026 00:30:58 +0000 Subject: [PATCH 195/197] Predict SpawnAfterInteractSystem (#45955) * init * hmmmm * huh * final * hmmm * test * test2 * huhhuh * minor cleanup --------- Co-authored-by: Pok245 <113675512+Pok27@users.noreply.github.com> --- .../Components/SpawnAfterInteractComponent.cs | 35 ------ .../EntitySystems/SpawnAfterInteractSystem.cs | 78 -------------- .../Components/SpawnAfterInteractComponent.cs | 35 ++++++ .../EntitySystems/SpawnAfterInteractSystem.cs | 101 ++++++++++++++++++ 4 files changed, 136 insertions(+), 113 deletions(-) delete mode 100644 Content.Server/Engineering/Components/SpawnAfterInteractComponent.cs delete mode 100644 Content.Server/Engineering/EntitySystems/SpawnAfterInteractSystem.cs create mode 100644 Content.Shared/Storage/Components/SpawnAfterInteractComponent.cs create mode 100644 Content.Shared/Storage/EntitySystems/SpawnAfterInteractSystem.cs diff --git a/Content.Server/Engineering/Components/SpawnAfterInteractComponent.cs b/Content.Server/Engineering/Components/SpawnAfterInteractComponent.cs deleted file mode 100644 index 3e882db758..0000000000 --- a/Content.Server/Engineering/Components/SpawnAfterInteractComponent.cs +++ /dev/null @@ -1,35 +0,0 @@ -using Robust.Shared.Prototypes; - -namespace Content.Server.Engineering.Components -{ - /// - /// This component enables the spawn of a specific entity upon being interacted with. - /// - [RegisterComponent] - public sealed partial class SpawnAfterInteractComponent : Component - { - /// - /// The prototype id of the entity to be spawned in. - /// - [DataField(required: true)] - public EntProtoId Prototype; - - /// - /// Stops the spawn if the target space is no longer in reach, unless true. - /// - [DataField] - public bool IgnoreDistance; - - /// - /// The length of the interact action. - /// - [DataField("doAfter")] - public float DoAfterTime = 0; - - /// - /// If the entity with this component should be deleted upon a successful spawn. - /// - [DataField] - public bool RemoveOnInteract; - } -} diff --git a/Content.Server/Engineering/EntitySystems/SpawnAfterInteractSystem.cs b/Content.Server/Engineering/EntitySystems/SpawnAfterInteractSystem.cs deleted file mode 100644 index 89b773282b..0000000000 --- a/Content.Server/Engineering/EntitySystems/SpawnAfterInteractSystem.cs +++ /dev/null @@ -1,78 +0,0 @@ -using Content.Server.Engineering.Components; -using Content.Server.Stack; -using Content.Shared.Coordinates.Helpers; -using Content.Shared.DoAfter; -using Content.Shared.Interaction; -using Content.Shared.Maps; -using Content.Shared.Physics; -using Content.Shared.Stacks; -using JetBrains.Annotations; -using Robust.Shared.Map.Components; - -namespace Content.Server.Engineering.EntitySystems -{ - [UsedImplicitly] - public sealed partial class SpawnAfterInteractSystem : EntitySystem - { - [Dependency] private SharedDoAfterSystem _doAfterSystem = default!; - [Dependency] private StackSystem _stackSystem = default!; - [Dependency] private TurfSystem _turfSystem = default!; - [Dependency] private SharedTransformSystem _transform = default!; - [Dependency] private SharedMapSystem _maps = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(HandleAfterInteract); - } - - private async void HandleAfterInteract(EntityUid uid, SpawnAfterInteractComponent component, AfterInteractEvent args) - { - if (!args.CanReach && !component.IgnoreDistance) - return; - if (string.IsNullOrEmpty(component.Prototype)) - return; - - var gridUid = _transform.GetGrid(args.ClickLocation); - if (!TryComp(gridUid, out var grid)) - return; - if (!_maps.TryGetTileRef(gridUid.Value, grid, args.ClickLocation, out var tileRef)) - return; - - bool IsTileClear() - { - return tileRef.Tile.IsEmpty == false && !_turfSystem.IsTileBlocked(tileRef, CollisionGroup.MobMask); - } - - if (!IsTileClear()) - return; - - if (component.DoAfterTime > 0) - { - var doAfterArgs = new DoAfterArgs(EntityManager, args.User, component.DoAfterTime, new AwaitedDoAfterEvent(), null) - { - BreakOnMove = true, - }; - var result = await _doAfterSystem.WaitDoAfter(doAfterArgs); - - if (result != DoAfterStatus.Finished) - return; - } - - if (component.Deleted || !IsTileClear()) - return; - - if (TryComp(uid, out var stackComp) - && component.RemoveOnInteract && !_stackSystem.TryUse((uid, stackComp), 1)) - { - return; - } - - Spawn(component.Prototype, args.ClickLocation.SnapToGrid(grid)); - - if (component.RemoveOnInteract && stackComp == null) - TryQueueDel(uid); - } - } -} diff --git a/Content.Shared/Storage/Components/SpawnAfterInteractComponent.cs b/Content.Shared/Storage/Components/SpawnAfterInteractComponent.cs new file mode 100644 index 0000000000..5a0c655fca --- /dev/null +++ b/Content.Shared/Storage/Components/SpawnAfterInteractComponent.cs @@ -0,0 +1,35 @@ +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Storage.Components; + +/// +/// This component enables the spawn of a specific entity upon being interacted with. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class SpawnAfterInteractComponent : Component +{ + /// + /// The prototype id of the entity to be spawned in. + /// + [DataField(required: true)] + public EntProtoId Prototype; + + /// + /// Stops the spawn if the target space is no longer in reach, unless true. + /// + [DataField] + public bool IgnoreDistance; + + /// + /// The length of the interact action. + /// + [DataField("doAfter")] + public float DoAfterTime; + + /// + /// If the entity with this component should be deleted upon a successful spawn. + /// + [DataField] + public bool RemoveOnInteract; +} diff --git a/Content.Shared/Storage/EntitySystems/SpawnAfterInteractSystem.cs b/Content.Shared/Storage/EntitySystems/SpawnAfterInteractSystem.cs new file mode 100644 index 0000000000..4a4b7d0111 --- /dev/null +++ b/Content.Shared/Storage/EntitySystems/SpawnAfterInteractSystem.cs @@ -0,0 +1,101 @@ +using Content.Shared.Coordinates.Helpers; +using Content.Shared.DoAfter; +using Content.Shared.Interaction; +using Content.Shared.Maps; +using Content.Shared.Physics; +using Content.Shared.Stacks; +using Content.Shared.Storage.Components; +using JetBrains.Annotations; +using Robust.Shared.Map; +using Robust.Shared.Map.Components; +using Robust.Shared.Serialization; + +namespace Content.Shared.Storage.EntitySystems; + +[UsedImplicitly] +public sealed partial class SpawnAfterInteractSystem : EntitySystem +{ + [Dependency] private SharedDoAfterSystem _doAfter = default!; + [Dependency] private SharedMapSystem _maps = default!; + [Dependency] private SharedStackSystem _stack = default!; + [Dependency] private SharedTransformSystem _transform = default!; + [Dependency] private TurfSystem _turf = default!; + + [SubscribeLocalEvent] + private void OnInteract(Entity ent, ref AfterInteractEvent args) + { + if (!args.CanReach && !ent.Comp.IgnoreDistance) + return; + + if (!CanSpawn(args.ClickLocation)) + return; + + var gridUid = _transform.GetGrid(args.ClickLocation); + if (gridUid == null) + return; + + var doAfterArgs = new DoAfterArgs(EntityManager, + args.User, + ent.Comp.DoAfterTime, + new SpawnAfterInteractEvent(GetNetCoordinates(args.ClickLocation.SnapToGrid())), + ent, + used: ent) + { + BreakOnDamage = true, + BreakOnMove = true, + }; + _doAfter.TryStartDoAfter(doAfterArgs); + } + + [SubscribeLocalEvent] + private void OnDoAfter(Entity ent, ref SpawnAfterInteractEvent args) + { + if (args.Cancelled) + return; + + var coords = GetCoordinates(args.Coordinates); + if (!CanSpawn(coords)) + return; + + if (ent.Comp.RemoveOnInteract && !_stack.TryUse(ent.Owner, 1)) + return; + + PredictedSpawnAtPosition(ent.Comp.Prototype, coords); + + if (ent.Comp.RemoveOnInteract && !HasComp(ent)) + PredictedQueueDel(ent); + } + + private bool CanSpawn(EntityCoordinates coords) + { + var gridUid = _transform.GetGrid(coords); + if (!TryComp(gridUid, out var grid)) + return false; + + if (!_maps.TryGetTileRef(gridUid.Value, grid, coords, out var tileRef)) + return false; + + return !tileRef.Tile.IsEmpty && !_turf.IsTileBlocked(tileRef, CollisionGroup.MobMask); + } +} + +[Serializable, NetSerializable] +public sealed partial class SpawnAfterInteractEvent : DoAfterEvent +{ + [DataField(required: true)] + public NetCoordinates Coordinates; + + private SpawnAfterInteractEvent() + { + } + + public SpawnAfterInteractEvent(NetCoordinates coordinates) + { + Coordinates = coordinates; + } + + public override DoAfterEvent Clone() + { + return this; + } +} From 1a130e77c21e7b8ee503d324721d3c66bd530fd9 Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Sun, 20 Sep 2026 09:37:32 +0300 Subject: [PATCH 196/197] TTS PotatoPC Fix (#3737) --- .../Corvax/TTS/TTSSystem.Effects.cs | 157 +++++++++++------- Content.Client/Corvax/TTS/TTSSystem.cs | 27 +-- 2 files changed, 114 insertions(+), 70 deletions(-) diff --git a/Content.Client/Corvax/TTS/TTSSystem.Effects.cs b/Content.Client/Corvax/TTS/TTSSystem.Effects.cs index 39a6b7ac0a..8b90d6b59f 100644 --- a/Content.Client/Corvax/TTS/TTSSystem.Effects.cs +++ b/Content.Client/Corvax/TTS/TTSSystem.Effects.cs @@ -1,5 +1,6 @@ using Content.Shared.Corvax.TTS; using Robust.Shared.Audio.Components; +using Robust.Shared.Audio.Effects; namespace Content.Client.Corvax.TTS; @@ -13,9 +14,9 @@ public sealed partial class TTSSystem private readonly object _radioEffectLock = new(); /// - /// Clears all EFX-effects. + /// It frees up only the vocal effect and its auxiliary. /// - private void ShutdownEffects() + private void ShutdownVoiceEffect() { if (_cachedVoiceEffectEntity != null && !TerminatingOrDeleted(_cachedVoiceEffectEntity.Value)) { @@ -34,7 +35,13 @@ public sealed partial class TTSSystem Del(_voiceAuxiliaryEntity); } _voiceAuxiliaryEntity = null; + } + /// + /// It frees up only the radio effect and its auxiliary. + /// + private void ShutdownRadioEffect() + { if (_cachedRadioEffectEntity != null && !TerminatingOrDeleted(_cachedRadioEffectEntity.Value)) { _audio.Stop(_cachedRadioEffectEntity); @@ -54,21 +61,27 @@ public sealed partial class TTSSystem _radioAuxiliaryEntity = null; } + /// + /// Clears all EFX-effects. + /// + private void ShutdownEffects() + { + ShutdownVoiceEffect(); + ShutdownRadioEffect(); + } + private void ApplyVoiceEffect((EntityUid Entity, AudioComponent Component) audio, TTSVoiceEffectPreset effect) { + if (!_ttsEnabled) + return; + if (effect == TTSVoiceEffectPreset.None) return; - if (_cachedVoiceEffectEntity == null) - { - if (!EnsureVoiceEffectInitialized()) - { - if (_cachedVoiceEffectEntity == null) - return; - } - } + if (!EnsureVoiceEffectInitialized()) + return; - if (_cachedVoiceEffectEntity == null || _voiceAuxiliaryEntity == null) + if (_voiceAuxiliaryEntity == null) return; try @@ -84,13 +97,13 @@ public sealed partial class TTSSystem private void ApplyRadioEffect((EntityUid Entity, AudioComponent Component) audio) { - if (!EnsureRadioEffectInitialized()) - { - if (_cachedRadioEffectEntity == null) - return; - } + if (!_ttsEnabled) + return; - if (_cachedRadioEffectEntity == null || _radioAuxiliaryEntity == null) + if (!EnsureRadioEffectInitialized()) + return; + + if (_radioAuxiliaryEntity == null) return; try @@ -104,11 +117,60 @@ public sealed partial class TTSSystem } } + /// + /// Creates an effect and an auxiliary, configures the preset, and links them. + /// Rolls back everything created and returns null if any error occurs. + /// + private (EntityUid Effect, EntityUid Auxiliary)? TryCreateEffectWithAuxiliary(ReverbProperties preset, string debugName) + { + EntityUid? effectUid = null; + EntityUid? auxUid = null; + + try + { + var (effect, effectComp) = _audio.CreateEffect(); + effectUid = effect; + + _audio.SetEffectPreset(effect, effectComp, preset); + + var (aux, auxComp) = _audio.CreateAuxiliary(); + auxUid = aux; + + _audio.SetEffect(aux, auxComp, effect); + + return (effect, aux); + } + catch (Exception ex) + { + _sawmill.Warning($"Failed to initialize {debugName} effect: {ex.Message}"); + if (auxUid != null && !TerminatingOrDeleted(auxUid.Value)) + { + if (TryComp(auxUid.Value, out var auxComp)) + { + auxComp.Auxiliary?.SetEffect(null); + auxComp.Auxiliary?.Dispose(); + } + Del(auxUid.Value); + } + + if (effectUid != null && !TerminatingOrDeleted(effectUid.Value)) + { + _audio.Stop(effectUid.Value); + Del(effectUid.Value); + } + + return null; + } + } + /// /// Initializes voice effect upon first use, if necessary. /// private bool EnsureVoiceEffectInitialized() { + if (!_ttsEnabled) + return false; + if (_voiceEffectPreset == TTSVoiceEffectPreset.None) { _cachedVoiceEffectEntity = null; @@ -129,30 +191,15 @@ public sealed partial class TTSSystem return false; } - try - { - _sawmill.Debug($"Initializing voice effect for preset: {_voiceEffectPreset}"); - - var effectResult = _audio.CreateEffect(); - var (effectUid, effectComp) = effectResult; - _cachedVoiceEffectEntity = effectUid; - - var preset = GetVoicePreset(_voiceEffectPreset); - _audio.SetEffectPreset(effectUid, effectComp, preset); - - var (auxUid, auxComp) = _audio.CreateAuxiliary(); - _voiceAuxiliaryEntity = auxUid; - - _audio.SetEffect(auxUid, auxComp, effectUid); - - _sawmill.Info($"Voice effect initialized: {_voiceEffectPreset}"); - return true; - } - catch (Exception ex) - { - _sawmill.Warning($"Failed to initialize voice effect: {ex.Message}"); + var result = TryCreateEffectWithAuxiliary(GetVoicePreset(_voiceEffectPreset), $"voice ({_voiceEffectPreset})"); + if (result == null) return false; - } + + _cachedVoiceEffectEntity = result.Value.Effect; + _voiceAuxiliaryEntity = result.Value.Auxiliary; + + _sawmill.Info($"Voice effect initialized: {_voiceEffectPreset}"); + return true; } } @@ -161,6 +208,9 @@ public sealed partial class TTSSystem ///
private bool EnsureRadioEffectInitialized() { + if (!_ttsEnabled) + return false; + if (_cachedRadioEffectEntity != null) return true; @@ -169,27 +219,14 @@ public sealed partial class TTSSystem if (_cachedRadioEffectEntity != null) return true; - try - { - var effectResult = _audio.CreateEffect(); - var (effectUid, effectComp) = effectResult; - _cachedRadioEffectEntity = effectUid; - - var radioPreset = CreateRadioPreset(); - _audio.SetEffectPreset(effectUid, effectComp, radioPreset); - - var (auxUid, auxComp) = _audio.CreateAuxiliary(); - _radioAuxiliaryEntity = auxUid; - - _audio.SetEffect(auxUid, auxComp, effectUid); - - return true; - } - catch (Exception ex) - { - _sawmill.Warning($"Failed to initialize radio EFX effect: {ex.Message}"); + var result = TryCreateEffectWithAuxiliary(CreateRadioPreset(), "radio"); + if (result == null) return false; - } + + _cachedRadioEffectEntity = result.Value.Effect; + _radioAuxiliaryEntity = result.Value.Auxiliary; + + return true; } } } diff --git a/Content.Client/Corvax/TTS/TTSSystem.cs b/Content.Client/Corvax/TTS/TTSSystem.cs index ebaf28e56f..27800ba043 100644 --- a/Content.Client/Corvax/TTS/TTSSystem.cs +++ b/Content.Client/Corvax/TTS/TTSSystem.cs @@ -49,6 +49,7 @@ public sealed partial class TTSSystem : EntitySystem private readonly HashSet _playingEntities = new(); private readonly Dictionary> _entityQueues = new(); private TTSVoiceEffectPreset _voiceEffectPreset = TTSVoiceEffectPreset.None; + private bool _ttsEnabled; private int _fileIdx = 0; public override void Initialize() @@ -61,6 +62,7 @@ public sealed partial class TTSSystem : EntitySystem } _sawmill = Logger.GetSawmill("tts"); + _cfg.OnValueChanged(CCCVars.TTSEnabled, OnTtsEnabledChanged, true); _cfg.OnValueChanged(CCCVars.TTSVoiceEffect, OnVoiceEffectChanged, true); _cfg.OnValueChanged(CCCVars.TTSRadioVolume, OnRadioVolumeChanged, true); _cfg.OnValueChanged(CCCVars.TTSVolume, OnVolumeChanged, true); @@ -73,6 +75,7 @@ public sealed partial class TTSSystem : EntitySystem { base.Shutdown(); + _cfg.UnsubValueChanged(CCCVars.TTSEnabled, OnTtsEnabledChanged); _cfg.UnsubValueChanged(CCCVars.TTSVoiceEffect, OnVoiceEffectChanged); _cfg.UnsubValueChanged(CCCVars.TTSRadioVolume, OnRadioVolumeChanged); _cfg.UnsubValueChanged(CCCVars.TTSVolume, OnVolumeChanged); @@ -83,20 +86,21 @@ public sealed partial class TTSSystem : EntitySystem ShutdownEffects(); } + private void OnTtsEnabledChanged(bool value) + { + _ttsEnabled = value; + + if (!value) + { + ShutdownEffects(); + } + } + private void OnVoiceEffectChanged(int newValue) { _voiceEffectPreset = (TTSVoiceEffectPreset)newValue; - if (_cachedVoiceEffectEntity != null) - { - if (!TerminatingOrDeleted(_cachedVoiceEffectEntity.Value)) - Del(_cachedVoiceEffectEntity.Value); - - _cachedVoiceEffectEntity = null; - } - - if (_voiceEffectPreset != TTSVoiceEffectPreset.None) - EnsureVoiceEffectInitialized(); + ShutdownVoiceEffect(); } private void OnVolumeChanged(float value) @@ -124,6 +128,9 @@ public sealed partial class TTSSystem : EntitySystem private void OnPlayTTS(PlayTTSEvent ev) { + if (!_ttsEnabled) + return; + // It will stop clogging up your memory if you turn off one of the sliders to 0 if (ev.IsRadio && _radioVolume <= 0) { From 36fbce642d27b0b642077346897953839d5ed885 Mon Sep 17 00:00:00 2001 From: _Svist_ <148935188+Svist666s@users.noreply.github.com> Date: Sun, 20 Sep 2026 10:47:14 +0400 Subject: [PATCH 197/197] =?UTF-8?q?=D0=9A=D0=BE=D1=81=D0=BC=D0=B8=D1=87?= =?UTF-8?q?=D0=B5=D1=81=D0=BA=D0=B8=D0=B9=20=D1=80=D0=B0=D1=81=D0=B8=D0=B7?= =?UTF-8?q?=D0=BC=20(#3736)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit мне не кажется что это сильно исправит ситуацию, ведь маркеры это, насколько я помню, не затрагивает, но терять нечего. --- Resources/Prototypes/Entities/Mobs/Player/humanoid.yml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/Resources/Prototypes/Entities/Mobs/Player/humanoid.yml b/Resources/Prototypes/Entities/Mobs/Player/humanoid.yml index 98b6f5b2a4..eed0b858e0 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/humanoid.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/humanoid.yml @@ -21,6 +21,7 @@ id: EventHumanoidCentcomm parent: EventHumanoidMindShielded randomizeName: false + speciesBlacklist: ["Diona", "Vox", "Moth", "Arachnid", "Dwarf", "Vulpkanin", "Tajaran"] # Corvax-MRP components: - type: AutoImplant implants: @@ -49,7 +50,7 @@ id: DeathSquad parent: EventHumanoidCentcomm randomizeName: false - speciesBlacklist: ['Diona'] # Corvax-MRP + speciesBlacklist: ["Diona", "Vox", "Moth", "Arachnid", "Dwarf", "Vulpkanin", "Tajaran", "SlimePerson", "Ipc", "Reptilian"] # Corvax-MRP components: - type: GhostRole name: ghost-role-information-Death-Squad-name @@ -332,8 +333,6 @@ - type: randomHumanoidSettings id: ERTSecurity - speciesBlacklist: # Corvax-MRP - - Diona parent: ERTLeader components: - type: GhostRole @@ -548,8 +547,6 @@ settings: CBURNAgent - type: randomHumanoidSettings - speciesBlacklist: # Corvax-MRP - - Diona id: CBURNAgent parent: EventHumanoidCentcomm components: