diff --git a/Content.Client/Entry/EntryPoint.cs b/Content.Client/Entry/EntryPoint.cs index 514cfa20a1..5901146f89 100644 --- a/Content.Client/Entry/EntryPoint.cs +++ b/Content.Client/Entry/EntryPoint.cs @@ -109,6 +109,7 @@ namespace Content.Client.Entry _prototypeManager.RegisterIgnore("metabolizerType"); _prototypeManager.RegisterIgnore("metabolismGroup"); _prototypeManager.RegisterIgnore("salvageMap"); + _prototypeManager.RegisterIgnore("salvageFaction"); _prototypeManager.RegisterIgnore("gamePreset"); _prototypeManager.RegisterIgnore("gameRule"); _prototypeManager.RegisterIgnore("worldSpell"); diff --git a/Content.Client/IconSmoothing/IconSmoothComponent.cs b/Content.Client/IconSmoothing/IconSmoothComponent.cs index 75c3637a3a..f6cd53b963 100644 --- a/Content.Client/IconSmoothing/IconSmoothComponent.cs +++ b/Content.Client/IconSmoothing/IconSmoothComponent.cs @@ -29,6 +29,9 @@ namespace Content.Client.IconSmoothing [ViewVariables(VVAccess.ReadWrite), DataField("base")] public string StateBase { get; } = string.Empty; + [DataField("shader", customTypeSerializer:typeof(PrototypeIdSerializer))] + public string? Shader; + /// /// Mode that controls how the icon should be selected. /// diff --git a/Content.Client/IconSmoothing/IconSmoothSystem.cs b/Content.Client/IconSmoothing/IconSmoothSystem.cs index af04d6d67d..781089e665 100644 --- a/Content.Client/IconSmoothing/IconSmoothSystem.cs +++ b/Content.Client/IconSmoothing/IconSmoothSystem.cs @@ -55,6 +55,14 @@ namespace Content.Client.IconSmoothing sprite.LayerSetDirOffset(CornerLayers.NW, DirectionOffset.Flip); sprite.LayerMapSet(CornerLayers.SW, sprite.AddLayerState(state0)); sprite.LayerSetDirOffset(CornerLayers.SW, DirectionOffset.Clockwise); + + if (component.Shader != null) + { + sprite.LayerSetShader(CornerLayers.SE, component.Shader); + sprite.LayerSetShader(CornerLayers.NE, component.Shader); + sprite.LayerSetShader(CornerLayers.NW, component.Shader); + sprite.LayerSetShader(CornerLayers.SW, component.Shader); + } } private void OnShutdown(EntityUid uid, IconSmoothComponent component, ComponentShutdown args) diff --git a/Content.Client/Lobby/UI/LobbyCharacterPreviewPanel.cs b/Content.Client/Lobby/UI/LobbyCharacterPreviewPanel.cs index 67ee82aefb..039131e28c 100644 --- a/Content.Client/Lobby/UI/LobbyCharacterPreviewPanel.cs +++ b/Content.Client/Lobby/UI/LobbyCharacterPreviewPanel.cs @@ -74,8 +74,6 @@ namespace Content.Client.Lobby.UI AddChild(vBox); UpdateUI(); - - _preferencesManager.OnServerDataLoaded += UpdateUI; } public Button CharacterSetupButton { get; } @@ -128,7 +126,7 @@ namespace Content.Client.Lobby.UI _viewBox.AddChild(viewWest); _viewBox.AddChild(viewEast); _summaryLabel.Text = selectedCharacter.Summary; - EntitySystem.Get().LoadProfile(_previewDummy.Value, selectedCharacter); + _entityManager.System().LoadProfile(_previewDummy.Value, selectedCharacter); GiveDummyJobClothes(_previewDummy.Value, selectedCharacter); } } diff --git a/Content.Client/Parallax/ParallaxGenerator.cs b/Content.Client/Parallax/ParallaxGenerator.cs index 1998ff9f4e..a2296741fd 100644 --- a/Content.Client/Parallax/ParallaxGenerator.cs +++ b/Content.Client/Parallax/ParallaxGenerator.cs @@ -235,7 +235,7 @@ namespace Content.Client.Parallax for (var x = 0; x < bitmap.Width; x++) { // Do noise calculations. - var noiseVal = MathF.Min(1, MathF.Max(0, (noise.GetNoiseTiled(x, y) + 1) / 2)); + var noiseVal = MathF.Min(1, MathF.Max(0, (noise.GetNoise(x, y) + 1) / 2)); // Threshold noiseVal = MathF.Max(0, noiseVal - Threshold); @@ -462,7 +462,7 @@ namespace Content.Client.Parallax var y = random.Next(0, buffer.Height); // Grab noise at this point. - var noiseVal = MathF.Min(1, MathF.Max(0, (noise.GetNoiseTiled(x, y) + 1) / 2)); + var noiseVal = MathF.Min(1, MathF.Max(0, (noise.GetNoise(x, y) + 1) / 2)); // Threshold noiseVal = MathF.Max(0, noiseVal - MaskThreshold); noiseVal *= threshVal; diff --git a/Content.Client/Salvage/SalvageSystem.cs b/Content.Client/Salvage/SalvageSystem.cs new file mode 100644 index 0000000000..97737bc3e3 --- /dev/null +++ b/Content.Client/Salvage/SalvageSystem.cs @@ -0,0 +1,8 @@ +using Content.Shared.Salvage; + +namespace Content.Client.Salvage; + +public sealed class SalvageSystem : SharedSalvageSystem +{ + +} diff --git a/Content.Client/Salvage/UI/SalvageExpeditionConsoleBoundUserInterface.cs b/Content.Client/Salvage/UI/SalvageExpeditionConsoleBoundUserInterface.cs new file mode 100644 index 0000000000..ccc9fc36d0 --- /dev/null +++ b/Content.Client/Salvage/UI/SalvageExpeditionConsoleBoundUserInterface.cs @@ -0,0 +1,47 @@ +using Content.Shared.Salvage; +using JetBrains.Annotations; +using Robust.Client.GameObjects; + +namespace Content.Client.Salvage.UI; + +[UsedImplicitly] +public sealed class SalvageExpeditionConsoleBoundUserInterface : BoundUserInterface +{ + private SalvageExpeditionWindow? _window; + + public SalvageExpeditionConsoleBoundUserInterface(ClientUserInterfaceComponent owner, Enum uiKey) : base(owner, uiKey) + { + } + + protected override void Open() + { + base.Open(); + _window = new SalvageExpeditionWindow(); + _window.ClaimMission += index => + { + SendMessage(new ClaimSalvageMessage() + { + Index = index, + }); + }; + _window.OnClose += Close; + _window?.OpenCenteredLeft(); + } + + protected override void Dispose(bool disposing) + { + base.Dispose(disposing); + _window?.Dispose(); + _window = null; + } + + protected override void UpdateState(BoundUserInterfaceState state) + { + base.UpdateState(state); + + if (state is not SalvageExpeditionConsoleState current) + return; + + _window?.UpdateState(current); + } +} diff --git a/Content.Client/Salvage/UI/SalvageExpeditionWindow.xaml b/Content.Client/Salvage/UI/SalvageExpeditionWindow.xaml new file mode 100644 index 0000000000..30a747d715 --- /dev/null +++ b/Content.Client/Salvage/UI/SalvageExpeditionWindow.xaml @@ -0,0 +1,23 @@ + + + + + + + + + + diff --git a/Content.Client/Salvage/UI/SalvageExpeditionWindow.xaml.cs b/Content.Client/Salvage/UI/SalvageExpeditionWindow.xaml.cs new file mode 100644 index 0000000000..b312b28f72 --- /dev/null +++ b/Content.Client/Salvage/UI/SalvageExpeditionWindow.xaml.cs @@ -0,0 +1,334 @@ +using Content.Client.Computer; +using Content.Client.Stylesheets; +using Content.Client.UserInterface.Controls; +using Content.Shared.Parallax.Biomes; +using Content.Shared.Procedural; +using Content.Shared.Procedural.Loot; +using Content.Shared.Procedural.Rewards; +using Content.Shared.Random; +using Content.Shared.Random.Helpers; +using Content.Shared.Salvage; +using Content.Shared.Salvage.Expeditions; +using Content.Shared.Salvage.Expeditions.Structure; +using Content.Shared.Shuttles.BUIStates; +using Robust.Client.AutoGenerated; +using Robust.Client.Graphics; +using Robust.Client.UserInterface; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.XAML; +using Robust.Shared.Prototypes; +using Robust.Shared.Timing; + +namespace Content.Client.Salvage.UI; + +[GenerateTypedNameReferences] +public sealed partial class SalvageExpeditionWindow : FancyWindow, + IComputerWindow +{ + private readonly IGameTiming _timing; + private readonly IPrototypeManager _prototype; + private readonly SharedSalvageSystem _salvage; + + public event Action? ClaimMission; + private bool _claimed; + private TimeSpan _nextOffer; + + public SalvageExpeditionWindow() + { + RobustXamlLoader.Load(this); + _timing = IoCManager.Resolve(); + _prototype = IoCManager.Resolve(); + _salvage = IoCManager.Resolve().EntitySysManager.GetEntitySystem(); + } + + public void UpdateState(SalvageExpeditionConsoleState state) + { + _claimed = state.Claimed; + _nextOffer = state.NextOffer; + Container.DisposeAllChildren(); + + for (var i = 0; i < state.Missions.Count; i++) + { + // TODO: Make this XAML + var mission = state.Missions[i]; + var config = _prototype.Index(mission.Config); + var dungeonConfig = _prototype.Index(config.DungeonConfigPrototype); + var faction = SharedSalvageSystem.GetFaction(config.Factions, mission.Seed); + var factionConfig = _prototype.Index(faction); + + // If we ever need this on server then move it + var missionDesc = string.Empty; + var missionDetails = string.Empty; + + switch (config.Mission) + { + case SalvageStructure structure: + var structureConfig = (SalvageStructureFaction) factionConfig.Configs[mission.Config]; + missionDesc = "Demolition"; + // TODO: + missionDetails = $"Destroy {SharedSalvageSystem.GetStructureCount(structure, mission.Seed)} {_prototype.Index(structureConfig.Spawn).Name} structures."; + break; + default: + throw new NotImplementedException(); + } + + // Mission + var missionStripe = new StripeBack() + { + Margin = new Thickness(0f, -5f, 0f, 0f) + }; + + missionStripe.AddChild(new Label() + { + Text = missionDesc, + HorizontalAlignment = HAlignment.Center, + Margin = new Thickness(0f, 5f, 0f, 5f), + }); + + var lBox = new BoxContainer() + { + Orientation = BoxContainer.LayoutOrientation.Vertical + }; + + // Difficulty + // Details + lBox.AddChild(new Label() + { + Text = $"Difficulty:" + }); + + var difficultyColor = StyleNano.NanoGold; + + switch (config.DifficultyRating) + { + case DifficultyRating.None: + difficultyColor = StyleNano.ButtonColorDefault; + break; + case DifficultyRating.Minor: + difficultyColor = StyleNano.GoodGreenFore; + break; + case DifficultyRating.Moderate: + difficultyColor = StyleNano.ConcerningOrangeFore; + break; + default: + throw new ArgumentOutOfRangeException(); + } + + lBox.AddChild(new Label + { + Text = config.DifficultyRating.ToString(), + FontColorOverride = difficultyColor, + HorizontalAlignment = HAlignment.Left, + Margin = new Thickness(0f, 0f, 0f, 5f), + }); + + // Details + lBox.AddChild(new Label + { + Text = $"Details:" + }); + + lBox.AddChild(new Label + { + Text = missionDetails, + FontColorOverride = StyleNano.NanoGold, + HorizontalAlignment = HAlignment.Left, + Margin = new Thickness(0f, 0f, 0f, 5f), + }); + + // Details + lBox.AddChild(new Label + { + Text = $"Hostiles:" + }); + + lBox.AddChild(new Label + { + Text = faction, + FontColorOverride = StyleNano.NanoGold, + HorizontalAlignment = HAlignment.Left, + Margin = new Thickness(0f, 0f, 0f, 5f), + }); + + // Duration + lBox.AddChild(new Label + { + Text = $"Duration:" + }); + + lBox.AddChild(new Label + { + Text = mission.Duration.ToString(), + FontColorOverride = StyleNano.NanoGold, + HorizontalAlignment = HAlignment.Left, + Margin = new Thickness(0f, 0f, 0f, 5f), + }); + + // Biome + lBox.AddChild(new Label + { + Text = "Biome:" + }); + + lBox.AddChild(new Label + { + Text = _prototype.Index(config.Biome).Description, + FontColorOverride = StyleNano.NanoGold, + HorizontalAlignment = HAlignment.Left, + Margin = new Thickness(0f, 0f, 0f, 5f), + }); + + // Environment + lBox.AddChild(new Label + { + Text = "Environment:" + }); + + lBox.AddChild(new Label + { + Text = config.Description, + FontColorOverride = StyleNano.NanoGold, + HorizontalAlignment = HAlignment.Left, + Margin = new Thickness(0f, 0f, 0f, 5f), + }); + + // Modifiers + // TODO + + // Rewards + lBox.AddChild(new Label() + { + Text = $"Reward:" + }); + + var salvageReward = SharedSalvageSystem.GetReward(_prototype.Index(config.Reward), mission.Seed, _prototype); + var difficulty = config.DifficultyRating; + var rewardDesc = string.Empty; + + switch (salvageReward) + { + case BankReward bank: + rewardDesc = $"Bank payment of {(int) (bank.Amount * SharedSalvageSystem.GetDifficultyModifier(difficulty))}"; + break; + default: + throw new ArgumentOutOfRangeException(); + } + + lBox.AddChild(new Label() + { + Text = rewardDesc, + FontColorOverride = StyleNano.GoodGreenFore, + HorizontalAlignment = HAlignment.Left, + Margin = new Thickness(0f, 0f, 0f, 5f), + }); + + + lBox.AddChild(new Label() + { + Text = $"Materials:" + }); + + if (config.Loots.Count == 0) + { + lBox.AddChild(new Label() + { + Text = "N/A", + FontColorOverride = StyleNano.ConcerningOrangeFore, + HorizontalAlignment = HAlignment.Left, + Margin = new Thickness(0f, 0f, 0f, 5f), + }); + } + else + { + foreach (var lootProto in SharedSalvageSystem.GetLoot(config.Loots, mission.Seed, _prototype)) + { + lBox.AddChild(new Label() + { + Text = lootProto.Description, + FontColorOverride = StyleNano.ConcerningOrangeFore, + HorizontalAlignment = HAlignment.Left, + Margin = new Thickness(0f, 0f, 0f, 5f), + }); + } + } + + // Claim + var claimButton = new Button() + { + HorizontalExpand = true, + Pressed = state.ActiveMission == mission.Index, + ToggleMode = true, + Disabled = state.Claimed, + }; + + claimButton.Label.Margin = new Thickness(0f, 5f); + + claimButton.OnPressed += args => + { + ClaimMission?.Invoke(mission.Index); + }; + + if (state.ActiveMission == mission.Index) + { + claimButton.Text = "Claimed"; + claimButton.AddStyleClass(StyleBase.ButtonCaution); + } + else + { + claimButton.Text = "Claim"; + } + + // TODO: Fix this copypaste bullshit + + var box = new PanelContainer() + { + PanelOverride = new StyleBoxFlat(new Color(30, 30, 34)), + HorizontalExpand = true, + Margin = new Thickness(5f, 0f), + Children = + { + new BoxContainer() + { + Orientation = BoxContainer.LayoutOrientation.Vertical, + Children = + { + missionStripe, + lBox, + claimButton, + }, + Margin = new Thickness(5f, 5f) + } + } + }; + + LayoutContainer.SetAnchorPreset(box, LayoutContainer.LayoutPreset.Wide); + + Container.AddChild(box); + } + } + + protected override void FrameUpdate(FrameEventArgs args) + { + base.FrameUpdate(args); + + if (_claimed) + { + NextOfferBar.Value = 0f; + NextOfferText.Text = "N/A"; + return; + } + + var remaining = _nextOffer - _timing.CurTime; + + if (remaining < TimeSpan.Zero) + { + NextOfferBar.Value = 1f; + NextOfferText.Text = "00:00"; + } + else + { + NextOfferBar.Value = 1f - (float) (remaining / SharedSalvageSystem.MissionCooldown); + NextOfferText.Text = $"{remaining.Minutes:00}:{remaining.Seconds:00}"; + } + } +} diff --git a/Content.IntegrationTests/Tests/Procedural/DungeonTests.cs b/Content.IntegrationTests/Tests/Procedural/DungeonTests.cs new file mode 100644 index 0000000000..55f9bc5f3a --- /dev/null +++ b/Content.IntegrationTests/Tests/Procedural/DungeonTests.cs @@ -0,0 +1,96 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using Content.Server.Procedural; +using Content.Shared.Procedural; +using NUnit.Framework; +using Robust.Shared.Maths; +using Robust.Shared.Prototypes; + +namespace Content.IntegrationTests.Tests.Procedural; + +[TestOf(typeof(DungeonSystem))] +public sealed class DungeonTests +{ + [Test] + public async Task TestDungeonRoomPackBounds() + { + await using var pairTracker = await PoolManager.GetServerClient(new PoolSettings{NoClient = true}); + var protoManager = pairTracker.Pair.Server.ResolveDependency(); + + await pairTracker.Pair.Server.WaitAssertion(() => + { + var sizes = new HashSet(); + + foreach (var proto in protoManager.EnumeratePrototypes()) + { + sizes.Add(proto.Size); + sizes.Add(new Vector2i(proto.Size.Y, proto.Size.X)); + } + + foreach (var pack in protoManager.EnumeratePrototypes()) + { + var rooms = new List(); + + for (var i = 0; i < pack.Rooms.Count; i++) + { + var room = pack.Rooms[i]; + var bounds = (Box2) room; + + for (var j = 0; j < rooms.Count; j++) + { + var existing = rooms[j]; + Assert.That(!existing.Intersects(bounds), $"Found overlapping rooms {i} and {j} in DungeonRoomPack {pack.ID}"); + } + + rooms.Add(bounds); + + // Inclusive of upper bounds as it's the edge + Assert.That(room.Left >= 0 && + room.Bottom >= 0 && + room.Right <= pack.Size.X && + room.Top <= pack.Size.Y, $"Found invalid room {room} on DungeonRoomPack {pack.ID}"); + + // Assert that anything exists at this size + var rotated = new Vector2i(room.Size.Y, room.Size.X); + + Assert.That(sizes.Contains(room.Size) || sizes.Contains(rotated), $"Didn't find any dungeon room prototypes for {room.Size} on {pack.ID} index {i}"); + } + } + }); + + await pairTracker.CleanReturnAsync(); + } + + [Test] + public async Task TestDungeonPresets() + { + await using var pairTracker = await PoolManager.GetServerClient(new PoolSettings{NoClient = true}); + var protoManager = pairTracker.Pair.Server.ResolveDependency(); + + await pairTracker.Pair.Server.WaitAssertion(() => + { + var sizes = new HashSet(); + + foreach (var pack in protoManager.EnumeratePrototypes()) + { + sizes.Add(pack.Size); + sizes.Add(new Vector2i(pack.Size.Y, pack.Size.X)); + } + + foreach (var preset in protoManager.EnumeratePrototypes()) + { + for (var i = 0; i < preset.RoomPacks.Count; i++) + { + var pack = preset.RoomPacks[i]; + + // Assert that anything exists at this size + var rotated = new Vector2i(pack.Size.Y, pack.Size.X); + + Assert.That(sizes.Contains(pack.Size) || sizes.Contains(rotated), $"Didn't find any dungeon room prototypes for {pack.Size} for {preset.ID} index {i}"); + } + } + }); + + await pairTracker.CleanReturnAsync(); + } +} diff --git a/Content.Server/CPUJob/JobQueues/Queues/JobQueue.cs b/Content.Server/CPUJob/JobQueues/Queues/JobQueue.cs index 1cccedf067..31e22ec24c 100644 --- a/Content.Server/CPUJob/JobQueues/Queues/JobQueue.cs +++ b/Content.Server/CPUJob/JobQueues/Queues/JobQueue.cs @@ -7,6 +7,11 @@ namespace Content.Server.CPUJob.JobQueues.Queues { private readonly IStopwatch _stopwatch; + public JobQueue(double maxTime) : this(new Stopwatch()) + { + MaxTime = maxTime; + } + public JobQueue() : this(new Stopwatch()) {} public JobQueue(IStopwatch stopwatch) diff --git a/Content.Server/Cargo/Systems/CargoSystem.cs b/Content.Server/Cargo/Systems/CargoSystem.cs index c7acdabdd6..8cf85cef47 100644 --- a/Content.Server/Cargo/Systems/CargoSystem.cs +++ b/Content.Server/Cargo/Systems/CargoSystem.cs @@ -2,6 +2,7 @@ using Content.Server.Cargo.Components; using Content.Server.Station.Systems; using Content.Shared.Cargo; using Content.Shared.Containers.ItemSlots; +using JetBrains.Annotations; using Robust.Shared.Prototypes; namespace Content.Server.Cargo.Systems; @@ -44,9 +45,20 @@ public sealed partial class CargoSystem : SharedCargoSystem UpdateTelepad(frameTime); } - // please don't delete this thank you + [PublicAPI] public void UpdateBankAccount(StationBankAccountComponent component, int balanceAdded) { component.Balance += balanceAdded; + // TODO: Code bad + foreach (var comp in EntityQuery()) + { + if (!_uiSystem.IsUiOpen(comp.Owner, CargoConsoleUiKey.Orders)) continue; + + var station = _station.GetOwningStation(comp.Owner); + if (station != component.Owner) + continue; + + UpdateOrderState(comp, station); + } } } diff --git a/Content.Server/Construction/AnchorableSystem.cs b/Content.Server/Construction/AnchorableSystem.cs index 571d09e2a3..3cb09d642f 100644 --- a/Content.Server/Construction/AnchorableSystem.cs +++ b/Content.Server/Construction/AnchorableSystem.cs @@ -10,6 +10,7 @@ using Content.Shared.Pulling.Components; using Content.Shared.Tools; using Content.Shared.Tools.Components; using Robust.Shared.Map; +using Robust.Shared.Map.Components; using Robust.Shared.Physics.Components; namespace Content.Server.Construction @@ -99,7 +100,12 @@ namespace Content.Server.Construction return false; var tileIndices = grid.TileIndicesFor(coordinates); - var enumerator = grid.GetAnchoredEntitiesEnumerator(tileIndices); + return TileFree(grid, tileIndices, anchorBody.CollisionLayer, anchorBody.CollisionMask); + } + + public bool TileFree(MapGridComponent grid, Vector2i gridIndices, int collisionLayer = 0, int collisionMask = 0) + { + var enumerator = grid.GetAnchoredEntitiesEnumerator(gridIndices); var bodyQuery = GetEntityQuery(); while (enumerator.MoveNext(out var ent)) @@ -111,8 +117,8 @@ namespace Content.Server.Construction continue; } - if ((body.CollisionMask & anchorBody.CollisionLayer) != 0x0 || - (body.CollisionLayer & anchorBody.CollisionMask) != 0x0) + if ((body.CollisionMask & collisionLayer) != 0x0 || + (body.CollisionLayer & collisionMask) != 0x0) { return false; } diff --git a/Content.Server/Decals/DecalSystem.cs b/Content.Server/Decals/DecalSystem.cs index 2925f67c29..69b73f640e 100644 --- a/Content.Server/Decals/DecalSystem.cs +++ b/Content.Server/Decals/DecalSystem.cs @@ -319,6 +319,33 @@ namespace Content.Server.Decals return decalIds; } + public HashSet<(uint Index, Decal Decal)> GetDecalsIntersecting(EntityUid gridUid, Box2 bounds, DecalGridComponent? component = null) + { + var decalIds = new HashSet<(uint, Decal)>(); + var chunkCollection = ChunkCollection(gridUid, component); + + if (chunkCollection == null) + return decalIds; + + var chunks = new ChunkIndicesEnumerator(bounds, ChunkSize); + + while (chunks.MoveNext(out var chunkOrigin)) + { + if (!chunkCollection.TryGetValue(chunkOrigin.Value, out var chunk)) + continue; + + foreach (var (id, decal) in chunk.Decals) + { + if (!bounds.Contains(decal.Coordinates)) + continue; + + decalIds.Add((id, decal)); + } + } + + return decalIds; + } + /// /// Changes a decals position. Note this will actually result in a new decal being created, possibly on a new grid or chunk. /// diff --git a/Content.Server/NPC/Pathfinding/PathfindingSystem.Common.cs b/Content.Server/NPC/Pathfinding/PathfindingSystem.Common.cs index 6c6a2c26f8..13523b81cc 100644 --- a/Content.Server/NPC/Pathfinding/PathfindingSystem.Common.cs +++ b/Content.Server/NPC/Pathfinding/PathfindingSystem.Common.cs @@ -1,3 +1,4 @@ +using Content.Shared.Gravity; using Content.Shared.NPC; namespace Content.Server.NPC.Pathfinding; @@ -45,7 +46,8 @@ public sealed partial class PathfindingSystem var modifier = 1f; // TODO - if ((end.Data.Flags & PathfindingBreadcrumbFlag.Space) != 0x0) + if ((end.Data.Flags & PathfindingBreadcrumbFlag.Space) != 0x0 && + (!TryComp(end.GraphUid, out var gravity) || !gravity.Enabled)) { return 0f; } diff --git a/Content.Server/NPC/Pathfinding/PathfindingSystem.Distance.cs b/Content.Server/NPC/Pathfinding/PathfindingSystem.Distance.cs index 5d7ac4ad03..f80cd61e9d 100644 --- a/Content.Server/NPC/Pathfinding/PathfindingSystem.Distance.cs +++ b/Content.Server/NPC/Pathfinding/PathfindingSystem.Distance.cs @@ -16,12 +16,25 @@ public sealed partial class PathfindingSystem return dx + dy; } + public float ManhattanDistance(Vector2i start, Vector2i end) + { + var distance = end - start; + return Math.Abs(distance.X) + Math.Abs(distance.Y); + } + public float OctileDistance(PathPoly start, PathPoly end) { var (dx, dy) = GetDiff(start, end); return dx + dy + (1.41f - 2) * Math.Min(dx, dy); } + public float OctileDistance(Vector2i start, Vector2i end) + { + var diff = start - end; + var ab = Vector2.Abs(diff); + return ab.X + ab.Y + (1.41f - 2) * Math.Min(ab.X, ab.Y); + } + private Vector2 GetDiff(PathPoly start, PathPoly end) { var startPos = start.Box.Center; diff --git a/Content.Server/NPC/Pathfinding/PathfindingSystem.Grid.cs b/Content.Server/NPC/Pathfinding/PathfindingSystem.Grid.cs index 19c23bac82..827d6ba95b 100644 --- a/Content.Server/NPC/Pathfinding/PathfindingSystem.Grid.cs +++ b/Content.Server/NPC/Pathfinding/PathfindingSystem.Grid.cs @@ -32,7 +32,7 @@ public sealed partial class PathfindingSystem /// If true, UpdateGrid() will not process grids. /// /// - /// Useful if something like a large explosion is in the process of shredding the grid, as it avoids uneccesary + /// Useful if something like a large explosion is in the process of shredding the grid, as it avoids unneccesary /// updating. /// public bool PauseUpdating = false; @@ -232,11 +232,6 @@ public sealed partial class PathfindingSystem comp.DirtyChunks.Clear(); } - -#if DEBUG - if (updateCount > 0) - _sawmill.Debug($"Updated {updateCount} nav chunks in {_stopwatch.Elapsed.TotalMilliseconds:0.000}ms"); -#endif } private bool IsBodyRelevant(PhysicsComponent body) diff --git a/Content.Server/NPC/Pathfinding/PathfindingSystem.Helper.cs b/Content.Server/NPC/Pathfinding/PathfindingSystem.Helper.cs new file mode 100644 index 0000000000..549396e451 --- /dev/null +++ b/Content.Server/NPC/Pathfinding/PathfindingSystem.Helper.cs @@ -0,0 +1,74 @@ +namespace Content.Server.NPC.Pathfinding; + +public sealed partial class PathfindingSystem +{ + /// + /// Finds a generic path from start to end. + /// + public List GetPath(Vector2i start, Vector2i end, bool diagonal = false) + { + if (start == end) + { + return new List(); + } + + var frontier = new PriorityQueue(); + frontier.Enqueue(start, 0f); + var cameFrom = new Dictionary(); + var node = start; + + while (frontier.TryDequeue(out node, out _)) + { + if (node == end) + { + break; + } + + if (diagonal) + { + for (var i = 0; i < 8; i++) + { + var direction = (DirectionFlag) i; + var neighbor = node + direction.AsDir().ToIntVec(); + + if (!cameFrom.TryAdd(neighbor, node)) + continue; + + var gScore = OctileDistance(neighbor, end); + frontier.Enqueue(neighbor, gScore); + } + } + else + { + for (var i = 0; i < 4; i++) + { + var direction = (DirectionFlag) Math.Pow(2, i); + var neighbor = node + direction.AsDir().ToIntVec(); + + if (!cameFrom.TryAdd(neighbor, node)) + continue; + + frontier.Enqueue(neighbor, ManhattanDistance(neighbor, end)); + } + } + } + + if (node != end) + { + return new List(); + } + + var path = new List(); + + do + { + path.Add(node); + var before = cameFrom[node]; + node = before; + } while (node != start); + + path.Add(start); + path.Reverse(); + return path; + } +} diff --git a/Content.Server/Parallax/BiomeSystem.cs b/Content.Server/Parallax/BiomeSystem.cs index f5538b5455..2204806639 100644 --- a/Content.Server/Parallax/BiomeSystem.cs +++ b/Content.Server/Parallax/BiomeSystem.cs @@ -33,6 +33,7 @@ public sealed class BiomeSystem : SharedBiomeSystem public override void Initialize() { base.Initialize(); + SubscribeLocalEvent(OnBiomeStartup); SubscribeLocalEvent(OnBiomeMapInit); _configManager.OnValueChanged(CVars.NetMaxUpdateRange, SetLoadRange, true); } @@ -50,9 +51,15 @@ public sealed class BiomeSystem : SharedBiomeSystem _loadArea = new Box2(-_loadRange, -_loadRange, _loadRange, _loadRange); } + private void OnBiomeStartup(EntityUid uid, BiomeComponent component, ComponentStartup args) + { + component.Noise.SetSeed(component.Seed); + } + private void OnBiomeMapInit(EntityUid uid, BiomeComponent component, MapInitEvent args) { component.Seed = _random.Next(); + component.Noise.SetSeed(component.Seed); Dirty(component); } @@ -97,7 +104,7 @@ public sealed class BiomeSystem : SharedBiomeSystem while (loadBiomes.MoveNext(out var biome, out var grid)) { - var noise = new FastNoise(biome.Seed); + var noise = biome.Noise; var gridUid = grid.Owner; // Load new chunks @@ -124,7 +131,7 @@ public sealed class BiomeSystem : SharedBiomeSystem BiomeComponent component, EntityUid gridUid, MapGridComponent grid, - FastNoise noise, + FastNoiseLite noise, EntityQuery xformQuery) { var active = _activeChunks[component]; @@ -147,7 +154,7 @@ public sealed class BiomeSystem : SharedBiomeSystem EntityUid gridUid, MapGridComponent grid, Vector2i chunk, - FastNoise noise, + FastNoiseLite noise, BiomePrototype prototype, List<(Vector2i, Tile)> tiles, EntityQuery xformQuery) @@ -252,7 +259,7 @@ public sealed class BiomeSystem : SharedBiomeSystem } } - private void UnloadChunks(BiomeComponent component, EntityUid gridUid, MapGridComponent grid, FastNoise noise) + private void UnloadChunks(BiomeComponent component, EntityUid gridUid, MapGridComponent grid, FastNoiseLite noise) { var active = _activeChunks[component]; List<(Vector2i, Tile)>? tiles = null; @@ -268,7 +275,7 @@ public sealed class BiomeSystem : SharedBiomeSystem } } - private void UnloadChunk(BiomeComponent component, EntityUid gridUid, MapGridComponent grid, Vector2i chunk, FastNoise noise, List<(Vector2i, Tile)> tiles) + private void UnloadChunk(BiomeComponent component, EntityUid gridUid, MapGridComponent grid, Vector2i chunk, FastNoiseLite noise, List<(Vector2i, Tile)> tiles) { // Reverse order to loading var prototype = ProtoManager.Index(component.BiomePrototype); diff --git a/Content.Server/Pinpointer/ServerPinpointerSystem.cs b/Content.Server/Pinpointer/ServerPinpointerSystem.cs index a1c7b5af74..3ff5425c74 100644 --- a/Content.Server/Pinpointer/ServerPinpointerSystem.cs +++ b/Content.Server/Pinpointer/ServerPinpointerSystem.cs @@ -14,7 +14,7 @@ namespace Content.Server.Pinpointer { base.Initialize(); SubscribeLocalEvent(OnActivate); - SubscribeLocalEvent(OnLocateTarget); + SubscribeLocalEvent(OnLocateTarget); } private void OnActivate(EntityUid uid, PinpointerComponent component, ActivateInWorldEvent args) @@ -23,7 +23,7 @@ namespace Content.Server.Pinpointer LocateTarget(uid, component); } - private void OnLocateTarget(HyperspaceJumpCompletedEvent ev) + private void OnLocateTarget(ref FTLCompletedEvent ev) { // This feels kind of expensive, but it only happens once per hyperspace jump diff --git a/Content.Server/Procedural/DungeonAtlasTemplateComponent.cs b/Content.Server/Procedural/DungeonAtlasTemplateComponent.cs new file mode 100644 index 0000000000..188cad2964 --- /dev/null +++ b/Content.Server/Procedural/DungeonAtlasTemplateComponent.cs @@ -0,0 +1,13 @@ +using Robust.Shared.Utility; + +namespace Content.Server.Procedural; + +/// +/// Added to pre-loaded maps for dungeon templates. +/// +[RegisterComponent] +public sealed class DungeonAtlasTemplateComponent : Component +{ + [DataField("path", required: true)] + public ResourcePath? Path; +} diff --git a/Content.Server/Procedural/DungeonJob.Generator.cs b/Content.Server/Procedural/DungeonJob.Generator.cs new file mode 100644 index 0000000000..f9b8f826f5 --- /dev/null +++ b/Content.Server/Procedural/DungeonJob.Generator.cs @@ -0,0 +1,429 @@ +using System.Threading.Tasks; +using Content.Shared.Decals; +using Content.Shared.Procedural; +using Content.Shared.Procedural.DungeonGenerators; +using Robust.Shared.Map; +using Robust.Shared.Map.Components; +using Robust.Shared.Random; +using Robust.Shared.Utility; + +namespace Content.Server.Procedural; + +public sealed partial class DungeonJob +{ + private async Task GeneratePrefabDungeon(PrefabDunGen prefab, EntityUid gridUid, MapGridComponent grid, int seed) + { + var random = new Random(seed); + var preset = prefab.Presets[random.Next(prefab.Presets.Count)]; + var gen = _prototype.Index(preset); + + var dungeonRotation = _dungeon.GetDungeonRotation(seed); + var dungeonTransform = Matrix3.CreateTransform(_position, dungeonRotation); + var roomPackProtos = new Dictionary>(); + var externalNodes = new Dictionary>(); + var fallbackTile = new Tile(_tileDefManager[prefab.Tile].TileId); + + foreach (var pack in _prototype.EnumeratePrototypes()) + { + var size = pack.Size; + var sizePacks = roomPackProtos.GetOrNew(size); + sizePacks.Add(pack); + + // Determine external connections; these are only valid when adjacent to a room node. + // We use this later to determine which room packs connect to each other + var nodes = new HashSet(); + externalNodes.Add(pack, nodes); + + foreach (var room in pack.Rooms) + { + var rator = new Box2iEdgeEnumerator(room, false); + + while (rator.MoveNext(out var index)) + { + nodes.Add(index); + } + } + } + + // Need to sort to make the RNG deterministic (at least without prototype changes). + foreach (var roomA in roomPackProtos.Values) + { + roomA.Sort((x, y) => + string.Compare(x.ID, y.ID, StringComparison.Ordinal)); + } + + var roomProtos = new Dictionary>(); + + foreach (var proto in _prototype.EnumeratePrototypes()) + { + var whitelisted = false; + + foreach (var tag in prefab.RoomWhitelist) + { + if (proto.Tags.Contains(tag)) + { + whitelisted = true; + break; + } + } + + if (!whitelisted) + continue; + + var size = proto.Size; + var sizeRooms = roomProtos.GetOrNew(size); + sizeRooms.Add(proto); + } + + foreach (var roomA in roomProtos.Values) + { + roomA.Sort((x, y) => + string.Compare(x.ID, y.ID, StringComparison.Ordinal)); + } + + // First we gather all of the edges for each roompack in the preset + // This allows us to determine which ones should connect from being adjacent + var edges = new HashSet[gen.RoomPacks.Count]; + + for (var i = 0; i < gen.RoomPacks.Count; i++) + { + var pack = gen.RoomPacks[i]; + var nodes = new HashSet(pack.Width + 2 + pack.Height); + + var rator = new Box2iEdgeEnumerator(pack, false); + + while (rator.MoveNext(out var index)) + { + nodes.Add(index); + } + + edges[i] = nodes; + } + + // Build up edge groups between each pack. + var connections = new Dictionary>>(); + + for (var i = 0; i < edges.Length; i++) + { + var nodes = edges[i]; + var nodeConnections = connections.GetOrNew(i); + + for (var j = i + 1; j < edges.Length; j++) + { + var otherNodes = edges[j]; + var intersect = new HashSet(nodes); + + intersect.IntersectWith(otherNodes); + + if (intersect.Count == 0) + continue; + + nodeConnections[j] = intersect; + var otherNodeConnections = connections.GetOrNew(j); + otherNodeConnections[i] = intersect; + } + } + + var tiles = new List<(Vector2i, Tile)>(); + var dungeon = new Dungeon(); + var availablePacks = new List(); + var chosenPacks = new DungeonRoomPackPrototype?[gen.RoomPacks.Count]; + var packTransforms = new Matrix3[gen.RoomPacks.Count]; + var packRotations = new Angle[gen.RoomPacks.Count]; + var rotatedPackNodes = new HashSet[gen.RoomPacks.Count]; + + // Actually pick the room packs and rooms + for (var i = 0; i < gen.RoomPacks.Count; i++) + { + var bounds = gen.RoomPacks[i]; + var dimensions = new Vector2i(bounds.Width, bounds.Height); + + // Try every pack rotation + if (roomPackProtos.TryGetValue(dimensions, out var roomPacks)) + { + availablePacks.AddRange(roomPacks); + } + + // Try rotated versions if there are any. + if (dimensions.X != dimensions.Y) + { + var rotatedDimensions = new Vector2i(dimensions.Y, dimensions.X); + + if (roomPackProtos.TryGetValue(rotatedDimensions, out roomPacks)) + { + availablePacks.AddRange(roomPacks); + } + } + + // Iterate every pack + // To be valid it needs its edge nodes to overlap with every edge group + var external = connections[i]; + + random.Shuffle(availablePacks); + Matrix3 packTransform = default!; + var found = false; + DungeonRoomPackPrototype pack = default!; + + foreach (var aPack in availablePacks) + { + var aExternal = externalNodes[aPack]; + + for (var j = 0; j < 4; j++) + { + var dir = (DirectionFlag) Math.Pow(2, j); + Vector2i aPackDimensions; + + if ((dir & (DirectionFlag.East | DirectionFlag.West)) != 0x0) + { + aPackDimensions = new Vector2i(aPack.Size.Y, aPack.Size.X); + } + else + { + aPackDimensions = aPack.Size; + } + + // Rotation doesn't match. + if (aPackDimensions != bounds.Size) + continue; + + found = true; + var rotatedNodes = new HashSet(aExternal.Count); + var aRotation = dir.AsDir().ToAngle(); + + // Get the external nodes in terms of the dungeon layout + // (i.e. rotated if necessary + translated to the room position) + foreach (var node in aExternal) + { + // Get the node in pack terms (offset from center), then rotate it + // Afterwards we offset it by where the pack is supposed to be in world terms. + var rotated = aRotation.RotateVec((Vector2) node + grid.TileSize / 2f - aPack.Size / 2f); + rotatedNodes.Add((rotated + bounds.Center).Floored()); + } + + foreach (var group in external.Values) + { + if (rotatedNodes.Overlaps(group)) + continue; + + found = false; + break; + } + + if (!found) + { + continue; + } + + // Use this pack + packTransform = Matrix3.CreateTransform(bounds.Center, aRotation); + packRotations[i] = aRotation; + rotatedPackNodes[i] = rotatedNodes; + pack = aPack; + break; + } + + if (found) + break; + } + + availablePacks.Clear(); + + // Oop + if (!found) + { + continue; + } + + // If we're not the first pack then connect to our edges. + chosenPacks[i] = pack; + packTransforms[i] = packTransform; + } + + // Then for overlaps choose either 1x1 / 3x1 + // Pick a random tile for it and then expand outwards as relevant (weighted towards middle?) + + for (var i = 0; i < chosenPacks.Length; i++) + { + var pack = chosenPacks[i]!; + var packTransform = packTransforms[i]; + var packRotation = packRotations[i]; + + // Actual spawn cud here. + // Pickout the room pack template to get the room dimensions we need. + // TODO: Need to be able to load entities on top of other entities but das a lot of effo + var packCenter = (Vector2) pack.Size / 2; + + foreach (var roomSize in pack.Rooms) + { + var roomDimensions = new Vector2i(roomSize.Width, roomSize.Height); + Angle roomRotation = Angle.Zero; + Matrix3 matty; + + if (!roomProtos.TryGetValue(roomDimensions, out var roomProto)) + { + roomDimensions = new Vector2i(roomDimensions.Y, roomDimensions.X); + + if (!roomProtos.TryGetValue(roomDimensions, out roomProto)) + { + Matrix3.Multiply(packTransform, dungeonTransform, out matty); + + for (var x = roomSize.Left; x < roomSize.Right; x++) + { + for (var y = roomSize.Bottom; y < roomSize.Top; y++) + { + var index = matty.Transform(new Vector2(x, y) + grid.TileSize / 2f - packCenter).Floored(); + tiles.Add((index, new Tile(_tileDefManager["FloorPlanetGrass"].TileId))); + } + } + + grid.SetTiles(tiles); + tiles.Clear(); + Logger.Error($"Unable to find room variant for {roomDimensions}, leaving empty."); + continue; + } + + roomRotation = new Angle(Math.PI / 2); + Logger.Debug($"Using rotated variant for room"); + } + + if (roomDimensions.X == roomDimensions.Y) + { + // Give it a random rotation + roomRotation = random.Next(4) * Math.PI / 2; + } + else if (random.Next(2) == 1) + { + roomRotation += Math.PI; + } + + var roomTransform = Matrix3.CreateTransform(roomSize.Center - packCenter, roomRotation); + var finalRoomRotation = roomRotation + packRotation + dungeonRotation; + + Matrix3.Multiply(roomTransform, packTransform, out matty); + Matrix3.Multiply(matty, dungeonTransform, out var dungeonMatty); + + var room = roomProto[random.Next(roomProto.Count)]; + var roomMap = _dungeon.GetOrCreateTemplate(room); + var templateMapUid = _mapManager.GetMapEntityId(roomMap); + var templateGrid = _entManager.GetComponent(templateMapUid); + var roomCenter = (room.Offset + room.Size / 2f) * grid.TileSize; + var roomTiles = new HashSet(room.Size.X * room.Size.Y); + + // Load tiles + for (var x = 0; x < room.Size.X; x++) + { + for (var y = 0; y < room.Size.Y; y++) + { + var indices = new Vector2i(x + room.Offset.X, y + room.Offset.Y); + var tileRef = templateGrid.GetTileRef(indices); + + var tilePos = dungeonMatty.Transform((Vector2) indices + grid.TileSize / 2f - roomCenter); + var rounded = tilePos.Floored(); + tiles.Add((rounded, tileRef.Tile)); + roomTiles.Add(rounded); + } + } + + var center = Vector2.Zero; + + foreach (var tile in roomTiles) + { + center += ((Vector2) tile + grid.TileSize / 2f); + } + + center /= roomTiles.Count; + + dungeon.Rooms.Add(new DungeonRoom(roomTiles, center)); + grid.SetTiles(tiles); + tiles.Clear(); + var xformQuery = _entManager.GetEntityQuery(); + var metaQuery = _entManager.GetEntityQuery(); + + // Load entities + // TODO: I don't think engine supports full entity copying so we do this piece of shit. + var bounds = new Box2(room.Offset, room.Offset + room.Size); + + foreach (var templateEnt in _lookup.GetEntitiesIntersecting(templateMapUid, bounds, LookupFlags.Uncontained)) + { + var templateXform = xformQuery.GetComponent(templateEnt); + var childPos = dungeonMatty.Transform(templateXform.LocalPosition - roomCenter); + var childRot = templateXform.LocalRotation + finalRoomRotation; + var protoId = metaQuery.GetComponent(templateEnt).EntityPrototype?.ID; + + // TODO: Copy the templated entity as is with serv + var ent = _entManager.SpawnEntity(protoId, + new EntityCoordinates(gridUid, childPos)); + + var childXform = xformQuery.GetComponent(ent); + var anchored = templateXform.Anchored; + _transform.SetLocalRotation(ent, childRot, childXform); + + // If the templated entity was anchored then anchor us too. + if (anchored && !childXform.Anchored) + _transform.AnchorEntity(ent, childXform, grid); + else if (!anchored && childXform.Anchored) + _transform.Unanchor(ent, childXform); + } + + // Load decals + if (_entManager.TryGetComponent(templateMapUid, out var loadedDecals)) + { + _entManager.EnsureComponent(gridUid); + + foreach (var (_, decal) in _decals.GetDecalsIntersecting(templateMapUid, bounds, loadedDecals)) + { + // Offset by 0.5 because decals are offset from bot-left corner + // So we convert it to center of tile then convert it back again after transform. + // Do these shenanigans because 32x32 decals assume as they are centered on bottom-left of tiles. + var position = dungeonMatty.Transform(decal.Coordinates + 0.5f - roomCenter); + position -= 0.5f; + + // Umm uhh I love decals so uhhhh idk what to do about this + var angle = (decal.Angle + finalRoomRotation).Reduced(); + + // Adjust because 32x32 so we can't rotate cleanly + // Yeah idk about the uhh vectors here but it looked visually okay but they may still be off by 1. + // Also EyeManager.PixelsPerMeter should really be in shared. + if (angle.Equals(Math.PI)) + { + position += new Vector2(-1f / 32f, 1f / 32f); + } + else if (angle.Equals(Math.PI * 1.5)) + { + position += new Vector2(-1f / 32f, 0f); + } + else if (angle.Equals(Math.PI / 2f)) + { + position += new Vector2(0f, 1f / 32f); + } + + var tilePos = position.Floored(); + + // Fallback because uhhhhhhhh yeah, a corner tile might look valid on the original + // but place 1 nanometre off grid and fail the add. + if (!grid.TryGetTileRef(tilePos, out var tileRef) || tileRef.Tile.IsEmpty) + { + grid.SetTile(tilePos, fallbackTile); + } + + var result = _decals.TryAddDecal( + decal.Id, + new EntityCoordinates(gridUid, position), + out _, + decal.Color, + angle, + decal.ZIndex, + decal.Cleanable); + + DebugTools.Assert(result); + } + } + + await SuspendIfOutOfTime(); + ValidateResume(); + } + } + + return dungeon; + } +} diff --git a/Content.Server/Procedural/DungeonJob.PostGen.cs b/Content.Server/Procedural/DungeonJob.PostGen.cs new file mode 100644 index 0000000000..bf56873544 --- /dev/null +++ b/Content.Server/Procedural/DungeonJob.PostGen.cs @@ -0,0 +1,554 @@ +using System.Linq; +using System.Threading.Tasks; +using Content.Server.Light.Components; +using Content.Shared.Physics; +using Content.Shared.Procedural; +using Content.Shared.Procedural.PostGeneration; +using Content.Shared.Storage; +using Robust.Shared.Map; +using Robust.Shared.Map.Components; +using Robust.Shared.Physics.Components; +using Robust.Shared.Physics.Systems; +using Robust.Shared.Random; +using Robust.Shared.Utility; + +namespace Content.Server.Procedural; + +public sealed partial class DungeonJob +{ + /* + * Run after the main dungeon generation + */ + + private const int CollisionMask = (int) CollisionGroup.Impassable; + private const int CollisionLayer = (int) CollisionGroup.Impassable; + + private async Task PostGen(BoundaryWallPostGen gen, Dungeon dungeon, EntityUid gridUid, MapGridComponent grid, Random random) + { + var tile = new Tile(_tileDefManager[gen.Tile].TileId); + var tiles = new List<(Vector2i Index, Tile Tile)>(); + + // Spawn wall outline + // - Tiles first + foreach (var room in dungeon.Rooms) + { + foreach (var index in room.Tiles) + { + for (var x = -1; x <= 1; x++) + { + for (var y = -1; y <= 1; y++) + { + var neighbor = new Vector2i(x + index.X, y + index.Y); + + if (dungeon.RoomTiles.Contains(neighbor)) + continue; + + if (!_anchorable.TileFree(grid, neighbor, CollisionLayer, CollisionMask)) + continue; + + tiles.Add((neighbor, tile)); + } + } + } + } + + grid.SetTiles(tiles); + + // Double iteration coz we bulk set tiles for speed. + for (var i = 0; i < tiles.Count; i++) + { + var index = tiles[i]; + if (!_anchorable.TileFree(grid, index.Index, CollisionLayer, CollisionMask)) + continue; + + // If no cardinal neighbors in dungeon then we're a corner. + var isCorner = false; + + if (gen.CornerWall != null) + { + isCorner = true; + + for (var x = -1; x <= 1; x++) + { + for (var y = -1; y <= 1; y++) + { + if (x != 0 && y != 0) + { + continue; + } + + var neighbor = new Vector2i(index.Index.X + x, index.Index.Y + y); + + if (dungeon.RoomTiles.Contains(neighbor)) + { + isCorner = false; + break; + } + } + + if (!isCorner) + break; + } + + if (isCorner) + _entManager.SpawnEntity(gen.CornerWall, grid.GridTileToLocal(index.Index)); + } + + if (!isCorner) + _entManager.SpawnEntity(gen.Wall, grid.GridTileToLocal(index.Index)); + + if (i % 10 == 0) + { + await SuspendIfOutOfTime(); + ValidateResume(); + } + } + } + + private async Task PostGen(EntrancePostGen gen, Dungeon dungeon, EntityUid gridUid, MapGridComponent grid, Random random) + { + var rooms = new List(dungeon.Rooms); + var roomTiles = new List(); + var tileData = new Tile(_tileDefManager[gen.Tile].TileId); + var count = gen.Count; + + while (count > 0 && rooms.Count > 0) + { + var roomIndex = random.Next(rooms.Count); + var room = rooms[roomIndex]; + rooms.RemoveAt(roomIndex); + + // Move out 3 tiles in a direction away from center of the room + // If none of those intersect another tile it's probably external + // TODO: Maybe need to take top half of furthest rooms in case there's interior exits? + roomTiles.AddRange(room.Tiles); + random.Shuffle(roomTiles); + + foreach (var tile in roomTiles) + { + // Check the interior node is at least accessible? + // Can't do anchored because it might be a locker or something. + // TODO: Better collision mask check + if (_lookup.GetEntitiesIntersecting(gridUid, tile, LookupFlags.Dynamic | LookupFlags.Static).Any()) + continue; + + var direction = (tile - room.Center).ToAngle().GetCardinalDir().ToAngle().ToVec(); + var isValid = true; + + for (var j = 1; j < 4; j++) + { + var neighbor = (tile + direction * j).Floored(); + + // If it's an interior tile or blocked. + if (dungeon.RoomTiles.Contains(neighbor) || _lookup.GetEntitiesIntersecting(gridUid, neighbor, LookupFlags.Dynamic | LookupFlags.Static).Any()) + { + isValid = false; + break; + } + } + + if (!isValid) + continue; + + var entrancePos = (tile + direction).Floored(); + + // Entrance wew + grid.SetTile(entrancePos, tileData); + ClearDoor(dungeon, grid, entrancePos); + var gridCoords = grid.GridTileToLocal(entrancePos); + // Need to offset the spawn to avoid spawning in the room. + _entManager.SpawnEntity(gen.Door, gridCoords); + count--; + + // Clear out any biome tiles nearby to avoid blocking it + foreach (var nearTile in grid.GetTilesIntersecting(new Circle(gridCoords.Position, 1.5f), false)) + { + if (dungeon.RoomTiles.Contains(nearTile.GridIndices)) + continue; + + grid.SetTile(nearTile.GridIndices, tileData); + } + + break; + } + + roomTiles.Clear(); + } + } + + private async Task PostGen(ExternalWindowPostGen gen, Dungeon dungeon, EntityUid gridUid, MapGridComponent grid, + Random random) + { + // Iterate every room with N chance to spawn windows on that wall per cardinal dir. + var chance = 0.25; + var distance = 10; + + foreach (var room in dungeon.Rooms) + { + var validTiles = new List(); + + for (var i = 0; i < 4; i++) + { + var dir = (DirectionFlag) Math.Pow(2, i); + var dirVec = dir.AsDir().ToIntVec(); + + foreach (var tile in room.Tiles) + { + var tileAngle = ((Vector2) tile + grid.TileSize / 2f - room.Center).ToAngle(); + var roundedAngle = Math.Round(tileAngle.Theta / (Math.PI / 2)) * (Math.PI / 2); + + var tileVec = (Vector2i) new Angle(roundedAngle).ToVec().Rounded(); + + if (!tileVec.Equals(dirVec)) + continue; + + var valid = true; + + for (var j = 1; j < distance; j++) + { + var edgeNeighbor = tile + dirVec * j; + + if (dungeon.RoomTiles.Contains(edgeNeighbor)) + { + valid = false; + break; + } + } + + if (!valid) + continue; + + var windowTile = tile + dirVec; + + if (!_anchorable.TileFree(grid, windowTile, CollisionLayer, CollisionMask)) + continue; + + validTiles.Add(windowTile); + } + + if (validTiles.Count == 0 || random.NextDouble() > chance) + continue; + + validTiles.Sort((x, y) => ((Vector2) x + grid.TileSize / 2f - room.Center).LengthSquared.CompareTo(((Vector2) y + grid.TileSize / 2f - room.Center).LengthSquared)); + + for (var j = 0; j < Math.Min(validTiles.Count, 3); j++) + { + var tile = validTiles[j]; + var gridPos = grid.GridTileToLocal(tile); + grid.SetTile(tile, new Tile(_tileDefManager[gen.Tile].TileId)); + + foreach (var ent in gen.Entities) + { + _entManager.SpawnEntity(ent, gridPos); + } + } + + if (validTiles.Count > 0) + { + await SuspendIfOutOfTime(); + ValidateResume(); + } + + validTiles.Clear(); + } + } + } + + /* + * You may be wondering why these are different. + * It's because for internals we want to force it as it looks nicer and not leave it up to chance. + */ + + // TODO: Can probably combine these a bit, their differences are in really annoying to pull out spots. + + private async Task PostGen(InternalWindowPostGen gen, Dungeon dungeon, EntityUid gridUid, MapGridComponent grid, + Random random) + { + // Iterate every room and check if there's a gap beyond it that leads to another room within N tiles + // If so then consider windows + var minDistance = 4; + var maxDistance = 6; + + foreach (var room in dungeon.Rooms) + { + var validTiles = new List(); + + for (var i = 0; i < 4; i++) + { + var dir = (DirectionFlag) Math.Pow(2, i); + var dirVec = dir.AsDir().ToIntVec(); + + foreach (var tile in room.Tiles) + { + var tileAngle = ((Vector2) tile + grid.TileSize / 2f - room.Center).ToAngle(); + var roundedAngle = Math.Round(tileAngle.Theta / (Math.PI / 2)) * (Math.PI / 2); + + var tileVec = (Vector2i) new Angle(roundedAngle).ToVec().Rounded(); + + if (!tileVec.Equals(dirVec)) + continue; + + var valid = false; + + for (var j = 1; j < maxDistance; j++) + { + var edgeNeighbor = tile + dirVec * j; + + if (dungeon.RoomTiles.Contains(edgeNeighbor)) + { + if (j < minDistance) + { + valid = false; + } + else + { + valid = true; + } + + break; + } + } + + if (!valid) + continue; + + var windowTile = tile + dirVec; + + if (!_anchorable.TileFree(grid, windowTile, CollisionLayer, CollisionMask)) + continue; + + validTiles.Add(windowTile); + } + + validTiles.Sort((x, y) => ((Vector2) x + grid.TileSize / 2f - room.Center).LengthSquared.CompareTo(((Vector2) y + grid.TileSize / 2f - room.Center).LengthSquared)); + + for (var j = 0; j < Math.Min(validTiles.Count, 3); j++) + { + var tile = validTiles[j]; + var gridPos = grid.GridTileToLocal(tile); + grid.SetTile(tile, new Tile(_tileDefManager[gen.Tile].TileId)); + + foreach (var ent in gen.Entities) + { + _entManager.SpawnEntity(ent, gridPos); + } + } + + if (validTiles.Count > 0) + { + await SuspendIfOutOfTime(); + ValidateResume(); + } + + validTiles.Clear(); + } + } + } + + private async Task PostGen(MiddleConnectionPostGen gen, Dungeon dungeon, EntityUid gridUid, MapGridComponent grid, Random random) + { + // TODO: Need a minimal spanning tree version tbh + + // Grab all of the room bounds + // Then, work out connections between them + var roomBorders = new Dictionary>(dungeon.Rooms.Count); + + foreach (var room in dungeon.Rooms) + { + var roomEdges = new HashSet(); + + foreach (var index in room.Tiles) + { + for (var x = -1; x <= 1; x++) + { + for (var y = -1; y <= 1; y++) + { + // Cardinals only + if (x != 0 && y != 0 || + x == 0 && y == 0) + { + continue; + } + + var neighbor = new Vector2i(index.X + x, index.Y + y); + + if (dungeon.RoomTiles.Contains(neighbor)) + continue; + + if (!_anchorable.TileFree(grid, neighbor, CollisionLayer, CollisionMask)) + continue; + + roomEdges.Add(neighbor); + } + } + } + + roomBorders.Add(room, roomEdges); + } + + // Do pathfind from first room to work out graph. + // TODO: Optional loops + + var roomConnections = new Dictionary>(); + var frontier = new Queue(); + frontier.Enqueue(dungeon.Rooms.First()); + var tile = new Tile(_tileDefManager[gen.Tile].TileId); + + foreach (var (room, border) in roomBorders) + { + var conns = roomConnections.GetOrNew(room); + + foreach (var (otherRoom, otherBorders) in roomBorders) + { + if (room.Equals(otherRoom) || + conns.Contains(otherRoom)) + { + continue; + } + + var flipp = new HashSet(border); + flipp.IntersectWith(otherBorders); + + if (flipp.Count == 0 || + gen.OverlapCount != -1 && flipp.Count != gen.OverlapCount) + continue; + + var center = Vector2.Zero; + + foreach (var node in flipp) + { + center += (Vector2) node + grid.TileSize / 2f; + } + + center /= flipp.Count; + // Weight airlocks towards center more. + var nodeDistances = new List<(Vector2i Node, float Distance)>(flipp.Count); + + foreach (var node in flipp) + { + nodeDistances.Add((node, ((Vector2) node + grid.TileSize / 2f - center).LengthSquared)); + } + + nodeDistances.Sort((x, y) => x.Distance.CompareTo(y.Distance)); + + var width = gen.Count; + + for (var i = 0; i < nodeDistances.Count; i++) + { + var node = nodeDistances[i].Node; + var gridPos = grid.GridTileToLocal(node); + if (!_anchorable.TileFree(grid, node, CollisionLayer, CollisionMask)) + continue; + + width--; + grid.SetTile(node, tile); + + if (gen.EdgeEntities != null && nodeDistances.Count - i <= 2) + { + foreach (var ent in gen.EdgeEntities) + { + _entManager.SpawnEntity(ent, gridPos); + } + } + else + { + // Iterate neighbors and check for blockers, if so bulldoze + ClearDoor(dungeon, grid, node); + + foreach (var ent in gen.Entities) + { + _entManager.SpawnEntity(ent, gridPos); + } + } + + if (width == 0) + break; + } + + conns.Add(otherRoom); + var otherConns = roomConnections.GetOrNew(otherRoom); + otherConns.Add(room); + await SuspendIfOutOfTime(); + ValidateResume(); + } + } + } + + /// + /// Removes any unwanted obstacles around a door tile. + /// + private void ClearDoor(Dungeon dungeon, MapGridComponent grid, Vector2i indices, bool strict = false) + { + var flags = strict + ? LookupFlags.Dynamic | LookupFlags.Static | LookupFlags.StaticSundries + : LookupFlags.Dynamic | LookupFlags.Static; + var physicsQuery = _entManager.GetEntityQuery(); + + for (var x = -1; x <= 1; x++) + { + for (var y = -1; y <= 1; y++) + { + if (x != 0 && y != 0) + continue; + + var neighbor = new Vector2i(indices.X + x, indices.Y + y); + + if (!dungeon.RoomTiles.Contains(neighbor)) + continue; + + foreach (var ent in _lookup.GetEntitiesIntersecting(_gridUid, neighbor, flags)) + { + if (!physicsQuery.TryGetComponent(ent, out var physics) || + (CollisionMask & physics.CollisionLayer) == 0x0 && + (CollisionLayer & physics.CollisionMask) == 0x0) + { + continue; + } + + _entManager.DeleteEntity(ent); + } + } + } + } + + private async Task PostGen(WallMountPostGen gen, Dungeon dungeon, EntityUid gridUid, MapGridComponent grid, + Random random) + { + var tileDef = new Tile(_tileDefManager[gen.Tile].TileId); + var checkedTiles = new HashSet(); + + foreach (var room in dungeon.Rooms) + { + foreach (var tile in room.Tiles) + { + for (var x = -1; x <= 1; x++) + { + for (var y = -1; y <= 1; y++) + { + if (x != 0 && y != 0) + { + continue; + } + + var neighbor = new Vector2i(tile.X + x, tile.Y + y); + + // Occupado + if (dungeon.RoomTiles.Contains(neighbor) || checkedTiles.Contains(neighbor) || !_anchorable.TileFree(grid, neighbor, CollisionLayer, CollisionMask)) + continue; + + if (!random.Prob(gen.Prob) || !checkedTiles.Add(neighbor)) + continue; + + grid.SetTile(neighbor, tileDef); + var gridPos = grid.GridTileToLocal(neighbor); + + foreach (var ent in EntitySpawnCollection.GetSpawns(gen.Spawns, random)) + { + _entManager.SpawnEntity(ent, gridPos); + } + } + } + } + } + } +} diff --git a/Content.Server/Procedural/DungeonJob.cs b/Content.Server/Procedural/DungeonJob.cs new file mode 100644 index 0000000000..001f0aee25 --- /dev/null +++ b/Content.Server/Procedural/DungeonJob.cs @@ -0,0 +1,139 @@ +using System.Threading; +using System.Threading.Tasks; +using Content.Server.Construction; +using Content.Server.CPUJob.JobQueues; +using Content.Server.Decals; +using Content.Shared.Procedural; +using Content.Shared.Procedural.DungeonGenerators; +using Content.Shared.Procedural.PostGeneration; +using Robust.Shared.Map; +using Robust.Shared.Map.Components; +using Robust.Shared.Prototypes; + +namespace Content.Server.Procedural; + +public sealed partial class DungeonJob : Job +{ + private readonly IEntityManager _entManager; + private readonly IMapManager _mapManager; + private readonly IPrototypeManager _prototype; + private readonly ITileDefinitionManager _tileDefManager; + + private readonly AnchorableSystem _anchorable; + private readonly DecalSystem _decals; + private readonly DungeonSystem _dungeon; + private readonly EntityLookupSystem _lookup; + private readonly SharedTransformSystem _transform; + + private readonly DungeonConfigPrototype _gen; + private readonly int _seed; + private readonly Vector2 _position; + + private readonly MapGridComponent _grid; + private readonly EntityUid _gridUid; + + private readonly ISawmill _sawmill; + + public DungeonJob( + ISawmill sawmill, + double maxTime, + IEntityManager entManager, + IMapManager mapManager, + IPrototypeManager prototype, + ITileDefinitionManager tileDefManager, + AnchorableSystem anchorable, + DecalSystem decals, + DungeonSystem dungeon, + EntityLookupSystem lookup, + SharedTransformSystem transform, + DungeonConfigPrototype gen, + MapGridComponent grid, + EntityUid gridUid, + int seed, + Vector2 position, + CancellationToken cancellation = default) : base(maxTime, cancellation) + { + _sawmill = sawmill; + _entManager = entManager; + _mapManager = mapManager; + _prototype = prototype; + _tileDefManager = tileDefManager; + + _anchorable = anchorable; + _decals = decals; + _dungeon = dungeon; + _lookup = lookup; + _transform = transform; + + _gen = gen; + _grid = grid; + _gridUid = gridUid; + _seed = seed; + _position = position; + } + + protected override async Task Process() + { + Dungeon dungeon; + _sawmill.Info($"Generating dungeon {_gen.ID} with seed {_seed} on {_entManager.ToPrettyString(_gridUid)}"); + + switch (_gen.Generator) + { + case PrefabDunGen prefab: + dungeon = await GeneratePrefabDungeon(prefab, _gridUid, _grid, _seed); + break; + default: + throw new NotImplementedException(); + } + + foreach (var room in dungeon.Rooms) + { + dungeon.RoomTiles.UnionWith(room.Tiles); + } + + // To make it slightly more deterministic treat this RNG as separate ig. + var random = new Random(_seed); + + foreach (var post in _gen.PostGeneration) + { + _sawmill.Debug($"Doing postgen {post.GetType()} for {_gen.ID} with seed {_seed}"); + + switch (post) + { + case MiddleConnectionPostGen dordor: + await PostGen(dordor, dungeon, _gridUid, _grid, random); + break; + case EntrancePostGen entrance: + await PostGen(entrance, dungeon, _gridUid, _grid, random); + break; + case ExternalWindowPostGen externalWindow: + await PostGen(externalWindow, dungeon, _gridUid, _grid, random); + break; + case InternalWindowPostGen internalWindow: + await PostGen(internalWindow, dungeon, _gridUid, _grid, random); + break; + case BoundaryWallPostGen boundary: + await PostGen(boundary, dungeon, _gridUid, _grid, random); + break; + case WallMountPostGen wall: + await PostGen(wall, dungeon, _gridUid, _grid, random); + break; + default: + throw new NotImplementedException(); + } + + await SuspendIfOutOfTime(); + ValidateResume(); + } + + return dungeon; + } + + private bool ValidateResume() + { + if (_entManager.Deleted(_gridUid)) + return false; + + return true; + } +} diff --git a/Content.Server/Procedural/DungeonSystem.Commands.cs b/Content.Server/Procedural/DungeonSystem.Commands.cs new file mode 100644 index 0000000000..59fc864336 --- /dev/null +++ b/Content.Server/Procedural/DungeonSystem.Commands.cs @@ -0,0 +1,102 @@ +using System.Threading.Tasks; +using Content.Server.Administration; +using Content.Shared.Administration; +using Content.Shared.Procedural; +using Content.Shared.Procedural.DungeonGenerators; +using Robust.Shared.Console; +using Robust.Shared.Map; +using Robust.Shared.Map.Components; + +namespace Content.Server.Procedural; + +public sealed partial class DungeonSystem +{ + /// + /// Generates a dungeon via command. + /// + [AdminCommand(AdminFlags.Fun)] + private async void GenerateDungeon(IConsoleShell shell, string argstr, string[] args) + { + if (args.Length < 4) + { + shell.WriteError("cmd-dungen-arg-count"); + return; + } + + if (!int.TryParse(args[0], out var mapInt)) + { + shell.WriteError("cmd-dungen-map-parse"); + return; + } + + var mapId = new MapId(mapInt); + var mapUid = _mapManager.GetMapEntityId(mapId); + + if (!TryComp(mapUid, out var mapGrid)) + { + shell.WriteError(Loc.GetString("cmd-dungen-mapgrid")); + return; + } + + if (!_prototype.TryIndex(args[1], out var dungeon)) + { + shell.WriteError(Loc.GetString("cmd-dungen-config")); + return; + } + + if (!int.TryParse(args[2], out var posX) || !int.TryParse(args[3], out var posY)) + { + shell.WriteError(Loc.GetString("cmd-dungen-pos")); + return; + } + + var position = new Vector2(posX, posY); + int seed; + + if (args.Length >= 5) + { + if (!int.TryParse(args[4], out seed)) + { + shell.WriteError(Loc.GetString("cmd-dungen-seed")); + return; + } + } + else + { + seed = new Random().Next(); + } + + shell.WriteLine(Loc.GetString("cmd-dungen-start", ("seed", seed))); + GenerateDungeon(dungeon, mapUid, mapGrid, position, seed); + } + + private CompletionResult CompletionCallback(IConsoleShell shell, string[] args) + { + if (args.Length == 1) + { + return CompletionResult.FromHintOptions(CompletionHelper.MapIds(EntityManager), Loc.GetString("cmd-dungen-hint-map")); + } + + if (args.Length == 2) + { + return CompletionResult.FromHintOptions(CompletionHelper.PrototypeIDs(proto: _prototype), Loc.GetString("cmd-dungen-hint-config")); + } + + if (args.Length == 3) + { + return CompletionResult.FromHint(Loc.GetString("cmd-dungen-hint-posx")); + } + + if (args.Length == 4) + { + return CompletionResult.FromHint(Loc.GetString("cmd-dungen-hint-posy")); + } + + if (args.Length == 5) + { + return CompletionResult.FromHint(Loc.GetString("cmd-dungen-hint-seed")); + } + + return CompletionResult.Empty; + } +} diff --git a/Content.Server/Procedural/DungeonSystem.cs b/Content.Server/Procedural/DungeonSystem.cs new file mode 100644 index 0000000000..7f2a5f33a3 --- /dev/null +++ b/Content.Server/Procedural/DungeonSystem.cs @@ -0,0 +1,236 @@ +using System.Threading; +using System.Threading.Tasks; +using Content.Server.Construction; +using Content.Server.CPUJob.JobQueues.Queues; +using Content.Server.Decals; +using Content.Server.GameTicking.Events; +using Content.Shared.CCVar; +using Content.Shared.Procedural; +using Robust.Server.GameObjects; +using Robust.Shared.Configuration; +using Robust.Shared.Console; +using Robust.Shared.Map; +using Robust.Shared.Map.Components; +using Robust.Shared.Prototypes; + +namespace Content.Server.Procedural; + +public sealed partial class DungeonSystem : EntitySystem +{ + [Dependency] private readonly IConfigurationManager _configManager = default!; + [Dependency] private readonly IConsoleHost _console = default!; + [Dependency] private readonly IMapManager _mapManager = default!; + [Dependency] private readonly IPrototypeManager _prototype = default!; + [Dependency] private readonly ITileDefinitionManager _tileDefManager = default!; + [Dependency] private readonly AnchorableSystem _anchorable = default!; + [Dependency] private readonly DecalSystem _decals = default!; + [Dependency] private readonly EntityLookupSystem _lookup = default!; + [Dependency] private readonly MapLoaderSystem _loader = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; + + private ISawmill _sawmill = default!; + + private const double DungeonJobTime = 0.005; + + private readonly JobQueue _dungeonJobQueue = new(DungeonJobTime); + private readonly Dictionary _dungeonJobs = new(); + + public override void Initialize() + { + base.Initialize(); + _sawmill = Logger.GetSawmill("dungen"); + _console.RegisterCommand("dungen", Loc.GetString("cmd-dungen-desc"), Loc.GetString("cmd-dungen-help"), GenerateDungeon, CompletionCallback); + _prototype.PrototypesReloaded += PrototypeReload; + SubscribeLocalEvent(OnRoundStart); + } + + public override void Update(float frameTime) + { + base.Update(frameTime); + _dungeonJobQueue.Process(); + } + + private void OnRoundStart(RoundStartingEvent ev) + { + foreach (var token in _dungeonJobs.Values) + { + token.Cancel(); + } + + _dungeonJobs.Clear(); + var query = AllEntityQuery(); + + while (query.MoveNext(out var uid, out _)) + { + QueueDel(uid); + } + + if (!_configManager.GetCVar(CCVars.ProcgenPreload)) + return; + + // Force all templates to be setup. + foreach (var room in _prototype.EnumeratePrototypes()) + { + GetOrCreateTemplate(room); + } + } + + public override void Shutdown() + { + base.Shutdown(); + _prototype.PrototypesReloaded -= PrototypeReload; + + foreach (var token in _dungeonJobs.Values) + { + token.Cancel(); + } + + _dungeonJobs.Clear(); + } + + private void PrototypeReload(PrototypesReloadedEventArgs obj) + { + if (!obj.ByType.TryGetValue(typeof(DungeonRoomPrototype), out var rooms)) + { + return; + } + + foreach (var proto in rooms.Modified.Values) + { + var roomProto = (DungeonRoomPrototype) proto; + var query = AllEntityQuery(); + + while (query.MoveNext(out var uid, out var comp)) + { + if (!roomProto.AtlasPath.Equals(comp.Path)) + continue; + + QueueDel(uid); + break; + } + } + + if (!_configManager.GetCVar(CCVars.ProcgenPreload)) + return; + + foreach (var proto in rooms.Modified.Values) + { + var roomProto = (DungeonRoomPrototype) proto; + var query = AllEntityQuery(); + var found = false; + + while (query.MoveNext(out var comp)) + { + if (!roomProto.AtlasPath.Equals(comp.Path)) + continue; + + found = true; + break; + } + + if (!found) + { + GetOrCreateTemplate(roomProto); + } + } + } + + public MapId GetOrCreateTemplate(DungeonRoomPrototype proto) + { + var query = AllEntityQuery(); + DungeonAtlasTemplateComponent? comp; + + while (query.MoveNext(out var uid, out comp)) + { + // Exists + if (comp.Path?.Equals(proto.AtlasPath) == true) + return Transform(uid).MapID; + } + + var mapId = _mapManager.CreateMap(); + _loader.Load(mapId, proto.AtlasPath.ToString()); + var mapUid = _mapManager.GetMapEntityId(mapId); + _mapManager.SetMapPaused(mapId, true); + comp = AddComp(mapUid); + comp.Path = proto.AtlasPath; + return mapId; + } + + public void GenerateDungeon(DungeonConfigPrototype gen, + EntityUid gridUid, + MapGridComponent grid, + Vector2 position, + int seed) + { + var cancelToken = new CancellationTokenSource(); + var job = new DungeonJob( + _sawmill, + DungeonJobTime, + EntityManager, + _mapManager, + _prototype, + _tileDefManager, + _anchorable, + _decals, + this, + _lookup, + _transform, + gen, + grid, + gridUid, + seed, + position, + cancelToken.Token); + + _dungeonJobs.Add(job, cancelToken); + _dungeonJobQueue.EnqueueJob(job); + job.Run(); + } + + public async Task GenerateDungeonAsync( + DungeonConfigPrototype gen, + EntityUid gridUid, + MapGridComponent grid, + Vector2 position, + int seed) + { + var cancelToken = new CancellationTokenSource(); + var job = new DungeonJob( + _sawmill, + DungeonJobTime, + EntityManager, + _mapManager, + _prototype, + _tileDefManager, + _anchorable, + _decals, + this, + _lookup, + _transform, + gen, + grid, + gridUid, + seed, + position, + cancelToken.Token); + + _dungeonJobs.Add(job, cancelToken); + _dungeonJobQueue.EnqueueJob(job); + job.Run(); + await job.AsTask; + + if (job.Exception != null) + { + throw job.Exception; + } + + return job.Result!; + } + + public Angle GetDungeonRotation(int seed) + { + // Mask 0 | 1 for rotation seed + var dungeonRotationSeed = 3 & seed; + return Math.PI / 2 * dungeonRotationSeed; + } +} diff --git a/Content.Server/Salvage/SalvageMapPrototype.cs b/Content.Server/Salvage/SalvageMapPrototype.cs index 1f29dd6f0f..dc6a5e5f4f 100644 --- a/Content.Server/Salvage/SalvageMapPrototype.cs +++ b/Content.Server/Salvage/SalvageMapPrototype.cs @@ -11,7 +11,7 @@ namespace Content.Server.Salvage public string ID { get; } = default!; /// - /// Relative directory path to the given map, i.e. `Maps/Salvage/test.yml` + /// Relative directory path to the given map, i.e. `Maps/Salvage/template.yml` /// [DataField("mapPath", required: true)] public ResourcePath MapPath { get; } = default!; diff --git a/Content.Server/Salvage/SalvageSystem.cs b/Content.Server/Salvage/SalvageSystem.cs index eb91c42fe3..b0ce24ddba 100644 --- a/Content.Server/Salvage/SalvageSystem.cs +++ b/Content.Server/Salvage/SalvageSystem.cs @@ -16,29 +16,45 @@ using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Utility; using System.Linq; +using Content.Server.Cargo.Systems; +using Content.Server.NPC.Pathfinding; +using Content.Server.Parallax; +using Content.Server.Procedural; +using Content.Server.Station.Systems; +using Robust.Shared.Timing; namespace Content.Server.Salvage { - public sealed class SalvageSystem : EntitySystem + public sealed partial class SalvageSystem : SharedSalvageSystem { + [Dependency] private readonly IConfigurationManager _configurationManager = default!; + [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly IMapManager _mapManager = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; - [Dependency] private readonly IConfigurationManager _configurationManager = default!; [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly BiomeSystem _biome = default!; + [Dependency] private readonly CargoSystem _cargo = default!; + [Dependency] private readonly DungeonSystem _dungeon = default!; [Dependency] private readonly MapLoaderSystem _map = default!; + [Dependency] private readonly PathfindingSystem _pathfinding = default!; [Dependency] private readonly SharedPopupSystem _popupSystem = default!; [Dependency] private readonly RadioSystem _radioSystem = default!; [Dependency] private readonly SharedAppearanceSystem _appearanceSystem = default!; + [Dependency] private readonly StationSystem _station = default!; + [Dependency] private readonly UserInterfaceSystem _ui = default!; private static readonly int SalvageLocationPlaceAttempts = 16; // TODO: This is probably not compatible with multi-station private readonly Dictionary _salvageGridStates = new(); + private ISawmill _sawmill = default!; + public override void Initialize() { base.Initialize(); + _sawmill = Logger.GetSawmill("salvage"); SubscribeLocalEvent(OnInteractHand); SubscribeLocalEvent(OnExamined); SubscribeLocalEvent(OnMagnetRemoval); diff --git a/Content.Server/Shuttles/Events/HyperspaceJumpCompletedEvent.cs b/Content.Server/Shuttles/Events/FTLCompletedEvent.cs similarity index 74% rename from Content.Server/Shuttles/Events/HyperspaceJumpCompletedEvent.cs rename to Content.Server/Shuttles/Events/FTLCompletedEvent.cs index 4041d3e01c..6eb228fbd8 100644 --- a/Content.Server/Shuttles/Events/HyperspaceJumpCompletedEvent.cs +++ b/Content.Server/Shuttles/Events/FTLCompletedEvent.cs @@ -5,4 +5,5 @@ namespace Content.Server.Shuttles.Events; /// /// Raised when has completed FTL Travel. /// -public sealed class HyperspaceJumpCompletedEvent: EntityEventArgs {} +[ByRefEvent] +public readonly record struct FTLCompletedEvent; diff --git a/Content.Server/Shuttles/Systems/ShuttleConsoleSystem.cs b/Content.Server/Shuttles/Systems/ShuttleConsoleSystem.cs index fb4bda76e6..94c65bf212 100644 --- a/Content.Server/Shuttles/Systems/ShuttleConsoleSystem.cs +++ b/Content.Server/Shuttles/Systems/ShuttleConsoleSystem.cs @@ -46,6 +46,19 @@ namespace Content.Server.Shuttles.Systems SubscribeLocalEvent(HandlePilotMove); SubscribeLocalEvent(OnGetState); + + SubscribeLocalEvent(OnFtlDestStartup); + SubscribeLocalEvent(OnFtlDestShutdown); + } + + private void OnFtlDestStartup(EntityUid uid, FTLDestinationComponent component, ComponentStartup args) + { + RefreshShuttleConsoles(); + } + + private void OnFtlDestShutdown(EntityUid uid, FTLDestinationComponent component, ComponentShutdown args) + { + RefreshShuttleConsoles(); } private void OnDestinationMessage(EntityUid uid, ShuttleConsoleComponent component, ShuttleConsoleDestinationMessage args) @@ -81,7 +94,7 @@ namespace Content.Server.Shuttles.Systems return; } - _shuttle.FTLTravel(shuttle, args.Destination, hyperspaceTime: _shuttle.TransitTime); + _shuttle.FTLTravel(shuttle, args.Destination); } private void OnDock(DockEvent ev) @@ -259,7 +272,6 @@ namespace Content.Server.Shuttles.Systems var canTravel = !locked && comp.Enabled && - !Paused(comp.Owner, meta) && (!TryComp(comp.Owner, out var ftl) || ftl.State == FTLState.Cooldown); // Can't travel to same map. diff --git a/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs b/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs index 3136c76b9c..78191c64b3 100644 --- a/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs +++ b/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs @@ -16,6 +16,7 @@ using Content.Server.Shuttles.Events; using Content.Shared.Buckle.Components; using Content.Shared.Doors.Components; using Robust.Shared.Map.Components; +using Robust.Shared.Physics; using Robust.Shared.Physics.Components; namespace Content.Server.Shuttles.Systems; @@ -71,12 +72,6 @@ public sealed partial class ShuttleSystem private void InitializeFTL() { SubscribeLocalEvent(OnStationGridAdd); - SubscribeLocalEvent(OnDestinationPause); - } - - private void OnDestinationPause(EntityUid uid, FTLDestinationComponent component, ref EntityPausedEvent args) - { - _console.RefreshShuttleConsoles(); } private void OnStationGridAdd(StationGridAddedEvent ev) @@ -216,7 +211,8 @@ public sealed partial class ShuttleSystem if (comp.Accumulator > 0f) continue; - var xform = Transform(comp.Owner); + var uid = comp.Owner; + var xform = Transform(uid); PhysicsComponent? body; ShuttleComponent? shuttle; @@ -228,16 +224,17 @@ public sealed partial class ShuttleSystem comp.State = FTLState.Travelling; - var width = Comp(comp.Owner).LocalAABB.Width; + var width = Comp(uid).LocalAABB.Width; xform.Coordinates = new EntityCoordinates(_mapManager.GetMapEntityId(_hyperSpaceMap!.Value), new Vector2(_index + width / 2f, 0f)); xform.LocalRotation = Angle.Zero; _index += width + Buffer; comp.Accumulator += comp.TravelTime - DefaultArrivalTime; - if (TryComp(comp.Owner, out body)) + if (TryComp(uid, out body)) { - _physics.SetLinearVelocity(comp.Owner, new Vector2(0f, 20f), body: body); - _physics.SetAngularVelocity(comp.Owner, 0f, body: body); + Enable(uid, body); + _physics.SetLinearVelocity(uid, new Vector2(0f, 20f), body: body); + _physics.SetAngularVelocity(uid, 0f, body: body); _physics.SetLinearDamping(body, 0f); _physics.SetAngularDamping(body, 0f); } @@ -245,11 +242,11 @@ public sealed partial class ShuttleSystem if (comp.TravelSound != null) { comp.TravelStream = SoundSystem.Play(comp.TravelSound.GetSound(), - Filter.Pvs(comp.Owner, 4f, entityManager: EntityManager), comp.TravelSound.Params); + Filter.Pvs(uid, 4f, entityManager: EntityManager), comp.TravelSound.Params); } - SetDockBolts(comp.Owner, true); - _console.RefreshShuttleConsoles(comp.Owner); + SetDockBolts(uid, true); + _console.RefreshShuttleConsoles(uid); break; // Arriving, play effects case FTLState.Travelling: @@ -258,29 +255,22 @@ public sealed partial class ShuttleSystem // TODO: Arrival effects // For now we'll just use the ss13 bubbles but we can do fancier. - if (TryComp(comp.Owner, out shuttle)) + if (TryComp(uid, out shuttle)) { _thruster.DisableLinearThrusters(shuttle); _thruster.EnableLinearThrustDirection(shuttle, DirectionFlag.South); } - _console.RefreshShuttleConsoles(comp.Owner); + _console.RefreshShuttleConsoles(uid); break; // Arrived case FTLState.Arriving: DoTheDinosaur(xform); - SetDockBolts(comp.Owner, false); - SetDocks(comp.Owner, true); + SetDockBolts(uid, false); + SetDocks(uid, true); - if (TryComp(comp.Owner, out body)) - { - _physics.SetLinearVelocity(comp.Owner, Vector2.Zero, body: body); - _physics.SetAngularVelocity(comp.Owner, 0f, body: body); - _physics.SetLinearDamping(body, ShuttleLinearDamping); - _physics.SetAngularDamping(body, ShuttleAngularDamping); - } - - TryComp(comp.Owner, out shuttle); + TryComp(uid, out shuttle); + MapId mapId; if (comp.TargetUid != null && shuttle != null) { @@ -288,10 +278,30 @@ public sealed partial class ShuttleSystem TryFTLDock(shuttle, comp.TargetUid.Value); else TryFTLProximity(shuttle, comp.TargetUid.Value); + + mapId = Transform(comp.TargetUid.Value).MapID; } else { xform.Coordinates = comp.TargetCoordinates; + mapId = comp.TargetCoordinates.GetMapId(EntityManager); + } + + if (TryComp(uid, out body)) + { + _physics.SetLinearVelocity(uid, Vector2.Zero, body: body); + _physics.SetAngularVelocity(uid, 0f, body: body); + + // Disable shuttle if it's on a planet; unfortunately can't do this in parent change messages due + // to event ordering and awake body shenanigans (at least for now). + if (HasComp(xform.MapUid)) + { + Disable(uid, body); + } + else + { + Enable(uid, body); + } } if (shuttle != null) @@ -305,25 +315,28 @@ public sealed partial class ShuttleSystem comp.TravelStream = null; } - SoundSystem.Play(_arrivalSound.GetSound(), Filter.Empty().AddInRange(Transform(comp.Owner).MapPosition, GetSoundRange(comp.Owner)), _arrivalSound.Params); + SoundSystem.Play(_arrivalSound.GetSound(), Filter.Empty().AddInRange(Transform(uid).MapPosition, GetSoundRange(uid)), _arrivalSound.Params); - if (TryComp(comp.Owner, out var dest)) + if (TryComp(uid, out var dest)) { dest.Enabled = true; } comp.State = FTLState.Cooldown; comp.Accumulator += FTLCooldown; - _console.RefreshShuttleConsoles(comp.Owner); - RaiseLocalEvent(new HyperspaceJumpCompletedEvent()); + _console.RefreshShuttleConsoles(uid); + var mapUid = _mapManager.GetMapEntityId(mapId); + _mapManager.SetMapPaused(mapId, false); + var ftlEvent = new FTLCompletedEvent(); + RaiseLocalEvent(mapUid, ref ftlEvent, true); break; case FTLState.Cooldown: - RemComp(comp.Owner); - _console.RefreshShuttleConsoles(comp.Owner); + RemComp(uid); + _console.RefreshShuttleConsoles(uid); break; default: - _sawmill.Error($"Found invalid FTL state {comp.State} for {comp.Owner}"); - RemComp(comp.Owner); + _sawmill.Error($"Found invalid FTL state {comp.State} for {uid}"); + RemComp(uid); break; } } @@ -452,6 +465,7 @@ public sealed partial class ShuttleSystem public bool TryFTLProximity(ShuttleComponent component, EntityUid targetUid, TransformComponent? xform = null, TransformComponent? targetXform = null) { if (!Resolve(targetUid, ref targetXform) || + targetXform.GridUid == null || targetXform.MapUid == null || !targetXform.MapUid.Value.IsValid() || !Resolve(component.Owner, ref xform)) @@ -466,7 +480,7 @@ public sealed partial class ShuttleSystem // Spawn nearby. // We essentially expand the Box2 of the target area until nothing else is added then we know it's valid. // Can't just get an AABB of every grid as we may spawn very far away. - if (TryComp(targetUid, out var targetGrid)) + if (TryComp(targetXform.GridUid, out var targetGrid)) { targetLocalAABB = targetGrid.LocalAABB; } @@ -477,7 +491,7 @@ public sealed partial class ShuttleSystem var targetAABB = _transform.GetWorldMatrix(targetXform, xformQuery) .TransformBox(targetLocalAABB).Enlarged(shuttleAABB.Size.Length); - var nearbyGrids = new HashSet(1) { targetUid }; + var nearbyGrids = new HashSet(1) { targetXform.GridUid.Value }; var iteration = 0; var lastCount = 1; var mapId = targetXform.MapID; @@ -518,8 +532,7 @@ public sealed partial class ShuttleSystem break; } - var minRadius = (MathF.Max(targetAABB.Width, targetAABB.Height) + MathF.Max(shuttleAABB.Width, shuttleAABB.Height)) / 2f; - var spawnPos = targetAABB.Center + _random.NextVector2(minRadius, minRadius + 64f); + Vector2 spawnPos; if (TryComp(component.Owner, out var shuttleBody)) { @@ -527,8 +540,34 @@ public sealed partial class ShuttleSystem _physics.SetAngularVelocity(component.Owner, 0f, body: shuttleBody); } + // TODO: This is pretty crude for multiple landings. + if (nearbyGrids.Count > 1 || !HasComp(targetXform.GridUid.Value)) + { + var minRadius = (MathF.Max(targetAABB.Width, targetAABB.Height) + MathF.Max(shuttleAABB.Width, shuttleAABB.Height)) / 2f; + spawnPos = targetAABB.Center + _random.NextVector2(minRadius, minRadius + 64f); + } + else if (shuttleBody != null) + { + var (targetPos, targetRot) = _transform.GetWorldPositionRotation(targetXform, xformQuery); + var transform = new Transform(targetPos, targetRot); + spawnPos = Robust.Shared.Physics.Transform.Mul(transform, -shuttleBody.LocalCenter); + } + else + { + spawnPos = _transform.GetWorldPosition(targetXform, xformQuery); + } + xform.Coordinates = new EntityCoordinates(targetXform.MapUid.Value, spawnPos); - xform.WorldRotation = _random.NextAngle(); + + if (!HasComp(targetXform.GridUid.Value)) + { + _transform.SetLocalRotation(xform, _random.NextAngle()); + } + else + { + _transform.SetLocalRotation(xform, Angle.Zero); + } + return true; } } diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index 50d223f50c..708796067d 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -1031,6 +1031,16 @@ namespace Content.Shared.CCVar public static readonly CVarDef BanHardwareIds = CVarDef.Create("ban.hardware_ids", true, CVar.SERVERONLY); + /* + * Procgen + */ + + /// + /// Should we pre-load all of the procgen atlasses. + /// + public static readonly CVarDef ProcgenPreload = + CVarDef.Create("procgen.preload", true, CVar.SERVERONLY); + /* * Shuttles */ diff --git a/Content.Shared/Movement/Systems/SharedMoverController.cs b/Content.Shared/Movement/Systems/SharedMoverController.cs index 55829dd8d4..932654aa14 100644 --- a/Content.Shared/Movement/Systems/SharedMoverController.cs +++ b/Content.Shared/Movement/Systems/SharedMoverController.cs @@ -36,7 +36,6 @@ namespace Content.Shared.Movement.Systems [Dependency] protected readonly IGameTiming Timing = default!; [Dependency] private readonly IMapManager _mapManager = default!; [Dependency] private readonly ITileDefinitionManager _tileDefinitionManager = default!; - [Dependency] private readonly SharedBiomeSystem _biome = default!; [Dependency] private readonly InventorySystem _inventory = default!; [Dependency] private readonly SharedContainerSystem _container = default!; [Dependency] private readonly EntityLookupSystem _lookup = default!; diff --git a/Content.Shared/Parallax/Biomes/BiomeComponent.cs b/Content.Shared/Parallax/Biomes/BiomeComponent.cs index eaed8a030d..ce9ac6c351 100644 --- a/Content.Shared/Parallax/Biomes/BiomeComponent.cs +++ b/Content.Shared/Parallax/Biomes/BiomeComponent.cs @@ -1,4 +1,5 @@ using Robust.Shared.GameStates; +using Robust.Shared.Noise; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Shared.Parallax.Biomes; @@ -6,6 +7,8 @@ namespace Content.Shared.Parallax.Biomes; [RegisterComponent, NetworkedComponent] public sealed class BiomeComponent : Component { + public FastNoiseLite Noise = new(); + [ViewVariables(VVAccess.ReadWrite), DataField("seed")] public int Seed; @@ -36,4 +39,10 @@ public sealed class BiomeComponent : Component /// [DataField("loadedChunks")] public readonly HashSet LoadedChunks = new(); + + /// + /// Are we currently in the process of generating? + /// Used to flag modified tiles without callers having to deal with it. + /// + public bool Generating = false; } diff --git a/Content.Shared/Parallax/Biomes/BiomePrototype.cs b/Content.Shared/Parallax/Biomes/BiomePrototype.cs index 731efbc1f1..430c8a1bda 100644 --- a/Content.Shared/Parallax/Biomes/BiomePrototype.cs +++ b/Content.Shared/Parallax/Biomes/BiomePrototype.cs @@ -4,7 +4,6 @@ using Robust.Shared.Noise; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; -using Robust.Shared.Utility; namespace Content.Shared.Parallax.Biomes; @@ -13,6 +12,9 @@ public sealed class BiomePrototype : IPrototype { [IdDataField] public string ID { get; } = default!; + [DataField("desc")] + public string Description = string.Empty; + [DataField("layers")] public List Layers = new(); } @@ -20,37 +22,25 @@ public sealed class BiomePrototype : IPrototype [ImplicitDataDefinitionForInheritors] public interface IBiomeLayer { + /// + /// Seed is used an offset from the relevant BiomeComponent's seed. + /// + FastNoiseLite Noise { get; } + /// /// Threshold for this layer to be present. If set to 0 forces it for every tile. /// float Threshold { get; } - - /// - /// Offset the seed by the specified amount for this layer. - /// Useful if you have 2 similar layers but don't want them to match exactly. - /// - int SeedOffset { get; } - - /// - /// Frequency for noise: lower values create larger blobs. - /// - float Frequency { get; } } public sealed class BiomeTileLayer : IBiomeLayer { + [DataField("noise")] public FastNoiseLite Noise { get; } = new(0); + /// [DataField("threshold")] public float Threshold { get; } = 0.5f; - /// - [DataField("seedOffset")] - public int SeedOffset { get; } = 0; - - /// - [DataField("frequency")] - public float Frequency { get; } = 0.1f; - /// /// Which tile variants to use for this layer. Uses all of the tile's variants if none specified /// @@ -84,13 +74,8 @@ public sealed class BiomeDecalLayer : IBiomeWorldLayer [DataField("divisions")] public float Divisions = 1f; - /// - [DataField("seedOffset")] - public int SeedOffset { get; } = 0; - - /// - [DataField("frequency")] - public float Frequency { get; } = 0.25f; + [DataField("noise")] + public FastNoiseLite Noise { get; } = new(0); /// [DataField("threshold")] @@ -106,18 +91,12 @@ public sealed class BiomeEntityLayer : IBiomeWorldLayer [DataField("allowedTiles", customTypeSerializer:typeof(PrototypeIdListSerializer))] public List AllowedTiles { get; } = new(); + [DataField("noise")] public FastNoiseLite Noise { get; } = new(0); + /// [DataField("threshold")] public float Threshold { get; } = 0.5f; - /// - [DataField("seedOffset")] - public int SeedOffset { get; } = 0; - - /// - [DataField("frequency")] - public float Frequency { get; } = 0.1f; - [DataField("entities", required: true, customTypeSerializer: typeof(PrototypeIdListSerializer))] public List Entities = new(); } diff --git a/Content.Shared/Parallax/Biomes/SharedBiomeSystem.cs b/Content.Shared/Parallax/Biomes/SharedBiomeSystem.cs index 5cdba8f5ec..f15286849a 100644 --- a/Content.Shared/Parallax/Biomes/SharedBiomeSystem.cs +++ b/Content.Shared/Parallax/Biomes/SharedBiomeSystem.cs @@ -1,8 +1,5 @@ using System.Diagnostics.CodeAnalysis; -using System.Linq; -using Content.Shared.Decals; using Content.Shared.Maps; -using Robust.Shared.Console; using Robust.Shared.GameStates; using Robust.Shared.Map; using Robust.Shared.Map.Components; @@ -20,8 +17,6 @@ public abstract class SharedBiomeSystem : EntitySystem protected const byte ChunkSize = 8; - // TODO: After I wrote all of this FastNoiseLite got ported so this needs updating for that don't @ me - public override void Initialize() { base.Initialize(); @@ -35,6 +30,8 @@ public abstract class SharedBiomeSystem : EntitySystem return; component.Seed = state.Seed; + component.BiomePrototype = state.Prototype; + component.Noise.SetSeed(component.Seed); } private void OnBiomeGetState(EntityUid uid, BiomeComponent component, ref ComponentGetState args) @@ -86,9 +83,9 @@ public abstract class SharedBiomeSystem : EntitySystem throw new ArgumentOutOfRangeException(); } - public bool TryGetBiomeTile(EntityUid uid, MapGridComponent grid, Vector2i indices, [NotNullWhen(true)] out Tile? tile) + public bool TryGetBiomeTile(EntityUid uid, MapGridComponent grid, FastNoiseLite noise, Vector2i indices, [NotNullWhen(true)] out Tile? tile) { - if (grid.TryGetTileRef(indices, out var tileRef)) + if (grid.TryGetTileRef(indices, out var tileRef) && !tileRef.Tile.IsEmpty) { tile = tileRef.Tile; return true; @@ -101,13 +98,13 @@ public abstract class SharedBiomeSystem : EntitySystem } return TryGetBiomeTile(indices, ProtoManager.Index(biome.BiomePrototype), - new FastNoise(biome.Seed), grid, out tile); + biome.Noise, grid, out tile); } /// /// Tries to get the tile, real or otherwise, for the specified indices. /// - public bool TryGetBiomeTile(Vector2i indices, BiomePrototype prototype, FastNoise seed, MapGridComponent? grid, [NotNullWhen(true)] out Tile? tile) + public bool TryGetBiomeTile(Vector2i indices, BiomePrototype prototype, FastNoiseLite noise, MapGridComponent? grid, [NotNullWhen(true)] out Tile? tile) { if (grid?.TryGetTileRef(indices, out var tileRef) == true && !tileRef.Tile.IsEmpty) { @@ -115,7 +112,7 @@ public abstract class SharedBiomeSystem : EntitySystem return true; } - var oldFrequency = seed.GetFrequency(); + var oldSeed = noise.GetSeed(); for (var i = prototype.Layers.Count - 1; i >= 0; i--) { @@ -124,179 +121,31 @@ public abstract class SharedBiomeSystem : EntitySystem if (layer is not BiomeTileLayer tileLayer) continue; - seed.SetFrequency(tileLayer.Frequency); + SetNoise(noise, oldSeed, layer.Noise); - if (TryGetTile(indices, seed, tileLayer.Threshold, ProtoManager.Index(tileLayer.Tile), tileLayer.Variants, out tile)) + if (TryGetTile(indices, noise, tileLayer.Threshold, ProtoManager.Index(tileLayer.Tile), tileLayer.Variants, out tile)) { - seed.SetFrequency(oldFrequency); + noise.SetSeed(oldSeed); return true; } } - seed.SetFrequency(oldFrequency); + noise.SetSeed(oldSeed); tile = null; return false; } - /// - /// Tries to get the relevant entity for this tile. - /// - protected bool TryGetEntity(Vector2i indices, BiomePrototype prototype, FastNoise noise, MapGridComponent grid, - [NotNullWhen(true)] out string? entity) - { - if (!TryGetBiomeTile(indices, prototype, noise, grid, out var tileRef)) - { - entity = null; - return false; - } - - var tileId = TileDefManager[tileRef.Value.TypeId].ID; - var oldFrequency = noise.GetFrequency(); - var seed = noise.GetSeed(); - - for (var i = prototype.Layers.Count - 1; i >= 0; i--) - { - var layer = prototype.Layers[i]; - var offset = 0; - - // Decals might block entity so need to check if there's one in front of us. - switch (layer) - { - case IBiomeWorldLayer worldLayer: - if (!worldLayer.AllowedTiles.Contains(tileId)) - continue; - - offset = worldLayer.SeedOffset; - noise.SetSeed(seed + offset); - noise.SetFrequency(worldLayer.Frequency); - break; - default: - continue; - } - - var value = (noise.GetCellular(indices.X, indices.Y) + 1f) / 2f; - - if (value < layer.Threshold) - { - DebugTools.Assert(value is <= 1f and >= 0f); - continue; - } - - if (layer is not BiomeEntityLayer biomeLayer) - { - entity = null; - noise.SetFrequency(oldFrequency); - noise.SetSeed(seed); - return false; - } - - entity = Pick(biomeLayer.Entities, (noise.GetSimplex(indices.X, indices.Y) + 1f) / 2f); - noise.SetFrequency(oldFrequency); - noise.SetSeed(seed); - return true; - } - - noise.SetFrequency(oldFrequency); - noise.SetSeed(seed); - entity = null; - return false; - } - - /// - /// Tries to get the relevant decals for this tile. - /// - public bool TryGetDecals(Vector2i indices, BiomePrototype prototype, FastNoise noise, MapGridComponent grid, - [NotNullWhen(true)] out List<(string ID, Vector2 Position)>? decals) - { - if (!TryGetBiomeTile(indices, prototype, noise, grid, out var tileRef)) - { - decals = null; - return false; - } - - var tileId = TileDefManager[tileRef.Value.TypeId].ID; - var oldFrequency = noise.GetFrequency(); - var seed = noise.GetSeed(); - - for (var i = prototype.Layers.Count - 1; i >= 0; i--) - { - var layer = prototype.Layers[i]; - var offset = 0; - - // Entities might block decal so need to check if there's one in front of us. - switch (layer) - { - case IBiomeWorldLayer worldLayer: - if (!worldLayer.AllowedTiles.Contains(tileId)) - continue; - - offset = worldLayer.SeedOffset; - noise.SetSeed(seed + offset); - noise.SetFrequency(worldLayer.Frequency); - break; - default: - continue; - } - - // Check if the other layer should even render, if not then keep going. - if (layer is not BiomeDecalLayer decalLayer) - { - if ((noise.GetCellular(indices.X, indices.Y) + 1f) / 2f < layer.Threshold) - continue; - - decals = null; - noise.SetFrequency(oldFrequency); - noise.SetSeed(seed); - return false; - } - - decals = new List<(string ID, Vector2 Position)>(); - - for (var x = 0; x < decalLayer.Divisions; x++) - { - for (var y = 0; y < decalLayer.Divisions; y++) - { - var index = new Vector2(indices.X + x * 1f / decalLayer.Divisions, indices.Y + y * 1f / decalLayer.Divisions); - var decalValue = (noise.GetCellular(index.X, index.Y) + 1f) / 2f; - - if (decalValue < decalLayer.Threshold) - continue; - - DebugTools.Assert(decalValue is <= 1f and >= 0f); - decals.Add((Pick(decalLayer.Decals, (noise.GetSimplex(index.X, index.Y) + 1f) / 2f), index)); - } - } - - noise.SetFrequency(oldFrequency); - noise.SetSeed(seed); - - // Check other layers - if (decals.Count == 0) - continue; - - return true; - } - - noise.SetFrequency(oldFrequency); - noise.SetSeed(seed); - decals = null; - return false; - } - /// /// Gets the underlying biome tile, ignoring any existing tile that may be there. /// - public bool TryGetTile(Vector2i indices, FastNoise seed, float threshold, ContentTileDefinition tileDef, List? variants, [NotNullWhen(true)] out Tile? tile) + private bool TryGetTile(Vector2i indices, FastNoiseLite seed, float threshold, ContentTileDefinition tileDef, List? variants, [NotNullWhen(true)] out Tile? tile) { - if (threshold > 0f) - { - var found = (seed.GetSimplexFractal(indices.X, indices.Y) + 1f) / 2f; + var found = seed.GetNoise(indices.X, indices.Y); - if (found < threshold) - { - tile = null; - return false; - } + if (found < threshold) + { + tile = null; + return false; } byte variant = 0; @@ -305,7 +154,7 @@ public abstract class SharedBiomeSystem : EntitySystem // Pick a variant tile if they're available as well if (variantCount > 1) { - var variantValue = (seed.GetSimplex(indices.X * 2f, indices.Y * 2f) + 1f) / 2f; + var variantValue = (seed.GetNoise(indices.X * 8, indices.Y * 8, variantCount) + 1f) / 2f; variant = (byte) Pick(variantCount, variantValue); if (variants != null) @@ -318,6 +167,157 @@ public abstract class SharedBiomeSystem : EntitySystem return true; } + /// + /// Tries to get the relevant entity for this tile. + /// + protected bool TryGetEntity(Vector2i indices, BiomePrototype prototype, FastNoiseLite noise, MapGridComponent grid, + [NotNullWhen(true)] out string? entity) + { + if (!TryGetBiomeTile(indices, prototype, noise, grid, out var tileRef)) + { + entity = null; + return false; + } + + var tileId = TileDefManager[tileRef.Value.TypeId].ID; + var oldSeed = noise.GetSeed(); + + for (var i = prototype.Layers.Count - 1; i >= 0; i--) + { + var layer = prototype.Layers[i]; + + // Decals might block entity so need to check if there's one in front of us. + switch (layer) + { + case IBiomeWorldLayer worldLayer: + if (!worldLayer.AllowedTiles.Contains(tileId)) + continue; + + break; + default: + continue; + } + + SetNoise(noise, oldSeed, layer.Noise); + var value = noise.GetNoise(indices.X, indices.Y); + + if (value < layer.Threshold) + { + continue; + } + + if (layer is not BiomeEntityLayer biomeLayer) + { + entity = null; + noise.SetSeed(oldSeed); + return false; + } + + entity = Pick(biomeLayer.Entities, (noise.GetNoise(indices.X, indices.Y, i) + 1f) / 2f); + noise.SetSeed(oldSeed); + return true; + } + + noise.SetSeed(oldSeed); + entity = null; + return false; + } + + /// + /// Tries to get the relevant decals for this tile. + /// + public bool TryGetDecals(Vector2i indices, BiomePrototype prototype, FastNoiseLite noise, MapGridComponent grid, + [NotNullWhen(true)] out List<(string ID, Vector2 Position)>? decals) + { + if (!TryGetBiomeTile(indices, prototype, noise, grid, out var tileRef)) + { + decals = null; + return false; + } + + var tileId = TileDefManager[tileRef.Value.TypeId].ID; + var oldSeed = noise.GetSeed(); + + for (var i = prototype.Layers.Count - 1; i >= 0; i--) + { + var layer = prototype.Layers[i]; + + // Entities might block decal so need to check if there's one in front of us. + switch (layer) + { + case IBiomeWorldLayer worldLayer: + if (!worldLayer.AllowedTiles.Contains(tileId)) + continue; + + break; + default: + continue; + } + + SetNoise(noise, oldSeed, layer.Noise); + + // Check if the other layer should even render, if not then keep going. + if (layer is not BiomeDecalLayer decalLayer) + { + if (noise.GetNoise(indices.X, indices.Y) < layer.Threshold) + continue; + + decals = null; + noise.SetSeed(oldSeed); + return false; + } + + decals = new List<(string ID, Vector2 Position)>(); + + for (var x = 0; x < decalLayer.Divisions; x++) + { + for (var y = 0; y < decalLayer.Divisions; y++) + { + var index = new Vector2(indices.X + x * 1f / decalLayer.Divisions, indices.Y + y * 1f / decalLayer.Divisions); + var decalValue = noise.GetNoise(index.X, index.Y); + + if (decalValue < decalLayer.Threshold) + continue; + + decals.Add((Pick(decalLayer.Decals, (noise.GetNoise(indices.X, indices.Y, x + y * decalLayer.Divisions) + 1f) / 2f), index)); + } + } + + // Check other layers + if (decals.Count == 0) + continue; + + noise.SetSeed(oldSeed); + return true; + } + + noise.SetSeed(oldSeed); + decals = null; + return false; + } + + private void SetNoise(FastNoiseLite noise, int oldSeed, FastNoiseLite data) + { + // General + noise.SetSeed(oldSeed + data.GetSeed()); + noise.SetFrequency(data.GetFrequency()); + noise.SetNoiseType(data.GetNoiseType()); + + noise.GetRotationType3D(); + + // Fractal + noise.SetFractalType(data.GetFractalType()); + noise.SetFractalOctaves(data.GetFractalOctaves()); + noise.SetFractalLacunarity(data.GetFractalLacunarity()); + + // Cellular + noise.SetCellularDistanceFunction(data.GetCellularDistanceFunction()); + noise.SetCellularReturnType(data.GetCellularReturnType()); + noise.SetCellularJitter(data.GetCellularJitter()); + + // Domain warps require separate noise + } + [Serializable, NetSerializable] private sealed class BiomeComponentState : ComponentState { diff --git a/Content.Shared/Procedural/Dungeon.cs b/Content.Shared/Procedural/Dungeon.cs new file mode 100644 index 0000000000..a1c51f6e8b --- /dev/null +++ b/Content.Shared/Procedural/Dungeon.cs @@ -0,0 +1,11 @@ +namespace Content.Shared.Procedural; + +public sealed class Dungeon +{ + public List Rooms = new(); + + /// + /// Hashset of the tiles across all rooms. + /// + public HashSet RoomTiles = new(); +} diff --git a/Content.Shared/Procedural/DungeonConfigPrototype.cs b/Content.Shared/Procedural/DungeonConfigPrototype.cs new file mode 100644 index 0000000000..50de39c197 --- /dev/null +++ b/Content.Shared/Procedural/DungeonConfigPrototype.cs @@ -0,0 +1,21 @@ +using Content.Shared.Procedural.DungeonGenerators; +using Content.Shared.Procedural.PostGeneration; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Procedural; + +[Prototype("dungeonConfig")] +public sealed class DungeonConfigPrototype : IPrototype +{ + [IdDataField] + public string ID { get; } = default!; + + [DataField("generator", required: true)] + public IDunGen Generator = default!; + + /// + /// Ran after the main dungeon is created. + /// + [DataField("postGeneration")] + public List PostGeneration = new(); +} diff --git a/Content.Shared/Procedural/DungeonGenerators/IDunGen.cs b/Content.Shared/Procedural/DungeonGenerators/IDunGen.cs new file mode 100644 index 0000000000..268402f746 --- /dev/null +++ b/Content.Shared/Procedural/DungeonGenerators/IDunGen.cs @@ -0,0 +1,7 @@ +namespace Content.Shared.Procedural.DungeonGenerators; + +[ImplicitDataDefinitionForInheritors] +public interface IDunGen +{ + +} diff --git a/Content.Shared/Procedural/DungeonGenerators/PrefabDunGen.cs b/Content.Shared/Procedural/DungeonGenerators/PrefabDunGen.cs new file mode 100644 index 0000000000..c0355fae43 --- /dev/null +++ b/Content.Shared/Procedural/DungeonGenerators/PrefabDunGen.cs @@ -0,0 +1,30 @@ +using Content.Shared.Maps; +using Content.Shared.Tag; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; + +namespace Content.Shared.Procedural.DungeonGenerators; + +/// +/// Places rooms in pre-selected pack layouts. Chooses rooms from the specified whitelist. +/// +public sealed class PrefabDunGen : IDunGen +{ + /// + /// Rooms need to match any of these tags + /// + [DataField("roomWhitelist", customTypeSerializer:typeof(PrototypeIdListSerializer))] + public List RoomWhitelist = new(); + + /// + /// Room pack presets we can use for this prefab. + /// + [DataField("presets", required: true, customTypeSerializer:typeof(PrototypeIdListSerializer))] + public List Presets = new(); + + /// + /// Fallback tile. + /// + [DataField("tile", customTypeSerializer:typeof(PrototypeIdSerializer))] + public string Tile = "FloorSteel"; +} diff --git a/Content.Shared/Procedural/DungeonPath.cs b/Content.Shared/Procedural/DungeonPath.cs new file mode 100644 index 0000000000..b5ab4bc06e --- /dev/null +++ b/Content.Shared/Procedural/DungeonPath.cs @@ -0,0 +1,10 @@ +namespace Content.Shared.Procedural; + +/// +/// Connects 2 dungeon rooms. +/// +public sealed record DungeonPath(string Tile, string Wall, HashSet Tiles) +{ + public string Tile = Tile; + public string Wall = Wall; +} diff --git a/Content.Shared/Procedural/DungeonPresetPrototype.cs b/Content.Shared/Procedural/DungeonPresetPrototype.cs new file mode 100644 index 0000000000..29ae933be6 --- /dev/null +++ b/Content.Shared/Procedural/DungeonPresetPrototype.cs @@ -0,0 +1,15 @@ +using Robust.Shared.Prototypes; + +namespace Content.Shared.Procedural; + +[Prototype("dungeonPreset")] +public sealed class DungeonPresetPrototype : IPrototype +{ + [IdDataField] public string ID { get; } = default!; + + /// + /// The room pack bounds we need to fill. + /// + [DataField("roomPacks", required: true)] + public List RoomPacks = new(); +} diff --git a/Content.Shared/Procedural/DungeonRoom.cs b/Content.Shared/Procedural/DungeonRoom.cs new file mode 100644 index 0000000000..abd19922f2 --- /dev/null +++ b/Content.Shared/Procedural/DungeonRoom.cs @@ -0,0 +1,3 @@ +namespace Content.Shared.Procedural; + +public sealed record DungeonRoom(HashSet Tiles, Vector2 Center); diff --git a/Content.Shared/Procedural/DungeonRoomPackPrototype.cs b/Content.Shared/Procedural/DungeonRoomPackPrototype.cs new file mode 100644 index 0000000000..fd2fe3ee41 --- /dev/null +++ b/Content.Shared/Procedural/DungeonRoomPackPrototype.cs @@ -0,0 +1,17 @@ +using Robust.Shared.Prototypes; + +namespace Content.Shared.Procedural; + +[Prototype("dungeonRoomPack")] +public sealed class DungeonRoomPackPrototype : IPrototype +{ + [IdDataField] + public string ID { get; } = string.Empty; + + /// + /// Used to associate the room pack with other room packs with the same dimensions. + /// + [DataField("size", required: true)] public Vector2i Size; + + [DataField("rooms", required: true)] public List Rooms = new(); +} diff --git a/Content.Shared/Procedural/DungeonRoomPrototype.cs b/Content.Shared/Procedural/DungeonRoomPrototype.cs new file mode 100644 index 0000000000..425194e90a --- /dev/null +++ b/Content.Shared/Procedural/DungeonRoomPrototype.cs @@ -0,0 +1,27 @@ +using Content.Shared.Tag; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; +using Robust.Shared.Utility; + +namespace Content.Shared.Procedural; + +[Prototype("dungeonRoom")] +public sealed class DungeonRoomPrototype : IPrototype +{ + [IdDataField] public string ID { get; } = string.Empty; + + [ViewVariables(VVAccess.ReadWrite), DataField("tags", customTypeSerializer:typeof(PrototypeIdListSerializer))] + public List Tags = new(); + + [DataField("size", required: true)] public Vector2i Size; + + /// + /// Path to the file to use for the room. + /// + [DataField("atlas", required: true)] public ResourcePath AtlasPath = default!; + + /// + /// Tile offset into the atlas to use for the room. + /// + [DataField("offset", required: true)] public Vector2i Offset; +} diff --git a/Content.Shared/Procedural/Loot/ClusterLoot.cs b/Content.Shared/Procedural/Loot/ClusterLoot.cs new file mode 100644 index 0000000000..ab11f337bb --- /dev/null +++ b/Content.Shared/Procedural/Loot/ClusterLoot.cs @@ -0,0 +1,35 @@ +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + +namespace Content.Shared.Procedural.Loot; + +/// +/// Spawns loot at points in the specified rooms +/// +public sealed class ClusterLoot : IDungeonLoot +{ + /// + /// Minimum spawns in a cluster. + /// + [DataField("minCluster")] + public int MinClusterAmount; + + /// + /// Maximum spawns in a cluster. + /// + [DataField("maxCluster")] public int MaxClusterAmount; + + /// + /// Amount to spawn for the entire loot. + /// + [DataField("max")] + public int Amount; + + /// + /// Number of points to spawn. + /// + [DataField("points")] public int Points; + + [DataField("proto", required: true, customTypeSerializer: typeof(PrototypeIdSerializer))] + public string Prototype { get; } = string.Empty; +} diff --git a/Content.Shared/Procedural/Loot/IDungeonLoot.cs b/Content.Shared/Procedural/Loot/IDungeonLoot.cs new file mode 100644 index 0000000000..933e5e5929 --- /dev/null +++ b/Content.Shared/Procedural/Loot/IDungeonLoot.cs @@ -0,0 +1,7 @@ +namespace Content.Shared.Procedural.Loot; + +[ImplicitDataDefinitionForInheritors] +public interface IDungeonLoot +{ + string Prototype { get; } +} diff --git a/Content.Shared/Procedural/Loot/SalvageLootPrototype.cs b/Content.Shared/Procedural/Loot/SalvageLootPrototype.cs new file mode 100644 index 0000000000..642dd8c003 --- /dev/null +++ b/Content.Shared/Procedural/Loot/SalvageLootPrototype.cs @@ -0,0 +1,20 @@ +using Robust.Shared.Prototypes; + +namespace Content.Shared.Procedural.Loot; + +/// +/// Spawned inside of a salvage mission. +/// +[Prototype("salvageLoot")] +public sealed class SalvageLootPrototype : IPrototype +{ + [IdDataField] public string ID { get; } = default!; + + [DataField("desc")] public string Description = string.Empty; + + /// + /// All of the loot rules + /// + [DataField("loots")] + public List LootRules = new(); +} diff --git a/Content.Shared/Procedural/PostGeneration/BoundaryWallPostGen.cs b/Content.Shared/Procedural/PostGeneration/BoundaryWallPostGen.cs new file mode 100644 index 0000000000..18c9d69ca4 --- /dev/null +++ b/Content.Shared/Procedural/PostGeneration/BoundaryWallPostGen.cs @@ -0,0 +1,23 @@ +using Content.Shared.Maps; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + +namespace Content.Shared.Procedural.PostGeneration; + +/// +/// Iterates room edges and places the relevant tiles and walls on any free indices. +/// +public sealed class BoundaryWallPostGen : IPostDunGen +{ + [DataField("tile", customTypeSerializer:typeof(PrototypeIdSerializer))] + public string Tile = "FloorSteel"; + + [DataField("wall", customTypeSerializer:typeof(PrototypeIdSerializer))] + public string Wall = "WallSolid"; + + /// + /// Walls to use in corners if applicable. + /// + [DataField("cornerWall", customTypeSerializer:typeof(PrototypeIdSerializer))] + public string? CornerWall; +} diff --git a/Content.Shared/Procedural/PostGeneration/EntrancePostGen.cs b/Content.Shared/Procedural/PostGeneration/EntrancePostGen.cs new file mode 100644 index 0000000000..9d3595e49f --- /dev/null +++ b/Content.Shared/Procedural/PostGeneration/EntrancePostGen.cs @@ -0,0 +1,23 @@ +using Content.Shared.Maps; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + +namespace Content.Shared.Procedural.PostGeneration; + +/// +/// Selects [count] rooms and places external doors to them. +/// +public sealed class EntrancePostGen : IPostDunGen +{ + /// + /// How many rooms we place doors on. + /// + [DataField("count")] + public int Count = 1; + + [DataField("door", customTypeSerializer:typeof(PrototypeIdSerializer))] + public string Door = "AirlockGlass"; + + [DataField("tile", customTypeSerializer:typeof(PrototypeIdSerializer))] + public string Tile = "FloorSteel"; +} diff --git a/Content.Shared/Procedural/PostGeneration/ExternalWindowPostGen.cs b/Content.Shared/Procedural/PostGeneration/ExternalWindowPostGen.cs new file mode 100644 index 0000000000..507ef8acfb --- /dev/null +++ b/Content.Shared/Procedural/PostGeneration/ExternalWindowPostGen.cs @@ -0,0 +1,22 @@ +using Content.Shared.Maps; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; + +namespace Content.Shared.Procedural.PostGeneration; + +/// +/// If external areas are found will try to generate windows. +/// +public sealed class ExternalWindowPostGen : IPostDunGen +{ + [DataField("entities", customTypeSerializer: typeof(PrototypeIdListSerializer))] + public List Entities = new() + { + "Grille", + "Window", + }; + + [DataField("tile", customTypeSerializer:typeof(PrototypeIdSerializer))] + public string Tile = "FloorSteel"; +} diff --git a/Content.Shared/Procedural/PostGeneration/IPostDunGen.cs b/Content.Shared/Procedural/PostGeneration/IPostDunGen.cs new file mode 100644 index 0000000000..29db37d240 --- /dev/null +++ b/Content.Shared/Procedural/PostGeneration/IPostDunGen.cs @@ -0,0 +1,10 @@ +namespace Content.Shared.Procedural.PostGeneration; + +/// +/// Ran after generating dungeon rooms. Can be used for additional loot, contents, etc. +/// +[ImplicitDataDefinitionForInheritors] +public interface IPostDunGen +{ + +} diff --git a/Content.Shared/Procedural/PostGeneration/InternalWindowPostGen.cs b/Content.Shared/Procedural/PostGeneration/InternalWindowPostGen.cs new file mode 100644 index 0000000000..d1f3818c57 --- /dev/null +++ b/Content.Shared/Procedural/PostGeneration/InternalWindowPostGen.cs @@ -0,0 +1,22 @@ +using Content.Shared.Maps; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; + +namespace Content.Shared.Procedural.PostGeneration; + +/// +/// If internal areas are found will try to generate windows. +/// +public sealed class InternalWindowPostGen : IPostDunGen +{ + [DataField("entities", customTypeSerializer: typeof(PrototypeIdListSerializer))] + public List Entities = new() + { + "Grille", + "Window", + }; + + [DataField("tile", customTypeSerializer:typeof(PrototypeIdSerializer))] + public string Tile = "FloorSteel"; +} diff --git a/Content.Shared/Procedural/PostGeneration/MiddleConnectionPostGen.cs b/Content.Shared/Procedural/PostGeneration/MiddleConnectionPostGen.cs new file mode 100644 index 0000000000..8a16bb93f2 --- /dev/null +++ b/Content.Shared/Procedural/PostGeneration/MiddleConnectionPostGen.cs @@ -0,0 +1,39 @@ +using Content.Shared.Maps; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; + +namespace Content.Shared.Procedural.PostGeneration; + +/// +/// Places the specified entities on the middle connections between rooms +/// +public sealed class MiddleConnectionPostGen : IPostDunGen +{ + /// + /// How much overlap there needs to be between 2 rooms exactly. + /// + [DataField("overlapCount")] + public int OverlapCount = -1; + + /// + /// How many connections to spawn between rooms. + /// + [DataField("count")] + public int Count = 1; + + [DataField("tile", customTypeSerializer:typeof(PrototypeIdSerializer))] + public string Tile = "FloorSteel"; + + [DataField("entities", customTypeSerializer: typeof(PrototypeIdListSerializer))] + public List Entities = new() + { + "CableApcExtension", + "AirlockGlass" + }; + + /// + /// If overlap > 1 then what should spawn on the edges. + /// + [DataField("edgeEntities")] public List? EdgeEntities; +} diff --git a/Content.Shared/Procedural/PostGeneration/WallMountPostGen.cs b/Content.Shared/Procedural/PostGeneration/WallMountPostGen.cs new file mode 100644 index 0000000000..1205cb3e70 --- /dev/null +++ b/Content.Shared/Procedural/PostGeneration/WallMountPostGen.cs @@ -0,0 +1,23 @@ +using Content.Shared.Maps; +using Content.Shared.Storage; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + +namespace Content.Shared.Procedural.PostGeneration; + +/// +/// Spawns on the boundary tiles of rooms. +/// +public sealed class WallMountPostGen : IPostDunGen +{ + [DataField("tile", customTypeSerializer:typeof(PrototypeIdSerializer))] + public string Tile = "FloorSteel"; + + [DataField("spawns")] + public List Spawns = new(); + + /// + /// Chance per free tile to spawn a wallmount. + /// + [DataField("prob")] + public double Prob = 0.1; +} diff --git a/Content.Shared/Procedural/Rewards/BankReward.cs b/Content.Shared/Procedural/Rewards/BankReward.cs new file mode 100644 index 0000000000..08218eadf3 --- /dev/null +++ b/Content.Shared/Procedural/Rewards/BankReward.cs @@ -0,0 +1,10 @@ +namespace Content.Shared.Procedural.Rewards; + +/// +/// Payout to the station's bank account. +/// +public sealed class BankReward : ISalvageReward +{ + [DataField("amount")] + public int Amount = 0; +} diff --git a/Content.Shared/Procedural/Rewards/ISalvageReward.cs b/Content.Shared/Procedural/Rewards/ISalvageReward.cs new file mode 100644 index 0000000000..da18b2fe17 --- /dev/null +++ b/Content.Shared/Procedural/Rewards/ISalvageReward.cs @@ -0,0 +1,7 @@ +namespace Content.Shared.Procedural.Rewards; + +[ImplicitDataDefinitionForInheritors] +public interface ISalvageReward +{ + +} diff --git a/Content.Shared/Procedural/Rewards/SalvageRewardPrototype.cs b/Content.Shared/Procedural/Rewards/SalvageRewardPrototype.cs new file mode 100644 index 0000000000..c8fd126d64 --- /dev/null +++ b/Content.Shared/Procedural/Rewards/SalvageRewardPrototype.cs @@ -0,0 +1,14 @@ +using Robust.Shared.Prototypes; + +namespace Content.Shared.Procedural.Rewards; + +/// +/// Given after successful completion of a salvage mission. +/// +[Prototype("salvageReward")] +public sealed class SalvageRewardPrototype : IPrototype +{ + [IdDataField] public string ID { get; } = string.Empty; + + [DataField("reward", required: true)] public ISalvageReward Reward = default!; +} diff --git a/Content.Shared/Random/Helpers/SharedRandomExtensions.cs b/Content.Shared/Random/Helpers/SharedRandomExtensions.cs index 41b91465e5..4544bf65fa 100644 --- a/Content.Shared/Random/Helpers/SharedRandomExtensions.cs +++ b/Content.Shared/Random/Helpers/SharedRandomExtensions.cs @@ -11,6 +11,28 @@ namespace Content.Shared.Random.Helpers return random.Pick(prototype.Values); } + public static string Pick(this WeightedRandomPrototype prototype, System.Random random) + { + var picks = prototype.Weights; + var sum = picks.Values.Sum(); + var accumulated = 0f; + + var rand = random.NextFloat() * sum; + + foreach (var (key, weight) in picks) + { + accumulated += weight; + + if (accumulated >= rand) + { + return key; + } + } + + // Shouldn't happen + throw new InvalidOperationException($"Invalid weighted pick for {prototype.ID}!"); + } + public static string Pick(this WeightedRandomPrototype prototype, IRobustRandom? random = null) { IoCManager.Resolve(ref random); @@ -33,5 +55,25 @@ namespace Content.Shared.Random.Helpers // Shouldn't happen throw new InvalidOperationException($"Invalid weighted pick for {prototype.ID}!"); } + + public static string Pick(this IRobustRandom random, Dictionary weights) + { + var sum = weights.Values.Sum(); + var accumulated = 0f; + + var rand = random.NextFloat() * sum; + + foreach (var (key, weight) in weights) + { + accumulated += weight; + + if (accumulated >= rand) + { + return key; + } + } + + throw new InvalidOperationException($"Invalid weighted pick"); + } } } diff --git a/Content.Shared/Salvage/Expeditions/Extraction/SalvageExtraction.cs b/Content.Shared/Salvage/Expeditions/Extraction/SalvageExtraction.cs new file mode 100644 index 0000000000..e637fe125d --- /dev/null +++ b/Content.Shared/Salvage/Expeditions/Extraction/SalvageExtraction.cs @@ -0,0 +1,21 @@ +namespace Content.Shared.Salvage.Expeditions.Extraction; + +public sealed class SalvageExtraction : ISalvageMission +{ + /// + /// Minimum weight to be used for a wave. + /// + [DataField("minWaveWeight")] public float MinWaveWeight = 5; + + /// + /// Minimum time between 2 waves. Roughly the end of one to the start of another. + /// + [ViewVariables(VVAccess.ReadWrite), DataField("waveCooldown")] + public TimeSpan WaveCooldown = TimeSpan.FromSeconds(60); + + /// + /// How much weight accumulates per second while the expedition is active. + /// + [DataField("weightAccumulator")] + public float WeightAccumulator = 0.1f; +} diff --git a/Content.Shared/Salvage/Expeditions/IFactionExpeditionConfig.cs b/Content.Shared/Salvage/Expeditions/IFactionExpeditionConfig.cs new file mode 100644 index 0000000000..cd1186c3c8 --- /dev/null +++ b/Content.Shared/Salvage/Expeditions/IFactionExpeditionConfig.cs @@ -0,0 +1,7 @@ +namespace Content.Shared.Salvage.Expeditions; + + +public interface IFactionExpeditionConfig +{ + +} diff --git a/Content.Shared/Salvage/Expeditions/SalvageFactionPrototype.cs b/Content.Shared/Salvage/Expeditions/SalvageFactionPrototype.cs new file mode 100644 index 0000000000..03184aca70 --- /dev/null +++ b/Content.Shared/Salvage/Expeditions/SalvageFactionPrototype.cs @@ -0,0 +1,19 @@ +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Dictionary; + +namespace Content.Shared.Salvage.Expeditions; + +[Prototype("salvageFaction")] +public sealed class SalvageFactionPrototype : IPrototype +{ + [IdDataField] public string ID { get; } = default!; + + [ViewVariables(VVAccess.ReadWrite), DataField("groups", required: true)] + public List MobGroups = default!; + + /// + /// Per expedition type data for this faction. + /// + [ViewVariables(VVAccess.ReadWrite), DataField("configs", customTypeSerializer: typeof(PrototypeIdDictionarySerializer))] + public Dictionary Configs = new(); +} diff --git a/Content.Shared/Salvage/Expeditions/SalvageMobGroup.cs b/Content.Shared/Salvage/Expeditions/SalvageMobGroup.cs new file mode 100644 index 0000000000..da728e44f0 --- /dev/null +++ b/Content.Shared/Salvage/Expeditions/SalvageMobGroup.cs @@ -0,0 +1,18 @@ +using Content.Shared.Storage; + +namespace Content.Shared.Salvage.Expeditions; + +[DataDefinition] +public record struct SalvageMobGroup() +{ + // A mob may be cheap but rare or expensive but frequent. + + /// + /// Probability to spawn this group. Summed with everything else for the faction. + /// + [ViewVariables(VVAccess.ReadWrite), DataField("prob")] + public float Prob = 1f; + + [ViewVariables(VVAccess.ReadWrite), DataField("entries", required: true)] + public List Entries = new(); +} diff --git a/Content.Shared/Salvage/Expeditions/Structure/SalvageStructure.cs b/Content.Shared/Salvage/Expeditions/Structure/SalvageStructure.cs new file mode 100644 index 0000000000..052c6f6a81 --- /dev/null +++ b/Content.Shared/Salvage/Expeditions/Structure/SalvageStructure.cs @@ -0,0 +1,17 @@ +namespace Content.Shared.Salvage.Expeditions.Structure; + +/// +/// Destroy the specified number of structures to finish the expedition. +/// +[DataDefinition] +public sealed class SalvageStructure : ISalvageMission +{ + [DataField("desc")] + public string Description = string.Empty; + + [ViewVariables(VVAccess.ReadWrite), DataField("minStructures")] + public int MinStructures = 3; + + [ViewVariables(VVAccess.ReadWrite), DataField("maxStructures")] + public int MaxStructures = 5; +} diff --git a/Content.Shared/Salvage/Expeditions/Structure/SalvageStructureFaction.cs b/Content.Shared/Salvage/Expeditions/Structure/SalvageStructureFaction.cs new file mode 100644 index 0000000000..3193a1d83b --- /dev/null +++ b/Content.Shared/Salvage/Expeditions/Structure/SalvageStructureFaction.cs @@ -0,0 +1,23 @@ +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + +namespace Content.Shared.Salvage.Expeditions.Structure; + +/// +/// Per-faction config for Salvage Structure expeditions. +/// +[DataDefinition] +public sealed class SalvageStructureFaction : IFactionExpeditionConfig +{ + /// + /// Entity prototype of the structures to destroy. + /// + [ViewVariables(VVAccess.ReadWrite), DataField("spawn", required: true, customTypeSerializer: typeof(PrototypeIdSerializer))] + public string Spawn = default!; + + /// + /// How many groups of mobs to spawn. + /// + [DataField("groupCount")] + public int Groups = 5; +} diff --git a/Content.Shared/Salvage/ISalvageMission.cs b/Content.Shared/Salvage/ISalvageMission.cs new file mode 100644 index 0000000000..b1f08b45f2 --- /dev/null +++ b/Content.Shared/Salvage/ISalvageMission.cs @@ -0,0 +1,3 @@ +namespace Content.Shared.Salvage; + +public interface ISalvageMission {} \ No newline at end of file diff --git a/Content.Shared/Salvage/SalvageExpeditionPrototype.cs b/Content.Shared/Salvage/SalvageExpeditionPrototype.cs new file mode 100644 index 0000000000..eec3cc8d1a --- /dev/null +++ b/Content.Shared/Salvage/SalvageExpeditionPrototype.cs @@ -0,0 +1,89 @@ +using Content.Shared.Dataset; +using Content.Shared.Parallax.Biomes; +using Content.Shared.Procedural; +using Content.Shared.Procedural.Loot; +using Content.Shared.Procedural.Rewards; +using Content.Shared.Random; +using Content.Shared.Salvage.Expeditions; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; + +namespace Content.Shared.Salvage; + +[Prototype("salvageExpedition")] +public sealed class SalvageExpeditionPrototype : IPrototype +{ + [IdDataField] public string ID { get; } = default!; + + /// + /// Naming scheme for the FTL marker. + /// + [DataField("nameProto", customTypeSerializer:typeof(PrototypeIdSerializer))] + public string NameProto = "names_borer"; + + /// + /// Biome to generate the dungeon. + /// + [DataField("biome", required: true, customTypeSerializer: typeof(PrototypeIdSerializer))] + public string Biome = string.Empty; + + /// + /// Player-friendly description for the console. + /// + [DataField("desc")] + public string Description = string.Empty; + + [DataField("difficultyRating")] + public DifficultyRating DifficultyRating = DifficultyRating.Minor; + + // TODO: Make these modifiers but also add difficulty modifiers. + [DataField("light")] + public Color Light = Color.Black; + + [DataField("temperature")] + public float Temperature = 293.15f; + + [DataField("expedition", required: true)] + public ISalvageMission Mission = default!; + + [DataField("minDuration")] + public TimeSpan MinDuration = TimeSpan.FromSeconds(9 * 60); + + [DataField("maxDuration")] + public TimeSpan MaxDuration = TimeSpan.FromSeconds(12 * 60); + + /// + /// Available factions for selection for this mission prototype. + /// + [DataField("factions", customTypeSerializer:typeof(PrototypeIdListSerializer))] + public List Factions = new(); + + [DataField("dungeonConfig", required: true, customTypeSerializer: typeof(PrototypeIdSerializer))] + public string DungeonConfigPrototype = string.Empty; + + [DataField("reward", customTypeSerializer: typeof(PrototypeIdSerializer))] + public string Reward = string.Empty; + + /// + /// Possible loot prototypes available for this expedition. + /// This spawns during the mission and is not tied to completion. + /// + [DataField("loot", customTypeSerializer: typeof(PrototypeIdListSerializer))] + public List Loots = new(); + + [DataField("dungeonPosition")] + public Vector2i DungeonPosition = new(80, -25); +} + +[Serializable, NetSerializable] +public enum DifficultyRating : byte +{ + None, + Minor, + Moderate, + Hazardous, + Extreme, +} + diff --git a/Content.Shared/Salvage/SalvageExpeditions.cs b/Content.Shared/Salvage/SalvageExpeditions.cs new file mode 100644 index 0000000000..680a71090c --- /dev/null +++ b/Content.Shared/Salvage/SalvageExpeditions.cs @@ -0,0 +1,91 @@ +using Robust.Shared.GameStates; +using Robust.Shared.Serialization; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + +namespace Content.Shared.Salvage; + +[Serializable, NetSerializable] +public sealed class SalvageExpeditionConsoleState : BoundUserInterfaceState +{ + public TimeSpan NextOffer; + public bool Claimed; + public ushort ActiveMission; + public List Missions; + + public SalvageExpeditionConsoleState(TimeSpan nextOffer, bool claimed, ushort activeMission, List missions) + { + NextOffer = nextOffer; + Claimed = claimed; + ActiveMission = activeMission; + Missions = missions; + } +} + +/// +/// Used to interact with salvage expeditions and claim them. +/// +[RegisterComponent, NetworkedComponent] +public sealed class SalvageExpeditionConsoleComponent : Component +{ + +} + +[Serializable, NetSerializable] +public sealed class ClaimSalvageMessage : BoundUserInterfaceMessage +{ + public ushort Index; +} + +/// +/// Added per station to store data on their available salvage missions. +/// +[RegisterComponent] +public sealed class SalvageExpeditionDataComponent : Component +{ + /// + /// Is there an active salvage expedition. + /// + [ViewVariables] + public bool Claimed => ActiveMission != 0; + + /// + /// Nexy time salvage missions are offered. + /// + [ViewVariables(VVAccess.ReadWrite), DataField("nextOffer", customTypeSerializer:typeof(TimeOffsetSerializer))] + public TimeSpan NextOffer; + + [ViewVariables] + public readonly Dictionary Missions = new(); + + [ViewVariables] public ushort ActiveMission; + + public ushort NextIndex = 1; +} + +[Serializable, NetSerializable] +public sealed record SalvageMission +{ + [ViewVariables] + public ushort Index; + + [ViewVariables(VVAccess.ReadWrite), DataField("config", required: true, customTypeSerializer:typeof(SalvageExpeditionPrototype))] + public string Config = default!; + + [ViewVariables] public TimeSpan Duration; + + [ViewVariables] public int Seed; +} + +[Serializable, NetSerializable] +public enum SalvageEnvironment : byte +{ + Invalid = 0, + Caves, +} + +[Serializable, NetSerializable] +public enum SalvageConsoleUiKey : byte +{ + Expedition, +} diff --git a/Content.Shared/Salvage/SharedSalvageSystem.cs b/Content.Shared/Salvage/SharedSalvageSystem.cs new file mode 100644 index 0000000000..b66dd1375b --- /dev/null +++ b/Content.Shared/Salvage/SharedSalvageSystem.cs @@ -0,0 +1,77 @@ +using Content.Shared.Dataset; +using Content.Shared.Procedural.Loot; +using Content.Shared.Procedural.Rewards; +using Content.Shared.Random; +using Content.Shared.Random.Helpers; +using Content.Shared.Salvage.Expeditions.Structure; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Salvage; + +public abstract class SharedSalvageSystem : EntitySystem +{ + public static readonly TimeSpan MissionCooldown = TimeSpan.FromMinutes(5); + public static readonly TimeSpan MissionFailedCooldown = TimeSpan.FromMinutes(10); + + public static float GetDifficultyModifier(DifficultyRating difficulty) + { + // These should reflect how many salvage staff are expected to be required for the mission. + switch (difficulty) + { + case DifficultyRating.None: + return 1f; + case DifficultyRating.Minor: + return 1.5f; + case DifficultyRating.Moderate: + return 3f; + case DifficultyRating.Hazardous: + return 6f; + case DifficultyRating.Extreme: + return 10f; + default: + throw new ArgumentOutOfRangeException(nameof(difficulty), difficulty, null); + } + } + + public static string GetFTLName(DatasetPrototype dataset, int seed) + { + var random = new System.Random(seed); + return $"{dataset.Values[random.Next(dataset.Values.Count)]}-{random.Next(10, 100)}-{(char) (65 + random.Next(26))}"; + } + + public static string GetFaction(List factions, int seed) + { + var adjustedSeed = new System.Random(seed + 1); + return factions[adjustedSeed.Next(factions.Count)]; + } + + public static IEnumerable GetLoot(List loots, int seed, IPrototypeManager protoManager) + { + var adjustedSeed = new System.Random(seed + 2); + + for (var i = 0; i < loots.Count; i++) + { + var loot = loots[i]; + var a = protoManager.Index(loot); + var lootConfig = a.Pick(adjustedSeed); + yield return protoManager.Index(lootConfig); + } + } + + public static ISalvageReward GetReward(WeightedRandomPrototype proto, int seed, IPrototypeManager protoManager) + { + var adjustedSeed = new System.Random(seed + 3); + var rewardProto = proto.Pick(adjustedSeed); + return protoManager.Index(rewardProto).Reward; + } + + #region Structure + + public static int GetStructureCount(SalvageStructure structure, int seed) + { + var adjustedSeed = new System.Random(seed + 4); + return adjustedSeed.Next(structure.MinStructures, structure.MaxStructures + 1); + } + + #endregion +} diff --git a/Content.Shared/Storage/EntitySpawnEntry.cs b/Content.Shared/Storage/EntitySpawnEntry.cs index da57ca850a..8b58e9f0f0 100644 --- a/Content.Shared/Storage/EntitySpawnEntry.cs +++ b/Content.Shared/Storage/EntitySpawnEntry.cs @@ -131,6 +131,71 @@ public static class EntitySpawnCollection return spawned; } + public static List GetSpawns(IEnumerable entries, + System.Random random) + { + var spawned = new List(); + var ungrouped = CollectOrGroups(entries, out var orGroupedSpawns); + + foreach (var entry in ungrouped) + { + // Check random spawn + // ReSharper disable once CompareOfFloatsByEqualityOperator + if (entry.SpawnProbability != 1f && !random.Prob(entry.SpawnProbability)) + continue; + + var amount = (int) entry.GetAmount(random); + + for (var i = 0; i < amount; i++) + { + spawned.Add(entry.PrototypeId); + } + } + + // Handle OrGroup spawns + foreach (var spawnValue in orGroupedSpawns) + { + // For each group use the added cumulative probability to roll a double in that range + var diceRoll = random.NextDouble() * spawnValue.CumulativeProbability; + + // Add the entry's spawn probability to this value, if equals or lower, spawn item, otherwise continue to next item. + var cumulative = 0.0; + + foreach (var entry in spawnValue.Entries) + { + cumulative += entry.SpawnProbability; + if (diceRoll > cumulative) + continue; + + // Dice roll succeeded, add item and break loop + var amount = (int) entry.GetAmount(random); + + for (var i = 0; i < amount; i++) + { + spawned.Add(entry.PrototypeId); + } + + break; + } + } + + return spawned; + } + + public static double GetAmount(this EntitySpawnEntry entry, System.Random random, bool getAverage = false) + { + // Max amount is less or equal than amount, so just return the amount + if (entry.MaxAmount <= entry.Amount) + return entry.Amount; + + // If we want the average, just calculate the expected amount + if (getAverage) + return (entry.Amount + entry.MaxAmount) / 2.0; + + // Otherwise get a random value in between + return random.Next(entry.Amount, entry.MaxAmount); + } + /// /// Collects all entries that belong together in an OrGroup, and then returns the leftover ungrouped entries. /// diff --git a/Resources/Audio/Effects/Footsteps/attributions.yml b/Resources/Audio/Effects/Footsteps/attributions.yml new file mode 100644 index 0000000000..93d4782248 --- /dev/null +++ b/Resources/Audio/Effects/Footsteps/attributions.yml @@ -0,0 +1,8 @@ +- files: + - water1.ogg + - water2.ogg + - water3.ogg + - water4.ogg + license: "CC-BY-SA-3.0" + copyright: "Taken from https://github.com/Citadel-Station-13/Citadel-Station-13-RP" + source: "https://github.com/Citadel-Station-13/Citadel-Station-13-RP/tree/b7392a25f826d038d35309cf36875f2066c3eb05/sound/effects/footstep" \ No newline at end of file diff --git a/Resources/Audio/Effects/Footsteps/water1.ogg b/Resources/Audio/Effects/Footsteps/water1.ogg new file mode 100644 index 0000000000..f22cbf2848 Binary files /dev/null and b/Resources/Audio/Effects/Footsteps/water1.ogg differ diff --git a/Resources/Audio/Effects/Footsteps/water2.ogg b/Resources/Audio/Effects/Footsteps/water2.ogg new file mode 100644 index 0000000000..e2a47650c6 Binary files /dev/null and b/Resources/Audio/Effects/Footsteps/water2.ogg differ diff --git a/Resources/Audio/Effects/Footsteps/water3.ogg b/Resources/Audio/Effects/Footsteps/water3.ogg new file mode 100644 index 0000000000..97ce152a5c Binary files /dev/null and b/Resources/Audio/Effects/Footsteps/water3.ogg differ diff --git a/Resources/Audio/Effects/Footsteps/water4.ogg b/Resources/Audio/Effects/Footsteps/water4.ogg new file mode 100644 index 0000000000..5778a52560 Binary files /dev/null and b/Resources/Audio/Effects/Footsteps/water4.ogg differ diff --git a/Resources/ConfigPresets/Build/development.toml b/Resources/ConfigPresets/Build/development.toml index 6e1c24c3d7..af662f2e5c 100644 --- a/Resources/ConfigPresets/Build/development.toml +++ b/Resources/ConfigPresets/Build/development.toml @@ -6,8 +6,11 @@ lobbyenabled = false # Makes mapping annoying grid_splitting = false +[procgen] +preload = false + [shuttle] # Wastes startup time +auto_call_time = 0 cargo = false emergency_enabled = false - diff --git a/Resources/Locale/en-US/procedural/command.ftl b/Resources/Locale/en-US/procedural/command.ftl new file mode 100644 index 0000000000..27ad1a180c --- /dev/null +++ b/Resources/Locale/en-US/procedural/command.ftl @@ -0,0 +1,15 @@ +cmd-dungen-desc = Generates a procedural dungeon with the specified preset, position, and seed. +cmd-dungen-help = dungen [seed] +cmd-dungen-arg-count = Require 4 args. +cmd-dungen-map-parse = Unable to parse MapId. +cmd-dungen-mapgrid = Unable to find MapGrid. +cmd-dungen-config = Unable to find dungeon config. +cmd-dungen-pos = Unable to parse position. +cmd-dungen-seed = Unable to parse seed. +cmd-dungen-start = Generating dungeon with seed {$seed} + +cmd-dungen-hint-map = Map Id +cmd-dungen-hint-config = Dungeon config +cmd-dungen-hint-posx = Position X +cmd-dungen-hint-posy = Position Y +cmd-dungen-hint-seed = [Seed] diff --git a/Resources/Maps/Dungeon/Templates/17x17.yml b/Resources/Maps/Dungeon/Templates/17x17.yml new file mode 100644 index 0000000000..64ddf22b9e --- /dev/null +++ b/Resources/Maps/Dungeon/Templates/17x17.yml @@ -0,0 +1,448 @@ +meta: + format: 3 + name: DemoStation + author: Space-Wizards + postmapinit: false +tilemap: + 0: Space + 1: FloorArcadeBlue + 2: FloorArcadeBlue2 + 3: FloorArcadeRed + 4: FloorAsteroidCoarseSand0 + 5: FloorAsteroidCoarseSandDug + 6: FloorAsteroidIronsand1 + 7: FloorAsteroidIronsand2 + 8: FloorAsteroidIronsand3 + 9: FloorAsteroidIronsand4 + 10: FloorAsteroidSand + 11: FloorAsteroidTile + 12: FloorBar + 13: FloorBasalt + 14: FloorBasaslt + 15: FloorBlue + 16: FloorBlueCircuit + 17: FloorBoxing + 18: FloorCarpetClown + 19: FloorCarpetOffice + 20: FloorCave + 21: FloorCaveDrought + 22: FloorClown + 23: FloorDark + 24: FloorDarkDiagonal + 25: FloorDarkDiagonalMini + 26: FloorDarkHerringbone + 27: FloorDarkMini + 28: FloorDarkMono + 29: FloorDarkOffset + 30: FloorDarkPavement + 31: FloorDarkPavementVertical + 32: FloorDarkPlastic + 33: FloorDesert + 34: FloorDirt + 35: FloorEighties + 36: FloorElevatorShaft + 37: FloorFlesh + 38: FloorFreezer + 39: FloorGlass + 40: FloorGold + 41: FloorGrass + 42: FloorGrassDark + 43: FloorGrassJungle + 44: FloorGrassLight + 45: FloorGreenCircuit + 46: FloorGym + 47: FloorHydro + 48: FloorKitchen + 49: FloorLaundry + 50: FloorLino + 51: FloorLowDesert + 52: FloorMetalDiamond + 53: FloorMime + 54: FloorMono + 55: FloorPlanetGrass + 56: FloorPlastic + 57: FloorRGlass + 58: FloorReinforced + 59: FloorRockVault + 60: FloorShowroom + 61: FloorShuttleBlue + 62: FloorShuttleOrange + 63: FloorShuttlePurple + 64: FloorShuttleRed + 65: FloorShuttleWhite + 66: FloorSilver + 67: FloorSnow + 68: FloorSteel + 69: FloorSteelDiagonal + 70: FloorSteelDiagonalMini + 71: FloorSteelDirty + 72: FloorSteelHerringbone + 73: FloorSteelMini + 74: FloorSteelMono + 75: FloorSteelOffset + 76: FloorSteelPavement + 77: FloorSteelPavementVertical + 78: FloorTechMaint + 79: FloorTechMaint2 + 80: FloorTechMaint3 + 81: FloorWhite + 82: FloorWhiteDiagonal + 83: FloorWhiteDiagonalMini + 84: FloorWhiteHerringbone + 85: FloorWhiteMini + 86: FloorWhiteMono + 87: FloorWhiteOffset + 88: FloorWhitePavement + 89: FloorWhitePavementVertical + 90: FloorWhitePlastic + 91: FloorWood + 92: FloorWoodTile + 93: Lattice + 94: Plating +entities: +- uid: 0 + components: + - type: MetaData + - pos: 0.75,1.3125 + parent: invalid + type: Transform + - chunks: + 1,0: + ind: 1,0 + tiles: BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 1,1: + ind: 1,1 + tiles: BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 0,1: + ind: 0,1 + tiles: BgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 0,0: + ind: 0,0 + tiles: BgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAA== + type: MapGrid + - type: Broadphase + - angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + type: Physics + - fixtures: [] + type: Fixtures + - type: OccluderTree + - type: Shuttle + - nextUpdate: 56.3512981 + type: GridPathfinding + - gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + type: Gravity + - chunkCollection: {} + type: DecalGrid + - tiles: + 0,0: 0 + 0,1: 0 + 0,2: 0 + 0,3: 0 + 0,4: 0 + 0,5: 0 + 0,6: 0 + 0,7: 0 + 0,8: 0 + 16,0: 0 + 16,1: 0 + 16,2: 0 + 16,3: 0 + 16,4: 0 + 16,5: 0 + 16,6: 0 + 16,7: 0 + 16,8: 0 + 16,9: 0 + 16,10: 0 + 16,11: 0 + 16,12: 0 + 16,13: 0 + 16,14: 0 + 16,15: 0 + 16,16: 0 + 0,16: 0 + 1,16: 0 + 2,16: 0 + 3,16: 0 + 4,16: 0 + 5,16: 0 + 6,16: 0 + 7,16: 0 + 8,16: 0 + 9,16: 0 + 10,16: 0 + 11,16: 0 + 12,16: 0 + 13,16: 0 + 14,16: 0 + 15,16: 0 + 0,9: 0 + 0,10: 0 + 0,11: 0 + 0,12: 0 + 0,13: 0 + 0,14: 0 + 0,15: 0 + 1,0: 0 + 1,1: 0 + 1,2: 0 + 1,3: 0 + 1,4: 0 + 1,5: 0 + 1,6: 0 + 1,7: 0 + 1,8: 0 + 1,9: 0 + 1,10: 0 + 1,11: 0 + 1,12: 0 + 1,13: 0 + 1,14: 0 + 1,15: 0 + 2,0: 0 + 2,1: 0 + 2,2: 0 + 2,3: 0 + 2,4: 0 + 2,5: 0 + 2,6: 0 + 2,7: 0 + 2,8: 0 + 2,9: 0 + 2,10: 0 + 2,11: 0 + 2,12: 0 + 2,13: 0 + 2,14: 0 + 2,15: 0 + 3,0: 0 + 3,1: 0 + 3,2: 0 + 3,3: 0 + 3,4: 0 + 3,5: 0 + 3,6: 0 + 3,7: 0 + 3,8: 0 + 3,9: 0 + 3,10: 0 + 3,11: 0 + 3,12: 0 + 3,13: 0 + 3,14: 0 + 3,15: 0 + 4,0: 0 + 4,1: 0 + 4,2: 0 + 4,3: 0 + 4,4: 0 + 4,5: 0 + 4,6: 0 + 4,7: 0 + 4,8: 0 + 4,9: 0 + 4,10: 0 + 4,11: 0 + 4,12: 0 + 4,13: 0 + 4,14: 0 + 4,15: 0 + 5,0: 0 + 5,1: 0 + 5,2: 0 + 5,3: 0 + 5,4: 0 + 5,5: 0 + 5,6: 0 + 5,7: 0 + 5,8: 0 + 5,9: 0 + 5,10: 0 + 5,11: 0 + 5,12: 0 + 5,13: 0 + 5,14: 0 + 5,15: 0 + 6,0: 0 + 6,1: 0 + 6,2: 0 + 6,3: 0 + 6,4: 0 + 6,5: 0 + 6,6: 0 + 6,7: 0 + 6,8: 0 + 6,9: 0 + 6,10: 0 + 6,11: 0 + 6,12: 0 + 6,13: 0 + 6,14: 0 + 6,15: 0 + 7,0: 0 + 7,1: 0 + 7,2: 0 + 7,3: 0 + 7,4: 0 + 7,5: 0 + 7,6: 0 + 7,7: 0 + 7,8: 0 + 7,9: 0 + 7,10: 0 + 7,11: 0 + 7,12: 0 + 7,13: 0 + 7,14: 0 + 7,15: 0 + 8,0: 0 + 8,1: 0 + 8,2: 0 + 8,3: 0 + 8,4: 0 + 8,5: 0 + 8,6: 0 + 8,7: 0 + 8,8: 0 + 8,9: 0 + 8,10: 0 + 8,11: 0 + 8,12: 0 + 8,13: 0 + 8,14: 0 + 8,15: 0 + 9,0: 0 + 9,1: 0 + 9,2: 0 + 9,3: 0 + 9,4: 0 + 9,5: 0 + 9,6: 0 + 9,7: 0 + 9,8: 0 + 9,9: 0 + 9,10: 0 + 9,11: 0 + 9,12: 0 + 9,13: 0 + 9,14: 0 + 9,15: 0 + 10,0: 0 + 10,1: 0 + 10,2: 0 + 10,3: 0 + 10,4: 0 + 10,5: 0 + 10,6: 0 + 10,7: 0 + 10,8: 0 + 10,9: 0 + 10,10: 0 + 10,11: 0 + 10,12: 0 + 10,13: 0 + 10,14: 0 + 10,15: 0 + 11,0: 0 + 11,1: 0 + 11,2: 0 + 11,3: 0 + 11,4: 0 + 11,5: 0 + 11,6: 0 + 11,7: 0 + 11,8: 0 + 11,9: 0 + 11,10: 0 + 11,11: 0 + 11,12: 0 + 11,13: 0 + 11,14: 0 + 11,15: 0 + 12,0: 0 + 12,1: 0 + 12,2: 0 + 12,3: 0 + 12,4: 0 + 12,5: 0 + 12,6: 0 + 12,7: 0 + 12,8: 0 + 12,9: 0 + 12,10: 0 + 12,11: 0 + 12,12: 0 + 12,13: 0 + 12,14: 0 + 12,15: 0 + 13,0: 0 + 13,1: 0 + 13,2: 0 + 13,3: 0 + 13,4: 0 + 13,5: 0 + 13,6: 0 + 13,7: 0 + 13,8: 0 + 13,9: 0 + 13,10: 0 + 13,11: 0 + 13,12: 0 + 13,13: 0 + 13,14: 0 + 13,15: 0 + 14,0: 0 + 14,1: 0 + 14,2: 0 + 14,3: 0 + 14,4: 0 + 14,5: 0 + 14,6: 0 + 14,7: 0 + 14,8: 0 + 14,9: 0 + 14,10: 0 + 14,11: 0 + 14,12: 0 + 14,13: 0 + 14,14: 0 + 14,15: 0 + 15,0: 0 + 15,1: 0 + 15,2: 0 + 15,3: 0 + 15,4: 0 + 15,5: 0 + 15,6: 0 + 15,7: 0 + 15,8: 0 + 15,9: 0 + 15,10: 0 + 15,11: 0 + 15,12: 0 + 15,13: 0 + 15,14: 0 + 15,15: 0 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: GridAtmosphere + - type: GasTileOverlay +... diff --git a/Resources/Maps/Dungeon/Templates/17x5.yml b/Resources/Maps/Dungeon/Templates/17x5.yml new file mode 100644 index 0000000000..a6dfe03932 --- /dev/null +++ b/Resources/Maps/Dungeon/Templates/17x5.yml @@ -0,0 +1,442 @@ +meta: + format: 3 + name: DemoStation + author: Space-Wizards + postmapinit: false +tilemap: + 0: Space + 1: FloorArcadeBlue + 2: FloorArcadeBlue2 + 3: FloorArcadeRed + 4: FloorAsteroidCoarseSand0 + 5: FloorAsteroidCoarseSandDug + 6: FloorAsteroidIronsand1 + 7: FloorAsteroidIronsand2 + 8: FloorAsteroidIronsand3 + 9: FloorAsteroidIronsand4 + 10: FloorAsteroidSand + 11: FloorAsteroidTile + 12: FloorBar + 13: FloorBasalt + 14: FloorBasaslt + 15: FloorBlue + 16: FloorBlueCircuit + 17: FloorBoxing + 18: FloorCarpetClown + 19: FloorCarpetOffice + 20: FloorCave + 21: FloorCaveDrought + 22: FloorClown + 23: FloorDark + 24: FloorDarkDiagonal + 25: FloorDarkDiagonalMini + 26: FloorDarkHerringbone + 27: FloorDarkMini + 28: FloorDarkMono + 29: FloorDarkOffset + 30: FloorDarkPavement + 31: FloorDarkPavementVertical + 32: FloorDarkPlastic + 33: FloorDesert + 34: FloorDirt + 35: FloorEighties + 36: FloorElevatorShaft + 37: FloorFlesh + 38: FloorFreezer + 39: FloorGlass + 40: FloorGold + 41: FloorGrass + 42: FloorGrassDark + 43: FloorGrassJungle + 44: FloorGrassLight + 45: FloorGreenCircuit + 46: FloorGym + 47: FloorHydro + 48: FloorKitchen + 49: FloorLaundry + 50: FloorLino + 51: FloorLowDesert + 52: FloorMetalDiamond + 53: FloorMime + 54: FloorMono + 55: FloorPlanetGrass + 56: FloorPlastic + 57: FloorRGlass + 58: FloorReinforced + 59: FloorRockVault + 60: FloorShowroom + 61: FloorShuttleBlue + 62: FloorShuttleOrange + 63: FloorShuttlePurple + 64: FloorShuttleRed + 65: FloorShuttleWhite + 66: FloorSilver + 67: FloorSnow + 68: FloorSteel + 69: FloorSteelDiagonal + 70: FloorSteelDiagonalMini + 71: FloorSteelDirty + 72: FloorSteelHerringbone + 73: FloorSteelMini + 74: FloorSteelMono + 75: FloorSteelOffset + 76: FloorSteelPavement + 77: FloorSteelPavementVertical + 78: FloorTechMaint + 79: FloorTechMaint2 + 80: FloorTechMaint3 + 81: FloorWhite + 82: FloorWhiteDiagonal + 83: FloorWhiteDiagonalMini + 84: FloorWhiteHerringbone + 85: FloorWhiteMini + 86: FloorWhiteMono + 87: FloorWhiteOffset + 88: FloorWhitePavement + 89: FloorWhitePavementVertical + 90: FloorWhitePlastic + 91: FloorWood + 92: FloorWoodTile + 93: Lattice + 94: Plating +entities: +- uid: 0 + components: + - type: MetaData + - pos: 0.75,1.3125 + parent: invalid + type: Transform + - chunks: + 1,0: + ind: 1,0 + tiles: BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 0,0: + ind: 0,0 + tiles: BgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + type: MapGrid + - type: Broadphase + - angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + type: Physics + - fixtures: [] + type: Fixtures + - type: OccluderTree + - type: Shuttle + - nextUpdate: 56.3512981 + type: GridPathfinding + - gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + type: Gravity + - chunkCollection: {} + type: DecalGrid + - tiles: + 0,0: 0 + 0,1: 0 + 0,2: 0 + 0,3: 0 + 0,4: 0 + 0,5: 0 + 0,6: 0 + 0,7: 0 + 0,8: 0 + 16,0: 0 + 16,1: 0 + 16,2: 0 + 16,3: 0 + 16,4: 0 + 16,5: 0 + 16,6: 0 + 16,7: 0 + 16,8: 0 + 16,9: 0 + 16,10: 0 + 16,11: 0 + 16,12: 0 + 16,13: 0 + 16,14: 0 + 16,15: 0 + 16,16: 0 + 0,16: 0 + 1,16: 0 + 2,16: 0 + 3,16: 0 + 4,16: 0 + 5,16: 0 + 6,16: 0 + 7,16: 0 + 8,16: 0 + 9,16: 0 + 10,16: 0 + 11,16: 0 + 12,16: 0 + 13,16: 0 + 14,16: 0 + 15,16: 0 + 0,9: 0 + 0,10: 0 + 0,11: 0 + 0,12: 0 + 0,13: 0 + 0,14: 0 + 0,15: 0 + 1,0: 0 + 1,1: 0 + 1,2: 0 + 1,3: 0 + 1,4: 0 + 1,5: 0 + 1,6: 0 + 1,7: 0 + 1,8: 0 + 1,9: 0 + 1,10: 0 + 1,11: 0 + 1,12: 0 + 1,13: 0 + 1,14: 0 + 1,15: 0 + 2,0: 0 + 2,1: 0 + 2,2: 0 + 2,3: 0 + 2,4: 0 + 2,5: 0 + 2,6: 0 + 2,7: 0 + 2,8: 0 + 2,9: 0 + 2,10: 0 + 2,11: 0 + 2,12: 0 + 2,13: 0 + 2,14: 0 + 2,15: 0 + 3,0: 0 + 3,1: 0 + 3,2: 0 + 3,3: 0 + 3,4: 0 + 3,5: 0 + 3,6: 0 + 3,7: 0 + 3,8: 0 + 3,9: 0 + 3,10: 0 + 3,11: 0 + 3,12: 0 + 3,13: 0 + 3,14: 0 + 3,15: 0 + 4,0: 0 + 4,1: 0 + 4,2: 0 + 4,3: 0 + 4,4: 0 + 4,5: 0 + 4,6: 0 + 4,7: 0 + 4,8: 0 + 4,9: 0 + 4,10: 0 + 4,11: 0 + 4,12: 0 + 4,13: 0 + 4,14: 0 + 4,15: 0 + 5,0: 0 + 5,1: 0 + 5,2: 0 + 5,3: 0 + 5,4: 0 + 5,5: 0 + 5,6: 0 + 5,7: 0 + 5,8: 0 + 5,9: 0 + 5,10: 0 + 5,11: 0 + 5,12: 0 + 5,13: 0 + 5,14: 0 + 5,15: 0 + 6,0: 0 + 6,1: 0 + 6,2: 0 + 6,3: 0 + 6,4: 0 + 6,5: 0 + 6,6: 0 + 6,7: 0 + 6,8: 0 + 6,9: 0 + 6,10: 0 + 6,11: 0 + 6,12: 0 + 6,13: 0 + 6,14: 0 + 6,15: 0 + 7,0: 0 + 7,1: 0 + 7,2: 0 + 7,3: 0 + 7,4: 0 + 7,5: 0 + 7,6: 0 + 7,7: 0 + 7,8: 0 + 7,9: 0 + 7,10: 0 + 7,11: 0 + 7,12: 0 + 7,13: 0 + 7,14: 0 + 7,15: 0 + 8,0: 0 + 8,1: 0 + 8,2: 0 + 8,3: 0 + 8,4: 0 + 8,5: 0 + 8,6: 0 + 8,7: 0 + 8,8: 0 + 8,9: 0 + 8,10: 0 + 8,11: 0 + 8,12: 0 + 8,13: 0 + 8,14: 0 + 8,15: 0 + 9,0: 0 + 9,1: 0 + 9,2: 0 + 9,3: 0 + 9,4: 0 + 9,5: 0 + 9,6: 0 + 9,7: 0 + 9,8: 0 + 9,9: 0 + 9,10: 0 + 9,11: 0 + 9,12: 0 + 9,13: 0 + 9,14: 0 + 9,15: 0 + 10,0: 0 + 10,1: 0 + 10,2: 0 + 10,3: 0 + 10,4: 0 + 10,5: 0 + 10,6: 0 + 10,7: 0 + 10,8: 0 + 10,9: 0 + 10,10: 0 + 10,11: 0 + 10,12: 0 + 10,13: 0 + 10,14: 0 + 10,15: 0 + 11,0: 0 + 11,1: 0 + 11,2: 0 + 11,3: 0 + 11,4: 0 + 11,5: 0 + 11,6: 0 + 11,7: 0 + 11,8: 0 + 11,9: 0 + 11,10: 0 + 11,11: 0 + 11,12: 0 + 11,13: 0 + 11,14: 0 + 11,15: 0 + 12,0: 0 + 12,1: 0 + 12,2: 0 + 12,3: 0 + 12,4: 0 + 12,5: 0 + 12,6: 0 + 12,7: 0 + 12,8: 0 + 12,9: 0 + 12,10: 0 + 12,11: 0 + 12,12: 0 + 12,13: 0 + 12,14: 0 + 12,15: 0 + 13,0: 0 + 13,1: 0 + 13,2: 0 + 13,3: 0 + 13,4: 0 + 13,5: 0 + 13,6: 0 + 13,7: 0 + 13,8: 0 + 13,9: 0 + 13,10: 0 + 13,11: 0 + 13,12: 0 + 13,13: 0 + 13,14: 0 + 13,15: 0 + 14,0: 0 + 14,1: 0 + 14,2: 0 + 14,3: 0 + 14,4: 0 + 14,5: 0 + 14,6: 0 + 14,7: 0 + 14,8: 0 + 14,9: 0 + 14,10: 0 + 14,11: 0 + 14,12: 0 + 14,13: 0 + 14,14: 0 + 14,15: 0 + 15,0: 0 + 15,1: 0 + 15,2: 0 + 15,3: 0 + 15,4: 0 + 15,5: 0 + 15,6: 0 + 15,7: 0 + 15,8: 0 + 15,9: 0 + 15,10: 0 + 15,11: 0 + 15,12: 0 + 15,13: 0 + 15,14: 0 + 15,15: 0 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: GridAtmosphere + - type: GasTileOverlay +... diff --git a/Resources/Maps/Dungeon/Templates/3x5.yml b/Resources/Maps/Dungeon/Templates/3x5.yml new file mode 100644 index 0000000000..9c776d8a27 --- /dev/null +++ b/Resources/Maps/Dungeon/Templates/3x5.yml @@ -0,0 +1,131 @@ +meta: + format: 3 + name: DemoStation + author: Space-Wizards + postmapinit: false +tilemap: + 0: Space + 1: FloorArcadeBlue + 2: FloorArcadeBlue2 + 3: FloorArcadeRed + 4: FloorAsteroidCoarseSand0 + 5: FloorAsteroidCoarseSandDug + 6: FloorAsteroidIronsand1 + 7: FloorAsteroidIronsand2 + 8: FloorAsteroidIronsand3 + 9: FloorAsteroidIronsand4 + 10: FloorAsteroidSand + 11: FloorAsteroidTile + 12: FloorBar + 13: FloorBasalt + 14: FloorBasaslt + 15: FloorBlue + 16: FloorBlueCircuit + 17: FloorBoxing + 18: FloorCarpetClown + 19: FloorCarpetOffice + 20: FloorCave + 21: FloorCaveDrought + 22: FloorClown + 23: FloorDark + 24: FloorDarkDiagonal + 25: FloorDarkDiagonalMini + 26: FloorDarkHerringbone + 27: FloorDarkMini + 28: FloorDarkMono + 29: FloorDarkOffset + 30: FloorDarkPavement + 31: FloorDarkPavementVertical + 32: FloorDarkPlastic + 33: FloorDesert + 34: FloorDirt + 35: FloorEighties + 36: FloorElevatorShaft + 37: FloorFlesh + 38: FloorFreezer + 39: FloorGlass + 40: FloorGold + 41: FloorGrass + 42: FloorGrassDark + 43: FloorGrassJungle + 44: FloorGrassLight + 45: FloorGreenCircuit + 46: FloorGym + 47: FloorHydro + 48: FloorKitchen + 49: FloorLaundry + 50: FloorLino + 51: FloorLowDesert + 52: FloorMetalDiamond + 53: FloorMime + 54: FloorMono + 55: FloorPlanetGrass + 56: FloorPlastic + 57: FloorRGlass + 58: FloorReinforced + 59: FloorRockVault + 60: FloorShowroom + 61: FloorShuttleBlue + 62: FloorShuttleOrange + 63: FloorShuttlePurple + 64: FloorShuttleRed + 65: FloorShuttleWhite + 66: FloorSilver + 67: FloorSnow + 68: FloorSteel + 69: FloorSteelDiagonal + 70: FloorSteelDiagonalMini + 71: FloorSteelDirty + 72: FloorSteelHerringbone + 73: FloorSteelMini + 74: FloorSteelMono + 75: FloorSteelOffset + 76: FloorSteelPavement + 77: FloorSteelPavementVertical + 78: FloorTechMaint + 79: FloorTechMaint2 + 80: FloorTechMaint3 + 81: FloorWhite + 82: FloorWhiteDiagonal + 83: FloorWhiteDiagonalMini + 84: FloorWhiteHerringbone + 85: FloorWhiteMini + 86: FloorWhiteMono + 87: FloorWhiteOffset + 88: FloorWhitePavement + 89: FloorWhitePavementVertical + 90: FloorWhitePlastic + 91: FloorWood + 92: FloorWoodTile + 93: Lattice + 94: Plating +entities: +- uid: 0 + components: + - type: MetaData + - pos: 2.453125,1.890625 + parent: invalid + type: Transform + - chunks: + -1,-1: + ind: -1,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAA== + type: MapGrid + - type: Broadphase + - angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + type: Physics + - fixtures: [] + type: Fixtures + - type: OccluderTree + - type: Shuttle + - nextUpdate: 0.45 + type: GridPathfinding + - gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + type: Gravity + - chunkCollection: {} + type: DecalGrid +... diff --git a/Resources/Maps/Dungeon/Templates/3x7.yml b/Resources/Maps/Dungeon/Templates/3x7.yml new file mode 100644 index 0000000000..9c776d8a27 --- /dev/null +++ b/Resources/Maps/Dungeon/Templates/3x7.yml @@ -0,0 +1,131 @@ +meta: + format: 3 + name: DemoStation + author: Space-Wizards + postmapinit: false +tilemap: + 0: Space + 1: FloorArcadeBlue + 2: FloorArcadeBlue2 + 3: FloorArcadeRed + 4: FloorAsteroidCoarseSand0 + 5: FloorAsteroidCoarseSandDug + 6: FloorAsteroidIronsand1 + 7: FloorAsteroidIronsand2 + 8: FloorAsteroidIronsand3 + 9: FloorAsteroidIronsand4 + 10: FloorAsteroidSand + 11: FloorAsteroidTile + 12: FloorBar + 13: FloorBasalt + 14: FloorBasaslt + 15: FloorBlue + 16: FloorBlueCircuit + 17: FloorBoxing + 18: FloorCarpetClown + 19: FloorCarpetOffice + 20: FloorCave + 21: FloorCaveDrought + 22: FloorClown + 23: FloorDark + 24: FloorDarkDiagonal + 25: FloorDarkDiagonalMini + 26: FloorDarkHerringbone + 27: FloorDarkMini + 28: FloorDarkMono + 29: FloorDarkOffset + 30: FloorDarkPavement + 31: FloorDarkPavementVertical + 32: FloorDarkPlastic + 33: FloorDesert + 34: FloorDirt + 35: FloorEighties + 36: FloorElevatorShaft + 37: FloorFlesh + 38: FloorFreezer + 39: FloorGlass + 40: FloorGold + 41: FloorGrass + 42: FloorGrassDark + 43: FloorGrassJungle + 44: FloorGrassLight + 45: FloorGreenCircuit + 46: FloorGym + 47: FloorHydro + 48: FloorKitchen + 49: FloorLaundry + 50: FloorLino + 51: FloorLowDesert + 52: FloorMetalDiamond + 53: FloorMime + 54: FloorMono + 55: FloorPlanetGrass + 56: FloorPlastic + 57: FloorRGlass + 58: FloorReinforced + 59: FloorRockVault + 60: FloorShowroom + 61: FloorShuttleBlue + 62: FloorShuttleOrange + 63: FloorShuttlePurple + 64: FloorShuttleRed + 65: FloorShuttleWhite + 66: FloorSilver + 67: FloorSnow + 68: FloorSteel + 69: FloorSteelDiagonal + 70: FloorSteelDiagonalMini + 71: FloorSteelDirty + 72: FloorSteelHerringbone + 73: FloorSteelMini + 74: FloorSteelMono + 75: FloorSteelOffset + 76: FloorSteelPavement + 77: FloorSteelPavementVertical + 78: FloorTechMaint + 79: FloorTechMaint2 + 80: FloorTechMaint3 + 81: FloorWhite + 82: FloorWhiteDiagonal + 83: FloorWhiteDiagonalMini + 84: FloorWhiteHerringbone + 85: FloorWhiteMini + 86: FloorWhiteMono + 87: FloorWhiteOffset + 88: FloorWhitePavement + 89: FloorWhitePavementVertical + 90: FloorWhitePlastic + 91: FloorWood + 92: FloorWoodTile + 93: Lattice + 94: Plating +entities: +- uid: 0 + components: + - type: MetaData + - pos: 2.453125,1.890625 + parent: invalid + type: Transform + - chunks: + -1,-1: + ind: -1,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAA== + type: MapGrid + - type: Broadphase + - angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + type: Physics + - fixtures: [] + type: Fixtures + - type: OccluderTree + - type: Shuttle + - nextUpdate: 0.45 + type: GridPathfinding + - gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + type: Gravity + - chunkCollection: {} + type: DecalGrid +... diff --git a/Resources/Maps/Dungeon/Templates/5x11.yml b/Resources/Maps/Dungeon/Templates/5x11.yml new file mode 100644 index 0000000000..9303c13771 --- /dev/null +++ b/Resources/Maps/Dungeon/Templates/5x11.yml @@ -0,0 +1,168 @@ +meta: + format: 3 + name: DemoStation + author: Space-Wizards + postmapinit: false +tilemap: + 0: Space + 1: FloorArcadeBlue + 2: FloorArcadeBlue2 + 3: FloorArcadeRed + 4: FloorAsteroidCoarseSand0 + 5: FloorAsteroidCoarseSandDug + 6: FloorAsteroidIronsand1 + 7: FloorAsteroidIronsand2 + 8: FloorAsteroidIronsand3 + 9: FloorAsteroidIronsand4 + 10: FloorAsteroidSand + 11: FloorAsteroidTile + 12: FloorBar + 13: FloorBasalt + 14: FloorBasaslt + 15: FloorBlue + 16: FloorBlueCircuit + 17: FloorBoxing + 18: FloorCarpetClown + 19: FloorCarpetOffice + 20: FloorCave + 21: FloorCaveDrought + 22: FloorClown + 23: FloorDark + 24: FloorDarkDiagonal + 25: FloorDarkDiagonalMini + 26: FloorDarkHerringbone + 27: FloorDarkMini + 28: FloorDarkMono + 29: FloorDarkOffset + 30: FloorDarkPavement + 31: FloorDarkPavementVertical + 32: FloorDarkPlastic + 33: FloorDesert + 34: FloorDirt + 35: FloorEighties + 36: FloorElevatorShaft + 37: FloorFlesh + 38: FloorFreezer + 39: FloorGlass + 40: FloorGold + 41: FloorGrass + 42: FloorGrassDark + 43: FloorGrassJungle + 44: FloorGrassLight + 45: FloorGreenCircuit + 46: FloorGym + 47: FloorHydro + 48: FloorKitchen + 49: FloorLaundry + 50: FloorLino + 51: FloorLowDesert + 52: FloorMetalDiamond + 53: FloorMime + 54: FloorMono + 55: FloorPlanetGrass + 56: FloorPlastic + 57: FloorRGlass + 58: FloorReinforced + 59: FloorRockVault + 60: FloorShowroom + 61: FloorShuttleBlue + 62: FloorShuttleOrange + 63: FloorShuttlePurple + 64: FloorShuttleRed + 65: FloorShuttleWhite + 66: FloorSilver + 67: FloorSnow + 68: FloorSteel + 69: FloorSteelDiagonal + 70: FloorSteelDiagonalMini + 71: FloorSteelDirty + 72: FloorSteelHerringbone + 73: FloorSteelMini + 74: FloorSteelMono + 75: FloorSteelOffset + 76: FloorSteelPavement + 77: FloorSteelPavementVertical + 78: FloorTechMaint + 79: FloorTechMaint2 + 80: FloorTechMaint3 + 81: FloorWhite + 82: FloorWhiteDiagonal + 83: FloorWhiteDiagonalMini + 84: FloorWhiteHerringbone + 85: FloorWhiteMini + 86: FloorWhiteMono + 87: FloorWhiteOffset + 88: FloorWhitePavement + 89: FloorWhitePavementVertical + 90: FloorWhitePlastic + 91: FloorWood + 92: FloorWoodTile + 93: Lattice + 94: Plating +entities: +- uid: 0 + components: + - type: MetaData + - pos: 0.453125,0.890625 + parent: invalid + type: Transform + - chunks: + -1,-1: + ind: -1,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAA== + 0,0: + ind: 0,0 + tiles: BgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 0,-1: + ind: 0,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + -1,0: + ind: -1,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + type: MapGrid + - type: Broadphase + - angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + type: Physics + - fixtures: [] + type: Fixtures + - type: OccluderTree + - type: Shuttle + - nextUpdate: 27.154826 + type: GridPathfinding + - gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + type: Gravity + - chunkCollection: {} + type: DecalGrid + - tiles: + -1,-1: 0 + 5,3: 0 + 6,0: 0 + 6,1: 0 + 6,2: 0 + 6,3: 0 + 7,0: 0 + 6,-1: 0 + 7,-1: 0 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: GridAtmosphere + - type: GasTileOverlay +... diff --git a/Resources/Maps/Dungeon/Templates/5x17.yml b/Resources/Maps/Dungeon/Templates/5x17.yml new file mode 100644 index 0000000000..4e21cb1ac2 --- /dev/null +++ b/Resources/Maps/Dungeon/Templates/5x17.yml @@ -0,0 +1,442 @@ +meta: + format: 3 + name: DemoStation + author: Space-Wizards + postmapinit: false +tilemap: + 0: Space + 1: FloorArcadeBlue + 2: FloorArcadeBlue2 + 3: FloorArcadeRed + 4: FloorAsteroidCoarseSand0 + 5: FloorAsteroidCoarseSandDug + 6: FloorAsteroidIronsand1 + 7: FloorAsteroidIronsand2 + 8: FloorAsteroidIronsand3 + 9: FloorAsteroidIronsand4 + 10: FloorAsteroidSand + 11: FloorAsteroidTile + 12: FloorBar + 13: FloorBasalt + 14: FloorBasaslt + 15: FloorBlue + 16: FloorBlueCircuit + 17: FloorBoxing + 18: FloorCarpetClown + 19: FloorCarpetOffice + 20: FloorCave + 21: FloorCaveDrought + 22: FloorClown + 23: FloorDark + 24: FloorDarkDiagonal + 25: FloorDarkDiagonalMini + 26: FloorDarkHerringbone + 27: FloorDarkMini + 28: FloorDarkMono + 29: FloorDarkOffset + 30: FloorDarkPavement + 31: FloorDarkPavementVertical + 32: FloorDarkPlastic + 33: FloorDesert + 34: FloorDirt + 35: FloorEighties + 36: FloorElevatorShaft + 37: FloorFlesh + 38: FloorFreezer + 39: FloorGlass + 40: FloorGold + 41: FloorGrass + 42: FloorGrassDark + 43: FloorGrassJungle + 44: FloorGrassLight + 45: FloorGreenCircuit + 46: FloorGym + 47: FloorHydro + 48: FloorKitchen + 49: FloorLaundry + 50: FloorLino + 51: FloorLowDesert + 52: FloorMetalDiamond + 53: FloorMime + 54: FloorMono + 55: FloorPlanetGrass + 56: FloorPlastic + 57: FloorRGlass + 58: FloorReinforced + 59: FloorRockVault + 60: FloorShowroom + 61: FloorShuttleBlue + 62: FloorShuttleOrange + 63: FloorShuttlePurple + 64: FloorShuttleRed + 65: FloorShuttleWhite + 66: FloorSilver + 67: FloorSnow + 68: FloorSteel + 69: FloorSteelDiagonal + 70: FloorSteelDiagonalMini + 71: FloorSteelDirty + 72: FloorSteelHerringbone + 73: FloorSteelMini + 74: FloorSteelMono + 75: FloorSteelOffset + 76: FloorSteelPavement + 77: FloorSteelPavementVertical + 78: FloorTechMaint + 79: FloorTechMaint2 + 80: FloorTechMaint3 + 81: FloorWhite + 82: FloorWhiteDiagonal + 83: FloorWhiteDiagonalMini + 84: FloorWhiteHerringbone + 85: FloorWhiteMini + 86: FloorWhiteMono + 87: FloorWhiteOffset + 88: FloorWhitePavement + 89: FloorWhitePavementVertical + 90: FloorWhitePlastic + 91: FloorWood + 92: FloorWoodTile + 93: Lattice + 94: Plating +entities: +- uid: 0 + components: + - type: MetaData + - pos: 0.75,1.3125 + parent: invalid + type: Transform + - chunks: + 0,1: + ind: 0,1 + tiles: BgAAAAYAAAAGAAAABgAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 0,0: + ind: 0,0 + tiles: BgAAAAYAAAAGAAAABgAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAGAAAABgAAAAYAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAABgAAAAYAAAAGAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAYAAAAGAAAABgAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAGAAAABgAAAAYAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAABgAAAAYAAAAGAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAYAAAAGAAAABgAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAGAAAABgAAAAYAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAABgAAAAYAAAAGAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAYAAAAGAAAABgAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAGAAAABgAAAAYAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAABgAAAAYAAAAGAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAYAAAAGAAAABgAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAGAAAABgAAAAYAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAABgAAAAYAAAAGAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAYAAAAGAAAABgAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + type: MapGrid + - type: Broadphase + - angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + type: Physics + - fixtures: [] + type: Fixtures + - type: OccluderTree + - type: Shuttle + - nextUpdate: 78.7387785 + type: GridPathfinding + - gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + type: Gravity + - chunkCollection: {} + type: DecalGrid + - tiles: + 0,0: 0 + 0,1: 0 + 0,2: 0 + 0,3: 0 + 0,4: 0 + 0,5: 0 + 0,6: 0 + 0,7: 0 + 0,8: 0 + 16,0: 0 + 16,1: 0 + 16,2: 0 + 16,3: 0 + 16,4: 0 + 16,5: 0 + 16,6: 0 + 16,7: 0 + 16,8: 0 + 16,9: 0 + 16,10: 0 + 16,11: 0 + 16,12: 0 + 16,13: 0 + 16,14: 0 + 16,15: 0 + 16,16: 0 + 0,16: 0 + 1,16: 0 + 2,16: 0 + 3,16: 0 + 4,16: 0 + 5,16: 0 + 6,16: 0 + 7,16: 0 + 8,16: 0 + 9,16: 0 + 10,16: 0 + 11,16: 0 + 12,16: 0 + 13,16: 0 + 14,16: 0 + 15,16: 0 + 0,9: 0 + 0,10: 0 + 0,11: 0 + 0,12: 0 + 0,13: 0 + 0,14: 0 + 0,15: 0 + 1,0: 0 + 1,1: 0 + 1,2: 0 + 1,3: 0 + 1,4: 0 + 1,5: 0 + 1,6: 0 + 1,7: 0 + 1,8: 0 + 1,9: 0 + 1,10: 0 + 1,11: 0 + 1,12: 0 + 1,13: 0 + 1,14: 0 + 1,15: 0 + 2,0: 0 + 2,1: 0 + 2,2: 0 + 2,3: 0 + 2,4: 0 + 2,5: 0 + 2,6: 0 + 2,7: 0 + 2,8: 0 + 2,9: 0 + 2,10: 0 + 2,11: 0 + 2,12: 0 + 2,13: 0 + 2,14: 0 + 2,15: 0 + 3,0: 0 + 3,1: 0 + 3,2: 0 + 3,3: 0 + 3,4: 0 + 3,5: 0 + 3,6: 0 + 3,7: 0 + 3,8: 0 + 3,9: 0 + 3,10: 0 + 3,11: 0 + 3,12: 0 + 3,13: 0 + 3,14: 0 + 3,15: 0 + 4,0: 0 + 4,1: 0 + 4,2: 0 + 4,3: 0 + 4,4: 0 + 4,5: 0 + 4,6: 0 + 4,7: 0 + 4,8: 0 + 4,9: 0 + 4,10: 0 + 4,11: 0 + 4,12: 0 + 4,13: 0 + 4,14: 0 + 4,15: 0 + 5,0: 0 + 5,1: 0 + 5,2: 0 + 5,3: 0 + 5,4: 0 + 5,5: 0 + 5,6: 0 + 5,7: 0 + 5,8: 0 + 5,9: 0 + 5,10: 0 + 5,11: 0 + 5,12: 0 + 5,13: 0 + 5,14: 0 + 5,15: 0 + 6,0: 0 + 6,1: 0 + 6,2: 0 + 6,3: 0 + 6,4: 0 + 6,5: 0 + 6,6: 0 + 6,7: 0 + 6,8: 0 + 6,9: 0 + 6,10: 0 + 6,11: 0 + 6,12: 0 + 6,13: 0 + 6,14: 0 + 6,15: 0 + 7,0: 0 + 7,1: 0 + 7,2: 0 + 7,3: 0 + 7,4: 0 + 7,5: 0 + 7,6: 0 + 7,7: 0 + 7,8: 0 + 7,9: 0 + 7,10: 0 + 7,11: 0 + 7,12: 0 + 7,13: 0 + 7,14: 0 + 7,15: 0 + 8,0: 0 + 8,1: 0 + 8,2: 0 + 8,3: 0 + 8,4: 0 + 8,5: 0 + 8,6: 0 + 8,7: 0 + 8,8: 0 + 8,9: 0 + 8,10: 0 + 8,11: 0 + 8,12: 0 + 8,13: 0 + 8,14: 0 + 8,15: 0 + 9,0: 0 + 9,1: 0 + 9,2: 0 + 9,3: 0 + 9,4: 0 + 9,5: 0 + 9,6: 0 + 9,7: 0 + 9,8: 0 + 9,9: 0 + 9,10: 0 + 9,11: 0 + 9,12: 0 + 9,13: 0 + 9,14: 0 + 9,15: 0 + 10,0: 0 + 10,1: 0 + 10,2: 0 + 10,3: 0 + 10,4: 0 + 10,5: 0 + 10,6: 0 + 10,7: 0 + 10,8: 0 + 10,9: 0 + 10,10: 0 + 10,11: 0 + 10,12: 0 + 10,13: 0 + 10,14: 0 + 10,15: 0 + 11,0: 0 + 11,1: 0 + 11,2: 0 + 11,3: 0 + 11,4: 0 + 11,5: 0 + 11,6: 0 + 11,7: 0 + 11,8: 0 + 11,9: 0 + 11,10: 0 + 11,11: 0 + 11,12: 0 + 11,13: 0 + 11,14: 0 + 11,15: 0 + 12,0: 0 + 12,1: 0 + 12,2: 0 + 12,3: 0 + 12,4: 0 + 12,5: 0 + 12,6: 0 + 12,7: 0 + 12,8: 0 + 12,9: 0 + 12,10: 0 + 12,11: 0 + 12,12: 0 + 12,13: 0 + 12,14: 0 + 12,15: 0 + 13,0: 0 + 13,1: 0 + 13,2: 0 + 13,3: 0 + 13,4: 0 + 13,5: 0 + 13,6: 0 + 13,7: 0 + 13,8: 0 + 13,9: 0 + 13,10: 0 + 13,11: 0 + 13,12: 0 + 13,13: 0 + 13,14: 0 + 13,15: 0 + 14,0: 0 + 14,1: 0 + 14,2: 0 + 14,3: 0 + 14,4: 0 + 14,5: 0 + 14,6: 0 + 14,7: 0 + 14,8: 0 + 14,9: 0 + 14,10: 0 + 14,11: 0 + 14,12: 0 + 14,13: 0 + 14,14: 0 + 14,15: 0 + 15,0: 0 + 15,1: 0 + 15,2: 0 + 15,3: 0 + 15,4: 0 + 15,5: 0 + 15,6: 0 + 15,7: 0 + 15,8: 0 + 15,9: 0 + 15,10: 0 + 15,11: 0 + 15,12: 0 + 15,13: 0 + 15,14: 0 + 15,15: 0 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: GridAtmosphere + - type: GasTileOverlay +... diff --git a/Resources/Maps/Dungeon/Templates/5x5.yml b/Resources/Maps/Dungeon/Templates/5x5.yml new file mode 100644 index 0000000000..bbcd71def2 --- /dev/null +++ b/Resources/Maps/Dungeon/Templates/5x5.yml @@ -0,0 +1,439 @@ +meta: + format: 3 + name: DemoStation + author: Space-Wizards + postmapinit: false +tilemap: + 0: Space + 1: FloorArcadeBlue + 2: FloorArcadeBlue2 + 3: FloorArcadeRed + 4: FloorAsteroidCoarseSand0 + 5: FloorAsteroidCoarseSandDug + 6: FloorAsteroidIronsand1 + 7: FloorAsteroidIronsand2 + 8: FloorAsteroidIronsand3 + 9: FloorAsteroidIronsand4 + 10: FloorAsteroidSand + 11: FloorAsteroidTile + 12: FloorBar + 13: FloorBasalt + 14: FloorBasaslt + 15: FloorBlue + 16: FloorBlueCircuit + 17: FloorBoxing + 18: FloorCarpetClown + 19: FloorCarpetOffice + 20: FloorCave + 21: FloorCaveDrought + 22: FloorClown + 23: FloorDark + 24: FloorDarkDiagonal + 25: FloorDarkDiagonalMini + 26: FloorDarkHerringbone + 27: FloorDarkMini + 28: FloorDarkMono + 29: FloorDarkOffset + 30: FloorDarkPavement + 31: FloorDarkPavementVertical + 32: FloorDarkPlastic + 33: FloorDesert + 34: FloorDirt + 35: FloorEighties + 36: FloorElevatorShaft + 37: FloorFlesh + 38: FloorFreezer + 39: FloorGlass + 40: FloorGold + 41: FloorGrass + 42: FloorGrassDark + 43: FloorGrassJungle + 44: FloorGrassLight + 45: FloorGreenCircuit + 46: FloorGym + 47: FloorHydro + 48: FloorKitchen + 49: FloorLaundry + 50: FloorLino + 51: FloorLowDesert + 52: FloorMetalDiamond + 53: FloorMime + 54: FloorMono + 55: FloorPlanetGrass + 56: FloorPlastic + 57: FloorRGlass + 58: FloorReinforced + 59: FloorRockVault + 60: FloorShowroom + 61: FloorShuttleBlue + 62: FloorShuttleOrange + 63: FloorShuttlePurple + 64: FloorShuttleRed + 65: FloorShuttleWhite + 66: FloorSilver + 67: FloorSnow + 68: FloorSteel + 69: FloorSteelDiagonal + 70: FloorSteelDiagonalMini + 71: FloorSteelDirty + 72: FloorSteelHerringbone + 73: FloorSteelMini + 74: FloorSteelMono + 75: FloorSteelOffset + 76: FloorSteelPavement + 77: FloorSteelPavementVertical + 78: FloorTechMaint + 79: FloorTechMaint2 + 80: FloorTechMaint3 + 81: FloorWhite + 82: FloorWhiteDiagonal + 83: FloorWhiteDiagonalMini + 84: FloorWhiteHerringbone + 85: FloorWhiteMini + 86: FloorWhiteMono + 87: FloorWhiteOffset + 88: FloorWhitePavement + 89: FloorWhitePavementVertical + 90: FloorWhitePlastic + 91: FloorWood + 92: FloorWoodTile + 93: Lattice + 94: Plating +entities: +- uid: 0 + components: + - type: MetaData + - pos: 0.75,1.3125 + parent: invalid + type: Transform + - chunks: + 0,0: + ind: 0,0 + tiles: BgAAAAYAAAAGAAAABgAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAGAAAABgAAAAYAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAABgAAAAYAAAAGAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAYAAAAGAAAABgAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAGAAAABgAAAAYAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + type: MapGrid + - type: Broadphase + - angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + type: Physics + - fixtures: [] + type: Fixtures + - type: OccluderTree + - type: Shuttle + - nextUpdate: 207.9113983 + type: GridPathfinding + - gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + type: Gravity + - chunkCollection: {} + type: DecalGrid + - tiles: + 0,0: 0 + 0,1: 0 + 0,2: 0 + 0,3: 0 + 0,4: 0 + 0,5: 0 + 0,6: 0 + 0,7: 0 + 0,8: 0 + 16,0: 0 + 16,1: 0 + 16,2: 0 + 16,3: 0 + 16,4: 0 + 16,5: 0 + 16,6: 0 + 16,7: 0 + 16,8: 0 + 16,9: 0 + 16,10: 0 + 16,11: 0 + 16,12: 0 + 16,13: 0 + 16,14: 0 + 16,15: 0 + 16,16: 0 + 0,16: 0 + 1,16: 0 + 2,16: 0 + 3,16: 0 + 4,16: 0 + 5,16: 0 + 6,16: 0 + 7,16: 0 + 8,16: 0 + 9,16: 0 + 10,16: 0 + 11,16: 0 + 12,16: 0 + 13,16: 0 + 14,16: 0 + 15,16: 0 + 0,9: 0 + 0,10: 0 + 0,11: 0 + 0,12: 0 + 0,13: 0 + 0,14: 0 + 0,15: 0 + 1,0: 0 + 1,1: 0 + 1,2: 0 + 1,3: 0 + 1,4: 0 + 1,5: 0 + 1,6: 0 + 1,7: 0 + 1,8: 0 + 1,9: 0 + 1,10: 0 + 1,11: 0 + 1,12: 0 + 1,13: 0 + 1,14: 0 + 1,15: 0 + 2,0: 0 + 2,1: 0 + 2,2: 0 + 2,3: 0 + 2,4: 0 + 2,5: 0 + 2,6: 0 + 2,7: 0 + 2,8: 0 + 2,9: 0 + 2,10: 0 + 2,11: 0 + 2,12: 0 + 2,13: 0 + 2,14: 0 + 2,15: 0 + 3,0: 0 + 3,1: 0 + 3,2: 0 + 3,3: 0 + 3,4: 0 + 3,5: 0 + 3,6: 0 + 3,7: 0 + 3,8: 0 + 3,9: 0 + 3,10: 0 + 3,11: 0 + 3,12: 0 + 3,13: 0 + 3,14: 0 + 3,15: 0 + 4,0: 0 + 4,1: 0 + 4,2: 0 + 4,3: 0 + 4,4: 0 + 4,5: 0 + 4,6: 0 + 4,7: 0 + 4,8: 0 + 4,9: 0 + 4,10: 0 + 4,11: 0 + 4,12: 0 + 4,13: 0 + 4,14: 0 + 4,15: 0 + 5,0: 0 + 5,1: 0 + 5,2: 0 + 5,3: 0 + 5,4: 0 + 5,5: 0 + 5,6: 0 + 5,7: 0 + 5,8: 0 + 5,9: 0 + 5,10: 0 + 5,11: 0 + 5,12: 0 + 5,13: 0 + 5,14: 0 + 5,15: 0 + 6,0: 0 + 6,1: 0 + 6,2: 0 + 6,3: 0 + 6,4: 0 + 6,5: 0 + 6,6: 0 + 6,7: 0 + 6,8: 0 + 6,9: 0 + 6,10: 0 + 6,11: 0 + 6,12: 0 + 6,13: 0 + 6,14: 0 + 6,15: 0 + 7,0: 0 + 7,1: 0 + 7,2: 0 + 7,3: 0 + 7,4: 0 + 7,5: 0 + 7,6: 0 + 7,7: 0 + 7,8: 0 + 7,9: 0 + 7,10: 0 + 7,11: 0 + 7,12: 0 + 7,13: 0 + 7,14: 0 + 7,15: 0 + 8,0: 0 + 8,1: 0 + 8,2: 0 + 8,3: 0 + 8,4: 0 + 8,5: 0 + 8,6: 0 + 8,7: 0 + 8,8: 0 + 8,9: 0 + 8,10: 0 + 8,11: 0 + 8,12: 0 + 8,13: 0 + 8,14: 0 + 8,15: 0 + 9,0: 0 + 9,1: 0 + 9,2: 0 + 9,3: 0 + 9,4: 0 + 9,5: 0 + 9,6: 0 + 9,7: 0 + 9,8: 0 + 9,9: 0 + 9,10: 0 + 9,11: 0 + 9,12: 0 + 9,13: 0 + 9,14: 0 + 9,15: 0 + 10,0: 0 + 10,1: 0 + 10,2: 0 + 10,3: 0 + 10,4: 0 + 10,5: 0 + 10,6: 0 + 10,7: 0 + 10,8: 0 + 10,9: 0 + 10,10: 0 + 10,11: 0 + 10,12: 0 + 10,13: 0 + 10,14: 0 + 10,15: 0 + 11,0: 0 + 11,1: 0 + 11,2: 0 + 11,3: 0 + 11,4: 0 + 11,5: 0 + 11,6: 0 + 11,7: 0 + 11,8: 0 + 11,9: 0 + 11,10: 0 + 11,11: 0 + 11,12: 0 + 11,13: 0 + 11,14: 0 + 11,15: 0 + 12,0: 0 + 12,1: 0 + 12,2: 0 + 12,3: 0 + 12,4: 0 + 12,5: 0 + 12,6: 0 + 12,7: 0 + 12,8: 0 + 12,9: 0 + 12,10: 0 + 12,11: 0 + 12,12: 0 + 12,13: 0 + 12,14: 0 + 12,15: 0 + 13,0: 0 + 13,1: 0 + 13,2: 0 + 13,3: 0 + 13,4: 0 + 13,5: 0 + 13,6: 0 + 13,7: 0 + 13,8: 0 + 13,9: 0 + 13,10: 0 + 13,11: 0 + 13,12: 0 + 13,13: 0 + 13,14: 0 + 13,15: 0 + 14,0: 0 + 14,1: 0 + 14,2: 0 + 14,3: 0 + 14,4: 0 + 14,5: 0 + 14,6: 0 + 14,7: 0 + 14,8: 0 + 14,9: 0 + 14,10: 0 + 14,11: 0 + 14,12: 0 + 14,13: 0 + 14,14: 0 + 14,15: 0 + 15,0: 0 + 15,1: 0 + 15,2: 0 + 15,3: 0 + 15,4: 0 + 15,5: 0 + 15,6: 0 + 15,7: 0 + 15,8: 0 + 15,9: 0 + 15,10: 0 + 15,11: 0 + 15,12: 0 + 15,13: 0 + 15,14: 0 + 15,15: 0 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: GridAtmosphere + - type: GasTileOverlay +... diff --git a/Resources/Maps/Dungeon/Templates/LargeArea2.yml b/Resources/Maps/Dungeon/Templates/LargeArea2.yml new file mode 100644 index 0000000000..961e78afdc --- /dev/null +++ b/Resources/Maps/Dungeon/Templates/LargeArea2.yml @@ -0,0 +1,168 @@ +meta: + format: 3 + name: DemoStation + author: Space-Wizards + postmapinit: false +tilemap: + 0: Space + 1: FloorArcadeBlue + 2: FloorArcadeBlue2 + 3: FloorArcadeRed + 4: FloorAsteroidCoarseSand0 + 5: FloorAsteroidCoarseSandDug + 6: FloorAsteroidIronsand1 + 7: FloorAsteroidIronsand2 + 8: FloorAsteroidIronsand3 + 9: FloorAsteroidIronsand4 + 10: FloorAsteroidSand + 11: FloorAsteroidTile + 12: FloorBar + 13: FloorBasalt + 14: FloorBasaslt + 15: FloorBlue + 16: FloorBlueCircuit + 17: FloorBoxing + 18: FloorCarpetClown + 19: FloorCarpetOffice + 20: FloorCave + 21: FloorCaveDrought + 22: FloorClown + 23: FloorDark + 24: FloorDarkDiagonal + 25: FloorDarkDiagonalMini + 26: FloorDarkHerringbone + 27: FloorDarkMini + 28: FloorDarkMono + 29: FloorDarkOffset + 30: FloorDarkPavement + 31: FloorDarkPavementVertical + 32: FloorDarkPlastic + 33: FloorDesert + 34: FloorDirt + 35: FloorEighties + 36: FloorElevatorShaft + 37: FloorFlesh + 38: FloorFreezer + 39: FloorGlass + 40: FloorGold + 41: FloorGrass + 42: FloorGrassDark + 43: FloorGrassJungle + 44: FloorGrassLight + 45: FloorGreenCircuit + 46: FloorGym + 47: FloorHydro + 48: FloorKitchen + 49: FloorLaundry + 50: FloorLino + 51: FloorLowDesert + 52: FloorMetalDiamond + 53: FloorMime + 54: FloorMono + 55: FloorPlanetGrass + 56: FloorPlastic + 57: FloorRGlass + 58: FloorReinforced + 59: FloorRockVault + 60: FloorShowroom + 61: FloorShuttleBlue + 62: FloorShuttleOrange + 63: FloorShuttlePurple + 64: FloorShuttleRed + 65: FloorShuttleWhite + 66: FloorSilver + 67: FloorSnow + 68: FloorSteel + 69: FloorSteelDiagonal + 70: FloorSteelDiagonalMini + 71: FloorSteelDirty + 72: FloorSteelHerringbone + 73: FloorSteelMini + 74: FloorSteelMono + 75: FloorSteelOffset + 76: FloorSteelPavement + 77: FloorSteelPavementVertical + 78: FloorTechMaint + 79: FloorTechMaint2 + 80: FloorTechMaint3 + 81: FloorWhite + 82: FloorWhiteDiagonal + 83: FloorWhiteDiagonalMini + 84: FloorWhiteHerringbone + 85: FloorWhiteMini + 86: FloorWhiteMono + 87: FloorWhiteOffset + 88: FloorWhitePavement + 89: FloorWhitePavementVertical + 90: FloorWhitePlastic + 91: FloorWood + 92: FloorWoodTile + 93: Lattice + 94: Plating +entities: +- uid: 0 + components: + - type: MetaData + - pos: 0.75,1.3125 + parent: invalid + type: Transform + - chunks: + 1,0: + ind: 1,0 + tiles: BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 1,1: + ind: 1,1 + tiles: BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 0,1: + ind: 0,1 + tiles: BgAAAAYAAAAGAAAABgAAAAYAAAAGAAAARAAAAEQAAABEAAAARAAAAEQAAAAGAAAABgAAAAYAAAAGAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 0,0: + ind: 0,0 + tiles: BgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAEQAAABEAAAARAAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAABEAAAARAAAAEQAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAARAAAAEQAAABEAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAEQAAABEAAAARAAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAABEAAAARAAAAEQAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAARAAAAEQAAABEAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAEQAAABEAAAARAAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAABEAAAARAAAAEQAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAARAAAAEQAAABEAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAEQAAABEAAAARAAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAABEAAAARAAAAEQAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAARAAAAEQAAABEAAAARAAAAEQAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAEQAAABEAAAARAAAAEQAAABEAAAABgAAAEQAAABEAAAARAAAAEQAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAABEAAAARAAAAEQAAABEAAAARAAAAAYAAABEAAAARAAAAEQAAABEAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAARAAAAEQAAABEAAAARAAAAEQAAAAGAAAARAAAAEQAAABEAAAARAAAAA== + type: MapGrid + - type: Broadphase + - angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + type: Physics + - fixtures: [] + type: Fixtures + - type: OccluderTree + - type: Shuttle + - nextUpdate: 56.3512981 + type: GridPathfinding + - gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + type: Gravity + - chunkCollection: {} + type: DecalGrid + - tiles: + 0,0: 0 + 0,1: 0 + 0,2: 0 + 0,3: 0 + 0,4: 0 + 0,5: 0 + 0,6: 0 + 0,7: 0 + 0,8: 0 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: GridAtmosphere + - type: GasTileOverlay +... diff --git a/Resources/Maps/Dungeon/Templates/LargeArea3.yml b/Resources/Maps/Dungeon/Templates/LargeArea3.yml new file mode 100644 index 0000000000..a8b8a419a4 --- /dev/null +++ b/Resources/Maps/Dungeon/Templates/LargeArea3.yml @@ -0,0 +1,168 @@ +meta: + format: 3 + name: DemoStation + author: Space-Wizards + postmapinit: false +tilemap: + 0: Space + 1: FloorArcadeBlue + 2: FloorArcadeBlue2 + 3: FloorArcadeRed + 4: FloorAsteroidCoarseSand0 + 5: FloorAsteroidCoarseSandDug + 6: FloorAsteroidIronsand1 + 7: FloorAsteroidIronsand2 + 8: FloorAsteroidIronsand3 + 9: FloorAsteroidIronsand4 + 10: FloorAsteroidSand + 11: FloorAsteroidTile + 12: FloorBar + 13: FloorBasalt + 14: FloorBasaslt + 15: FloorBlue + 16: FloorBlueCircuit + 17: FloorBoxing + 18: FloorCarpetClown + 19: FloorCarpetOffice + 20: FloorCave + 21: FloorCaveDrought + 22: FloorClown + 23: FloorDark + 24: FloorDarkDiagonal + 25: FloorDarkDiagonalMini + 26: FloorDarkHerringbone + 27: FloorDarkMini + 28: FloorDarkMono + 29: FloorDarkOffset + 30: FloorDarkPavement + 31: FloorDarkPavementVertical + 32: FloorDarkPlastic + 33: FloorDesert + 34: FloorDirt + 35: FloorEighties + 36: FloorElevatorShaft + 37: FloorFlesh + 38: FloorFreezer + 39: FloorGlass + 40: FloorGold + 41: FloorGrass + 42: FloorGrassDark + 43: FloorGrassJungle + 44: FloorGrassLight + 45: FloorGreenCircuit + 46: FloorGym + 47: FloorHydro + 48: FloorKitchen + 49: FloorLaundry + 50: FloorLino + 51: FloorLowDesert + 52: FloorMetalDiamond + 53: FloorMime + 54: FloorMono + 55: FloorPlanetGrass + 56: FloorPlastic + 57: FloorRGlass + 58: FloorReinforced + 59: FloorRockVault + 60: FloorShowroom + 61: FloorShuttleBlue + 62: FloorShuttleOrange + 63: FloorShuttlePurple + 64: FloorShuttleRed + 65: FloorShuttleWhite + 66: FloorSilver + 67: FloorSnow + 68: FloorSteel + 69: FloorSteelDiagonal + 70: FloorSteelDiagonalMini + 71: FloorSteelDirty + 72: FloorSteelHerringbone + 73: FloorSteelMini + 74: FloorSteelMono + 75: FloorSteelOffset + 76: FloorSteelPavement + 77: FloorSteelPavementVertical + 78: FloorTechMaint + 79: FloorTechMaint2 + 80: FloorTechMaint3 + 81: FloorWhite + 82: FloorWhiteDiagonal + 83: FloorWhiteDiagonalMini + 84: FloorWhiteHerringbone + 85: FloorWhiteMini + 86: FloorWhiteMono + 87: FloorWhiteOffset + 88: FloorWhitePavement + 89: FloorWhitePavementVertical + 90: FloorWhitePlastic + 91: FloorWood + 92: FloorWoodTile + 93: Lattice + 94: Plating +entities: +- uid: 0 + components: + - type: MetaData + - pos: 0.75,1.3125 + parent: invalid + type: Transform + - chunks: + 1,0: + ind: 1,0 + tiles: BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 1,1: + ind: 1,1 + tiles: BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 0,1: + ind: 0,1 + tiles: BgAAAAYAAAAGAAAABgAAAAYAAAAGAAAARAAAAEQAAABEAAAARAAAAEQAAAAGAAAABgAAAAYAAAAGAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 0,0: + ind: 0,0 + tiles: BgAAAAYAAAAGAAAABgAAAAYAAAAGAAAARAAAAEQAAABEAAAARAAAAEQAAAAGAAAABgAAAAYAAAAGAAAABgAAAEQAAABEAAAARAAAAEQAAABEAAAABgAAAEQAAABEAAAARAAAAEQAAABEAAAABgAAAAYAAAAGAAAABgAAAAYAAABEAAAARAAAAEQAAABEAAAARAAAAAYAAABEAAAARAAAAEQAAABEAAAARAAAAAYAAAAGAAAABgAAAAYAAAAGAAAARAAAAEQAAABEAAAARAAAAEQAAAAGAAAARAAAAEQAAABEAAAARAAAAEQAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAEQAAABEAAAARAAAAEQAAABEAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAARAAAAEQAAABEAAAABgAAAAYAAABEAAAARAAAAEQAAABEAAAARAAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAEQAAABEAAAARAAAAAYAAAAGAAAARAAAAEQAAABEAAAARAAAAEQAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAABEAAAARAAAAEQAAAAGAAAABgAAAEQAAABEAAAARAAAAEQAAABEAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAARAAAAEQAAABEAAAABgAAAAYAAABEAAAARAAAAEQAAABEAAAARAAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAEQAAABEAAAARAAAAAYAAAAGAAAARAAAAEQAAABEAAAARAAAAEQAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAABEAAAARAAAAEQAAAAGAAAABgAAAEQAAABEAAAARAAAAEQAAABEAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAARAAAAEQAAABEAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAARAAAAEQAAABEAAAARAAAAEQAAAAGAAAABgAAAAYAAAAGAAAABgAAAEQAAABEAAAARAAAAEQAAABEAAAABgAAAEQAAABEAAAARAAAAEQAAABEAAAABgAAAAYAAAAGAAAABgAAAAYAAABEAAAARAAAAEQAAABEAAAARAAAAAYAAABEAAAARAAAAEQAAABEAAAARAAAAAYAAAAGAAAABgAAAAYAAAAGAAAARAAAAEQAAABEAAAARAAAAEQAAAAGAAAARAAAAEQAAABEAAAARAAAAEQAAAAGAAAABgAAAAYAAAAGAAAABgAAAA== + type: MapGrid + - type: Broadphase + - angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + type: Physics + - fixtures: [] + type: Fixtures + - type: OccluderTree + - type: Shuttle + - nextUpdate: 56.3512981 + type: GridPathfinding + - gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + type: Gravity + - chunkCollection: {} + type: DecalGrid + - tiles: + 0,0: 0 + 0,1: 0 + 0,2: 0 + 0,3: 0 + 0,4: 0 + 0,5: 0 + 0,6: 0 + 0,7: 0 + 0,8: 0 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: GridAtmosphere + - type: GasTileOverlay +... diff --git a/Resources/Maps/Dungeon/Templates/LargeArea4.yml b/Resources/Maps/Dungeon/Templates/LargeArea4.yml new file mode 100644 index 0000000000..a5db8c45d2 --- /dev/null +++ b/Resources/Maps/Dungeon/Templates/LargeArea4.yml @@ -0,0 +1,168 @@ +meta: + format: 3 + name: DemoStation + author: Space-Wizards + postmapinit: false +tilemap: + 0: Space + 1: FloorArcadeBlue + 2: FloorArcadeBlue2 + 3: FloorArcadeRed + 4: FloorAsteroidCoarseSand0 + 5: FloorAsteroidCoarseSandDug + 6: FloorAsteroidIronsand1 + 7: FloorAsteroidIronsand2 + 8: FloorAsteroidIronsand3 + 9: FloorAsteroidIronsand4 + 10: FloorAsteroidSand + 11: FloorAsteroidTile + 12: FloorBar + 13: FloorBasalt + 14: FloorBasaslt + 15: FloorBlue + 16: FloorBlueCircuit + 17: FloorBoxing + 18: FloorCarpetClown + 19: FloorCarpetOffice + 20: FloorCave + 21: FloorCaveDrought + 22: FloorClown + 23: FloorDark + 24: FloorDarkDiagonal + 25: FloorDarkDiagonalMini + 26: FloorDarkHerringbone + 27: FloorDarkMini + 28: FloorDarkMono + 29: FloorDarkOffset + 30: FloorDarkPavement + 31: FloorDarkPavementVertical + 32: FloorDarkPlastic + 33: FloorDesert + 34: FloorDirt + 35: FloorEighties + 36: FloorElevatorShaft + 37: FloorFlesh + 38: FloorFreezer + 39: FloorGlass + 40: FloorGold + 41: FloorGrass + 42: FloorGrassDark + 43: FloorGrassJungle + 44: FloorGrassLight + 45: FloorGreenCircuit + 46: FloorGym + 47: FloorHydro + 48: FloorKitchen + 49: FloorLaundry + 50: FloorLino + 51: FloorLowDesert + 52: FloorMetalDiamond + 53: FloorMime + 54: FloorMono + 55: FloorPlanetGrass + 56: FloorPlastic + 57: FloorRGlass + 58: FloorReinforced + 59: FloorRockVault + 60: FloorShowroom + 61: FloorShuttleBlue + 62: FloorShuttleOrange + 63: FloorShuttlePurple + 64: FloorShuttleRed + 65: FloorShuttleWhite + 66: FloorSilver + 67: FloorSnow + 68: FloorSteel + 69: FloorSteelDiagonal + 70: FloorSteelDiagonalMini + 71: FloorSteelDirty + 72: FloorSteelHerringbone + 73: FloorSteelMini + 74: FloorSteelMono + 75: FloorSteelOffset + 76: FloorSteelPavement + 77: FloorSteelPavementVertical + 78: FloorTechMaint + 79: FloorTechMaint2 + 80: FloorTechMaint3 + 81: FloorWhite + 82: FloorWhiteDiagonal + 83: FloorWhiteDiagonalMini + 84: FloorWhiteHerringbone + 85: FloorWhiteMini + 86: FloorWhiteMono + 87: FloorWhiteOffset + 88: FloorWhitePavement + 89: FloorWhitePavementVertical + 90: FloorWhitePlastic + 91: FloorWood + 92: FloorWoodTile + 93: Lattice + 94: Plating +entities: +- uid: 0 + components: + - type: MetaData + - pos: 0.75,1.3125 + parent: invalid + type: Transform + - chunks: + 1,0: + ind: 1,0 + tiles: BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 1,1: + ind: 1,1 + tiles: BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 0,1: + ind: 0,1 + tiles: BgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 0,0: + ind: 0,0 + tiles: BgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAABEAAAARAAAAEQAAABEAAAARAAAAAYAAABEAAAARAAAAEQAAABEAAAARAAAAAYAAAAGAAAABgAAAAYAAAAGAAAARAAAAEQAAABEAAAARAAAAEQAAAAGAAAARAAAAEQAAABEAAAARAAAAEQAAAAGAAAABgAAAAYAAAAGAAAABgAAAEQAAABEAAAARAAAAEQAAABEAAAABgAAAEQAAABEAAAARAAAAEQAAABEAAAABgAAAAYAAAAGAAAABgAAAAYAAABEAAAARAAAAEQAAABEAAAARAAAAAYAAABEAAAARAAAAEQAAABEAAAARAAAAAYAAAAGAAAABgAAAAYAAAAGAAAARAAAAEQAAABEAAAARAAAAEQAAAAGAAAARAAAAEQAAABEAAAARAAAAEQAAAAGAAAABgAAAAYAAAAGAAAABgAAAA== + type: MapGrid + - type: Broadphase + - angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + type: Physics + - fixtures: [] + type: Fixtures + - type: OccluderTree + - type: Shuttle + - nextUpdate: 56.3512981 + type: GridPathfinding + - gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + type: Gravity + - chunkCollection: {} + type: DecalGrid + - tiles: + 0,0: 0 + 0,1: 0 + 0,2: 0 + 0,3: 0 + 0,4: 0 + 0,5: 0 + 0,6: 0 + 0,7: 0 + 0,8: 0 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: GridAtmosphere + - type: GasTileOverlay +... diff --git a/Resources/Maps/Dungeon/Templates/MediumArea2.yml b/Resources/Maps/Dungeon/Templates/MediumArea2.yml new file mode 100644 index 0000000000..6755d7f8f6 --- /dev/null +++ b/Resources/Maps/Dungeon/Templates/MediumArea2.yml @@ -0,0 +1,442 @@ +meta: + format: 3 + name: DemoStation + author: Space-Wizards + postmapinit: false +tilemap: + 0: Space + 1: FloorArcadeBlue + 2: FloorArcadeBlue2 + 3: FloorArcadeRed + 4: FloorAsteroidCoarseSand0 + 5: FloorAsteroidCoarseSandDug + 6: FloorAsteroidIronsand1 + 7: FloorAsteroidIronsand2 + 8: FloorAsteroidIronsand3 + 9: FloorAsteroidIronsand4 + 10: FloorAsteroidSand + 11: FloorAsteroidTile + 12: FloorBar + 13: FloorBasalt + 14: FloorBasaslt + 15: FloorBlue + 16: FloorBlueCircuit + 17: FloorBoxing + 18: FloorCarpetClown + 19: FloorCarpetOffice + 20: FloorCave + 21: FloorCaveDrought + 22: FloorClown + 23: FloorDark + 24: FloorDarkDiagonal + 25: FloorDarkDiagonalMini + 26: FloorDarkHerringbone + 27: FloorDarkMini + 28: FloorDarkMono + 29: FloorDarkOffset + 30: FloorDarkPavement + 31: FloorDarkPavementVertical + 32: FloorDarkPlastic + 33: FloorDesert + 34: FloorDirt + 35: FloorEighties + 36: FloorElevatorShaft + 37: FloorFlesh + 38: FloorFreezer + 39: FloorGlass + 40: FloorGold + 41: FloorGrass + 42: FloorGrassDark + 43: FloorGrassJungle + 44: FloorGrassLight + 45: FloorGreenCircuit + 46: FloorGym + 47: FloorHydro + 48: FloorKitchen + 49: FloorLaundry + 50: FloorLino + 51: FloorLowDesert + 52: FloorMetalDiamond + 53: FloorMime + 54: FloorMono + 55: FloorPlanetGrass + 56: FloorPlastic + 57: FloorRGlass + 58: FloorReinforced + 59: FloorRockVault + 60: FloorShowroom + 61: FloorShuttleBlue + 62: FloorShuttleOrange + 63: FloorShuttlePurple + 64: FloorShuttleRed + 65: FloorShuttleWhite + 66: FloorSilver + 67: FloorSnow + 68: FloorSteel + 69: FloorSteelDiagonal + 70: FloorSteelDiagonalMini + 71: FloorSteelDirty + 72: FloorSteelHerringbone + 73: FloorSteelMini + 74: FloorSteelMono + 75: FloorSteelOffset + 76: FloorSteelPavement + 77: FloorSteelPavementVertical + 78: FloorTechMaint + 79: FloorTechMaint2 + 80: FloorTechMaint3 + 81: FloorWhite + 82: FloorWhiteDiagonal + 83: FloorWhiteDiagonalMini + 84: FloorWhiteHerringbone + 85: FloorWhiteMini + 86: FloorWhiteMono + 87: FloorWhiteOffset + 88: FloorWhitePavement + 89: FloorWhitePavementVertical + 90: FloorWhitePlastic + 91: FloorWood + 92: FloorWoodTile + 93: Lattice + 94: Plating +entities: +- uid: 0 + components: + - type: MetaData + - pos: 0.75,1.3125 + parent: invalid + type: Transform + - chunks: + 0,1: + ind: 0,1 + tiles: RAAAAEQAAABEAAAARAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 0,0: + ind: 0,0 + tiles: RAAAAEQAAABEAAAARAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAABEAAAARAAAAEQAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAARAAAAEQAAABEAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAEQAAABEAAAARAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAABEAAAARAAAAEQAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAABgAAAAYAAAAGAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAEQAAABEAAAARAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAABEAAAARAAAAEQAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAARAAAAEQAAABEAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAEQAAABEAAAARAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAABEAAAARAAAAEQAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAABgAAAAYAAAAGAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAEQAAABEAAAARAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAABEAAAARAAAAEQAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAARAAAAEQAAABEAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAEQAAABEAAAARAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + type: MapGrid + - type: Broadphase + - angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + type: Physics + - fixtures: [] + type: Fixtures + - type: OccluderTree + - type: Shuttle + - nextUpdate: 78.7387785 + type: GridPathfinding + - gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + type: Gravity + - chunkCollection: {} + type: DecalGrid + - tiles: + 0,0: 0 + 0,1: 0 + 0,2: 0 + 0,3: 0 + 0,4: 0 + 0,5: 0 + 0,6: 0 + 0,7: 0 + 0,8: 0 + 16,0: 0 + 16,1: 0 + 16,2: 0 + 16,3: 0 + 16,4: 0 + 16,5: 0 + 16,6: 0 + 16,7: 0 + 16,8: 0 + 16,9: 0 + 16,10: 0 + 16,11: 0 + 16,12: 0 + 16,13: 0 + 16,14: 0 + 16,15: 0 + 16,16: 0 + 0,16: 0 + 1,16: 0 + 2,16: 0 + 3,16: 0 + 4,16: 0 + 5,16: 0 + 6,16: 0 + 7,16: 0 + 8,16: 0 + 9,16: 0 + 10,16: 0 + 11,16: 0 + 12,16: 0 + 13,16: 0 + 14,16: 0 + 15,16: 0 + 0,9: 0 + 0,10: 0 + 0,11: 0 + 0,12: 0 + 0,13: 0 + 0,14: 0 + 0,15: 0 + 1,0: 0 + 1,1: 0 + 1,2: 0 + 1,3: 0 + 1,4: 0 + 1,5: 0 + 1,6: 0 + 1,7: 0 + 1,8: 0 + 1,9: 0 + 1,10: 0 + 1,11: 0 + 1,12: 0 + 1,13: 0 + 1,14: 0 + 1,15: 0 + 2,0: 0 + 2,1: 0 + 2,2: 0 + 2,3: 0 + 2,4: 0 + 2,5: 0 + 2,6: 0 + 2,7: 0 + 2,8: 0 + 2,9: 0 + 2,10: 0 + 2,11: 0 + 2,12: 0 + 2,13: 0 + 2,14: 0 + 2,15: 0 + 3,0: 0 + 3,1: 0 + 3,2: 0 + 3,3: 0 + 3,4: 0 + 3,5: 0 + 3,6: 0 + 3,7: 0 + 3,8: 0 + 3,9: 0 + 3,10: 0 + 3,11: 0 + 3,12: 0 + 3,13: 0 + 3,14: 0 + 3,15: 0 + 4,0: 0 + 4,1: 0 + 4,2: 0 + 4,3: 0 + 4,4: 0 + 4,5: 0 + 4,6: 0 + 4,7: 0 + 4,8: 0 + 4,9: 0 + 4,10: 0 + 4,11: 0 + 4,12: 0 + 4,13: 0 + 4,14: 0 + 4,15: 0 + 5,0: 0 + 5,1: 0 + 5,2: 0 + 5,3: 0 + 5,4: 0 + 5,5: 0 + 5,6: 0 + 5,7: 0 + 5,8: 0 + 5,9: 0 + 5,10: 0 + 5,11: 0 + 5,12: 0 + 5,13: 0 + 5,14: 0 + 5,15: 0 + 6,0: 0 + 6,1: 0 + 6,2: 0 + 6,3: 0 + 6,4: 0 + 6,5: 0 + 6,6: 0 + 6,7: 0 + 6,8: 0 + 6,9: 0 + 6,10: 0 + 6,11: 0 + 6,12: 0 + 6,13: 0 + 6,14: 0 + 6,15: 0 + 7,0: 0 + 7,1: 0 + 7,2: 0 + 7,3: 0 + 7,4: 0 + 7,5: 0 + 7,6: 0 + 7,7: 0 + 7,8: 0 + 7,9: 0 + 7,10: 0 + 7,11: 0 + 7,12: 0 + 7,13: 0 + 7,14: 0 + 7,15: 0 + 8,0: 0 + 8,1: 0 + 8,2: 0 + 8,3: 0 + 8,4: 0 + 8,5: 0 + 8,6: 0 + 8,7: 0 + 8,8: 0 + 8,9: 0 + 8,10: 0 + 8,11: 0 + 8,12: 0 + 8,13: 0 + 8,14: 0 + 8,15: 0 + 9,0: 0 + 9,1: 0 + 9,2: 0 + 9,3: 0 + 9,4: 0 + 9,5: 0 + 9,6: 0 + 9,7: 0 + 9,8: 0 + 9,9: 0 + 9,10: 0 + 9,11: 0 + 9,12: 0 + 9,13: 0 + 9,14: 0 + 9,15: 0 + 10,0: 0 + 10,1: 0 + 10,2: 0 + 10,3: 0 + 10,4: 0 + 10,5: 0 + 10,6: 0 + 10,7: 0 + 10,8: 0 + 10,9: 0 + 10,10: 0 + 10,11: 0 + 10,12: 0 + 10,13: 0 + 10,14: 0 + 10,15: 0 + 11,0: 0 + 11,1: 0 + 11,2: 0 + 11,3: 0 + 11,4: 0 + 11,5: 0 + 11,6: 0 + 11,7: 0 + 11,8: 0 + 11,9: 0 + 11,10: 0 + 11,11: 0 + 11,12: 0 + 11,13: 0 + 11,14: 0 + 11,15: 0 + 12,0: 0 + 12,1: 0 + 12,2: 0 + 12,3: 0 + 12,4: 0 + 12,5: 0 + 12,6: 0 + 12,7: 0 + 12,8: 0 + 12,9: 0 + 12,10: 0 + 12,11: 0 + 12,12: 0 + 12,13: 0 + 12,14: 0 + 12,15: 0 + 13,0: 0 + 13,1: 0 + 13,2: 0 + 13,3: 0 + 13,4: 0 + 13,5: 0 + 13,6: 0 + 13,7: 0 + 13,8: 0 + 13,9: 0 + 13,10: 0 + 13,11: 0 + 13,12: 0 + 13,13: 0 + 13,14: 0 + 13,15: 0 + 14,0: 0 + 14,1: 0 + 14,2: 0 + 14,3: 0 + 14,4: 0 + 14,5: 0 + 14,6: 0 + 14,7: 0 + 14,8: 0 + 14,9: 0 + 14,10: 0 + 14,11: 0 + 14,12: 0 + 14,13: 0 + 14,14: 0 + 14,15: 0 + 15,0: 0 + 15,1: 0 + 15,2: 0 + 15,3: 0 + 15,4: 0 + 15,5: 0 + 15,6: 0 + 15,7: 0 + 15,8: 0 + 15,9: 0 + 15,10: 0 + 15,11: 0 + 15,12: 0 + 15,13: 0 + 15,14: 0 + 15,15: 0 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: GridAtmosphere + - type: GasTileOverlay +... diff --git a/Resources/Maps/Dungeon/Templates/MediumArea3.yml b/Resources/Maps/Dungeon/Templates/MediumArea3.yml new file mode 100644 index 0000000000..06c2349e89 --- /dev/null +++ b/Resources/Maps/Dungeon/Templates/MediumArea3.yml @@ -0,0 +1,442 @@ +meta: + format: 3 + name: DemoStation + author: Space-Wizards + postmapinit: false +tilemap: + 0: Space + 1: FloorArcadeBlue + 2: FloorArcadeBlue2 + 3: FloorArcadeRed + 4: FloorAsteroidCoarseSand0 + 5: FloorAsteroidCoarseSandDug + 6: FloorAsteroidIronsand1 + 7: FloorAsteroidIronsand2 + 8: FloorAsteroidIronsand3 + 9: FloorAsteroidIronsand4 + 10: FloorAsteroidSand + 11: FloorAsteroidTile + 12: FloorBar + 13: FloorBasalt + 14: FloorBasaslt + 15: FloorBlue + 16: FloorBlueCircuit + 17: FloorBoxing + 18: FloorCarpetClown + 19: FloorCarpetOffice + 20: FloorCave + 21: FloorCaveDrought + 22: FloorClown + 23: FloorDark + 24: FloorDarkDiagonal + 25: FloorDarkDiagonalMini + 26: FloorDarkHerringbone + 27: FloorDarkMini + 28: FloorDarkMono + 29: FloorDarkOffset + 30: FloorDarkPavement + 31: FloorDarkPavementVertical + 32: FloorDarkPlastic + 33: FloorDesert + 34: FloorDirt + 35: FloorEighties + 36: FloorElevatorShaft + 37: FloorFlesh + 38: FloorFreezer + 39: FloorGlass + 40: FloorGold + 41: FloorGrass + 42: FloorGrassDark + 43: FloorGrassJungle + 44: FloorGrassLight + 45: FloorGreenCircuit + 46: FloorGym + 47: FloorHydro + 48: FloorKitchen + 49: FloorLaundry + 50: FloorLino + 51: FloorLowDesert + 52: FloorMetalDiamond + 53: FloorMime + 54: FloorMono + 55: FloorPlanetGrass + 56: FloorPlastic + 57: FloorRGlass + 58: FloorReinforced + 59: FloorRockVault + 60: FloorShowroom + 61: FloorShuttleBlue + 62: FloorShuttleOrange + 63: FloorShuttlePurple + 64: FloorShuttleRed + 65: FloorShuttleWhite + 66: FloorSilver + 67: FloorSnow + 68: FloorSteel + 69: FloorSteelDiagonal + 70: FloorSteelDiagonalMini + 71: FloorSteelDirty + 72: FloorSteelHerringbone + 73: FloorSteelMini + 74: FloorSteelMono + 75: FloorSteelOffset + 76: FloorSteelPavement + 77: FloorSteelPavementVertical + 78: FloorTechMaint + 79: FloorTechMaint2 + 80: FloorTechMaint3 + 81: FloorWhite + 82: FloorWhiteDiagonal + 83: FloorWhiteDiagonalMini + 84: FloorWhiteHerringbone + 85: FloorWhiteMini + 86: FloorWhiteMono + 87: FloorWhiteOffset + 88: FloorWhitePavement + 89: FloorWhitePavementVertical + 90: FloorWhitePlastic + 91: FloorWood + 92: FloorWoodTile + 93: Lattice + 94: Plating +entities: +- uid: 0 + components: + - type: MetaData + - pos: 0.75,1.3125 + parent: invalid + type: Transform + - chunks: + 0,1: + ind: 0,1 + tiles: BgAAAEQAAABEAAAARAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 0,0: + ind: 0,0 + tiles: RAAAAEQAAABEAAAARAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAABEAAAARAAAAEQAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAARAAAAEQAAABEAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAEQAAABEAAAARAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAABEAAAARAAAAEQAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAABgAAAAYAAAAGAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAEQAAABEAAAARAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAABEAAAARAAAAEQAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAARAAAAEQAAABEAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAEQAAABEAAAARAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAABEAAAARAAAAEQAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAABgAAAAYAAAAGAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAEQAAABEAAAARAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAABEAAAARAAAAEQAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAARAAAAEQAAABEAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAEQAAABEAAAARAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + type: MapGrid + - type: Broadphase + - angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + type: Physics + - fixtures: [] + type: Fixtures + - type: OccluderTree + - type: Shuttle + - nextUpdate: 78.7387785 + type: GridPathfinding + - gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + type: Gravity + - chunkCollection: {} + type: DecalGrid + - tiles: + 0,0: 0 + 0,1: 0 + 0,2: 0 + 0,3: 0 + 0,4: 0 + 0,5: 0 + 0,6: 0 + 0,7: 0 + 0,8: 0 + 16,0: 0 + 16,1: 0 + 16,2: 0 + 16,3: 0 + 16,4: 0 + 16,5: 0 + 16,6: 0 + 16,7: 0 + 16,8: 0 + 16,9: 0 + 16,10: 0 + 16,11: 0 + 16,12: 0 + 16,13: 0 + 16,14: 0 + 16,15: 0 + 16,16: 0 + 0,16: 0 + 1,16: 0 + 2,16: 0 + 3,16: 0 + 4,16: 0 + 5,16: 0 + 6,16: 0 + 7,16: 0 + 8,16: 0 + 9,16: 0 + 10,16: 0 + 11,16: 0 + 12,16: 0 + 13,16: 0 + 14,16: 0 + 15,16: 0 + 0,9: 0 + 0,10: 0 + 0,11: 0 + 0,12: 0 + 0,13: 0 + 0,14: 0 + 0,15: 0 + 1,0: 0 + 1,1: 0 + 1,2: 0 + 1,3: 0 + 1,4: 0 + 1,5: 0 + 1,6: 0 + 1,7: 0 + 1,8: 0 + 1,9: 0 + 1,10: 0 + 1,11: 0 + 1,12: 0 + 1,13: 0 + 1,14: 0 + 1,15: 0 + 2,0: 0 + 2,1: 0 + 2,2: 0 + 2,3: 0 + 2,4: 0 + 2,5: 0 + 2,6: 0 + 2,7: 0 + 2,8: 0 + 2,9: 0 + 2,10: 0 + 2,11: 0 + 2,12: 0 + 2,13: 0 + 2,14: 0 + 2,15: 0 + 3,0: 0 + 3,1: 0 + 3,2: 0 + 3,3: 0 + 3,4: 0 + 3,5: 0 + 3,6: 0 + 3,7: 0 + 3,8: 0 + 3,9: 0 + 3,10: 0 + 3,11: 0 + 3,12: 0 + 3,13: 0 + 3,14: 0 + 3,15: 0 + 4,0: 0 + 4,1: 0 + 4,2: 0 + 4,3: 0 + 4,4: 0 + 4,5: 0 + 4,6: 0 + 4,7: 0 + 4,8: 0 + 4,9: 0 + 4,10: 0 + 4,11: 0 + 4,12: 0 + 4,13: 0 + 4,14: 0 + 4,15: 0 + 5,0: 0 + 5,1: 0 + 5,2: 0 + 5,3: 0 + 5,4: 0 + 5,5: 0 + 5,6: 0 + 5,7: 0 + 5,8: 0 + 5,9: 0 + 5,10: 0 + 5,11: 0 + 5,12: 0 + 5,13: 0 + 5,14: 0 + 5,15: 0 + 6,0: 0 + 6,1: 0 + 6,2: 0 + 6,3: 0 + 6,4: 0 + 6,5: 0 + 6,6: 0 + 6,7: 0 + 6,8: 0 + 6,9: 0 + 6,10: 0 + 6,11: 0 + 6,12: 0 + 6,13: 0 + 6,14: 0 + 6,15: 0 + 7,0: 0 + 7,1: 0 + 7,2: 0 + 7,3: 0 + 7,4: 0 + 7,5: 0 + 7,6: 0 + 7,7: 0 + 7,8: 0 + 7,9: 0 + 7,10: 0 + 7,11: 0 + 7,12: 0 + 7,13: 0 + 7,14: 0 + 7,15: 0 + 8,0: 0 + 8,1: 0 + 8,2: 0 + 8,3: 0 + 8,4: 0 + 8,5: 0 + 8,6: 0 + 8,7: 0 + 8,8: 0 + 8,9: 0 + 8,10: 0 + 8,11: 0 + 8,12: 0 + 8,13: 0 + 8,14: 0 + 8,15: 0 + 9,0: 0 + 9,1: 0 + 9,2: 0 + 9,3: 0 + 9,4: 0 + 9,5: 0 + 9,6: 0 + 9,7: 0 + 9,8: 0 + 9,9: 0 + 9,10: 0 + 9,11: 0 + 9,12: 0 + 9,13: 0 + 9,14: 0 + 9,15: 0 + 10,0: 0 + 10,1: 0 + 10,2: 0 + 10,3: 0 + 10,4: 0 + 10,5: 0 + 10,6: 0 + 10,7: 0 + 10,8: 0 + 10,9: 0 + 10,10: 0 + 10,11: 0 + 10,12: 0 + 10,13: 0 + 10,14: 0 + 10,15: 0 + 11,0: 0 + 11,1: 0 + 11,2: 0 + 11,3: 0 + 11,4: 0 + 11,5: 0 + 11,6: 0 + 11,7: 0 + 11,8: 0 + 11,9: 0 + 11,10: 0 + 11,11: 0 + 11,12: 0 + 11,13: 0 + 11,14: 0 + 11,15: 0 + 12,0: 0 + 12,1: 0 + 12,2: 0 + 12,3: 0 + 12,4: 0 + 12,5: 0 + 12,6: 0 + 12,7: 0 + 12,8: 0 + 12,9: 0 + 12,10: 0 + 12,11: 0 + 12,12: 0 + 12,13: 0 + 12,14: 0 + 12,15: 0 + 13,0: 0 + 13,1: 0 + 13,2: 0 + 13,3: 0 + 13,4: 0 + 13,5: 0 + 13,6: 0 + 13,7: 0 + 13,8: 0 + 13,9: 0 + 13,10: 0 + 13,11: 0 + 13,12: 0 + 13,13: 0 + 13,14: 0 + 13,15: 0 + 14,0: 0 + 14,1: 0 + 14,2: 0 + 14,3: 0 + 14,4: 0 + 14,5: 0 + 14,6: 0 + 14,7: 0 + 14,8: 0 + 14,9: 0 + 14,10: 0 + 14,11: 0 + 14,12: 0 + 14,13: 0 + 14,14: 0 + 14,15: 0 + 15,0: 0 + 15,1: 0 + 15,2: 0 + 15,3: 0 + 15,4: 0 + 15,5: 0 + 15,6: 0 + 15,7: 0 + 15,8: 0 + 15,9: 0 + 15,10: 0 + 15,11: 0 + 15,12: 0 + 15,13: 0 + 15,14: 0 + 15,15: 0 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: GridAtmosphere + - type: GasTileOverlay +... diff --git a/Resources/Maps/Dungeon/Templates/MediumArea4.yml b/Resources/Maps/Dungeon/Templates/MediumArea4.yml new file mode 100644 index 0000000000..0975288745 --- /dev/null +++ b/Resources/Maps/Dungeon/Templates/MediumArea4.yml @@ -0,0 +1,442 @@ +meta: + format: 3 + name: DemoStation + author: Space-Wizards + postmapinit: false +tilemap: + 0: Space + 1: FloorArcadeBlue + 2: FloorArcadeBlue2 + 3: FloorArcadeRed + 4: FloorAsteroidCoarseSand0 + 5: FloorAsteroidCoarseSandDug + 6: FloorAsteroidIronsand1 + 7: FloorAsteroidIronsand2 + 8: FloorAsteroidIronsand3 + 9: FloorAsteroidIronsand4 + 10: FloorAsteroidSand + 11: FloorAsteroidTile + 12: FloorBar + 13: FloorBasalt + 14: FloorBasaslt + 15: FloorBlue + 16: FloorBlueCircuit + 17: FloorBoxing + 18: FloorCarpetClown + 19: FloorCarpetOffice + 20: FloorCave + 21: FloorCaveDrought + 22: FloorClown + 23: FloorDark + 24: FloorDarkDiagonal + 25: FloorDarkDiagonalMini + 26: FloorDarkHerringbone + 27: FloorDarkMini + 28: FloorDarkMono + 29: FloorDarkOffset + 30: FloorDarkPavement + 31: FloorDarkPavementVertical + 32: FloorDarkPlastic + 33: FloorDesert + 34: FloorDirt + 35: FloorEighties + 36: FloorElevatorShaft + 37: FloorFlesh + 38: FloorFreezer + 39: FloorGlass + 40: FloorGold + 41: FloorGrass + 42: FloorGrassDark + 43: FloorGrassJungle + 44: FloorGrassLight + 45: FloorGreenCircuit + 46: FloorGym + 47: FloorHydro + 48: FloorKitchen + 49: FloorLaundry + 50: FloorLino + 51: FloorLowDesert + 52: FloorMetalDiamond + 53: FloorMime + 54: FloorMono + 55: FloorPlanetGrass + 56: FloorPlastic + 57: FloorRGlass + 58: FloorReinforced + 59: FloorRockVault + 60: FloorShowroom + 61: FloorShuttleBlue + 62: FloorShuttleOrange + 63: FloorShuttlePurple + 64: FloorShuttleRed + 65: FloorShuttleWhite + 66: FloorSilver + 67: FloorSnow + 68: FloorSteel + 69: FloorSteelDiagonal + 70: FloorSteelDiagonalMini + 71: FloorSteelDirty + 72: FloorSteelHerringbone + 73: FloorSteelMini + 74: FloorSteelMono + 75: FloorSteelOffset + 76: FloorSteelPavement + 77: FloorSteelPavementVertical + 78: FloorTechMaint + 79: FloorTechMaint2 + 80: FloorTechMaint3 + 81: FloorWhite + 82: FloorWhiteDiagonal + 83: FloorWhiteDiagonalMini + 84: FloorWhiteHerringbone + 85: FloorWhiteMini + 86: FloorWhiteMono + 87: FloorWhiteOffset + 88: FloorWhitePavement + 89: FloorWhitePavementVertical + 90: FloorWhitePlastic + 91: FloorWood + 92: FloorWoodTile + 93: Lattice + 94: Plating +entities: +- uid: 0 + components: + - type: MetaData + - pos: 0.75,1.3125 + parent: invalid + type: Transform + - chunks: + 0,1: + ind: 0,1 + tiles: BgAAAEQAAABEAAAARAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 0,0: + ind: 0,0 + tiles: BgAAAEQAAABEAAAARAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAABEAAAARAAAAEQAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAARAAAAEQAAABEAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAEQAAABEAAAARAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAABEAAAARAAAAEQAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAABgAAAAYAAAAGAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAEQAAABEAAAARAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAABEAAAARAAAAEQAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAARAAAAEQAAABEAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAEQAAABEAAAARAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAABEAAAARAAAAEQAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAABgAAAAYAAAAGAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAEQAAABEAAAARAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAABEAAAARAAAAEQAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAARAAAAEQAAABEAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAEQAAABEAAAARAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + type: MapGrid + - type: Broadphase + - angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + type: Physics + - fixtures: [] + type: Fixtures + - type: OccluderTree + - type: Shuttle + - nextUpdate: 78.7387785 + type: GridPathfinding + - gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + type: Gravity + - chunkCollection: {} + type: DecalGrid + - tiles: + 0,0: 0 + 0,1: 0 + 0,2: 0 + 0,3: 0 + 0,4: 0 + 0,5: 0 + 0,6: 0 + 0,7: 0 + 0,8: 0 + 16,0: 0 + 16,1: 0 + 16,2: 0 + 16,3: 0 + 16,4: 0 + 16,5: 0 + 16,6: 0 + 16,7: 0 + 16,8: 0 + 16,9: 0 + 16,10: 0 + 16,11: 0 + 16,12: 0 + 16,13: 0 + 16,14: 0 + 16,15: 0 + 16,16: 0 + 0,16: 0 + 1,16: 0 + 2,16: 0 + 3,16: 0 + 4,16: 0 + 5,16: 0 + 6,16: 0 + 7,16: 0 + 8,16: 0 + 9,16: 0 + 10,16: 0 + 11,16: 0 + 12,16: 0 + 13,16: 0 + 14,16: 0 + 15,16: 0 + 0,9: 0 + 0,10: 0 + 0,11: 0 + 0,12: 0 + 0,13: 0 + 0,14: 0 + 0,15: 0 + 1,0: 0 + 1,1: 0 + 1,2: 0 + 1,3: 0 + 1,4: 0 + 1,5: 0 + 1,6: 0 + 1,7: 0 + 1,8: 0 + 1,9: 0 + 1,10: 0 + 1,11: 0 + 1,12: 0 + 1,13: 0 + 1,14: 0 + 1,15: 0 + 2,0: 0 + 2,1: 0 + 2,2: 0 + 2,3: 0 + 2,4: 0 + 2,5: 0 + 2,6: 0 + 2,7: 0 + 2,8: 0 + 2,9: 0 + 2,10: 0 + 2,11: 0 + 2,12: 0 + 2,13: 0 + 2,14: 0 + 2,15: 0 + 3,0: 0 + 3,1: 0 + 3,2: 0 + 3,3: 0 + 3,4: 0 + 3,5: 0 + 3,6: 0 + 3,7: 0 + 3,8: 0 + 3,9: 0 + 3,10: 0 + 3,11: 0 + 3,12: 0 + 3,13: 0 + 3,14: 0 + 3,15: 0 + 4,0: 0 + 4,1: 0 + 4,2: 0 + 4,3: 0 + 4,4: 0 + 4,5: 0 + 4,6: 0 + 4,7: 0 + 4,8: 0 + 4,9: 0 + 4,10: 0 + 4,11: 0 + 4,12: 0 + 4,13: 0 + 4,14: 0 + 4,15: 0 + 5,0: 0 + 5,1: 0 + 5,2: 0 + 5,3: 0 + 5,4: 0 + 5,5: 0 + 5,6: 0 + 5,7: 0 + 5,8: 0 + 5,9: 0 + 5,10: 0 + 5,11: 0 + 5,12: 0 + 5,13: 0 + 5,14: 0 + 5,15: 0 + 6,0: 0 + 6,1: 0 + 6,2: 0 + 6,3: 0 + 6,4: 0 + 6,5: 0 + 6,6: 0 + 6,7: 0 + 6,8: 0 + 6,9: 0 + 6,10: 0 + 6,11: 0 + 6,12: 0 + 6,13: 0 + 6,14: 0 + 6,15: 0 + 7,0: 0 + 7,1: 0 + 7,2: 0 + 7,3: 0 + 7,4: 0 + 7,5: 0 + 7,6: 0 + 7,7: 0 + 7,8: 0 + 7,9: 0 + 7,10: 0 + 7,11: 0 + 7,12: 0 + 7,13: 0 + 7,14: 0 + 7,15: 0 + 8,0: 0 + 8,1: 0 + 8,2: 0 + 8,3: 0 + 8,4: 0 + 8,5: 0 + 8,6: 0 + 8,7: 0 + 8,8: 0 + 8,9: 0 + 8,10: 0 + 8,11: 0 + 8,12: 0 + 8,13: 0 + 8,14: 0 + 8,15: 0 + 9,0: 0 + 9,1: 0 + 9,2: 0 + 9,3: 0 + 9,4: 0 + 9,5: 0 + 9,6: 0 + 9,7: 0 + 9,8: 0 + 9,9: 0 + 9,10: 0 + 9,11: 0 + 9,12: 0 + 9,13: 0 + 9,14: 0 + 9,15: 0 + 10,0: 0 + 10,1: 0 + 10,2: 0 + 10,3: 0 + 10,4: 0 + 10,5: 0 + 10,6: 0 + 10,7: 0 + 10,8: 0 + 10,9: 0 + 10,10: 0 + 10,11: 0 + 10,12: 0 + 10,13: 0 + 10,14: 0 + 10,15: 0 + 11,0: 0 + 11,1: 0 + 11,2: 0 + 11,3: 0 + 11,4: 0 + 11,5: 0 + 11,6: 0 + 11,7: 0 + 11,8: 0 + 11,9: 0 + 11,10: 0 + 11,11: 0 + 11,12: 0 + 11,13: 0 + 11,14: 0 + 11,15: 0 + 12,0: 0 + 12,1: 0 + 12,2: 0 + 12,3: 0 + 12,4: 0 + 12,5: 0 + 12,6: 0 + 12,7: 0 + 12,8: 0 + 12,9: 0 + 12,10: 0 + 12,11: 0 + 12,12: 0 + 12,13: 0 + 12,14: 0 + 12,15: 0 + 13,0: 0 + 13,1: 0 + 13,2: 0 + 13,3: 0 + 13,4: 0 + 13,5: 0 + 13,6: 0 + 13,7: 0 + 13,8: 0 + 13,9: 0 + 13,10: 0 + 13,11: 0 + 13,12: 0 + 13,13: 0 + 13,14: 0 + 13,15: 0 + 14,0: 0 + 14,1: 0 + 14,2: 0 + 14,3: 0 + 14,4: 0 + 14,5: 0 + 14,6: 0 + 14,7: 0 + 14,8: 0 + 14,9: 0 + 14,10: 0 + 14,11: 0 + 14,12: 0 + 14,13: 0 + 14,14: 0 + 14,15: 0 + 15,0: 0 + 15,1: 0 + 15,2: 0 + 15,3: 0 + 15,4: 0 + 15,5: 0 + 15,6: 0 + 15,7: 0 + 15,8: 0 + 15,9: 0 + 15,10: 0 + 15,11: 0 + 15,12: 0 + 15,13: 0 + 15,14: 0 + 15,15: 0 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + type: GridAtmosphere + - type: GasTileOverlay +... diff --git a/Resources/Maps/Dungeon/experiment.yml b/Resources/Maps/Dungeon/experiment.yml new file mode 100644 index 0000000000..c933ce8845 --- /dev/null +++ b/Resources/Maps/Dungeon/experiment.yml @@ -0,0 +1,16191 @@ +meta: + format: 3 + name: DemoStation + author: Space-Wizards + postmapinit: false +tilemap: + 0: Space + 1: FloorArcadeBlue + 2: FloorArcadeBlue2 + 3: FloorArcadeRed + 4: FloorAsteroidCoarseSand0 + 5: FloorAsteroidCoarseSandDug + 6: FloorAsteroidIronsand1 + 7: FloorAsteroidIronsand2 + 8: FloorAsteroidIronsand3 + 9: FloorAsteroidIronsand4 + 10: FloorAsteroidSand + 11: FloorAsteroidTile + 12: FloorBar + 13: FloorBasalt + 14: FloorBlue + 15: FloorBlueCircuit + 16: FloorBoxing + 17: FloorCarpetClown + 18: FloorCarpetOffice + 19: FloorCave + 20: FloorCaveDrought + 21: FloorClown + 22: FloorDark + 23: FloorDarkDiagonal + 24: FloorDarkDiagonalMini + 25: FloorDarkHerringbone + 26: FloorDarkMini + 27: FloorDarkMono + 28: FloorDarkOffset + 29: FloorDarkPavement + 30: FloorDarkPavementVertical + 31: FloorDarkPlastic + 32: FloorDesert + 33: FloorDirt + 34: FloorEighties + 35: FloorElevatorShaft + 36: FloorFlesh + 37: FloorFreezer + 38: FloorGlass + 39: FloorGold + 40: FloorGrass + 41: FloorGrassDark + 42: FloorGrassJungle + 43: FloorGrassLight + 44: FloorGreenCircuit + 45: FloorGym + 46: FloorHydro + 47: FloorKitchen + 48: FloorLaundry + 49: FloorLino + 50: FloorLowDesert + 51: FloorMetalDiamond + 52: FloorMime + 53: FloorMono + 54: FloorPlanetDirt + 55: FloorPlanetGrass + 56: FloorPlastic + 57: FloorRGlass + 58: FloorReinforced + 59: FloorRockVault + 60: FloorShowroom + 61: FloorShuttleBlue + 62: FloorShuttleOrange + 63: FloorShuttlePurple + 64: FloorShuttleRed + 65: FloorShuttleWhite + 66: FloorSilver + 67: FloorSnow + 68: FloorSteel + 69: FloorSteelDiagonal + 70: FloorSteelDiagonalMini + 71: FloorSteelDirty + 72: FloorSteelHerringbone + 73: FloorSteelMini + 74: FloorSteelMono + 75: FloorSteelOffset + 76: FloorSteelPavement + 77: FloorSteelPavementVertical + 78: FloorTechMaint + 79: FloorTechMaint2 + 80: FloorTechMaint3 + 81: FloorWhite + 82: FloorWhiteDiagonal + 83: FloorWhiteDiagonalMini + 84: FloorWhiteHerringbone + 85: FloorWhiteMini + 86: FloorWhiteMono + 87: FloorWhiteOffset + 88: FloorWhitePavement + 89: FloorWhitePavementVertical + 90: FloorWhitePlastic + 91: FloorWood + 92: FloorWoodTile + 93: Lattice + 94: Plating +entities: +- uid: 0 + components: + - type: MetaData + - type: Transform + - index: 5 + type: Map + - type: PhysicsMap + - type: Broadphase + - type: OccluderTree + - chunks: + -1,-1: + ind: -1,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAA== + 0,0: + ind: 0,0 + tiles: VgAAAEQAAAJEAAAARAAAA0QAAAFEAAAARAAAA0QAAABEAAADRAAAAUQAAANEAAACRAAAAkQAAAFEAAAARAAAA1EAAABEAAAARAAAA0QAAANEAAABRAAAAEQAAANEAAACRAAAAEQAAAFEAAAARAAAAEQAAANEAAACRAAAAEQAAABRAAAARAAAAUQAAANeAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAXgAAAEQAAAFEAAABUQAAAEQAAANEAAABRAAAAEQAAAJEAAACRAAAAkQAAABEAAABRAAAAUQAAABEAAAARAAAAkQAAAJEAAACRAAAAVYAAABEAAAARAAAAkQAAABEAAAARAAAA0QAAABEAAADRAAAAEQAAANEAAABRAAAAUQAAANEAAADRAAAAUQAAAM+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAOAAAAFoAAAE4AAAAOAAAAVoAAAE4AAAARAAAAEQAAANEAAAARAAAA0QAAAE+AAAAGQAAAB0AAAAdAAAAHQAAADgAAANaAAABOAAAADgAAAJaAAAAOAAAAkQAAANEAAAARAAAAUQAAABEAAADPgAAAB4AAAAuAAAATQAAAC4AAABEAAAAWwAAAVsAAABbAAABWwAAAFsAAANbAAACWwAAAVsAAABbAAABWwAAAz4AAAAeAAAALgAAAE0AAAAuAAAAOAAAAlsAAAFbAAABWwAAAFsAAAJbAAABWwAAAVsAAABbAAACWwAAAFsAAAI+AAAAHgAAAC4AAABNAAAALgAAADgAAAE4AAACOAAAADgAAAI4AAABOAAAATgAAAE4AAAAOAAAAjgAAAE4AAABPgAAABkAAAAdAAAAHQAAAB0AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAXgAAABYAAAFEAAADRAAAAkQAAAMWAAACXgAAAD4AAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAPgAAAF4AAAAWAAACRAAAAUQAAAFEAAABFgAAA14AAAA+AAAAFgAAAF4AAABeAAAATwAAAF4AAABeAAAAFgAAAD4AAABEAAACRAAAAkQAAABeAAAARAAAAkQAAAFEAAAAPgAAABYAAABeAAAAOgAAADoAAAA6AAAAXgAAABYAAAA+AAAARAAAAkQAAANEAAABRAAAAUQAAANEAAACRAAAAz4AAAAWAAAAXgAAAF4AAABeAAAAXgAAAF4AAAAWAAAAPgAAAA== + 0,1: + ind: 0,1 + tiles: RAAAAEQAAANEAAACRAAAAkQAAAFEAAACRAAAAT4AAAAWAAAAFgAAABYAAAAWAAAAFgAAABYAAAAWAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAlAAAAJQAAACUAAAAlAAAAJQAAAD4AAABEAAABUQAAAlEAAAJRAAADRAAAAT4AAAAqAAAAUQAAA1EAAANRAAAAJQAAACUAAAAlAAAAXgAAAF4AAAA+AAAAUQAAAVEAAAMqAAAAUQAAA1EAAAM+AAAAUQAAAlEAAANRAAADUQAAAiUAAAAlAAAAWgAAA1oAAANaAAADPgAAAFEAAAMqAAAAKgAAACoAAABRAAABPgAAAFEAAAFRAAADRAAAAVEAAAMlAAAAXgAAAFoAAANRAAACUQAAAj4AAABRAAABUQAAAioAAABRAAABUQAAAD4AAABRAAACUQAAAFEAAANRAAABJQAAAF4AAABaAAADUQAAAFEAAAM+AAAARAAAAFEAAANRAAAAUQAAAUQAAAE+AAAAUQAAAVEAAANRAAABUQAAAj4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA6AAAAOgAAADoAAAA+AAAARAAAAEQAAAFEAAADPgAAADwAAAA8AAAAJQAAAD4AAABJAAACSQAAAkoAAAA+AAAAOgAAAA8AAAA6AAAAPgAAAE4AAABEAAAARAAAAz4AAAAlAAAAPAAAACUAAAA+AAAASQAAAkkAAAJKAAACPgAAADoAAAAPAAAAOgAAAD4AAABEAAADRAAAAkQAAAM+AAAAJQAAACUAAAAlAAAAPgAAAEkAAANJAAACSgAAAj4AAAA6AAAADwAAADoAAAA+AAAARAAAA0QAAAFEAAABPgAAACUAAAA8AAAAJQAAAD4AAABJAAACSQAAA0oAAAE+AAAAOgAAADoAAAA6AAAAPgAAAEQAAAFEAAAARAAAAj4AAAAlAAAAJQAAADwAAAA+AAAASQAAA0kAAABKAAABPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAABEAAAARAAAAkQAAABEAAADRAAAAVEAAAFEAAACUQAAAFEAAANeAAAAFgAAABYAAAAWAAACPgAAAFEAAABRAAACRAAAABYAAAEWAAABFgAAAEQAAAFEAAAARAAAA0QAAAFEAAADFgAAARYAAAEWAAADRAAAAz4AAABRAAACUQAAAg== + 0,-1: + ind: 0,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAA== + -1,0: + ind: -1,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAA== + -1,1: + ind: -1,1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAA== + 1,-1: + ind: 1,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAA== + 1,0: + ind: 1,0 + tiles: VgAAAD4AAABEAAAAOgAAADoAAAA6AAAARAAAADoAAAA6AAAAOgAAAEQAAAA6AAAAOgAAADoAAABEAAAAOgAAAFEAAAA+AAAARAAAADoAAAA6AAAAOgAAAEQAAAA6AAAAOgAAADoAAABEAAAAOgAAADoAAAA6AAAARAAAADoAAABRAAAAPgAAAEQAAABEAAAAOgAAAEQAAABEAAAARAAAADoAAABEAAAARAAAAEQAAAA6AAAARAAAAEQAAABEAAAAUQAAAD4AAABEAAAAUQAAAFEAAABRAAAAUQAAAFEAAABRAAAAUQAAAFEAAABRAAAAUQAAAFEAAABRAAAAUQAAAFYAAAA+AAAARAAAAF4AAABRAAAAUQAAAFEAAABRAAAAUQAAAFEAAABRAAAAUQAAAFEAAABRAAAAUQAAAFEAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAHQAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAGQAAAD4AAABOAAAATgAAAE4AAABOAAAATgAAAE4AAABOAAAATgAAAEQAAABNAAAARAAAAC4AAABNAAAALgAAAB4AAAA+AAAATgAAAEQAAAAWAAAAFgAAAF4AAABeAAAAXgAAABYAAABEAAAATQAAAEQAAAAuAAAATQAAAC4AAAAeAAAAPgAAAE4AAABEAAAAFgAAABYAAABeAAAAXgAAAF4AAAAWAAAARAAAAE0AAABEAAAALgAAAE0AAAAuAAAAHgAAAD4AAABOAAAARAAAABYAAAAWAAAAXgAAAF4AAABeAAAAFgAAAB0AAAAdAAAAHQAAAB0AAAAdAAAAHQAAABkAAAA+AAAATgAAAE4AAABOAAAATgAAAE4AAABOAAAATgAAAE4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAARAAAAUQAAANEAAAARAAAAUQAAAJEAAABRAAAAz4AAAA6AAAAOgAAADoAAABRAAAAFgAAABYAAAAWAAAAPgAAAEQAAAI3AAAANwAAADcAAAA3AAAANwAAAEQAAAE+AAAAOgAAADoAAAA6AAAAUQAAAFEAAABRAAAAFgAAAD4AAABEAAABNwAAADcAAAA3AAAANwAAADcAAABEAAADPgAAAFEAAABRAAAAUQAAAFEAAABRAAAAUQAAAFEAAAA+AAAARAAAATcAAAA3AAAANwAAADcAAAA3AAAARAAAAD4AAAAWAAAAUQAAAFEAAABRAAAAUQAAAFEAAABRAAAAPgAAAA== + 1,1: + ind: 1,1 + tiles: RAAAAEQAAANEAAADRAAAA0QAAAJEAAADRAAAAj4AAAAWAAAAFgAAABYAAABRAAAAUQAAAFEAAABRAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAABRAAADPgAAACoAAABEAAABRAAAAUQAAAEqAAAAPgAAAEQAAABEAAADRAAAA0QAAABEAAADPgAAAFEAAABRAAABUQAAAD4AAABEAAAARAAAAEQAAABEAAADRAAAAz4AAABEAAACXgAAAF4AAABeAAAARAAAAz4AAABRAAABUQAAA1EAAAE+AAAARAAAAUQAAAJEAAABRAAAAkQAAAE+AAAARAAAA14AAABeAAAAXgAAAEQAAAI+AAAARAAAAkQAAABRAAABPgAAAEQAAANEAAABRAAAA0QAAAFEAAADPgAAAEQAAAJeAAAAXgAAAF4AAABEAAACPgAAAEQAAANEAAACUQAAAz4AAAAqAAAARAAAAkQAAABEAAABKgAAAD4AAABEAAABRAAAAUQAAAFEAAADXgAAAD4AAABEAAACRAAAAT4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAWAAADFgAAAhYAAAA+AAAARQAAAEUAAANFAAABPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAFgAAAxYAAAAWAAADPgAAAEUAAABFAAAATwAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAABYAAAEWAAAAFgAAAz4AAABFAAADRQAAAk8AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAWAAAAFgAAABYAAAI+AAAARQAAAEUAAAFPAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAFgAAABYAAAAWAAACPgAAAEUAAABFAAABRQAAAz4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAABRAAADXgAAAEQAAAFEAAACRAAAAkQAAAFEAAADRAAAAkQAAABEAAABRAAAAT4AAAAWAAADFgAAABYAAAIWAAABUQAAA04AAABEAAADRAAAAUQAAABEAAACRAAAAEQAAABEAAADRAAAA0QAAAA+AAAAFgAAABYAAAAWAAACFgAAAw== + -1,2: + ind: -1,2 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAA== + -1,3: + ind: -1,3 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 0,2: + ind: 0,2 + tiles: FgAAAxYAAAIWAAAAXgAAAFEAAABRAAAARAAAAVEAAAFEAAAARAAAAEQAAAJEAAACRAAAAz4AAABRAAADUQAAAj4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAABEAAACRAAAAkQAAABEAAADVgAAAFYAAABWAAADRAAAA0QAAAJEAAACRAAAAT4AAABEAAADRAAAAV4AAABeAAAARAAAAkQAAANEAAACRAAAAEoAAANKAAAASgAAAUQAAAJEAAABRAAAAEQAAAE+AAAARAAAAlYAAAFWAAABXgAAAEQAAABEAAAARAAAAkQAAAFWAAABVgAAAFYAAAJEAAABRAAAAEQAAAJEAAABPgAAAEQAAANEAAADRAAAAkQAAAE+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAARAAAAkQAAAFEAAAARAAAAEQAAABEAAADRAAAAz4AAABEAAACRAAAA0QAAAFEAAADRAAAA0QAAABEAAAAPgAAAEQAAABEAAABRAAAAUQAAANEAAADRAAAAEQAAAE+AAAARAAAA0QAAAEsAAAALAAAACwAAABEAAABRAAAAz4AAABEAAAARAAAAkQAAANEAAABRAAAAUQAAAFEAAAAPgAAAEQAAABEAAABRAAAAEQAAAJEAAAARAAAAkQAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAEQAAANEAAABRAAAAVEAAAM6AAAAOgAAADoAAAA+AAAAXgAAABYAAAEWAAACFgAAAxYAAAIWAAABFgAAAT4AAABEAAABRAAAAUQAAANRAAAAOgAAADoAAAA6AAAAPgAAAF4AAABeAAAAFgAAARYAAAAWAAACXgAAAF4AAAA+AAAARAAAAUQAAABEAAADUQAAAjoAAAA6AAAAOgAAAD4AAABEAAACTwAAAE8AAABPAAAATwAAAE8AAABEAAAAPgAAAEQAAAJEAAAARAAAA14AAABRAAACUQAAAFEAAAM+AAAARAAAA08AAABeAAAAXgAAAF4AAABPAAAARAAAAT4AAABEAAADRAAAAUQAAANRAAABUQAAA14AAABRAAACPgAAAEQAAAJPAAAAXgAAAF4AAABeAAAATwAAAEQAAAE+AAAAWgAAAFoAAAFaAAAAUQAAAV4AAABRAAABUQAAAz4AAABEAAADUAAAAk8AAABQAAAATwAAAFAAAABEAAABPgAAAA== + 0,3: + ind: 0,3 + tiles: WgAAAloAAAFaAAABXgAAAF4AAABRAAADXgAAAD4AAABEAAABRAAAAkQAAABEAAABRAAAAEQAAABEAAACPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 1,2: + ind: 1,2 + tiles: UQAAAV4AAABEAAACRAAAAUQAAAFEAAABRAAAA0QAAAJEAAACRAAAAUQAAAI+AAAAFgAAARYAAAEWAAABFgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAABeAAAAXgAAAF4AAABEAAABRAAAA0QAAANEAAACPgAAACgAAABEAAADRAAAAkQAAAFEAAADRAAAAUQAAABEAAABVgAAAV4AAABeAAAAXgAAAFYAAABeAAAARAAAAz4AAABRAAAARAAAA0QAAANEAAACRAAAAUQAAANEAAACRAAAAF4AAABeAAAAXgAAAF4AAABEAAADRAAAAEQAAAI+AAAAKAAAAEQAAAJEAAACRAAAAkQAAANEAAACRAAAAEQAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAARAAAAUQAAAJEAAADRAAAA0QAAABEAAABRAAAAT4AAABEAAABRAAAA14AAABEAAAAXgAAAEQAAAJEAAADPgAAAEQAAAJEAAAARAAAA0QAAABEAAAARAAAA0QAAAA+AAAARAAAAkQAAABEAAADRAAAAEQAAANEAAACRAAAAz4AAABEAAACRAAAAEQAAAFEAAAARAAAAEQAAAFEAAACPgAAAEQAAAJEAAADXgAAAEQAAANeAAAARAAAAkQAAAI+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAB8AAAMWAAACFgAAAR8AAAMWAAACFgAAAh8AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAABXgAAACwAAABeAAAALAAAAF4AAAAWAAACPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAywAAAAsAAAAXgAAACwAAAAsAAAAFgAAAz4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAFeAAAAXgAAAF4AAABeAAAAXgAAAB8AAAI+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAADLAAAACwAAABeAAAALAAAACwAAAAWAAABPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAV4AAAAsAAAAXgAAACwAAABeAAAAFgAAAz4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 1,3: + ind: 1,3 + tiles: HwAAAxYAAAAWAAAAHwAAABYAAAAWAAADHwAAAz4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 2,0: + ind: 2,0 + tiles: OgAAADoAAABEAAAAPgAAAEQAAANEAAACRAAAAl4AAAAxAAAAMQAAADEAAABeAAAARAAAAEQAAABEAAAAXgAAADoAAAA6AAAARAAAAD4AAABEAAACRAAAAkQAAAFeAAAAXgAAAE8AAABeAAAAXgAAAEQAAABEAAAARAAAAF4AAAA6AAAARAAAAEQAAAA+AAAARAAAA0QAAANEAAACRAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAAUQAAAFEAAABEAAAAPgAAAEQAAABEAAABRAAAAV4AAABeAAAATwAAAF4AAABeAAAAMAAAADAAAAAwAAAAXgAAAFEAAABeAAAARAAAAD4AAABEAAAARAAAAUQAAAJeAAAAWwAAAFsAAABbAAAAXgAAADAAAAAwAAAAMAAAAF4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAATgAAAE4AAABOAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAABYAAABEAAAATgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAWAAAARAAAAE4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAFgAAAEQAAABOAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAE4AAABOAAAATgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAARAAAA0QAAAJEAAADUQAAAFEAAABRAAAAUQAAAD4AAAAfAAAAHwAAAB8AAAAfAAAAXgAAAB8AAAAfAAAAPgAAAEQAAAFEAAACRAAAA1EAAABRAAAAUQAAAFEAAAA+AAAAHwAAAB8AAAAfAAAAHwAAAB8AAAAfAAAAHwAAAD4AAAAWAAAAFgAAAEQAAAFEAAACRAAAA1EAAABRAAAAPgAAAEQAAABEAAADRAAAAF4AAABEAAAAXgAAAF4AAAA+AAAAXgAAABYAAABEAAACRAAAAkQAAAJRAAAAUQAAAD4AAABEAAAARAAAAF4AAABeAAAAXgAAAF4AAABEAAADPgAAAA== + 3,0: + ind: 3,0 + tiles: WwAAAFsAAABbAAAAXgAAAEQAAAFEAAACRAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF4AAABPAAAAXgAAAF4AAABEAAABRAAAA0QAAAM+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAARAAAAEQAAABEAAAARAAAAkQAAABEAAADPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXgAAAE8AAABeAAAAXgAAAEQAAAJEAAAARAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFsAAABbAAAAWwAAAF4AAABEAAABRAAAA0QAAAM+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 2,-1: + ind: 2,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAA== + 3,-1: + ind: 3,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 3,1: + ind: 3,1 + tiles: PgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 3,2: + ind: 3,2 + tiles: PgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 2,2: + ind: 2,2 + tiles: FgAAARYAAAMWAAACFgAAARYAAAMWAAABFgAAAxYAAAEWAAABPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAABEAAACRAAAAigAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAARAAAAkQAAANRAAACPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAEQAAABEAAAAKAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAARAAAAEQAAAJEAAAARAAAAl4AAABEAAADXgAAAD4AAABEAAADRAAAAUQAAAFEAAABRAAAAEQAAANEAAACPgAAAEQAAABEAAACRAAAAV4AAABEAAACRAAAAEQAAAI+AAAARAAAA0QAAANEAAABRAAAA0QAAANEAAABRAAAAD4AAABEAAAAXgAAAF4AAABEAAACRAAAAF4AAABeAAAAPgAAAEQAAAJEAAACRAAAAUQAAANEAAACRAAAAUQAAAE+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 2,1: + ind: 2,1 + tiles: FgAAABYAAABeAAAARAAAAUQAAAFRAAAAUQAAAD4AAABEAAADRAAAAl4AAABEAAABXgAAAEQAAAFEAAACPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAABRAAACUQAAAFEAAAM+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAUQAAAFEAAAJRAAACPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAFEAAANRAAACUQAAAz4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAABRAAACOgAAADoAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAUQAAADoAAAA6AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAWAAADFgAAABYAAAAWAAACFgAAABYAAAIWAAADFgAAAxYAAAE+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAFgAAAxYAAAEWAAABFgAAAxYAAAEWAAABFgAAARYAAAAWAAABPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAA== + type: MapGrid + - nextUpdate: 14529.6397815 + type: GridPathfinding + - gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + type: Gravity + - chunkCollection: + 0,1: + 0: + color: '#FFFFFFFF' + id: WarnLineS + coordinates: 4,42 + 1: + color: '#FFFFFFFF' + id: WarnLineS + coordinates: 4,43 + 2: + color: '#FFFFFFFF' + id: WarnCornerNW + coordinates: 4,44 + 3: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 5,44 + 4: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 6,44 + 5: + color: '#FFFFFFFF' + id: Box + coordinates: 5,43 + 6: + color: '#D381C996' + id: BrickTileWhiteLineW + coordinates: 3,47 + 7: + color: '#D381C996' + id: BrickTileWhiteLineW + coordinates: 3,46 + 8: + color: '#D381C996' + id: BrickTileWhiteLineW + coordinates: 3,44 + 9: + color: '#D381C996' + id: BrickTileWhiteLineW + coordinates: 3,43 + 10: + color: '#D381C996' + id: BrickTileWhiteLineW + coordinates: 3,42 + 11: + color: '#D381C996' + id: BrickTileWhiteLineE + coordinates: 3,42 + 12: + color: '#D381C996' + id: BrickTileWhiteLineE + coordinates: 3,43 + 13: + color: '#D381C996' + id: BrickTileWhiteLineE + coordinates: 3,44 + 14: + color: '#D381C996' + id: BrickTileWhiteLineS + coordinates: 4,45 + 15: + color: '#D381C996' + id: BrickTileWhiteLineS + coordinates: 6,45 + 16: + color: '#D381C996' + id: WarnLineGreyscaleS + coordinates: 5,45 + 18: + color: '#FFFFFFFF' + id: WarnBox + coordinates: 4,48 + 19: + color: '#FFFFFFFF' + id: WarnBox + coordinates: 6,48 + 20: + cleanable: True + color: '#FFFFFFFF' + id: Dirt + coordinates: 4,46 + 21: + cleanable: True + color: '#FFFFFFFF' + id: Dirt + coordinates: 4,47 + 22: + cleanable: True + color: '#FFFFFFFF' + id: Dirt + coordinates: 3,48 + 23: + cleanable: True + color: '#FFFFFFFF' + id: Dirt + coordinates: 5,48 + 24: + cleanable: True + color: '#FFFFFFFF' + id: Dirt + coordinates: 6,47 + 25: + cleanable: True + color: '#FFFFFFFF' + id: Dirt + coordinates: 4,48 + 26: + cleanable: True + color: '#FFFFFFFF' + id: Dirt + coordinates: 2,47 + 27: + cleanable: True + color: '#FFFFFFFF' + id: Dirt + coordinates: 3,47 + 28: + cleanable: True + color: '#FFFFFFFF' + id: Dirt + coordinates: 3,46 + 29: + cleanable: True + color: '#FFFFFFFF' + id: Dirt + coordinates: 4,47 + 30: + cleanable: True + color: '#FFFFFFFF' + id: Dirt + coordinates: 5,48 + 31: + cleanable: True + color: '#FFFFFFFF' + id: Dirt + coordinates: 5,47 + 32: + cleanable: True + color: '#FFFFFFFF' + id: Dirt + coordinates: 4,45 + 33: + cleanable: True + color: '#FFFFFFFF' + id: Dirt + coordinates: 3,44 + 34: + cleanable: True + color: '#FFFFFFFF' + id: Dirt + coordinates: 6,45 + 35: + cleanable: True + color: '#FFFFFFFF' + id: Dirt + coordinates: 4,47 + 36: + cleanable: True + color: '#FFFFFFFF' + id: DirtHeavy + coordinates: 4,46 + 37: + cleanable: True + color: '#FFFFFFFF' + id: DirtHeavy + coordinates: 3,47 + 38: + cleanable: True + color: '#FFFFFFFF' + id: DirtHeavy + coordinates: 5,48 + 39: + cleanable: True + color: '#FFFFFFFF' + id: DirtMedium + coordinates: 3,44 + 40: + cleanable: True + color: '#FFFFFFFF' + id: DirtMedium + coordinates: 5,45 + 41: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 6,46 + 42: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 6,45 + 43: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 4,45 + 44: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 3,46 + 45: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 4,46 + 46: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 3,42 + 47: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 1,47 + 48: + color: '#D381C996' + id: FullTileOverlayGreyscale + coordinates: 2,48 + 49: + color: '#D381C996' + id: FullTileOverlayGreyscale + coordinates: 1,48 + 50: + color: '#D381C996' + id: FullTileOverlayGreyscale + coordinates: 0,48 + 51: + color: '#FFFFFFFF' + id: BotLeft + coordinates: 2,48 + 52: + color: '#FFFFFFFF' + id: BotLeft + coordinates: 1,48 + 53: + color: '#FFFFFFFF' + id: BotLeft + coordinates: 0,48 + 54: + color: '#FFFFFFFF' + id: BotLeft + coordinates: 0,42 + 55: + color: '#FFFFFFFF' + id: Bot + coordinates: 0,43 + 56: + color: '#FFFFFFFF' + id: Bot + coordinates: 0,44 + 63: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 5,40 + 58: + color: '#D381C996' + id: CheckerNWSE + coordinates: 5,39 + 59: + color: '#D381C996' + id: CheckerNWSE + coordinates: 4,39 + 60: + color: '#D381C996' + id: CheckerNWSE + coordinates: 3,39 + 61: + color: '#D381C996' + id: CheckerNWSE + coordinates: 2,39 + 62: + color: '#D381C996' + id: CheckerNWSE + coordinates: 1,39 + 64: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 4,40 + 65: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 3,40 + 66: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 2,40 + 67: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 1,40 + 68: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 5,38 + 69: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 4,38 + 70: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 3,38 + 71: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 2,38 + 72: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 1,38 + 73: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerNe + coordinates: 6,40 + 74: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerSe + coordinates: 6,38 + 75: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerSw + coordinates: 0,38 + 76: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerNw + coordinates: 0,40 + 77: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 1,40 + 78: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 2,40 + 79: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 5,40 + 80: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 4,40 + 81: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 3,40 + 82: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 5,38 + 83: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 4,38 + 84: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 3,38 + 85: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 2,38 + 86: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 1,38 + 87: + color: '#FFFFFFFF' + id: BrickTileWhiteLineE + coordinates: 6,39 + 88: + color: '#FFFFFFFF' + id: BrickTileWhiteLineW + coordinates: 0,39 + 89: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerSe + coordinates: 14,38 + 90: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerNe + coordinates: 14,40 + 91: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerNw + coordinates: 8,40 + 92: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerSw + coordinates: 8,38 + 93: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 9,40 + 94: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 10,40 + 95: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 11,40 + 96: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 12,40 + 97: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 13,40 + 98: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 13,38 + 99: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 12,38 + 100: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 11,38 + 101: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 10,38 + 102: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 9,38 + 103: + color: '#FFFFFFFF' + id: BrickTileWhiteLineE + coordinates: 14,39 + 104: + color: '#FFFFFFFF' + id: BrickTileWhiteLineW + coordinates: 8,39 + 105: + color: '#FFFFFFFF' + id: BrickTileWhiteLineE + coordinates: 2,42 + 106: + color: '#FFFFFFFF' + id: BrickTileWhiteLineE + coordinates: 2,43 + 107: + color: '#FFFFFFFF' + id: BrickTileWhiteLineE + coordinates: 2,44 + 108: + color: '#FFFFFFFF' + id: BrickTileWhiteLineE + coordinates: 2,45 + 109: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerNe + coordinates: 2,46 + 110: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 1,46 + 111: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 0,46 + 112: + color: '#D381C996' + id: BrickTileWhiteLineN + coordinates: 12,38 + 113: + color: '#D381C996' + id: BrickTileWhiteLineN + coordinates: 11,38 + 114: + color: '#D381C996' + id: BrickTileWhiteLineN + coordinates: 10,38 + 115: + color: '#D381C996' + id: BrickTileWhiteLineS + coordinates: 12,40 + 116: + color: '#D381C996' + id: BrickTileWhiteLineS + coordinates: 11,40 + 117: + color: '#D381C996' + id: BrickTileWhiteLineS + coordinates: 10,40 + 118: + color: '#D381C996' + id: BrickTileWhiteEndW + coordinates: 13,39 + 119: + color: '#D381C996' + id: BrickTileWhiteEndE + coordinates: 9,39 + 120: + color: '#D381C996' + id: BrickTileWhiteInnerSw + coordinates: 13,40 + 121: + color: '#D381C996' + id: BrickTileWhiteInnerSe + coordinates: 9,40 + 122: + color: '#D381C996' + id: BrickTileWhiteInnerNw + coordinates: 13,38 + 123: + color: '#D381C996' + id: BrickTileWhiteInnerNe + coordinates: 9,38 + 124: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerSe + coordinates: 22,38 + 125: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerNw + coordinates: 16,40 + 126: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerNe + coordinates: 22,40 + 127: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerSw + coordinates: 16,38 + 128: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 21,38 + 129: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 20,38 + 130: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 19,38 + 131: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 18,38 + 132: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 17,38 + 133: + color: '#FFFFFFFF' + id: BrickTileWhiteLineE + coordinates: 22,39 + 134: + color: '#FFFFFFFF' + id: BrickTileWhiteLineW + coordinates: 16,39 + 135: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 17,40 + 136: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 19,40 + 137: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 18,40 + 138: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 20,40 + 139: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 21,40 + 140: + color: '#D381C996' + id: CheckerNESW + coordinates: 17,39 + 141: + color: '#D381C996' + id: CheckerNESW + coordinates: 18,39 + 142: + color: '#D381C996' + id: CheckerNESW + coordinates: 19,39 + 143: + color: '#D381C996' + id: CheckerNESW + coordinates: 20,39 + 144: + color: '#D381C996' + id: CheckerNESW + coordinates: 21,39 + 145: + color: '#D381C996' + id: QuarterTileOverlayGreyscale270 + coordinates: 17,40 + 146: + color: '#D381C996' + id: QuarterTileOverlayGreyscale270 + coordinates: 18,40 + 147: + color: '#D381C996' + id: QuarterTileOverlayGreyscale270 + coordinates: 19,40 + 148: + color: '#D381C996' + id: QuarterTileOverlayGreyscale270 + coordinates: 20,40 + 149: + color: '#D381C996' + id: QuarterTileOverlayGreyscale270 + coordinates: 21,40 + 150: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 21,38 + 151: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 20,38 + 152: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 19,38 + 153: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 18,38 + 154: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 17,38 + 155: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 17,38 + 156: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 17,39 + 157: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 18,39 + 158: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 21,38 + 159: + cleanable: True + color: '#FFFFFFFF' + id: DirtMedium + coordinates: 17,39 + 160: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 16,40 + 161: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 20,39 + 162: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 13,38 + 163: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 8,40 + 164: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 6,39 + 165: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 5,39 + 166: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 1,39 + 167: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 22,40 + 168: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerSe + coordinates: 30,38 + 175: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerNe + coordinates: 30,40 + 174: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerNw + coordinates: 24,40 + 180: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerSw + coordinates: 24,38 + 223: + color: '#D381C996' + id: BrickTileWhiteInnerSe + coordinates: 25,39 + 222: + color: '#D381C996' + id: BrickTileWhiteInnerSw + coordinates: 29,39 + 231: + color: '#D381C996' + id: FullTileOverlayGreyscale + coordinates: 27,39 + 217: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 25,40 + 185: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 29,40 + 206: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 29,38 + 218: + color: '#D381C996' + id: BrickTileWhiteEndW + coordinates: 28,39 + 230: + color: '#D381C996' + id: FullTileOverlayGreyscale + coordinates: 27,38 + 219: + color: '#D381C996' + id: BrickTileWhiteEndE + coordinates: 26,39 + 210: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 25,38 + 211: + color: '#FFFFFFFF' + id: BrickTileWhiteLineE + coordinates: 30,39 + 216: + color: '#FFFFFFFF' + id: BrickTileWhiteLineW + coordinates: 24,39 + 224: + color: '#D381C996' + id: BrickTileWhiteInnerNe + coordinates: 25,39 + 225: + color: '#D381C996' + id: BrickTileWhiteInnerNw + coordinates: 29,39 + 226: + color: '#D381C996' + id: BrickTileWhiteInnerSw + coordinates: 29,40 + 227: + color: '#D381C996' + id: BrickTileWhiteInnerSe + coordinates: 25,40 + 228: + color: '#D381C996' + id: BrickTileWhiteInnerNw + coordinates: 29,38 + 229: + color: '#D381C996' + id: BrickTileWhiteInnerNe + coordinates: 25,38 + 232: + color: '#D381C996' + id: FullTileOverlayGreyscale + coordinates: 27,40 + 243: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 29,39 + 244: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 29,40 + 245: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 27,39 + 246: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 26,39 + 247: + cleanable: True + color: '#FFFFFFFF' + id: DirtMedium + coordinates: 27,40 + 248: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 27,38 + 249: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 24,39 + 250: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 30,38 + 279: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale270 + coordinates: 8,44 + 280: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale270 + coordinates: 8,45 + 281: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale270 + coordinates: 8,46 + 282: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale270 + coordinates: 8,47 + 283: + color: '#EFB34196' + id: CheckerNESW + coordinates: 8,48 + 284: + color: '#EFB34196' + id: CheckerNWSE + coordinates: 14,48 + 285: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale180 + coordinates: 14,44 + 286: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale180 + coordinates: 14,45 + 287: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale180 + coordinates: 14,46 + 288: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale180 + coordinates: 14,47 + 289: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale90 + coordinates: 9,48 + 290: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale90 + coordinates: 10,48 + 291: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale + coordinates: 13,48 + 292: + color: '#EFB34196' + id: QuarterTileOverlayGreyscale + coordinates: 12,48 + 293: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 8,44 + 294: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 8,45 + 295: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 8,46 + 296: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 8,47 + 297: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 8,48 + 298: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 9,48 + 299: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 10,48 + 300: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 14,44 + 301: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 14,45 + 302: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 14,46 + 303: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 14,47 + 304: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 14,48 + 305: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 13,48 + 306: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 12,48 + 307: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 12,44 + 308: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 11,44 + 309: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 10,44 + 310: + color: '#FFFFFFFF' + id: WarnLineN + coordinates: 12,47 + 311: + color: '#FFFFFFFF' + id: WarnLineN + coordinates: 10,47 + 312: + color: '#FFFFFFFF' + id: Delivery + coordinates: 13,47 + 313: + color: '#FFFFFFFF' + id: Delivery + coordinates: 11,47 + 314: + color: '#FFFFFFFF' + id: Delivery + coordinates: 9,47 + 315: + color: '#FFFFFFFF' + id: Delivery + coordinates: 12,43 + 316: + color: '#FFFFFFFF' + id: Delivery + coordinates: 11,43 + 317: + color: '#FFFFFFFF' + id: Delivery + coordinates: 10,43 + 318: + color: '#FFFFFFFF' + id: StandClear + coordinates: 11,44 + 319: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 10,44 + 320: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 9,45 + 321: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 8,46 + 322: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 8,47 + 323: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 13,48 + 324: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 14,44 + 325: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 13,42 + 326: + cleanable: True + color: '#FFFFFFFF' + id: DirtMedium + coordinates: 11,42 + 327: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 10,42 + 328: + cleanable: True + color: '#FFFFFFFF' + id: DirtMedium + coordinates: 8,45 + 329: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 8,44 + 330: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 13,45 + 331: + color: '#FFFFFFFF' + id: chevron + coordinates: 11,48 + 332: + color: '#334E6DC8' + id: BrickTileWhiteLineN + coordinates: 21,42 + 333: + color: '#334E6DC8' + id: BrickTileWhiteLineN + coordinates: 20,42 + 334: + color: '#334E6DC8' + id: BrickTileWhiteLineN + coordinates: 18,42 + 335: + color: '#334E6DC8' + id: BrickTileWhiteLineN + coordinates: 17,42 + 336: + color: '#334E6DC8' + id: BrickTileWhiteLineE + coordinates: 16,43 + 337: + color: '#334E6DC8' + id: BrickTileWhiteLineE + coordinates: 16,44 + 338: + color: '#334E6DC8' + id: BrickTileWhiteLineE + coordinates: 16,46 + 339: + color: '#334E6DC8' + id: BrickTileWhiteLineE + coordinates: 16,47 + 340: + color: '#334E6DC8' + id: BrickTileWhiteLineS + coordinates: 17,48 + 341: + color: '#334E6DC8' + id: BrickTileWhiteLineS + coordinates: 18,48 + 342: + color: '#334E6DC8' + id: BrickTileWhiteLineS + coordinates: 20,48 + 343: + color: '#334E6DC8' + id: BrickTileWhiteLineS + coordinates: 21,48 + 344: + color: '#334E6DC8' + id: BrickTileWhiteLineW + coordinates: 22,43 + 345: + color: '#334E6DC8' + id: BrickTileWhiteLineW + coordinates: 22,44 + 346: + color: '#334E6DC8' + id: BrickTileWhiteLineW + coordinates: 22,46 + 347: + color: '#334E6DC8' + id: BrickTileWhiteLineW + coordinates: 22,47 + 348: + color: '#FFFFFFFF' + id: WarnLineN + coordinates: 19,48 + 349: + color: '#FFFFFFFF' + id: WarnLineS + coordinates: 22,45 + 350: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 19,42 + 351: + color: '#FFFFFFFF' + id: WarnLineE + coordinates: 16,45 + 352: + color: '#334E6DC8' + id: BrickTileWhiteInnerSw + coordinates: 22,48 + 353: + color: '#334E6DC8' + id: BrickTileWhiteInnerSe + coordinates: 16,48 + 354: + color: '#334E6DC8' + id: BrickTileWhiteInnerNe + coordinates: 16,42 + 355: + color: '#334E6DC8' + id: BrickTileWhiteInnerNw + coordinates: 22,42 + 356: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 9,36 + 357: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 8,36 + 358: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 7,36 + 423: + color: '#D381C996' + id: MonoOverlay + coordinates: 4,36 + 400: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 1,36 + 399: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 2,36 + 362: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 3,36 + 363: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 1,36 + 364: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 2,36 + 365: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 9,34 + 366: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 7,34 + 367: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 8,34 + 425: + angle: -1.5707963267948966 rad + color: '#FFFFFFFF' + id: Arrows + coordinates: 10,35 + 434: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 14,36 + 430: + color: '#FFFFFFFF' + id: WarnLineE + coordinates: 6,34 + 371: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 3,34 + 372: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 2,34 + 373: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 1,34 + 374: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerSe + coordinates: 10,34 + 375: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerNe + coordinates: 10,36 + 376: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerSw + coordinates: 0,34 + 377: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerNw + coordinates: 0,36 + 378: + color: '#FFFFFFFF' + id: BrickTileWhiteLineE + coordinates: 10,35 + 379: + color: '#FFFFFFFF' + id: BrickTileWhiteLineW + coordinates: 0,35 + 380: + color: '#D381C996' + id: CheckerNWSE + coordinates: 1,35 + 381: + color: '#D381C996' + id: CheckerNWSE + coordinates: 2,35 + 382: + color: '#D381C996' + id: CheckerNWSE + coordinates: 3,35 + 428: + color: '#FFFFFFFF' + id: WarnLineS + coordinates: 4,36 + 435: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 13,36 + 420: + color: '#D381C996' + id: MonoOverlay + coordinates: 4,34 + 386: + color: '#D381C996' + id: CheckerNWSE + coordinates: 7,35 + 387: + color: '#D381C996' + id: CheckerNWSE + coordinates: 8,35 + 388: + color: '#D381C996' + id: CheckerNWSE + coordinates: 9,35 + 389: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 9,36 + 390: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 8,36 + 391: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 7,36 + 424: + color: '#D381C996' + id: MonoOverlay + coordinates: 6,36 + 398: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 3,36 + 432: + color: '#FFFFFFFF' + id: WarnLineE + coordinates: 6,36 + 427: + color: '#FFFFFFFF' + id: WarnLineS + coordinates: 4,34 + 401: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 9,34 + 402: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 8,34 + 403: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 7,34 + 421: + color: '#D381C996' + id: MonoOverlay + coordinates: 6,34 + 433: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 15,36 + 429: + color: '#FFFFFFFF' + id: WarnLineS + coordinates: 4,35 + 407: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 3,34 + 408: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 2,34 + 409: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 1,34 + 431: + color: '#FFFFFFFF' + id: WarnLineE + coordinates: 6,35 + 426: + angle: 1.5707963267948966 rad + color: '#FFFFFFFF' + id: Arrows + coordinates: 0,35 + 436: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 20,36 + 437: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 21,36 + 438: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerNw + coordinates: 12,36 + 439: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerNe + coordinates: 22,36 + 440: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 21,34 + 441: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 20,34 + 442: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 19,34 + 443: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 13,34 + 444: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerSe + coordinates: 22,34 + 445: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerSw + coordinates: 12,34 + 446: + color: '#FFFFFFFF' + id: BrickTileWhiteLineW + coordinates: 12,35 + 447: + color: '#FFFFFFFF' + id: BrickTileWhiteLineE + coordinates: 22,35 + 448: + color: '#D381C996' + id: BrickTileWhiteLineN + coordinates: 21,34 + 449: + color: '#D381C996' + id: BrickTileWhiteLineN + coordinates: 20,34 + 450: + color: '#D381C996' + id: BrickTileWhiteLineN + coordinates: 19,34 + 451: + color: '#D381C996' + id: BrickTileWhiteLineN + coordinates: 13,34 + 452: + color: '#D381C996' + id: BrickTileWhiteLineS + coordinates: 21,36 + 453: + color: '#D381C996' + id: BrickTileWhiteLineS + coordinates: 20,36 + 454: + color: '#D381C996' + id: BrickTileWhiteLineS + coordinates: 15,36 + 455: + color: '#D381C996' + id: BrickTileWhiteLineS + coordinates: 14,36 + 456: + color: '#D381C996' + id: BrickTileWhiteLineS + coordinates: 13,36 + 458: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 22,35 + 459: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 22,34 + 460: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 21,34 + 461: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 12,36 + 462: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 13,36 + 463: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 12,35 + 464: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 13,34 + 465: + cleanable: True + color: '#FFFFFFFF' + id: DirtMedium + coordinates: 12,35 + 466: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 12,34 + 467: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 19,34 + 468: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 15,34 + 469: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 19,35 + 470: + cleanable: True + color: '#FFFFFFFF' + id: Dirt + coordinates: 15,34 + 471: + cleanable: True + color: '#FFFFFFFF' + id: Dirt + coordinates: 19,35 + 472: + cleanable: True + color: '#FFFFFFFF' + id: Dirt + coordinates: 17,35 + 473: + cleanable: True + color: '#FFFFFFFF' + id: Dirt + coordinates: 16,34 + 474: + cleanable: True + color: '#FFFFFFFF' + id: Dirt + coordinates: 18,36 + 477: + color: '#FFFFFFFF' + id: Grasse1 + coordinates: 24,36 + 478: + color: '#FFFFFFFF' + id: Grassd3 + coordinates: 24,34 + 480: + color: '#FFFFFFFF' + id: BushCTwo + coordinates: 24,36 + 482: + color: '#FFFFFFFF' + id: Bushc3 + coordinates: 24,34 + 484: + color: '#FFFFFFFF' + id: Flowersy2 + coordinates: 24,36 + 486: + color: '#FFFFFFFF' + id: FlowersBROne + coordinates: 24,34 + 488: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerNw + coordinates: 25,36 + 490: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerSw + coordinates: 25,34 + 492: + color: '#FFFFFFFF' + id: BrickTileWhiteLineW + coordinates: 25,35 + 493: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 26,34 + 494: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 27,34 + 495: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 28,34 + 496: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 29,34 + 497: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 30,34 + 498: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 31,34 + 500: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 26,36 + 501: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 27,36 + 502: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 28,36 + 503: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 29,36 + 504: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 30,36 + 505: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 31,36 + 507: + color: '#D381C996' + id: CheckerNESW + coordinates: 31,35 + 508: + color: '#D381C996' + id: CheckerNESW + coordinates: 30,35 + 509: + color: '#D381C996' + id: CheckerNESW + coordinates: 29,35 + 510: + color: '#D381C996' + id: CheckerNESW + coordinates: 28,35 + 511: + color: '#D381C996' + id: CheckerNESW + coordinates: 27,35 + 513: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 26,35 + 514: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 31,34 + 515: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 30,34 + 516: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 29,34 + 517: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 28,34 + 518: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 27,34 + 519: + color: '#D381C996' + id: QuarterTileOverlayGreyscale270 + coordinates: 27,36 + 520: + color: '#D381C996' + id: QuarterTileOverlayGreyscale270 + coordinates: 28,36 + 521: + color: '#D381C996' + id: QuarterTileOverlayGreyscale270 + coordinates: 29,36 + 522: + color: '#D381C996' + id: QuarterTileOverlayGreyscale270 + coordinates: 30,36 + 523: + color: '#D381C996' + id: QuarterTileOverlayGreyscale270 + coordinates: 31,36 + 525: + color: '#D381C996' + id: QuarterTileOverlayGreyscale270 + coordinates: 26,36 + 551: + color: '#FFFFFFFF' + id: BrickTileSteelInnerSw + coordinates: 1,32 + 606: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 24,32 + 537: + color: '#FFFFFFFF' + id: BrickTileSteelLineS + coordinates: 4,32 + 539: + color: '#FFFFFFFF' + id: BrickTileSteelLineS + coordinates: 5,32 + 540: + color: '#FFFFFFFF' + id: BrickTileSteelCornerSe + coordinates: 7,32 + 554: + color: '#FFFFFFFF' + id: BrickTileSteelLineS + coordinates: 0,32 + 555: + color: '#D381C996' + id: BrickTileWhiteLineS + coordinates: 4,32 + 556: + color: '#D381C996' + id: BrickTileWhiteLineS + coordinates: 5,32 + 605: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 25,32 + 558: + color: '#D381C996' + id: BrickTileWhiteCornerSe + coordinates: 7,32 + 570: + color: '#D381C996' + id: BrickTileWhiteLineS + coordinates: 0,32 + 571: + color: '#D381C996' + id: BrickTileWhiteInnerSw + coordinates: 1,32 + 607: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 23,32 + 608: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 22,32 + 609: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 21,32 + 610: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 20,32 + 611: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 19,32 + 612: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerNw + coordinates: 18,32 + 613: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerNe + coordinates: 26,32 + 625: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 25,32 + 626: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 24,32 + 627: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 23,32 + 628: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 22,32 + 629: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 21,32 + 630: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 20,32 + 631: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 19,32 + 632: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 18,32 + 643: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 10,32 + 644: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 11,32 + 655: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 5,32 + 657: + cleanable: True + color: '#FFFFFFFF' + id: Delivery + coordinates: 4,32 + 660: + color: '#D381C996' + id: CheckerNWSE + coordinates: 16,32 + 661: + color: '#D381C996' + id: CheckerNWSE + coordinates: 15,32 + 666: + color: '#D381C996' + id: CheckerNWSE + coordinates: 14,32 + 670: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 15,32 + 684: + cleanable: True + color: '#FFFFFFFF' + id: Caution + coordinates: 11,42 + 685: + cleanable: True + color: '#FFFFFFFF' + id: BotLeft + coordinates: 14,42 + 787: + color: '#D381C996' + id: DeliveryGreyscale + coordinates: 24,35 + 813: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 31,32 + 814: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 30,32 + 815: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 29,32 + 829: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerNw + coordinates: 28,32 + 849: + color: '#D381C996' + id: BrickTileWhiteLineS + coordinates: 31,32 + 850: + color: '#D381C996' + id: BrickTileWhiteLineS + coordinates: 30,32 + 855: + color: '#D381C996' + id: BrickTileWhiteInnerSe + coordinates: 29,32 + 1,1: + 236: + color: '#D381C996' + id: FullTileOverlayGreyscale + coordinates: 37,39 + 170: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerSe + coordinates: 46,38 + 171: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerNw + coordinates: 40,40 + 172: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerNw + coordinates: 32,40 + 238: + color: '#D381C996' + id: HalfTileOverlayGreyscale180 + coordinates: 35,40 + 177: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerNe + coordinates: 46,40 + 178: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerSw + coordinates: 40,38 + 179: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerSw + coordinates: 32,38 + 233: + color: '#D381C996' + id: FullTileOverlayGreyscale + coordinates: 36,39 + 234: + color: '#D381C996' + id: FullTileOverlayGreyscale + coordinates: 34,39 + 188: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 35,40 + 189: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 36,40 + 237: + color: '#D381C996' + id: HalfTileOverlayGreyscale180 + coordinates: 36,40 + 191: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 41,40 + 192: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 42,40 + 193: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 43,40 + 194: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 44,40 + 195: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 45,40 + 196: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 45,38 + 197: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 44,38 + 198: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 43,38 + 199: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 42,38 + 200: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 41,38 + 201: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 37,38 + 235: + color: '#D381C996' + id: FullTileOverlayGreyscale + coordinates: 33,39 + 203: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 34,38 + 204: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 35,38 + 205: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 33,38 + 212: + color: '#FFFFFFFF' + id: BrickTileWhiteLineE + coordinates: 38,39 + 213: + color: '#FFFFFFFF' + id: BrickTileWhiteLineE + coordinates: 46,39 + 214: + color: '#FFFFFFFF' + id: BrickTileWhiteLineW + coordinates: 40,39 + 215: + color: '#FFFFFFFF' + id: BrickTileWhiteLineW + coordinates: 32,39 + 239: + color: '#D381C996' + id: HalfTileOverlayGreyscale + coordinates: 37,38 + 240: + color: '#D381C996' + id: HalfTileOverlayGreyscale + coordinates: 35,38 + 241: + color: '#D381C996' + id: HalfTileOverlayGreyscale + coordinates: 34,38 + 242: + color: '#D381C996' + id: HalfTileOverlayGreyscale + coordinates: 33,38 + 251: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 34,39 + 252: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 33,39 + 253: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 37,39 + 254: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 37,38 + 255: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 38,39 + 256: + cleanable: True + color: '#FFFFFFFF' + id: Dirt + coordinates: 38,38 + 257: + cleanable: True + color: '#FFFFFFFF' + id: Dirt + coordinates: 38,40 + 258: + cleanable: True + color: '#FFFFFFFF' + id: Dirt + coordinates: 37,40 + 259: + cleanable: True + color: '#FFFFFFFF' + id: Dirt + coordinates: 34,40 + 260: + cleanable: True + color: '#FFFFFFFF' + id: Dirt + coordinates: 36,38 + 261: + color: '#D381C996' + id: CheckerNWSE + coordinates: 45,39 + 262: + color: '#D381C996' + id: CheckerNWSE + coordinates: 44,39 + 263: + color: '#D381C996' + id: CheckerNWSE + coordinates: 43,39 + 264: + color: '#D381C996' + id: CheckerNWSE + coordinates: 42,39 + 265: + color: '#D381C996' + id: CheckerNWSE + coordinates: 41,39 + 266: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 45,38 + 267: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 44,38 + 268: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 43,38 + 269: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 42,38 + 270: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 41,38 + 271: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 41,40 + 272: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 42,40 + 273: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 43,40 + 274: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 44,40 + 275: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 45,40 + 276: + angle: -1.5707963267948966 rad + color: '#FFFFFFFF' + id: Arrows + coordinates: 40,39 + 277: + angle: 1.5707963267948966 rad + color: '#FFFFFFFF' + id: Arrows + coordinates: 46,39 + 475: + color: '#FFFFFFFF' + id: Grasse2 + coordinates: 34,34 + 476: + color: '#FFFFFFFF' + id: Grasse3 + coordinates: 34,36 + 479: + color: '#FFFFFFFF' + id: Grassa4 + coordinates: 34,34 + 481: + color: '#FFFFFFFF' + id: BushCThree + coordinates: 34,36 + 483: + color: '#FFFFFFFF' + id: Flowersy4 + coordinates: 34,34 + 485: + color: '#FFFFFFFF' + id: Flowerspv1 + coordinates: 34,36 + 487: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerSe + coordinates: 33,34 + 489: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerNe + coordinates: 33,36 + 491: + color: '#FFFFFFFF' + id: BrickTileWhiteLineE + coordinates: 33,35 + 499: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 32,34 + 506: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 32,36 + 512: + color: '#D381C996' + id: QuarterTileOverlayGreyscale270 + coordinates: 32,35 + 524: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 32,34 + 786: + color: '#D381C996' + id: DeliveryGreyscale + coordinates: 34,35 + 805: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 39,32 + 806: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 38,32 + 807: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 36,32 + 808: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 37,32 + 809: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 35,32 + 810: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 34,32 + 811: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 32,32 + 812: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 33,32 + 828: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerNe + coordinates: 40,32 + 842: + color: '#D381C996' + id: BrickTileWhiteLineS + coordinates: 38,32 + 843: + color: '#D381C996' + id: BrickTileWhiteLineS + coordinates: 37,32 + 844: + color: '#D381C996' + id: BrickTileWhiteLineS + coordinates: 36,32 + 845: + color: '#D381C996' + id: BrickTileWhiteLineS + coordinates: 35,32 + 846: + color: '#D381C996' + id: BrickTileWhiteLineS + coordinates: 34,32 + 847: + color: '#D381C996' + id: BrickTileWhiteLineS + coordinates: 33,32 + 848: + color: '#D381C996' + id: BrickTileWhiteLineS + coordinates: 32,32 + 853: + color: '#D381C996' + id: BrickTileWhiteInnerSw + coordinates: 39,32 + 0,0: + 548: + color: '#FFFFFFFF' + id: BrickTileSteelLineN + coordinates: 12,30 + 550: + color: '#FFFFFFFF' + id: BrickTileSteelCornerSw + coordinates: 1,31 + 552: + color: '#FFFFFFFF' + id: BrickTileSteelLineS + coordinates: 3,31 + 549: + color: '#FFFFFFFF' + id: BrickTileSteelInnerNe + coordinates: 11,30 + 545: + color: '#FFFFFFFF' + id: BrickTileSteelLineN + coordinates: 9,31 + 547: + color: '#FFFFFFFF' + id: BrickTileSteelCornerNe + coordinates: 11,31 + 546: + color: '#FFFFFFFF' + id: BrickTileSteelLineN + coordinates: 10,31 + 541: + color: '#FFFFFFFF' + id: BrickTileSteelCornerNw + coordinates: 5,30 + 615: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerSw + coordinates: 18,30 + 543: + color: '#FFFFFFFF' + id: BrickTileSteelLineN + coordinates: 7,30 + 544: + color: '#FFFFFFFF' + id: BrickTileSteelLineN + coordinates: 8,30 + 553: + color: '#FFFFFFFF' + id: BrickTileSteelLineS + coordinates: 2,31 + 559: + color: '#D381C996' + id: BrickTileWhiteLineN + coordinates: 8,30 + 560: + color: '#D381C996' + id: BrickTileWhiteLineN + coordinates: 7,30 + 614: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerSe + coordinates: 26,30 + 562: + color: '#D381C996' + id: BrickTileWhiteCornerNw + coordinates: 5,30 + 563: + color: '#D381C996' + id: BrickTileWhiteLineN + coordinates: 9,31 + 564: + color: '#D381C996' + id: BrickTileWhiteLineN + coordinates: 10,31 + 565: + color: '#D381C996' + id: BrickTileWhiteCornerNe + coordinates: 11,31 + 566: + color: '#D381C996' + id: BrickTileWhiteLineN + coordinates: 12,30 + 567: + color: '#D381C996' + id: BrickTileWhiteInnerNe + coordinates: 11,30 + 568: + color: '#D381C996' + id: BrickTileWhiteLineS + coordinates: 3,31 + 569: + color: '#D381C996' + id: BrickTileWhiteLineS + coordinates: 2,31 + 572: + color: '#D381C996' + id: BrickTileWhiteCornerSw + coordinates: 1,31 + 573: + color: '#FFFFFFFF' + id: WarnLineN + coordinates: 1,24 + 574: + color: '#FFFFFFFF' + id: WarnLineS + coordinates: 0,25 + 575: + color: '#FFFFFFFF' + id: WarnLineS + coordinates: 0,26 + 576: + color: '#FFFFFFFF' + id: WarnLineS + coordinates: 0,27 + 577: + color: '#FFFFFFFF' + id: WarnLineE + coordinates: 2,25 + 578: + color: '#FFFFFFFF' + id: WarnLineE + coordinates: 2,26 + 579: + color: '#FFFFFFFF' + id: WarnLineE + coordinates: 2,27 + 580: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 1,28 + 581: + color: '#FFFFFFFF' + id: WarnCornerSE + coordinates: 2,24 + 582: + color: '#FFFFFFFF' + id: WarnCornerNW + coordinates: 0,28 + 583: + color: '#FFFFFFFF' + id: WarnCornerNE + coordinates: 2,28 + 584: + color: '#FFFFFFFF' + id: WarnCornerSW + coordinates: 0,24 + 585: + color: '#9FED5896' + id: BrickTileWhiteLineE + coordinates: 6,25 + 586: + color: '#9FED5896' + id: BrickTileWhiteLineE + coordinates: 6,26 + 587: + color: '#9FED5896' + id: BrickTileWhiteLineE + coordinates: 6,27 + 588: + color: '#9FED5896' + id: BrickTileWhiteCornerNe + coordinates: 6,28 + 589: + color: '#9FED5896' + id: BrickTileWhiteCornerNw + coordinates: 4,28 + 590: + color: '#9FED5896' + id: BrickTileWhiteLineW + coordinates: 4,27 + 591: + color: '#9FED5896' + id: BrickTileWhiteLineW + coordinates: 4,26 + 600: + color: '#D381C996' + id: CheckerNWSE + coordinates: 5,25 + 593: + color: '#9FED5896' + id: BrickTileWhiteCornerSw + coordinates: 4,24 + 594: + color: '#9FED5896' + id: BrickTileWhiteCornerSe + coordinates: 6,24 + 595: + color: '#9FED5896' + id: BrickTileWhiteLineS + coordinates: 5,24 + 596: + color: '#9FED5896' + id: BrickTileWhiteLineN + coordinates: 5,28 + 597: + color: '#FFFFFFFF' + id: BotLeft + coordinates: 6,27 + 598: + color: '#FFFFFFFF' + id: BotLeft + coordinates: 6,28 + 599: + color: '#FFFFFFFF' + id: Bot + coordinates: 4,27 + 601: + color: '#D381C996' + id: CheckerNWSE + coordinates: 5,26 + 602: + color: '#D381C996' + id: CheckerNWSE + coordinates: 5,27 + 603: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 5,28 + 604: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 5,24 + 616: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 19,30 + 617: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 20,30 + 618: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 21,30 + 619: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 22,30 + 620: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 23,30 + 621: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 24,30 + 622: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 25,30 + 623: + color: '#FFFFFFFF' + id: BrickTileWhiteLineE + coordinates: 26,31 + 624: + color: '#FFFFFFFF' + id: BrickTileWhiteLineW + coordinates: 18,31 + 633: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 18,30 + 634: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 19,30 + 635: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 20,30 + 636: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 21,30 + 637: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 22,30 + 638: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 23,30 + 639: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 24,30 + 640: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 25,30 + 641: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 6,30 + 642: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 8,31 + 645: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 1,30 + 646: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 1,31 + 647: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 0,31 + 648: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 0,30 + 649: + cleanable: True + color: '#FFFFFFFF' + id: DirtMedium + coordinates: 12,31 + 650: + cleanable: True + color: '#FFFFFFFF' + id: DirtMedium + coordinates: 4,31 + 651: + cleanable: True + color: '#FFFFFFFF' + id: DirtMedium + coordinates: 4,30 + 652: + cleanable: True + color: '#FFFFFFFF' + id: DirtMedium + coordinates: 0,30 + 653: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 6,31 + 654: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 5,31 + 656: + cleanable: True + color: '#FFFFFFFF' + id: Delivery + coordinates: 8,30 + 658: + color: '#D381C996' + id: CheckerNWSE + coordinates: 16,30 + 659: + color: '#D381C996' + id: CheckerNWSE + coordinates: 16,31 + 662: + color: '#D381C996' + id: CheckerNWSE + coordinates: 15,31 + 663: + color: '#D381C996' + id: CheckerNWSE + coordinates: 15,30 + 664: + color: '#D381C996' + id: CheckerNWSE + coordinates: 14,30 + 665: + color: '#D381C996' + id: CheckerNWSE + coordinates: 14,31 + 667: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 15,31 + 668: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 16,30 + 669: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 14,31 + 671: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 19,31 + 672: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 20,30 + 673: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 21,30 + 674: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 24,30 + 675: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 26,31 + 676: + cleanable: True + color: '#EFD841FF' + id: splatter + coordinates: 8.178589,27.034609 + 677: + cleanable: True + color: '#FFFFFFFF' + id: DirtHeavy + coordinates: 9,25 + 678: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 9,24 + 679: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 8,24 + 680: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 9,26 + 681: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 10,26 + 682: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 8,28 + 777: + color: '#FFFFFFFF' + id: Bot + coordinates: 16,27 + 771: + color: '#D381C996' + id: MonoOverlay + coordinates: 14,25 + 752: + color: '#D381C996' + id: MonoOverlay + coordinates: 14,28 + 788: + color: '#D381C996' + id: DiagonalCheckerBOverlay + coordinates: 22,24 + 765: + color: '#D381C996' + id: MiniTileWhiteCornerNw + coordinates: 12,28 + 804: + color: '#FFFFFFFF' + id: WarnLineN + coordinates: 22,28 + 750: + color: '#D381C996' + id: MonoOverlay + coordinates: 14,24 + 785: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 18,24 + 774: + color: '#FFFFFFFF' + id: BotRight + coordinates: 14,27 + 780: + angle: -1.5707963267948966 rad + color: '#FFFFFFFF' + id: Arrows + coordinates: 17,27 + 764: + color: '#D381C996' + id: MiniTileWhiteCornerNe + coordinates: 13,28 + 768: + color: '#D381C996' + id: MiniTileWhiteLineW + coordinates: 12,25 + 773: + color: '#FFFFFFFF' + id: BotRight + coordinates: 14,25 + 824: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 31,30 + 783: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 18,26 + 792: + color: '#D381C996' + id: DiagonalCheckerBOverlay + coordinates: 21,25 + 784: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 18,25 + 754: + color: '#FFFFFFFF' + id: BotRight + coordinates: 14,26 + 762: + color: '#D381C996' + id: MiniTileWhiteLineE + coordinates: 13,27 + 779: + angle: -1.5707963267948966 rad + color: '#FFFFFFFF' + id: Arrows + coordinates: 17,26 + 769: + color: '#D381C996' + id: MiniTileWhiteCornerSw + coordinates: 12,24 + 770: + color: '#D381C996' + id: MiniTileWhiteCornerSe + coordinates: 13,24 + 791: + color: '#D381C996' + id: DiagonalCheckerBOverlay + coordinates: 20,25 + 790: + color: '#D381C996' + id: DiagonalCheckerBOverlay + coordinates: 20,24 + 782: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 18,27 + 751: + color: '#D381C996' + id: MonoOverlay + coordinates: 14,26 + 767: + color: '#D381C996' + id: MiniTileWhiteLineW + coordinates: 12,26 + 766: + color: '#D381C996' + id: MiniTileWhiteLineW + coordinates: 12,27 + 776: + color: '#FFFFFFFF' + id: Bot + coordinates: 16,26 + 761: + color: '#D381C996' + id: MiniTileWhiteLineE + coordinates: 13,26 + 789: + color: '#D381C996' + id: DiagonalCheckerBOverlay + coordinates: 21,24 + 781: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 18,28 + 778: + angle: -1.5707963267948966 rad + color: '#FFFFFFFF' + id: Arrows + coordinates: 17,25 + 775: + color: '#FFFFFFFF' + id: Bot + coordinates: 16,25 + 760: + color: '#D381C996' + id: MiniTileWhiteLineE + coordinates: 13,25 + 772: + color: '#D381C996' + id: MonoOverlay + coordinates: 14,27 + 795: + color: '#D381C996' + id: DiagonalCheckerBOverlay + coordinates: 21,26 + 796: + color: '#D381C996' + id: DiagonalCheckerBOverlay + coordinates: 20,26 + 797: + color: '#D381C996' + id: DiagonalCheckerBOverlay + coordinates: 20,27 + 798: + color: '#D381C996' + id: DiagonalCheckerBOverlay + coordinates: 21,27 + 803: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 22,24 + 800: + color: '#D381C996' + id: DiagonalCheckerBOverlay + coordinates: 22,28 + 801: + color: '#D381C996' + id: DiagonalCheckerBOverlay + coordinates: 21,28 + 802: + color: '#D381C996' + id: DiagonalCheckerBOverlay + coordinates: 20,28 + 825: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 30,30 + 826: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 29,30 + 830: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerSw + coordinates: 28,30 + 832: + color: '#FFFFFFFF' + id: BrickTileWhiteLineW + coordinates: 28,31 + 840: + color: '#D381C996' + id: BrickTileWhiteLineN + coordinates: 31,30 + 841: + color: '#D381C996' + id: BrickTileWhiteLineN + coordinates: 30,30 + 852: + color: '#D381C996' + id: BrickTileWhiteLineE + coordinates: 29,31 + 856: + color: '#D381C996' + id: BrickTileWhiteInnerNe + coordinates: 29,30 + 857: + color: '#FFFFFFFF' + id: Delivery + coordinates: 4,22 + 858: + color: '#FFFFFFFF' + id: Delivery + coordinates: 3,22 + 859: + color: '#FFFFFFFF' + id: WarnLineN + coordinates: 4,20 + 860: + color: '#FFFFFFFF' + id: WarnLineN + coordinates: 3,20 + 861: + color: '#FFFFFFFF' + id: WarnCornerSW + coordinates: 2,20 + 862: + color: '#FFFFFFFF' + id: WarnLineS + coordinates: 2,21 + 863: + color: '#FFFFFFFF' + id: WarnLineS + coordinates: 2,22 + 864: + color: '#9FED5812' + id: MonoOverlay + coordinates: 8,19 + 865: + color: '#9FED5812' + id: MonoOverlay + coordinates: 8,20 + 866: + color: '#9FED5812' + id: MonoOverlay + coordinates: 8,21 + 867: + color: '#9FED5812' + id: MonoOverlay + coordinates: 7,20 + 868: + color: '#9FED5812' + id: MonoOverlay + coordinates: 9,20 + 869: + color: '#FFFFFFFF' + id: Grasse3 + coordinates: 8,19 + 870: + color: '#FFFFFFFF' + id: Grasse2 + coordinates: 8.059679,20.049887 + 871: + color: '#FFFFFFFF' + id: Grasse1 + coordinates: 8.981554,20.003012 + 872: + color: '#FFFFFFFF' + id: Grassd1 + coordinates: 7.044054,20.018637 + 873: + color: '#FFFFFFFF' + id: Grassd3 + coordinates: 8.012804,20.987387 + 874: + color: '#FFFFFFFF' + id: Flowersy3 + coordinates: 7.934679,18.971762 + 875: + color: '#FFFFFFFF' + id: Grassa5 + coordinates: 8.997179,19.971762 + 876: + color: '#FFFFFFFF' + id: Grassb5 + coordinates: 7.044054,20.034262 + 877: + color: '#FFFFFFFF' + id: Grassb3 + coordinates: 7.997179,21.034262 + 878: + color: '#FFFFFFFF' + id: Bushb3 + coordinates: 7.997179,19.971762 + 879: + color: '#FFFFFFFF' + id: FlowersBRTwo + coordinates: 8,21 + 880: + color: '#FFFFFFFF' + id: Flowerspv1 + coordinates: 9,20 + 881: + color: '#FFFFFFFF' + id: Flowerspv3 + coordinates: 7,20 + 882: + color: '#D381C996' + id: BrickTileWhiteLineN + coordinates: 8,18 + 883: + color: '#D381C996' + id: BrickTileWhiteLineS + coordinates: 8,22 + 884: + color: '#D381C996' + id: BrickTileWhiteLineE + coordinates: 6,20 + 885: + color: '#D381C996' + id: BrickTileWhiteLineW + coordinates: 10,20 + 886: + color: '#D381C996' + id: BrickTileWhiteCornerNw + coordinates: 9,19 + 887: + color: '#D381C996' + id: BrickTileWhiteCornerSe + coordinates: 7,21 + 888: + color: '#D381C996' + id: BrickTileWhiteCornerNe + coordinates: 7,19 + 889: + color: '#D381C996' + id: BrickTileWhiteCornerSw + coordinates: 9,21 + 890: + color: '#D381C996' + id: BrickTileWhiteInnerSw + coordinates: 10,21 + 891: + color: '#D381C996' + id: BrickTileWhiteInnerSw + coordinates: 9,22 + 892: + color: '#D381C996' + id: BrickTileWhiteInnerNe + coordinates: 6,19 + 893: + color: '#D381C996' + id: BrickTileWhiteInnerNe + coordinates: 7,18 + 900: + color: '#FFFFFFFF' + id: BrickTileSteelCornerNw + coordinates: 6,21 + 895: + color: '#D381C996' + id: BrickTileWhiteInnerNw + coordinates: 10,19 + 896: + color: '#D381C996' + id: BrickTileWhiteInnerSe + coordinates: 6,21 + 897: + color: '#D381C996' + id: BrickTileWhiteInnerSe + coordinates: 7,22 + 899: + color: '#D381C996' + id: BrickTileWhiteInnerNw + coordinates: 9,18 + 901: + color: '#FFFFFFFF' + id: BrickTileSteelCornerNw + coordinates: 7,22 + 902: + color: '#FFFFFFFF' + id: BrickTileSteelCornerNe + coordinates: 10,21 + 903: + color: '#FFFFFFFF' + id: BrickTileSteelCornerNe + coordinates: 9,22 + 904: + color: '#FFFFFFFF' + id: BrickTileSteelCornerSe + coordinates: 10,19 + 905: + color: '#FFFFFFFF' + id: BrickTileSteelCornerSe + coordinates: 9,18 + 906: + color: '#FFFFFFFF' + id: BrickTileSteelCornerSw + coordinates: 7,18 + 907: + color: '#FFFFFFFF' + id: BrickTileSteelCornerSw + coordinates: 6,19 + 908: + color: '#FFFFFFFF' + id: BrickTileSteelLineS + coordinates: 8,18 + 909: + color: '#FFFFFFFF' + id: BrickTileSteelLineW + coordinates: 6,20 + 910: + color: '#FFFFFFFF' + id: BrickTileSteelLineN + coordinates: 8,22 + 911: + color: '#FFFFFFFF' + id: BrickTileSteelLineE + coordinates: 10,20 + 912: + color: '#FFFFFFFF' + id: BrickTileSteelInnerSe + coordinates: 9,19 + 913: + color: '#FFFFFFFF' + id: BrickTileSteelInnerSw + coordinates: 7,19 + 914: + color: '#FFFFFFFF' + id: BrickTileSteelInnerNe + coordinates: 9,21 + 915: + color: '#FFFFFFFF' + id: BrickTileSteelInnerNw + coordinates: 7,21 + 916: + color: '#FFFFFFFF' + id: BrickTileSteelLineE + coordinates: 13,20 + 917: + color: '#FFFFFFFF' + id: BrickTileSteelLineW + coordinates: 15,20 + 918: + color: '#FFFFFFFF' + id: BrickTileSteelLineS + coordinates: 14,21 + 919: + color: '#FFFFFFFF' + id: BrickTileSteelLineN + coordinates: 14,19 + 920: + color: '#FFFFFFFF' + id: BrickTileSteelInnerSw + coordinates: 15,21 + 921: + color: '#FFFFFFFF' + id: BrickTileSteelInnerSe + coordinates: 13,21 + 922: + color: '#FFFFFFFF' + id: BrickTileSteelInnerNw + coordinates: 15,19 + 923: + color: '#FFFFFFFF' + id: BrickTileSteelInnerNe + coordinates: 13,19 + 924: + color: '#D381C996' + id: BrickTileWhiteLineS + coordinates: 14,19 + 925: + color: '#D381C996' + id: BrickTileWhiteLineE + coordinates: 15,20 + 926: + color: '#D381C996' + id: BrickTileWhiteCornerNw + coordinates: 13,21 + 927: + color: '#D381C996' + id: BrickTileWhiteCornerNe + coordinates: 15,21 + 928: + color: '#D381C996' + id: BrickTileWhiteCornerSe + coordinates: 15,19 + 929: + color: '#D381C996' + id: BrickTileWhiteCornerSw + coordinates: 13,19 + 930: + color: '#D381C996' + id: BrickTileWhiteLineW + coordinates: 13,20 + 931: + color: '#D381C996' + id: BrickTileWhiteLineN + coordinates: 14,21 + 932: + color: '#FFFFFFFF' + id: BushCTwo + coordinates: 12,18 + 933: + color: '#D381C996' + id: HalfTileOverlayGreyscale180 + coordinates: 13,18 + 934: + color: '#D381C996' + id: HalfTileOverlayGreyscale180 + coordinates: 14,18 + 935: + color: '#D381C996' + id: HalfTileOverlayGreyscale180 + coordinates: 15,18 + 936: + color: '#D381C996' + id: HalfTileOverlayGreyscale + coordinates: 13,22 + 937: + color: '#D381C996' + id: HalfTileOverlayGreyscale + coordinates: 14,22 + 938: + color: '#D381C996' + id: HalfTileOverlayGreyscale + coordinates: 15,22 + 939: + color: '#D381C996' + id: HalfTileOverlayGreyscale90 + coordinates: 16,19 + 940: + color: '#D381C996' + id: HalfTileOverlayGreyscale90 + coordinates: 16,20 + 941: + color: '#D381C996' + id: HalfTileOverlayGreyscale90 + coordinates: 16,21 + 942: + color: '#D381C996' + id: HalfTileOverlayGreyscale270 + coordinates: 12,19 + 943: + color: '#D381C996' + id: HalfTileOverlayGreyscale270 + coordinates: 12,20 + 944: + color: '#D381C996' + id: HalfTileOverlayGreyscale270 + coordinates: 12,21 + 945: + color: '#D381C996' + id: ThreeQuarterTileOverlayGreyscale180 + coordinates: 16,18 + 946: + color: '#D381C996' + id: ThreeQuarterTileOverlayGreyscale90 + coordinates: 16,22 + 947: + color: '#D381C996' + id: ThreeQuarterTileOverlayGreyscale + coordinates: 12,22 + 948: + color: '#FFFFFFFF' + id: Bot + coordinates: 5,6 + 949: + color: '#FFFFFFFF' + id: Bot + coordinates: 5,7 + 950: + color: '#FFFFFFFF' + id: Bot + coordinates: 0,6 + 951: + color: '#FFFFFFFF' + id: Bot + coordinates: 0,7 + 952: + color: '#FFFFFFFF' + id: Bot + coordinates: 7,10 + 953: + color: '#FFFFFFFF' + id: Bot + coordinates: 8,10 + 954: + color: '#FFFFFFFF' + id: Bot + coordinates: 9,10 + 955: + color: '#FFFFFFFF' + id: WoodTrimThinCornerSe + coordinates: 10,8 + 956: + color: '#FFFFFFFF' + id: WoodTrimThinCornerSw + coordinates: 1,8 + 957: + color: '#FFFFFFFF' + id: WoodTrimThinCornerNw + coordinates: 1,9 + 958: + color: '#FFFFFFFF' + id: WoodTrimThinCornerNe + coordinates: 10,9 + 959: + color: '#FFFFFFFF' + id: WoodTrimThinLineN + coordinates: 9,9 + 960: + color: '#FFFFFFFF' + id: WoodTrimThinLineN + coordinates: 8,9 + 961: + color: '#FFFFFFFF' + id: WoodTrimThinLineN + coordinates: 7,9 + 962: + color: '#FFFFFFFF' + id: WoodTrimThinLineN + coordinates: 6,9 + 963: + color: '#FFFFFFFF' + id: WoodTrimThinLineN + coordinates: 5,9 + 964: + color: '#FFFFFFFF' + id: WoodTrimThinLineN + coordinates: 4,9 + 965: + color: '#FFFFFFFF' + id: WoodTrimThinLineN + coordinates: 3,9 + 966: + color: '#FFFFFFFF' + id: WoodTrimThinLineN + coordinates: 2,9 + 967: + color: '#FFFFFFFF' + id: WoodTrimThinLineS + coordinates: 10,8 + 968: + color: '#FFFFFFFF' + id: WoodTrimThinLineS + coordinates: 9,8 + 969: + color: '#FFFFFFFF' + id: WoodTrimThinLineS + coordinates: 8,8 + 970: + color: '#FFFFFFFF' + id: WoodTrimThinLineS + coordinates: 7,8 + 971: + color: '#FFFFFFFF' + id: WoodTrimThinLineS + coordinates: 6,8 + 972: + color: '#FFFFFFFF' + id: WoodTrimThinLineS + coordinates: 5,8 + 973: + color: '#FFFFFFFF' + id: WoodTrimThinLineS + coordinates: 4,8 + 974: + color: '#FFFFFFFF' + id: WoodTrimThinLineS + coordinates: 3,8 + 975: + color: '#FFFFFFFF' + id: WoodTrimThinLineS + coordinates: 2,8 + 976: + color: '#FFFFFFFF' + id: WoodTrimThinLineS + coordinates: 1,8 + 982: + color: '#FFFFFFFF' + id: BrickTileSteelEndN + coordinates: 4,7 + 981: + color: '#FFFFFFFF' + id: BrickTileSteelEndN + coordinates: 1,7 + 984: + color: '#FFFFFFFF' + id: BrickTileSteelLineE + coordinates: 1,6 + 983: + color: '#FFFFFFFF' + id: BrickTileSteelLineE + coordinates: 4,6 + 985: + color: '#FFFFFFFF' + id: BrickTileSteelLineW + coordinates: 4,6 + 986: + color: '#FFFFFFFF' + id: BrickTileSteelLineW + coordinates: 1,6 + 987: + color: '#FFFFFFFF' + id: Rock01 + coordinates: 22,18 + 988: + color: '#FFFFFFFF' + id: Rock03 + coordinates: 18,18 + 989: + color: '#FFFFFFFF' + id: Rock05 + coordinates: 22,22 + 990: + color: '#FFFFFFFF' + id: Rock04 + coordinates: 18,22 + 991: + color: '#D381C996' + id: CheckerNESW + coordinates: 19,20 + 992: + color: '#D381C996' + id: CheckerNESW + coordinates: 20,21 + 993: + color: '#D381C996' + id: CheckerNESW + coordinates: 20,20 + 994: + color: '#D381C996' + id: CheckerNESW + coordinates: 21,20 + 995: + color: '#D381C996' + id: CheckerNESW + coordinates: 20,19 + 996: + color: '#D381C996' + id: QuarterTileOverlayGreyscale270 + coordinates: 21,21 + 997: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 19,19 + 998: + color: '#D381C996' + id: BrickTileWhiteLineN + coordinates: 18,21 + 999: + color: '#D381C996' + id: BrickTileWhiteLineN + coordinates: 22,21 + 1000: + color: '#D381C996' + id: BrickTileWhiteLineE + coordinates: 21,22 + 1001: + color: '#D381C996' + id: BrickTileWhiteLineE + coordinates: 21,18 + 1002: + color: '#D381C996' + id: BrickTileWhiteLineS + coordinates: 22,19 + 1003: + color: '#D381C996' + id: BrickTileWhiteLineS + coordinates: 18,19 + 1004: + color: '#D381C996' + id: BrickTileWhiteLineW + coordinates: 19,18 + 1005: + color: '#D381C996' + id: BrickTileWhiteLineW + coordinates: 19,22 + 1006: + color: '#D381C996' + id: BrickTileWhiteInnerNw + coordinates: 19,21 + 1007: + color: '#D381C996' + id: BrickTileWhiteInnerNe + coordinates: 21,21 + 1008: + color: '#D381C996' + id: BrickTileWhiteInnerSe + coordinates: 21,19 + 1009: + color: '#D381C996' + id: BrickTileWhiteInnerSw + coordinates: 19,19 + 1010: + color: '#EFB34196' + id: BrickTileWhiteLineE + coordinates: 28,19 + 1011: + color: '#EFB34196' + id: BrickTileWhiteLineE + coordinates: 28,20 + 1012: + color: '#EFB34196' + id: BrickTileWhiteLineE + coordinates: 28,21 + 1013: + color: '#EFB34196' + id: BrickTileWhiteLineN + coordinates: 27,22 + 1014: + color: '#EFB34196' + id: BrickTileWhiteLineN + coordinates: 26,22 + 1015: + color: '#EFB34196' + id: BrickTileWhiteLineN + coordinates: 25,22 + 1016: + color: '#EFB34196' + id: BrickTileWhiteCornerNw + coordinates: 24,22 + 1017: + color: '#EFB34196' + id: BrickTileWhiteLineW + coordinates: 24,21 + 1018: + color: '#EFB34196' + id: BrickTileWhiteLineW + coordinates: 24,20 + 1019: + color: '#EFB34196' + id: BrickTileWhiteLineW + coordinates: 24,19 + 1020: + color: '#EFB34196' + id: BrickTileWhiteCornerSw + coordinates: 24,18 + 1021: + color: '#EFB34196' + id: BrickTileWhiteLineS + coordinates: 25,18 + 1022: + color: '#EFB34196' + id: BrickTileWhiteLineS + coordinates: 26,18 + 1023: + color: '#EFB34196' + id: BrickTileWhiteLineS + coordinates: 27,18 + 1024: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 27,18 + 1025: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 26,18 + 1026: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 25,18 + 1027: + color: '#FFFFFFFF' + id: WarnLineN + coordinates: 27,22 + 1028: + color: '#FFFFFFFF' + id: WarnLineN + coordinates: 26,22 + 1029: + color: '#FFFFFFFF' + id: WarnLineN + coordinates: 25,22 + 1030: + color: '#D381C996' + id: FullTileOverlayGreyscale + coordinates: 30,18 + 1031: + color: '#D381C996' + id: FullTileOverlayGreyscale + coordinates: 30,19 + 1032: + color: '#D381C996' + id: FullTileOverlayGreyscale + coordinates: 31,19 + 1033: + color: '#D381C996' + id: FullTileOverlayGreyscale + coordinates: 31,18 + 1041: + color: '#FFFFFFFF' + id: Bot + coordinates: 30,18 + 1042: + color: '#FFFFFFFF' + id: Bot + coordinates: 30,19 + 1043: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 21,18 + 1044: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 22,19 + 1045: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 21,19 + 1046: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 19,18 + 1047: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 18,21 + 1048: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 25,18 + 1049: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 24,19 + 1050: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 28,20 + 1051: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 26,22 + 1052: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 31,19 + 1053: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 30,20 + 1057: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 14,22 + 1058: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 13,21 + 1059: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 13,19 + 1060: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 15,18 + 1061: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 16,20 + 1062: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 9,18 + 1063: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 10,19 + 1064: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 6,19 + 1065: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 8,22 + 1066: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 4,20 + 1067: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 2,22 + 1068: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 2,18 + 1069: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 0,21 + 1070: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 0,19 + 1071: + color: '#FFFFFFFF' + id: Bot + coordinates: 1,12 + 1072: + color: '#FFFFFFFF' + id: Bot + coordinates: 1,13 + 1073: + color: '#FFFFFFFF' + id: Delivery + coordinates: 5,13 + 1074: + color: '#FFFFFFFF' + id: Delivery + coordinates: 11,13 + 1079: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 11,12 + 1081: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 13,12 + 1080: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 12,12 + 1082: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 10,12 + 1083: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 9,12 + 1084: + color: '#FFFFFFFF' + id: WarnLineS + coordinates: 14,13 + 1085: + color: '#FFFFFFFF' + id: WarnLineS + coordinates: 14,14 + 1086: + color: '#FFFFFFFF' + id: WarnLineS + coordinates: 14,15 + 1087: + color: '#FFFFFFFF' + id: WarnLineN + coordinates: 13,16 + 1088: + color: '#FFFFFFFF' + id: WarnLineN + coordinates: 11,16 + 1089: + color: '#FFFFFFFF' + id: WarnLineN + coordinates: 12,16 + 1090: + color: '#FFFFFFFF' + id: WarnLineN + coordinates: 10,16 + 1091: + color: '#FFFFFFFF' + id: WarnLineN + coordinates: 9,16 + 1092: + color: '#FFFFFFFF' + id: WarnLineE + coordinates: 8,13 + 1093: + color: '#FFFFFFFF' + id: WarnLineE + coordinates: 8,14 + 1094: + color: '#FFFFFFFF' + id: WarnLineE + coordinates: 8,15 + 1125: + color: '#FFFFFFFF' + id: WarnCornerSmallNW + coordinates: 14,12 + 1122: + color: '#D381C996' + id: BrickTileSteelCornerSw + coordinates: 8,12 + 1117: + color: '#D381C996' + id: BrickTileSteelLineS + coordinates: 12,12 + 1119: + color: '#D381C996' + id: BrickTileSteelLineS + coordinates: 10,12 + 1116: + color: '#D381C996' + id: BrickTileSteelLineS + coordinates: 13,12 + 1100: + color: '#D381C996' + id: BrickTileSteelLineE + coordinates: 14,13 + 1101: + color: '#D381C996' + id: BrickTileSteelLineE + coordinates: 14,14 + 1102: + color: '#D381C996' + id: BrickTileSteelLineE + coordinates: 14,15 + 1124: + color: '#D381C996' + id: BrickTileSteelCornerNw + coordinates: 8,16 + 1118: + color: '#D381C996' + id: BrickTileSteelLineS + coordinates: 11,12 + 1105: + color: '#D381C996' + id: BrickTileSteelLineW + coordinates: 8,13 + 1106: + color: '#D381C996' + id: BrickTileSteelLineW + coordinates: 8,14 + 1107: + color: '#D381C996' + id: BrickTileSteelLineW + coordinates: 8,15 + 1121: + color: '#D381C996' + id: BrickTileSteelCornerSe + coordinates: 14,12 + 1109: + color: '#D381C996' + id: BrickTileSteelLineN + coordinates: 11,16 + 1110: + color: '#D381C996' + id: BrickTileSteelLineN + coordinates: 10,16 + 1111: + color: '#D381C996' + id: BrickTileSteelLineN + coordinates: 9,16 + 1120: + color: '#D381C996' + id: BrickTileSteelLineS + coordinates: 9,12 + 1113: + color: '#D381C996' + id: BrickTileSteelLineN + coordinates: 12,16 + 1114: + color: '#D381C996' + id: BrickTileSteelLineN + coordinates: 13,16 + 1123: + color: '#D381C996' + id: BrickTileSteelCornerNe + coordinates: 14,16 + 1126: + color: '#FFFFFFFF' + id: WarnCornerSmallNE + coordinates: 8,12 + 1127: + color: '#FFFFFFFF' + id: WarnCornerSmallSW + coordinates: 14,16 + 1128: + color: '#FFFFFFFF' + id: WarnCornerSmallSE + coordinates: 8,16 + 1129: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 22,12 + 1130: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 22,13 + 1131: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 22,14 + 1132: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 22,15 + 1133: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 22,16 + 1134: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 22,16 + 1135: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 21,16 + 1136: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 20,16 + 1137: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 19,16 + 1138: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 18,16 + 1139: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 17,16 + 1140: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 16,16 + 1141: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 16,15 + 1142: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 16,14 + 1143: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 16,13 + 1144: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 16,12 + 1145: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 16,12 + 1146: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 17,12 + 1147: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 18,12 + 1148: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 19,12 + 1149: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 20,12 + 1150: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 21,12 + 1246: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerSw + coordinates: 1,0 + 1214: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 13,4 + 1215: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 14,4 + 1294: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 12,4 + 1217: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 11,4 + 1218: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 10,4 + 1219: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 9,4 + 1220: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 7,4 + 1221: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 8,4 + 1222: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 6,4 + 1223: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 5,4 + 1304: + color: '#D381C996' + id: QuarterTileOverlayGreyscale270 + coordinates: 5,3 + 1225: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 3,4 + 1244: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerNe + coordinates: 15,4 + 1243: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerNw + coordinates: 1,4 + 1245: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerSe + coordinates: 15,0 + 1229: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 2,0 + 1230: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 3,0 + 1231: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 4,0 + 1232: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 5,0 + 1233: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 6,0 + 1234: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 7,0 + 1235: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 8,0 + 1236: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 9,0 + 1237: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 10,0 + 1238: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 11,0 + 1239: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 12,0 + 1240: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 13,0 + 1241: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 14,0 + 1247: + color: '#FFFFFFFF' + id: BrickTileWhiteLineE + coordinates: 15,1 + 1248: + color: '#FFFFFFFF' + id: BrickTileWhiteLineE + coordinates: 15,2 + 1249: + color: '#FFFFFFFF' + id: BrickTileWhiteLineE + coordinates: 15,3 + 1250: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 2,4 + 1251: + color: '#FFFFFFFF' + id: BrickTileWhiteLineW + coordinates: 1,1 + 1252: + color: '#FFFFFFFF' + id: BrickTileWhiteLineW + coordinates: 1,2 + 1253: + color: '#FFFFFFFF' + id: BrickTileWhiteLineW + coordinates: 1,3 + 1254: + color: '#FFFFFFFF' + id: BushCTwo + coordinates: 8,2 + 1255: + color: '#FFFFFFFF' + id: Bushb2 + coordinates: 10,2 + 1256: + color: '#FFFFFFFF' + id: Busha2 + coordinates: 6,2 + 1257: + color: '#FFFFFFFF' + id: BushAOne + coordinates: 12,2 + 1258: + color: '#FFFFFFFF' + id: Bushc1 + coordinates: 11,2 + 1259: + color: '#FFFFFFFF' + id: BushCThree + coordinates: 4,2 + 1260: + color: '#FFFFFFFF' + id: Grassb4 + coordinates: 5,2 + 1261: + color: '#FFFFFFFF' + id: Grassa2 + coordinates: 7,2 + 1262: + color: '#FFFFFFFF' + id: Grassa4 + coordinates: 9,2 + 1263: + color: '#FFFFFFFF' + id: Flowerspv1 + coordinates: 5,2 + 1264: + color: '#FFFFFFFF' + id: Flowerspv3 + coordinates: 7,2 + 1265: + color: '#FFFFFFFF' + id: Flowerspv2 + coordinates: 9,2 + 1266: + color: '#FFFFFFFF' + id: Flowerspv1 + coordinates: 12,2 + 1267: + color: '#FFFFFFFF' + id: Bushh3 + coordinates: 9,2 + 1268: + color: '#FFFFFFFF' + id: Bushh3 + coordinates: 4,2 + 1269: + color: '#FFFFFFFF' + id: Bushe4 + coordinates: 4,2 + 1317: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 5,1 + 1314: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 8,1 + 1316: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 6,1 + 1315: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 7,1 + 1318: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 4,1 + 1319: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 3,1 + 1313: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 9,1 + 1312: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 10,1 + 1310: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 12,1 + 1311: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 11,1 + 1309: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 13,1 + 1308: + color: '#D381C996' + id: QuarterTileOverlayGreyscale270 + coordinates: 14,2 + 1307: + color: '#D381C996' + id: QuarterTileOverlayGreyscale270 + coordinates: 14,3 + 1306: + color: '#D381C996' + id: QuarterTileOverlayGreyscale270 + coordinates: 3,3 + 1305: + color: '#D381C996' + id: QuarterTileOverlayGreyscale270 + coordinates: 4,3 + 1296: + color: '#D381C996' + id: QuarterTileOverlayGreyscale270 + coordinates: 13,3 + 1295: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 4,4 + 1297: + color: '#D381C996' + id: QuarterTileOverlayGreyscale270 + coordinates: 12,3 + 1298: + color: '#D381C996' + id: QuarterTileOverlayGreyscale270 + coordinates: 11,3 + 1300: + color: '#D381C996' + id: QuarterTileOverlayGreyscale270 + coordinates: 9,3 + 1299: + color: '#D381C996' + id: QuarterTileOverlayGreyscale270 + coordinates: 10,3 + 1301: + color: '#D381C996' + id: QuarterTileOverlayGreyscale270 + coordinates: 7,3 + 1302: + color: '#D381C996' + id: QuarterTileOverlayGreyscale270 + coordinates: 8,3 + 1303: + color: '#D381C996' + id: QuarterTileOverlayGreyscale270 + coordinates: 6,3 + 1320: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 2,1 + 1321: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 2,2 + 1322: + color: '#D381C996' + id: BrickTileSteelLineS + coordinates: 21,6 + 1323: + color: '#D381C996' + id: BrickTileSteelLineS + coordinates: 20,6 + 1324: + color: '#D381C996' + id: BrickTileSteelLineS + coordinates: 18,6 + 1325: + color: '#D381C996' + id: BrickTileSteelLineS + coordinates: 19,6 + 1326: + color: '#D381C996' + id: BrickTileSteelLineS + coordinates: 17,6 + 1327: + color: '#D381C996' + id: BrickTileSteelLineS + coordinates: 16,6 + 1328: + color: '#D381C996' + id: BrickTileSteelLineS + coordinates: 15,6 + 1329: + color: '#D381C996' + id: BrickTileSteelLineS + coordinates: 14,6 + 1330: + color: '#D381C996' + id: BrickTileSteelLineS + coordinates: 13,6 + 1331: + color: '#D381C996' + id: BrickTileSteelLineN + coordinates: 21,10 + 1332: + color: '#D381C996' + id: BrickTileSteelLineN + coordinates: 20,10 + 1333: + color: '#D381C996' + id: BrickTileSteelLineN + coordinates: 18,10 + 1334: + color: '#D381C996' + id: BrickTileSteelLineN + coordinates: 19,10 + 1335: + color: '#D381C996' + id: BrickTileSteelLineN + coordinates: 17,10 + 1336: + color: '#D381C996' + id: BrickTileSteelLineN + coordinates: 16,10 + 1337: + color: '#D381C996' + id: BrickTileSteelLineN + coordinates: 15,10 + 1338: + color: '#D381C996' + id: BrickTileSteelLineN + coordinates: 13,10 + 1339: + color: '#D381C996' + id: BrickTileSteelLineN + coordinates: 14,10 + 1340: + color: '#D381C996' + id: BrickTileSteelLineE + coordinates: 22,7 + 1341: + color: '#D381C996' + id: BrickTileSteelLineE + coordinates: 22,8 + 1342: + color: '#D381C996' + id: BrickTileSteelLineE + coordinates: 22,9 + 1343: + color: '#D381C996' + id: BrickTileSteelLineW + coordinates: 12,7 + 1344: + color: '#D381C996' + id: BrickTileSteelLineW + coordinates: 12,8 + 1345: + color: '#D381C996' + id: BrickTileSteelLineW + coordinates: 12,9 + 1346: + color: '#D381C996' + id: BrickTileSteelCornerSw + coordinates: 12,6 + 1347: + color: '#D381C996' + id: BrickTileSteelCornerSe + coordinates: 22,6 + 1348: + color: '#D381C996' + id: BrickTileSteelCornerNe + coordinates: 22,10 + 1349: + color: '#D381C996' + id: BrickTileSteelCornerNw + coordinates: 12,10 + 1350: + color: '#FFFFFFFF' + id: BrickTileSteelLineN + coordinates: 21,6 + 1351: + color: '#FFFFFFFF' + id: BrickTileSteelLineN + coordinates: 20,6 + 1352: + color: '#FFFFFFFF' + id: BrickTileSteelLineN + coordinates: 19,6 + 1353: + color: '#FFFFFFFF' + id: BrickTileSteelLineN + coordinates: 17,6 + 1354: + color: '#FFFFFFFF' + id: BrickTileSteelLineN + coordinates: 18,6 + 1355: + color: '#FFFFFFFF' + id: BrickTileSteelLineN + coordinates: 16,6 + 1356: + color: '#FFFFFFFF' + id: BrickTileSteelLineN + coordinates: 15,6 + 1357: + color: '#FFFFFFFF' + id: BrickTileSteelLineN + coordinates: 14,6 + 1358: + color: '#FFFFFFFF' + id: BrickTileSteelLineN + coordinates: 13,6 + 1359: + color: '#FFFFFFFF' + id: BrickTileSteelLineS + coordinates: 21,10 + 1360: + color: '#FFFFFFFF' + id: BrickTileSteelLineS + coordinates: 20,10 + 1361: + color: '#FFFFFFFF' + id: BrickTileSteelLineS + coordinates: 19,10 + 1362: + color: '#FFFFFFFF' + id: BrickTileSteelLineS + coordinates: 18,10 + 1363: + color: '#FFFFFFFF' + id: BrickTileSteelLineS + coordinates: 17,10 + 1364: + color: '#FFFFFFFF' + id: BrickTileSteelLineS + coordinates: 16,10 + 1365: + color: '#FFFFFFFF' + id: BrickTileSteelLineS + coordinates: 15,10 + 1366: + color: '#FFFFFFFF' + id: BrickTileSteelLineS + coordinates: 14,10 + 1367: + color: '#FFFFFFFF' + id: BrickTileSteelLineS + coordinates: 13,10 + 1368: + color: '#9FED5896' + id: FullTileOverlayGreyscale + coordinates: 21,7 + 1369: + color: '#9FED5896' + id: FullTileOverlayGreyscale + coordinates: 21,8 + 1370: + color: '#9FED5896' + id: FullTileOverlayGreyscale + coordinates: 21,9 + 1371: + color: '#9FED5896' + id: FullTileOverlayGreyscale + coordinates: 19,7 + 1372: + color: '#9FED5896' + id: FullTileOverlayGreyscale + coordinates: 19,8 + 1373: + color: '#9FED5896' + id: FullTileOverlayGreyscale + coordinates: 19,9 + 1374: + color: '#9FED5896' + id: FullTileOverlayGreyscale + coordinates: 15,7 + 1375: + color: '#9FED5896' + id: FullTileOverlayGreyscale + coordinates: 15,8 + 1376: + color: '#9FED5896' + id: FullTileOverlayGreyscale + coordinates: 15,9 + 1377: + color: '#9FED5896' + id: FullTileOverlayGreyscale + coordinates: 13,7 + 1378: + color: '#9FED5896' + id: FullTileOverlayGreyscale + coordinates: 13,8 + 1379: + color: '#9FED5896' + id: FullTileOverlayGreyscale + coordinates: 13,9 + 1380: + color: '#9FED5896' + id: BrickTileWhiteLineS + coordinates: 21,10 + 1381: + color: '#9FED5896' + id: BrickTileWhiteLineS + coordinates: 19,10 + 1382: + color: '#9FED5896' + id: BrickTileWhiteLineS + coordinates: 15,10 + 1383: + color: '#9FED5896' + id: BrickTileWhiteLineS + coordinates: 13,10 + 1384: + color: '#9FED5896' + id: BrickTileWhiteLineN + coordinates: 21,6 + 1385: + color: '#9FED5896' + id: BrickTileWhiteLineN + coordinates: 19,6 + 1386: + color: '#9FED5896' + id: BrickTileWhiteLineN + coordinates: 13,6 + 1387: + color: '#9FED5896' + id: BrickTileWhiteLineN + coordinates: 15,6 + 1388: + color: '#FFFFFFFF' + id: HalfTileOverlayGreyscale + coordinates: 26,2 + 1389: + color: '#FFFFFFFF' + id: HalfTileOverlayGreyscale + coordinates: 30,2 + 1390: + color: '#FFFFFFFF' + id: HalfTileOverlayGreyscale + coordinates: 22,2 + 1429: + color: '#D381C996' + id: BrickTileWhiteLineE + coordinates: 18,2 + 1394: + color: '#D381C996' + id: HalfTileOverlayGreyscale + coordinates: 30,2 + 1395: + color: '#D381C996' + id: HalfTileOverlayGreyscale + coordinates: 26,2 + 1396: + color: '#D381C996' + id: HalfTileOverlayGreyscale + coordinates: 22,2 + 1428: + color: '#D381C996' + id: BrickTileWhiteLineE + coordinates: 18,1 + 1427: + color: '#D381C996' + id: BrickTileWhiteLineE + coordinates: 18,0 + 1399: + color: '#D381C996' + id: HalfTileOverlayGreyscale180 + coordinates: 19,3 + 1400: + color: '#D381C996' + id: HalfTileOverlayGreyscale180 + coordinates: 20,3 + 1401: + color: '#D381C996' + id: HalfTileOverlayGreyscale180 + coordinates: 21,3 + 1402: + color: '#D381C996' + id: HalfTileOverlayGreyscale180 + coordinates: 22,3 + 1403: + color: '#D381C996' + id: HalfTileOverlayGreyscale180 + coordinates: 23,3 + 1404: + color: '#D381C996' + id: HalfTileOverlayGreyscale180 + coordinates: 24,3 + 1405: + color: '#D381C996' + id: HalfTileOverlayGreyscale180 + coordinates: 26,3 + 1406: + color: '#D381C996' + id: HalfTileOverlayGreyscale180 + coordinates: 25,3 + 1407: + color: '#D381C996' + id: HalfTileOverlayGreyscale180 + coordinates: 27,3 + 1408: + color: '#D381C996' + id: HalfTileOverlayGreyscale180 + coordinates: 28,3 + 1409: + color: '#D381C996' + id: HalfTileOverlayGreyscale180 + coordinates: 29,3 + 1410: + color: '#D381C996' + id: HalfTileOverlayGreyscale180 + coordinates: 30,3 + 1411: + color: '#D381C996' + id: HalfTileOverlayGreyscale180 + coordinates: 31,3 + 1416: + color: '#FFFFFFFF' + id: Delivery + coordinates: 28,2 + 1417: + color: '#FFFFFFFF' + id: Delivery + coordinates: 24,2 + 1418: + color: '#FFFFFFFF' + id: Delivery + coordinates: 20,2 + 1419: + color: '#FFFFFFFF' + id: WarnCornerNE + coordinates: 21,2 + 1420: + color: '#FFFFFFFF' + id: WarnCornerNE + coordinates: 25,2 + 1421: + color: '#FFFFFFFF' + id: WarnCornerNE + coordinates: 29,2 + 1423: + color: '#FFFFFFFF' + id: WarnCornerNW + coordinates: 31,2 + 1424: + color: '#FFFFFFFF' + id: WarnCornerNW + coordinates: 27,2 + 1425: + color: '#FFFFFFFF' + id: WarnCornerNW + coordinates: 23,2 + 1426: + color: '#FFFFFFFF' + id: WarnCornerNW + coordinates: 19,2 + 1430: + color: '#D381C996' + id: BrickTileWhiteLineE + coordinates: 18,4 + 1436: + color: '#D381C996' + id: WarnLineGreyscaleE + coordinates: 18,3 + 1437: + color: '#D381C996' + id: HalfTileOverlayGreyscale + coordinates: 27,4 + 1438: + color: '#D381C996' + id: HalfTileOverlayGreyscale + coordinates: 28,4 + 1439: + color: '#D381C996' + id: HalfTileOverlayGreyscale + coordinates: 25,4 + 1440: + color: '#D381C996' + id: HalfTileOverlayGreyscale + coordinates: 24,4 + 1441: + color: '#D381C996' + id: HalfTileOverlayGreyscale + coordinates: 29,4 + 1442: + color: '#D381C996' + id: HalfTileOverlayGreyscale + coordinates: 30,4 + 1443: + color: '#D381C996' + id: HalfTileOverlayGreyscale + coordinates: 31,4 + 1445: + color: '#D381C996' + id: HalfTileOverlayGreyscale + coordinates: 23,4 + 1446: + color: '#D381C996' + id: HalfTileOverlayGreyscale + coordinates: 22,4 + 1447: + color: '#D381C996' + id: HalfTileOverlayGreyscale + coordinates: 21,4 + 1448: + color: '#D381C996' + id: HalfTileOverlayGreyscale + coordinates: 20,4 + 1449: + color: '#D381C996' + id: WarnLineGreyscaleN + coordinates: 26,4 + 1452: + color: '#FFFFFFFF' + id: Delivery + coordinates: 25,7 + 1453: + color: '#FFFFFFFF' + id: Delivery + coordinates: 25,9 + 1454: + color: '#EFB34196' + id: BrickTileWhiteLineN + coordinates: 31,9 + 1457: + color: '#EFB34196' + id: BrickTileWhiteLineS + coordinates: 31,7 + 1458: + color: '#EFB34196' + id: BrickTileWhiteLineS + coordinates: 27,7 + 1459: + color: '#EFB34196' + id: BrickTileWhiteLineS + coordinates: 26,7 + 1460: + color: '#EFB34196' + id: BrickTileWhiteLineN + coordinates: 27,9 + 1461: + color: '#EFB34196' + id: BrickTileWhiteLineN + coordinates: 26,9 + 1501: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale + coordinates: 27,15 + 1502: + color: '#52B4E996' + id: HalfTileOverlayGreyscale + coordinates: 26,15 + 1504: + color: '#52B4E996' + id: HalfTileOverlayGreyscale + coordinates: 29,16 + 1503: + color: '#52B4E996' + id: HalfTileOverlayGreyscale + coordinates: 28,16 + 1505: + color: '#52B4E996' + id: HalfTileOverlayGreyscale90 + coordinates: 30,15 + 1521: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 24,14 + 1506: + color: '#52B4E996' + id: HalfTileOverlayGreyscale180 + coordinates: 28,13 + 1520: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 30,15 + 1519: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 30,14 + 1491: + color: '#52B4E996' + id: ThreeQuarterTileOverlayGreyscale + coordinates: 25,15 + 1492: + color: '#52B4E996' + id: ThreeQuarterTileOverlayGreyscale + coordinates: 24,14 + 1493: + color: '#52B4E996' + id: ThreeQuarterTileOverlayGreyscale + coordinates: 27,16 + 1495: + color: '#52B4E996' + id: ThreeQuarterTileOverlayGreyscale180 + coordinates: 27,12 + 1494: + color: '#52B4E996' + id: ThreeQuarterTileOverlayGreyscale90 + coordinates: 30,16 + 1496: + color: '#52B4E996' + id: ThreeQuarterTileOverlayGreyscale180 + coordinates: 29,13 + 1497: + color: '#52B4E996' + id: ThreeQuarterTileOverlayGreyscale180 + coordinates: 30,14 + 1498: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale180 + coordinates: 27,13 + 1499: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale180 + coordinates: 29,14 + 1500: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale + coordinates: 25,14 + 1518: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 27,12 + 1510: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 25,15 + 1511: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 26,15 + 1512: + color: '#FFFFFFFF' + id: WarnLineS + coordinates: 27,16 + 1513: + color: '#FFFFFFFF' + id: WarnCornerSmallNW + coordinates: 27,15 + 1514: + color: '#FFFFFFFF' + id: WarnLineN + coordinates: 29,13 + 1515: + color: '#FFFFFFFF' + id: WarnLineN + coordinates: 28,13 + 1516: + color: '#FFFFFFFF' + id: WarnLineE + coordinates: 27,12 + 1517: + color: '#FFFFFFFF' + id: WarnCornerSmallSE + coordinates: 27,13 + 1522: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 27,16 + 1523: + cleanable: True + color: '#FFFFFFFF' + id: DirtMedium + coordinates: 27,15 + 1524: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 28,15 + 1525: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 27,14 + 1526: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 25,15 + 1530: + color: '#FFFFFFFF' + id: WarnCornerNE + coordinates: 26,13 + 1528: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 25,13 + 1529: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 24,13 + 1531: + color: '#FFFFFFFF' + id: WarnLineE + coordinates: 26,12 + 1,0: + 816: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 39,30 + 817: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 38,30 + 818: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 37,30 + 819: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 36,30 + 820: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 35,30 + 821: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 34,30 + 822: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 33,30 + 823: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 32,30 + 827: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerSe + coordinates: 40,30 + 831: + color: '#FFFFFFFF' + id: BrickTileWhiteLineE + coordinates: 40,31 + 833: + color: '#D381C996' + id: BrickTileWhiteLineN + coordinates: 38,30 + 834: + color: '#D381C996' + id: BrickTileWhiteLineN + coordinates: 37,30 + 835: + color: '#D381C996' + id: BrickTileWhiteLineN + coordinates: 36,30 + 836: + color: '#D381C996' + id: BrickTileWhiteLineN + coordinates: 35,30 + 837: + color: '#D381C996' + id: BrickTileWhiteLineN + coordinates: 34,30 + 838: + color: '#D381C996' + id: BrickTileWhiteLineN + coordinates: 33,30 + 839: + color: '#D381C996' + id: BrickTileWhiteLineN + coordinates: 32,30 + 851: + color: '#D381C996' + id: BrickTileWhiteLineW + coordinates: 39,31 + 854: + color: '#D381C996' + id: BrickTileWhiteInnerNw + coordinates: 39,30 + 1034: + color: '#D381C996' + id: HalfTileOverlayGreyscale + coordinates: 34,20 + 1035: + color: '#D381C996' + id: HalfTileOverlayGreyscale + coordinates: 33,20 + 1036: + color: '#D381C996' + id: HalfTileOverlayGreyscale90 + coordinates: 32,21 + 1037: + color: '#D381C996' + id: HalfTileOverlayGreyscale90 + coordinates: 32,22 + 1038: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + coordinates: 32,20 + 1039: + color: '#FFFFFFFF' + id: Delivery + coordinates: 34,18 + 1040: + color: '#FFFFFFFF' + id: Delivery + coordinates: 33,18 + 1054: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 34,19 + 1055: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 32,18 + 1056: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 32,22 + 1151: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerSe + coordinates: 38,0 + 1152: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerSe + coordinates: 54,0 + 1155: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerNw + coordinates: 36,4 + 1154: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerNw + coordinates: 52,4 + 1156: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerNe + coordinates: 38,4 + 1157: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerSw + coordinates: 36,0 + 1158: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerSw + coordinates: 52,0 + 1159: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerNe + coordinates: 54,4 + 1160: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 53,4 + 1161: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 37,4 + 1162: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 37,0 + 1163: + color: '#FFFFFFFF' + id: BrickTileWhiteLineE + coordinates: 38,1 + 1195: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 52,2 + 1165: + color: '#FFFFFFFF' + id: BrickTileWhiteLineE + coordinates: 38,3 + 1166: + color: '#FFFFFFFF' + id: BrickTileWhiteLineE + coordinates: 54,1 + 1167: + color: '#FFFFFFFF' + id: BrickTileWhiteLineE + coordinates: 54,2 + 1168: + color: '#FFFFFFFF' + id: BrickTileWhiteLineE + coordinates: 54,3 + 1169: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 53,0 + 1170: + color: '#FFFFFFFF' + id: BrickTileWhiteLineW + coordinates: 52,1 + 1197: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 50,2 + 1172: + color: '#FFFFFFFF' + id: BrickTileWhiteLineW + coordinates: 52,3 + 1173: + color: '#FFFFFFFF' + id: BrickTileWhiteLineW + coordinates: 36,1 + 1174: + color: '#FFFFFFFF' + id: BrickTileWhiteLineW + coordinates: 36,2 + 1175: + color: '#FFFFFFFF' + id: BrickTileWhiteLineW + coordinates: 36,3 + 1176: + color: '#D381C996' + id: CheckerNWSE + coordinates: 37,1 + 1177: + color: '#D381C996' + id: CheckerNWSE + coordinates: 37,2 + 1178: + color: '#D381C996' + id: CheckerNWSE + coordinates: 37,3 + 1179: + color: '#D381C996' + id: CheckerNWSE + coordinates: 53,1 + 1180: + color: '#D381C996' + id: CheckerNWSE + coordinates: 53,2 + 1181: + color: '#D381C996' + id: CheckerNWSE + coordinates: 53,3 + 1182: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 38,1 + 1194: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 38,2 + 1184: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 38,3 + 1185: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 36,1 + 1186: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 36,2 + 1187: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 36,3 + 1188: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 52,1 + 1196: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 51,2 + 1190: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + coordinates: 52,3 + 1191: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 54,1 + 1192: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 54,2 + 1193: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + coordinates: 54,3 + 1198: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 48,2 + 1199: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 47,2 + 1200: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 46,2 + 1201: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 44,2 + 1202: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 42,2 + 1203: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 43,2 + 1204: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 40,2 + 1205: + color: '#FFFFFFFF' + id: BrickTileWhiteLineN + coordinates: 39,2 + 1206: + color: '#FFFFFFFF' + id: BrickTileWhiteInnerNw + coordinates: 52,2 + 1207: + color: '#FFFFFFFF' + id: BrickTileWhiteInnerNe + coordinates: 38,2 + 1208: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerSe + coordinates: 46,0 + 1209: + color: '#FFFFFFFF' + id: BrickTileWhiteCornerSw + coordinates: 44,0 + 1210: + color: '#FFFFFFFF' + id: BrickTileWhiteLineS + coordinates: 45,0 + 1211: + color: '#FFFFFFFF' + id: BrickTileWhiteLineE + coordinates: 46,1 + 1212: + color: '#FFFFFFFF' + id: BrickTileWhiteLineW + coordinates: 44,1 + 1433: + color: '#D381C996' + id: BrickTileWhiteLineW + coordinates: 34,2 + 1432: + color: '#D381C996' + id: BrickTileWhiteLineW + coordinates: 34,1 + 1412: + color: '#D381C996' + id: HalfTileOverlayGreyscale180 + coordinates: 32,3 + 1413: + color: '#D381C996' + id: HalfTileOverlayGreyscale180 + coordinates: 33,3 + 1431: + color: '#D381C996' + id: BrickTileWhiteLineW + coordinates: 34,0 + 1415: + color: '#FFFFFFFF' + id: Delivery + coordinates: 32,2 + 1422: + color: '#FFFFFFFF' + id: WarnCornerNE + coordinates: 33,2 + 1434: + color: '#D381C996' + id: BrickTileWhiteLineW + coordinates: 34,4 + 1435: + color: '#D381C996' + id: WarnLineGreyscaleW + coordinates: 34,3 + 1444: + color: '#D381C996' + id: HalfTileOverlayGreyscale + coordinates: 32,4 + 1450: + color: '#FFFFFFFF' + id: Delivery + coordinates: 33,7 + 1451: + color: '#FFFFFFFF' + id: Delivery + coordinates: 33,9 + 1455: + color: '#EFB34196' + id: BrickTileWhiteLineN + coordinates: 32,9 + 1456: + color: '#EFB34196' + id: BrickTileWhiteLineS + coordinates: 32,7 + 1540: + color: '#FFFFFFFF' + id: BrickTileSteelLineW + coordinates: 37,15 + 1538: + color: '#FFFFFFFF' + id: BrickTileSteelLineN + coordinates: 36,13 + 1539: + color: '#FFFFFFFF' + id: BrickTileSteelLineW + coordinates: 37,14 + 1533: + color: '#FFFFFFFF' + id: BrickTileSteelCornerNw + coordinates: 37,16 + 1532: + color: '#FFFFFFFF' + id: BrickTileSteelCornerNw + coordinates: 35,13 + 1534: + color: '#FFFFFFFF' + id: BrickTileSteelCornerNe + coordinates: 38,16 + 1535: + color: '#FFFFFFFF' + id: BrickTileSteelCornerSe + coordinates: 38,12 + 1536: + color: '#FFFFFFFF' + id: BrickTileSteelCornerSw + coordinates: 35,12 + 1537: + color: '#FFFFFFFF' + id: BrickTileSteelInnerNw + coordinates: 37,13 + 1541: + color: '#FFFFFFFF' + id: BrickTileSteelLineE + coordinates: 38,13 + 1542: + color: '#FFFFFFFF' + id: BrickTileSteelLineE + coordinates: 38,14 + 1543: + color: '#FFFFFFFF' + id: BrickTileSteelLineE + coordinates: 38,15 + 1544: + color: '#FFFFFFFF' + id: BrickTileSteelLineS + coordinates: 37,12 + 1545: + color: '#FFFFFFFF' + id: BrickTileSteelLineS + coordinates: 36,12 + 1546: + color: '#D381C996' + id: BrickTileWhiteLineN + coordinates: 33,16 + 1547: + color: '#D381C996' + id: BrickTileWhiteLineN + coordinates: 32,16 + 1548: + color: '#D381C996' + id: BrickTileWhiteLineS + coordinates: 32,14 + 1549: + color: '#D381C996' + id: BrickTileWhiteLineS + coordinates: 33,14 + 1550: + cleanable: True + color: '#FFFFFFFF' + id: DirtMedium + coordinates: 34,13 + 1551: + cleanable: True + color: '#FFFFFFFF' + id: DirtMedium + coordinates: 33,15 + 1552: + cleanable: True + color: '#FFFFFFFF' + id: DirtMedium + coordinates: 34,12 + 1553: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 33,12 + 1554: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 34,14 + 1555: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 35,12 + 1556: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 33,15 + 1557: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 34,15 + 1558: + cleanable: True + color: '#FFFFFFFF' + id: DirtLight + coordinates: 38,12 + 1559: + cleanable: True + color: '#FFFFFFFF' + id: Dirt + coordinates: 44,12 + 1560: + cleanable: True + color: '#FFFFFFFF' + id: Dirt + coordinates: 44,15 + 1561: + cleanable: True + color: '#FFFFFFFF' + id: Dirt + coordinates: 42,16 + 1562: + cleanable: True + color: '#FFFFFFFF' + id: Dirt + coordinates: 46,14 + 1563: + color: '#FFFFFFFF' + id: Delivery + coordinates: 40,16 + 1564: + color: '#FFFFFFFF' + id: Delivery + coordinates: 41,15 + 1565: + color: '#FFFFFFFF' + id: Delivery + coordinates: 43,16 + 1566: + color: '#FFFFFFFF' + id: Arrows + coordinates: 41,14 + 1567: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 45,13 + 1568: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 46,13 + 1569: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 44,13 + 1570: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 43,13 + 1571: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 42,13 + 1572: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 41,13 + 1573: + color: '#FFFFFFFF' + id: WarnLineW + coordinates: 40,13 + type: DecalGrid + - type: RadiationGridResistance +- uid: 1 + type: CableApcExtension + components: + - pos: 0.5,39.5 + parent: 0 + type: Transform +- uid: 2 + type: CableApcExtension + components: + - pos: 1.5,39.5 + parent: 0 + type: Transform +- uid: 3 + type: CableApcExtension + components: + - pos: 2.5,39.5 + parent: 0 + type: Transform +- uid: 4 + type: CableApcExtension + components: + - pos: 3.5,39.5 + parent: 0 + type: Transform +- uid: 5 + type: CableApcExtension + components: + - pos: 4.5,39.5 + parent: 0 + type: Transform +- uid: 6 + type: CableApcExtension + components: + - pos: 5.5,39.5 + parent: 0 + type: Transform +- uid: 7 + type: CableApcExtension + components: + - pos: 6.5,39.5 + parent: 0 + type: Transform +- uid: 8 + type: CableApcExtension + components: + - pos: 8.5,39.5 + parent: 0 + type: Transform +- uid: 9 + type: CableApcExtension + components: + - pos: 9.5,39.5 + parent: 0 + type: Transform +- uid: 10 + type: CableApcExtension + components: + - pos: 10.5,39.5 + parent: 0 + type: Transform +- uid: 11 + type: CableApcExtension + components: + - pos: 11.5,39.5 + parent: 0 + type: Transform +- uid: 12 + type: CableApcExtension + components: + - pos: 12.5,39.5 + parent: 0 + type: Transform +- uid: 13 + type: CableApcExtension + components: + - pos: 13.5,39.5 + parent: 0 + type: Transform +- uid: 14 + type: CableApcExtension + components: + - pos: 14.5,39.5 + parent: 0 + type: Transform +- uid: 15 + type: CableApcExtension + components: + - pos: 16.5,39.5 + parent: 0 + type: Transform +- uid: 16 + type: CableApcExtension + components: + - pos: 17.5,39.5 + parent: 0 + type: Transform +- uid: 17 + type: CableApcExtension + components: + - pos: 18.5,39.5 + parent: 0 + type: Transform +- uid: 18 + type: CableApcExtension + components: + - pos: 19.5,39.5 + parent: 0 + type: Transform +- uid: 19 + type: CableApcExtension + components: + - pos: 20.5,39.5 + parent: 0 + type: Transform +- uid: 20 + type: CableApcExtension + components: + - pos: 21.5,39.5 + parent: 0 + type: Transform +- uid: 21 + type: CableApcExtension + components: + - pos: 22.5,39.5 + parent: 0 + type: Transform +- uid: 22 + type: CableApcExtension + components: + - pos: 24.5,39.5 + parent: 0 + type: Transform +- uid: 23 + type: CableApcExtension + components: + - pos: 25.5,39.5 + parent: 0 + type: Transform +- uid: 24 + type: CableApcExtension + components: + - pos: 26.5,39.5 + parent: 0 + type: Transform +- uid: 25 + type: CableApcExtension + components: + - pos: 27.5,39.5 + parent: 0 + type: Transform +- uid: 26 + type: CableApcExtension + components: + - pos: 28.5,39.5 + parent: 0 + type: Transform +- uid: 27 + type: CableApcExtension + components: + - pos: 29.5,39.5 + parent: 0 + type: Transform +- uid: 28 + type: CableApcExtension + components: + - pos: 30.5,39.5 + parent: 0 + type: Transform +- uid: 29 + type: CableApcExtension + components: + - pos: 32.5,39.5 + parent: 0 + type: Transform +- uid: 30 + type: CableApcExtension + components: + - pos: 33.5,39.5 + parent: 0 + type: Transform +- uid: 31 + type: CableApcExtension + components: + - pos: 34.5,39.5 + parent: 0 + type: Transform +- uid: 32 + type: CableApcExtension + components: + - pos: 35.5,39.5 + parent: 0 + type: Transform +- uid: 33 + type: CableApcExtension + components: + - pos: 36.5,39.5 + parent: 0 + type: Transform +- uid: 34 + type: CableApcExtension + components: + - pos: 37.5,39.5 + parent: 0 + type: Transform +- uid: 35 + type: CableApcExtension + components: + - pos: 38.5,39.5 + parent: 0 + type: Transform +- uid: 36 + type: CableApcExtension + components: + - pos: 40.5,39.5 + parent: 0 + type: Transform +- uid: 37 + type: CableApcExtension + components: + - pos: 41.5,39.5 + parent: 0 + type: Transform +- uid: 38 + type: CableApcExtension + components: + - pos: 42.5,39.5 + parent: 0 + type: Transform +- uid: 39 + type: CableApcExtension + components: + - pos: 43.5,39.5 + parent: 0 + type: Transform +- uid: 40 + type: CableApcExtension + components: + - pos: 44.5,39.5 + parent: 0 + type: Transform +- uid: 41 + type: CableApcExtension + components: + - pos: 45.5,39.5 + parent: 0 + type: Transform +- uid: 42 + type: CableApcExtension + components: + - pos: 46.5,39.5 + parent: 0 + type: Transform +- uid: 43 + type: CableApcExtension + components: + - pos: 34.5,35.5 + parent: 0 + type: Transform +- uid: 44 + type: CableApcExtension + components: + - pos: 33.5,35.5 + parent: 0 + type: Transform +- uid: 45 + type: CableApcExtension + components: + - pos: 32.5,35.5 + parent: 0 + type: Transform +- uid: 46 + type: CableApcExtension + components: + - pos: 31.5,35.5 + parent: 0 + type: Transform +- uid: 47 + type: CableApcExtension + components: + - pos: 30.5,35.5 + parent: 0 + type: Transform +- uid: 48 + type: CableApcExtension + components: + - pos: 29.5,35.5 + parent: 0 + type: Transform +- uid: 49 + type: CableApcExtension + components: + - pos: 28.5,35.5 + parent: 0 + type: Transform +- uid: 50 + type: CableApcExtension + components: + - pos: 27.5,35.5 + parent: 0 + type: Transform +- uid: 51 + type: CableApcExtension + components: + - pos: 26.5,35.5 + parent: 0 + type: Transform +- uid: 52 + type: CableApcExtension + components: + - pos: 25.5,35.5 + parent: 0 + type: Transform +- uid: 53 + type: CableApcExtension + components: + - pos: 24.5,35.5 + parent: 0 + type: Transform +- uid: 54 + type: CableApcExtension + components: + - pos: 22.5,35.5 + parent: 0 + type: Transform +- uid: 55 + type: CableApcExtension + components: + - pos: 21.5,35.5 + parent: 0 + type: Transform +- uid: 56 + type: CableApcExtension + components: + - pos: 20.5,35.5 + parent: 0 + type: Transform +- uid: 57 + type: CableApcExtension + components: + - pos: 19.5,35.5 + parent: 0 + type: Transform +- uid: 58 + type: CableApcExtension + components: + - pos: 18.5,35.5 + parent: 0 + type: Transform +- uid: 59 + type: CableApcExtension + components: + - pos: 17.5,35.5 + parent: 0 + type: Transform +- uid: 60 + type: CableApcExtension + components: + - pos: 16.5,35.5 + parent: 0 + type: Transform +- uid: 61 + type: CableApcExtension + components: + - pos: 15.5,35.5 + parent: 0 + type: Transform +- uid: 62 + type: CableApcExtension + components: + - pos: 14.5,35.5 + parent: 0 + type: Transform +- uid: 63 + type: CableApcExtension + components: + - pos: 13.5,35.5 + parent: 0 + type: Transform +- uid: 64 + type: CableApcExtension + components: + - pos: 12.5,35.5 + parent: 0 + type: Transform +- uid: 65 + type: CableApcExtension + components: + - pos: 10.5,35.5 + parent: 0 + type: Transform +- uid: 66 + type: CableApcExtension + components: + - pos: 9.5,35.5 + parent: 0 + type: Transform +- uid: 67 + type: CableApcExtension + components: + - pos: 8.5,35.5 + parent: 0 + type: Transform +- uid: 68 + type: CableApcExtension + components: + - pos: 7.5,35.5 + parent: 0 + type: Transform +- uid: 69 + type: CableApcExtension + components: + - pos: 6.5,35.5 + parent: 0 + type: Transform +- uid: 70 + type: CableApcExtension + components: + - pos: 5.5,35.5 + parent: 0 + type: Transform +- uid: 71 + type: CableApcExtension + components: + - pos: 4.5,35.5 + parent: 0 + type: Transform +- uid: 72 + type: CableApcExtension + components: + - pos: 3.5,35.5 + parent: 0 + type: Transform +- uid: 73 + type: CableApcExtension + components: + - pos: 2.5,35.5 + parent: 0 + type: Transform +- uid: 74 + type: CableApcExtension + components: + - pos: 1.5,35.5 + parent: 0 + type: Transform +- uid: 75 + type: CableApcExtension + components: + - pos: 0.5,35.5 + parent: 0 + type: Transform +- uid: 76 + type: CableApcExtension + components: + - pos: 3.5,42.5 + parent: 0 + type: Transform +- uid: 77 + type: CableApcExtension + components: + - pos: 3.5,43.5 + parent: 0 + type: Transform +- uid: 78 + type: CableApcExtension + components: + - pos: 3.5,44.5 + parent: 0 + type: Transform +- uid: 79 + type: CableApcExtension + components: + - pos: 3.5,45.5 + parent: 0 + type: Transform +- uid: 80 + type: CableApcExtension + components: + - pos: 3.5,46.5 + parent: 0 + type: Transform +- uid: 81 + type: CableApcExtension + components: + - pos: 3.5,47.5 + parent: 0 + type: Transform +- uid: 82 + type: CableApcExtension + components: + - pos: 3.5,48.5 + parent: 0 + type: Transform +- uid: 83 + type: CableApcExtension + components: + - pos: 0.5,45.5 + parent: 0 + type: Transform +- uid: 84 + type: CableApcExtension + components: + - pos: 1.5,45.5 + parent: 0 + type: Transform +- uid: 85 + type: CableApcExtension + components: + - pos: 2.5,45.5 + parent: 0 + type: Transform +- uid: 86 + type: CableApcExtension + components: + - pos: 4.5,45.5 + parent: 0 + type: Transform +- uid: 87 + type: CableApcExtension + components: + - pos: 5.5,45.5 + parent: 0 + type: Transform +- uid: 88 + type: CableApcExtension + components: + - pos: 6.5,45.5 + parent: 0 + type: Transform +- uid: 89 + type: CableApcExtension + components: + - pos: 8.5,45.5 + parent: 0 + type: Transform +- uid: 90 + type: CableApcExtension + components: + - pos: 9.5,45.5 + parent: 0 + type: Transform +- uid: 91 + type: CableApcExtension + components: + - pos: 10.5,45.5 + parent: 0 + type: Transform +- uid: 92 + type: CableApcExtension + components: + - pos: 11.5,45.5 + parent: 0 + type: Transform +- uid: 93 + type: CableApcExtension + components: + - pos: 12.5,45.5 + parent: 0 + type: Transform +- uid: 94 + type: CableApcExtension + components: + - pos: 13.5,45.5 + parent: 0 + type: Transform +- uid: 95 + type: CableApcExtension + components: + - pos: 14.5,45.5 + parent: 0 + type: Transform +- uid: 96 + type: CableApcExtension + components: + - pos: 11.5,42.5 + parent: 0 + type: Transform +- uid: 97 + type: CableApcExtension + components: + - pos: 11.5,43.5 + parent: 0 + type: Transform +- uid: 98 + type: CableApcExtension + components: + - pos: 11.5,44.5 + parent: 0 + type: Transform +- uid: 99 + type: CableApcExtension + components: + - pos: 11.5,46.5 + parent: 0 + type: Transform +- uid: 100 + type: CableApcExtension + components: + - pos: 11.5,47.5 + parent: 0 + type: Transform +- uid: 101 + type: CableApcExtension + components: + - pos: 11.5,48.5 + parent: 0 + type: Transform +- uid: 102 + type: CableApcExtension + components: + - pos: 16.5,45.5 + parent: 0 + type: Transform +- uid: 103 + type: CableApcExtension + components: + - pos: 17.5,45.5 + parent: 0 + type: Transform +- uid: 104 + type: CableApcExtension + components: + - pos: 18.5,45.5 + parent: 0 + type: Transform +- uid: 105 + type: CableApcExtension + components: + - pos: 19.5,45.5 + parent: 0 + type: Transform +- uid: 106 + type: CableApcExtension + components: + - pos: 20.5,45.5 + parent: 0 + type: Transform +- uid: 107 + type: CableApcExtension + components: + - pos: 21.5,45.5 + parent: 0 + type: Transform +- uid: 108 + type: CableApcExtension + components: + - pos: 22.5,45.5 + parent: 0 + type: Transform +- uid: 109 + type: CableApcExtension + components: + - pos: 19.5,42.5 + parent: 0 + type: Transform +- uid: 110 + type: CableApcExtension + components: + - pos: 19.5,43.5 + parent: 0 + type: Transform +- uid: 111 + type: CableApcExtension + components: + - pos: 19.5,44.5 + parent: 0 + type: Transform +- uid: 112 + type: CableApcExtension + components: + - pos: 19.5,46.5 + parent: 0 + type: Transform +- uid: 113 + type: CableApcExtension + components: + - pos: 19.5,47.5 + parent: 0 + type: Transform +- uid: 114 + type: CableApcExtension + components: + - pos: 19.5,48.5 + parent: 0 + type: Transform +- uid: 115 + type: CableApcExtension + components: + - pos: 40.5,31.5 + parent: 0 + type: Transform +- uid: 116 + type: CableApcExtension + components: + - pos: 39.5,31.5 + parent: 0 + type: Transform +- uid: 117 + type: CableApcExtension + components: + - pos: 38.5,31.5 + parent: 0 + type: Transform +- uid: 118 + type: CableApcExtension + components: + - pos: 37.5,31.5 + parent: 0 + type: Transform +- uid: 119 + type: CableApcExtension + components: + - pos: 36.5,31.5 + parent: 0 + type: Transform +- uid: 120 + type: CableApcExtension + components: + - pos: 35.5,31.5 + parent: 0 + type: Transform +- uid: 121 + type: CableApcExtension + components: + - pos: 34.5,31.5 + parent: 0 + type: Transform +- uid: 122 + type: CableApcExtension + components: + - pos: 33.5,31.5 + parent: 0 + type: Transform +- uid: 123 + type: CableApcExtension + components: + - pos: 32.5,31.5 + parent: 0 + type: Transform +- uid: 124 + type: CableApcExtension + components: + - pos: 31.5,31.5 + parent: 0 + type: Transform +- uid: 125 + type: CableApcExtension + components: + - pos: 30.5,31.5 + parent: 0 + type: Transform +- uid: 126 + type: CableApcExtension + components: + - pos: 29.5,31.5 + parent: 0 + type: Transform +- uid: 127 + type: CableApcExtension + components: + - pos: 28.5,31.5 + parent: 0 + type: Transform +- uid: 128 + type: CableApcExtension + components: + - pos: 26.5,31.5 + parent: 0 + type: Transform +- uid: 129 + type: CableApcExtension + components: + - pos: 25.5,31.5 + parent: 0 + type: Transform +- uid: 130 + type: CableApcExtension + components: + - pos: 24.5,31.5 + parent: 0 + type: Transform +- uid: 131 + type: CableApcExtension + components: + - pos: 23.5,31.5 + parent: 0 + type: Transform +- uid: 132 + type: CableApcExtension + components: + - pos: 22.5,31.5 + parent: 0 + type: Transform +- uid: 133 + type: CableApcExtension + components: + - pos: 21.5,31.5 + parent: 0 + type: Transform +- uid: 134 + type: CableApcExtension + components: + - pos: 20.5,31.5 + parent: 0 + type: Transform +- uid: 135 + type: CableApcExtension + components: + - pos: 19.5,31.5 + parent: 0 + type: Transform +- uid: 136 + type: CableApcExtension + components: + - pos: 18.5,31.5 + parent: 0 + type: Transform +- uid: 137 + type: CableApcExtension + components: + - pos: 17.5,31.5 + parent: 0 + type: Transform +- uid: 138 + type: CableApcExtension + components: + - pos: 16.5,31.5 + parent: 0 + type: Transform +- uid: 139 + type: CableApcExtension + components: + - pos: 15.5,31.5 + parent: 0 + type: Transform +- uid: 140 + type: CableApcExtension + components: + - pos: 14.5,31.5 + parent: 0 + type: Transform +- uid: 141 + type: CableApcExtension + components: + - pos: 11.5,31.5 + parent: 0 + type: Transform +- uid: 142 + type: CableApcExtension + components: + - pos: 10.5,31.5 + parent: 0 + type: Transform +- uid: 143 + type: CableApcExtension + components: + - pos: 9.5,31.5 + parent: 0 + type: Transform +- uid: 144 + type: CableApcExtension + components: + - pos: 8.5,31.5 + parent: 0 + type: Transform +- uid: 145 + type: CableApcExtension + components: + - pos: 7.5,31.5 + parent: 0 + type: Transform +- uid: 146 + type: CableApcExtension + components: + - pos: 6.5,31.5 + parent: 0 + type: Transform +- uid: 147 + type: CableApcExtension + components: + - pos: 5.5,31.5 + parent: 0 + type: Transform +- uid: 148 + type: CableApcExtension + components: + - pos: 4.5,31.5 + parent: 0 + type: Transform +- uid: 149 + type: CableApcExtension + components: + - pos: 3.5,31.5 + parent: 0 + type: Transform +- uid: 150 + type: CableApcExtension + components: + - pos: 2.5,31.5 + parent: 0 + type: Transform +- uid: 151 + type: CableApcExtension + components: + - pos: 1.5,31.5 + parent: 0 + type: Transform +- uid: 152 + type: CableApcExtension + components: + - pos: 0.5,31.5 + parent: 0 + type: Transform +- uid: 153 + type: CableApcExtension + components: + - pos: 12.5,31.5 + parent: 0 + type: Transform +- uid: 154 + type: CableApcExtension + components: + - pos: 1.5,24.5 + parent: 0 + type: Transform +- uid: 155 + type: CableApcExtension + components: + - pos: 1.5,25.5 + parent: 0 + type: Transform +- uid: 156 + type: CableApcExtension + components: + - pos: 1.5,26.5 + parent: 0 + type: Transform +- uid: 157 + type: CableApcExtension + components: + - pos: 1.5,27.5 + parent: 0 + type: Transform +- uid: 158 + type: CableApcExtension + components: + - pos: 1.5,28.5 + parent: 0 + type: Transform +- uid: 159 + type: CableApcExtension + components: + - pos: 5.5,28.5 + parent: 0 + type: Transform +- uid: 160 + type: CableApcExtension + components: + - pos: 5.5,27.5 + parent: 0 + type: Transform +- uid: 161 + type: CableApcExtension + components: + - pos: 5.5,26.5 + parent: 0 + type: Transform +- uid: 162 + type: CableApcExtension + components: + - pos: 5.5,25.5 + parent: 0 + type: Transform +- uid: 163 + type: CableApcExtension + components: + - pos: 5.5,24.5 + parent: 0 + type: Transform +- uid: 164 + type: CableApcExtension + components: + - pos: 4.5,26.5 + parent: 0 + type: Transform +- uid: 165 + type: CableApcExtension + components: + - pos: 6.5,26.5 + parent: 0 + type: Transform +- uid: 166 + type: CableApcExtension + components: + - pos: 2.5,26.5 + parent: 0 + type: Transform +- uid: 167 + type: CableApcExtension + components: + - pos: 0.5,26.5 + parent: 0 + type: Transform +- uid: 168 + type: CableApcExtension + components: + - pos: 9.5,24.5 + parent: 0 + type: Transform +- uid: 169 + type: CableApcExtension + components: + - pos: 9.5,25.5 + parent: 0 + type: Transform +- uid: 170 + type: CableApcExtension + components: + - pos: 9.5,26.5 + parent: 0 + type: Transform +- uid: 171 + type: CableApcExtension + components: + - pos: 9.5,27.5 + parent: 0 + type: Transform +- uid: 172 + type: CableApcExtension + components: + - pos: 9.5,28.5 + parent: 0 + type: Transform +- uid: 173 + type: CableApcExtension + components: + - pos: 10.5,26.5 + parent: 0 + type: Transform +- uid: 174 + type: CableApcExtension + components: + - pos: 8.5,26.5 + parent: 0 + type: Transform +- uid: 175 + type: CableApcExtension + components: + - pos: 3.5,38.5 + parent: 0 + type: Transform +- uid: 176 + type: CableApcExtension + components: + - pos: 3.5,40.5 + parent: 0 + type: Transform +- uid: 177 + type: CableApcExtension + components: + - pos: 11.5,38.5 + parent: 0 + type: Transform +- uid: 178 + type: CableApcExtension + components: + - pos: 11.5,40.5 + parent: 0 + type: Transform +- uid: 179 + type: CableApcExtension + components: + - pos: 19.5,38.5 + parent: 0 + type: Transform +- uid: 180 + type: CableApcExtension + components: + - pos: 19.5,40.5 + parent: 0 + type: Transform +- uid: 181 + type: CableApcExtension + components: + - pos: 27.5,38.5 + parent: 0 + type: Transform +- uid: 182 + type: CableApcExtension + components: + - pos: 27.5,40.5 + parent: 0 + type: Transform +- uid: 183 + type: CableApcExtension + components: + - pos: 35.5,38.5 + parent: 0 + type: Transform +- uid: 184 + type: CableApcExtension + components: + - pos: 35.5,40.5 + parent: 0 + type: Transform +- uid: 185 + type: CableApcExtension + components: + - pos: 43.5,38.5 + parent: 0 + type: Transform +- uid: 186 + type: CableApcExtension + components: + - pos: 43.5,40.5 + parent: 0 + type: Transform +- uid: 187 + type: CableApcExtension + components: + - pos: 29.5,36.5 + parent: 0 + type: Transform +- uid: 188 + type: CableApcExtension + components: + - pos: 29.5,34.5 + parent: 0 + type: Transform +- uid: 189 + type: CableApcExtension + components: + - pos: 17.5,34.5 + parent: 0 + type: Transform +- uid: 190 + type: CableApcExtension + components: + - pos: 17.5,36.5 + parent: 0 + type: Transform +- uid: 191 + type: CableApcExtension + components: + - pos: 5.5,34.5 + parent: 0 + type: Transform +- uid: 192 + type: CableApcExtension + components: + - pos: 5.5,36.5 + parent: 0 + type: Transform +- uid: 193 + type: CableApcExtension + components: + - pos: 6.5,32.5 + parent: 0 + type: Transform +- uid: 194 + type: CableApcExtension + components: + - pos: 6.5,30.5 + parent: 0 + type: Transform +- uid: 195 + type: CableApcExtension + components: + - pos: 20.5,32.5 + parent: 0 + type: Transform +- uid: 196 + type: CableApcExtension + components: + - pos: 20.5,30.5 + parent: 0 + type: Transform +- uid: 197 + type: CableApcExtension + components: + - pos: 34.5,32.5 + parent: 0 + type: Transform +- uid: 198 + type: CableApcExtension + components: + - pos: 34.5,30.5 + parent: 0 + type: Transform +- uid: 199 + type: CableApcExtension + components: + - pos: 13.5,24.5 + parent: 0 + type: Transform +- uid: 200 + type: CableApcExtension + components: + - pos: 13.5,25.5 + parent: 0 + type: Transform +- uid: 201 + type: CableApcExtension + components: + - pos: 13.5,26.5 + parent: 0 + type: Transform +- uid: 202 + type: CableApcExtension + components: + - pos: 13.5,27.5 + parent: 0 + type: Transform +- uid: 203 + type: CableApcExtension + components: + - pos: 13.5,28.5 + parent: 0 + type: Transform +- uid: 204 + type: CableApcExtension + components: + - pos: 12.5,26.5 + parent: 0 + type: Transform +- uid: 205 + type: CableApcExtension + components: + - pos: 14.5,26.5 + parent: 0 + type: Transform +- uid: 206 + type: CableApcExtension + components: + - pos: 17.5,24.5 + parent: 0 + type: Transform +- uid: 207 + type: CableApcExtension + components: + - pos: 17.5,25.5 + parent: 0 + type: Transform +- uid: 208 + type: CableApcExtension + components: + - pos: 17.5,26.5 + parent: 0 + type: Transform +- uid: 209 + type: CableApcExtension + components: + - pos: 17.5,27.5 + parent: 0 + type: Transform +- uid: 210 + type: CableApcExtension + components: + - pos: 17.5,28.5 + parent: 0 + type: Transform +- uid: 211 + type: CableApcExtension + components: + - pos: 16.5,26.5 + parent: 0 + type: Transform +- uid: 212 + type: CableApcExtension + components: + - pos: 18.5,26.5 + parent: 0 + type: Transform +- uid: 213 + type: CableApcExtension + components: + - pos: 21.5,24.5 + parent: 0 + type: Transform +- uid: 214 + type: CableApcExtension + components: + - pos: 21.5,25.5 + parent: 0 + type: Transform +- uid: 215 + type: CableApcExtension + components: + - pos: 21.5,26.5 + parent: 0 + type: Transform +- uid: 216 + type: CableApcExtension + components: + - pos: 21.5,27.5 + parent: 0 + type: Transform +- uid: 217 + type: CableApcExtension + components: + - pos: 21.5,28.5 + parent: 0 + type: Transform +- uid: 218 + type: CableApcExtension + components: + - pos: 20.5,26.5 + parent: 0 + type: Transform +- uid: 219 + type: CableApcExtension + components: + - pos: 22.5,26.5 + parent: 0 + type: Transform +- uid: 220 + type: CableApcExtension + components: + - pos: 2.5,18.5 + parent: 0 + type: Transform +- uid: 221 + type: CableApcExtension + components: + - pos: 2.5,19.5 + parent: 0 + type: Transform +- uid: 222 + type: CableApcExtension + components: + - pos: 2.5,20.5 + parent: 0 + type: Transform +- uid: 223 + type: CableApcExtension + components: + - pos: 2.5,21.5 + parent: 0 + type: Transform +- uid: 224 + type: CableApcExtension + components: + - pos: 2.5,22.5 + parent: 0 + type: Transform +- uid: 225 + type: CableApcExtension + components: + - pos: 3.5,20.5 + parent: 0 + type: Transform +- uid: 226 + type: CableApcExtension + components: + - pos: 4.5,20.5 + parent: 0 + type: Transform +- uid: 227 + type: CableApcExtension + components: + - pos: 1.5,20.5 + parent: 0 + type: Transform +- uid: 228 + type: CableApcExtension + components: + - pos: 0.5,20.5 + parent: 0 + type: Transform +- uid: 229 + type: CableApcExtension + components: + - pos: 8.5,18.5 + parent: 0 + type: Transform +- uid: 230 + type: CableApcExtension + components: + - pos: 7.5,19.5 + parent: 0 + type: Transform +- uid: 231 + type: CableApcExtension + components: + - pos: 7.5,21.5 + parent: 0 + type: Transform +- uid: 232 + type: CableApcExtension + components: + - pos: 7.5,18.5 + parent: 0 + type: Transform +- uid: 233 + type: CableApcExtension + components: + - pos: 8.5,22.5 + parent: 0 + type: Transform +- uid: 234 + type: CableApcExtension + components: + - pos: 6.5,19.5 + parent: 0 + type: Transform +- uid: 235 + type: CableApcExtension + components: + - pos: 6.5,20.5 + parent: 0 + type: Transform +- uid: 236 + type: CableApcExtension + components: + - pos: 6.5,21.5 + parent: 0 + type: Transform +- uid: 237 + type: CableApcExtension + components: + - pos: 10.5,20.5 + parent: 0 + type: Transform +- uid: 238 + type: CableApcExtension + components: + - pos: 14.5,18.5 + parent: 0 + type: Transform +- uid: 239 + type: CableApcExtension + components: + - pos: 14.5,19.5 + parent: 0 + type: Transform +- uid: 240 + type: CableApcExtension + components: + - pos: 14.5,20.5 + parent: 0 + type: Transform +- uid: 241 + type: CableApcExtension + components: + - pos: 14.5,21.5 + parent: 0 + type: Transform +- uid: 242 + type: CableApcExtension + components: + - pos: 14.5,22.5 + parent: 0 + type: Transform +- uid: 243 + type: CableApcExtension + components: + - pos: 13.5,20.5 + parent: 0 + type: Transform +- uid: 244 + type: CableApcExtension + components: + - pos: 12.5,20.5 + parent: 0 + type: Transform +- uid: 245 + type: CableApcExtension + components: + - pos: 15.5,20.5 + parent: 0 + type: Transform +- uid: 246 + type: CableApcExtension + components: + - pos: 16.5,20.5 + parent: 0 + type: Transform +- uid: 247 + type: CableApcExtension + components: + - pos: 20.5,18.5 + parent: 0 + type: Transform +- uid: 248 + type: CableApcExtension + components: + - pos: 20.5,19.5 + parent: 0 + type: Transform +- uid: 249 + type: CableApcExtension + components: + - pos: 20.5,20.5 + parent: 0 + type: Transform +- uid: 250 + type: CableApcExtension + components: + - pos: 20.5,21.5 + parent: 0 + type: Transform +- uid: 251 + type: CableApcExtension + components: + - pos: 20.5,22.5 + parent: 0 + type: Transform +- uid: 252 + type: CableApcExtension + components: + - pos: 19.5,20.5 + parent: 0 + type: Transform +- uid: 253 + type: CableApcExtension + components: + - pos: 18.5,20.5 + parent: 0 + type: Transform +- uid: 254 + type: CableApcExtension + components: + - pos: 21.5,20.5 + parent: 0 + type: Transform +- uid: 255 + type: CableApcExtension + components: + - pos: 22.5,20.5 + parent: 0 + type: Transform +- uid: 256 + type: CableApcExtension + components: + - pos: 26.5,18.5 + parent: 0 + type: Transform +- uid: 257 + type: CableApcExtension + components: + - pos: 26.5,19.5 + parent: 0 + type: Transform +- uid: 258 + type: CableApcExtension + components: + - pos: 26.5,20.5 + parent: 0 + type: Transform +- uid: 259 + type: CableApcExtension + components: + - pos: 26.5,21.5 + parent: 0 + type: Transform +- uid: 260 + type: CableApcExtension + components: + - pos: 26.5,22.5 + parent: 0 + type: Transform +- uid: 261 + type: GeneratorRTG + components: + - pos: 25.5,19.5 + parent: 0 + type: Transform +- uid: 262 + type: SMESBasic + components: + - pos: 26.5,20.5 + parent: 0 + type: Transform +- uid: 263 + type: CableApcExtension + components: + - pos: 27.5,20.5 + parent: 0 + type: Transform +- uid: 264 + type: CableApcExtension + components: + - pos: 28.5,20.5 + parent: 0 + type: Transform +- uid: 265 + type: CableApcExtension + components: + - pos: 32.5,18.5 + parent: 0 + type: Transform +- uid: 266 + type: CableApcExtension + components: + - pos: 32.5,19.5 + parent: 0 + type: Transform +- uid: 267 + type: CableApcExtension + components: + - pos: 32.5,20.5 + parent: 0 + type: Transform +- uid: 268 + type: CableApcExtension + components: + - pos: 32.5,21.5 + parent: 0 + type: Transform +- uid: 269 + type: CableApcExtension + components: + - pos: 32.5,22.5 + parent: 0 + type: Transform +- uid: 270 + type: CableApcExtension + components: + - pos: 31.5,20.5 + parent: 0 + type: Transform +- uid: 271 + type: CableApcExtension + components: + - pos: 30.5,20.5 + parent: 0 + type: Transform +- uid: 272 + type: CableApcExtension + components: + - pos: 33.5,20.5 + parent: 0 + type: Transform +- uid: 273 + type: CableApcExtension + components: + - pos: 34.5,20.5 + parent: 0 + type: Transform +- uid: 274 + type: CableApcExtension + components: + - pos: 19.5,12.5 + parent: 0 + type: Transform +- uid: 275 + type: CableApcExtension + components: + - pos: 16.5,12.5 + parent: 0 + type: Transform +- uid: 276 + type: CableApcExtension + components: + - pos: 16.5,15.5 + parent: 0 + type: Transform +- uid: 277 + type: CableApcExtension + components: + - pos: 17.5,12.5 + parent: 0 + type: Transform +- uid: 278 + type: CableApcExtension + components: + - pos: 19.5,16.5 + parent: 0 + type: Transform +- uid: 279 + type: CableApcExtension + components: + - pos: 16.5,16.5 + parent: 0 + type: Transform +- uid: 280 + type: CableApcExtension + components: + - pos: 17.5,16.5 + parent: 0 + type: Transform +- uid: 281 + type: CableApcExtension + components: + - pos: 16.5,14.5 + parent: 0 + type: Transform +- uid: 282 + type: CableApcExtension + components: + - pos: 16.5,13.5 + parent: 0 + type: Transform +- uid: 283 + type: CableApcExtension + components: + - pos: 18.5,12.5 + parent: 0 + type: Transform +- uid: 284 + type: CableApcExtension + components: + - pos: 22.5,14.5 + parent: 0 + type: Transform +- uid: 285 + type: CableApcExtension + components: + - pos: 0.5,14.5 + parent: 0 + type: Transform +- uid: 286 + type: CableApcExtension + components: + - pos: 1.5,14.5 + parent: 0 + type: Transform +- uid: 287 + type: CableApcExtension + components: + - pos: 2.5,14.5 + parent: 0 + type: Transform +- uid: 288 + type: CableApcExtension + components: + - pos: 2.5,15.5 + parent: 0 + type: Transform +- uid: 289 + type: CableApcExtension + components: + - pos: 4.5,14.5 + parent: 0 + type: Transform +- uid: 290 + type: CableApcExtension + components: + - pos: 5.5,14.5 + parent: 0 + type: Transform +- uid: 291 + type: CableApcExtension + components: + - pos: 6.5,14.5 + parent: 0 + type: Transform +- uid: 292 + type: CableApcExtension + components: + - pos: 8.5,14.5 + parent: 0 + type: Transform +- uid: 293 + type: CableApcExtension + components: + - pos: 3.5,13.5 + parent: 0 + type: Transform +- uid: 294 + type: CableApcExtension + components: + - pos: 3.5,12.5 + parent: 0 + type: Transform +- uid: 295 + type: CableApcExtension + components: + - pos: 3.5,15.5 + parent: 0 + type: Transform +- uid: 296 + type: CableApcExtension + components: + - pos: 3.5,16.5 + parent: 0 + type: Transform +- uid: 297 + type: CableApcExtension + components: + - pos: 10.5,12.5 + parent: 0 + type: Transform +- uid: 298 + type: CableApcExtension + components: + - pos: 10.5,14.5 + parent: 0 + type: Transform +- uid: 299 + type: CableApcExtension + components: + - pos: 11.5,14.5 + parent: 0 + type: Transform +- uid: 300 + type: CableApcExtension + components: + - pos: 12.5,14.5 + parent: 0 + type: Transform +- uid: 301 + type: WallPlastitanium + components: + - pos: 9.5,14.5 + parent: 0 + type: Transform +- uid: 302 + type: CableApcExtension + components: + - pos: 14.5,14.5 + parent: 0 + type: Transform +- uid: 303 + type: WallPlastitanium + components: + - pos: 11.5,15.5 + parent: 0 + type: Transform +- uid: 304 + type: CableApcExtension + components: + - pos: 11.5,16.5 + parent: 0 + type: Transform +- uid: 305 + type: CableApcExtension + components: + - pos: 11.5,13.5 + parent: 0 + type: Transform +- uid: 306 + type: CableApcExtension + components: + - pos: 11.5,12.5 + parent: 0 + type: Transform +- uid: 307 + type: CableApcExtension + components: + - pos: 24.5,14.5 + parent: 0 + type: Transform +- uid: 308 + type: CableApcExtension + components: + - pos: 25.5,14.5 + parent: 0 + type: Transform +- uid: 309 + type: CableApcExtension + components: + - pos: 26.5,14.5 + parent: 0 + type: Transform +- uid: 310 + type: CableApcExtension + components: + - pos: 27.5,14.5 + parent: 0 + type: Transform +- uid: 311 + type: CableApcExtension + components: + - pos: 28.5,14.5 + parent: 0 + type: Transform +- uid: 312 + type: CableApcExtension + components: + - pos: 29.5,14.5 + parent: 0 + type: Transform +- uid: 313 + type: CableApcExtension + components: + - pos: 30.5,14.5 + parent: 0 + type: Transform +- uid: 314 + type: CableApcExtension + components: + - pos: 27.5,13.5 + parent: 0 + type: Transform +- uid: 315 + type: CableApcExtension + components: + - pos: 27.5,12.5 + parent: 0 + type: Transform +- uid: 316 + type: CableApcExtension + components: + - pos: 27.5,15.5 + parent: 0 + type: Transform +- uid: 317 + type: CableApcExtension + components: + - pos: 27.5,16.5 + parent: 0 + type: Transform +- uid: 318 + type: CableApcExtension + components: + - pos: 32.5,14.5 + parent: 0 + type: Transform +- uid: 319 + type: CableApcExtension + components: + - pos: 33.5,14.5 + parent: 0 + type: Transform +- uid: 320 + type: CableApcExtension + components: + - pos: 34.5,14.5 + parent: 0 + type: Transform +- uid: 321 + type: CableApcExtension + components: + - pos: 35.5,14.5 + parent: 0 + type: Transform +- uid: 322 + type: CableApcExtension + components: + - pos: 36.5,14.5 + parent: 0 + type: Transform +- uid: 323 + type: CableApcExtension + components: + - pos: 37.5,14.5 + parent: 0 + type: Transform +- uid: 324 + type: CableApcExtension + components: + - pos: 38.5,14.5 + parent: 0 + type: Transform +- uid: 325 + type: CableApcExtension + components: + - pos: 35.5,13.5 + parent: 0 + type: Transform +- uid: 326 + type: CableApcExtension + components: + - pos: 35.5,12.5 + parent: 0 + type: Transform +- uid: 327 + type: CableApcExtension + components: + - pos: 35.5,15.5 + parent: 0 + type: Transform +- uid: 328 + type: CableApcExtension + components: + - pos: 35.5,16.5 + parent: 0 + type: Transform +- uid: 329 + type: CableApcExtension + components: + - pos: 40.5,14.5 + parent: 0 + type: Transform +- uid: 330 + type: CableApcExtension + components: + - pos: 41.5,14.5 + parent: 0 + type: Transform +- uid: 331 + type: CableApcExtension + components: + - pos: 42.5,14.5 + parent: 0 + type: Transform +- uid: 332 + type: CableApcExtension + components: + - pos: 43.5,14.5 + parent: 0 + type: Transform +- uid: 333 + type: CableApcExtension + components: + - pos: 44.5,14.5 + parent: 0 + type: Transform +- uid: 334 + type: CableApcExtension + components: + - pos: 45.5,14.5 + parent: 0 + type: Transform +- uid: 335 + type: CableApcExtension + components: + - pos: 46.5,14.5 + parent: 0 + type: Transform +- uid: 336 + type: CableApcExtension + components: + - pos: 43.5,13.5 + parent: 0 + type: Transform +- uid: 337 + type: CableApcExtension + components: + - pos: 43.5,12.5 + parent: 0 + type: Transform +- uid: 338 + type: CableApcExtension + components: + - pos: 43.5,15.5 + parent: 0 + type: Transform +- uid: 339 + type: CableApcExtension + components: + - pos: 43.5,16.5 + parent: 0 + type: Transform +- uid: 340 + type: CableApcExtension + components: + - pos: 34.5,8.5 + parent: 0 + type: Transform +- uid: 341 + type: CableApcExtension + components: + - pos: 33.5,8.5 + parent: 0 + type: Transform +- uid: 342 + type: CableApcExtension + components: + - pos: 32.5,8.5 + parent: 0 + type: Transform +- uid: 343 + type: CableApcExtension + components: + - pos: 31.5,8.5 + parent: 0 + type: Transform +- uid: 344 + type: CableApcExtension + components: + - pos: 30.5,8.5 + parent: 0 + type: Transform +- uid: 345 + type: CableApcExtension + components: + - pos: 29.5,8.5 + parent: 0 + type: Transform +- uid: 346 + type: CableApcExtension + components: + - pos: 28.5,8.5 + parent: 0 + type: Transform +- uid: 347 + type: CableApcExtension + components: + - pos: 27.5,8.5 + parent: 0 + type: Transform +- uid: 348 + type: CableApcExtension + components: + - pos: 26.5,8.5 + parent: 0 + type: Transform +- uid: 349 + type: CableApcExtension + components: + - pos: 25.5,8.5 + parent: 0 + type: Transform +- uid: 350 + type: CableApcExtension + components: + - pos: 24.5,8.5 + parent: 0 + type: Transform +- uid: 351 + type: CableApcExtension + components: + - pos: 29.5,9.5 + parent: 0 + type: Transform +- uid: 352 + type: CableApcExtension + components: + - pos: 29.5,10.5 + parent: 0 + type: Transform +- uid: 353 + type: APCBasic + components: + - rot: 1.5707963267948966 rad + pos: 30.5,9.5 + parent: 0 + type: Transform +- uid: 354 + type: SubstationWallBasic + components: + - pos: 29.5,9.5 + parent: 0 + type: Transform +- uid: 355 + type: CableApcExtension + components: + - pos: 22.5,8.5 + parent: 0 + type: Transform +- uid: 356 + type: CableApcExtension + components: + - pos: 21.5,8.5 + parent: 0 + type: Transform +- uid: 357 + type: CableApcExtension + components: + - pos: 20.5,8.5 + parent: 0 + type: Transform +- uid: 358 + type: CableApcExtension + components: + - pos: 19.5,8.5 + parent: 0 + type: Transform +- uid: 359 + type: CableApcExtension + components: + - pos: 18.5,8.5 + parent: 0 + type: Transform +- uid: 360 + type: CableApcExtension + components: + - pos: 17.5,8.5 + parent: 0 + type: Transform +- uid: 361 + type: CableApcExtension + components: + - pos: 16.5,8.5 + parent: 0 + type: Transform +- uid: 362 + type: CableApcExtension + components: + - pos: 15.5,8.5 + parent: 0 + type: Transform +- uid: 363 + type: CableApcExtension + components: + - pos: 14.5,8.5 + parent: 0 + type: Transform +- uid: 364 + type: CableApcExtension + components: + - pos: 13.5,8.5 + parent: 0 + type: Transform +- uid: 365 + type: CableApcExtension + components: + - pos: 12.5,8.5 + parent: 0 + type: Transform +- uid: 366 + type: CableApcExtension + components: + - pos: 17.5,9.5 + parent: 0 + type: Transform +- uid: 367 + type: CableApcExtension + components: + - pos: 17.5,10.5 + parent: 0 + type: Transform +- uid: 368 + type: CableApcExtension + components: + - pos: 17.5,7.5 + parent: 0 + type: Transform +- uid: 369 + type: CableApcExtension + components: + - pos: 17.5,6.5 + parent: 0 + type: Transform +- uid: 370 + type: CableApcExtension + components: + - pos: 10.5,8.5 + parent: 0 + type: Transform +- uid: 371 + type: CableApcExtension + components: + - pos: 9.5,8.5 + parent: 0 + type: Transform +- uid: 372 + type: CableApcExtension + components: + - pos: 8.5,8.5 + parent: 0 + type: Transform +- uid: 373 + type: CableApcExtension + components: + - pos: 7.5,8.5 + parent: 0 + type: Transform +- uid: 374 + type: CableApcExtension + components: + - pos: 6.5,8.5 + parent: 0 + type: Transform +- uid: 375 + type: CableApcExtension + components: + - pos: 5.5,8.5 + parent: 0 + type: Transform +- uid: 376 + type: CableApcExtension + components: + - pos: 4.5,8.5 + parent: 0 + type: Transform +- uid: 377 + type: CableApcExtension + components: + - pos: 3.5,8.5 + parent: 0 + type: Transform +- uid: 378 + type: CableApcExtension + components: + - pos: 2.5,8.5 + parent: 0 + type: Transform +- uid: 379 + type: CableApcExtension + components: + - pos: 1.5,8.5 + parent: 0 + type: Transform +- uid: 380 + type: CableApcExtension + components: + - pos: 0.5,8.5 + parent: 0 + type: Transform +- uid: 381 + type: CableApcExtension + components: + - pos: 5.5,9.5 + parent: 0 + type: Transform +- uid: 382 + type: CableApcExtension + components: + - pos: 5.5,10.5 + parent: 0 + type: Transform +- uid: 383 + type: CableApcExtension + components: + - pos: 5.5,7.5 + parent: 0 + type: Transform +- uid: 384 + type: CableApcExtension + components: + - pos: 5.5,6.5 + parent: 0 + type: Transform +- uid: 385 + type: CableApcExtension + components: + - pos: 0.5,2.5 + parent: 0 + type: Transform +- uid: 386 + type: CableApcExtension + components: + - pos: 1.5,2.5 + parent: 0 + type: Transform +- uid: 387 + type: CableApcExtension + components: + - pos: 2.5,2.5 + parent: 0 + type: Transform +- uid: 388 + type: CableApcExtension + components: + - pos: 2.5,3.5 + parent: 0 + type: Transform +- uid: 389 + type: CableApcExtension + components: + - pos: 4.5,0.5 + parent: 0 + type: Transform +- uid: 390 + type: CableApcExtension + components: + - pos: 3.5,0.5 + parent: 0 + type: Transform +- uid: 391 + type: CableApcExtension + components: + - pos: 3.5,1.5 + parent: 0 + type: Transform +- uid: 392 + type: CableApcExtension + components: + - pos: 3.5,3.5 + parent: 0 + type: Transform +- uid: 393 + type: CableApcExtension + components: + - pos: 3.5,4.5 + parent: 0 + type: Transform +- uid: 394 + type: CableApcExtension + components: + - pos: 4.5,4.5 + parent: 0 + type: Transform +- uid: 395 + type: CableApcExtension + components: + - pos: 5.5,4.5 + parent: 0 + type: Transform +- uid: 396 + type: CableApcExtension + components: + - pos: 6.5,4.5 + parent: 0 + type: Transform +- uid: 397 + type: CableApcExtension + components: + - pos: 7.5,4.5 + parent: 0 + type: Transform +- uid: 398 + type: CableApcExtension + components: + - pos: 7.5,0.5 + parent: 0 + type: Transform +- uid: 399 + type: CableApcExtension + components: + - pos: 14.5,2.5 + parent: 0 + type: Transform +- uid: 400 + type: CableApcExtension + components: + - pos: 15.5,2.5 + parent: 0 + type: Transform +- uid: 401 + type: CableApcExtension + components: + - pos: 16.5,2.5 + parent: 0 + type: Transform +- uid: 402 + type: CableApcExtension + components: + - pos: 6.5,0.5 + parent: 0 + type: Transform +- uid: 403 + type: CableApcExtension + components: + - pos: 8.5,4.5 + parent: 0 + type: Transform +- uid: 404 + type: CableApcExtension + components: + - pos: 5.5,0.5 + parent: 0 + type: Transform +- uid: 405 + type: CableApcExtension + components: + - pos: 8.5,0.5 + parent: 0 + type: Transform +- uid: 406 + type: CableApcExtension + components: + - pos: 18.5,2.5 + parent: 0 + type: Transform +- uid: 407 + type: CableApcExtension + components: + - pos: 19.5,2.5 + parent: 0 + type: Transform +- uid: 408 + type: CableApcExtension + components: + - pos: 20.5,2.5 + parent: 0 + type: Transform +- uid: 409 + type: CableApcExtension + components: + - pos: 21.5,2.5 + parent: 0 + type: Transform +- uid: 410 + type: CableApcExtension + components: + - pos: 22.5,2.5 + parent: 0 + type: Transform +- uid: 411 + type: CableApcExtension + components: + - pos: 23.5,2.5 + parent: 0 + type: Transform +- uid: 412 + type: CableApcExtension + components: + - pos: 24.5,2.5 + parent: 0 + type: Transform +- uid: 413 + type: CableApcExtension + components: + - pos: 25.5,2.5 + parent: 0 + type: Transform +- uid: 414 + type: CableApcExtension + components: + - pos: 26.5,2.5 + parent: 0 + type: Transform +- uid: 415 + type: CableApcExtension + components: + - pos: 27.5,2.5 + parent: 0 + type: Transform +- uid: 416 + type: CableApcExtension + components: + - pos: 28.5,2.5 + parent: 0 + type: Transform +- uid: 417 + type: CableApcExtension + components: + - pos: 29.5,2.5 + parent: 0 + type: Transform +- uid: 418 + type: CableApcExtension + components: + - pos: 30.5,2.5 + parent: 0 + type: Transform +- uid: 419 + type: CableApcExtension + components: + - pos: 31.5,2.5 + parent: 0 + type: Transform +- uid: 420 + type: CableApcExtension + components: + - pos: 32.5,2.5 + parent: 0 + type: Transform +- uid: 421 + type: CableApcExtension + components: + - pos: 33.5,2.5 + parent: 0 + type: Transform +- uid: 422 + type: CableApcExtension + components: + - pos: 34.5,2.5 + parent: 0 + type: Transform +- uid: 423 + type: CableApcExtension + components: + - pos: 36.5,2.5 + parent: 0 + type: Transform +- uid: 424 + type: CableApcExtension + components: + - pos: 26.5,3.5 + parent: 0 + type: Transform +- uid: 425 + type: CableApcExtension + components: + - pos: 26.5,4.5 + parent: 0 + type: Transform +- uid: 426 + type: CableApcExtension + components: + - pos: 26.5,1.5 + parent: 0 + type: Transform +- uid: 427 + type: CableApcExtension + components: + - pos: 26.5,0.5 + parent: 0 + type: Transform +- uid: 428 + type: CableApcExtension + components: + - pos: 37.5,2.5 + parent: 0 + type: Transform +- uid: 429 + type: CableApcExtension + components: + - pos: 38.5,2.5 + parent: 0 + type: Transform +- uid: 430 + type: CableApcExtension + components: + - pos: 39.5,2.5 + parent: 0 + type: Transform +- uid: 431 + type: CableApcExtension + components: + - pos: 40.5,2.5 + parent: 0 + type: Transform +- uid: 432 + type: CableApcExtension + components: + - pos: 41.5,2.5 + parent: 0 + type: Transform +- uid: 433 + type: CableApcExtension + components: + - pos: 42.5,2.5 + parent: 0 + type: Transform +- uid: 434 + type: CableApcExtension + components: + - pos: 43.5,2.5 + parent: 0 + type: Transform +- uid: 435 + type: CableApcExtension + components: + - pos: 44.5,2.5 + parent: 0 + type: Transform +- uid: 436 + type: CableApcExtension + components: + - pos: 45.5,2.5 + parent: 0 + type: Transform +- uid: 437 + type: CableApcExtension + components: + - pos: 46.5,2.5 + parent: 0 + type: Transform +- uid: 438 + type: CableApcExtension + components: + - pos: 47.5,2.5 + parent: 0 + type: Transform +- uid: 439 + type: CableApcExtension + components: + - pos: 48.5,2.5 + parent: 0 + type: Transform +- uid: 440 + type: CableApcExtension + components: + - pos: 49.5,2.5 + parent: 0 + type: Transform +- uid: 441 + type: CableApcExtension + components: + - pos: 50.5,2.5 + parent: 0 + type: Transform +- uid: 442 + type: CableApcExtension + components: + - pos: 51.5,2.5 + parent: 0 + type: Transform +- uid: 443 + type: CableApcExtension + components: + - pos: 52.5,2.5 + parent: 0 + type: Transform +- uid: 444 + type: CableApcExtension + components: + - pos: 53.5,2.5 + parent: 0 + type: Transform +- uid: 445 + type: CableApcExtension + components: + - pos: 54.5,2.5 + parent: 0 + type: Transform +- uid: 446 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 4.5,42.5 + parent: 0 + type: Transform +- uid: 447 + type: CableApcExtension + components: + - pos: 45.5,3.5 + parent: 0 + type: Transform +- uid: 448 + type: CableApcExtension + components: + - pos: 45.5,4.5 + parent: 0 + type: Transform +- uid: 449 + type: CableApcExtension + components: + - pos: 45.5,0.5 + parent: 0 + type: Transform +- uid: 450 + type: CableApcExtension + components: + - pos: 45.5,1.5 + parent: 0 + type: Transform +- uid: 451 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 4.5,43.5 + parent: 0 + type: Transform +- uid: 452 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 4.5,44.5 + parent: 0 + type: Transform +- uid: 453 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 4.5,44.5 + parent: 0 + type: Transform +- uid: 454 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 6.5,44.5 + parent: 0 + type: Transform +- uid: 455 + type: RandomArtifactSpawner + components: + - pos: 5.5,43.5 + parent: 0 + type: Transform +- uid: 456 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 2.5,42.5 + parent: 0 + type: Transform +- uid: 457 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 2.5,43.5 + parent: 0 + type: Transform +- uid: 458 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 2.5,44.5 + parent: 0 + type: Transform +- uid: 459 + type: ComputerBroken + components: + - rot: -1.5707963267948966 rad + pos: 2.5,42.5 + parent: 0 + type: Transform +- uid: 460 + type: BaseComputer + components: + - rot: -1.5707963267948966 rad + pos: 2.5,44.5 + parent: 0 + type: Transform +- uid: 461 + type: ComputerAnalysisConsole + components: + - rot: -1.5707963267948966 rad + pos: 2.5,43.5 + parent: 0 + type: Transform +- uid: 462 + type: ChairOfficeLight + components: + - rot: 1.5707963267948966 rad + pos: 1.5,43.5 + parent: 0 + type: Transform +- uid: 463 + type: ChairOfficeLight + components: + - rot: 1.5707963267948966 rad + pos: 1.5,44.5 + parent: 0 + type: Transform +- uid: 464 + type: filingCabinetDrawerRandom + components: + - pos: 0.5,42.5 + parent: 0 + type: Transform +- uid: 465 + type: PoweredSmallLight + components: + - rot: 3.141592653589793 rad + pos: 1.5,42.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 466 + type: PoweredSmallLight + components: + - pos: 5.5,48.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 467 + type: WindoorSecure + components: + - rot: 3.141592653589793 rad + pos: 5.5,44.5 + parent: 0 + type: Transform +- uid: 468 + type: ClosetFireFilled + components: + - pos: 0.5,48.5 + parent: 0 + type: Transform +- uid: 469 + type: ClosetL3ScienceFilled + components: + - pos: 1.5,48.5 + parent: 0 + type: Transform +- uid: 470 + type: ClosetEmergencyFilledRandom + components: + - pos: 2.5,48.5 + parent: 0 + type: Transform +- uid: 471 + type: SinkWide + components: + - rot: 1.5707963267948966 rad + pos: 0.5,47.5 + parent: 0 + type: Transform +- uid: 472 + type: FloorDrain + components: + - pos: 0.5,47.5 + parent: 0 + type: Transform + - fixtures: [] + type: Fixtures +- uid: 473 + type: WindowTintedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 2.5,48.5 + parent: 0 + type: Transform +- uid: 474 + type: ShardGlass + components: + - pos: 2.445806,46.508026 + parent: 0 + type: Transform +- uid: 475 + type: WindowTintedDirectional + components: + - rot: 3.141592653589793 rad + pos: 1.5,46.5 + parent: 0 + type: Transform +- uid: 476 + type: WindowTintedDirectional + components: + - rot: 3.141592653589793 rad + pos: 0.5,46.5 + parent: 0 + type: Transform +- uid: 477 + type: Table + components: + - pos: 0.5,46.5 + parent: 0 + type: Transform +- uid: 478 + type: Table + components: + - pos: 1.5,46.5 + parent: 0 + type: Transform +- uid: 479 + type: Table + components: + - pos: 2.5,46.5 + parent: 0 + type: Transform +- uid: 480 + type: GasPassiveVent + components: + - rot: 3.141592653589793 rad + pos: 4.5,44.5 + parent: 0 + type: Transform +- uid: 481 + type: GasPassiveVent + components: + - rot: 3.141592653589793 rad + pos: 6.5,44.5 + parent: 0 + type: Transform +- uid: 482 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 4.5,45.5 + parent: 0 + type: Transform +- uid: 483 + type: GasPipeStraight + components: + - rot: 3.141592653589793 rad + pos: 6.5,45.5 + parent: 0 + type: Transform +- uid: 484 + type: GasPipeStraight + components: + - pos: 6.5,46.5 + parent: 0 + type: Transform +- uid: 485 + type: GasPressurePump + components: + - pos: 4.5,47.5 + parent: 0 + type: Transform +- uid: 486 + type: GasPort + components: + - pos: 4.5,48.5 + parent: 0 + type: Transform +- uid: 487 + type: GasPort + components: + - pos: 6.5,48.5 + parent: 0 + type: Transform +- uid: 488 + type: GasPipeTJunction + components: + - rot: 1.5707963267948966 rad + pos: 4.5,46.5 + parent: 0 + type: Transform +- uid: 489 + type: GasPressurePump + components: + - rot: 3.141592653589793 rad + pos: 6.5,47.5 + parent: 0 + type: Transform +- uid: 490 + type: GasPipeBend + components: + - rot: -1.5707963267948966 rad + pos: 5.5,46.5 + parent: 0 + type: Transform +- uid: 491 + type: GasThermoMachineHeater + components: + - pos: 5.5,47.5 + parent: 0 + type: Transform +- uid: 492 + type: GasCanisterBrokenBase + components: + - pos: 4.5,48.5 + parent: 0 + type: Transform +- uid: 493 + type: SalvageCanisterSpawner + components: + - pos: 6.5,48.5 + parent: 0 + type: Transform +- uid: 494 + type: Multitool + components: + - pos: 0.51333475,46.52365 + parent: 0 + type: Transform +- uid: 495 + type: CrateScience + components: + - pos: 0.5,44.5 + parent: 0 + type: Transform +- uid: 496 + type: Chair + components: + - pos: 2.5,40.5 + parent: 0 + type: Transform +- uid: 497 + type: Chair + components: + - pos: 4.5,40.5 + parent: 0 + type: Transform +- uid: 498 + type: PottedPlantRandom + components: + - pos: 3.5,40.5 + parent: 0 + type: Transform +- uid: 499 + type: Poweredlight + components: + - rot: 3.141592653589793 rad + pos: 18.5,38.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 500 + type: WindowTintedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 10.5,39.5 + parent: 0 + type: Transform +- uid: 501 + type: WindowTintedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 12.5,39.5 + parent: 0 + type: Transform +- uid: 502 + type: Chair + components: + - pos: 17.5,40.5 + parent: 0 + type: Transform +- uid: 503 + type: PottedPlant19 + components: + - pos: 11.477652,39.22891 + parent: 0 + type: Transform +- uid: 504 + type: Chair + components: + - rot: -1.5707963267948966 rad + pos: 9.5,39.5 + parent: 0 + type: Transform +- uid: 505 + type: Chair + components: + - rot: 1.5707963267948966 rad + pos: 13.5,39.5 + parent: 0 + type: Transform +- uid: 506 + type: Poweredlight + components: + - rot: 3.141592653589793 rad + pos: 10.5,38.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 507 + type: Table + components: + - pos: 20.5,40.5 + parent: 0 + type: Transform +- uid: 508 + type: DrinkWaterCup + components: + - pos: 20.373915,40.64657 + parent: 0 + type: Transform +- uid: 509 + type: DrinkWaterCup + components: + - pos: 20.54579,40.724693 + parent: 0 + type: Transform +- uid: 510 + type: DrinkWaterCup + components: + - pos: 20.592665,40.537193 + parent: 0 + type: Transform +- uid: 511 + type: Chair + components: + - pos: 18.5,40.5 + parent: 0 + type: Transform +- uid: 512 + type: WaterCooler + components: + - pos: 21.5,40.5 + parent: 0 + type: Transform +- uid: 513 + type: Poweredlight + components: + - rot: 3.141592653589793 rad + pos: 2.5,38.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 514 + type: WallSolid + components: + - pos: 26.5,38.5 + parent: 0 + type: Transform +- uid: 515 + type: WallSolid + components: + - pos: 26.5,40.5 + parent: 0 + type: Transform +- uid: 516 + type: WallSolid + components: + - pos: 28.5,40.5 + parent: 0 + type: Transform +- uid: 517 + type: WallSolid + components: + - pos: 28.5,38.5 + parent: 0 + type: Transform +- uid: 518 + type: Chair + components: + - pos: 25.5,40.5 + parent: 0 + type: Transform +- uid: 519 + type: Chair + components: + - rot: 3.141592653589793 rad + pos: 30.5,38.5 + parent: 0 + type: Transform +- uid: 520 + type: PoweredlightEmpty + components: + - pos: 28.5,39.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 521 + type: PottedPlantRandom + components: + - pos: 24.5,40.5 + parent: 0 + type: Transform +- uid: 522 + type: VendingMachineCoffee + components: + - flags: SessionSpecific + type: MetaData + - pos: 29.5,38.5 + parent: 0 + type: Transform +- uid: 523 + type: FloodlightBroken + components: + - pos: 36.481613,40.499622 + parent: 0 + type: Transform +- uid: 524 + type: Table + components: + - pos: 37.5,39.5 + parent: 0 + type: Transform +- uid: 525 + type: Table + components: + - pos: 37.5,40.5 + parent: 0 + type: Transform +- uid: 526 + type: Table + components: + - pos: 35.5,38.5 + parent: 0 + type: Transform +- uid: 527 + type: Railing + components: + - rot: 1.5707963267948966 rad + pos: 34.5,38.5 + parent: 0 + type: Transform +- uid: 528 + type: RailingCornerSmall + components: + - rot: 3.141592653589793 rad + pos: 34.5,39.5 + parent: 0 + type: Transform +- uid: 529 + type: RailingCornerSmall + components: + - rot: 1.5707963267948966 rad + pos: 35.5,39.5 + parent: 0 + type: Transform +- uid: 530 + type: RailingCornerSmall + components: + - pos: 35.5,38.5 + parent: 0 + type: Transform +- uid: 531 + type: PartRodMetal1 + components: + - pos: 33.42354,40.437122 + parent: 0 + type: Transform +- uid: 532 + type: FoamedIronMetal + components: + - pos: 36.5,39.5 + parent: 0 + type: Transform +- uid: 533 + type: FoamedIronMetal + components: + - pos: 35.5,40.5 + parent: 0 + type: Transform +- uid: 534 + type: FoamedIronMetal + components: + - pos: 36.5,38.5 + parent: 0 + type: Transform +- uid: 535 + type: ShardGlass + components: + - pos: 37.501663,39.608997 + parent: 0 + type: Transform +- uid: 536 + type: SheetSteel1 + components: + - pos: 32.52815,38.437122 + parent: 0 + type: Transform +- uid: 537 + type: Poweredlight + components: + - pos: 42.5,40.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 538 + type: Chair + components: + - pos: 44.5,40.5 + parent: 0 + type: Transform +- uid: 539 + type: SMESBasic + components: + - pos: 11.5,45.5 + parent: 0 + type: Transform +- uid: 540 + type: GeneratorRTG + components: + - pos: 9.5,47.5 + parent: 0 + type: Transform +- uid: 541 + type: GeneratorRTG + components: + - pos: 13.5,47.5 + parent: 0 + type: Transform +- uid: 542 + type: GeneratorRTG + components: + - pos: 11.5,47.5 + parent: 0 + type: Transform +- uid: 543 + type: CableTerminal + components: + - pos: 11.5,46.5 + parent: 0 + type: Transform +- uid: 544 + type: CableHV + components: + - pos: 11.5,46.5 + parent: 0 + type: Transform +- uid: 545 + type: CableHV + components: + - pos: 10.5,46.5 + parent: 0 + type: Transform +- uid: 546 + type: CableHV + components: + - pos: 9.5,46.5 + parent: 0 + type: Transform +- uid: 547 + type: CableHV + components: + - pos: 12.5,46.5 + parent: 0 + type: Transform +- uid: 548 + type: CableHV + components: + - pos: 13.5,46.5 + parent: 0 + type: Transform +- uid: 549 + type: CableHV + components: + - pos: 13.5,47.5 + parent: 0 + type: Transform +- uid: 550 + type: CableHV + components: + - pos: 11.5,47.5 + parent: 0 + type: Transform +- uid: 551 + type: CableHV + components: + - pos: 9.5,47.5 + parent: 0 + type: Transform +- uid: 552 + type: CableHV + components: + - pos: 11.5,45.5 + parent: 0 + type: Transform +- uid: 553 + type: CableHV + components: + - pos: 11.5,44.5 + parent: 0 + type: Transform +- uid: 554 + type: CableHV + components: + - pos: 11.5,43.5 + parent: 0 + type: Transform +- uid: 555 + type: CableHV + components: + - pos: 11.5,42.5 + parent: 0 + type: Transform +- uid: 556 + type: CableHV + components: + - pos: 10.5,42.5 + parent: 0 + type: Transform +- uid: 557 + type: CableHV + components: + - pos: 9.5,42.5 + parent: 0 + type: Transform +- uid: 558 + type: CableHV + components: + - pos: 8.5,42.5 + parent: 0 + type: Transform +- uid: 559 + type: SubstationBasic + components: + - pos: 8.5,42.5 + parent: 0 + type: Transform +- uid: 560 + type: Catwalk + components: + - pos: 10.5,45.5 + parent: 0 + type: Transform +- uid: 561 + type: Catwalk + components: + - pos: 10.5,46.5 + parent: 0 + type: Transform +- uid: 562 + type: Catwalk + components: + - pos: 11.5,46.5 + parent: 0 + type: Transform +- uid: 563 + type: Catwalk + components: + - pos: 12.5,46.5 + parent: 0 + type: Transform +- uid: 564 + type: Catwalk + components: + - pos: 12.5,45.5 + parent: 0 + type: Transform +- uid: 565 + type: Catwalk + components: + - pos: 11.5,45.5 + parent: 0 + type: Transform +- uid: 566 + type: WallSolid + components: + - pos: 8.5,43.5 + parent: 0 + type: Transform +- uid: 567 + type: WallSolid + components: + - pos: 9.5,43.5 + parent: 0 + type: Transform +- uid: 568 + type: CableApcExtension + components: + - pos: 12.5,43.5 + parent: 0 + type: Transform +- uid: 569 + type: APCBasic + components: + - pos: 13.5,43.5 + parent: 0 + type: Transform +- uid: 570 + type: WallSolid + components: + - pos: 13.5,43.5 + parent: 0 + type: Transform +- uid: 571 + type: WallSolid + components: + - pos: 14.5,43.5 + parent: 0 + type: Transform +- uid: 572 + type: CableApcExtension + components: + - pos: 13.5,43.5 + parent: 0 + type: Transform +- uid: 573 + type: CableMV + components: + - pos: 8.5,42.5 + parent: 0 + type: Transform +- uid: 574 + type: CableMV + components: + - pos: 9.5,42.5 + parent: 0 + type: Transform +- uid: 575 + type: CableMV + components: + - pos: 10.5,42.5 + parent: 0 + type: Transform +- uid: 576 + type: CableMV + components: + - pos: 11.5,42.5 + parent: 0 + type: Transform +- uid: 577 + type: CableMV + components: + - pos: 12.5,42.5 + parent: 0 + type: Transform +- uid: 578 + type: CableMV + components: + - pos: 13.5,42.5 + parent: 0 + type: Transform +- uid: 579 + type: CableMV + components: + - pos: 13.5,43.5 + parent: 0 + type: Transform +- uid: 580 + type: ShuttersWindow + components: + - pos: 10.5,43.5 + parent: 0 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 583 + type: SignalReceiver +- uid: 581 + type: ShuttersWindow + components: + - pos: 11.5,43.5 + parent: 0 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 583 + type: SignalReceiver +- uid: 582 + type: ShuttersWindow + components: + - pos: 12.5,43.5 + parent: 0 + type: Transform + - inputs: + Open: [] + Close: [] + Toggle: + - port: Pressed + uid: 583 + type: SignalReceiver +- uid: 583 + type: SignalButton + components: + - pos: 9.5,43.5 + parent: 0 + type: Transform + - outputs: + Pressed: + - port: Toggle + uid: 580 + - port: Toggle + uid: 581 + - port: Toggle + uid: 582 + type: SignalTransmitter +- uid: 584 + type: ClosetToolFilled + components: + - pos: 14.5,42.5 + parent: 0 + type: Transform +- uid: 585 + type: SignElectricalMed + components: + - pos: 8.5,43.5 + parent: 0 + type: Transform +- uid: 586 + type: PoweredSmallLight + components: + - rot: 3.141592653589793 rad + pos: 9.5,42.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 587 + type: PoweredSmallLight + components: + - rot: 3.141592653589793 rad + pos: 14.5,44.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 588 + type: PoweredSmallLight + components: + - rot: 3.141592653589793 rad + pos: 8.5,44.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 589 + type: Table + components: + - pos: 10.5,45.5 + parent: 0 + type: Transform +- uid: 590 + type: Table + components: + - pos: 12.5,45.5 + parent: 0 + type: Transform +- uid: 591 + type: ClothingEyesGlassesMeson + components: + - pos: 10.480986,45.607067 + parent: 0 + type: Transform +- uid: 592 + type: WallSolid + components: + - pos: 17.5,43.5 + parent: 0 + type: Transform +- uid: 593 + type: WallSolid + components: + - pos: 17.5,47.5 + parent: 0 + type: Transform +- uid: 594 + type: WallSolid + components: + - pos: 21.5,47.5 + parent: 0 + type: Transform +- uid: 595 + type: WallSolid + components: + - pos: 21.5,43.5 + parent: 0 + type: Transform +- uid: 596 + type: WindowTintedDirectional + components: + - pos: 18.5,43.5 + parent: 0 + type: Transform +- uid: 597 + type: WindowTintedDirectional + components: + - pos: 20.5,43.5 + parent: 0 + type: Transform +- uid: 598 + type: WindowTintedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 17.5,44.5 + parent: 0 + type: Transform +- uid: 599 + type: WindowTintedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 17.5,46.5 + parent: 0 + type: Transform +- uid: 600 + type: WindowTintedDirectional + components: + - rot: 3.141592653589793 rad + pos: 18.5,47.5 + parent: 0 + type: Transform +- uid: 601 + type: WindowTintedDirectional + components: + - rot: 3.141592653589793 rad + pos: 20.5,47.5 + parent: 0 + type: Transform +- uid: 602 + type: WindowTintedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 21.5,46.5 + parent: 0 + type: Transform +- uid: 603 + type: WindowTintedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 21.5,44.5 + parent: 0 + type: Transform +- uid: 604 + type: WindowTintedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 17.5,45.5 + parent: 0 + type: Transform +- uid: 605 + type: WindowTintedDirectional + components: + - rot: 3.141592653589793 rad + pos: 19.5,47.5 + parent: 0 + type: Transform +- uid: 606 + type: WindowTintedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 21.5,45.5 + parent: 0 + type: Transform +- uid: 607 + type: WindowTintedDirectional + components: + - pos: 19.5,43.5 + parent: 0 + type: Transform +- uid: 608 + type: Catwalk + components: + - pos: 17.5,45.5 + parent: 0 + type: Transform +- uid: 609 + type: Catwalk + components: + - pos: 18.5,45.5 + parent: 0 + type: Transform +- uid: 610 + type: Catwalk + components: + - pos: 19.5,45.5 + parent: 0 + type: Transform +- uid: 611 + type: Catwalk + components: + - pos: 20.5,45.5 + parent: 0 + type: Transform +- uid: 612 + type: Catwalk + components: + - pos: 21.5,45.5 + parent: 0 + type: Transform +- uid: 613 + type: Catwalk + components: + - pos: 19.5,44.5 + parent: 0 + type: Transform +- uid: 614 + type: Catwalk + components: + - pos: 19.5,43.5 + parent: 0 + type: Transform +- uid: 615 + type: Catwalk + components: + - pos: 19.5,46.5 + parent: 0 + type: Transform +- uid: 616 + type: Catwalk + components: + - pos: 19.5,47.5 + parent: 0 + type: Transform +- uid: 617 + type: MachineFrame + components: + - pos: 18.5,46.5 + parent: 0 + type: Transform +- uid: 618 + type: Protolathe + components: + - pos: 20.5,46.5 + parent: 0 + type: Transform +- uid: 619 + type: UnfinishedMachineFrame + components: + - pos: 20.5,44.5 + parent: 0 + type: Transform +- uid: 620 + type: TableReinforcedGlass + components: + - pos: 18.5,44.5 + parent: 0 + type: Transform +- uid: 621 + type: ResearchDisk10000 + components: + - pos: 18.512283,44.508656 + parent: 0 + type: Transform +- uid: 622 + type: PoweredlightExterior + components: + - rot: 1.5707963267948966 rad + pos: 18.5,43.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 623 + type: PoweredSmallLight + components: + - rot: 3.141592653589793 rad + pos: 17.5,48.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 624 + type: PoweredSmallLight + components: + - pos: 21.5,42.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 625 + type: SignShock + components: + - pos: 17.5,43.5 + parent: 0 + type: Transform +- uid: 626 + type: SignElectricalMed + components: + - pos: 21.5,47.5 + parent: 0 + type: Transform +- uid: 627 + type: TableGlass + components: + - pos: 4.5,35.5 + parent: 0 + type: Transform +- uid: 628 + type: TableGlass + components: + - pos: 5.5,35.5 + parent: 0 + type: Transform +- uid: 629 + type: TableGlass + components: + - pos: 6.5,35.5 + parent: 0 + type: Transform +- uid: 630 + type: Chair + components: + - rot: -1.5707963267948966 rad + pos: 3.5,35.5 + parent: 0 + type: Transform +- uid: 631 + type: Table + components: + - pos: 8.5,35.5 + parent: 0 + type: Transform +- uid: 632 + type: WindowDirectional + components: + - rot: -1.5707963267948966 rad + pos: 4.5,35.5 + parent: 0 + type: Transform +- uid: 633 + type: WindowDirectional + components: + - rot: 1.5707963267948966 rad + pos: 6.5,35.5 + parent: 0 + type: Transform +- uid: 634 + type: Poweredlight + components: + - pos: 2.5,36.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 635 + type: Poweredlight + components: + - rot: 3.141592653589793 rad + pos: 8.5,34.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 636 + type: Windoor + components: + - rot: -1.5707963267948966 rad + pos: 4.5,34.5 + parent: 0 + type: Transform +- uid: 637 + type: Windoor + components: + - rot: -1.5707963267948966 rad + pos: 4.5,36.5 + parent: 0 + type: Transform +- uid: 638 + type: Chair + components: + - rot: 1.5707963267948966 rad + pos: 1.5,35.5 + parent: 0 + type: Transform +- uid: 639 + type: Windoor + components: + - rot: 1.5707963267948966 rad + pos: 6.5,34.5 + parent: 0 + type: Transform +- uid: 640 + type: Windoor + components: + - rot: 1.5707963267948966 rad + pos: 6.5,36.5 + parent: 0 + type: Transform +- uid: 641 + type: PottedPlantRandomPlastic + components: + - pos: 2.5,35.5 + parent: 0 + type: Transform +- uid: 642 + type: VendingMachineCoffee + components: + - flags: SessionSpecific + type: MetaData + - pos: 7.5,35.5 + parent: 0 + type: Transform +- uid: 643 + type: WelderMini + components: + - pos: 8.596551,35.528828 + parent: 0 + type: Transform +- uid: 644 + type: Stool + components: + - rot: -1.5707963267948966 rad + pos: 9.5,35.5 + parent: 0 + type: Transform +- uid: 645 + type: PlasmaReinforcedWindowDirectional + components: + - rot: 3.141592653589793 rad + pos: 24.5,34.5 + parent: 0 + type: Transform +- uid: 646 + type: FoamedAluminiumMetal + components: + - pos: 19.5,36.5 + parent: 0 + type: Transform +- uid: 647 + type: FoamedAluminiumMetal + components: + - pos: 16.5,34.5 + parent: 0 + type: Transform +- uid: 648 + type: FoamedAluminiumMetal + components: + - pos: 17.5,34.5 + parent: 0 + type: Transform +- uid: 649 + type: FoamedAluminiumMetal + components: + - pos: 18.5,34.5 + parent: 0 + type: Transform +- uid: 650 + type: FoamedAluminiumMetal + components: + - pos: 16.5,35.5 + parent: 0 + type: Transform +- uid: 651 + type: FoamedAluminiumMetal + components: + - pos: 17.5,35.5 + parent: 0 + type: Transform +- uid: 652 + type: FoamedAluminiumMetal + components: + - pos: 18.5,35.5 + parent: 0 + type: Transform +- uid: 653 + type: FoamedAluminiumMetal + components: + - pos: 17.5,36.5 + parent: 0 + type: Transform +- uid: 654 + type: FoamedAluminiumMetal + components: + - pos: 18.5,36.5 + parent: 0 + type: Transform +- uid: 655 + type: FoamedAluminiumMetal + components: + - pos: 15.5,35.5 + parent: 0 + type: Transform +- uid: 656 + type: FoamedAluminiumMetal + components: + - pos: 16.5,36.5 + parent: 0 + type: Transform +- uid: 657 + type: Poweredlight + components: + - pos: 14.5,36.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 658 + type: SheetPlasteel + components: + - pos: 15.499195,34.56076 + parent: 0 + type: Transform +- uid: 659 + type: Rack + components: + - pos: 20.5,36.5 + parent: 0 + type: Transform +- uid: 660 + type: Rack + components: + - pos: 21.5,36.5 + parent: 0 + type: Transform +- uid: 661 + type: ClothingHeadHatWeldingMaskFlame + components: + - pos: 21.418028,36.658634 + parent: 0 + type: Transform +- uid: 662 + type: ClothingHeadHatWeldingMaskFlameBlue + components: + - pos: 21.605528,36.471134 + parent: 0 + type: Transform +- uid: 663 + type: Welder + components: + - pos: 20.605528,36.564884 + parent: 0 + type: Transform +- uid: 664 + type: Floodlight + components: + - pos: 19.496153,34.502384 + parent: 0 + type: Transform +- uid: 665 + type: Barricade + components: + - pos: 22.5,36.5 + parent: 0 + type: Transform +- uid: 666 + type: TableWood + components: + - pos: 20.5,34.5 + parent: 0 + type: Transform +- uid: 667 + type: TableWood + components: + - pos: 21.5,34.5 + parent: 0 + type: Transform +- uid: 668 + type: PottedPlantRandomPlastic + components: + - pos: 12.5,36.5 + parent: 0 + type: Transform +- uid: 669 + type: MaterialWoodPlank + components: + - pos: 20.62062,34.599228 + parent: 0 + type: Transform +- uid: 670 + type: SheetSteel + components: + - pos: 21.511246,34.536728 + parent: 0 + type: Transform +- uid: 671 + type: Girder + components: + - pos: 14.5,34.5 + parent: 0 + type: Transform +- uid: 672 + type: PlasmaReinforcedWindowDirectional + components: + - rot: 1.5707963267948966 rad + pos: 24.5,34.5 + parent: 0 + type: Transform +- uid: 673 + type: PlasmaReinforcedWindowDirectional + components: + - pos: 24.5,36.5 + parent: 0 + type: Transform +- uid: 674 + type: PlasmaReinforcedWindowDirectional + components: + - rot: 1.5707963267948966 rad + pos: 24.5,36.5 + parent: 0 + type: Transform +- uid: 675 + type: PlasmaReinforcedWindowDirectional + components: + - rot: -1.5707963267948966 rad + pos: 34.5,36.5 + parent: 0 + type: Transform +- uid: 676 + type: Poweredlight + components: + - rot: 3.141592653589793 rad + pos: 31.5,34.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 677 + type: PlasmaReinforcedWindowDirectional + components: + - rot: -1.5707963267948966 rad + pos: 34.5,34.5 + parent: 0 + type: Transform +- uid: 678 + type: PlasmaReinforcedWindowDirectional + components: + - rot: 3.141592653589793 rad + pos: 34.5,34.5 + parent: 0 + type: Transform +- uid: 679 + type: PlasmaReinforcedWindowDirectional + components: + - pos: 34.5,36.5 + parent: 0 + type: Transform +- uid: 680 + type: Poweredlight + components: + - pos: 27.5,36.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 681 + type: Table + components: + - pos: 33.5,36.5 + parent: 0 + type: Transform +- uid: 682 + type: Chair + components: + - rot: 3.141592653589793 rad + pos: 26.5,34.5 + parent: 0 + type: Transform +- uid: 683 + type: Chair + components: + - rot: 3.141592653589793 rad + pos: 25.5,34.5 + parent: 0 + type: Transform +- uid: 684 + type: Chair + components: + - pos: 32.5,36.5 + parent: 0 + type: Transform +- uid: 685 + type: WallSolid + components: + - pos: 3.5,32.5 + parent: 0 + type: Transform +- uid: 686 + type: ClothingOuterCoatLab + components: + - pos: 33.54252,36.551563 + parent: 0 + type: Transform +- uid: 687 + type: WallSolid + components: + - pos: 9.5,30.5 + parent: 0 + type: Transform +- uid: 688 + type: WindowTintedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 3.5,31.5 + parent: 0 + type: Transform +- uid: 689 + type: WindowTintedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 9.5,31.5 + parent: 0 + type: Transform +- uid: 690 + type: Windoor + components: + - rot: -1.5707963267948966 rad + pos: 9.5,32.5 + parent: 0 + type: Transform +- uid: 691 + type: Windoor + components: + - rot: 1.5707963267948966 rad + pos: 3.5,30.5 + parent: 0 + type: Transform +- uid: 692 + type: Table + components: + - pos: 3.5,31.5 + parent: 0 + type: Transform +- uid: 693 + type: Table + components: + - pos: 2.5,31.5 + parent: 0 + type: Transform +- uid: 694 + type: Table + components: + - pos: 1.5,31.5 + parent: 0 + type: Transform +- uid: 695 + type: Table + components: + - pos: 1.5,32.5 + parent: 0 + type: Transform +- uid: 696 + type: Chair + components: + - pos: 0.5,32.5 + parent: 0 + type: Transform +- uid: 697 + type: ChairOfficeDark + components: + - pos: 2.5,32.5 + parent: 0 + type: Transform +- uid: 698 + type: SignSecureMed + components: + - pos: 3.5,32.5 + parent: 0 + type: Transform +- uid: 699 + type: LockerScienceFilled + components: + - pos: 4.5,32.5 + parent: 0 + type: Transform +- uid: 700 + type: LockerScienceFilled + components: + - pos: 8.5,30.5 + parent: 0 + type: Transform +- uid: 701 + type: Stool + components: + - rot: -1.5707963267948966 rad + pos: 5.5,32.5 + parent: 0 + type: Transform +- uid: 702 + type: Stool + components: + - rot: 1.5707963267948966 rad + pos: 7.5,30.5 + parent: 0 + type: Transform +- uid: 703 + type: PoweredlightEmpty + components: + - rot: 3.141592653589793 rad + pos: 1.5,30.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 704 + type: Poweredlight + components: + - pos: 11.5,32.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 705 + type: Chair + components: + - rot: -1.5707963267948966 rad + pos: 12.5,30.5 + parent: 0 + type: Transform +- uid: 706 + type: Chair + components: + - rot: 1.5707963267948966 rad + pos: 10.5,30.5 + parent: 0 + type: Transform +- uid: 707 + type: TableGlass + components: + - rot: 1.5707963267948966 rad + pos: 11.5,30.5 + parent: 0 + type: Transform +- uid: 708 + type: RandomFoodSingle + components: + - pos: 11.5,30.5 + parent: 0 + type: Transform +- uid: 709 + type: TableReinforced + components: + - pos: 1.5,25.5 + parent: 0 + type: Transform +- uid: 710 + type: TableReinforced + components: + - pos: 1.5,26.5 + parent: 0 + type: Transform +- uid: 711 + type: TableReinforced + components: + - pos: 1.5,27.5 + parent: 0 + type: Transform +- uid: 712 + type: IngotGold + components: + - pos: 1.5054436,26.820345 + parent: 0 + type: Transform +- uid: 713 + type: ToolboxGoldFilled + components: + - pos: 1.492549,27.312542 + parent: 0 + type: Transform +- uid: 714 + type: PoweredSmallLight + components: + - rot: -1.5707963267948966 rad + pos: 2.5,25.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 715 + type: MopBucket + components: + - pos: 4.4881024,27.562542 + parent: 0 + type: Transform +- uid: 716 + type: MopItem + components: + - pos: 4.4881024,27.500042 + parent: 0 + type: Transform +- uid: 717 + type: SinkWide + components: + - rot: 1.5707963267948966 rad + pos: 4.5,25.5 + parent: 0 + type: Transform +- uid: 718 + type: FloorDrain + components: + - pos: 4.5,25.5 + parent: 0 + type: Transform + - fixtures: [] + type: Fixtures +- uid: 719 + type: Rack + components: + - pos: 4.5,24.5 + parent: 0 + type: Transform +- uid: 720 + type: SprayBottleSpaceCleaner + components: + - pos: 4.3731804,24.592852 + parent: 0 + type: Transform +- uid: 721 + type: RandomSpawner + components: + - pos: 9.5,34.5 + parent: 0 + type: Transform +- uid: 722 + type: RandomSpawner + components: + - pos: 5.5,38.5 + parent: 0 + type: Transform +- uid: 723 + type: RandomSpawner + components: + - pos: 29.5,40.5 + parent: 0 + type: Transform +- uid: 724 + type: RandomSpawner + components: + - pos: 18.5,38.5 + parent: 0 + type: Transform +- uid: 725 + type: RandomSpawner + components: + - pos: 37.5,38.5 + parent: 0 + type: Transform +- uid: 726 + type: RandomSpawner + components: + - pos: 41.5,40.5 + parent: 0 + type: Transform +- uid: 727 + type: ClosetJanitorFilled + components: + - pos: 6.5,27.5 + parent: 0 + type: Transform +- uid: 728 + type: CrateServiceJanitorialSupplies + components: + - pos: 6.5,28.5 + parent: 0 + type: Transform +- uid: 729 + type: VehicleJanicartDestroyed + components: + - pos: 6.5,25.5 + parent: 0 + type: Transform +- uid: 730 + type: ClothingUniformJumpskirtJanimaid + components: + - pos: 4.5678988,24.535187 + parent: 0 + type: Transform +- uid: 731 + type: ClosetL3JanitorFilled + components: + - pos: 4.5,28.5 + parent: 0 + type: Transform +- uid: 732 + type: FoodTinBeans + components: + - pos: 1.4379241,25.941437 + parent: 0 + type: Transform +- uid: 733 + type: FoodTinBeans + components: + - pos: 1.5941741,25.738312 + parent: 0 + type: Transform +- uid: 734 + type: PottedPlantRandomPlastic + components: + - pos: 9.5,31.5 + parent: 0 + type: Transform +- uid: 735 + type: PottedPlantRandomPlastic + components: + - pos: 5.5,30.5 + parent: 0 + type: Transform +- uid: 736 + type: PottedPlantRandomPlastic + components: + - pos: 7.5,32.5 + parent: 0 + type: Transform +- uid: 737 + type: PoweredSmallLightEmpty + components: + - rot: -1.5707963267948966 rad + pos: 6.5,25.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 738 + type: PoweredlightEmpty + components: + - rot: 3.141592653589793 rad + pos: 14.5,34.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 739 + type: ReinforcedWindow + components: + - pos: 17.5,30.5 + parent: 0 + type: Transform +- uid: 740 + type: ReinforcedWindow + components: + - pos: 17.5,32.5 + parent: 0 + type: Transform +- uid: 741 + type: AirlockScienceGlassLocked + components: + - pos: 17.5,31.5 + parent: 0 + type: Transform +- uid: 742 + type: Grille + components: + - pos: 17.5,30.5 + parent: 0 + type: Transform +- uid: 743 + type: Grille + components: + - pos: 17.5,32.5 + parent: 0 + type: Transform +- uid: 744 + type: ClosetEmergencyFilledRandom + components: + - pos: 16.5,32.5 + parent: 0 + type: Transform +- uid: 745 + type: ClosetMaintenanceFilledRandom + components: + - pos: 14.5,32.5 + parent: 0 + type: Transform +- uid: 746 + type: ClosetRadiationSuitFilled + components: + - pos: 43.5,40.5 + parent: 0 + type: Transform +- uid: 747 + type: ClosetFireFilled + components: + - pos: 1.5,40.5 + parent: 0 + type: Transform +- uid: 748 + type: AtmosFixFreezerMarker + components: + - pos: 18.5,43.5 + parent: 0 + type: Transform +- uid: 749 + type: AtmosFixFreezerMarker + components: + - pos: 18.5,44.5 + parent: 0 + type: Transform +- uid: 750 + type: AtmosFixFreezerMarker + components: + - pos: 18.5,45.5 + parent: 0 + type: Transform +- uid: 751 + type: AtmosFixFreezerMarker + components: + - pos: 18.5,46.5 + parent: 0 + type: Transform +- uid: 752 + type: AtmosFixFreezerMarker + components: + - pos: 18.5,47.5 + parent: 0 + type: Transform +- uid: 753 + type: AtmosFixFreezerMarker + components: + - pos: 19.5,43.5 + parent: 0 + type: Transform +- uid: 754 + type: AtmosFixFreezerMarker + components: + - pos: 19.5,44.5 + parent: 0 + type: Transform +- uid: 755 + type: AtmosFixFreezerMarker + components: + - pos: 19.5,45.5 + parent: 0 + type: Transform +- uid: 756 + type: AtmosFixFreezerMarker + components: + - pos: 19.5,46.5 + parent: 0 + type: Transform +- uid: 757 + type: AtmosFixFreezerMarker + components: + - pos: 19.5,47.5 + parent: 0 + type: Transform +- uid: 758 + type: AtmosFixFreezerMarker + components: + - pos: 20.5,43.5 + parent: 0 + type: Transform +- uid: 759 + type: AtmosFixFreezerMarker + components: + - pos: 20.5,44.5 + parent: 0 + type: Transform +- uid: 760 + type: AtmosFixFreezerMarker + components: + - pos: 20.5,45.5 + parent: 0 + type: Transform +- uid: 761 + type: AtmosFixFreezerMarker + components: + - pos: 20.5,46.5 + parent: 0 + type: Transform +- uid: 762 + type: AtmosFixFreezerMarker + components: + - pos: 20.5,47.5 + parent: 0 + type: Transform +- uid: 763 + type: AtmosFixFreezerMarker + components: + - pos: 21.5,44.5 + parent: 0 + type: Transform +- uid: 764 + type: AtmosFixFreezerMarker + components: + - pos: 21.5,45.5 + parent: 0 + type: Transform +- uid: 765 + type: AtmosFixFreezerMarker + components: + - pos: 21.5,46.5 + parent: 0 + type: Transform +- uid: 766 + type: AtmosFixFreezerMarker + components: + - pos: 17.5,44.5 + parent: 0 + type: Transform +- uid: 767 + type: AtmosFixFreezerMarker + components: + - pos: 17.5,45.5 + parent: 0 + type: Transform +- uid: 768 + type: AtmosFixFreezerMarker + components: + - pos: 17.5,46.5 + parent: 0 + type: Transform +- uid: 769 + type: Lamp + components: + - pos: 1.4880867,32.68946 + parent: 0 + type: Transform +- uid: 770 + type: Poweredlight + components: + - pos: 15.5,32.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 771 + type: Poweredlight + components: + - pos: 24.5,32.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 772 + type: TableWood + components: + - pos: 24.5,32.5 + parent: 0 + type: Transform +- uid: 773 + type: TableWood + components: + - pos: 24.5,31.5 + parent: 0 + type: Transform +- uid: 774 + type: ComfyChair + components: + - rot: -1.5707963267948966 rad + pos: 25.5,31.5 + parent: 0 + type: Transform +- uid: 775 + type: LampGold + components: + - rot: 1.5707963267948966 rad + pos: 24.5,32.5 + parent: 0 + type: Transform +- uid: 776 + type: BoxFolderBlue + components: + - pos: 22.48359,30.550323 + parent: 0 + type: Transform +- uid: 777 + type: Table + components: + - rot: 1.5707963267948966 rad + pos: 22.5,32.5 + parent: 0 + type: Transform +- uid: 778 + type: Table + components: + - rot: 1.5707963267948966 rad + pos: 22.5,30.5 + parent: 0 + type: Transform +- uid: 779 + type: Chair + components: + - rot: 1.5707963267948966 rad + pos: 21.5,32.5 + parent: 0 + type: Transform +- uid: 780 + type: Chair + components: + - rot: 1.5707963267948966 rad + pos: 21.5,30.5 + parent: 0 + type: Transform +- uid: 781 + type: Table + components: + - rot: 1.5707963267948966 rad + pos: 19.5,32.5 + parent: 0 + type: Transform +- uid: 782 + type: Table + components: + - rot: 1.5707963267948966 rad + pos: 19.5,30.5 + parent: 0 + type: Transform +- uid: 783 + type: Chair + components: + - rot: 1.5707963267948966 rad + pos: 18.5,32.5 + parent: 0 + type: Transform +- uid: 784 + type: Chair + components: + - rot: 1.5707963267948966 rad + pos: 18.5,30.5 + parent: 0 + type: Transform +- uid: 785 + type: PaperBin5 + components: + - pos: 24.5,31.5 + parent: 0 + type: Transform +- uid: 786 + type: CyberPen + components: + - pos: 19.52091,32.612823 + parent: 0 + type: Transform +- uid: 787 + type: Stool + components: + - pos: 15.5,32.5 + parent: 0 + type: Transform +- uid: 788 + type: Stool + components: + - rot: 3.141592653589793 rad + pos: 16.5,30.5 + parent: 0 + type: Transform +- uid: 789 + type: Stool + components: + - rot: 3.141592653589793 rad + pos: 15.5,30.5 + parent: 0 + type: Transform +- uid: 790 + type: Stool + components: + - rot: 3.141592653589793 rad + pos: 14.5,30.5 + parent: 0 + type: Transform +- uid: 791 + type: WindowTintedDirectional + components: + - rot: 3.141592653589793 rad + pos: 10.5,25.5 + parent: 0 + type: Transform +- uid: 792 + type: WindowTintedDirectional + components: + - pos: 10.5,28.5 + parent: 0 + type: Transform +- uid: 793 + type: WindowTintedDirectional + components: + - pos: 10.5,27.5 + parent: 0 + type: Transform +- uid: 794 + type: WindowTintedDirectional + components: + - pos: 8.5,28.5 + parent: 0 + type: Transform +- uid: 795 + type: WindowTintedDirectional + components: + - pos: 8.5,27.5 + parent: 0 + type: Transform +- uid: 796 + type: FloorDrain + components: + - pos: 8.5,24.5 + parent: 0 + type: Transform + - fixtures: [] + type: Fixtures +- uid: 797 + type: WindowTintedDirectional + components: + - rot: 3.141592653589793 rad + pos: 8.5,25.5 + parent: 0 + type: Transform +- uid: 798 + type: WindowTintedDirectional + components: + - rot: 3.141592653589793 rad + pos: 10.5,24.5 + parent: 0 + type: Transform +- uid: 799 + type: ToiletEmpty + components: + - rot: -1.5707963267948966 rad + pos: 10.5,25.5 + parent: 0 + type: Transform +- uid: 800 + type: RandomSoap + components: + - pos: 8.5,24.5 + parent: 0 + type: Transform +- uid: 801 + type: ToiletEmpty + components: + - rot: 1.5707963267948966 rad + pos: 8.5,27.5 + parent: 0 + type: Transform +- uid: 802 + type: ToiletEmpty + components: + - rot: -1.5707963267948966 rad + pos: 10.5,27.5 + parent: 0 + type: Transform +- uid: 803 + type: SinkWide + components: + - rot: -1.5707963267948966 rad + pos: 10.5,24.5 + parent: 0 + type: Transform +- uid: 804 + type: SinkWide + components: + - rot: -1.5707963267948966 rad + pos: 10.5,28.5 + parent: 0 + type: Transform +- uid: 805 + type: SinkWide + components: + - rot: 1.5707963267948966 rad + pos: 8.5,28.5 + parent: 0 + type: Transform +- uid: 806 + type: HospitalCurtainsOpen + components: + - pos: 8.5,24.5 + parent: 0 + type: Transform +- uid: 807 + type: PowerCellRecharger + components: + - pos: 3.5,31.5 + parent: 0 + type: Transform +- uid: 808 + type: PowerCellRecharger + components: + - pos: 12.5,45.5 + parent: 0 + type: Transform +- uid: 809 + type: WindoorSecure + components: + - rot: -1.5707963267948966 rad + pos: 9.5,42.5 + parent: 0 + type: Transform +- uid: 810 + type: LockerScienceFilled + components: + - pos: 14.5,25.5 + parent: 0 + type: Transform +- uid: 811 + type: LockerScienceFilled + components: + - pos: 14.5,26.5 + parent: 0 + type: Transform +- uid: 812 + type: LockerScienceFilled + components: + - pos: 14.5,27.5 + parent: 0 + type: Transform +- uid: 813 + type: Stool + components: + - rot: 1.5707963267948966 rad + pos: 13.5,25.5 + parent: 0 + type: Transform +- uid: 814 + type: Stool + components: + - rot: 1.5707963267948966 rad + pos: 13.5,26.5 + parent: 0 + type: Transform +- uid: 815 + type: Stool + components: + - rot: 1.5707963267948966 rad + pos: 13.5,27.5 + parent: 0 + type: Transform +- uid: 816 + type: Table + components: + - pos: 14.5,24.5 + parent: 0 + type: Transform +- uid: 817 + type: Table + components: + - pos: 14.5,28.5 + parent: 0 + type: Transform +- uid: 818 + type: FlashlightLantern + components: + - pos: 14.29982,28.712414 + parent: 0 + type: Transform +- uid: 819 + type: FlashlightLantern + components: + - pos: 14.51857,28.524914 + parent: 0 + type: Transform +- uid: 820 + type: SheetPGlass + components: + - pos: 14.534195,24.571789 + parent: 0 + type: Transform +- uid: 821 + type: MaterialDiamond + components: + - pos: 1.5085931,27.696789 + parent: 0 + type: Transform +- uid: 822 + type: SilverOre + components: + - pos: 1.5210686,26.30472 + parent: 0 + type: Transform +- uid: 823 + type: UraniumOre + components: + - pos: 10.548276,25.257845 + parent: 0 + type: Transform +- uid: 824 + type: CableApcStack + components: + - pos: 6.439933,35.56771 + parent: 0 + type: Transform +- uid: 825 + type: CableMVStack + components: + - pos: 12.486409,39.468937 + parent: 0 + type: Transform +- uid: 826 + type: Rack + components: + - pos: 12.5,28.5 + parent: 0 + type: Transform +- uid: 827 + type: ClothingOuterCoatJensen + components: + - pos: 12.472879,28.68102 + parent: 0 + type: Transform +- uid: 828 + type: ClothingOuterCoatLab + components: + - pos: 12.613504,28.540396 + parent: 0 + type: Transform +- uid: 829 + type: RockGuitarInstrument + components: + - pos: 10.533063,27.58727 + parent: 0 + type: Transform +- uid: 830 + type: PoweredSmallLight + components: + - rot: 1.5707963267948966 rad + pos: 12.5,25.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 831 + type: RandomSpawner + components: + - pos: 6.5,45.5 + parent: 0 + type: Transform +- uid: 832 + type: Recycler + components: + - rot: 1.5707963267948966 rad + pos: 6.5,24.5 + parent: 0 + type: Transform +- uid: 833 + type: PlasmaCanister + components: + - pos: 16.5,27.5 + parent: 0 + type: Transform +- uid: 834 + type: NitrousOxideCanister + components: + - pos: 16.5,26.5 + parent: 0 + type: Transform +- uid: 835 + type: SalvageCanisterSpawner + components: + - pos: 16.5,25.5 + parent: 0 + type: Transform +- uid: 836 + type: PortableScrubber + components: + - pos: 16.5,28.5 + parent: 0 + type: Transform +- uid: 837 + type: Rack + components: + - pos: 16.5,24.5 + parent: 0 + type: Transform +- uid: 838 + type: MachineAPE + components: + - rot: 1.5707963267948966 rad + pos: 22.5,25.5 + parent: 0 + type: Transform +- uid: 839 + type: MachineAPE + components: + - rot: 1.5707963267948966 rad + pos: 22.5,26.5 + parent: 0 + type: Transform +- uid: 840 + type: MachineAPE + components: + - rot: 1.5707963267948966 rad + pos: 22.5,27.5 + parent: 0 + type: Transform +- uid: 841 + type: SheetRPGlass + components: + - pos: 16.508902,24.578423 + parent: 0 + type: Transform +- uid: 842 + type: WindowReinforcedDirectional + components: + - pos: 22.5,28.5 + parent: 0 + type: Transform +- uid: 843 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 22.5,24.5 + parent: 0 + type: Transform +- uid: 844 + type: SpawnVehicleATV + components: + - pos: 20.5,25.5 + parent: 0 + type: Transform +- uid: 845 + type: Rack + components: + - pos: 20.5,24.5 + parent: 0 + type: Transform +- uid: 846 + type: VehicleKeyATV + components: + - pos: 20.483374,24.635374 + parent: 0 + type: Transform +- uid: 847 + type: ClosetBombFilled + components: + - pos: 20.5,28.5 + parent: 0 + type: Transform +- uid: 848 + type: PoweredSmallLightEmpty + components: + - rot: -1.5707963267948966 rad + pos: 18.5,26.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 849 + type: PoweredSmallLightEmpty + components: + - rot: 1.5707963267948966 rad + pos: 20.5,26.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 850 + type: CarpetPurple + components: + - pos: 30.5,31.5 + parent: 0 + type: Transform +- uid: 851 + type: CarpetPurple + components: + - pos: 31.5,31.5 + parent: 0 + type: Transform +- uid: 852 + type: CarpetPurple + components: + - pos: 32.5,31.5 + parent: 0 + type: Transform +- uid: 853 + type: CarpetPurple + components: + - pos: 33.5,31.5 + parent: 0 + type: Transform +- uid: 854 + type: CarpetPurple + components: + - pos: 34.5,31.5 + parent: 0 + type: Transform +- uid: 855 + type: CarpetPurple + components: + - pos: 35.5,31.5 + parent: 0 + type: Transform +- uid: 856 + type: CarpetPurple + components: + - pos: 36.5,31.5 + parent: 0 + type: Transform +- uid: 857 + type: CarpetPurple + components: + - pos: 37.5,31.5 + parent: 0 + type: Transform +- uid: 858 + type: CarpetPurple + components: + - pos: 38.5,31.5 + parent: 0 + type: Transform +- uid: 859 + type: TableCarpet + components: + - pos: 29.5,32.5 + parent: 0 + type: Transform +- uid: 860 + type: TableCarpet + components: + - pos: 31.5,32.5 + parent: 0 + type: Transform +- uid: 861 + type: TableCarpet + components: + - pos: 39.5,32.5 + parent: 0 + type: Transform +- uid: 862 + type: TableCarpet + components: + - pos: 37.5,32.5 + parent: 0 + type: Transform +- uid: 863 + type: TableCarpet + components: + - pos: 33.5,30.5 + parent: 0 + type: Transform +- uid: 864 + type: TableCarpet + components: + - pos: 35.5,30.5 + parent: 0 + type: Transform +- uid: 865 + type: DrinkGoldenCup + components: + - pos: 31.489838,32.583374 + parent: 0 + type: Transform +- uid: 866 + type: DrinkCognacBottleFull + components: + - pos: 37.505463,32.677124 + parent: 0 + type: Transform +- uid: 867 + type: MaintenanceFluffSpawner + components: + - pos: 39.5,32.5 + parent: 0 + type: Transform +- uid: 868 + type: MaintenanceFluffSpawner + components: + - pos: 29.5,32.5 + parent: 0 + type: Transform +- uid: 869 + type: MaintenanceFluffSpawner + components: + - pos: 33.5,30.5 + parent: 0 + type: Transform +- uid: 870 + type: Poweredlight + components: + - pos: 30.5,32.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 871 + type: MaintenanceFluffSpawner + components: + - pos: 35.5,30.5 + parent: 0 + type: Transform +- uid: 872 + type: Poweredlight + components: + - pos: 38.5,32.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 873 + type: CrateFilledSpawner + components: + - pos: 18.5,24.5 + parent: 0 + type: Transform +- uid: 874 + type: CrateFilledSpawner + components: + - pos: 22.5,34.5 + parent: 0 + type: Transform +- uid: 875 + type: ToyRubberDuck + components: + - pos: 8.491199,25.423159 + parent: 0 + type: Transform +- uid: 876 + type: Stool + components: + - pos: 8.5,25.5 + parent: 0 + type: Transform +- uid: 877 + type: Windoor + components: + - rot: 3.141592653589793 rad + pos: 9.5,25.5 + parent: 0 + type: Transform +- uid: 878 + type: Windoor + components: + - pos: 9.5,27.5 + parent: 0 + type: Transform +- uid: 879 + type: MaterialCloth + components: + - pos: 8.569059,28.508856 + parent: 0 + type: Transform +- uid: 880 + type: MaterialDurathread + components: + - pos: 1.4759097,31.629063 + parent: 0 + type: Transform +- uid: 881 + type: WeldingFuelTankFull + components: + - pos: 14.5,44.5 + parent: 0 + type: Transform +- uid: 882 + type: Rack + components: + - pos: 22.5,28.5 + parent: 0 + type: Transform +- uid: 883 + type: AnomalyVesselCircuitboard + components: + - pos: 22.494812,28.596468 + parent: 0 + type: Transform +- uid: 884 + type: WallSolid + components: + - pos: 1.5,21.5 + parent: 0 + type: Transform +- uid: 885 + type: WallSolid + components: + - pos: 1.5,22.5 + parent: 0 + type: Transform +- uid: 886 + type: WallSolid + components: + - pos: 3.5,19.5 + parent: 0 + type: Transform +- uid: 887 + type: WallSolid + components: + - pos: 4.5,19.5 + parent: 0 + type: Transform +- uid: 888 + type: AirlockFreezer + components: + - pos: 3.5,18.5 + parent: 0 + type: Transform +- uid: 889 + type: ToiletEmpty + components: + - rot: -1.5707963267948966 rad + pos: 4.5,18.5 + parent: 0 + type: Transform +- uid: 890 + type: SinkWide + components: + - pos: 1.5,20.5 + parent: 0 + type: Transform +- uid: 891 + type: SinkWide + components: + - rot: -1.5707963267948966 rad + pos: 2.5,19.5 + parent: 0 + type: Transform +- uid: 892 + type: Mirror + components: + - pos: 1.5,21.5 + parent: 0 + type: Transform +- uid: 893 + type: Mirror + components: + - rot: -1.5707963267948966 rad + pos: 3.5,19.5 + parent: 0 + type: Transform +- uid: 894 + type: Rack + components: + - pos: 0.5,18.5 + parent: 0 + type: Transform +- uid: 895 + type: ToyRubberDuck + components: + - pos: 0.5,18.5 + parent: 0 + type: Transform +- uid: 896 + type: FloorDrain + components: + - pos: 0.5,22.5 + parent: 0 + type: Transform + - fixtures: [] + type: Fixtures +- uid: 897 + type: HospitalCurtainsOpen + components: + - pos: 0.5,22.5 + parent: 0 + type: Transform +- uid: 898 + type: RandomSoap + components: + - pos: 0.5,22.5 + parent: 0 + type: Transform +- uid: 899 + type: ClosetEmergencyFilledRandom + components: + - pos: 4.5,22.5 + parent: 0 + type: Transform +- uid: 900 + type: ClosetFireFilled + components: + - pos: 3.5,22.5 + parent: 0 + type: Transform +- uid: 901 + type: Stool + components: + - rot: 3.141592653589793 rad + pos: 4.5,21.5 + parent: 0 + type: Transform +- uid: 902 + type: Stool + components: + - rot: 3.141592653589793 rad + pos: 3.5,21.5 + parent: 0 + type: Transform +- uid: 903 + type: PoweredSmallLight + components: + - rot: 1.5707963267948966 rad + pos: 0.5,19.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 904 + type: PoweredSmallLight + components: + - rot: 1.5707963267948966 rad + pos: 2.5,22.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 905 + type: CannabisSeeds + components: + - pos: 4.5,18.5 + parent: 0 + type: Transform +- uid: 906 + type: CableApcExtension + components: + - pos: 9.5,18.5 + parent: 0 + type: Transform +- uid: 907 + type: CableApcExtension + components: + - pos: 10.5,21.5 + parent: 0 + type: Transform +- uid: 908 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 7.5,20.5 + parent: 0 + type: Transform +- uid: 909 + type: WindowReinforcedDirectional + components: + - pos: 8.5,19.5 + parent: 0 + type: Transform +- uid: 910 + type: CableApcExtension + components: + - pos: 9.5,22.5 + parent: 0 + type: Transform +- uid: 911 + type: CableApcExtension + components: + - pos: 7.5,22.5 + parent: 0 + type: Transform +- uid: 912 + type: CableApcExtension + components: + - pos: 9.5,19.5 + parent: 0 + type: Transform +- uid: 913 + type: CableApcExtension + components: + - pos: 10.5,19.5 + parent: 0 + type: Transform +- uid: 914 + type: CableApcExtension + components: + - pos: 9.5,21.5 + parent: 0 + type: Transform +- uid: 915 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 8.5,21.5 + parent: 0 + type: Transform +- uid: 916 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 9.5,20.5 + parent: 0 + type: Transform +- uid: 917 + type: WindowReinforcedDirectional + components: + - pos: 9.5,20.5 + parent: 0 + type: Transform +- uid: 918 + type: WindowReinforcedDirectional + components: + - pos: 7.5,20.5 + parent: 0 + type: Transform +- uid: 919 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 8.5,19.5 + parent: 0 + type: Transform +- uid: 920 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 8.5,19.5 + parent: 0 + type: Transform +- uid: 921 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 8.5,21.5 + parent: 0 + type: Transform +- uid: 922 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 7.5,20.5 + parent: 0 + type: Transform +- uid: 923 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 9.5,20.5 + parent: 0 + type: Transform +- uid: 924 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 8.5,21.5 + parent: 0 + type: Transform +- uid: 925 + type: TableGlass + components: + - pos: 6.5,22.5 + parent: 0 + type: Transform +- uid: 926 + type: PlushieSharkGrey + components: + - pos: 6.4745436,18.474607 + parent: 0 + type: Transform +- uid: 927 + type: PottedPlant10 + components: + - pos: 10.505794,22.255857 + parent: 0 + type: Transform +- uid: 928 + type: VendingMachineCigs + components: + - flags: SessionSpecific + type: MetaData + - pos: 10.5,18.5 + parent: 0 + type: Transform +- uid: 929 + type: ChairFolding + components: + - rot: -1.5707963267948966 rad + pos: 7.5,22.5 + parent: 0 + type: Transform +- uid: 930 + type: Rack + components: + - pos: 6.5,18.5 + parent: 0 + type: Transform +- uid: 931 + type: ChairFolding + components: + - rot: 3.141592653589793 rad + pos: 6.5,21.5 + parent: 0 + type: Transform +- uid: 932 + type: Poweredlight + components: + - rot: -1.5707963267948966 rad + pos: 10.5,19.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 933 + type: Poweredlight + components: + - rot: 1.5707963267948966 rad + pos: 6.5,21.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 934 + type: RandomVending + components: + - pos: 16.5,22.5 + parent: 0 + type: Transform +- uid: 935 + type: ComfyChair + components: + - rot: 3.141592653589793 rad + pos: 15.5,18.5 + parent: 0 + type: Transform +- uid: 936 + type: Railing + components: + - rot: -1.5707963267948966 rad + pos: 13.5,18.5 + parent: 0 + type: Transform +- uid: 937 + type: ComfyChair + components: + - rot: 1.5707963267948966 rad + pos: 12.5,21.5 + parent: 0 + type: Transform +- uid: 938 + type: ComfyChair + components: + - pos: 13.5,22.5 + parent: 0 + type: Transform +- uid: 939 + type: ComfyChair + components: + - rot: -1.5707963267948966 rad + pos: 16.5,19.5 + parent: 0 + type: Transform +- uid: 940 + type: Railing + components: + - pos: 12.5,19.5 + parent: 0 + type: Transform +- uid: 941 + type: TableGlass + components: + - pos: 12.5,22.5 + parent: 0 + type: Transform +- uid: 942 + type: TableGlass + components: + - pos: 16.5,18.5 + parent: 0 + type: Transform +- uid: 943 + type: RailingCornerSmall + components: + - rot: 1.5707963267948966 rad + pos: 13.5,19.5 + parent: 0 + type: Transform +- uid: 944 + type: Poweredlight + components: + - pos: 15.5,22.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 945 + type: Poweredlight + components: + - rot: 3.141592653589793 rad + pos: 13.5,18.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 946 + type: WindowFrostedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 6.5,7.5 + parent: 0 + type: Transform +- uid: 947 + type: WindowFrostedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 6.5,6.5 + parent: 0 + type: Transform +- uid: 948 + type: ClosetMaintenanceFilledRandom + components: + - pos: 5.5,7.5 + parent: 0 + type: Transform +- uid: 949 + type: PoweredSmallLight + components: + - pos: 6.5,10.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 950 + type: Stool + components: + - rot: -1.5707963267948966 rad + pos: 2.5,7.5 + parent: 0 + type: Transform +- uid: 951 + type: Stool + components: + - rot: -1.5707963267948966 rad + pos: 2.5,6.5 + parent: 0 + type: Transform +- uid: 952 + type: Stool + components: + - rot: 1.5707963267948966 rad + pos: 3.5,6.5 + parent: 0 + type: Transform +- uid: 953 + type: Stool + components: + - rot: 1.5707963267948966 rad + pos: 3.5,7.5 + parent: 0 + type: Transform +- uid: 954 + type: ClosetMaintenanceFilledRandom + components: + - pos: 0.5,7.5 + parent: 0 + type: Transform +- uid: 955 + type: ClosetMaintenanceFilledRandom + components: + - pos: 0.5,6.5 + parent: 0 + type: Transform +- uid: 956 + type: Table + components: + - pos: 0.5,9.5 + parent: 0 + type: Transform +- uid: 957 + type: Table + components: + - pos: 0.5,10.5 + parent: 0 + type: Transform +- uid: 958 + type: Table + components: + - pos: 1.5,10.5 + parent: 0 + type: Transform +- uid: 959 + type: Table + components: + - pos: 2.5,10.5 + parent: 0 + type: Transform +- uid: 960 + type: SinkWide + components: + - pos: 3.5,10.5 + parent: 0 + type: Transform +- uid: 961 + type: KitchenMicrowave + components: + - pos: 0.5,10.5 + parent: 0 + type: Transform +- uid: 962 + type: DonkpocketBoxSpawner + components: + - pos: 0.5,9.5 + parent: 0 + type: Transform +- uid: 963 + type: DrinkMug + components: + - pos: 1.4545751,10.669063 + parent: 0 + type: Transform +- uid: 964 + type: DrinkMugMetal + components: + - pos: 1.6889501,10.590938 + parent: 0 + type: Transform +- uid: 965 + type: DrinkMugDog + components: + - pos: 1.4858251,10.465938 + parent: 0 + type: Transform +- uid: 966 + type: DrinkMugMoebius + components: + - pos: 2.173325,10.684688 + parent: 0 + type: Transform +- uid: 967 + type: WaterCooler + components: + - pos: 7.5,10.5 + parent: 0 + type: Transform +- uid: 968 + type: VendingMachineCoffee + components: + - flags: SessionSpecific + type: MetaData + - pos: 8.5,10.5 + parent: 0 + type: Transform +- uid: 969 + type: VendingMachineSciDrobe + components: + - flags: SessionSpecific + type: MetaData + - pos: 9.5,10.5 + parent: 0 + type: Transform +- uid: 970 + type: WindowTintedDirectional + components: + - pos: 5.5,8.5 + parent: 0 + type: Transform +- uid: 971 + type: WindowTintedDirectional + components: + - pos: 0.5,8.5 + parent: 0 + type: Transform +- uid: 972 + type: WindowTintedDirectional + components: + - pos: 3.5,8.5 + parent: 0 + type: Transform +- uid: 973 + type: WindowTintedDirectional + components: + - pos: 2.5,8.5 + parent: 0 + type: Transform +- uid: 974 + type: CarpetPurple + components: + - pos: 6.5,6.5 + parent: 0 + type: Transform +- uid: 975 + type: CarpetPurple + components: + - pos: 6.5,7.5 + parent: 0 + type: Transform +- uid: 976 + type: CarpetPurple + components: + - pos: 7.5,6.5 + parent: 0 + type: Transform +- uid: 977 + type: CarpetPurple + components: + - pos: 7.5,7.5 + parent: 0 + type: Transform +- uid: 978 + type: CarpetPurple + components: + - pos: 8.5,6.5 + parent: 0 + type: Transform +- uid: 979 + type: CarpetPurple + components: + - pos: 8.5,7.5 + parent: 0 + type: Transform +- uid: 980 + type: CarpetPurple + components: + - pos: 9.5,6.5 + parent: 0 + type: Transform +- uid: 981 + type: CarpetPurple + components: + - pos: 9.5,7.5 + parent: 0 + type: Transform +- uid: 982 + type: CarpetPurple + components: + - pos: 10.5,6.5 + parent: 0 + type: Transform +- uid: 983 + type: CarpetPurple + components: + - pos: 10.5,7.5 + parent: 0 + type: Transform +- uid: 984 + type: TableWood + components: + - pos: 7.5,6.5 + parent: 0 + type: Transform +- uid: 985 + type: TableWood + components: + - pos: 10.5,7.5 + parent: 0 + type: Transform +- uid: 986 + type: ComfyChair + components: + - rot: 3.141592653589793 rad + pos: 10.5,6.5 + parent: 0 + type: Transform +- uid: 987 + type: ComfyChair + components: + - rot: 1.5707963267948966 rad + pos: 9.5,7.5 + parent: 0 + type: Transform +- uid: 988 + type: ComfyChair + components: + - rot: -1.5707963267948966 rad + pos: 8.5,6.5 + parent: 0 + type: Transform +- uid: 989 + type: ComfyChair + components: + - rot: 1.5707963267948966 rad + pos: 6.5,6.5 + parent: 0 + type: Transform +- uid: 990 + type: PottedPlant19 + components: + - pos: 4.4883204,10.239479 + parent: 0 + type: Transform +- uid: 991 + type: PoweredSmallLight + components: + - rot: 3.141592653589793 rad + pos: 1.5,6.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 992 + type: PoweredSmallLight + components: + - rot: 3.141592653589793 rad + pos: 9.5,6.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 993 + type: RandomFoodMeal + components: + - pos: 12.5,22.5 + parent: 0 + type: Transform +- uid: 994 + type: RandomSnacks + components: + - pos: 16.5,18.5 + parent: 0 + type: Transform +- uid: 995 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 18.5,18.5 + parent: 0 + type: Transform +- uid: 996 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 18.5,18.5 + parent: 0 + type: Transform +- uid: 997 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 22.5,18.5 + parent: 0 + type: Transform +- uid: 998 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 22.5,18.5 + parent: 0 + type: Transform +- uid: 999 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 22.5,22.5 + parent: 0 + type: Transform +- uid: 1000 + type: WindowReinforcedDirectional + components: + - pos: 22.5,22.5 + parent: 0 + type: Transform +- uid: 1001 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 18.5,22.5 + parent: 0 + type: Transform +- uid: 1002 + type: WindowReinforcedDirectional + components: + - pos: 18.5,22.5 + parent: 0 + type: Transform +- uid: 1003 + type: BoxFolderWhite + components: + - pos: 21.488142,22.553272 + parent: 0 + type: Transform +- uid: 1004 + type: Chair + components: + - rot: -1.5707963267948966 rad + pos: 22.5,21.5 + parent: 0 + type: Transform +- uid: 1005 + type: Chair + components: + - rot: -1.5707963267948966 rad + pos: 22.5,19.5 + parent: 0 + type: Transform +- uid: 1006 + type: ComputerCrewMonitoring + components: + - pos: 19.5,22.5 + parent: 0 + type: Transform +- uid: 1007 + type: Table + components: + - pos: 21.5,22.5 + parent: 0 + type: Transform +- uid: 1008 + type: Chair + components: + - rot: 1.5707963267948966 rad + pos: 18.5,19.5 + parent: 0 + type: Transform +- uid: 1009 + type: Chair + components: + - rot: 1.5707963267948966 rad + pos: 18.5,21.5 + parent: 0 + type: Transform +- uid: 1010 + type: SubstationBasic + components: + - pos: 28.5,18.5 + parent: 0 + type: Transform +- uid: 1011 + type: Poweredlight + components: + - pos: 18.5,22.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 1012 + type: Poweredlight + components: + - rot: 3.141592653589793 rad + pos: 22.5,18.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 1013 + type: GeneratorRTG + components: + - pos: 25.5,21.5 + parent: 0 + type: Transform +- uid: 1014 + type: CableHV + components: + - pos: 25.5,19.5 + parent: 0 + type: Transform +- uid: 1015 + type: CableHV + components: + - pos: 25.5,20.5 + parent: 0 + type: Transform +- uid: 1016 + type: CableHV + components: + - pos: 25.5,21.5 + parent: 0 + type: Transform +- uid: 1017 + type: CableHV + components: + - pos: 26.5,20.5 + parent: 0 + type: Transform +- uid: 1018 + type: CableHV + components: + - pos: 27.5,20.5 + parent: 0 + type: Transform +- uid: 1019 + type: CableHV + components: + - pos: 28.5,20.5 + parent: 0 + type: Transform +- uid: 1020 + type: CableHV + components: + - pos: 28.5,19.5 + parent: 0 + type: Transform +- uid: 1021 + type: CableHV + components: + - pos: 28.5,18.5 + parent: 0 + type: Transform +- uid: 1022 + type: WallSolid + components: + - pos: 28.5,22.5 + parent: 0 + type: Transform +- uid: 1023 + type: APCBasic + components: + - pos: 28.5,22.5 + parent: 0 + type: Transform +- uid: 1024 + type: CableMV + components: + - pos: 28.5,18.5 + parent: 0 + type: Transform +- uid: 1025 + type: CableMV + components: + - pos: 28.5,19.5 + parent: 0 + type: Transform +- uid: 1026 + type: CableMV + components: + - pos: 28.5,20.5 + parent: 0 + type: Transform +- uid: 1027 + type: CableMV + components: + - pos: 28.5,21.5 + parent: 0 + type: Transform +- uid: 1028 + type: CableMV + components: + - pos: 28.5,22.5 + parent: 0 + type: Transform +- uid: 1029 + type: CableApcExtension + components: + - pos: 28.5,21.5 + parent: 0 + type: Transform +- uid: 1030 + type: CableApcExtension + components: + - pos: 28.5,22.5 + parent: 0 + type: Transform +- uid: 1031 + type: CableApcExtension + components: + - pos: 25.5,18.5 + parent: 0 + type: Transform +- uid: 1032 + type: CableApcExtension + components: + - pos: 24.5,18.5 + parent: 0 + type: Transform +- uid: 1033 + type: CableApcExtension + components: + - pos: 25.5,22.5 + parent: 0 + type: Transform +- uid: 1034 + type: CableApcExtension + components: + - pos: 24.5,22.5 + parent: 0 + type: Transform +- uid: 1035 + type: CableApcExtension + components: + - pos: 24.5,21.5 + parent: 0 + type: Transform +- uid: 1036 + type: CableApcExtension + components: + - pos: 24.5,20.5 + parent: 0 + type: Transform +- uid: 1037 + type: CableApcExtension + components: + - pos: 24.5,19.5 + parent: 0 + type: Transform +- uid: 1038 + type: CableTerminal + components: + - rot: 1.5707963267948966 rad + pos: 25.5,20.5 + parent: 0 + type: Transform +- uid: 1039 + type: Catwalk + components: + - pos: 25.5,19.5 + parent: 0 + type: Transform +- uid: 1040 + type: Catwalk + components: + - pos: 26.5,19.5 + parent: 0 + type: Transform +- uid: 1041 + type: Catwalk + components: + - pos: 27.5,19.5 + parent: 0 + type: Transform +- uid: 1042 + type: Catwalk + components: + - pos: 27.5,20.5 + parent: 0 + type: Transform +- uid: 1043 + type: Catwalk + components: + - pos: 27.5,21.5 + parent: 0 + type: Transform +- uid: 1044 + type: Catwalk + components: + - pos: 26.5,21.5 + parent: 0 + type: Transform +- uid: 1045 + type: Catwalk + components: + - pos: 25.5,21.5 + parent: 0 + type: Transform +- uid: 1046 + type: Catwalk + components: + - pos: 25.5,20.5 + parent: 0 + type: Transform +- uid: 1047 + type: Rack + components: + - pos: 28.5,21.5 + parent: 0 + type: Transform +- uid: 1048 + type: Rack + components: + - pos: 27.5,22.5 + parent: 0 + type: Transform +- uid: 1049 + type: Multitool + components: + - pos: 27.480967,22.500828 + parent: 0 + type: Transform +- uid: 1050 + type: PowerDrill + components: + - pos: 28.512217,21.547703 + parent: 0 + type: Transform +- uid: 1051 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 31.5,21.5 + parent: 0 + type: Transform +- uid: 1052 + type: Poweredlight + components: + - rot: 3.141592653589793 rad + pos: 25.5,18.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 1053 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 31.5,22.5 + parent: 0 + type: Transform +- uid: 1054 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 33.5,21.5 + parent: 0 + type: Transform +- uid: 1055 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 33.5,22.5 + parent: 0 + type: Transform +- uid: 1056 + type: WindowReinforcedDirectional + components: + - pos: 33.5,21.5 + parent: 0 + type: Transform +- uid: 1057 + type: ShardGlassReinforced + components: + - pos: 34.381138,20.460537 + parent: 0 + type: Transform +- uid: 1058 + type: MachineTraversalDistorter + components: + - pos: 34.5,22.5 + parent: 0 + type: Transform +- uid: 1059 + type: RandomArtifactSpawner + components: + - pos: 34.5,22.5 + parent: 0 + type: Transform +- uid: 1060 + type: ComputerResearchAndDevelopment + components: + - rot: -1.5707963267948966 rad + pos: 31.5,22.5 + parent: 0 + type: Transform +- uid: 1061 + type: ComputerBroken + components: + - rot: -1.5707963267948966 rad + pos: 31.5,21.5 + parent: 0 + type: Transform +- uid: 1062 + type: ChairOfficeLight + components: + - rot: 1.5707963267948966 rad + pos: 30.5,21.5 + parent: 0 + type: Transform +- uid: 1063 + type: ChairOfficeLight + components: + - rot: 1.5707963267948966 rad + pos: 30.5,22.5 + parent: 0 + type: Transform +- uid: 1064 + type: Stool + components: + - rot: -1.5707963267948966 rad + pos: 31.5,18.5 + parent: 0 + type: Transform +- uid: 1065 + type: Stool + components: + - rot: -1.5707963267948966 rad + pos: 31.5,19.5 + parent: 0 + type: Transform +- uid: 1066 + type: LockerScienceFilled + components: + - pos: 30.5,18.5 + parent: 0 + type: Transform +- uid: 1067 + type: Rack + components: + - pos: 30.5,19.5 + parent: 0 + type: Transform +- uid: 1068 + type: GasPassiveVent + components: + - pos: 33.5,21.5 + parent: 0 + type: Transform +- uid: 1069 + type: GasPassiveVent + components: + - pos: 34.5,21.5 + parent: 0 + type: Transform +- uid: 1070 + type: GasPipeStraight + components: + - pos: 33.5,20.5 + parent: 0 + type: Transform +- uid: 1071 + type: GasPipeStraight + components: + - pos: 34.5,20.5 + parent: 0 + type: Transform +- uid: 1072 + type: GasPressurePump + components: + - rot: 3.141592653589793 rad + pos: 33.5,19.5 + parent: 0 + type: Transform +- uid: 1073 + type: GasPressurePump + components: + - pos: 34.5,19.5 + parent: 0 + type: Transform +- uid: 1074 + type: GasPort + components: + - rot: 3.141592653589793 rad + pos: 33.5,18.5 + parent: 0 + type: Transform +- uid: 1075 + type: GasPort + components: + - rot: 3.141592653589793 rad + pos: 34.5,18.5 + parent: 0 + type: Transform +- uid: 1076 + type: GasCanisterBrokenBase + components: + - pos: 34.5,18.5 + parent: 0 + type: Transform +- uid: 1077 + type: ClothingBeltUtility + components: + - pos: 30.536415,19.542816 + parent: 0 + type: Transform +- uid: 1078 + type: CableApcExtension + components: + - pos: 4.5,15.5 + parent: 0 + type: Transform +- uid: 1079 + type: CableApcExtension + components: + - pos: 4.5,13.5 + parent: 0 + type: Transform +- uid: 1080 + type: CableApcExtension + components: + - pos: 2.5,13.5 + parent: 0 + type: Transform +- uid: 1081 + type: WallSolid + components: + - pos: 3.5,14.5 + parent: 0 + type: Transform +- uid: 1082 + type: WallSolid + components: + - pos: 0.5,12.5 + parent: 0 + type: Transform +- uid: 1083 + type: WallSolid + components: + - pos: 0.5,13.5 + parent: 0 + type: Transform +- uid: 1084 + type: WallSolid + components: + - pos: 6.5,12.5 + parent: 0 + type: Transform +- uid: 1085 + type: WallSolid + components: + - pos: 6.5,13.5 + parent: 0 + type: Transform +- uid: 1086 + type: SalvageCanisterSpawner + components: + - pos: 1.5,12.5 + parent: 0 + type: Transform +- uid: 1087 + type: MachineFrame + components: + - pos: 2.5,16.5 + parent: 0 + type: Transform +- uid: 1088 + type: Table + components: + - pos: 1.5,16.5 + parent: 0 + type: Transform +- uid: 1089 + type: Table + components: + - pos: 0.5,16.5 + parent: 0 + type: Transform +- uid: 1090 + type: Table + components: + - pos: 0.5,15.5 + parent: 0 + type: Transform +- uid: 1091 + type: Table + components: + - pos: 4.5,16.5 + parent: 0 + type: Transform +- uid: 1092 + type: Table + components: + - pos: 5.5,16.5 + parent: 0 + type: Transform +- uid: 1093 + type: Table + components: + - pos: 6.5,16.5 + parent: 0 + type: Transform +- uid: 1094 + type: Table + components: + - pos: 6.5,15.5 + parent: 0 + type: Transform +- uid: 1095 + type: Table + components: + - pos: 4.5,12.5 + parent: 0 + type: Transform +- uid: 1096 + type: ExplosivesSignMed + components: + - pos: 6.5,13.5 + parent: 0 + type: Transform +- uid: 1097 + type: Table + components: + - pos: 2.5,12.5 + parent: 0 + type: Transform +- uid: 1098 + type: SalvageCanisterSpawner + components: + - pos: 1.5,13.5 + parent: 0 + type: Transform +- uid: 1099 + type: ComputerResearchAndDevelopment + components: + - rot: -1.5707963267948966 rad + pos: 5.5,13.5 + parent: 0 + type: Transform +- uid: 1100 + type: PottedPlant19 + components: + - pos: 5.5066643,12.233577 + parent: 0 + type: Transform +- uid: 1101 + type: TimerTrigger + components: + - pos: 5.6041045,16.67286 + parent: 0 + type: Transform +- uid: 1102 + type: TimerTrigger + components: + - pos: 5.7759795,16.51661 + parent: 0 + type: Transform +- uid: 1103 + type: VoiceTrigger + components: + - pos: 6.4634795,16.756445 + parent: 0 + type: Transform +- uid: 1104 + type: ExplosivePayload + components: + - pos: 6.4166045,15.92832 + parent: 0 + type: Transform +- uid: 1105 + type: FlashPayload + components: + - pos: 6.6041045,15.74082 + parent: 0 + type: Transform +- uid: 1106 + type: ChemicalPayload + components: + - pos: 6.4166045,15.55332 + parent: 0 + type: Transform +- uid: 1107 + type: PowerCellRecharger + components: + - pos: 4.5,16.5 + parent: 0 + type: Transform +- uid: 1108 + type: ToolboxMechanicalFilled + components: + - pos: 4.523156,12.6515875 + parent: 0 + type: Transform + - nextAttack: 10488.7397437 + type: MeleeWeapon +- uid: 1109 + type: Poweredlight + components: + - rot: -1.5707963267948966 rad + pos: 2.5,14.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 1110 + type: Poweredlight + components: + - rot: 1.5707963267948966 rad + pos: 4.5,14.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 1111 + type: Screwdriver + components: + - pos: 2.6822295,12.620289 + parent: 0 + type: Transform +- uid: 1112 + type: SheetGlass + components: + - pos: 0.5572295,16.464039 + parent: 0 + type: Transform +- uid: 1113 + type: SheetSteel + components: + - pos: 0.5103545,15.635914 + parent: 0 + type: Transform +- uid: 1114 + type: SheetPlastic + components: + - pos: 0.5416045,16.026539 + parent: 0 + type: Transform +- uid: 1115 + type: Crowbar + components: + - pos: 2.5208104,12.456571 + parent: 0 + type: Transform + - nextAttack: 10380.4568435 + type: MeleeWeapon +- uid: 1116 + type: ChemDispenserMachineCircuitboard + components: + - pos: 1.4478545,16.542164 + parent: 0 + type: Transform +- uid: 1117 + type: CableApcStack + components: + - pos: 4.6041045,16.682789 + parent: 0 + type: Transform +- uid: 1118 + type: WallmountTelescreen + components: + - pos: 3.5,14.5 + parent: 0 + type: Transform +- uid: 1119 + type: ModularGrenade + components: + - pos: 5.1978545,16.604664 + parent: 0 + type: Transform +- uid: 1120 + type: ModularGrenade + components: + - pos: 5.3228545,16.510914 + parent: 0 + type: Transform +- uid: 1121 + type: LandMineModular + components: + - pos: 6.462872,16.34209 + parent: 0 + type: Transform +- uid: 1122 + type: LandMineModular + components: + - pos: 6.619122,16.201466 + parent: 0 + type: Transform +- uid: 1123 + type: PosterLegitScience + components: + - pos: 0.5,13.5 + parent: 0 + type: Transform +- uid: 1124 + type: WallPlastitanium + components: + - pos: 12.5,13.5 + parent: 0 + type: Transform +- uid: 1125 + type: WallPlastitanium + components: + - pos: 13.5,13.5 + parent: 0 + type: Transform +- uid: 1126 + type: CableApcExtension + components: + - pos: 8.5,12.5 + parent: 0 + type: Transform +- uid: 1127 + type: WallPlastitanium + components: + - pos: 13.5,15.5 + parent: 0 + type: Transform +- uid: 1128 + type: WallPlastitanium + components: + - pos: 12.5,15.5 + parent: 0 + type: Transform +- uid: 1129 + type: WallPlastitanium + components: + - pos: 10.5,15.5 + parent: 0 + type: Transform +- uid: 1130 + type: CableApcExtension + components: + - pos: 9.5,12.5 + parent: 0 + type: Transform +- uid: 1131 + type: WallPlastitanium + components: + - pos: 9.5,15.5 + parent: 0 + type: Transform +- uid: 1132 + type: WallPlastitanium + components: + - pos: 13.5,14.5 + parent: 0 + type: Transform +- uid: 1133 + type: WallPlastitanium + components: + - pos: 9.5,13.5 + parent: 0 + type: Transform +- uid: 1134 + type: WallPlastitanium + components: + - pos: 10.5,13.5 + parent: 0 + type: Transform +- uid: 1135 + type: CableApcExtension + components: + - pos: 8.5,13.5 + parent: 0 + type: Transform +- uid: 1136 + type: CableApcExtension + components: + - pos: 8.5,15.5 + parent: 0 + type: Transform +- uid: 1137 + type: CableApcExtension + components: + - pos: 8.5,16.5 + parent: 0 + type: Transform +- uid: 1138 + type: CableApcExtension + components: + - pos: 9.5,16.5 + parent: 0 + type: Transform +- uid: 1139 + type: CableApcExtension + components: + - pos: 10.5,16.5 + parent: 0 + type: Transform +- uid: 1140 + type: CableApcExtension + components: + - pos: 12.5,16.5 + parent: 0 + type: Transform +- uid: 1141 + type: CableApcExtension + components: + - pos: 13.5,16.5 + parent: 0 + type: Transform +- uid: 1142 + type: CableApcExtension + components: + - pos: 14.5,16.5 + parent: 0 + type: Transform +- uid: 1143 + type: CableApcExtension + components: + - pos: 14.5,15.5 + parent: 0 + type: Transform +- uid: 1144 + type: CableApcExtension + components: + - pos: 14.5,13.5 + parent: 0 + type: Transform +- uid: 1145 + type: CableApcExtension + components: + - pos: 14.5,12.5 + parent: 0 + type: Transform +- uid: 1146 + type: CableApcExtension + components: + - pos: 13.5,12.5 + parent: 0 + type: Transform +- uid: 1147 + type: CableApcExtension + components: + - pos: 12.5,12.5 + parent: 0 + type: Transform +- uid: 1148 + type: Rack + components: + - pos: 12.5,14.5 + parent: 0 + type: Transform +- uid: 1149 + type: Rack + components: + - pos: 10.5,14.5 + parent: 0 + type: Transform +- uid: 1150 + type: WeaponLaserGun + components: + - pos: 12.468685,14.590134 + parent: 0 + type: Transform +- uid: 1151 + type: WeaponLaserGun + components: + - pos: 12.593685,14.371384 + parent: 0 + type: Transform +- uid: 1152 + type: WeaponXrayCannon + components: + - pos: 10.48431,14.543259 + parent: 0 + type: Transform +- uid: 1153 + type: HighSecCaptainLocked + components: + - pos: 11.5,13.5 + parent: 0 + type: Transform +- uid: 1154 + type: SignSecureMed + components: + - pos: 10.5,13.5 + parent: 0 + type: Transform +- uid: 1155 + type: SignShock + components: + - pos: 12.5,13.5 + parent: 0 + type: Transform +- uid: 1156 + type: PoweredSmallLight + components: + - pos: 11.5,14.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 1157 + type: PoweredSmallLight + components: + - rot: -1.5707963267948966 rad + pos: 8.5,14.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 1158 + type: PoweredSmallLight + components: + - rot: 1.5707963267948966 rad + pos: 14.5,14.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 1159 + type: CableApcExtension + components: + - pos: 18.5,16.5 + parent: 0 + type: Transform +- uid: 1160 + type: CableApcExtension + components: + - pos: 20.5,16.5 + parent: 0 + type: Transform +- uid: 1161 + type: CableApcExtension + components: + - pos: 21.5,16.5 + parent: 0 + type: Transform +- uid: 1162 + type: CableApcExtension + components: + - pos: 22.5,16.5 + parent: 0 + type: Transform +- uid: 1163 + type: CableApcExtension + components: + - pos: 22.5,15.5 + parent: 0 + type: Transform +- uid: 1164 + type: CableApcExtension + components: + - pos: 22.5,13.5 + parent: 0 + type: Transform +- uid: 1165 + type: CableApcExtension + components: + - pos: 22.5,12.5 + parent: 0 + type: Transform +- uid: 1166 + type: CableApcExtension + components: + - pos: 21.5,12.5 + parent: 0 + type: Transform +- uid: 1167 + type: CableApcExtension + components: + - pos: 20.5,12.5 + parent: 0 + type: Transform +- uid: 1168 + type: MonkeyCubeBox + components: + - pos: 17.514208,15.501376 + parent: 0 + type: Transform +- uid: 1169 + type: SprayBottleWater + components: + - pos: 17.482958,14.735751 + parent: 0 + type: Transform +- uid: 1170 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 22.5,13.5 + parent: 0 + type: Transform +- uid: 1171 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 22.5,14.5 + parent: 0 + type: Transform +- uid: 1172 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 22.5,15.5 + parent: 0 + type: Transform +- uid: 1173 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 21.5,12.5 + parent: 0 + type: Transform +- uid: 1174 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 20.5,12.5 + parent: 0 + type: Transform +- uid: 1175 + type: WindoorSecure + components: + - rot: 3.141592653589793 rad + pos: 19.5,12.5 + parent: 0 + type: Transform +- uid: 1176 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 18.5,12.5 + parent: 0 + type: Transform +- uid: 1177 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 17.5,12.5 + parent: 0 + type: Transform +- uid: 1178 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 16.5,13.5 + parent: 0 + type: Transform +- uid: 1179 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 16.5,14.5 + parent: 0 + type: Transform +- uid: 1180 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 16.5,15.5 + parent: 0 + type: Transform +- uid: 1181 + type: WindowReinforcedDirectional + components: + - pos: 17.5,16.5 + parent: 0 + type: Transform +- uid: 1182 + type: WindowReinforcedDirectional + components: + - pos: 18.5,16.5 + parent: 0 + type: Transform +- uid: 1183 + type: WindowReinforcedDirectional + components: + - pos: 19.5,16.5 + parent: 0 + type: Transform +- uid: 1184 + type: WindowReinforcedDirectional + components: + - pos: 20.5,16.5 + parent: 0 + type: Transform +- uid: 1185 + type: WindowReinforcedDirectional + components: + - pos: 21.5,16.5 + parent: 0 + type: Transform +- uid: 1186 + type: TableWood + components: + - pos: 17.5,15.5 + parent: 0 + type: Transform +- uid: 1187 + type: TableWood + components: + - pos: 17.5,14.5 + parent: 0 + type: Transform +- uid: 1188 + type: TableWood + components: + - pos: 21.5,15.5 + parent: 0 + type: Transform +- uid: 1189 + type: FoodBanana + components: + - pos: 21.363342,15.717637 + parent: 0 + type: Transform +- uid: 1190 + type: FoodBanana + components: + - pos: 21.488342,15.623887 + parent: 0 + type: Transform +- uid: 1191 + type: FoodBanana + components: + - pos: 21.644592,15.498887 + parent: 0 + type: Transform +- uid: 1192 + type: TrashBananaPeel + components: + - pos: 19.519592,13.327012 + parent: 0 + type: Transform +- uid: 1193 + type: LandMineExplosive + components: + - pos: 19.503967,13.342637 + parent: 0 + type: Transform +- uid: 1194 + type: ClothingOuterSuitMonkey + components: + - pos: 21.483316,14.329501 + parent: 0 + type: Transform +- uid: 1195 + type: ClothingHeadHatAnimalMonkey + components: + - pos: 17.452066,13.392001 + parent: 0 + type: Transform +- uid: 1196 + type: FoodSoupMonkey + components: + - pos: 19.514566,14.517001 + parent: 0 + type: Transform +- uid: 1197 + type: WallSolid + components: + - pos: 40.5,3.5 + parent: 0 + type: Transform +- uid: 1198 + type: WallSolid + components: + - pos: 39.5,3.5 + parent: 0 + type: Transform +- uid: 1199 + type: WallSolid + components: + - pos: 39.5,4.5 + parent: 0 + type: Transform +- uid: 1200 + type: WallSolid + components: + - pos: 42.5,3.5 + parent: 0 + type: Transform +- uid: 1201 + type: WallSolid + components: + - pos: 43.5,3.5 + parent: 0 + type: Transform +- uid: 1202 + type: WallSolid + components: + - pos: 43.5,4.5 + parent: 0 + type: Transform +- uid: 1203 + type: WallSolid + components: + - pos: 39.5,0.5 + parent: 0 + type: Transform +- uid: 1204 + type: WallSolid + components: + - pos: 39.5,1.5 + parent: 0 + type: Transform +- uid: 1205 + type: WallSolid + components: + - pos: 40.5,1.5 + parent: 0 + type: Transform +- uid: 1206 + type: WallSolid + components: + - pos: 42.5,1.5 + parent: 0 + type: Transform +- uid: 1207 + type: WallSolid + components: + - pos: 43.5,1.5 + parent: 0 + type: Transform +- uid: 1208 + type: WallSolid + components: + - pos: 43.5,0.5 + parent: 0 + type: Transform +- uid: 1209 + type: WallSolid + components: + - pos: 47.5,0.5 + parent: 0 + type: Transform +- uid: 1210 + type: WallSolid + components: + - pos: 47.5,1.5 + parent: 0 + type: Transform +- uid: 1211 + type: WallSolid + components: + - pos: 48.5,1.5 + parent: 0 + type: Transform +- uid: 1212 + type: WallSolid + components: + - pos: 50.5,1.5 + parent: 0 + type: Transform +- uid: 1213 + type: WallSolid + components: + - pos: 51.5,1.5 + parent: 0 + type: Transform +- uid: 1214 + type: WallSolid + components: + - pos: 51.5,0.5 + parent: 0 + type: Transform +- uid: 1215 + type: WallSolid + components: + - pos: 50.5,3.5 + parent: 0 + type: Transform +- uid: 1216 + type: WallSolid + components: + - pos: 51.5,3.5 + parent: 0 + type: Transform +- uid: 1217 + type: WallSolid + components: + - pos: 51.5,4.5 + parent: 0 + type: Transform +- uid: 1218 + type: WallSolid + components: + - pos: 48.5,3.5 + parent: 0 + type: Transform +- uid: 1219 + type: WallSolid + components: + - pos: 47.5,3.5 + parent: 0 + type: Transform +- uid: 1220 + type: WallSolid + components: + - pos: 47.5,4.5 + parent: 0 + type: Transform +- uid: 1221 + type: Airlock + components: + - pos: 41.5,3.5 + parent: 0 + type: Transform +- uid: 1222 + type: Airlock + components: + - pos: 41.5,1.5 + parent: 0 + type: Transform +- uid: 1223 + type: Airlock + components: + - pos: 49.5,1.5 + parent: 0 + type: Transform +- uid: 1224 + type: Airlock + components: + - pos: 49.5,3.5 + parent: 0 + type: Transform +- uid: 1225 + type: CableApcExtension + components: + - pos: 41.5,1.5 + parent: 0 + type: Transform +- uid: 1226 + type: CableApcExtension + components: + - pos: 41.5,0.5 + parent: 0 + type: Transform +- uid: 1227 + type: CableApcExtension + components: + - pos: 41.5,3.5 + parent: 0 + type: Transform +- uid: 1228 + type: CableApcExtension + components: + - pos: 41.5,4.5 + parent: 0 + type: Transform +- uid: 1229 + type: CableApcExtension + components: + - pos: 49.5,3.5 + parent: 0 + type: Transform +- uid: 1230 + type: CableApcExtension + components: + - pos: 49.5,4.5 + parent: 0 + type: Transform +- uid: 1231 + type: CableApcExtension + components: + - pos: 49.5,1.5 + parent: 0 + type: Transform +- uid: 1232 + type: CableApcExtension + components: + - pos: 49.5,0.5 + parent: 0 + type: Transform +- uid: 1233 + type: Bed + components: + - pos: 42.5,4.5 + parent: 0 + type: Transform +- uid: 1234 + type: Bed + components: + - pos: 42.5,0.5 + parent: 0 + type: Transform +- uid: 1235 + type: Bed + components: + - pos: 50.5,0.5 + parent: 0 + type: Transform +- uid: 1236 + type: Bed + components: + - pos: 50.5,4.5 + parent: 0 + type: Transform +- uid: 1237 + type: BedsheetSpawner + components: + - pos: 42.5,4.5 + parent: 0 + type: Transform +- uid: 1238 + type: BedsheetSpawner + components: + - pos: 50.5,4.5 + parent: 0 + type: Transform +- uid: 1239 + type: BedsheetSpawner + components: + - pos: 50.5,0.5 + parent: 0 + type: Transform +- uid: 1240 + type: BedsheetSpawner + components: + - pos: 42.5,0.5 + parent: 0 + type: Transform +- uid: 1241 + type: Bookshelf + components: + - pos: 40.5,4.5 + parent: 0 + type: Transform +- uid: 1242 + type: TableWood + components: + - pos: 40.5,0.5 + parent: 0 + type: Transform +- uid: 1243 + type: TableCarpet + components: + - pos: 48.5,4.5 + parent: 0 + type: Transform +- uid: 1244 + type: CarpetGreen + components: + - pos: 49.5,4.5 + parent: 0 + type: Transform +- uid: 1245 + type: MaintenanceFluffSpawner + components: + - pos: 48.5,4.5 + parent: 0 + type: Transform +- uid: 1246 + type: ToySpawner + components: + - pos: 40.5,0.5 + parent: 0 + type: Transform +- uid: 1247 + type: ComfyChair + components: + - rot: 1.5707963267948966 rad + pos: 48.5,0.5 + parent: 0 + type: Transform +- uid: 1248 + type: RandomInstruments + components: + - pos: 48.5,0.5 + parent: 0 + type: Transform +- uid: 1249 + type: SignRedOne + components: + - pos: 40.5,3.5 + parent: 0 + type: Transform +- uid: 1250 + type: SignRedTwo + components: + - pos: 40.5,1.5 + parent: 0 + type: Transform +- uid: 1251 + type: SignRedThree + components: + - pos: 48.5,3.5 + parent: 0 + type: Transform +- uid: 1252 + type: SignRedFour + components: + - pos: 48.5,1.5 + parent: 0 + type: Transform +- uid: 1253 + type: WindowDirectional + components: + - pos: 46.5,3.5 + parent: 0 + type: Transform +- uid: 1254 + type: WindowDirectional + components: + - pos: 44.5,3.5 + parent: 0 + type: Transform +- uid: 1255 + type: VendingMachineClothing + components: + - flags: SessionSpecific + type: MetaData + - pos: 46.5,4.5 + parent: 0 + type: Transform +- uid: 1256 + type: Rack + components: + - pos: 46.5,3.5 + parent: 0 + type: Transform +- uid: 1257 + type: WardrobeMixedFilled + components: + - pos: 44.5,4.5 + parent: 0 + type: Transform +- uid: 1258 + type: PoweredSmallLight + components: + - pos: 41.5,4.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 1259 + type: PoweredSmallLight + components: + - rot: 3.141592653589793 rad + pos: 41.5,0.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 1260 + type: PoweredSmallLight + components: + - rot: 3.141592653589793 rad + pos: 49.5,0.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 1261 + type: PoweredSmallLight + components: + - pos: 49.5,4.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 1262 + type: Table + components: + - pos: 37.5,0.5 + parent: 0 + type: Transform +- uid: 1263 + type: Table + components: + - pos: 53.5,4.5 + parent: 0 + type: Transform +- uid: 1264 + type: Chair + components: + - rot: -1.5707963267948966 rad + pos: 38.5,0.5 + parent: 0 + type: Transform +- uid: 1265 + type: Chair + components: + - rot: 1.5707963267948966 rad + pos: 36.5,0.5 + parent: 0 + type: Transform +- uid: 1266 + type: Chair + components: + - pos: 37.5,1.5 + parent: 0 + type: Transform +- uid: 1267 + type: Chair + components: + - rot: 1.5707963267948966 rad + pos: 52.5,4.5 + parent: 0 + type: Transform +- uid: 1268 + type: Chair + components: + - rot: -1.5707963267948966 rad + pos: 54.5,4.5 + parent: 0 + type: Transform +- uid: 1269 + type: Stool + components: + - rot: 1.5707963267948966 rad + pos: 44.5,3.5 + parent: 0 + type: Transform +- uid: 1270 + type: TableWood + components: + - rot: 1.5707963267948966 rad + pos: 45.5,1.5 + parent: 0 + type: Transform +- uid: 1271 + type: ChairWood + components: + - rot: -1.5707963267948966 rad + pos: 46.5,1.5 + parent: 0 + type: Transform +- uid: 1272 + type: ChairWood + components: + - rot: 1.5707963267948966 rad + pos: 44.5,1.5 + parent: 0 + type: Transform +- uid: 1273 + type: ChessBoard + components: + - pos: 45.521095,1.5328176 + parent: 0 + type: Transform +- uid: 1274 + type: RandomPosterContraband + components: + - pos: 43.5,4.5 + parent: 0 + type: Transform +- uid: 1275 + type: RandomPosterContraband + components: + - pos: 47.5,0.5 + parent: 0 + type: Transform +- uid: 1276 + type: RandomPosterContraband + components: + - pos: 39.5,0.5 + parent: 0 + type: Transform +- uid: 1277 + type: VendingMachineCola + components: + - flags: SessionSpecific + type: MetaData + - pos: 38.5,4.5 + parent: 0 + type: Transform +- uid: 1278 + type: VendingMachineCigs + components: + - flags: SessionSpecific + type: MetaData + - pos: 37.5,4.5 + parent: 0 + type: Transform +- uid: 1279 + type: filingCabinetDrawerRandom + components: + - pos: 36.5,4.5 + parent: 0 + type: Transform +- uid: 1280 + type: Poweredlight + components: + - rot: 1.5707963267948966 rad + pos: 36.5,3.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 1281 + type: Poweredlight + components: + - rot: -1.5707963267948966 rad + pos: 54.5,1.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 1282 + type: Poweredlight + components: + - pos: 43.5,2.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 1283 + type: MaintenanceFluffSpawner + components: + - pos: 46.5,3.5 + parent: 0 + type: Transform +- uid: 1284 + type: ClosetMaintenanceFilledRandom + components: + - pos: 52.5,0.5 + parent: 0 + type: Transform +- uid: 1285 + type: ClosetL3ScienceFilled + components: + - pos: 53.5,0.5 + parent: 0 + type: Transform +- uid: 1286 + type: ClosetL3ScienceFilled + components: + - pos: 54.5,0.5 + parent: 0 + type: Transform +- uid: 1287 + type: ExtinguisherCabinetFilled + components: + - pos: 51.5,1.5 + parent: 0 + type: Transform +- uid: 1288 + type: ExtinguisherCabinetFilled + components: + - pos: 39.5,1.5 + parent: 0 + type: Transform +- uid: 1289 + type: CableApcExtension + components: + - pos: 9.5,4.5 + parent: 0 + type: Transform +- uid: 1290 + type: CableApcExtension + components: + - pos: 10.5,4.5 + parent: 0 + type: Transform +- uid: 1291 + type: CableApcExtension + components: + - pos: 11.5,4.5 + parent: 0 + type: Transform +- uid: 1292 + type: CableApcExtension + components: + - pos: 12.5,4.5 + parent: 0 + type: Transform +- uid: 1293 + type: CableApcExtension + components: + - pos: 13.5,4.5 + parent: 0 + type: Transform +- uid: 1294 + type: CableApcExtension + components: + - pos: 14.5,1.5 + parent: 0 + type: Transform +- uid: 1295 + type: CableApcExtension + components: + - pos: 14.5,3.5 + parent: 0 + type: Transform +- uid: 1296 + type: CableApcExtension + components: + - pos: 2.5,1.5 + parent: 0 + type: Transform +- uid: 1297 + type: CableApcExtension + components: + - pos: 13.5,1.5 + parent: 0 + type: Transform +- uid: 1298 + type: CableApcExtension + components: + - pos: 13.5,0.5 + parent: 0 + type: Transform +- uid: 1299 + type: CableApcExtension + components: + - pos: 12.5,0.5 + parent: 0 + type: Transform +- uid: 1300 + type: CableApcExtension + components: + - pos: 11.5,0.5 + parent: 0 + type: Transform +- uid: 1301 + type: CableApcExtension + components: + - pos: 10.5,0.5 + parent: 0 + type: Transform +- uid: 1302 + type: CableApcExtension + components: + - pos: 9.5,0.5 + parent: 0 + type: Transform +- uid: 1303 + type: WindowReinforcedDirectional + components: + - pos: 4.5,2.5 + parent: 0 + type: Transform +- uid: 1304 + type: WindowReinforcedDirectional + components: + - pos: 5.5,2.5 + parent: 0 + type: Transform +- uid: 1305 + type: WindowReinforcedDirectional + components: + - pos: 6.5,2.5 + parent: 0 + type: Transform +- uid: 1306 + type: WindowReinforcedDirectional + components: + - pos: 7.5,2.5 + parent: 0 + type: Transform +- uid: 1307 + type: WindowReinforcedDirectional + components: + - pos: 8.5,2.5 + parent: 0 + type: Transform +- uid: 1308 + type: WindowReinforcedDirectional + components: + - pos: 9.5,2.5 + parent: 0 + type: Transform +- uid: 1309 + type: WindowReinforcedDirectional + components: + - pos: 10.5,2.5 + parent: 0 + type: Transform +- uid: 1310 + type: WindowReinforcedDirectional + components: + - pos: 11.5,2.5 + parent: 0 + type: Transform +- uid: 1311 + type: WindowReinforcedDirectional + components: + - pos: 12.5,2.5 + parent: 0 + type: Transform +- uid: 1312 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 12.5,2.5 + parent: 0 + type: Transform +- uid: 1313 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 11.5,2.5 + parent: 0 + type: Transform +- uid: 1314 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 10.5,2.5 + parent: 0 + type: Transform +- uid: 1315 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 9.5,2.5 + parent: 0 + type: Transform +- uid: 1316 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 8.5,2.5 + parent: 0 + type: Transform +- uid: 1317 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 7.5,2.5 + parent: 0 + type: Transform +- uid: 1318 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 6.5,2.5 + parent: 0 + type: Transform +- uid: 1319 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 5.5,2.5 + parent: 0 + type: Transform +- uid: 1320 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 4.5,2.5 + parent: 0 + type: Transform +- uid: 1321 + type: CableApcExtension + components: + - pos: 13.5,3.5 + parent: 0 + type: Transform +- uid: 1322 + type: WallSolid + components: + - pos: 3.5,2.5 + parent: 0 + type: Transform +- uid: 1323 + type: WallSolid + components: + - pos: 13.5,2.5 + parent: 0 + type: Transform +- uid: 1324 + type: Chair + components: + - pos: 4.5,1.5 + parent: 0 + type: Transform +- uid: 1325 + type: Chair + components: + - pos: 5.5,1.5 + parent: 0 + type: Transform +- uid: 1326 + type: Chair + components: + - pos: 6.5,1.5 + parent: 0 + type: Transform +- uid: 1327 + type: Chair + components: + - pos: 12.5,1.5 + parent: 0 + type: Transform +- uid: 1328 + type: Chair + components: + - pos: 11.5,1.5 + parent: 0 + type: Transform +- uid: 1329 + type: Chair + components: + - pos: 10.5,1.5 + parent: 0 + type: Transform +- uid: 1330 + type: Chair + components: + - rot: 3.141592653589793 rad + pos: 12.5,3.5 + parent: 0 + type: Transform +- uid: 1331 + type: Chair + components: + - rot: 3.141592653589793 rad + pos: 11.5,3.5 + parent: 0 + type: Transform +- uid: 1332 + type: Chair + components: + - rot: 3.141592653589793 rad + pos: 10.5,3.5 + parent: 0 + type: Transform +- uid: 1333 + type: Chair + components: + - rot: 3.141592653589793 rad + pos: 6.5,3.5 + parent: 0 + type: Transform +- uid: 1334 + type: Chair + components: + - rot: 3.141592653589793 rad + pos: 5.5,3.5 + parent: 0 + type: Transform +- uid: 1335 + type: Chair + components: + - rot: 3.141592653589793 rad + pos: 4.5,3.5 + parent: 0 + type: Transform +- uid: 1336 + type: TableGlass + components: + - pos: 8.5,1.5 + parent: 0 + type: Transform +- uid: 1337 + type: TableGlass + components: + - pos: 8.5,3.5 + parent: 0 + type: Transform +- uid: 1338 + type: filingCabinetTallRandom + components: + - pos: 7.5,1.5 + parent: 0 + type: Transform +- uid: 1339 + type: filingCabinetDrawerRandom + components: + - pos: 9.5,3.5 + parent: 0 + type: Transform +- uid: 1340 + type: CryostasisBeaker + components: + - pos: 8.491919,3.5715053 + parent: 0 + type: Transform +- uid: 1341 + type: UnfinishedMachineFrame + components: + - pos: 9.5,1.5 + parent: 0 + type: Transform +- uid: 1342 + type: PoweredlightExterior + components: + - rot: -1.5707963267948966 rad + pos: 12.5,2.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 1343 + type: PoweredlightExterior + components: + - rot: 1.5707963267948966 rad + pos: 4.5,2.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 1344 + type: Poweredlight + components: + - rot: -1.5707963267948966 rad + pos: 2.5,2.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 1345 + type: Poweredlight + components: + - rot: 1.5707963267948966 rad + pos: 14.5,2.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 1346 + type: WaterCooler + components: + - pos: 0.5,4.5 + parent: 0 + type: Transform +- uid: 1347 + type: Chair + components: + - rot: -1.5707963267948966 rad + pos: 16.5,0.5 + parent: 0 + type: Transform +- uid: 1348 + type: Chair + components: + - rot: -1.5707963267948966 rad + pos: 16.5,1.5 + parent: 0 + type: Transform +- uid: 1349 + type: Chair + components: + - rot: -1.5707963267948966 rad + pos: 16.5,4.5 + parent: 0 + type: Transform +- uid: 1350 + type: Table + components: + - rot: -1.5707963267948966 rad + pos: 0.5,3.5 + parent: 0 + type: Transform +- uid: 1351 + type: DrinkWaterCup + components: + - pos: 0.40165997,3.6027553 + parent: 0 + type: Transform +- uid: 1352 + type: DrinkWaterCup + components: + - pos: 0.62040997,3.4777553 + parent: 0 + type: Transform +- uid: 1353 + type: WaterTankHighCapacity + components: + - pos: 7.5,3.5 + parent: 0 + type: Transform +- uid: 1354 + type: hydroponicsTray + components: + - pos: 13.5,7.5 + parent: 0 + type: Transform +- uid: 1355 + type: hydroponicsTray + components: + - pos: 13.5,8.5 + parent: 0 + type: Transform +- uid: 1356 + type: hydroponicsTray + components: + - pos: 13.5,9.5 + parent: 0 + type: Transform +- uid: 1357 + type: hydroponicsTray + components: + - pos: 15.5,7.5 + parent: 0 + type: Transform +- uid: 1358 + type: hydroponicsTray + components: + - pos: 15.5,8.5 + parent: 0 + type: Transform +- uid: 1359 + type: hydroponicsTray + components: + - pos: 15.5,9.5 + parent: 0 + type: Transform +- uid: 1360 + type: hydroponicsTray + components: + - pos: 19.5,7.5 + parent: 0 + type: Transform +- uid: 1361 + type: hydroponicsTray + components: + - pos: 19.5,8.5 + parent: 0 + type: Transform +- uid: 1362 + type: hydroponicsTray + components: + - pos: 19.5,9.5 + parent: 0 + type: Transform +- uid: 1363 + type: hydroponicsTray + components: + - pos: 21.5,7.5 + parent: 0 + type: Transform +- uid: 1364 + type: hydroponicsTray + components: + - pos: 21.5,8.5 + parent: 0 + type: Transform +- uid: 1365 + type: hydroponicsTray + components: + - pos: 21.5,9.5 + parent: 0 + type: Transform +- uid: 1366 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 16.5,7.5 + parent: 0 + type: Transform +- uid: 1367 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 16.5,8.5 + parent: 0 + type: Transform +- uid: 1368 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 16.5,9.5 + parent: 0 + type: Transform +- uid: 1369 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 18.5,7.5 + parent: 0 + type: Transform +- uid: 1370 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 18.5,8.5 + parent: 0 + type: Transform +- uid: 1371 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 18.5,9.5 + parent: 0 + type: Transform +- uid: 1372 + type: WaterTankFull + components: + - pos: 18.5,7.5 + parent: 0 + type: Transform +- uid: 1373 + type: SeedExtractor + components: + - pos: 18.5,8.5 + parent: 0 + type: Transform +- uid: 1374 + type: TableGlass + components: + - pos: 18.5,9.5 + parent: 0 + type: Transform +- uid: 1375 + type: TableGlass + components: + - pos: 16.5,7.5 + parent: 0 + type: Transform +- uid: 1376 + type: TableGlass + components: + - pos: 16.5,8.5 + parent: 0 + type: Transform +- uid: 1377 + type: TableGlass + components: + - pos: 16.5,9.5 + parent: 0 + type: Transform +- uid: 1378 + type: HydroponicsToolMiniHoe + components: + - pos: 18.469873,9.442207 + parent: 0 + type: Transform +- uid: 1379 + type: AloeSeeds + components: + - pos: 16.516748,9.567207 + parent: 0 + type: Transform +- uid: 1380 + type: AmbrosiaVulgarisSeeds + components: + - pos: 16.688623,9.410957 + parent: 0 + type: Transform +- uid: 1381 + type: CabbageSeeds + components: + - pos: 16.501123,8.739082 + parent: 0 + type: Transform +- uid: 1382 + type: CarrotSeeds + components: + - pos: 16.641748,8.598457 + parent: 0 + type: Transform +- uid: 1383 + type: EggySeeds + components: + - pos: 16.422998,7.8484573 + parent: 0 + type: Transform +- uid: 1384 + type: EggplantSeeds + components: + - pos: 16.626123,7.6609573 + parent: 0 + type: Transform +- uid: 1385 + type: Poweredlight + components: + - rot: -1.5707963267948966 rad + pos: 15.5,8.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 1386 + type: Poweredlight + components: + - rot: 1.5707963267948966 rad + pos: 19.5,8.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 1387 + type: WeldingFuelTankFull + components: + - pos: 26.5,19.5 + parent: 0 + type: Transform +- uid: 1388 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 21.5,0.5 + parent: 0 + type: Transform +- uid: 1389 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 21.5,1.5 + parent: 0 + type: Transform +- uid: 1390 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 25.5,0.5 + parent: 0 + type: Transform +- uid: 1391 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 25.5,1.5 + parent: 0 + type: Transform +- uid: 1392 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 29.5,0.5 + parent: 0 + type: Transform +- uid: 1393 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 29.5,1.5 + parent: 0 + type: Transform +- uid: 1394 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 33.5,0.5 + parent: 0 + type: Transform +- uid: 1395 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 33.5,1.5 + parent: 0 + type: Transform +- uid: 1396 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 31.5,0.5 + parent: 0 + type: Transform +- uid: 1397 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 31.5,1.5 + parent: 0 + type: Transform +- uid: 1398 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 27.5,0.5 + parent: 0 + type: Transform +- uid: 1399 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 27.5,1.5 + parent: 0 + type: Transform +- uid: 1400 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 23.5,0.5 + parent: 0 + type: Transform +- uid: 1401 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 23.5,1.5 + parent: 0 + type: Transform +- uid: 1402 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 19.5,0.5 + parent: 0 + type: Transform +- uid: 1403 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 19.5,1.5 + parent: 0 + type: Transform +- uid: 1404 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 19.5,1.5 + parent: 0 + type: Transform +- uid: 1405 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 21.5,1.5 + parent: 0 + type: Transform +- uid: 1406 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 23.5,1.5 + parent: 0 + type: Transform +- uid: 1407 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 25.5,1.5 + parent: 0 + type: Transform +- uid: 1408 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 27.5,1.5 + parent: 0 + type: Transform +- uid: 1409 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 29.5,1.5 + parent: 0 + type: Transform +- uid: 1410 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 31.5,1.5 + parent: 0 + type: Transform +- uid: 1411 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 33.5,1.5 + parent: 0 + type: Transform +- uid: 1412 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 31.5,2.5 + parent: 0 + type: Transform +- uid: 1413 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 33.5,2.5 + parent: 0 + type: Transform +- uid: 1414 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 29.5,2.5 + parent: 0 + type: Transform +- uid: 1415 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 25.5,2.5 + parent: 0 + type: Transform +- uid: 1416 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 21.5,2.5 + parent: 0 + type: Transform +- uid: 1417 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 23.5,2.5 + parent: 0 + type: Transform +- uid: 1418 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 19.5,2.5 + parent: 0 + type: Transform +- uid: 1419 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 27.5,2.5 + parent: 0 + type: Transform +- uid: 1420 + type: WindoorSecure + components: + - rot: 3.141592653589793 rad + pos: 20.5,1.5 + parent: 0 + type: Transform +- uid: 1421 + type: WindoorSecure + components: + - rot: 3.141592653589793 rad + pos: 20.5,2.5 + parent: 0 + type: Transform +- uid: 1422 + type: WindoorSecure + components: + - rot: 3.141592653589793 rad + pos: 24.5,2.5 + parent: 0 + type: Transform +- uid: 1423 + type: WindoorSecure + components: + - rot: 3.141592653589793 rad + pos: 24.5,1.5 + parent: 0 + type: Transform +- uid: 1424 + type: WindoorSecure + components: + - rot: 3.141592653589793 rad + pos: 28.5,1.5 + parent: 0 + type: Transform +- uid: 1425 + type: WindoorSecure + components: + - rot: 3.141592653589793 rad + pos: 28.5,2.5 + parent: 0 + type: Transform +- uid: 1426 + type: WindoorSecure + components: + - rot: 3.141592653589793 rad + pos: 32.5,1.5 + parent: 0 + type: Transform +- uid: 1427 + type: WindoorSecure + components: + - rot: 3.141592653589793 rad + pos: 32.5,2.5 + parent: 0 + type: Transform +- uid: 1428 + type: Table + components: + - rot: 3.141592653589793 rad + pos: 19.5,2.5 + parent: 0 + type: Transform +- uid: 1429 + type: Table + components: + - rot: 3.141592653589793 rad + pos: 23.5,2.5 + parent: 0 + type: Transform +- uid: 1430 + type: Table + components: + - rot: 3.141592653589793 rad + pos: 27.5,2.5 + parent: 0 + type: Transform +- uid: 1431 + type: Table + components: + - rot: 3.141592653589793 rad + pos: 31.5,2.5 + parent: 0 + type: Transform +- uid: 1432 + type: DisposalUnit + components: + - pos: 21.5,2.5 + parent: 0 + type: Transform +- uid: 1433 + type: DisposalUnit + components: + - pos: 25.5,2.5 + parent: 0 + type: Transform +- uid: 1434 + type: DisposalUnit + components: + - pos: 29.5,2.5 + parent: 0 + type: Transform +- uid: 1435 + type: DisposalUnit + components: + - pos: 33.5,2.5 + parent: 0 + type: Transform +- uid: 1436 + type: DisposalTrunk + components: + - pos: 21.5,2.5 + parent: 0 + type: Transform +- uid: 1437 + type: DisposalTrunk + components: + - pos: 25.5,2.5 + parent: 0 + type: Transform +- uid: 1438 + type: DisposalTrunk + components: + - pos: 29.5,2.5 + parent: 0 + type: Transform +- uid: 1439 + type: DisposalTrunk + components: + - pos: 33.5,2.5 + parent: 0 + type: Transform +- uid: 1440 + type: DisposalTrunk + components: + - rot: 3.141592653589793 rad + pos: 33.5,1.5 + parent: 0 + type: Transform +- uid: 1441 + type: DisposalTrunk + components: + - rot: 3.141592653589793 rad + pos: 29.5,1.5 + parent: 0 + type: Transform +- uid: 1442 + type: DisposalTrunk + components: + - rot: 3.141592653589793 rad + pos: 25.5,1.5 + parent: 0 + type: Transform +- uid: 1443 + type: DisposalTrunk + components: + - rot: 3.141592653589793 rad + pos: 21.5,1.5 + parent: 0 + type: Transform +- uid: 1444 + type: PoweredSmallLight + components: + - rot: 3.141592653589793 rad + pos: 20.5,0.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 1445 + type: PoweredSmallLight + components: + - rot: 3.141592653589793 rad + pos: 24.5,0.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 1446 + type: PoweredSmallLight + components: + - rot: 3.141592653589793 rad + pos: 28.5,0.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 1447 + type: PoweredSmallLight + components: + - rot: 3.141592653589793 rad + pos: 32.5,0.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 1448 + type: TableGlass + components: + - rot: 3.141592653589793 rad + pos: 20.5,4.5 + parent: 0 + type: Transform +- uid: 1449 + type: TableGlass + components: + - rot: 3.141592653589793 rad + pos: 21.5,4.5 + parent: 0 + type: Transform +- uid: 1450 + type: TableGlass + components: + - rot: 3.141592653589793 rad + pos: 22.5,4.5 + parent: 0 + type: Transform +- uid: 1451 + type: TableGlass + components: + - rot: 3.141592653589793 rad + pos: 32.5,4.5 + parent: 0 + type: Transform +- uid: 1452 + type: TableGlass + components: + - rot: 3.141592653589793 rad + pos: 31.5,4.5 + parent: 0 + type: Transform +- uid: 1453 + type: TableGlass + components: + - rot: 3.141592653589793 rad + pos: 30.5,4.5 + parent: 0 + type: Transform +- uid: 1454 + type: chem_master + components: + - pos: 29.5,4.5 + parent: 0 + type: Transform +- uid: 1455 + type: ChairOfficeLight + components: + - rot: 3.141592653589793 rad + pos: 31.5,3.5 + parent: 0 + type: Transform +- uid: 1456 + type: PlushieSlime + components: + - pos: 28.542555,0.5099404 + parent: 0 + type: Transform +- uid: 1457 + type: ClothingHeadHatAnimalHeadslime + components: + - pos: 20.504282,0.6661904 + parent: 0 + type: Transform +- uid: 1458 + type: VendingMachineSmartFridge + components: + - flags: SessionSpecific + type: MetaData + - pos: 23.5,4.5 + parent: 0 + type: Transform +- uid: 1459 + type: WallSolid + components: + - pos: 19.5,4.5 + parent: 0 + type: Transform +- uid: 1460 + type: WallSolid + components: + - pos: 33.5,4.5 + parent: 0 + type: Transform +- uid: 1461 + type: SignXenolab + components: + - pos: 19.5,4.5 + parent: 0 + type: Transform +- uid: 1462 + type: SignXenolab + components: + - pos: 33.5,4.5 + parent: 0 + type: Transform +- uid: 1463 + type: WindowReinforcedDirectional + components: + - rot: -1.5707963267948966 rad + pos: 19.5,2.5 + parent: 0 + type: Transform +- uid: 1464 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 33.5,2.5 + parent: 0 + type: Transform +- uid: 1465 + type: WindoorSecure + components: + - rot: -1.5707963267948966 rad + pos: 19.5,3.5 + parent: 0 + type: Transform +- uid: 1466 + type: WindoorSecure + components: + - rot: 1.5707963267948966 rad + pos: 33.5,3.5 + parent: 0 + type: Transform +- uid: 1467 + type: ChairOfficeLight + components: + - rot: 1.5707963267948966 rad + pos: 21.5,3.5 + parent: 0 + type: Transform +- uid: 1468 + type: LargeBeaker + components: + - pos: 21.7339,4.82244 + parent: 0 + type: Transform +- uid: 1469 + type: LargeBeaker + components: + - pos: 21.9839,4.619315 + parent: 0 + type: Transform +- uid: 1470 + type: Beaker + components: + - pos: 21.687025,4.54119 + parent: 0 + type: Transform +- uid: 1471 + type: Dropper + components: + - pos: 22.57765,4.50994 + parent: 0 + type: Transform +- uid: 1472 + type: SheetPlasma + components: + - pos: 32.4712,4.556815 + parent: 0 + type: Transform +- uid: 1473 + type: PlasmaTankFilled + components: + - pos: 30.568752,4.54119 + parent: 0 + type: Transform +- uid: 1474 + type: SheetRPGlass + components: + - pos: 20.5658,4.54119 + parent: 0 + type: Transform +- uid: 1475 + type: WaterTankFull + components: + - pos: 24.5,4.5 + parent: 0 + type: Transform +- uid: 1476 + type: BluespaceBeaker + components: + - pos: 21.201073,4.650565 + parent: 0 + type: Transform +- uid: 1477 + type: TableGlass + components: + - pos: 22.5,0.5 + parent: 0 + type: Transform +- uid: 1478 + type: TableGlass + components: + - pos: 30.5,0.5 + parent: 0 + type: Transform +- uid: 1479 + type: ChairOfficeLight + components: + - pos: 22.5,1.5 + parent: 0 + type: Transform +- uid: 1480 + type: ChairOfficeLight + components: + - pos: 30.5,1.5 + parent: 0 + type: Transform +- uid: 1481 + type: filingCabinetDrawerRandom + components: + - pos: 18.5,0.5 + parent: 0 + type: Transform +- uid: 1482 + type: filingCabinetRandom + components: + - pos: 34.5,0.5 + parent: 0 + type: Transform +- uid: 1483 + type: MaintenanceFluffSpawner + components: + - pos: 30.5,0.5 + parent: 0 + type: Transform +- uid: 1484 + type: BoxBeaker + components: + - pos: 22.482006,0.7443154 + parent: 0 + type: Transform +- uid: 1485 + type: SMESBasic + components: + - pos: 28.5,8.5 + parent: 0 + type: Transform +- uid: 1486 + type: SMESBasic + components: + - pos: 29.5,8.5 + parent: 0 + type: Transform +- uid: 1487 + type: SMESBasic + components: + - pos: 30.5,8.5 + parent: 0 + type: Transform +- uid: 1488 + type: CableHV + components: + - pos: 28.5,8.5 + parent: 0 + type: Transform +- uid: 1489 + type: CableHV + components: + - pos: 29.5,8.5 + parent: 0 + type: Transform +- uid: 1490 + type: CableHV + components: + - pos: 30.5,8.5 + parent: 0 + type: Transform +- uid: 1491 + type: CableHV + components: + - pos: 28.5,7.5 + parent: 0 + type: Transform +- uid: 1492 + type: CableHV + components: + - pos: 29.5,7.5 + parent: 0 + type: Transform +- uid: 1493 + type: CableHV + components: + - pos: 30.5,7.5 + parent: 0 + type: Transform +- uid: 1494 + type: CableHV + components: + - pos: 27.5,7.5 + parent: 0 + type: Transform +- uid: 1495 + type: CableHV + components: + - pos: 26.5,7.5 + parent: 0 + type: Transform +- uid: 1496 + type: CableHV + components: + - pos: 31.5,7.5 + parent: 0 + type: Transform +- uid: 1497 + type: CableHV + components: + - pos: 32.5,7.5 + parent: 0 + type: Transform +- uid: 1498 + type: CableHV + components: + - pos: 33.5,7.5 + parent: 0 + type: Transform +- uid: 1499 + type: CableHV + components: + - pos: 33.5,8.5 + parent: 0 + type: Transform +- uid: 1500 + type: CableHV + components: + - pos: 33.5,9.5 + parent: 0 + type: Transform +- uid: 1501 + type: WallSolid + components: + - pos: 28.5,9.5 + parent: 0 + type: Transform +- uid: 1502 + type: CableHV + components: + - pos: 29.5,9.5 + parent: 0 + type: Transform +- uid: 1503 + type: CableHV + components: + - pos: 25.5,7.5 + parent: 0 + type: Transform +- uid: 1504 + type: CableHV + components: + - pos: 25.5,8.5 + parent: 0 + type: Transform +- uid: 1505 + type: CableHV + components: + - pos: 25.5,9.5 + parent: 0 + type: Transform +- uid: 1506 + type: WallSolid + components: + - pos: 29.5,9.5 + parent: 0 + type: Transform +- uid: 1507 + type: WallSolid + components: + - pos: 30.5,9.5 + parent: 0 + type: Transform +- uid: 1508 + type: CableMV + components: + - pos: 29.5,9.5 + parent: 0 + type: Transform +- uid: 1509 + type: CableMV + components: + - pos: 30.5,9.5 + parent: 0 + type: Transform +- uid: 1510 + type: CableApcExtension + components: + - pos: 30.5,9.5 + parent: 0 + type: Transform +- uid: 1511 + type: CableApcExtension + components: + - pos: 31.5,7.5 + parent: 0 + type: Transform +- uid: 1512 + type: CableApcExtension + components: + - pos: 31.5,6.5 + parent: 0 + type: Transform +- uid: 1513 + type: CableApcExtension + components: + - pos: 30.5,6.5 + parent: 0 + type: Transform +- uid: 1514 + type: CableApcExtension + components: + - pos: 29.5,6.5 + parent: 0 + type: Transform +- uid: 1515 + type: CableApcExtension + components: + - pos: 28.5,6.5 + parent: 0 + type: Transform +- uid: 1516 + type: CableApcExtension + components: + - pos: 27.5,6.5 + parent: 0 + type: Transform +- uid: 1517 + type: CableApcExtension + components: + - pos: 27.5,7.5 + parent: 0 + type: Transform +- uid: 1518 + type: CableTerminal + components: + - rot: 3.141592653589793 rad + pos: 28.5,7.5 + parent: 0 + type: Transform +- uid: 1519 + type: CableTerminal + components: + - rot: 3.141592653589793 rad + pos: 29.5,7.5 + parent: 0 + type: Transform +- uid: 1520 + type: CableTerminal + components: + - rot: 3.141592653589793 rad + pos: 30.5,7.5 + parent: 0 + type: Transform +- uid: 1521 + type: Catwalk + components: + - pos: 28.5,7.5 + parent: 0 + type: Transform +- uid: 1522 + type: Catwalk + components: + - pos: 29.5,7.5 + parent: 0 + type: Transform +- uid: 1523 + type: Catwalk + components: + - pos: 30.5,7.5 + parent: 0 + type: Transform +- uid: 1524 + type: GeneratorRTG + components: + - pos: 25.5,7.5 + parent: 0 + type: Transform +- uid: 1525 + type: GeneratorRTG + components: + - pos: 25.5,9.5 + parent: 0 + type: Transform +- uid: 1526 + type: GeneratorRTG + components: + - pos: 33.5,7.5 + parent: 0 + type: Transform +- uid: 1527 + type: GeneratorRTG + components: + - pos: 33.5,9.5 + parent: 0 + type: Transform +- uid: 1528 + type: GeneratorPlasma + components: + - pos: 25.5,8.5 + parent: 0 + type: Transform +- uid: 1529 + type: GeneratorPlasma + components: + - pos: 33.5,8.5 + parent: 0 + type: Transform +- uid: 1530 + type: TableReinforced + components: + - pos: 27.5,8.5 + parent: 0 + type: Transform +- uid: 1531 + type: LockerWeldingSuppliesFilled + components: + - pos: 31.5,9.5 + parent: 0 + type: Transform +- uid: 1532 + type: TableReinforced + components: + - pos: 31.5,8.5 + parent: 0 + type: Transform +- uid: 1533 + type: LockerElectricalSuppliesFilled + components: + - pos: 27.5,9.5 + parent: 0 + type: Transform +- uid: 1534 + type: MaterialBiomass + components: + - pos: 24.534355,0.41658816 + parent: 0 + type: Transform +- uid: 1535 + type: SheetGlass + components: + - pos: 27.48748,8.492639 + parent: 0 + type: Transform +- uid: 1536 + type: SheetPlasteel + components: + - pos: 31.534355,8.523889 + parent: 0 + type: Transform +- uid: 1537 + type: SheetPlastic + components: + - pos: 7.5163627,6.5836935 + parent: 0 + type: Transform +- uid: 1538 + type: SheetRGlass + components: + - pos: 6.5744953,22.554136 + parent: 0 + type: Transform +- uid: 1539 + type: SheetSteel + components: + - pos: 4.6210227,35.514687 + parent: 0 + type: Transform +- uid: 1540 + type: SignElectricalMed + components: + - pos: 28.5,9.5 + parent: 0 + type: Transform +- uid: 1541 + type: CableApcStack + components: + - pos: 27.694578,8.767019 + parent: 0 + type: Transform +- uid: 1542 + type: CableMVStack + components: + - pos: 27.819578,8.595144 + parent: 0 + type: Transform +- uid: 1543 + type: CableHVStack + components: + - pos: 27.850828,8.329519 + parent: 0 + type: Transform +- uid: 1544 + type: WeldingFuelTankFull + components: + - pos: 31.5,7.5 + parent: 0 + type: Transform +- uid: 1545 + type: WeldingFuelTankFull + components: + - pos: 27.5,7.5 + parent: 0 + type: Transform +- uid: 1546 + type: computerBodyScanner + components: + - rot: 3.141592653589793 rad + pos: 28.5,12.5 + parent: 0 + type: Transform +- uid: 1547 + type: computerBodyScanner + components: + - pos: 26.5,16.5 + parent: 0 + type: Transform +- uid: 1548 + type: MedicalScanner + components: + - pos: 25.5,16.5 + parent: 0 + type: Transform +- uid: 1549 + type: MedicalScanner + components: + - pos: 29.5,12.5 + parent: 0 + type: Transform +- uid: 1550 + type: Table + components: + - pos: 24.5,15.5 + parent: 0 + type: Transform +- uid: 1551 + type: Table + components: + - pos: 24.5,16.5 + parent: 0 + type: Transform +- uid: 1552 + type: Table + components: + - pos: 30.5,12.5 + parent: 0 + type: Transform +- uid: 1553 + type: Table + components: + - pos: 30.5,13.5 + parent: 0 + type: Transform +- uid: 1554 + type: VendingMachineGeneDrobe + components: + - flags: SessionSpecific + type: MetaData + - pos: 29.5,16.5 + parent: 0 + type: Transform +- uid: 1555 + type: TableGlass + components: + - pos: 28.5,16.5 + parent: 0 + type: Transform +- uid: 1556 + type: ClosetRadiationSuitFilled + components: + - pos: 30.5,16.5 + parent: 0 + type: Transform +- uid: 1557 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 24.5,13.5 + parent: 0 + type: Transform +- uid: 1558 + type: WindowReinforcedDirectional + components: + - rot: 3.141592653589793 rad + pos: 26.5,13.5 + parent: 0 + type: Transform +- uid: 1559 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 26.5,13.5 + parent: 0 + type: Transform +- uid: 1560 + type: WindowReinforcedDirectional + components: + - rot: 1.5707963267948966 rad + pos: 26.5,12.5 + parent: 0 + type: Transform +- uid: 1561 + type: ShardGlassReinforced + components: + - pos: 25.506968,14.578961 + parent: 0 + type: Transform +- uid: 1562 + type: MonkeyCubeBox + components: + - pos: 24.538218,15.750836 + parent: 0 + type: Transform +- uid: 1563 + type: MonkeyCube + components: + - pos: 26.366343,13.313336 + parent: 0 + type: Transform +- uid: 1564 + type: MonkeyCube + components: + - pos: 25.631968,12.750836 + parent: 0 + type: Transform +- uid: 1565 + type: FireExtinguisher + components: + - rot: -1.5707963267948966 rad + pos: 26.272593,12.469586 + parent: 0 + type: Transform +- uid: 1566 + type: ClothingHeadsetMedicalScience + components: + - pos: 30.475718,12.610211 + parent: 0 + type: Transform +- uid: 1567 + type: PaperBin5 + components: + - pos: 30.5,13.5 + parent: 0 + type: Transform +- uid: 1568 + type: BoxFolderWhite + components: + - pos: 24.522593,16.500835 + parent: 0 + type: Transform +- uid: 1569 + type: PowerCellRecharger + components: + - pos: 28.5,16.5 + parent: 0 + type: Transform +- uid: 1570 + type: Stool + components: + - rot: 3.141592653589793 rad + pos: 26.5,15.5 + parent: 0 + type: Transform +- uid: 1571 + type: Stool + components: + - pos: 28.5,13.5 + parent: 0 + type: Transform +- uid: 1572 + type: MaterialBiomass + components: + - pos: 24.569468,13.125836 + parent: 0 + type: Transform +- uid: 1573 + type: SprayBottleWater + components: + - pos: 30.7552,12.830012 + parent: 0 + type: Transform +- uid: 1574 + type: PillCanister + components: + - pos: 24.34895,16.173763 + parent: 0 + type: Transform +- uid: 1575 + type: WallSolid + components: + - pos: 34.5,16.5 + parent: 0 + type: Transform +- uid: 1576 + type: filingCabinetDrawerRandom + components: + - pos: 35.5,16.5 + parent: 0 + type: Transform +- uid: 1577 + type: Table + components: + - pos: 36.5,16.5 + parent: 0 + type: Transform +- uid: 1578 + type: Table + components: + - pos: 36.5,15.5 + parent: 0 + type: Transform +- uid: 1579 + type: Table + components: + - pos: 36.5,14.5 + parent: 0 + type: Transform +- uid: 1580 + type: Table + components: + - pos: 35.5,14.5 + parent: 0 + type: Transform +- uid: 1581 + type: Table + components: + - pos: 32.5,13.5 + parent: 0 + type: Transform +- uid: 1582 + type: Table + components: + - pos: 33.5,13.5 + parent: 0 + type: Transform +- uid: 1583 + type: ChairOfficeLight + components: + - pos: 35.5,15.5 + parent: 0 + type: Transform +- uid: 1584 + type: ChairOfficeDark + components: + - rot: 1.5707963267948966 rad + pos: 33.5,12.5 + parent: 0 + type: Transform +- uid: 1585 + type: filingCabinetRandom + components: + - pos: 32.5,12.5 + parent: 0 + type: Transform +- uid: 1586 + type: ToolboxMechanicalFilled + components: + - pos: 36.51179,16.622833 + parent: 0 + type: Transform +- uid: 1587 + type: Chair + components: + - rot: -1.5707963267948966 rad + pos: 37.5,15.5 + parent: 0 + type: Transform +- uid: 1588 + type: Chair + components: + - rot: -1.5707963267948966 rad + pos: 37.5,14.5 + parent: 0 + type: Transform +- uid: 1589 + type: BaseComputer + components: + - pos: 37.5,16.5 + parent: 0 + type: Transform +- uid: 1590 + type: Poweredlight + components: + - pos: 27.5,4.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 1591 + type: Poweredlight + components: + - rot: -1.5707963267948966 rad + pos: 30.5,15.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 1592 + type: Poweredlight + components: + - rot: 1.5707963267948966 rad + pos: 24.5,13.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 1593 + type: Poweredlight + components: + - rot: -1.5707963267948966 rad + pos: 34.5,19.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 1594 + type: PoweredSmallLightEmpty + components: + - rot: 3.141592653589793 rad + pos: 34.5,12.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 1595 + type: PoweredSmallLight + components: + - pos: 38.5,16.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +- uid: 1596 + type: SignScience + components: + - pos: 34.5,16.5 + parent: 0 + type: Transform +- uid: 1597 + type: SignalTrigger + components: + - pos: 32.571358,13.5151415 + parent: 0 + type: Transform +- uid: 1598 + type: PowerCellRecharger + components: + - pos: 36.5,14.5 + parent: 0 + type: Transform +- uid: 1599 + type: PowerCellHyperPrinted + components: + - pos: 33.368233,13.5307665 + parent: 0 + type: Transform +- uid: 1600 + type: CircuitImprinter + components: + - pos: 32.5,16.5 + parent: 0 + type: Transform +- uid: 1601 + type: Autolathe + components: + - pos: 33.5,16.5 + parent: 0 + type: Transform +- uid: 1602 + type: UnfinishedMachineFrame + components: + - pos: 33.5,14.5 + parent: 0 + type: Transform +- uid: 1603 + type: MachineFrame + components: + - pos: 32.5,14.5 + parent: 0 + type: Transform +- uid: 1604 + type: Beaker + components: + - rot: -1.5707963267948966 rad + pos: 35.286808,13.7495165 + parent: 0 + type: Transform +- uid: 1605 + type: EmergencyLight + components: + - pos: 29.5,8.5 + parent: 0 + type: Transform + - type: ActiveEmergencyLight +- uid: 1606 + type: EmergencyLight + components: + - rot: 3.141592653589793 rad + pos: 11.5,16.5 + parent: 0 + type: Transform + - type: ActiveEmergencyLight +- uid: 1607 + type: EmergencyLight + components: + - rot: 3.141592653589793 rad + pos: 13.5,44.5 + parent: 0 + type: Transform + - type: ActiveEmergencyLight +- uid: 1608 + type: Bookshelf + components: + - pos: 30.5,32.5 + parent: 0 + type: Transform +- uid: 1609 + type: Bookshelf + components: + - pos: 38.5,32.5 + parent: 0 + type: Transform +- uid: 1610 + type: Bookshelf + components: + - pos: 36.5,30.5 + parent: 0 + type: Transform +- uid: 1611 + type: Bookshelf + components: + - pos: 32.5,30.5 + parent: 0 + type: Transform +- uid: 1612 + type: GasFilter + components: + - rot: 1.5707963267948966 rad + pos: 42.5,16.5 + parent: 0 + type: Transform +- uid: 1613 + type: GasMixer + components: + - rot: 1.5707963267948966 rad + pos: 41.5,16.5 + parent: 0 + type: Transform +- uid: 1614 + type: GasPort + components: + - rot: -1.5707963267948966 rad + pos: 43.5,16.5 + parent: 0 + type: Transform +- uid: 1615 + type: GasPort + components: + - rot: 3.141592653589793 rad + pos: 42.5,15.5 + parent: 0 + type: Transform +- uid: 1616 + type: GasPort + components: + - rot: 3.141592653589793 rad + pos: 41.5,15.5 + parent: 0 + type: Transform +- uid: 1617 + type: GasPort + components: + - rot: 1.5707963267948966 rad + pos: 40.5,16.5 + parent: 0 + type: Transform +- uid: 1618 + type: Table + components: + - rot: 1.5707963267948966 rad + pos: 40.5,13.5 + parent: 0 + type: Transform +- uid: 1619 + type: Table + components: + - rot: 1.5707963267948966 rad + pos: 40.5,12.5 + parent: 0 + type: Transform +- uid: 1620 + type: Table + components: + - rot: 1.5707963267948966 rad + pos: 42.5,12.5 + parent: 0 + type: Transform +- uid: 1621 + type: Table + components: + - rot: 1.5707963267948966 rad + pos: 41.5,12.5 + parent: 0 + type: Transform +- uid: 1622 + type: Table + components: + - rot: 1.5707963267948966 rad + pos: 42.5,13.5 + parent: 0 + type: Transform +- uid: 1623 + type: ChairOfficeLight + components: + - pos: 41.5,13.5 + parent: 0 + type: Transform +- uid: 1624 + type: ResearchDisk5000 + components: + - pos: 36.524506,15.557037 + parent: 0 + type: Transform +- uid: 1625 + type: ResearchDisk + components: + - pos: 8.434439,1.4775863 + parent: 0 + type: Transform +- uid: 1626 + type: ResearchDisk + components: + - pos: 32.469986,0.49321127 + parent: 0 + type: Transform +- uid: 1627 + type: ResearchDisk + components: + - pos: 24.461615,16.586529 + parent: 0 + type: Transform +- uid: 1628 + type: RemoteSignaller + components: + - pos: 42.357162,12.70194 + parent: 0 + type: Transform +- uid: 1629 + type: RemoteSignaller + components: + - pos: 42.482162,12.85819 + parent: 0 + type: Transform +- uid: 1630 + type: RemoteSignaller + components: + - pos: 42.607162,12.70194 + parent: 0 + type: Transform +- uid: 1631 + type: TimerTrigger + components: + - pos: 40.404037,12.592565 + parent: 0 + type: Transform +- uid: 1632 + type: TimerTrigger + components: + - pos: 40.575912,12.73319 + parent: 0 + type: Transform +- uid: 1633 + type: TimerTrigger + components: + - pos: 40.654037,12.48319 + parent: 0 + type: Transform +- uid: 1634 + type: ModularGrenade + components: + - pos: 40.388412,13.373815 + parent: 0 + type: Transform +- uid: 1635 + type: ModularGrenade + components: + - pos: 40.482162,13.57694 + parent: 0 + type: Transform +- uid: 1636 + type: ModularGrenade + components: + - pos: 40.607162,13.405065 + parent: 0 + type: Transform +- uid: 1637 + type: SalvagePartsT2Spawner + components: + - pos: 41.5,12.5 + parent: 0 + type: Transform +- uid: 1638 + type: SalvagePartsT3Spawner + components: + - pos: 42.5,13.5 + parent: 0 + type: Transform +- uid: 1639 + type: SalvagePartsT2Spawner + components: + - pos: 35.5,14.5 + parent: 0 + type: Transform +- uid: 1640 + type: SalvagePartsT2Spawner + components: + - pos: 10.5,7.5 + parent: 0 + type: Transform +- uid: 1641 + type: SalvagePartsT2Spawner + components: + - pos: 23.5,2.5 + parent: 0 + type: Transform +- uid: 1642 + type: SalvagePartsT3Spawner + components: + - pos: 31.5,2.5 + parent: 0 + type: Transform +- uid: 1643 + type: SalvagePartsT2Spawner + components: + - pos: 37.5,0.5 + parent: 0 + type: Transform +- uid: 1644 + type: SalvagePartsT2Spawner + components: + - pos: 2.5,31.5 + parent: 0 + type: Transform +- uid: 1645 + type: SalvagePartsT2Spawner + components: + - pos: 1.5,46.5 + parent: 0 + type: Transform +- uid: 1646 + type: RPED + components: + - pos: 32.49994,15.5244 + parent: 0 + type: Transform +- uid: 1647 + type: StorageCanister + components: + - pos: 40.5,16.5 + parent: 0 + type: Transform +- uid: 1648 + type: GasCanisterBrokenBase + components: + - pos: 43.5,15.5 + parent: 0 + type: Transform +- uid: 1649 + type: GasRecycler + components: + - pos: 46.5,16.5 + parent: 0 + type: Transform +- uid: 1650 + type: GasThermoMachineFreezer + components: + - pos: 45.5,16.5 + parent: 0 + type: Transform +- uid: 1651 + type: GasPort + components: + - rot: 3.141592653589793 rad + pos: 45.5,15.5 + parent: 0 + type: Transform +- uid: 1652 + type: PoweredSmallLightEmpty + components: + - rot: 3.141592653589793 rad + pos: 45.5,12.5 + parent: 0 + type: Transform + - powerLoad: 0 + type: ApcPowerReceiver +... diff --git a/Resources/Maps/Dungeon/template.yml b/Resources/Maps/Dungeon/template.yml new file mode 100644 index 0000000000..e672b31af0 --- /dev/null +++ b/Resources/Maps/Dungeon/template.yml @@ -0,0 +1,166 @@ +meta: + format: 3 + name: DemoStation + author: Space-Wizards + postmapinit: false +tilemap: + 0: Space + 1: FloorArcadeBlue + 2: FloorArcadeBlue2 + 3: FloorArcadeRed + 4: FloorAsteroidCoarseSand0 + 5: FloorAsteroidCoarseSandDug + 6: FloorAsteroidIronsand1 + 7: FloorAsteroidIronsand2 + 8: FloorAsteroidIronsand3 + 9: FloorAsteroidIronsand4 + 10: FloorAsteroidSand + 11: FloorAsteroidTile + 12: FloorBar + 13: FloorBasalt + 14: FloorBasaslt + 15: FloorBlue + 16: FloorBlueCircuit + 17: FloorBoxing + 18: FloorCarpetClown + 19: FloorCarpetOffice + 20: FloorCave + 21: FloorCaveDrought + 22: FloorClown + 23: FloorDark + 24: FloorDarkDiagonal + 25: FloorDarkDiagonalMini + 26: FloorDarkHerringbone + 27: FloorDarkMini + 28: FloorDarkMono + 29: FloorDarkOffset + 30: FloorDarkPavement + 31: FloorDarkPavementVertical + 32: FloorDarkPlastic + 33: FloorDesert + 34: FloorDirt + 35: FloorEighties + 36: FloorElevatorShaft + 37: FloorFlesh + 38: FloorFreezer + 39: FloorGlass + 40: FloorGold + 41: FloorGrass + 42: FloorGrassDark + 43: FloorGrassJungle + 44: FloorGrassLight + 45: FloorGreenCircuit + 46: FloorGym + 47: FloorHydro + 48: FloorKitchen + 49: FloorLaundry + 50: FloorLino + 51: FloorLowDesert + 52: FloorMetalDiamond + 53: FloorMime + 54: FloorMono + 55: FloorPlanetGrass + 56: FloorPlastic + 57: FloorRGlass + 58: FloorReinforced + 59: FloorRockVault + 60: FloorShowroom + 61: FloorShuttleBlue + 62: FloorShuttleOrange + 63: FloorShuttlePurple + 64: FloorShuttleRed + 65: FloorShuttleWhite + 66: FloorSilver + 67: FloorSnow + 68: FloorSteel + 69: FloorSteelDiagonal + 70: FloorSteelDiagonalMini + 71: FloorSteelDirty + 72: FloorSteelHerringbone + 73: FloorSteelMini + 74: FloorSteelMono + 75: FloorSteelOffset + 76: FloorSteelPavement + 77: FloorSteelPavementVertical + 78: FloorTechMaint + 79: FloorTechMaint2 + 80: FloorTechMaint3 + 81: FloorWhite + 82: FloorWhiteDiagonal + 83: FloorWhiteDiagonalMini + 84: FloorWhiteHerringbone + 85: FloorWhiteMini + 86: FloorWhiteMono + 87: FloorWhiteOffset + 88: FloorWhitePavement + 89: FloorWhitePavementVertical + 90: FloorWhitePlastic + 91: FloorWood + 92: FloorWoodTile + 93: Lattice + 94: Plating +entities: +- uid: 0 + components: + - type: MetaData + - type: Transform + - index: 2 + type: Map + - type: PhysicsMap + - type: Broadphase + - type: OccluderTree + - chunks: + -1,-1: + ind: -1,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAA== + 0,0: + ind: 0,0 + tiles: RAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAAPgAAAD4AAAA+AAAAPgAAAD4AAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAA== + 0,1: + ind: 0,1 + tiles: RAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAABEAAAARAAAAEQAAABEAAAARAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAARAAAAEQAAABEAAAARAAAAEQAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAEQAAABEAAAARAAAAEQAAABEAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAABEAAAARAAAAEQAAABEAAAARAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAARAAAAEQAAABEAAAARAAAAEQAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAABEAAAARAAAAEQAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAARAAAAEQAAABEAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAEQAAABEAAAARAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAABEAAAARAAAAEQAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAARAAAAEQAAABEAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAAPgAAAD4AAAA+AAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAD4AAAA+AAAAPgAAAA== + 0,-1: + ind: 0,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAA== + -1,0: + ind: -1,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAA== + -1,1: + ind: -1,1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAA== + 1,-1: + ind: 1,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 1,0: + ind: 1,0 + tiles: RAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 1,1: + ind: 1,1 + tiles: PgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + -1,2: + ind: -1,2 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + -1,3: + ind: -1,3 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 0,2: + ind: 0,2 + tiles: RAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAEQAAABEAAAARAAAAEQAAABEAAAARAAAAEQAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAABEAAAARAAAAEQAAABEAAAARAAAAEQAAABEAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 0,3: + ind: 0,3 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 1,2: + ind: 1,2 + tiles: PgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAAAPgAAAD4AAAA+AAAAPgAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAAD4AAAA+AAAAPgAAAD4AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + 1,3: + ind: 1,3 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + type: MapGrid + - nextUpdate: 171.4322096 + type: GridPathfinding + - gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + type: Gravity + - chunkCollection: {} + type: DecalGrid +... diff --git a/Resources/Prototypes/Catalog/Fills/Paper/salvage_lore.yml b/Resources/Prototypes/Catalog/Fills/Paper/salvage_lore.yml index 6d2733a88f..b7eb05b72d 100644 --- a/Resources/Prototypes/Catalog/Fills/Paper/salvage_lore.yml +++ b/Resources/Prototypes/Catalog/Fills/Paper/salvage_lore.yml @@ -12,7 +12,6 @@ I rigged the area where our stuff's at to be a toasty thousand K. You know how to drain it when we need it out. - J. - # ---- GAMING ---- - type: entity @@ -46,7 +45,6 @@ Leaving this so you know what's up. Sorry. - Alexander - - type: entity id: PaperWrittenSalvageLoreGaming2 noSpawn: true # keep this from spamming spawn sheet @@ -64,11 +62,9 @@ Int: 528,491 Wis: 1 Cha: 1 - Where's the age? Why are those ability scores so ridiculous? What even are you trying to do here, Leah? - Your Friendly DM - - type: entity id: PaperWrittenSalvageLoreGaming3 noSpawn: true # keep this from spamming spawn sheet @@ -83,7 +79,6 @@ Session 3: On their way to underground lair. Session 4: Just ran into the Architect Of Flies. Oh dear goodness they just started randomly killing everybody - - type: entity id: PaperWrittenSalvageLoreGaming4 noSpawn: true # keep this from spamming spawn sheet @@ -97,6 +92,4 @@ It's amazing. But not in a good way. Cheers, - Arielle - -# ---- - +# ---- \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml b/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml index 31fade648f..c4638f9ad0 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml @@ -60,7 +60,7 @@ - type: MobThresholds thresholds: 0: Alive - 200: Dead + 50: Dead - type: Stamina excess: 200 - type: Bloodstream @@ -81,7 +81,7 @@ animation: WeaponArcBite damage: groups: - Brute: 12 + Brute: 6 - type: Appearance - type: DamageStateVisuals rotate: true @@ -139,7 +139,7 @@ - type: MobThresholds thresholds: 0: Alive - 300: Dead + 75: Dead - type: Stamina excess: 300 - type: SlowOnDamage @@ -175,15 +175,16 @@ - type: MobThresholds thresholds: 0: Alive - 200: Dead + 150: Dead + - type: MeleeWeapon + damage: + groups: + Brute: 5 - type: Stamina excess: 200 - type: MovementSpeedModifier baseWalkSpeed : 3.0 baseSprintSpeed : 5.5 - - type: SlowOnDamage - speedModifierThresholds: - 150: 0.7 - type: Fixtures fixtures: - shape: @@ -214,7 +215,7 @@ - type: MobThresholds thresholds: 0: Alive - 1500: Dead + 300: Dead - type: Stamina excess: 1500 - type: MovementSpeedModifier @@ -224,7 +225,7 @@ hidden: true damage: groups: - Brute: 40 + Brute: 20 - type: SlowOnDamage speedModifierThresholds: 1000: 0.7 @@ -258,7 +259,7 @@ - type: MobThresholds thresholds: 0: Alive - 550: Dead + 200: Dead - type: Stamina excess: 550 - type: MovementSpeedModifier @@ -268,7 +269,7 @@ hidden: true damage: groups: - Brute: 20 + Brute: 10 - type: SlowOnDamage speedModifierThresholds: 450: 0.7 @@ -302,7 +303,7 @@ - type: MobThresholds thresholds: 0: Alive - 250: Dead + 50: Dead - type: Stamina excess: 250 - type: MovementSpeedModifier @@ -312,15 +313,12 @@ hidden: true damage: groups: - Brute: 8 - - type: SlowOnDamage - speedModifierThresholds: - 200: 0.7 + Brute: 3 - type: Fixtures fixtures: - shape: !type:PhysShapeCircle - radius: 0.45 + radius: 0.35 density: 235 mask: - MobMask @@ -356,7 +354,7 @@ - type: MobThresholds thresholds: 0: Alive - 300: Dead + 75: Dead - type: Stamina excess: 300 - type: SlowOnDamage diff --git a/Resources/Prototypes/Entities/Structures/Specific/xeno.yml b/Resources/Prototypes/Entities/Structures/Specific/xeno.yml new file mode 100644 index 0000000000..a1c5e64779 --- /dev/null +++ b/Resources/Prototypes/Entities/Structures/Specific/xeno.yml @@ -0,0 +1,49 @@ +- type: entity + id: XenoWardingTower + name: Xeno warding tower + description: a + placement: + mode: SnapgridCenter + snap: + - Wall + components: + - type: RangedDamageSound + soundGroups: + Brute: + collection: + MeatBulletImpact + soundTypes: + Heat: + collection: + MeatLaserImpact + - type: InteractionOutline + - type: Sprite + netsync: false + sprite: Structures/Specific/xeno_building.rsi + layers: + - state: wardingtower + - state: wardingtower-unshaded + shader: unshaded + - type: Damageable + damageContainer: Inorganic + damageModifierSet: Metallic + - type: Physics + bodyType: Static + - type: Fixtures + fixtures: + - shape: + !type:PhysShapeAabb + bounds: "-0.5,-0.5,0.5,0.5" + mask: + - FullTileMask + layer: + - WallLayer + density: 1000 + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 50 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] diff --git a/Resources/Prototypes/Entities/Tiles/basalt.yml b/Resources/Prototypes/Entities/Tiles/basalt.yml index 064bbb45ad..fff88e3b9c 100644 --- a/Resources/Prototypes/Entities/Tiles/basalt.yml +++ b/Resources/Prototypes/Entities/Tiles/basalt.yml @@ -11,6 +11,7 @@ - state: basalt1 shader: unshaded drawdepth: LowFloors + - type: SyncSprite - type: RequiresTile - type: Transform anchored: true diff --git a/Resources/Prototypes/Entities/Tiles/water.yml b/Resources/Prototypes/Entities/Tiles/water.yml new file mode 100644 index 0000000000..2aa53996c9 --- /dev/null +++ b/Resources/Prototypes/Entities/Tiles/water.yml @@ -0,0 +1,39 @@ +- type: entity + id: FloorWaterEntity + name: water + placement: + mode: SnapgridCenter + snap: + - Wall + components: + - type: StepTrigger + requiredTriggeredSpeed: 0 + intersectRatio: 0.1 + - type: Transform + anchored: true + - type: SyncSprite + - type: Sprite + sprite: Tiles/Planet/water.rsi + netsync: false + drawdepth: BelowFloor + layers: + - state: shoreline_water + - type: SlowContacts + walkSpeedModifier: 0.5 + sprintSpeedModifier: 0.5 + - type: Physics + bodyType: Static + - type: Fixtures + fixtures: + - shape: + !type:PhysShapeAabb + bounds: "-0.5,-0.5,0.5,0.5" + layer: + - SlipLayer + mask: + - ItemMask + density: 1000 + hard: false + - type: FootstepModifier + footstepSoundCollection: + collection: FootstepWater diff --git a/Resources/Prototypes/Parallaxes/planet.yml b/Resources/Prototypes/Parallaxes/planet.yml index 3371dfd746..20adc9957c 100644 --- a/Resources/Prototypes/Parallaxes/planet.yml +++ b/Resources/Prototypes/Parallaxes/planet.yml @@ -14,7 +14,7 @@ scrolling: "0.1, -0.05" - type: parallax - id: Grass + id: Dirt layers: - texture: !type:ImageParallaxTextureSource @@ -23,6 +23,16 @@ scale: "1, 1" shader: "" +- type: parallax + id: Grass + layers: + - texture: + !type:ImageParallaxTextureSource + path: /Textures/Tiles/Planet/Grass/grass.png + slowness: 0 + scale: "1, 1" + shader: "" + - type: parallax id: Snow layers: diff --git a/Resources/Prototypes/Procedural/Themes/experiment.yml b/Resources/Prototypes/Procedural/Themes/experiment.yml new file mode 100644 index 0000000000..2027e3e1c2 --- /dev/null +++ b/Resources/Prototypes/Procedural/Themes/experiment.yml @@ -0,0 +1,324 @@ +# Rooms +# Large +# - 17x5 +- type: dungeonRoom + id: Science17x5a + size: 17,5 + atlas: /Maps/Dungeon/experiment.yml + offset: 0,0 + tags: + - SalvageExperiment + +- type: dungeonRoom + id: Science17x5b + size: 17,5 + atlas: /Maps/Dungeon/experiment.yml + offset: 18,0 + tags: + - SalvageExperiment + +- type: dungeonRoom + id: Science17x5c + size: 17,5 + atlas: /Maps/Dungeon/experiment.yml + offset: 36,0 + tags: + - SalvageExperiment + +# - 7x7 +- type: dungeonRoom + id: Science7x7a + size: 7,7 + atlas: /Maps/Dungeon/experiment.yml + offset: 0,42 + tags: + - SalvageExperiment + +- type: dungeonRoom + id: Science7x7b + size: 7,7 + atlas: /Maps/Dungeon/experiment.yml + offset: 8,42 + tags: + - SalvageExperiment + +- type: dungeonRoom + id: Science7x7c + size: 7,7 + atlas: /Maps/Dungeon/experiment.yml + offset: 16,42 + tags: + - SalvageExperiment + +# Medium +# - 11x5 +- type: dungeonRoom + id: Science11x5a + size: 11,5 + atlas: /Maps/Dungeon/experiment.yml + offset: 0,6 + tags: + - SalvageExperiment + +- type: dungeonRoom + id: Science11x5b + size: 11,5 + atlas: /Maps/Dungeon/experiment.yml + offset: 12,6 + tags: + - SalvageExperiment + +- type: dungeonRoom + id: Science11x5c + size: 11,5 + atlas: /Maps/Dungeon/experiment.yml + offset: 24,6 + tags: + - SalvageExperiment + +# - 7x5 +- type: dungeonRoom + id: Science7x5a + size: 7,5 + atlas: /Maps/Dungeon/experiment.yml + offset: 0,12 + tags: + - SalvageExperiment + +- type: dungeonRoom + id: Science7x5b + size: 7,5 + atlas: /Maps/Dungeon/experiment.yml + offset: 8,12 + tags: + - SalvageExperiment + +- type: dungeonRoom + id: Science7x5c + size: 7,5 + atlas: /Maps/Dungeon/experiment.yml + offset: 16,12 + tags: + - SalvageExperiment + +- type: dungeonRoom + id: Science7x5d + size: 7,5 + atlas: /Maps/Dungeon/experiment.yml + offset: 24,12 + tags: + - SalvageExperiment + +- type: dungeonRoom + id: Science7x5e + size: 7,5 + atlas: /Maps/Dungeon/experiment.yml + offset: 32,12 + tags: + - SalvageExperiment + +- type: dungeonRoom + id: Science7x5f + size: 7,5 + atlas: /Maps/Dungeon/experiment.yml + offset: 40,12 + tags: + - SalvageExperiment + +# - 13x3 +- type: dungeonRoom + id: Science13x3a + size: 13,3 + atlas: /Maps/Dungeon/experiment.yml + offset: 0,30 + tags: + - SalvageExperiment + +- type: dungeonRoom + id: Science13x3b + size: 13,3 + atlas: /Maps/Dungeon/experiment.yml + offset: 14,30 + tags: + - SalvageExperiment + +- type: dungeonRoom + id: Science13x3c + size: 13,3 + atlas: /Maps/Dungeon/experiment.yml + offset: 28,30 + tags: + - SalvageExperiment + +# - 11x3 +- type: dungeonRoom + id: Science11x3a + size: 11,3 + atlas: /Maps/Dungeon/experiment.yml + offset: 0,34 + tags: + - SalvageExperiment + +- type: dungeonRoom + id: Science11x3b + size: 11,3 + atlas: /Maps/Dungeon/experiment.yml + offset: 12,34 + tags: + - SalvageExperiment + +- type: dungeonRoom + id: Science11x3c + size: 11,3 + atlas: /Maps/Dungeon/experiment.yml + offset: 24,34 + tags: + - SalvageExperiment + +# - 7x3 +- type: dungeonRoom + id: Science7x3a + size: 7,3 + atlas: /Maps/Dungeon/experiment.yml + offset: 0,38 + tags: + - SalvageExperiment + +- type: dungeonRoom + id: Science7x3b + size: 7,3 + atlas: /Maps/Dungeon/experiment.yml + offset: 8,38 + tags: + - SalvageExperiment + +- type: dungeonRoom + id: Science7x3c + size: 7,3 + atlas: /Maps/Dungeon/experiment.yml + offset: 16,38 + tags: + - SalvageExperiment + +- type: dungeonRoom + id: Science7x3d + size: 7,3 + atlas: /Maps/Dungeon/experiment.yml + offset: 24,38 + tags: + - SalvageExperiment + +- type: dungeonRoom + id: Science7x3e + size: 7,3 + atlas: /Maps/Dungeon/experiment.yml + offset: 32,38 + tags: + - SalvageExperiment + +- type: dungeonRoom + id: Science7x3f + size: 7,3 + atlas: /Maps/Dungeon/experiment.yml + offset: 40,38 + tags: + - SalvageExperiment + +# Small +# - 5x5 +- type: dungeonRoom + id: Science5x5a + size: 5,5 + atlas: /Maps/Dungeon/experiment.yml + offset: 0,18 + tags: + - SalvageExperiment + +- type: dungeonRoom + id: Science5x5b + size: 5,5 + atlas: /Maps/Dungeon/experiment.yml + offset: 6,18 + tags: + - SalvageExperiment + +- type: dungeonRoom + id: Science5x5c + size: 5,5 + atlas: /Maps/Dungeon/experiment.yml + offset: 12,18 + tags: + - SalvageExperiment + +- type: dungeonRoom + id: Science5x5d + size: 5,5 + atlas: /Maps/Dungeon/experiment.yml + offset: 18,18 + tags: + - SalvageExperiment + +- type: dungeonRoom + id: Science5x5e + size: 5,5 + atlas: /Maps/Dungeon/experiment.yml + offset: 24,18 + tags: + - SalvageExperiment + +- type: dungeonRoom + id: Science5x5f + size: 5,5 + atlas: /Maps/Dungeon/experiment.yml + offset: 30,18 + tags: + - SalvageExperiment + +# - 3x5 +- type: dungeonRoom + id: Science3x5a + size: 3,5 + atlas: /Maps/Dungeon/experiment.yml + offset: 0,24 + tags: + - SalvageExperiment + +- type: dungeonRoom + id: Science3x5b + size: 3,5 + atlas: /Maps/Dungeon/experiment.yml + offset: 4,24 + tags: + - SalvageExperiment + +- type: dungeonRoom + id: Science3x5c + size: 3,5 + atlas: /Maps/Dungeon/experiment.yml + offset: 8,24 + tags: + - SalvageExperiment + +- type: dungeonRoom + id: Science3x5d + size: 3,5 + atlas: /Maps/Dungeon/experiment.yml + offset: 12,24 + tags: + - SalvageExperiment + +- type: dungeonRoom + id: Science3x5e + size: 3,5 + atlas: /Maps/Dungeon/experiment.yml + offset: 16,24 + tags: + - SalvageExperiment + +- type: dungeonRoom + id: Science3x5f + size: 3,5 + atlas: /Maps/Dungeon/experiment.yml + offset: 20,24 + tags: + - SalvageExperiment diff --git a/Resources/Prototypes/Procedural/dungeon_configs.yml b/Resources/Prototypes/Procedural/dungeon_configs.yml new file mode 100644 index 0000000000..61c9a04886 --- /dev/null +++ b/Resources/Prototypes/Procedural/dungeon_configs.yml @@ -0,0 +1,58 @@ +- type: dungeonConfig + id: Experiment + generator: !type:PrefabDunGen + roomWhitelist: + - SalvageExperiment + presets: + - Cross + postGeneration: + - !type:MiddleConnectionPostGen + overlapCount: 3 + count: 3 + entities: + - CableApcExtension + - AirlockGlass + edgeEntities: + - Grille + - Window + + - !type:MiddleConnectionPostGen + count: 1 + entities: + - CableApcExtension + - AirlockGlass + + - !type:EntrancePostGen + count: 2 + entities: + - AirlockGlass + + - !type:InternalWindowPostGen + entities: + - Grille + - Window + + - !type:ExternalWindowPostGen + entities: + - Grille + - Window + + - !type:WallMountPostGen + spawns: + # Posters + - id: RandomPosterLegit + orGroup: content + - id: ExtinguisherCabinetFilled + prob: 0.2 + orGroup: content + - id: RandomPainting + prob: 0.05 + orGroup: content + - id: Intercom + prob: 0.1 + orGroup: content + + - !type:BoundaryWallPostGen + tile: FloorSteel + wall: WallSolid + cornerWall: WallReinforced diff --git a/Resources/Prototypes/Procedural/dungeon_presets.yml b/Resources/Prototypes/Procedural/dungeon_presets.yml new file mode 100644 index 0000000000..4fbe4af7ce --- /dev/null +++ b/Resources/Prototypes/Procedural/dungeon_presets.yml @@ -0,0 +1,12 @@ +# Dungeon presets +- type: dungeonPreset + id: Cross + roomPacks: + - -8,0,9,5 + - -2,6,3,11 + # Offset to the first one + - -8,12,9,17 + - -2,18,3,35 + - -2,36,3,53 + - -20,18,-3,35 + - 4,18,21,35 diff --git a/Resources/Prototypes/Procedural/dungeon_room_packs.yml b/Resources/Prototypes/Procedural/dungeon_room_packs.yml new file mode 100644 index 0000000000..3f04cc235b --- /dev/null +++ b/Resources/Prototypes/Procedural/dungeon_room_packs.yml @@ -0,0 +1,88 @@ +# Hook +- type: dungeonRoomPack + id: LargeArea2 + size: 17,17 + rooms: + - 7,0,10,11 + - 6,12,11,17 + - 12,13,17,16 + +# Wide corridor vertically up the middle and small corridors on left +- type: dungeonRoomPack + id: LargeArea3 + size: 17,17 + rooms: + - 6,0,11,11 + - 6,12,11,17 + - 0,13,5,16 + - 1,5,4,12 + - 0,1,5,4 + +# Long horizontal corridor with rooms above +#- type: dungeonRoomPack +# id: LargeArea4 +# size: 17,17 +# rooms: +# - 0,7,17,10 +# - 0,11,5,16 +# - 6,11,11,16 + +# Corridor from botleft to topright with 2 rooms in top left +- type: dungeonRoomPack + id: LargeArea5 + size: 17,17 + rooms: + # Corridor (with fat bot-left) + - 0,1,11,4 + - 12,0,17,5 + - 13,6,16,17 + # Rooms (5x7) + - 7,9,12,16 + - 1,5,6,12 + +# Medium +# Whole area room +#- type: dungeonRoomPack +# id: MediumArea1 +# size: 5,17 +# rooms: +# - 0,6,15,9 +# - 11,12,16,17 +# - 11,0,16,5 +# roomConnections: +# - 13,5 +# - 13,9 + +# Three 5x5 rooms +- type: dungeonRoomPack + id: MediumArea2 + size: 5,17 + rooms: + - 0,0,5,5 + - 0,6,5,11 + - 0,12,5,17 + +# Two 5x5 and 3x5 +- type: dungeonRoomPack + id: MediumArea3 + size: 5,17 + rooms: + - 0,0,5,5 + - 0,6,5,11 + - 1,12,4,17 + +# 3x5 -> 5x5 -> 3x5 +- type: dungeonRoomPack + id: MediumArea4 + size: 5,17 + rooms: + - 1,0,4,5 + - 0,6,5,11 + - 1,12,4,17 + +# Small +- type: dungeonRoomPack + id: SmallArea1 + size: 5,5 + rooms: + - 0,0,5,5 diff --git a/Resources/Prototypes/SoundCollections/footsteps.yml b/Resources/Prototypes/SoundCollections/footsteps.yml index 8c44160300..368a8b7faa 100644 --- a/Resources/Prototypes/SoundCollections/footsteps.yml +++ b/Resources/Prototypes/SoundCollections/footsteps.yml @@ -102,6 +102,14 @@ - /Audio/Effects/Footsteps/grass3.ogg - /Audio/Effects/Footsteps/grass4.ogg +- type: soundCollection + id: FootstepWater + files: + - /Audio/Effects/Footsteps/water1.ogg + - /Audio/Effects/Footsteps/water2.ogg + - /Audio/Effects/Footsteps/water3.ogg + - /Audio/Effects/Footsteps/water4.ogg + - type: soundCollection id: BarestepHard files: diff --git a/Resources/Prototypes/Tiles/planet.yml b/Resources/Prototypes/Tiles/planet.yml index 7bee466496..c40b7964ef 100644 --- a/Resources/Prototypes/Tiles/planet.yml +++ b/Resources/Prototypes/Tiles/planet.yml @@ -1,9 +1,7 @@ - type: tile id: FloorPlanetDirt name: tiles-dirt-floor - sprite: /Textures/Tiles/dirt.png - variants: 4 - placementVariants: [0, 1, 2, 3] + sprite: /Textures/Tiles/Planet/dirt.rsi/dirt.png isSubfloor: true canCrowbar: false footstepSounds: diff --git a/Resources/Prototypes/biomes.yml b/Resources/Prototypes/biomes.yml index c769a8fa99..1bf9379e9c 100644 --- a/Resources/Prototypes/biomes.yml +++ b/Resources/Prototypes/biomes.yml @@ -1,58 +1,67 @@ # Desert -# TODO: Water in grasslands -# TODO: Water in desert / grass? +# TODO: Water in desert - type: biome id: LowDesert + desc: Desert layers: - !type:BiomeEntityLayer - threshold: 0.99 - frequency: 1 - seedOffset: 1 + threshold: 0.95 + noise: + seed: 0 + frequency: 2 + noiseType: OpenSimplex2 allowedTiles: - FloorLowDesert entities: - FloraRockSolid01 - FloraRockSolid02 - FloraRockSolid03 + # Large rock areas - !type:BiomeEntityLayer - threshold: 0.9 - frequency: 0.2 + threshold: -0.20 + noise: + seed: 0 + frequency: 0.04 + noiseType: Cellular + fractalType: FBm + octaves: 5 + lacunarity: 2 + gain: 1 + cellularDistanceFunction: Euclidean + cellularReturnType: Distance2 allowedTiles: - FloorLowDesert entities: - AsteroidRock + # Fill layer - !type:BiomeTileLayer - threshold: 0 + threshold: -1 variants: - 0 tile: FloorLowDesert - !type:BiomeTileLayer threshold: 0.6 tile: FloorLowDesert - frequency: 0.1 + noise: + seed: 0 + noiseType: Cellular + frequency: 0.1 # Grass - type: biome id: Grasslands + desc: Grasslands layers: + # Sparse vegetation - !type:BiomeDecalLayer allowedTiles: - FloorPlanetGrass - seedOffset: 3 - threshold: 0.98 - divisions: 1 - frequency: 1 - decals: - - FlowersBROne - - FlowersBRTwo - - FlowersBRThree - - !type:BiomeDecalLayer - allowedTiles: - - FloorPlanetGrass - seedOffset: 2 - threshold: 0.95 divisions: 2 - frequency: 1 + threshold: -0.50 + noise: + seed: 0 + noiseType: Cellular + frequency: 1 decals: - BushDOne - BushDTwo @@ -60,25 +69,46 @@ - !type:BiomeDecalLayer allowedTiles: - FloorPlanetGrass - seedOffset: 1 - threshold: 0.8 + noise: + seed: 0 + noiseType: OpenSimplex2 + frequency: 1 divisions: 1 - frequency: 0.05 + threshold: 0.8 decals: - - BushCOne - - BushCTwo - - BushCThree + - FlowersBROne + - FlowersBRTwo + - FlowersBRThree + # Dense vegetation - !type:BiomeDecalLayer allowedTiles: - FloorPlanetGrass divisions: 1 + threshold: -0.35 + noise: + seed: 0 + noiseType: Cellular + frequency: 0.2 + fractalType: FBm + octaves: 5 + lacunarity: 2 + gain: 1 + cellularDistanceFunction: Euclidean + cellularReturnType: Distance2 decals: - BushAOne - BushATwo - BushAThree + - BushCOne + - BushCTwo + - BushCThree - !type:BiomeEntityLayer - threshold: 0.9 - frequency: 1 + threshold: 0.5 + noise: + seed: 0 + noiseType: OpenSimplex2 + fractalType: FBm + frequency: 2 allowedTiles: - FloorPlanetGrass entities: @@ -94,22 +124,86 @@ - FloraTreeLarge04 - FloraTreeLarge05 - FloraTreeLarge06 - # Fill remainder with sand. + # Rock formations + - !type:BiomeEntityLayer + allowedTiles: + - FloorPlanetGrass + - FloorPlanetDirt + threshold: -0.15 + noise: + seed: 0 + noiseType: Cellular + frequency: 0.05 + lacunarity: 2 + fractalType: FBm + octaves: 5 + gain: 1 + cellularDistanceFunction: Euclidean + cellularReturnType: Distance2 + entities: + - WallRock + # Water + - !type:BiomeEntityLayer + allowedTiles: + - FloorPlanetGrass + - FloorPlanetDirt + threshold: 0.95 + noise: + seed: 3 + noiseType: OpenSimplex2 + frequency: 0.003 + lacunarity: 1.50 + fractalType: Ridged + octaves: 1 + entities: + - FloorWaterEntity + # Fill remainder with dirt. - !type:BiomeTileLayer - threshold: 0 + threshold: -1.0 tile: FloorPlanetDirt - !type:BiomeTileLayer - threshold: 0.5 + threshold: -0.90 tile: FloorPlanetGrass + noise: + seed: 0 + frequency: 0.02 + fractalType: None + # Water sand + - !type:BiomeTileLayer + tile: FloorPlanetDirt + threshold: 0.95 + noise: + seed: 3 + noiseType: OpenSimplex2 + frequency: 0.003 + lacunarity: 1.50 + fractalType: Ridged + octaves: 1 + # Rock formation sand + - !type:BiomeTileLayer + tile: FloorPlanetDirt + threshold: -0.15 + noise: + seed: 0 + noiseType: Cellular + frequency: 0.05 + lacunarity: 2 + fractalType: FBm + octaves: 5 + gain: 1 + cellularDistanceFunction: Euclidean + cellularReturnType: Distance2 # Lava - type: biome id: Lava + desc: Lava layers: - !type:BiomeEntityLayer threshold: 0.9 - frequency: 1 - seedOffset: 3 + noise: + frequency: 1 + seed: 2 allowedTiles: - FloorBasalt entities: @@ -121,10 +215,11 @@ - !type:BiomeDecalLayer allowedTiles: - FloorBasalt - seedOffset: 2 threshold: 0.9 divisions: 1 - frequency: 1 + noise: + seed: 1 + frequency: 1 decals: - Basalt1 - Basalt2 @@ -136,9 +231,11 @@ - Basalt8 - Basalt9 - !type:BiomeEntityLayer - threshold: 0.99 - frequency: 1 - seedOffset: 1 + threshold: 0.95 + noise: + seed: 0 + noiseType: OpenSimplex2 + frequency: 1 allowedTiles: - FloorBasalt entities: @@ -146,47 +243,65 @@ - FloraRockSolid02 - FloraRockSolid03 - !type:BiomeEntityLayer - threshold: 0.7 - frequency: 0.2 + threshold: 0.2 + noise: + seed: 0 + frequency: 0.02 + fractalType: FBm + octaves: 5 + lacunarity: 2 + gain: 0.4 allowedTiles: - FloorBasalt entities: - FloorLavaEntity + # Fill basalt - !type:BiomeTileLayer - threshold: 0 + threshold: -1 variants: - 0 tile: FloorBasalt # Snow - type: biome - id: Snow + id: Snow # Similar to Grasslands... but snow layers: + # Sparse vegetation - !type:BiomeDecalLayer allowedTiles: - FloorSnow - seedOffset: 4 - threshold: 0.95 - divisions: 1 - frequency: 1 + divisions: 2 + threshold: -0.50 + noise: + seed: 0 + noiseType: Cellular + frequency: 1 decals: - grasssnowa1 - - grasssnowa2 - - grasssnowa3 + - grassnowa2 + - grassnowa3 - grasssnowb1 - grasssnowb2 - grasssnowb3 - grasssnowc1 - grasssnowc2 - grasssnowc3 - # The main grass texture, this one blends in very well + # Dense, bland grass - !type:BiomeDecalLayer allowedTiles: - FloorSnow divisions: 1 - seedOffset: 3 - threshold: 0.8 - frequency: 0.05 + threshold: -0.35 + noise: + seed: 0 + noiseType: Cellular + frequency: 0.2 + fractalType: FBm + octaves: 5 + lacunarity: 2 + gain: 1 + cellularDistanceFunction: Euclidean + cellularReturnType: Distance2 decals: - grasssnow - grasssnow01 @@ -202,24 +317,33 @@ - grasssnow11 - grasssnow12 - grasssnow13 + # Little bit of coloured grass - !type:BiomeDecalLayer allowedTiles: - FloorSnow - seedOffset: 2 - threshold: 0.99 divisions: 1 - frequency: 1 + threshold: -0.0 + noise: + seed: 0 + noiseType: Cellular + frequency: 1 + fractalType: None + cellularDistanceFunction: Euclidean + cellularReturnType: Distance2 decals: - bushsnowa1 - bushsnowa2 - bushsnowa3 - - bushsnowb1 + - bushsnowb3 - bushsnowb2 - bushsnowb3 - !type:BiomeEntityLayer - seedOffset: 1 - threshold: 0.95 - frequency: 1 + threshold: 0.5 + noise: + seed: 0 + noiseType: OpenSimplex2 + fractalType: FBm + frequency: 2 allowedTiles: - FloorSnow entities: @@ -230,11 +354,12 @@ - FloraTreeSnow05 - FloraTreeSnow06 - !type:BiomeTileLayer - threshold: 0 - variants: - - 0 + threshold: -1.0 tile: FloorSnow - !type:BiomeTileLayer - threshold: 0.6 + threshold: -0.50 tile: FloorSnow - frequency: 0.1 + noise: + seed: 0 + frequency: 0.02 + fractalType: None diff --git a/Resources/Prototypes/ore.yml b/Resources/Prototypes/ore.yml index 7c7c7a6e54..2ad43b037f 100644 --- a/Resources/Prototypes/ore.yml +++ b/Resources/Prototypes/ore.yml @@ -1,3 +1,4 @@ +# High yields - type: ore id: OreSteel oreEntity: SteelOre1 @@ -10,6 +11,7 @@ minOreYield: 3 maxOreYield: 7 +# Medium yields - type: ore id: OreGold oreEntity: GoldOre1 @@ -17,14 +19,15 @@ maxOreYield: 5 - type: ore - id: OrePlasma - oreEntity: PlasmaOre1 + id: OreSilver + oreEntity: SilverOre1 minOreYield: 2 maxOreYield: 5 +# Low yields - type: ore - id: OreSilver - oreEntity: SilverOre1 + id: OrePlasma + oreEntity: PlasmaOre1 minOreYield: 1 maxOreYield: 3 @@ -42,4 +45,4 @@ OreGold: 2 OrePlasma: 4 OreSilver: 1 - OreUranium: 1 \ No newline at end of file + OreUranium: 1 diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index 312d1a197e..408cab6fc9 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -1,5 +1,3 @@ -# Alphabetical order is now apparently required. - - type: Tag id: AirAlarm @@ -310,6 +308,9 @@ - type: Tag id: IntercomElectronics +- type: Tag + id: JanicartKeys + - type: Tag id: JawsOfLife @@ -325,6 +326,12 @@ - type: Tag id: Machete +- type: Tag + id: MacroBomb + +- type: Tag + id: MicroBomb + # Magazines ordered by slot then caliber - type: Tag @@ -420,12 +427,6 @@ - type: Tag id: Payload # for grenade/bomb crafting -- type: Tag - id: MacroBomb - -- type: Tag - id: MicroBomb - - type: Tag id: PaintableAirlock @@ -468,9 +469,6 @@ - type: Tag id: ProximitySensor -- type: Tag - id: JanicartKeys - - type: Tag id: Radio @@ -508,6 +506,9 @@ - type: Tag id: RollingPaper +- type: Tag + id: SalvageExperiment + - type: Tag id: Screwdriver @@ -517,15 +518,15 @@ - type: Tag id: SecwayKeys -- type: Tag - id: ShoesRequiredStepTriggerImmune - - type: Tag id: Sheet - type: Tag id: ShellShotgun +- type: Tag + id: ShoesRequiredStepTriggerImmune + - type: Tag id: Shovel @@ -565,6 +566,9 @@ - type: Tag id: StringInstrument +- type: Tag + id: SubdermalImplant + - type: Tag id: SurveillanceCameraMonitorCircuitboard @@ -590,10 +594,10 @@ id: VehicleKey - type: Tag - id: WetFloorSign + id: Wall - type: Tag - id: Wall + id: WetFloorSign - type: Tag id: WallmountGeneratorAPUElectronics @@ -630,6 +634,3 @@ - type: Tag id: Write - -- type: Tag - id: SubdermalImplant \ No newline at end of file diff --git a/Resources/Textures/Structures/Specific/xeno_building.rsi/frenzytower.png b/Resources/Textures/Structures/Specific/xeno_building.rsi/frenzytower.png new file mode 100644 index 0000000000..330d8eaf86 Binary files /dev/null and b/Resources/Textures/Structures/Specific/xeno_building.rsi/frenzytower.png differ diff --git a/Resources/Textures/Structures/Specific/xeno_building.rsi/meta.json b/Resources/Textures/Structures/Specific/xeno_building.rsi/meta.json new file mode 100644 index 0000000000..c4a1b417ae --- /dev/null +++ b/Resources/Textures/Structures/Specific/xeno_building.rsi/meta.json @@ -0,0 +1,27 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "https://github.com/tgstation/TerraGov-Marine-Corps/blob/167684df96d25557864152709913e9c6f870564f/icons/Xeno/1x1building.dmi", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "recoverytower", + "directions": 1 + }, + { + "name": "frenzytower", + "directions": 1 + }, + { + "name": "wardingtower", + "directions": 1 + }, + { + "name": "wardingtower-unshaded", + "directions": 1 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Structures/Specific/xeno_building.rsi/recoverytower.png b/Resources/Textures/Structures/Specific/xeno_building.rsi/recoverytower.png new file mode 100644 index 0000000000..6329f45b8f Binary files /dev/null and b/Resources/Textures/Structures/Specific/xeno_building.rsi/recoverytower.png differ diff --git a/Resources/Textures/Structures/Specific/xeno_building.rsi/wardingtower-unshaded.png b/Resources/Textures/Structures/Specific/xeno_building.rsi/wardingtower-unshaded.png new file mode 100644 index 0000000000..8792e5ed73 Binary files /dev/null and b/Resources/Textures/Structures/Specific/xeno_building.rsi/wardingtower-unshaded.png differ diff --git a/Resources/Textures/Structures/Specific/xeno_building.rsi/wardingtower.png b/Resources/Textures/Structures/Specific/xeno_building.rsi/wardingtower.png new file mode 100644 index 0000000000..43fa2d5b9b Binary files /dev/null and b/Resources/Textures/Structures/Specific/xeno_building.rsi/wardingtower.png differ diff --git a/Resources/Textures/Tiles/Asteroid/asteroid.png b/Resources/Textures/Tiles/Asteroid/asteroid.png new file mode 100644 index 0000000000..97d9fcc5dc Binary files /dev/null and b/Resources/Textures/Tiles/Asteroid/asteroid.png differ diff --git a/Resources/Textures/Tiles/Asteroid/asteroid0.png b/Resources/Textures/Tiles/Asteroid/asteroid0.png new file mode 100644 index 0000000000..97d9fcc5dc Binary files /dev/null and b/Resources/Textures/Tiles/Asteroid/asteroid0.png differ diff --git a/Resources/Textures/Tiles/Asteroid/asteroid1.png b/Resources/Textures/Tiles/Asteroid/asteroid1.png new file mode 100644 index 0000000000..6ceabebbb7 Binary files /dev/null and b/Resources/Textures/Tiles/Asteroid/asteroid1.png differ diff --git a/Resources/Textures/Tiles/Asteroid/asteroid10.png b/Resources/Textures/Tiles/Asteroid/asteroid10.png new file mode 100644 index 0000000000..9d33861088 Binary files /dev/null and b/Resources/Textures/Tiles/Asteroid/asteroid10.png differ diff --git a/Resources/Textures/Tiles/Asteroid/asteroid11.png b/Resources/Textures/Tiles/Asteroid/asteroid11.png new file mode 100644 index 0000000000..fade0c06c9 Binary files /dev/null and b/Resources/Textures/Tiles/Asteroid/asteroid11.png differ diff --git a/Resources/Textures/Tiles/Asteroid/asteroid12.png b/Resources/Textures/Tiles/Asteroid/asteroid12.png new file mode 100644 index 0000000000..b0eabae9c2 Binary files /dev/null and b/Resources/Textures/Tiles/Asteroid/asteroid12.png differ diff --git a/Resources/Textures/Tiles/Asteroid/asteroid2.png b/Resources/Textures/Tiles/Asteroid/asteroid2.png new file mode 100644 index 0000000000..73bae67f66 Binary files /dev/null and b/Resources/Textures/Tiles/Asteroid/asteroid2.png differ diff --git a/Resources/Textures/Tiles/Asteroid/asteroid3.png b/Resources/Textures/Tiles/Asteroid/asteroid3.png new file mode 100644 index 0000000000..def3348d0b Binary files /dev/null and b/Resources/Textures/Tiles/Asteroid/asteroid3.png differ diff --git a/Resources/Textures/Tiles/Asteroid/asteroid4.png b/Resources/Textures/Tiles/Asteroid/asteroid4.png new file mode 100644 index 0000000000..c78c7646d5 Binary files /dev/null and b/Resources/Textures/Tiles/Asteroid/asteroid4.png differ diff --git a/Resources/Textures/Tiles/Asteroid/asteroid5.png b/Resources/Textures/Tiles/Asteroid/asteroid5.png new file mode 100644 index 0000000000..2ceebd64f6 Binary files /dev/null and b/Resources/Textures/Tiles/Asteroid/asteroid5.png differ diff --git a/Resources/Textures/Tiles/Asteroid/asteroid6.png b/Resources/Textures/Tiles/Asteroid/asteroid6.png new file mode 100644 index 0000000000..1a2e35e98c Binary files /dev/null and b/Resources/Textures/Tiles/Asteroid/asteroid6.png differ diff --git a/Resources/Textures/Tiles/Asteroid/asteroid7.png b/Resources/Textures/Tiles/Asteroid/asteroid7.png new file mode 100644 index 0000000000..1b1a5913e8 Binary files /dev/null and b/Resources/Textures/Tiles/Asteroid/asteroid7.png differ diff --git a/Resources/Textures/Tiles/Asteroid/asteroid8.png b/Resources/Textures/Tiles/Asteroid/asteroid8.png new file mode 100644 index 0000000000..45a15ba0fb Binary files /dev/null and b/Resources/Textures/Tiles/Asteroid/asteroid8.png differ diff --git a/Resources/Textures/Tiles/Asteroid/asteroid9.png b/Resources/Textures/Tiles/Asteroid/asteroid9.png new file mode 100644 index 0000000000..c79d007626 Binary files /dev/null and b/Resources/Textures/Tiles/Asteroid/asteroid9.png differ diff --git a/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand1.png b/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand1.png new file mode 100644 index 0000000000..f1b995f22a Binary files /dev/null and b/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand1.png differ diff --git a/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand10.png b/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand10.png new file mode 100644 index 0000000000..811550e6d4 Binary files /dev/null and b/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand10.png differ diff --git a/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand11.png b/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand11.png new file mode 100644 index 0000000000..56da6c274e Binary files /dev/null and b/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand11.png differ diff --git a/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand12.png b/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand12.png new file mode 100644 index 0000000000..6e24483cd3 Binary files /dev/null and b/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand12.png differ diff --git a/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand13.png b/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand13.png new file mode 100644 index 0000000000..066b7ab0c3 Binary files /dev/null and b/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand13.png differ diff --git a/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand14.png b/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand14.png new file mode 100644 index 0000000000..5b8d0b1f08 Binary files /dev/null and b/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand14.png differ diff --git a/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand15.png b/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand15.png new file mode 100644 index 0000000000..059b4cb5dd Binary files /dev/null and b/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand15.png differ diff --git a/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand2.png b/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand2.png new file mode 100644 index 0000000000..9cc7769375 Binary files /dev/null and b/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand2.png differ diff --git a/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand3.png b/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand3.png new file mode 100644 index 0000000000..cf72816571 Binary files /dev/null and b/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand3.png differ diff --git a/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand4.png b/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand4.png new file mode 100644 index 0000000000..8fd70e0d94 Binary files /dev/null and b/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand4.png differ diff --git a/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand5.png b/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand5.png new file mode 100644 index 0000000000..086cac2bf9 Binary files /dev/null and b/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand5.png differ diff --git a/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand6.png b/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand6.png new file mode 100644 index 0000000000..51d8c0734e Binary files /dev/null and b/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand6.png differ diff --git a/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand7.png b/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand7.png new file mode 100644 index 0000000000..c25b0465d4 Binary files /dev/null and b/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand7.png differ diff --git a/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand8.png b/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand8.png new file mode 100644 index 0000000000..d3befb214d Binary files /dev/null and b/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand8.png differ diff --git a/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand9.png b/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand9.png new file mode 100644 index 0000000000..9a82d3d34a Binary files /dev/null and b/Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand9.png differ diff --git a/Resources/Textures/Tiles/Planet/dirt.rsi/dirt.png b/Resources/Textures/Tiles/Planet/dirt.rsi/dirt.png new file mode 100644 index 0000000000..28d1862456 Binary files /dev/null and b/Resources/Textures/Tiles/Planet/dirt.rsi/dirt.png differ diff --git a/Resources/Textures/Tiles/Planet/dirt.rsi/meta.json b/Resources/Textures/Tiles/Planet/dirt.rsi/meta.json new file mode 100644 index 0000000000..c70bafbd1b --- /dev/null +++ b/Resources/Textures/Tiles/Planet/dirt.rsi/meta.json @@ -0,0 +1,14 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from https://github.com/discordia-space/CEV-Eris/blob/20d0b1fab9002c32e5267f16ba2b5cbf4b6f1e07/icons/turf/flooring/dirt.dmi", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "dirt" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Tiles/Planet/water.rsi/meta.json b/Resources/Textures/Tiles/Planet/water.rsi/meta.json new file mode 100644 index 0000000000..ab446516cb --- /dev/null +++ b/Resources/Textures/Tiles/Planet/water.rsi/meta.json @@ -0,0 +1,26 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "https://github.com/Citadel-Station-13/Citadel-Station-13-RP/tree/2ac1c566b89a6862c46380de02700c7c0d21a10d/icons/turf", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "shoreline_water", + "delays": [ + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ] + ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Tiles/Planet/water.rsi/shoreline_water.png b/Resources/Textures/Tiles/Planet/water.rsi/shoreline_water.png new file mode 100644 index 0000000000..d7807a659e Binary files /dev/null and b/Resources/Textures/Tiles/Planet/water.rsi/shoreline_water.png differ