From 6157dfa3c029d74d2cc4deea6af6fac832fe6b1b Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Fri, 10 Mar 2023 16:41:22 +1100 Subject: [PATCH] Salvage dungeons (#14520) --- Content.Client/Entry/EntryPoint.cs | 1 + .../IconSmoothing/IconSmoothComponent.cs | 3 + .../IconSmoothing/IconSmoothSystem.cs | 8 + .../Lobby/UI/LobbyCharacterPreviewPanel.cs | 4 +- Content.Client/Parallax/ParallaxGenerator.cs | 4 +- Content.Client/Salvage/SalvageSystem.cs | 8 + ...vageExpeditionConsoleBoundUserInterface.cs | 47 + .../Salvage/UI/SalvageExpeditionWindow.xaml | 23 + .../UI/SalvageExpeditionWindow.xaml.cs | 334 + .../Tests/Procedural/DungeonTests.cs | 96 + .../CPUJob/JobQueues/Queues/JobQueue.cs | 5 + Content.Server/Cargo/Systems/CargoSystem.cs | 14 +- .../Construction/AnchorableSystem.cs | 12 +- Content.Server/Decals/DecalSystem.cs | 27 + .../Pathfinding/PathfindingSystem.Common.cs | 4 +- .../Pathfinding/PathfindingSystem.Distance.cs | 13 + .../NPC/Pathfinding/PathfindingSystem.Grid.cs | 7 +- .../Pathfinding/PathfindingSystem.Helper.cs | 74 + Content.Server/Parallax/BiomeSystem.cs | 17 +- .../Pinpointer/ServerPinpointerSystem.cs | 4 +- .../DungeonAtlasTemplateComponent.cs | 13 + .../Procedural/DungeonJob.Generator.cs | 429 + .../Procedural/DungeonJob.PostGen.cs | 554 + Content.Server/Procedural/DungeonJob.cs | 139 + .../Procedural/DungeonSystem.Commands.cs | 102 + Content.Server/Procedural/DungeonSystem.cs | 236 + Content.Server/Salvage/SalvageMapPrototype.cs | 2 +- Content.Server/Salvage/SalvageSystem.cs | 20 +- ...CompletedEvent.cs => FTLCompletedEvent.cs} | 3 +- .../Shuttles/Systems/ShuttleConsoleSystem.cs | 16 +- .../Systems/ShuttleSystem.FasterThanLight.cs | 119 +- Content.Shared/CCVar/CCVars.cs | 10 + .../Movement/Systems/SharedMoverController.cs | 1 - .../Parallax/Biomes/BiomeComponent.cs | 9 + .../Parallax/Biomes/BiomePrototype.cs | 49 +- .../Parallax/Biomes/SharedBiomeSystem.cs | 338 +- Content.Shared/Procedural/Dungeon.cs | 11 + .../Procedural/DungeonConfigPrototype.cs | 21 + .../Procedural/DungeonGenerators/IDunGen.cs | 7 + .../DungeonGenerators/PrefabDunGen.cs | 30 + Content.Shared/Procedural/DungeonPath.cs | 10 + .../Procedural/DungeonPresetPrototype.cs | 15 + Content.Shared/Procedural/DungeonRoom.cs | 3 + .../Procedural/DungeonRoomPackPrototype.cs | 17 + .../Procedural/DungeonRoomPrototype.cs | 27 + Content.Shared/Procedural/Loot/ClusterLoot.cs | 35 + .../Procedural/Loot/IDungeonLoot.cs | 7 + .../Procedural/Loot/SalvageLootPrototype.cs | 20 + .../PostGeneration/BoundaryWallPostGen.cs | 23 + .../PostGeneration/EntrancePostGen.cs | 23 + .../PostGeneration/ExternalWindowPostGen.cs | 22 + .../Procedural/PostGeneration/IPostDunGen.cs | 10 + .../PostGeneration/InternalWindowPostGen.cs | 22 + .../PostGeneration/MiddleConnectionPostGen.cs | 39 + .../PostGeneration/WallMountPostGen.cs | 23 + .../Procedural/Rewards/BankReward.cs | 10 + .../Procedural/Rewards/ISalvageReward.cs | 7 + .../Rewards/SalvageRewardPrototype.cs | 14 + .../Random/Helpers/SharedRandomExtensions.cs | 42 + .../Extraction/SalvageExtraction.cs | 21 + .../Expeditions/IFactionExpeditionConfig.cs | 7 + .../Expeditions/SalvageFactionPrototype.cs | 19 + .../Salvage/Expeditions/SalvageMobGroup.cs | 18 + .../Expeditions/Structure/SalvageStructure.cs | 17 + .../Structure/SalvageStructureFaction.cs | 23 + Content.Shared/Salvage/ISalvageMission.cs | 3 + .../Salvage/SalvageExpeditionPrototype.cs | 89 + Content.Shared/Salvage/SalvageExpeditions.cs | 91 + Content.Shared/Salvage/SharedSalvageSystem.cs | 77 + Content.Shared/Storage/EntitySpawnEntry.cs | 65 + .../Audio/Effects/Footsteps/attributions.yml | 8 + Resources/Audio/Effects/Footsteps/water1.ogg | Bin 0 -> 11948 bytes Resources/Audio/Effects/Footsteps/water2.ogg | Bin 0 -> 15689 bytes Resources/Audio/Effects/Footsteps/water3.ogg | Bin 0 -> 12092 bytes Resources/Audio/Effects/Footsteps/water4.ogg | Bin 0 -> 11736 bytes .../ConfigPresets/Build/development.toml | 5 +- Resources/Locale/en-US/procedural/command.ftl | 15 + Resources/Maps/Dungeon/Templates/17x17.yml | 448 + Resources/Maps/Dungeon/Templates/17x5.yml | 442 + Resources/Maps/Dungeon/Templates/3x5.yml | 131 + Resources/Maps/Dungeon/Templates/3x7.yml | 131 + Resources/Maps/Dungeon/Templates/5x11.yml | 168 + Resources/Maps/Dungeon/Templates/5x17.yml | 442 + Resources/Maps/Dungeon/Templates/5x5.yml | 439 + .../Maps/Dungeon/Templates/LargeArea2.yml | 168 + .../Maps/Dungeon/Templates/LargeArea3.yml | 168 + .../Maps/Dungeon/Templates/LargeArea4.yml | 168 + .../Maps/Dungeon/Templates/MediumArea2.yml | 442 + .../Maps/Dungeon/Templates/MediumArea3.yml | 442 + .../Maps/Dungeon/Templates/MediumArea4.yml | 442 + Resources/Maps/Dungeon/experiment.yml | 16191 ++++++++++++++++ Resources/Maps/Dungeon/template.yml | 166 + .../Catalog/Fills/Paper/salvage_lore.yml | 9 +- .../Prototypes/Entities/Mobs/NPCs/xeno.yml | 34 +- .../Entities/Structures/Specific/xeno.yml | 49 + .../Prototypes/Entities/Tiles/basalt.yml | 1 + Resources/Prototypes/Entities/Tiles/water.yml | 39 + Resources/Prototypes/Parallaxes/planet.yml | 12 +- .../Procedural/Themes/experiment.yml | 324 + .../Prototypes/Procedural/dungeon_configs.yml | 58 + .../Prototypes/Procedural/dungeon_presets.yml | 12 + .../Procedural/dungeon_room_packs.yml | 88 + .../Prototypes/SoundCollections/footsteps.yml | 8 + Resources/Prototypes/Tiles/planet.yml | 4 +- Resources/Prototypes/biomes.yml | 259 +- Resources/Prototypes/ore.yml | 13 +- Resources/Prototypes/tags.yml | 39 +- .../xeno_building.rsi/frenzytower.png | Bin 0 -> 995 bytes .../Specific/xeno_building.rsi/meta.json | 27 + .../xeno_building.rsi/recoverytower.png | Bin 0 -> 1065 bytes .../wardingtower-unshaded.png | Bin 0 -> 6958 bytes .../xeno_building.rsi/wardingtower.png | Bin 0 -> 1011 bytes .../Textures/Tiles/Asteroid/asteroid.png | Bin 0 -> 1253 bytes .../Textures/Tiles/Asteroid/asteroid0.png | Bin 0 -> 1253 bytes .../Textures/Tiles/Asteroid/asteroid1.png | Bin 0 -> 1365 bytes .../Textures/Tiles/Asteroid/asteroid10.png | Bin 0 -> 1365 bytes .../Textures/Tiles/Asteroid/asteroid11.png | Bin 0 -> 1353 bytes .../Textures/Tiles/Asteroid/asteroid12.png | Bin 0 -> 1350 bytes .../Textures/Tiles/Asteroid/asteroid2.png | Bin 0 -> 1538 bytes .../Textures/Tiles/Asteroid/asteroid3.png | Bin 0 -> 1335 bytes .../Textures/Tiles/Asteroid/asteroid4.png | Bin 0 -> 1429 bytes .../Textures/Tiles/Asteroid/asteroid5.png | Bin 0 -> 1372 bytes .../Textures/Tiles/Asteroid/asteroid6.png | Bin 0 -> 1328 bytes .../Textures/Tiles/Asteroid/asteroid7.png | Bin 0 -> 1375 bytes .../Textures/Tiles/Asteroid/asteroid8.png | Bin 0 -> 1373 bytes .../Textures/Tiles/Asteroid/asteroid9.png | Bin 0 -> 1300 bytes .../Planet/Desert/iron_sand/ironsand1.png | Bin 0 -> 724 bytes .../Planet/Desert/iron_sand/ironsand10.png | Bin 0 -> 735 bytes .../Planet/Desert/iron_sand/ironsand11.png | Bin 0 -> 850 bytes .../Planet/Desert/iron_sand/ironsand12.png | Bin 0 -> 746 bytes .../Planet/Desert/iron_sand/ironsand13.png | Bin 0 -> 864 bytes .../Planet/Desert/iron_sand/ironsand14.png | Bin 0 -> 880 bytes .../Planet/Desert/iron_sand/ironsand15.png | Bin 0 -> 798 bytes .../Planet/Desert/iron_sand/ironsand2.png | Bin 0 -> 836 bytes .../Planet/Desert/iron_sand/ironsand3.png | Bin 0 -> 801 bytes .../Planet/Desert/iron_sand/ironsand4.png | Bin 0 -> 871 bytes .../Planet/Desert/iron_sand/ironsand5.png | Bin 0 -> 777 bytes .../Planet/Desert/iron_sand/ironsand6.png | Bin 0 -> 792 bytes .../Planet/Desert/iron_sand/ironsand7.png | Bin 0 -> 861 bytes .../Planet/Desert/iron_sand/ironsand8.png | Bin 0 -> 794 bytes .../Planet/Desert/iron_sand/ironsand9.png | Bin 0 -> 948 bytes .../Textures/Tiles/Planet/dirt.rsi/dirt.png | Bin 0 -> 418 bytes .../Textures/Tiles/Planet/dirt.rsi/meta.json | 14 + .../Textures/Tiles/Planet/water.rsi/meta.json | 26 + .../Planet/water.rsi/shoreline_water.png | Bin 0 -> 9559 bytes 145 files changed, 24649 insertions(+), 396 deletions(-) create mode 100644 Content.Client/Salvage/SalvageSystem.cs create mode 100644 Content.Client/Salvage/UI/SalvageExpeditionConsoleBoundUserInterface.cs create mode 100644 Content.Client/Salvage/UI/SalvageExpeditionWindow.xaml create mode 100644 Content.Client/Salvage/UI/SalvageExpeditionWindow.xaml.cs create mode 100644 Content.IntegrationTests/Tests/Procedural/DungeonTests.cs create mode 100644 Content.Server/NPC/Pathfinding/PathfindingSystem.Helper.cs create mode 100644 Content.Server/Procedural/DungeonAtlasTemplateComponent.cs create mode 100644 Content.Server/Procedural/DungeonJob.Generator.cs create mode 100644 Content.Server/Procedural/DungeonJob.PostGen.cs create mode 100644 Content.Server/Procedural/DungeonJob.cs create mode 100644 Content.Server/Procedural/DungeonSystem.Commands.cs create mode 100644 Content.Server/Procedural/DungeonSystem.cs rename Content.Server/Shuttles/Events/{HyperspaceJumpCompletedEvent.cs => FTLCompletedEvent.cs} (74%) create mode 100644 Content.Shared/Procedural/Dungeon.cs create mode 100644 Content.Shared/Procedural/DungeonConfigPrototype.cs create mode 100644 Content.Shared/Procedural/DungeonGenerators/IDunGen.cs create mode 100644 Content.Shared/Procedural/DungeonGenerators/PrefabDunGen.cs create mode 100644 Content.Shared/Procedural/DungeonPath.cs create mode 100644 Content.Shared/Procedural/DungeonPresetPrototype.cs create mode 100644 Content.Shared/Procedural/DungeonRoom.cs create mode 100644 Content.Shared/Procedural/DungeonRoomPackPrototype.cs create mode 100644 Content.Shared/Procedural/DungeonRoomPrototype.cs create mode 100644 Content.Shared/Procedural/Loot/ClusterLoot.cs create mode 100644 Content.Shared/Procedural/Loot/IDungeonLoot.cs create mode 100644 Content.Shared/Procedural/Loot/SalvageLootPrototype.cs create mode 100644 Content.Shared/Procedural/PostGeneration/BoundaryWallPostGen.cs create mode 100644 Content.Shared/Procedural/PostGeneration/EntrancePostGen.cs create mode 100644 Content.Shared/Procedural/PostGeneration/ExternalWindowPostGen.cs create mode 100644 Content.Shared/Procedural/PostGeneration/IPostDunGen.cs create mode 100644 Content.Shared/Procedural/PostGeneration/InternalWindowPostGen.cs create mode 100644 Content.Shared/Procedural/PostGeneration/MiddleConnectionPostGen.cs create mode 100644 Content.Shared/Procedural/PostGeneration/WallMountPostGen.cs create mode 100644 Content.Shared/Procedural/Rewards/BankReward.cs create mode 100644 Content.Shared/Procedural/Rewards/ISalvageReward.cs create mode 100644 Content.Shared/Procedural/Rewards/SalvageRewardPrototype.cs create mode 100644 Content.Shared/Salvage/Expeditions/Extraction/SalvageExtraction.cs create mode 100644 Content.Shared/Salvage/Expeditions/IFactionExpeditionConfig.cs create mode 100644 Content.Shared/Salvage/Expeditions/SalvageFactionPrototype.cs create mode 100644 Content.Shared/Salvage/Expeditions/SalvageMobGroup.cs create mode 100644 Content.Shared/Salvage/Expeditions/Structure/SalvageStructure.cs create mode 100644 Content.Shared/Salvage/Expeditions/Structure/SalvageStructureFaction.cs create mode 100644 Content.Shared/Salvage/ISalvageMission.cs create mode 100644 Content.Shared/Salvage/SalvageExpeditionPrototype.cs create mode 100644 Content.Shared/Salvage/SalvageExpeditions.cs create mode 100644 Content.Shared/Salvage/SharedSalvageSystem.cs create mode 100644 Resources/Audio/Effects/Footsteps/attributions.yml create mode 100644 Resources/Audio/Effects/Footsteps/water1.ogg create mode 100644 Resources/Audio/Effects/Footsteps/water2.ogg create mode 100644 Resources/Audio/Effects/Footsteps/water3.ogg create mode 100644 Resources/Audio/Effects/Footsteps/water4.ogg create mode 100644 Resources/Locale/en-US/procedural/command.ftl create mode 100644 Resources/Maps/Dungeon/Templates/17x17.yml create mode 100644 Resources/Maps/Dungeon/Templates/17x5.yml create mode 100644 Resources/Maps/Dungeon/Templates/3x5.yml create mode 100644 Resources/Maps/Dungeon/Templates/3x7.yml create mode 100644 Resources/Maps/Dungeon/Templates/5x11.yml create mode 100644 Resources/Maps/Dungeon/Templates/5x17.yml create mode 100644 Resources/Maps/Dungeon/Templates/5x5.yml create mode 100644 Resources/Maps/Dungeon/Templates/LargeArea2.yml create mode 100644 Resources/Maps/Dungeon/Templates/LargeArea3.yml create mode 100644 Resources/Maps/Dungeon/Templates/LargeArea4.yml create mode 100644 Resources/Maps/Dungeon/Templates/MediumArea2.yml create mode 100644 Resources/Maps/Dungeon/Templates/MediumArea3.yml create mode 100644 Resources/Maps/Dungeon/Templates/MediumArea4.yml create mode 100644 Resources/Maps/Dungeon/experiment.yml create mode 100644 Resources/Maps/Dungeon/template.yml create mode 100644 Resources/Prototypes/Entities/Structures/Specific/xeno.yml create mode 100644 Resources/Prototypes/Entities/Tiles/water.yml create mode 100644 Resources/Prototypes/Procedural/Themes/experiment.yml create mode 100644 Resources/Prototypes/Procedural/dungeon_configs.yml create mode 100644 Resources/Prototypes/Procedural/dungeon_presets.yml create mode 100644 Resources/Prototypes/Procedural/dungeon_room_packs.yml create mode 100644 Resources/Textures/Structures/Specific/xeno_building.rsi/frenzytower.png create mode 100644 Resources/Textures/Structures/Specific/xeno_building.rsi/meta.json create mode 100644 Resources/Textures/Structures/Specific/xeno_building.rsi/recoverytower.png create mode 100644 Resources/Textures/Structures/Specific/xeno_building.rsi/wardingtower-unshaded.png create mode 100644 Resources/Textures/Structures/Specific/xeno_building.rsi/wardingtower.png create mode 100644 Resources/Textures/Tiles/Asteroid/asteroid.png create mode 100644 Resources/Textures/Tiles/Asteroid/asteroid0.png create mode 100644 Resources/Textures/Tiles/Asteroid/asteroid1.png create mode 100644 Resources/Textures/Tiles/Asteroid/asteroid10.png create mode 100644 Resources/Textures/Tiles/Asteroid/asteroid11.png create mode 100644 Resources/Textures/Tiles/Asteroid/asteroid12.png create mode 100644 Resources/Textures/Tiles/Asteroid/asteroid2.png create mode 100644 Resources/Textures/Tiles/Asteroid/asteroid3.png create mode 100644 Resources/Textures/Tiles/Asteroid/asteroid4.png create mode 100644 Resources/Textures/Tiles/Asteroid/asteroid5.png create mode 100644 Resources/Textures/Tiles/Asteroid/asteroid6.png create mode 100644 Resources/Textures/Tiles/Asteroid/asteroid7.png create mode 100644 Resources/Textures/Tiles/Asteroid/asteroid8.png create mode 100644 Resources/Textures/Tiles/Asteroid/asteroid9.png create mode 100644 Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand1.png create mode 100644 Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand10.png create mode 100644 Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand11.png create mode 100644 Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand12.png create mode 100644 Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand13.png create mode 100644 Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand14.png create mode 100644 Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand15.png create mode 100644 Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand2.png create mode 100644 Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand3.png create mode 100644 Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand4.png create mode 100644 Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand5.png create mode 100644 Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand6.png create mode 100644 Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand7.png create mode 100644 Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand8.png create mode 100644 Resources/Textures/Tiles/Planet/Desert/iron_sand/ironsand9.png create mode 100644 Resources/Textures/Tiles/Planet/dirt.rsi/dirt.png create mode 100644 Resources/Textures/Tiles/Planet/dirt.rsi/meta.json create mode 100644 Resources/Textures/Tiles/Planet/water.rsi/meta.json create mode 100644 Resources/Textures/Tiles/Planet/water.rsi/shoreline_water.png 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 0000000000000000000000000000000000000000..f22cbf28482b6a859a5fdecd8feb2bda3dbbba8b GIT binary patch literal 11948 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 literal 0 HcmV?d00001 diff --git a/Resources/Audio/Effects/Footsteps/water3.ogg b/Resources/Audio/Effects/Footsteps/water3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..97ce152a5ce2e9ec402091c283a2cc9b32bff8ee GIT binary patch literal 12092 zcmb7o1z1#HyYHq`Iu!|}hVJeV>5!I^ZfQkQq(wj&Lb|(QNC6S)ZV+MU6p)sjyV39e zo$opKx#v80&)RF&?044NzqQ`A)opB^0m#6=E|nL52S-msB#@|)yk5GQ+qvI8LXs={ zOZhU1^k>kBq<%N^-`CyDI|{*?S~$KD;yg_ow@EG?zD=u zJY3v7Ts&O7w9M*G&UP+tR_<2L9*{ew?t!`u~g|;hjG*$;x1pv(GA$alDijaJ0HnVp!^y%HGiz^}-8qq~z z5yjp8Pe;pVNeTd{Kp-<#bnb?t{jjhN1yi(Jmav_gP$4Zwq~?+^*4I-;3+IBm0te?| z2m|Il12h2io77Xf5E8As&ODqhlmhI+sN8z#3e()MS&FiPuz7lE->L9y=f$guY!~H5 zi|jDhjmqG#*NrQwa8K!4RJ5WS`??PcZ>IgL!}?mPza|tb0+#^U_ zu3~|;eT7|Wy=`f|(?AW|Kn?Dnzko4Ez0(HBvP&uWznZl{qSgQ2q-=Xx04dOyJ+4$e zuJrO+^gV8D7=Jw63xF||(qij!<5O_w>v0zYn}Ua2A5>-NLDGz%ftb9pFaEeC5M)b{jVX)!R}%P# z@a#3(l+l#qAz{3f^{ir&)QOG=?Np|w;^fpn5p*1;Tm@qZ>HpM~^=UN4eOM7UCI9cp zn5X{GZ);3P$mqJ~-E4G-acxi3A))KvS7uP1=9?{VOesP11%t zgqOh?5#LiCny`$)(S>E&{t(vPv;UqxQefO(%u;lx2hsXPqnne^70|^~d&J`^fT8E@(i%ub!DByBD+39SgIW9mwvpjpA^g-KA2w~snh(`dg5>{26c|)m%UEf2%0D0pO?K;t6oRPu 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 literal 0 HcmV?d00001 diff --git a/Resources/Audio/Effects/Footsteps/water4.ogg b/Resources/Audio/Effects/Footsteps/water4.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5778a52560d55c231c17a038898db4d3032f972f GIT binary patch literal 11736 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

w3pUB9h0Z`LlwN*UTx)7GK$bCsqsQDsC8Zb z&8}ZpMz~+Y9NHPT8fTkUsIs)MoXQC2euA$NBYFFz2TQ__$Vp;NJ)#ZLn$1X2Hqco7 z*-2W9(0-S(TBp0i>-8C=QoZEo2@}<;Wj_4-&ErcLfuf|RUz2w@kB^@{U#P}YSBJwL z6;GejVafCDS6ePUK6!AJlaAt#Eovzhp48V*8CY}sh)S3@XDPT8E|sUbcKDZ3SO^&MIgt-q`sr{|=578u7!8DfHrw5ak&_+1LG zE(D$_uxd4!$5iE=JsH(z4C{R+=VKFgK-t^pPTVgZ&py69r`(2$F%0oK#Sfhr9 z9eL_;$|>>*!5rIFiM(gJDLv236k=YqIT?#S{))FJorSZycon{&PEk>wW$=zqA13(b zK}71J-c7r0v-7+8WZ_*V8hmFgQgJtZ<^S5w$G3aW|(ft zb(KEZ$7>SbkWI)qZD})><{GVoRIO9S-IQ~W*`Vd|s$k)wm%krUv64P%LaUy>80vRV z_U4msKe5%O8L`dC)0q^5S zI3d0>m^&mIp!q?54F9_L9C=2Wb;pbwTs$# z=dit!A3y3a(odf0y&nG!4@osMh(#_Q-fiVoDG6P|(?s-pbDJa*oV77(?oHc9+%M{H zB|1o0Ioh9Qwvfb~GJTd5eOoc~2NqGr1Q2~=^ zTjrJ47e2-5_VT0;g2*B{-OW*Q-DevW&5-7;+V*?=X#^w%>$w@^K)mFD4r%au@d+DY z_Cxv@Xs}<$oOMQYpc{6}2!kTqQ$3W&ZGi)wW*Kbc=ezL1FQc`yNmGzq#We5YimJ{m ztane^1#!SH<@C=ZTWx`%e)NF&CXen%^l@mIBA85S_hXnbu;e>$8!{hQ84Ee(DS39aaokF7#A8bnO2BX=q_diwG9~UY>BNz~VoaU8!R=TIQCq5|K95&e z3wlnMKf2~r)=>tNOx~CD`<$4!ap+5*Tyjb{mA)1OgLqY}pT5hI$no0>3oJ;o^1TphWytF9#kmV>zWIDLfP^m{`C)LWGodhwY zenGTUSI6`AvuAHn&aL(8qA~Iit8Whrtv=$BkC&?rOX4`v@-q-U-d2hJRWTzeM@E}x z7n^bE+@nDs&k8gj9XL>GaCj)UO`}d@DROGt1nvOJaXpH;QR<>-FCE!^j;DN_Ha2R) zJlPdi@CiJ{-jS4Hsd}Q5k20Pv#U@buWGU*tj)v_op@#X!t@oR12{HPV#1ogUQ%nbr z5{^2VVd(jxMO)BON+bQbiqEIl%N&umcS%W_jC)D(6Vbn3^7JJtzamT6>qKcT-ST~j zls_cK#RT+reGU}gQX4GlbgpVki)kqM7^a!VY@aPdC&`IbV>R6b)uMUb-!g1Sl$i+J xRkS [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 0000000000000000000000000000000000000000..330d8eaf869eae99e585761f87b92d1b0a68886e GIT binary patch literal 995 zcmV<9104K`P)e ze|$eXJ2U%=6lckqa(V3K&wihqg(nxTB}*r#>E`ttH2>zQ>@Vak90L#(hv7X$q&RGK zW|;&+wHFH23%HfYaiA_5SaqG09qWjViw*i9un<-u@Dx- zv}yJdkrQWQ2yBEhypRWgNi;oEr4?FC?GEm?f&mEI=gfjmu&5xk3#r{PL>s~i0@ieJ z{|vzHuT*ELxjnu+58*ao=x#zjT=pV-rg;{%`?8J+Nt3siy|5sT#rH zlQLiufWHU0qBS#ihJKlz2tbzwxff9gAmIj!!_^HsrjiS~Ba!npmzuYX+a+ZGq&iGT z0}*o@Ci2CrxjS|-oMSDJb~UxYrgihkGpG&I=II~wb0HS$7p-nl-}QXXQk<(I3H515YBOQac18*-ELy&*kGNGvWPI2$nT+}yAVLYN^?A0&h+ zPF@e~A~&>awD_v~4ges;B?JV}|Df~EL&#bYg76+7W#}}biQYLMO{p@hi1Ik_Z0#M| zucL0jOCbnyF);?9#raHa1$5$Yt+qzx*w%-E3)n0O{h^uy$P#ClYH_(Zo4hAN5bObS z)WaCaI`b@X4z7?m2V?!pRV&PKAR#cn>c&Icdw_Em!Whiw91?dI%@_oqaqIIZ55Z%& z&FlIj;E06#W5u&-f`ni|ImUn$3|NBy9zagi;uvVsD$(LnL>ddCUuFom;c_XS0>A)t zVi0>JRvZEt2WS?Q9?}rOI>2NhaqVUUV?86^b9U&D6%BzkB}DK#*5bS)DIS`~^PS6vE2>XLLh-Ls*y!Y7YNJr`3b$<37IKoftp2f#s@c*CJA`lG)Vga=H?=3s% z^2y^?pkwwe{h6NNAC^xaK5F`+^92GMp$1-v1F&w*?-`Bk4wf>45OyIX4q)leb5x;t zYZ?QahexPl7IJq7AqZBCIE5er!3!_EvB&gZ06OrnSUMCH!|t?o_Vf`gyrycFEReE) z4?+YEAbzZTr_Sl8v~1pWWFM?f9NtdFi7d5>IC+I*127f<)SN;e=c#Y&AVZYfGxRIB z$el&=Y%RUx_VQA}Lg1O|PEoT#TduWv0fd>=~pBlm>5>0nGsH zJur0Zj6DL*0uzX0c!yo1TFQR}V3-B57m*LZmR}Kvt6`{W+*acF|4BhGfcYT^0f7`w zavKKvg|2`iE)g%;pl#{dL%tCK0pmgxWNq0n<_U68R1*)aWB#!QvW1vH{~V1B3id>Hwa)Kmo#}r`1EdO&YFi zeBzRh2uckh0{Ps$h0wL)>eL+1>oVU40%1Mix*wfJG;qZsa_Qm)t_9*DfsmiXit8nr z=N^X_z!jG>=Q?@xgL;n#s+3y zPFe^VBW+pN9)Uz8+@Dn3R}=8Tf^#PIO@KZ<#(=dLumDdBAPt{52AZ@AwA76 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..8792e5ed7359699d06de4fb5ec2098fc276c6f45 GIT binary patch literal 6958 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 P00000NkvXXu0mjfZCXm; literal 0 HcmV?d00001 diff --git a/Resources/Textures/Tiles/Asteroid/asteroid0.png b/Resources/Textures/Tiles/Asteroid/asteroid0.png new file mode 100644 index 0000000000000000000000000000000000000000..97d9fcc5dc77b553749b33e40b2000f591a58a2b GIT binary patch literal 1253 zcmV%NC`5oSQKuF}AGsCLU zY8B?plmw@{?e^ZaE7)Cs{r}(R-rinWT3RX}A0MT^zrSSb>+36@pP$|R*w|QkdwVNS zPfy?G&d$!3%gf8s%ciHNWB&8=^N+Fm`1ly$*!cK(IXE~dYin!e;o%{GYOUXh@f;G~ z-`?Jq(b3Vrg5v<-BO@b0fcIFhBfvifnFJX;0VD=%43~j{flh^?p`mUZo1C01Gcz;g z>gp=)nfLno8uPrrxw+}QzrMaMi;Ih~24n&O@P8QuA;)4bFE1Stul2}h^Yine4EFy1 zUN$y1%FfPC+1%U=!mNX8kg6>hgTxGWhlhtT5%BCKCOC$N`5EA-M+hN*a&l5uR#sws zaB#2-D}O-%u)Djvh%LXw4cYnAGB`%4PESwE@bGYW*&5(krStRia0~)Cb$omrV^s+O z$NXhc7Dthg>Wg(I6zspA37!)b1&}(cMBJG}ew>}1#ag`kBLpM|FC#llF^FI$689_y zIn>H3PE1Ucg@uKf%N#0<%Ho=EWFxE{0YG7nY)l4R09Yd_>R1iTWehLPc))pAqL9K{ zJk^;tOjXuqt=?uMZv5qjq(K0Hxw*MejaUeqz6H-_<3UY3 zpH)ZbxUM8hulmj&Z<6%7X+T_aTH(Dy;0jQVR2YM-} zp#nHvD;Cgl)Y=nlE+I*KXw@>fjY#4;WWxJfndttWS@N8h+(?kzeFAW|?@TBgq3c!J z*~pX1#0>79K&KKsZz?vS+=AHwQ3sC=Pg^BgE?=CgElU<>vAjL=62QIA3K(R0k5XjU z#2|vqJm*wI-?xWo-%do?a{Tlf^TUD=nOYX)fd}M;*LpQ5O`z510&&WrC7JxoYe51!RGlQriiUj^nmrfLQA_rz1W%P=(6i z%PP+?38^5@3Dpk|Gn@ekw2eq`RiO{?4yx%r;IZgeNC;g9M^$qqA5wk;pljO5XGe_b P00000NkvXXu0mjfZCXm; literal 0 HcmV?d00001 diff --git a/Resources/Textures/Tiles/Asteroid/asteroid1.png b/Resources/Textures/Tiles/Asteroid/asteroid1.png new file mode 100644 index 0000000000000000000000000000000000000000..6ceabebbb79f74a6caa1d4408a6615ec6e79a15e GIT binary patch literal 1365 zcmV-b1*-aqP)EV!5{E9 zSo#O3OiVOZ#@2$$gs6oE?W`swJcc(jFvDBEjq9+vjIIP`?!D)pwf5Tk>~ki*fBF2f zSS*IY!NG8GaS<9D8-qtfLqoW{yiC{a?d{?0>@3u3wOeER`uf7|?rx}uo}L~Xe|&s= z=UJ>)t40nwIy%DY>S`Dr9SuiEM@AH5yd{kLh|qPpTn@Qh?w{lY0C`(mn+f1O=1T(j z$3q4ohDac>htVE~rlzLkLQ6|adJej}x=@xO#1rsT9}!cNs%us z{!SuH{Z%9)_l1fBSnXXR?~I{7wzjq`INrUJ0*Zr|v0ae;6B83A0=#(gz|w_V-o?(& z&QK^6EWZ%4!dO{+CmkNln*>0La%^Mpo28OP599zZAOgJl_{-cNN>x1MysL^w6wwkX zw%1EjlxkHiIVJBR^5nh<<;Jr|{YH?_=gl>8O=?C)Mv{xz506r-BE-EY)yf~_YD6BM z+`IAi>vc-zXLE@R_!Np9sHZ4(mIBu8&dyG{2^jpdA(VBH_=0yg#>zcL=GTi*{M$I)qx417_f}|10wnG^YGTd!^7)q_6sje z&v*xsR63Ef+#o0CDpC)60u3sX4^IxT@#({x{;j=&&v)N;k{AJUoGCCk2aW6&-&oD=W710d-WhYJF;t zpqAi`+8VWPS&mqYVp*x(4nWQ`IR=SRFf}!mEGDh>HYwouh^Q5yW<*EJ!Z#|aTe-v; zB1I6-nMX%BE`VN_*7ig)Z2cml5K2gu)cf+SIOLh-(0@FOW08eVg zBGhsevL{%-gd|#rR>4~iF@Rhfo>JjIBdW2_M~WEk^O80aEN3zRxwdaF$b(v{x3oQ| zlSqy|x%LD)mB{_3qP{M2KySbuI-%0z$rZgt>>3_H#jHvuXEOhzgO?!o?b-veyvI`1 zriBn}=02w)`o4OIaO*_mp^e150`$Xz6!|p{iH{Qa_vtNw_N_W0dIF7p5`X6RKSZ!! zPAL^cO{z#Cf=L$>`rT5{yEwrSjXCceN+DOn(H<@$CiR7;CBzu5gzR3xSbwV0j~{K# z={JG~_=@+fQnlc#9CwJGNj0GebXv+D>AXOR!?~!|sTZ&XWwKhG5bHQ@D-8(CMm;n% zWIs4?g_XfCD?dg>$O_Uq!8Rl9a)1X2$TlL8%N6%N+#+00000NkvXXu0mjfFY$l? literal 0 HcmV?d00001 diff --git a/Resources/Textures/Tiles/Asteroid/asteroid10.png b/Resources/Textures/Tiles/Asteroid/asteroid10.png new file mode 100644 index 0000000000000000000000000000000000000000..9d3386108853fba846a60c9d41c3a5288114007c GIT binary patch literal 1365 zcmV-b1*-aqP)7wv2=5DlUiF_lcS}jCEecMR`=cA-RbJ;DxIC3-5WbJG?aFCchh4S7#N80 z=jZ1S-sRKN(;x>uJw0i4bu~>*O{J5QlOW1D-!qKo7@_;a!^70o)%96&9DuyDvoj1} z9_v*G@Q;@a!WcY(Bwprto!Z*kDizw>+pG7Wudgo+4i2Why}h_++~wtEjMM$W!9nHy z{{DU%9UYA|FeVrv{}M0|<5=wC;-WG{*YZfuhKGkk8E}1lou;R!)8gV{nwgmigINdF zFe;a1yd-8=x3;zx10i=Wfyed=8v`X^66K1QZ=o1 zgTngeGm(3uq5x96O2nNp ze0)4|fa?;>VcRKB9?OF;fMmc+#h;3$1$pP&PoZKw3MqF0TZ~L+4A+nob0w(*^(au8 zcsMzL93=>clLIdWxU?ddq!>@QNJNJWR2O6|t}#ye zA|*2eAa-(B!lBHSq}-R}4iz5MROQpIBXnG662%W34tb0RYN^Pk(p(z7va%AL52&K5 zRO?qgf+UAGt2JuhvK>hfES8k&b^vnTIXRxtnC9l@LSiZ>c=@#ZQO7)ovUY&B7Zt69 z7b>z_u|yd>#h|x;Hkxl6F@_!jypMSCab%r(AYefVxQ3uC9C(TvyoZ#rB=D<`|EAg5 z*%+g91BM|pYW(`clgbf5m0e$7zcWB*JitR;E4lpqMoA?+5DV&>BGqxt&ks~h@&TX% zJXI+cp|+z?o?v|o$!O()$Tgq#3m8u$bLo}v`ptNw{w^?q=cu4Yg5>HG5UG88*HrnI zp^%qn00*@p6JsY=PoPqX+?$GukeA?J=IgQ8hkrg11IQ)4;M*6ca=DjT91pxbGYMiZ z*A6}Z`P*7mdLft0oQkOXsv*L?6OluW#8mt9g% z_)#CJz7aIQGu}(3a>2JK>fk+#YC#crA#%8ZG7jakzJ4_US+Gn}s}dp|$8CiH!%D9? z9r3||Dx3}Zvhp!XLUxdnHJXvS9N+~8l!Zv-Qibis98{C{kjJ9UkPtd2M^)vBA5#7Y XERp2K{WwXu00000NkvXXu0mjfKFWP~ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Tiles/Asteroid/asteroid11.png b/Resources/Textures/Tiles/Asteroid/asteroid11.png new file mode 100644 index 0000000000000000000000000000000000000000..fade0c06c96eb0be775702568fed80653438b16c GIT binary patch literal 1353 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Tiles/Asteroid/asteroid5.png b/Resources/Textures/Tiles/Asteroid/asteroid5.png new file mode 100644 index 0000000000000000000000000000000000000000..2ceebd64f6145bea4b2e298c31448ff51156950f GIT binary patch literal 1372 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Tiles/Asteroid/asteroid8.png b/Resources/Textures/Tiles/Asteroid/asteroid8.png new file mode 100644 index 0000000000000000000000000000000000000000..45a15ba0fb95194b9b45ee811d94d299e4e33235 GIT binary patch literal 1373 zcmV-j1)}1ei zfs8LeM2N(KfS3Rgu?Qg}6Faa*cwfi+&YUv0Rns2eN;C7`>wbN!ZY|vtXP-U3T3lQV zeSLl5^71m&*474(nwpw$b#;~QTUuJe`T2P`K0dCP+uhwAwzs!KHFS1%+WeD~lN)34 z=;+AEL2GMkSXx>NLqkL1@bJ)xVvH4r@f;&`zqhv+nwy*dN{$1NH#Iex0lde0$pF3> zWD>^U2_!ZcZ8+4`)g=`g8XD3#Xm4*1U0q#aXJ^OmnRj+}X7hAkDwUG=ySuxgx3|~U zz!+nI{9nL8jAOCW)6-;#uH})Q_4M?ZGT`FkB8-fTg!%dTFgiMF2D1*TVN}e?7$jy` zx4gV;6Cw9r0+9ne^v@tiJwk}_Yiny^U|_(;>+9=NSoxR%knQj9TWt9yZph9@@Z^9{ zt*@_##>PhTG6&>drOnMva|{D;YISwh#-b#I9O#!tSsX=7slt|n|_-(5@jNchA&pj^3crHv8N};2pBNPe+o9n|w z;`!_cgf$reDV8G}6CuZY!hzLDiaM$W=1$%U;r-Xoc0X0vH*!zHH6>1Ib4@$+ni1+LklPx3QMX%LTlSCz0i;Y8 zG4WbhSO{ZdW64Oe8i-u*JkK{A zPYh52p45s(u5!f7*Iz1|2y&~A$zB<)L#yD)F$N`oHawt&*KcH^_IJR-s$JhiSWLux zw0#4wqCjF-D{T+*Br?%UM1~T3vRcHF91=Al--6izQOVEEt3>eSOCH7CN)~4^?~yuS zwX*`CtuhCr*=zuYAT!T7l+gFpLxhSGk%y0;R8dKi(d3J-aY*ux=-;Qe09vu~1n+S) z`bGSi-~SQuhgO9Pui3r{AqJCZejE3Y$|%8slr?W0N+DM>!g?745sUgnQwcFgm5`So zbA2PzIYIkK`j4OqNQf626x2j~PM{9nv#1snfes*f7xf0pIFyTOoq7RTuuM|xXpVFo zw-p8q%e|&a@rMIds0{vD`8i5LDoE#ys6QUca0W0S|0^wWsX`y%9aNL|klUi=kPtdg fj;hKLf5`a_JY4Aku#X�NkvXXu0mjf=9zy^ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Tiles/Asteroid/asteroid9.png b/Resources/Textures/Tiles/Asteroid/asteroid9.png new file mode 100644 index 0000000000000000000000000000000000000000..c79d0076261b6c113b3072cb74efc567a6a1865e GIT binary patch literal 1300 zcmV+v1?&2WP)PXvA6_sEyTcO$tx%?Nn6sj74GWK(tPpTGY2y0x`cW@l&1%gamY?(Qzxy1Kf` z>+5TCKR7s8o}Qk{-QC@Xu@e&$<@EHlbh5Fru^4}UfB)%Sy}i8+aBOI3sO;?Ql*Prx za&vPNK(*En#CQ$~?=LSe%fP_Ee}dxx;QjsmL4bLz*AU@dY3f|*F%vl!%1E2}s>JY1%yr(-N*s4yyvYr>I@ur>q$g*mb@7;ph#jijh! zH87TUcxlE1&RmH?3UBdLXWC(^vNmh=HXCu{FE=C&0su@-PKIj4n$RpPEX2L?gJWn- zLL8{F&RvZ~$Xe@}G6e|FAYz`d5c6qZ*Voq#7$!I-IA%{VbP)pT_T=Ow9*&NV#tT3h zEHLrf+}tdytE&x3vKkY-ZMo|insz9H0P+JwX;ITGh*ub-Y#K{TOEHdxQ3w)qb912* z*KJcV^Q2QA1Obu($&5c8%LRFt%g<0To=})O7$GCm8N)T;#M~s!hI%xpN<1>S@}dOc z$l$;Iwbfkz^8GiT78Nkh$=4d|vU!17kr+>Gop}(sp%Q?vudl~7bpQrNW^S5 zAa_C5;u>=1i%M1o0Gz?I5*gff3}LqH-~ayFQ3=h)gPL|etB%ldT}hNq^^N6Tj@JOY z6-&mpi*0Xj$Ige@QEk=!x<`=Y;8wRr>y~mPK`cQGFO9#|kquASnAXX_Lb8 z9#O3Tn-LwYZM^$o{r&kL|C}_>c?MDDGnZeFaK>ND%_m#+)WZTK3+2N#p5(@XoOt@v zx9?q#F-U3VlhMqDEYC8y31?HHhwSa`y%X?^hw;#BGdrK(XsLvUF`Z6P_JK|cYN!BC z(~1SO9JTfdHkXj3J+x{W+(smE9WvqltqgR3&n$V)BsUUb?LGmx+jl0EjnH)}?QE!6 z8JNM{6X;Ze=S{`Fo?9?GAnM>T#IX#X8&z(2I91y$S==PclK}2?R=^<3JW7#W6N3mc z^PE!=eV_R`v>#4H*>e2!8uP<~5ak*Nq}`75e0mGUH-UMA_c&VfBKgdpKSYpUr3?jL z6DmRoVZxQS@odgT365y2`RPy!xXs8tTp$+BiDn5g#!6_HUvAr&W$V`5d?Pp@XMApz z=0eVL)WLfebwL6AfXU!kCMY?StF}%jAPdZt+D?dc9JdVv#M)kSI^u%^Rj3TUtnwI> zkP7mgQ2p>Q!+8OLb|Vs8RpV% literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..f1b995f22a949428ed0f15f1c80043827ebb965b GIT binary patch literal 724 zcmV;_0xSKAP)6cVC0Z)5l@BIWO(^c>El8XQ%W3-X5R#wP*|}gNYj8W><>#_`Ew4*?~jl zubxJ8JyGyd^$t}Za0eakccN#AUB}m%%->vtu8IsR)*d@ z6o~U6owiegc-itdZRlE5HO-+YbThChd%1bpY71v-G9oWpzn>s-$k!sSyjDRb^Iykas?cEm+gP~N=@Xq>KG2pD_( z{8}670PC8jQ`1qjJ7v+xjA*5#Bnxco4f*pT8e&mH{+7$i)FTp|eDNstcIun6If8>D zNYizF89moZ@F?K-SW~x8ZqHRK<{M8v?>Rz(_8zbR&pujK*O}HoB&&b+{;h`zBa(fj zl&$b*4^tH~Gb8wa1?>!?Frfut+p!;1AF?P!tmXt;$D#_@***FlfQz|F1{?eTSYCb9#E z%3nQ=)_S7grRp83KIC$HKD>{|-*;}f`~!Gx55XY{4xK_p8gWmvG^i*~dd`F#c&#A2 z3g#~Wo{>!j`gd2`Da;Fi(|W{-#sMf}107MI3>?q<`n#%Y)X#+PBJh?1Y`_D+A<-#) z4bNPQ!2iOV>*~;fRp3168AGJDo3qJ4q@&NydPbU#mq;-?fkr9=cTsQ%^(l)+|Jz|sZ1+`MeHg)=o7k!P(x zB2K2rcM(_KDyZg}dpvz!qD2?H-ZMo9XK#okTZe$iGZtx{0bYX8QzG8ze!s-B%WCET z!|2_Ly+0d70Q^+TZ8zkS-KvvC^^9SgvwD;App{i8)NY^hswwasN1ZF;fmcih%8odT z3d*~80gb0C7Xro}Yjar`=>Y3HO{b=#Xm`q@kr~lSNl6yi)*JF?A{t^*Lq5x8W$F=$ zPCgq-y`B2zY>nXH2-0*@C!-f!JQf9BPP^pxT(n}&c91bVo8W*?`K5=x7T>Z^assjg2;(bU9reFLK9fsEhX RD%b!3002ovPDHLkV1n9PR(1dY literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..56da6c274e96250e4b6320ce9ef0840eaf89e140 GIT binary patch literal 850 zcmV-Y1FigtP)=uycKVN!~u!R z^0RwrQMbD@ZONDR8ywe85tgdXB(Xoo`RsV&#}DrhLCE^45A*AopS#^YjGL?BzqUq? z>pANk5`z+HfQz+~wMLI?XDmB#DE_Ob)>us>cuabI(uYjOO?d2ff9JH}_#eQR)({*b z!J!kWNF&-)?--;=p46N%Ij~6}vjnCm0Pc}Z3iKD#@et-SfYZ3eiOc~gV*wqJKpr^W zx9K-cW7PMAa~60$0xZA_z#-Ny^%&kcW`W;5Z1exJow|;-$)TQEpm|_D#aHaz4w?i|c04$7bnx5to`H9A~5~aLWDWG0(l4x8eJG6Bg}caDw`j zvqB^tv7Whui84e75%w>4>tPJw)7XTz8Rd6P#;6T=EbdMr;|_F|NM~=B^RRjn#by*- zV#iL9h&z-(GDEazW>c^ppi*Z56zQ7NP!|tN38a(dlps27`Ai#f&dQqXkeoaN7Rox^ zblS=i&ZF^&T$Fyj1MSe)Lkw?6eKBWolcgg`Sw1% z2?w`Wu{K!ZjYB}>f<^M20d~{u!|L{D0zbaX3TN>~>g%)jE~~-;hEY~463wb`j4Xgx z+b+z4FW#*>I8ZS56gEjl>>9w7ZGTKxRJWW~l~8N@l#M(B%>^pRVxtQTz;(uWpu9VZ zs35&-7f^S)av@;sZhuIiB}ffe&JkSKhA69(7Y)ydOfi>ahHcpw9y_97i!`KrIWNC; zM68_`O{p%Yda*Y~aBu|2^elBozf&gYDB!uTb#E cns{7)07Su$1eO(d3IG5A07*qoM6N<$f?u1BV*mgE literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..6e24483cd3af9138f223dee540d57a0203f9cab4 GIT binary patch literal 746 zcmVAeIigvr!S zD=byrP5g>IcD(iLm(OoS=*RE1e7LLI^KyDEhufR}KjZOr-;3TswHT=aGP_X3Bk9UY66pJy%@+!|){@8V9Ly$W#haiF=x*K}m5kb0);V zb2IYPjQIwPXJAu;{Ktnw5A&IUeLcd&h5-nJfsUx5%sAeU?f1~uD4!AcBI8>MzrjAexo&0XKvP3pN659E(ukKWpA{z#%+(HDb@R-y2z#y52zj)HGtU{2 zht}^Wh#d00sLp>iquRj8`Bf^J-UgHyH+LWvI0*F3{`4MIe|j z4ls<~t=RjsK?H`sAD8k}a>{Piu5m!@9ySFdy{8g=-W;EV+Vzv3H3gpIsB^gjzYDH0 z>Ibbere(i!K|t*3^=-gJb{BXVXBS-pFF{vV- z<^0qc$bb)bb{I;%ooWb`vLOW+L7H%?pRE$2D9o<+vsTO*Ps2TPgaDllu+cT#FDLg( z>mQWWKYM>PlDYB4bPRefg+Cii9khBodK5DK{W|8$<6S(I%#@Irwk#4}nxx^oK=VGE zYNMf3BNCNlG`4LR@JWXoWTXMSFRc;zz)}N8vnyL2se20_K29SclokcmSO1h#S)Z1o csfp?O1D^Md0ZiyMfdBvi07*qoM6N<$f_?m4&j0`b literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..066b7ab0c3334faf65c56ce71a48b12443a6b110 GIT binary patch literal 864 zcmV-m1E2hfP)!sSSi>iUT%uG*Lef8hf@#~k*$3V2+_hB)K`MoS@465wCXn&M^){N0;n_zDT>m}r(c(fS3tQJp+<=0dQgM+j;&Ki-nK);IxQ^T!R zKhd7j4Jr-^$Qw@CEujz#V3`(Xg#x^yG)TAb$T1cR8AuCYS~at<2>sc*mVsvhq;kz= zsGEmXDo8qRr=YsN4;6^WV7XS+WQ8o(6<}i4<)-U98mFa~$W`m-1qp}8DF3vjplt#b zK7h*}9X?&6(aZQDMy;Uq28+CP5E8kn0*-tc}Md+)HS6c9J+ZY90nD>(o^ z?z%7!K6%4UkyvHy$!(mBqP+;={kg0LT&?8`Z8!uv##ZOD@<3ON2Pz%0@(Rj(X#DC< zM=l5%dw4#c3mE|Be;iH@N96A0dBYRJmBLEPWQCE=lFcXN%S04xVsJgnd1cCz)sNLW zk90WV+45>Ay;e)2lQY{Y{kst7WpnL_Zvu?CmP%by(Z{Grp4Ip>%-+68}1c51cs9bGYQvlGemGqyQy)*RxEm!r>2t>90F2%TF#Z5=K1YDL;NMPm1eG{Ex-zV5 zEP!@X7AGPH7PBHQ5J$9^7SqF$=m?ycDU#|iYms>iJRSiS;054fjD_d$-goA=5LP1Q zHNY+GN2Cw|F<|MuR8@Q~%b9!L?&A3Grgk5f^Dfd7nItYltk#jrfdlZ<^0ixS_T3n= zD);Wk^V&Vk@00acg-9HEJbCwF)Fc2H%MPZkBNq6t^)_-ukMUfT(>6i}x0sBt9grOX z{N3Ay`~I|Y@7;x*5Q%`5B?$SqpMSb{fQkTo=FhqS??}jn1v`8Qpw-jw0DcCPU9&K= zAvkC3Feh)yqD$A9hFm-}kT?g@c}g`aZDlOswK&qyhLbGNz&h2eJm<94C0vdsN93gR z^A0SB_?xw}ZFM0mz-0{|pVkABJ+oY-Pm#f;HdvCIhk(cli}X1I+>i4m*5Zv`&%H$M zvPv9~Fmknm5^_1$hyeIySG%;tq>^iHI*ZAL(}qoxQM?x;dVNeQ3N^mtx|ZvEJQ`i4 z@9OE@7IK?cI;VHMKwx|2Tb4TQC(cs+6<uBsmvn787a(cVWKo|ZLQvhnvhx7X{j^+NXFC5Ox%`*fpKDC?`kHJcc80=l zHKqcrjp^HwqmZ-TUB~iLPRs_W*NBK5+t5Ej?|*^C*db>mrF2AcDap1Y2P}4KWdX3* z97AY0n!B>KBhbU$ll+`oN=PkH)V}hsoYv)T$?BTqxc&ou!l`EG>{W{Z00004SbG81umE7T5%97`TbIO6{{Y`aJMUcrz;w?T`h^gO)Li)a2?(Z@|;xwz3|PhU3{& zj8?#riojJE+ywfNQ6bV5=r>j{6+@om*49WV8FS0Pr(;fc`Oq8S6=;^IvuHEHO_bQV zBNAbSCSUS2y?nk*AMbypS7|>A9UD`D4d`%oak|zt)Zzi9*J+p5_g@Qms-)v`3J^_O ze8UEhd0A5(@DLu_4(XW3{>K8!1q^d||JAk;IY*3dDJnQ> zgC|kHi4l3gBHm{M*L`R4c*FB`@1w(N-~hs?)e5ygN;w05*mP;0Vu?=G-r|637KgQ!?~w+^80bmW>CWA}&S*hr8u z58G{evwD_3eEybREaqu>Gmb=mBT}+OjAu@0iYdu#AMmQP2GLS(-`j?tI}=X=Wt1lxA*P0)N7 zXqsK(3{r|C;?;fczF9fov6Gbn;IX-e&~Y?6ve^;Sv$JRLIQ5h)wV=qp>Qjz&^|s{Q cny_7e05_R}+hgnmkpKVy07*qoM6N<$g1KIPX#fBK literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..9cc7769375c5ef9caaefce408a7815bd8fc3e652 GIT binary patch literal 836 zcmV-K1H1f*P)2zSL81tR@T|lin`ro6M(^@YwE8b80yL2k^Ny05@T9 z(}_@o5%sim3@pr(nlmm3HVI^zz;wdEOJrj){Z%vV!#o1$#yw7C4w$knfFlf40=M^V z`ZZ|``YJz;Fi6{;!<-2T;kGTxaQ^SHtUH&J58mPmvhGLRZzQD#Hb24@$iYfeKg9t?zW zBORAhfN0v{88&#%%bM(v7rGvplr`NnZMB5|e%R*!^`dcYL!$1$b4cert~?|@V9dZj zu3zWpZ>binnkKAf<2qwRjwQzHxtG>qtsN7C-)$cA`?fuVS$yUMoPZdS2Q1=qHt^_# zo+F~XvGo@6uQ$K?b*sfZG;!kUWgRw(Flx0z?JuRA0pD-iuV&+ps0u}IlXHaP}^O(CdSzP;W#!@ z0p>YAPEPO0)u|MXk`d07Qb*+3=DzT`BMQE-A?@W#X{r(Nc0OoIwVdkW(ip&vBX&%$ zQfKrxWr9Y*p4)VE%fjtBD#hsW*z=krAZV?DHSp3$%ji1e{5L7(KWhKE#sm>5eWb*5 z;V(6&N-Vw|H3}vB{dJ6&Md5z08G+!~&V3V9zYDM{wA3$g1}Vi6@lw+3H!}y6o!U~P ztM%BNL+I?dbY-(6re}B0;N#T(uP3LL+Q2Nepvb=JryK)nx8!wAIIe%g-kRh~UK>yV O00005=P#c>9h1nfzhioPo#*FadP)7}YW;7mvEz2mdxzv? zL=AAURr1!@aSO(?13=kB_U)L{$8J1ZYz?$To#&!A7JbM~ze&%-^ncEC{{G!v`ugyg zKBOu2SKUR&m%!0EM4dw?Q;|ln^Zmp3;yk5YL92@+QJ%EGxE$CQL~x`NbR3aQ1^Rc} zehu@PgJs;~#LNLGV*!DvqsTel59PNlW7Lm?bDs102(SPz+_kq$JBD|TdCp%$*xLeV zWENN+w2UEAASMm8js|kSyRL}GNE3J!mlhC?Gg6*&7@v;EG`yT@8-V`!{al4#iG2pZ z0`Z=?gBxRr4*S%Vr_=5>T{n;ErYspN07HYt!xA#?0AaPpqRL6o5KHVl2#L5ub)*?$ z#WGtRstwI9P1iXMZShb?97hw5f8>CVlDBaxz{7G*RfZ*JRaDL ziJbE8sG@@OZe2jb5`G96JC(?s8EH7yIqKQkkhMB_Mq5TSQ$mtCwzV%jbwtS*HDr6a zC{1ldyq#A~sV%2=aWtlF8;5QIACfFzpOGbHj$=a6N0;Fx$V9wkEAwjV#%@h?l zk3L$mw^+|C%74~=7On#UFZE-)?3$pWkCc2V{83{Xk(SL!RL1S`RNn=+!TsJcLSdd? zD&5WR0*|qmz%ZpWB3?>*{pQR8kDaPa2OgW}5IR7kD_em;4|h-Xaq1}{wWz3Axz>xC f?UuZ*iO2O17UhP&5KSS|00000NkvXXu0mjf(@}Z4 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..8fd70e0d94bdca6d64c6e947f3b26b3069c2db2c GIT binary patch literal 871 zcmV-t1DO1YP)0=uNZI7q0x{cj)-JC-;y~+P29=)!= zS?{126iEeS)?O5mXjhh-@VF0XDTS%DQAf&&=*P20Dc!>La| z7(v5xP$aMyZ>*Eg0|&v~Uw-@^tgRQbFptv_@2C-hq*DFNq@7h`WzwMcn^p2eGvZ+g zOatmd7S|V-(F3|lw6PM5Mq6017D>b%N+5t+3P8H7NLmN}GoUEft_*eauyO%OC)=sq zm6YW(b;xg4)pQ0~uFJqeSeF|?$Rk@gL*pg#p!Mq=SO)2DR<7(5sBB>5(czPFNaW~c zd`VD)vo~1et%H!rgDjG926!}FPqOkx^6S`pht#0QYcV$&@wboDC$q?umQ$RKwD-U$Vc%V2t;NgKcP~N5StG*n$AY^QF zZbvy$0;Y~S$u$Wa|GmEF?@@Lq&l@C}6S~B_B*V_DOE;ZPC;iEI4*AIMC!%1JRD_a| z1I8j&W|?Y_f0ZF7RVX zg5-cv8ejqLU0O!RnXG>jfxBc%G5opRk9Ois!t{uDNr~6o4}!ZTVY&ff!qI2Gb)Ik-Pyu$C=bi=S+yAu@e1-i^UFiE_?$go)@sT&v9qLrOem;hEbcP=z`T)H92 x`2n4Aa5=SvP+Am}w(6^#l-1LcH8n9@e*rYar7YLAwX6UD002ovPDHLkV1j-Xmv#UE literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..086cac2bf91f1836405e174871640f94ef397cea GIT binary patch literal 777 zcmV+k1NQuhP)xqJws&}sXkf;4__%mKU-?`!PAHet45FDc5&?!`;5%)ApgNpK`=S;|f zw+eEsVEzK&8QD~z|Lw4!!@L5Ro=2Q$9Dp(w&=CbvaCHLzr}{h8YwBmhcM*6?0T$o} z;1J&d9J_qnDs{Kn4C8efu?YMT-h8bNommCW172g7o1eFu?4{x0Imdj-`7#x^THPUa&~> z4Db?!o)Ym!*ZU!s9aakm7)I|_?21{*jZ?=w4!LBf>TFRxW7w38^qxit%5wq&^5MKV zKG38fZ<+$nan!kd4RB!OG&y##l2cH2#6?t4-o5c_oQ_-w7<;KZj>^$@>}3qmbZR4#=8-%l$2zFZ9O4x6VVWh8uD2#D^rhVwDZMK>h07QXU_-@jv!6XbuxOb2Tyc_ zw+cy!xoX9n@znF4BP3{VfCYH=(Xu+uuo(S-%=WVK-hXc}VMMZzlvNdQ2IMFaQMcB(P~ zA~v@W299P&wmJemaBcB%8Y#U_GaXy6?=q@$pO&JjiRt2|k*J#ho1{RcjS&*STmIB-E)fy4n& zSvu2}I6JSrys3fN4`6Cn^U_*%rVN28zJ# z{jvOR${6%NpL2Ti>MnhJ_@3UTCtD_ns0UtCU<>R83f?Yt%-%5ufcvX4?H|4s@G`%; zN=tHE92!vt$^*|+h(*c(V1Vbb2^M8NA`Qozxbz&sIEVH*6~f@2le0#|j(E@5!PeQW z#}$o~k}>xT)CCiZhbd&(fmVq+i+3iti4r@*Fz?XhYu;93sR0&cHUu`H!_|cip=V@m z9=2FZ%1FoU6d+o*cm^=fY1Lq?sRGFB(;*$ElG1vHXxVZLM`|J>H?3cH0HYdlp7Xf! zyMS^7!x~K=>lu-A#Q2_~f}=Nh(rZda`N*K6*h!>VxrVbpGg-XE2m z0snX$(k{gkovIg$4P&RUVGO^B2eqsg`oG7UJ*Pl(>~$`W2kc}I6dkdNij{Zo02-zv z*TfimJe}u8I>0=~>Ev`|?oLrOA|qTWA;}!ud_q3mh>|aCNbhn{nQBD5oi~?KZKt|8 z8Uwg-#M1Pl+>CyeO3*0S^H5T^3r^2jE5;p6fA6-n9SbREa6e9bV;}|cu!TH`Z0zuk(-vnP)*Yj&Te;0U+U2+B`#S!sJ z(!llFUOC{gla&GBvAKrOan$Pvd~L@;XJ=3Iaq8{dN()BWSN)V@UA-;wO$i)9y8Z(C WMwPJ%u}DP#0000N zM8TmGsYoN%(_9%;lqW;ZxEv@G$UK4B7XZ(ZO$GYJblj%72hgm0oTxbfWo)1$3X}uK z^CtaG(;D@2!gn5cT>@;t1Hd6(ly(izT=T%6!kbxgXvZ$FJQy;DOpPxuS_7VrK3mo^ z({wy~iofnRVL6++kug&_a4QN9p+2QIhyea>`8<63`ZK&-%tLW?QUDkum>5HJ&~n9Q z%91f!1Be{p#ccAppK^RE}?@eY->6VvBZv*kcbh!D(0P3s{s|uY)aXrojTfG z+OBmQ+To!16V%M`TjX4_UrIDx?>i1Mj7`fUWB zL-w7={`dP8$^z}VEbLmk=w_;C=-MvrT}~zN1bk>fXE#d zX`KNcoz!baEN{5~?Q#*;+f)B*>U$+nqfDcnR-FC0mILs5Q-!(MvJvM_)z+eV#&jwf z={=3;{<^Iiot${QDYXQ)#@^)ecwjpw2g-@q$qL$g=m4skBNqb3?hnVlkpW*&Bv?xUqM2UZum zP~QFs*Aii_|2g~htY-k95kNRyb}M6}W5-5>*6<><`z*1*iPbpt0#Gn(r#+7OFw30p zLq;gP9ecG_ox$${kFn>RVM}R7yq5GXzBLCtk5!of9-HeFI*tx~At{G&_H;f@Jtedj n71dY!DW|&jw&dNKcrE(}y=S1Fh^x`f00000NkvXXu0mjfV1$?@ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..d3befb214d172ef781055b4202e3b3ecc564e28d GIT binary patch literal 794 zcmV+#1LgdQP)eKn*{_Zmoy=?k)ah&UO_pwcj`E2}eozZpO^WKee5@G>3 ztW4e+T~}i~Ic8A)siodpi&%Lse0||JI$6xqy8HOvQ^ENciVvNEawAr5JQ<7-qLxNs zU}BuKjBzpWR+KD@GTkuc5!jfF|MGM(x*2C4KXbZ0>c@2t6BPr-YzJTnD~goc`>Om- z%NqEZO!>{9%k=pFIbE&RRj#MJhQOHZ#SX!po{RMzYpUGndb>%RzyH!zd4^o2vtm$> zEKnSHmV(Svi`mgAz~dPV9G(^R@H7n1$`~1fb=)XYuEffX)FXR^hz;?caf1`bwH{W~ zQwql15>OB9P~7cYh8t*>sIhowfEy{Wb4MV;4Ox*2U{Yj*R0d}kr)y0^Egq~0>jpY5 zr%lyU*X84Vxv8IUtC zXud~`svNb!qiEg8fILAF$Jvx;$Mql&H+)`WA2q9q0dS*ME7bldSp^_aP2yS~Xm)@cpe z@W3uy)u5?IvX)bIQ?v%E0Bg#lkCwf5 z#`$j)8B?N@99r`9{eiv}uTeF^a zG>bob#H;(>yjd~ep_7@R0C}wgOLh#6GJy>-KI=V`k5iAyQVWc1tA5HcuTD$e)P!(- Y0kWTu*dU(>U;qFB07*qoM6N<$f|mYrfdBvi literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..9a82d3d34a305b022686d8e15284ad6e3741afc7 GIT binary patch literal 948 zcmV;l155mgP)QIq?~M9$&`{2RJYT zhlbLCliEp(p6sV?Hj>ToW-_s5?Y`aBuC%frKfHf50-JVkmWB1t-QmIH*)05z&C%of zTkIXMMnNjzWGxh%qsO%|F+DKI{;Q?2u`x(;>*V%M9+>Bux$h27-?U=;AH-90NDfGH z$XE(eiMBMg3=%R=#*B&PK;uX%N2Wi3Je6z`kgpec2=fWSFdoYZp92ua1R5fVQsj8w zx!=N#Q9gyOBi;?)VFYAkq%4H-0&<2^LyzTy5+Ft{4dz^scMqueetzkk+p`LE9;B23 zh*Um13kqT~@}0TFXf{J$(Qq3ROs%(!REk_fW<5Z8;$$Pz9_VN0%3LXm8IE@yDV>aV zOo5*u!X+c1t3(^icbVXTPHevsX%Dyi?nu$9Tto?USrN?;c9P2KlI7~lP?p5acIO4I zFV0QlyaV7R#%Tn>F&Q;JlUP>+uvZR;DuBXwSC{_7?XC?9P`9mf==06Syj)hpcxOtR z`?0#5n}yBHWtj)XT$)rOA8q}yb$_-fyi#DdKbX6=4bK?=*>t8@TJyZh-SfRG>bY5O zjj4;Lb*5gq{xT8(64^@cK|rjX;>sz)QZW1^gV#ScTR+AKq<}pm1thWs`P`L))^jq0|#P+9iB_Tb6-{?p{4_x9Qk1pT4XbDwJgI&Bp8wph6FM}&hS(5 zRK{~hlz`E`3f`=ij_lw(Y)+JDkM+8bc`J>QyQy3b%iXDV(XIzWrch>QCnc6lGLe`h zm3?8~5lN4oSKJZx?kAC|Z@m;T&ySi?-39eV^yQXkc?h$fLvnUG=dLsQ?J7Y>0ncbe zs>JDe)R53Kv{}dtPSQfLyTDij3-Z*Z<>WZSWVvQ2!Pt?@_I;``VMJ1wl#{a{<)I$e zi6xs_9fg$sa2)fcOq}myN(gqxQ+I;VdqFH?r;K4q$%w>CGS+YU9EfG76ed9|n|%lq zZG6m$FOSx|&iaE6a=0@bT~1>{C@m_Lw(6^#l+~9U{C}Gj=GBYZeEPmN*QVcl@a-># WmbRQSG50001HdQ@0+L}hbha%pgMX>V=-0C=2JR&a84_w-Y6@%7{?OD!tS z%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+(=$pSoZ^zil2jm5DJ8S0M2U+NNEHLQhFqL! zMTxno5Vo>{tDg(lQ~((38NTfBdR71c0N+VOK~xx(9Z$PW#6T1r3qM3?q}vOxlb|~r6A!Ba6lOs&;f-|0t?ZMM)T1igi1y_B09OJBDvT?647-TgAk*U z#^l`*y)+hd%w$lw?8hLD;8KzvT0-$<{;7L`O$-5i5 zLESQUsTlZAdg0)sn4IBXr-v=uijB;E{pOfVZ${N;q@EYmh`c@xoW(&mT8IlwUn~s$ zm!DR!ad+5i9m literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..d7807a659ec5bf2a0051855b3e255daef75e90c9 GIT binary patch literal 9559 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 literal 0 HcmV?d00001